Browse Source

交易买盘状态外加无资产状态-完成
交易卖盘状态-完成
交易止盈止损勾选-完成
交易只减仓勾选-完成
交易当前委托-完成
切换深度-完成

Hexinkui 1 tháng trước cách đây
mục cha
commit
dd62853fed

+ 9 - 0
src/assets/icon/bitcoin/maipan.svg

@@ -0,0 +1,9 @@
+<svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<rect x="0.5" y="0.5" width="24" height="23" rx="4.5" fill="white" stroke="#A8A8A8"/>
+<rect x="4" y="4" width="8" height="16" fill="#FF7171"/>
+<rect x="13" y="5" width="8" height="2" fill="#FF7171"/>
+<rect x="13" y="8" width="8" height="2" fill="#FF7171"/>
+<rect x="13" y="11" width="8" height="2" fill="#FF7171"/>
+<rect x="13" y="14" width="8" height="2" fill="#FF7171"/>
+<rect x="13" y="17" width="8" height="2" fill="#FF7171"/>
+</svg>

+ 11 - 0
src/assets/icon/bitcoin/qianwangcb.svg

@@ -0,0 +1,11 @@
+<svg width="163" height="61" viewBox="0 0 163 61" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M93.8491 56.7478C79.4254 56.7478 67.702 44.8782 67.702 30.3054C67.702 15.7326 79.439 3.84937 93.8491 3.84937C108.273 3.84937 119.996 15.7189 119.996 30.2917C119.996 44.8645 108.273 56.7478 93.8491 56.7478ZM93.8491 4.45313C79.7646 4.45313 68.299 16.0483 68.299 30.2917C68.299 44.5352 79.7646 56.1303 93.8491 56.1303C107.934 56.1303 119.399 44.5352 119.399 30.2917C119.399 16.0483 107.947 4.45313 93.8491 4.45313Z" fill="#1F2937"/>
+<path d="M93.8491 51.1493C82.4784 51.1493 73.2245 41.7909 73.2245 30.2918C73.2245 18.7928 82.4784 9.43433 93.8491 9.43433C105.22 9.43433 114.474 18.7928 114.474 30.2918C114.474 41.7909 105.22 51.1493 93.8491 51.1493ZM93.8491 10.0381C82.8041 10.0381 73.8215 19.1221 73.8215 30.2918C73.8215 41.4616 82.8041 50.5455 93.8491 50.5455C104.894 50.5455 113.877 41.4616 113.877 30.2918C113.877 19.1221 104.894 10.0381 93.8491 10.0381Z" fill="#1F2937"/>
+<path d="M96.5461 48.7798C106.64 38.5714 106.64 22.0204 96.5461 11.812C86.4516 1.60358 70.0854 1.60358 59.991 11.812C49.8966 22.0204 49.8966 38.5714 59.991 48.7798C70.0854 58.9882 86.4516 58.9882 96.5461 48.7798Z" fill="#E2E8F0"/>
+<path d="M78.2711 56.7476C63.8474 56.7476 52.124 44.878 52.124 30.3052C52.124 15.7324 63.861 3.84912 78.2711 3.84912C92.6811 3.84912 104.418 15.7187 104.418 30.2915C104.418 44.8643 92.6947 56.7476 78.2711 56.7476ZM78.2711 4.45289C64.1866 4.45289 52.721 16.048 52.721 30.2915C52.721 44.535 64.1866 56.1301 78.2711 56.1301C92.3555 56.1301 103.821 44.535 103.821 30.2915C103.821 16.048 92.3691 4.45289 78.2711 4.45289Z" fill="#1F2937"/>
+<path d="M92.6411 44.831C100.579 36.8036 100.579 23.7887 92.6411 15.7613C84.7033 7.73389 71.8337 7.73389 63.8959 15.7613C55.9582 23.7887 55.9582 36.8036 63.8959 44.831C71.8337 52.8584 84.7033 52.8584 92.6411 44.831Z" fill="#E2E8F0"/>
+<path d="M78.2711 51.1491C66.9004 51.1491 57.6465 41.7906 57.6465 30.2916C57.6465 18.7925 66.9004 9.43408 78.2711 9.43408C89.6417 9.43408 98.8957 18.7925 98.8957 30.2916C98.8957 41.7906 89.6417 51.1491 78.2711 51.1491ZM78.2711 10.0379C67.2261 10.0379 58.2435 19.1218 58.2435 30.2916C58.2435 41.4613 67.2261 50.5453 78.2711 50.5453C89.3161 50.5453 98.2986 41.4613 98.2986 30.2916C98.2986 19.1218 89.3161 10.0379 78.2711 10.0379Z" fill="#1F2937"/>
+<path d="M80.9696 48.7803C91.064 38.5719 91.064 22.0209 80.9696 11.8125C70.8752 1.60407 54.509 1.60407 44.4146 11.8125C34.3202 22.0208 34.3202 38.5719 44.4146 48.7803C54.509 58.9887 70.8752 58.9887 80.9696 48.7803Z" fill="#1F2937"/>
+<path d="M62.6944 51.1491C51.3238 51.1491 42.0698 41.7906 42.0698 30.2916C42.0698 18.7925 51.3238 9.43408 62.6944 9.43408C74.0651 9.43408 83.319 18.7925 83.319 30.2916C83.319 41.7906 74.0651 51.1491 62.6944 51.1491ZM62.6944 10.0379C51.6494 10.0379 42.6669 19.1218 42.6669 30.2916C42.6669 41.4613 51.6494 50.5453 62.6944 50.5453C73.7394 50.5453 82.722 41.4613 82.722 30.2916C82.722 19.1218 73.7394 10.0379 62.6944 10.0379Z" fill="#E2E8F0"/>
+<path d="M61.3646 46.5387V42.5455C59.0987 42.5044 56.7512 41.7908 55.3808 40.8028L56.317 38.1545C57.7282 39.1013 59.7635 39.856 61.9481 39.856C64.7297 39.856 66.6022 38.2368 66.6022 35.9864C66.6022 33.8046 65.0825 32.4598 62.1788 31.2797C58.1895 29.7017 55.72 27.8767 55.72 24.4325C55.72 21.1529 58.0267 18.6555 61.6225 18.0654V14.0586H64.0513V17.9008C66.3987 17.9831 67.9998 18.6143 69.1396 19.2867L68.1626 21.8939C67.3349 21.4136 65.7338 20.5491 63.2371 20.5491C60.2249 20.5491 59.0851 22.3741 59.0851 23.9522C59.0851 26.0105 60.5369 27.0396 63.9292 28.4667C67.9591 30.1271 69.9944 32.1854 69.9944 35.712C69.9944 38.8406 67.837 41.7634 63.8206 42.4358V46.5524H61.3646V46.5387Z" fill="white"/>
+</svg>

+ 3 - 0
src/assets/icon/bitcoin/shizhong.svg

@@ -0,0 +1,3 @@
+<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M17.025 10.125L15.5254 8.625L14.025 10.125M15.75 9C15.75 12.7279 12.7279 15.75 9 15.75C5.27208 15.75 2.25 12.7279 2.25 9C2.25 5.27208 5.27208 2.25 9 2.25C11.4764 2.25 13.6414 3.5836 14.8159 5.57182M9 5.25V9L11.25 10.5" stroke="#A8A8A8" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
+</svg>

+ 10 - 0
src/assets/icon/bitcoin/wuzichan.svg

@@ -0,0 +1,10 @@
+<svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<rect x="0.5" y="0.5" width="24" height="23" rx="4.5" fill="white" stroke="#A8A8A8"/>
+<rect x="4" y="4" width="8" height="7" fill="#FF7171"/>
+<rect x="13" y="5" width="8" height="2" fill="#45B26B"/>
+<rect x="13" y="8" width="8" height="2" fill="#45B26B"/>
+<rect x="13" y="11" width="8" height="2" fill="#45B26B"/>
+<rect x="4" y="4" width="8" height="16" fill="#45B26B"/>
+<rect x="13" y="14" width="8" height="2" fill="#45B26B"/>
+<rect x="13" y="17" width="8" height="2" fill="#45B26B"/>
+</svg>

+ 76 - 585
src/views/bitcoin/Index.vue

@@ -2,7 +2,9 @@
   <div class="market">
     <div class="market-nav">
       <div class="nav-left">
-        <div class="pf600 fs18 fc121212" @click="messageChange('selfSelected')">合约</div>
+        <div class="pf600 fs18 fc121212" @click="messageChange('selfSelected')">合约
+          <div class="active-line"></div>
+        </div>
         <div class="sys-notifi pf600 fs14 fcA8A8A8" @click="messageChange('contract')">秒合约</div>
         <div
           class="sys-notifi pf600 fs14 fcA8A8A8"
@@ -39,11 +41,11 @@
     </div>
     <div class="menu-content" >
 <!--      //左边-->
-      <div  class="menu-content-l">
+      <div class="menu-content-l">
         <div class="menu-content-lb pf400 fs14 fc666666">
           <span>价格</span><span>数量(USDT)</span>
         </div>
-        <div class="menu-content-lb1">
+        <div  class="menu-content-lb1">
           <div class="menu-content-lb1l pf400 fs14 fcFF7171">
             <span class="">40,166.82</span>
             <span>40,166.82</span>
@@ -73,7 +75,7 @@
           <p class="pf600 fs16 fcDF384C">5,678.00</p>
           <p class="fs12 fcA8A8A8 pf400">1,678.00</p>
         </div>
-        <div class="menu-content-lb1">
+        <div  class="menu-content-lb1">
           <div class="menu-content-lb1l pf400 fs14 fcFF7171">
             <span class="">40,166.82</span>
             <span>40,166.82</span>
@@ -100,18 +102,20 @@
           </div>
         </div>
         <div class="menu-content-lb1">
-          <div class="menu-content-lb1l pf400 fs12 fc333333">
-            <span class="fs12">深度1</span>
+          <div class="menu-content-lb1l pf400 fs12 fc333333" @click="isPickerVisible = true">
+            <span class="fs12">{{displayLabel}}</span>
             <img src="../../assets/icon/bitcoin/shendul.svg" alt="">
 
           </div>
           <div class="menu-content-lb1r pf400 fs14 fc444444">
             <img src="../../assets/icon/bitcoin/shendur.svg" alt="">
-
+            <img v-if="isassetlessState" src="../../assets/icon/bitcoin/wuzichan.svg" alt="">
           </div>
         </div>
 
       </div>
+      <assetlessStateData v-if="isassetlessState"></assetlessStateData>
+      <SellTradingStatusData v-if="isassetlessState"></SellTradingStatusData>
 <!--      //右边-->
       <div  class="menu-content-r">
         <div class="menu-content-rb pf400 fs14">
@@ -178,29 +182,24 @@
 <!--            <input type="checkbox" checked="checked">-->
 <!--            <span class="checkmark"></span>-->
 <!--            </label>-->
-           <input class="fs16" type="checkbox" id="bike" value="Bike">
+           <van-checkbox
+              v-model="isEnabled"
+              shape="square"
+              checked-color="#DC4653"
+              icon-size="16px"
+           >
+           </van-checkbox>
+<!--           <input class="fs16" type="checkbox" id="bike" value="Bike">-->
            <span class="menu-content-rb1s fc333333">只减仓</span>
          </div>
          <div class="menu-content-rb1">
             <span></span>
-
             <span>GTC</span>
-            <img class="fs16" src="../../assets/icon/bitcoin/qianbao1.svg" alt="">
-         </div>
-
-      </div>
-        <div class="menu-content-rb pf400 fs14">
-         <div class="menu-content-rb1 fs14 fc333333">
-<!--           <label class="custom-checkbox-container">-->
-<!--            <input type="checkbox" checked="checked">-->
-<!--            <span class="checkmark"></span>-->
-<!--            </label>-->
-           <input class="fs16" type="checkbox" id="bike" value="Bike">
-           <span class="menu-content-rb1s fc333333">只减仓</span>
-           <img src="../../assets/icon/bitcoin/quancang.svg" alt="">
+            <img class="fs16" src="../../assets/icon/bitcoin/quangcang1.svg" alt="">
          </div>
 
       </div>
+        <TakeProfitstopLoss v-show="!isEnabled"></TakeProfitstopLoss>
 
         <div class="menu-content-rb pf400 fs14">
          <div class="menu-content-rb1 fs14 fc333333">
@@ -258,580 +257,55 @@
         </div>
       </div>
     </div>
-<!--    m买入-->
-    <div class="transaction-cards">
-      <div class="container">
-
-    <div class="top-nav">
-      <div class="tabs">
-        <div class="tab-item active">
-          持有仓位(2)
-          <div class="active-line"></div>
-        </div>
-        <div class="tab-item">当前委托(0)</div>
-      </div>
-      <div class="filter-all">
-        <van-icon name="clock-o" style="margin-right: 4px;" /> 全部
-      </div>
-    </div>
-
-    <div class="position-card">
-
-      <div class="card-header">
-        <div class="coin-info">
-          <div class="btc-icon">₿</div>
-          <div class="title-group">
-            <div class="coin-name">BTC/USDT 永续</div>
-            <div class="tags">
-              <span class="tag-buy">买入</span>
-              <span class="tag-lever">逐仓 20X</span>
-            </div>
-          </div>
-        </div>
-        <div class="order-time">
-          <div>2025-11-04, 16:30</div>
-          <div style="text-align: right; margin-top: 2px;">下单时间</div>
-        </div>
-      </div>
-
-      <div class="divider"></div>
-
-      <div class="pnl-row">
-        <span class="label">未实现盈亏(USDT)</span>
-        <span class="value green-text">+0.2015 USDT</span>
-      </div>
-
-      <div class="data-grid">
-        <div class="grid-item align-left">
-          <div class="label">持仓数量</div>
-          <div class="value">0.215 USDT</div>
-        </div>
-        <div class="grid-item align-center">
-          <div class="label">开仓价格</div>
-          <div class="value">0.215 USDT</div>
-        </div>
-        <div class="grid-item align-right">
-          <div class="label">标记价格</div>
-          <div class="value">0.215 USDT</div>
-        </div>
-
-        <div class="grid-item align-left mt-10">
-          <div class="label">保证金</div>
-          <div class="value">0.215 USDT</div>
-        </div>
-        <div class="grid-item align-center mt-10">
-          <div class="label">强平价格</div>
-          <div class="value">0.215 USDT</div>
-        </div>
-        <div class="grid-item align-right mt-10">
-          <div class="label">收益率</div>
-          <div class="value green-text">+0.21%</div>
-        </div>
-      </div>
-
-      <div class="action-bar">
-        <div class="tp-sl-btn">止盈止损</div>
-        <div class="expand-btn">
-          展开 <van-icon name="arrow-down" />
-        </div>
-      </div>
-
-      <div class="footer-btn">
-        <van-button block round color="#e6424a" class="close-btn">
-          平仓
-        </van-button>
-      </div>
-
-    </div>
-  </div>
-    </div>
-<!--    卖出-->
-    <div class="transaction-cards1">
-      <div class="mobile-viewport">
-
-    <div class="position-card">
-
-      <div class="card-header">
-        <div class="coin-info">
-          <div class="btc-icon">₿</div>
-          <div class="title-group">
-            <div class="coin-name">BTC/USDT 永续</div>
-            <div class="tags">
-              <span class="tag-sell">卖出</span>
-              <span class="tag-lever">全仓 20X</span>
-            </div>
-          </div>
-        </div>
-        <div class="order-time">
-          <div class="time-val">2025-11-04, 16:30</div>
-          <div class="time-lbl">下单时间</div>
-        </div>
-      </div>
-
-      <div class="divider"></div>
-
-      <div class="pnl-row">
-        <span class="label">未实现盈亏(USDT)</span>
-        <span class="value red-text">-0.2015 USDT</span>
-      </div>
-
-      <div class="data-grid">
-        <div class="grid-item align-left">
-          <div class="label">持仓数量</div>
-          <div class="value">0.215 USDT</div>
-        </div>
-        <div class="grid-item align-center">
-          <div class="label">开仓价格</div>
-          <div class="value">0.215 USDT</div>
-        </div>
-        <div class="grid-item align-right">
-          <div class="label">标记价格</div>
-          <div class="value">0.215 USDT</div>
-        </div>
-
-        <div class="grid-item align-left mt-12">
-          <div class="label">保证金</div>
-          <div class="value">0.215 USDT</div>
-        </div>
-        <div class="grid-item align-center mt-12">
-          <div class="label">强平价格</div>
-          <div class="value">0.215 USDT</div>
-        </div>
-        <div class="grid-item align-right mt-12">
-          <div class="label">收益率</div>
-          <div class="value red-text">+0.21%</div>
-        </div>
-      </div>
-
-      <div class="action-bar">
-        <div class="tp-sl-text">止盈止损</div>
-        <div class="expand-btn active">
-          收起 <van-icon name="arrow-up" />
-        </div>
-      </div>
-
-      <div class="detail-panel">
-        <div class="detail-row">
-          <div class="d-left">
-            <span class="d-tag">止盈</span>
-            <span class="d-val gray">标记价格≥2080.80</span>
-          </div>
-          <div class="d-right">
-            <span class="d-label">盈亏</span>
-            <span class="d-val green-text">+0.2015 USDT</span>
-          </div>
-        </div>
-
-        <div class="detail-row">
-          <div class="d-left">
-            <span class="d-tag">止损</span>
-            <span class="d-val gray">最新价格≤9878.8</span>
-          </div>
-          <div class="d-right">
-            <span class="d-label">盈亏</span>
-            <span class="d-val red-text">-0.2015 USDT</span>
-          </div>
-        </div>
-
-        <div class="detail-row">
-          <div class="d-left">
-            <span class="d-tag">数量</span>
-            <span class="d-val gray">0.215 USDT</span>
-          </div>
-          <div class="d-right">
-            <span class="d-label">委托价</span>
-            <span class="d-val gray">市价</span>
-          </div>
-        </div>
-      </div>
-
-      <div class="footer-btn">
-        <van-button block round color="#e6424a" class="close-btn">
-          平仓
-        </van-button>
-      </div>
+    <sellOrder></sellOrder>
 
+    <div v-if="isassetlessState">
+      <assetlessState></assetlessState>
     </div>
-  </div>
+    <div>
+      <ChooseThisDepth
+          v-model:show="isPickerVisible"
+          v-model="currentDepth"
+      ></ChooseThisDepth>
     </div>
-
   </div>
 </template>
 <script setup>
-    import { ref } from 'vue';
-    const show = ref(false);
-    const showPopup = () => {
-      show.value = true;
+    import { Checkbox as VanCheckbox } from 'vant';
+    // import { Icon as VanIcon, } from 'vant';
+    import { defineAsyncComponent } from 'vue';
+    import { ref ,computed} from 'vue';
+    // 懒加载多个组件
+    const assetlessState = defineAsyncComponent(() => import("./components/assetlessState.vue"));
+    const assetlessStateData = defineAsyncComponent(() => import("./components/assetlessStateData.vue"));
+    const sellOrder = defineAsyncComponent(() => import('./components/sellOrder.vue'));
+    const SellTradingStatusData = defineAsyncComponent(() => import('./components/SellTradingStatusData.vue'));
+    const TakeProfitstopLoss = defineAsyncComponent(() => import('./components/TakeProfitstopLoss.vue'));
+    const ChooseThisDepth = defineAsyncComponent(() => import('./components/ChooseThisDepth.vue'));
+
+      // --- 父组件状态 ---
+    const isPickerVisible = ref(false); // 控制弹窗开关
+    const currentDepth = ref('depth1'); // 当前选中的深度
+
+
+    const depthMap = {
+      'depth1': '深度1',
+      'depth2': '深度2',
+      'depth3': '深度3',
     };
-    import { Icon as VanIcon, Button as VanButton } from 'vant';
+    const displayLabel = computed(() => depthMap[currentDepth.value] || '请选择');
+
+    const isEnabled = ref(false);
+
+
 
 </script>
 <style lang="less" scoped>
-/* 模拟手机视口 375px */
-.mobile-viewport {
-  width: 100%;
-  max-width: 375px;
-  margin: 0 auto;
-  background-color: #ffffff; /* 外部背景色 */
-  padding: 0 15px;
-  box-sizing: border-box;
-  font-family: -apple-system, BlinkMacSystemFont, Roboto, Arial, sans-serif;
-}
-
-/* 卡片主体 */
-.position-card {
-  background: #ffffff;
-  border-radius: 8px;
-  padding: 15px;
-  border: 1px solid #ebedf0;
-  position: relative;
-}
-
-/* --- Header --- */
-.card-header {
-  display: flex;
-  justify-content: space-between;
-  align-items: flex-start;
-  margin-bottom: 12px;
-}
-.coin-info { display: flex; align-items: center; }
-.btc-icon {
-  width: 32px;
-  height: 32px;
-  background: #f7931a;
-  border-radius: 50%;
-  color: white;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  font-weight: bold;
-  font-size: 18px;
-  margin-right: 8px;
-}
-.title-group { display: flex; flex-direction: column; justify-content: center; }
-.coin-name {
-  font-size: 16px;
-  font-weight: 600;
-  color: #333;
-  line-height: 1.2;
-  margin-bottom: 4px;
-}
-.tags { display: flex; align-items: center; }
-
-/* 标签样式 */
-.tag-sell {
-  background-color: #e6424a; /* 卖出红 */
-  color: white;
-  font-size: 11px;
-  padding: 1px 4px;
-  border-radius: 3px;
-  margin-right: 4px;
-  line-height: 1.4;
-}
-.tag-lever {
-  background-color: #9aa0a5; /* 灰色背景 */
-  color: #fff;
-  font-size: 11px;
-  padding: 1px 4px;
-  border-radius: 3px;
-  line-height: 1.4;
-}
-
-/* 时间 */
-.order-time { text-align: right; }
-.time-val { font-size: 12px; color: #666; }
-.time-lbl { font-size: 11px; color: #999; margin-top: 2px; }
-
-/* 分割线 */
-.divider { height: 1px; background-color: #f0f0f0; margin: 10px 0; }
-
-/* 盈亏行 */
-.pnl-row {
-  display: flex;
-  justify-content: space-between;
-  margin-bottom: 12px;
-  font-size: 13px;
-  align-items: center;
-}
-.pnl-row .label { color: #999; }
-.pnl-row .value { font-size: 15px; font-weight: 500; }
-
-/* 通用颜色 */
-.green-text { color: #00b45a; }
-.red-text { color: #e6424a; }
-.gray { color: #888; }
-
-/* 数据网格 */
-.data-grid { display: flex; flex-wrap: wrap; }
-.grid-item { width: 33.33%; }
-.align-left { text-align: left; }
-.align-center { text-align: center; }
-.align-right { text-align: right; }
-.mt-12 { margin-top: 12px; }
-
-.grid-item .label { font-size: 11px; color: #999; margin-bottom: 4px; }
-.grid-item .value { font-size: 13px; color: #333; font-weight: 500; }
-
-/* 操作栏 */
-.action-bar {
-  display: flex;
-  justify-content: space-between;
-  margin-top: 15px;
-  font-size: 12px;
-  color: #999;
-  align-items: center;
-}
-.tp-sl-text {
-  //text-decoration: underline;
-  text-decoration-color: #ccc;
-}
-.expand-btn { display: flex; align-items: center; cursor: pointer; }
-
-/* --- 详情面板 (关键还原部分) --- */
-.detail-panel {
-  margin-top: 8px;
-  padding-top: 4px;
-}
-.detail-row {
-  display: flex;
-  justify-content: space-between;
-  font-size: 12px;
-  margin-bottom: 6px;
-  line-height: 1.5;
-}
-.d-left { display: flex; align-items: center; }
-.d-right { display: flex; align-items: center; }
-
-/* 详情里的文字对齐 */
-.d-tag {
-  color: #999;
-  margin-right: 12px; /* 标签(止盈)和数值之间的间距 */
-  min-width: 24px; /* 保证标签对齐 */
-}
-.d-label {
-  color: #999;
-  margin-right: 8px;
-}
-.d-val {
-  font-family: Arial, sans-serif;
-}
-
-/* 底部按钮 */
-.footer-btn { margin-top: 15px; }
-.close-btn { font-size: 15px; letter-spacing: 1px; border: none; }
-
-.container {
-  background-color: #fff;
-  //min-height: 100vh;
-  padding: 16px;
-  font-family: sans-serif;
-}
-
-.top-nav {
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-  margin-bottom: 12px;
-}
-.tabs { display: flex; align-items: center; gap: 20px; }
-.tab-item {
-  font-size: 16px;
-  color: #969799;
-  position: relative;
-  padding-bottom: 6px;
-  font-weight: 600;
-}
-.tab-item.active {
-  color: #323233;
-  font-weight: 600;
-  font-size: 17px;
-}
-.active-line {
-  position: absolute;
-  bottom: 0;
-  left: 50%;
-  transform: translateX(-50%);
-  width: 20px;
-  height: 3px;
-  background-color: #323233;
-  border-radius: 2px;
-}
-.filter-all {
-  font-size: 16px;
-  color: #969799;
-  display: flex;
-  font-weight: 600;
-  align-items: center;
-}
-
-.position-card {
-  background: #ffffff;
-  border-radius: 12px;
-  padding: 16px;
-  /* 去掉投影,增加描边 */
-  box-shadow: none;
-  border: 1px solid #ebedf0;
-}
-
-.card-header {
-  display: flex;
-  justify-content: space-between;
-  align-items: flex-start;
-  margin-bottom: 12px;
-}
-.coin-info { display: flex; align-items: center; }
-.btc-icon {
-  width: 36px;
-  height: 36px;
-  background: #f7931a;
-  border-radius: 50%;
-  color: white;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  font-weight: bold;
-  font-size: 20px;
-  margin-right: 10px;
-}
-.coin-name {
-  font-size: 16px;
-  font-weight: bold;
-  color: #323233;
-  line-height: 1.2;
-  margin-bottom: 4px;
-}
-.tags { display: flex; align-items: center; }
-.tag-buy {
-  background-color: #00b45a;
-  color: white;
-  font-size: 11px;
-  padding: 1px 4px;
-  border-radius: 3px;
-  margin-right: 4px;
-}
-.tag-lever {
-  background-color: #f0f0f0;
-  color: #969799;
-  font-size: 11px;
-  padding: 1px 4px;
-  border-radius: 3px;
-}
-.order-time {
-  text-align: right;
-  font-size: 12px;
-  color: #969799;
-  line-height: 1.4;
-}
-.divider {
-  height: 1px;
-  background-color: #f5f6f7;
-  margin: 12px 0;
-}
-.pnl-row {
-  display: flex;
-  justify-content: space-between;
-  margin-bottom: 12px;
-  font-size: 13px;
-}
-.pnl-row .label { color: #969799; }
-.green-text { color: #00b45a; font-weight: 500; }
-
-.data-grid { display: flex; flex-wrap: wrap; }
-.grid-item { width: 33.33%; margin-bottom: 4px; }
-.mt-10 { margin-top: 12px; }
-.align-left { text-align: left; }
-.align-center { text-align: center; }
-.align-right { text-align: right; }
-.grid-item .label {
-  font-size: 12px;
-  color: #969799;
-  margin-bottom: 4px;
-}
-.grid-item .value {
-  font-size: 14px;
-  color: #323233;
-  font-weight: 500;
-}
-
-.action-bar {
-  display: flex;
-  justify-content: space-between;
-  margin-top: 16px;
-  font-size: 13px;
-  color: #969799;
-}
-.footer-btn { margin-top: 16px; }
-.close-btn { font-size: 16px; font-weight: 500; letter-spacing: 1px; }
-
-///* 容器(即 <label>)的样式 */
-//.custom-checkbox-container {
-//  display: block; /* 确保它占满一行 */
-//  position: relative; /* 方便定位子元素 */
-//  padding-left: 30px; /* 为自定义方框留出空间 */
-//  margin-bottom: 12px;
-//  cursor: pointer; /* 鼠标悬停时显示手型 */
-//  font-size: 16px;
-//  user-select: none; /* 防止文本被选中 */
-//}
-//
-///* 隐藏浏览器默认的复选框 */
-//.custom-checkbox-container input {
-//  position: absolute;
-//  opacity: 0; /* 彻底隐藏 */
-//  cursor: pointer;
-//  height: 0;
-//  width: 0;
-//}
-//
-///* 自定义复选框的样式(即 <span>.checkmark) */
-//.checkmark {
-//  position: absolute;
-//  top: 0;
-//  left: 0;
-//  height: 20px;
-//  width: 20px;
-//  background-color: #eee; /* 未选中时的背景色 */
-//  border-radius: 4px; /* 略微圆角 */
-//  border: 1px solid #ccc;
-//}
-//
-///* 鼠标悬停时(未选中状态),改变背景色 */
-//.custom-checkbox-container:hover input ~ .checkmark {
-//  background-color: #ccc;
-//}
-//
-///* 选中状态:当 input 被选中时,改变 .checkmark 的背景色 */
-//.custom-checkbox-container input:checked ~ .checkmark {
-//  background-color: #2196F3; /* 选中时的背景色(蓝色) */
-//  border: 1px solid #2196F3;
-//}
-//
-///* 创建自定义勾(在 .checkmark 内部使用 :after 伪元素) */
-//.checkmark:after {
-//  content: "";
-//  position: absolute;
-//  display: none; /* 默认隐藏 */
-//}
-//
-///* 选中状态:当 input 被选中时,显示自定义勾 */
-//.custom-checkbox-container input:checked ~ .checkmark:after {
-//  display: block;
-//}
-//
-///* 样式化自定义勾(让它看起来像个勾) */
-//.custom-checkbox-container .checkmark:after {
-//  /* 调整位置 */
-//  left: 6px;
-//  top: 2px;
-//  /* 调整大小和形状,利用 border 模拟对勾 */
-//  width: 5px;
-//  height: 10px;
-//  border: solid white; /* 勾的颜色 */
-//  border-width: 0 3px 3px 0; /* 只有右边和底部有边框 */
-//  /* 旋转 - 45 度使其成为对勾形状 */
-//  transform: rotate(45deg);
-//}
 
+/* 容器基础样式,基于 375px 设计稿 */
+:deep(.van-checkbox__icon--square .van-icon) {
+  /* 这里的 4px 是圆角大小,数值越大越圆 */
+  border-radius: 2px !important;}
   .market {
     display: flex;
     flex-direction: column;
@@ -856,6 +330,19 @@
         align-items: flex-end;
         width: 349px;
         height: 24px;
+        div:nth-child(1){
+          position: relative;
+          .active-line{
+                position: absolute;
+                bottom: -6px;
+                left: 50%;
+                transform: translateX(-50%);
+                width: 20px;
+                height: 3px;
+                background-color: #323233;
+                border-radius: 2px;
+          }
+        }
 
         .sys-notifi {
           margin-left: 35px;
@@ -980,6 +467,7 @@
       .menu-content-r{
         flex: 1;
         flex-basis: 63.5px;
+        max-width: 204.25px;
         .menu-content-rb:nth-of-type(4){
            background-color: transparent;
             height:20px;
@@ -1082,6 +570,9 @@
             span:nth-child(2){
               margin:0 9px 0 9px;
             }
+          }
+          .menu-content-rb1s{
+            margin-left: 6px;
           }
            span{
               padding-right: 0;

+ 112 - 0
src/views/bitcoin/components/ChooseThisDepth.vue

@@ -0,0 +1,112 @@
+<script setup>
+// --- 接收父组件参数 ---
+const props = defineProps({
+  // 1. 控制显示 (对应 v-model:show)
+  show: {
+    type: Boolean,
+    default: false
+  },
+  // 2. 当前选中的值 (对应 v-model)
+  modelValue: {
+    type: String,
+    default: ''
+  }
+});
+
+// --- 定义事件 ---
+const emit = defineEmits(['update:show', 'update:modelValue']);
+
+const options = [
+  { label: '深度1', value: 'depth1' },
+  { label: '深度2', value: 'depth2' },
+  { label: '深度3', value: 'depth3' },
+];
+
+// --- 交互逻辑 ---
+const close = () => {
+  emit('update:show', false); // 通知父组件:把 show 改成 false
+};
+
+const selectItem = (item) => {
+  emit('update:modelValue', item.value); // 通知父组件:更新选中的值
+  close(); // 选完直接关闭
+};
+</script>
+
+<template>
+  <teleport to="body">
+
+    <transition name="fade">
+      <div v-if="show" class="overlay" @click="close"></div>
+    </transition>
+
+    <transition name="slide-up">
+      <div v-if="show" class="popup-wrapper" @click.stop>
+        <div class="popup-header">
+          <div class="handle-bar"></div>
+          <div class="title">选择深度</div>
+        </div>
+
+        <div class="popup-content">
+          <div
+            v-for="item in options"
+            :key="item.value"
+            class="option-item"
+            @click="selectItem(item)"
+          >
+            <span :class="['label', { 'active': modelValue === item.value }]">
+              {{ item.label }}
+            </span>
+
+            <svg v-if="modelValue === item.value" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#DC4653" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
+              <polyline points="20 6 9 17 4 12"></polyline>
+            </svg>
+          </div>
+        </div>
+        <div class="safe-area"></div>
+      </div>
+    </transition>
+
+  </teleport>
+</template>
+
+<style scoped>
+/* --- 仅包含弹窗相关的样式 --- */
+.overlay {
+  position: fixed; top: 0; left: 0; right: 0; bottom: 0;
+  background-color: rgba(0, 0, 0, 0.6);
+  backdrop-filter: blur(2px);
+  z-index: 999;
+}
+
+.popup-wrapper {
+  position: fixed; bottom: 0; left: 0; right: 0;
+  background-color: #FFFFFF;
+  border-top-left-radius: 16px;
+  border-top-right-radius: 16px;
+  z-index: 1000;
+  padding-bottom: 10px;
+}
+
+.popup-header { padding-top: 10px; margin-bottom: 10px; }
+.handle-bar {
+  width: 36px; height: 4px; background-color: #E6E8EA;
+  border-radius: 2px; margin: 0 auto 16px; }
+.title { font-size: 18px; font-weight: 600; color: #1E2329; padding: 0 20px; }
+
+.popup-content { max-height: 60vh; overflow-y: auto; }
+.option-item { display: flex; justify-content: space-between;
+  align-items: center; height: 56px; padding: 0 20px; cursor: pointer; }
+.option-item:active { background-color: #F5F5F5; }
+
+.label { font-size: 16px; color: #848E9C; }
+.label.active { color: #1E2329; font-weight: 500; }
+
+.safe-area { height: env(safe-area-inset-bottom); }
+
+/* 动画 */
+.fade-enter-active, .fade-leave-active { transition: opacity 0.3s; }
+.fade-enter-from, .fade-leave-to { opacity: 0; }
+.slide-up-enter-active, .slide-up-leave-active { transition: transform 0.3s cubic-bezier(0.2, 0, 0.2, 1); }
+.slide-up-enter-from, .slide-up-leave-to { transform: translateY(100%); }
+</style>

+ 135 - 0
src/views/bitcoin/components/SellTradingStatusData.vue

@@ -0,0 +1,135 @@
+<script setup>
+
+</script>
+
+<template>
+  <div class="menu-content-l">
+        <div class="menu-content-lb pf400 fs14 fc666666">
+          <span>价格</span><span>数量(USDT)</span>
+        </div>
+        <div  class="menu-content-lb1">
+          <div class="menu-content-lb1l pf400 fs14 fcFF7171">
+            <span class="">40,166.82</span>
+            <span>40,166.82</span>
+            <span>40,166.82</span>
+            <span>40,166.82</span>
+            <span>40,166.82</span>
+            <span>40,166.82</span>
+            <span>40,166.82</span>
+            <span>40,166.82</span>
+            <span>40,166.82</span>
+            <span class="">40,166.82</span>
+            <span>40,166.82</span>
+            <span>40,166.82</span>
+            <span>40,166.82</span>
+            <span>40,166.82</span>
+            <span>40,166.82</span>
+            <span>40,166.82</span>
+            <span>40,166.82</span>
+            <span>40,166.82</span>
+            <span>40,166.82</span>
+
+
+
+          </div>
+          <div class="menu-content-lb1r pf400 fs14 fc444444">
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+
+
+          </div>
+        </div>
+        <div class="menu-content-lb2">
+          <p class="pf600 fs16 fcDF384C">5,678.00</p>
+          <p class="fs12 fcA8A8A8 pf400">1,678.00</p>
+        </div>
+        <div class="menu-content-lb1">
+          <div class="menu-content-lb1l pf400 fs12 fc333333">
+            <span class="fs12">深度1</span>
+            <img src="../../../assets/icon/bitcoin/shendul.svg" alt="">
+
+          </div>
+          <div class="menu-content-lb1r pf400 fs14 fc444444">
+            <img src="../../../assets/icon/bitcoin/maipan.svg" alt="">
+          </div>
+        </div>
+
+      </div>
+</template>
+
+<style scoped lang="less">
+  .menu-content-l{
+        flex: 1;
+        .menu-content-lb{
+          display: flex;
+          flex-direction: row;
+          justify-content: space-between;
+          padding-right: 14px;
+        }
+        .menu-content-lb1{
+          margin-top: 5px;
+          display: flex;
+          flex-direction: row;
+          justify-content: space-between;
+           padding-right: 14px;
+          .menu-content-lb1l{
+            display: flex;
+            flex-direction: column;
+            line-height: 22px;
+          }
+          .menu-content-lb1r{
+            display: flex;
+            flex-direction: column;
+            line-height: 22px;
+          }
+        }
+        .menu-content-lb1:nth-child(2){
+          .menu-content-lb1l{
+            color: #ff7171;
+          }
+        }
+        .menu-content-lb1:nth-child(4){
+          .menu-content-lb1l{
+            width: 100%;
+            display: flex;
+            flex-direction: row;
+            justify-content: space-between;
+            align-items: center;
+            background-color: #f5f5f5;
+            border-radius: 6px;
+            height: 24px;
+            padding: 0 5px 0 13px;
+
+
+          }
+          .menu-content-lb1r{
+            margin-left: 15px;
+          }
+        }
+
+        .menu-content-lb2{
+          margin-top: 8px;
+          line-height: 16px;
+          //span:nth-child(2){
+          //  //border-style: dashed;
+          //}
+        }
+      }
+</style>

+ 181 - 0
src/views/bitcoin/components/TakeProfitstopLoss.vue

@@ -0,0 +1,181 @@
+<script setup>
+import { Checkbox as VanCheckbox } from 'vant';
+import { Icon as VanIcon, } from 'vant';
+import { ref } from 'vue';
+
+// 1. 状态控制
+const isEnabled = ref(false); // 控制复选框选中状态,
+const takeProfit = ref('');  // 止盈价格
+const stopLoss = ref('');    // 止损价格
+
+// 点击“高级”的事件
+const handleAdvanced = () => {
+  console.log('点击了高级设置');
+};
+</script>
+
+<template>
+  <div class="tpsl-container">
+
+    <div class="header-row">
+      <div class="left-trigger">
+        <van-checkbox
+          v-model="isEnabled"
+          shape="square"
+          checked-color="#DC4653"
+          icon-size="16px"
+        >
+        </van-checkbox>
+        <span class="label-text">止盈止损</span>
+
+        <van-icon name="question-o" color="#999" size="16" class="help-icon" />
+      </div>
+
+      <div v-if="isEnabled" class="right-action" @click="handleAdvanced">
+        <span class="fc333333">高级</span>
+        <van-icon style="font-weight: bold; margin-left: 5px;" name="arrow" size="12"/>
+      </div>
+    </div>
+
+    <transition style="min-width:205px" name="slide-fade">
+      <div v-if="isEnabled" class="inputs-wrapper">
+
+        <div class="input-box">
+          <span class="placeholder" v-show="!takeProfit">止盈价格</span>
+          <input
+            type="number"
+            v-model="takeProfit"
+            class="real-input"
+          />
+          <span class="suffix">USDT</span>
+        </div>
+
+        <div class="input-box">
+          <span class="placeholder" v-show="!stopLoss">止损价格</span>
+          <input
+            type="number"
+            v-model="stopLoss"
+            class="real-input"
+          />
+          <span class="suffix">USDT</span>
+        </div>
+
+      </div>
+    </transition>
+
+  </div>
+</template>
+
+<style scoped>
+/* 容器基础样式,基于 375px 设计稿 */
+:deep(.van-checkbox__icon--square .van-icon) {
+  border-radius: 2px !important;}
+.tpsl-container {
+  width: 100%;
+  background: #fff;
+  box-sizing: border-box;
+}
+
+/* --- 头部样式 --- */
+.header-row {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  margin-bottom: 6px;
+  height: 24px;
+}
+
+.left-trigger {
+  display: flex;
+  align-items: center;
+  gap: 6px;
+}
+
+.label-text {
+  font-size: 14px;
+  color: #333;
+  font-weight: 400;
+}
+
+.help-icon {
+  margin-left: 2px;
+}
+
+.right-action {
+  display: flex;
+  align-items: center;
+  color: #666;
+  font-size: 12px;
+  cursor: pointer;
+}
+
+/* --- 输入框区域样式 --- */
+.inputs-wrapper {
+  max-width: 204.25px;
+  display: flex;
+  flex-direction: column;
+  gap: 12px; /* 两个输入框之间的间距 */
+}
+
+.input-box {
+  position: relative; /* 为了让 placeholder 绝对定位 */
+  display: flex;
+  align-items: center;
+  background-color: #F7F8FA; /* 还原图片中的浅灰色背景 */
+  border-radius: 4px;
+  height: 38px;
+  padding: 0 12px;
+}
+
+/* 模拟 placeholder,为了更好控制样式和位置 */
+.placeholder {
+  position: absolute;
+  left: 12px;
+  color: #969799; /* 浅灰提示字 */
+  font-size: 14px;
+  pointer-events: none; /* 点击穿透,确保能点到 input */
+}
+
+/* 实际的输入框,背景透明覆盖在上面 */
+.real-input {
+  flex: 1; /* 占满剩余空间 */
+  background: transparent;
+  border: none;
+  outline: none;
+  font-size: 14px;
+  color: #333;
+  z-index: 1;
+  height: 100%;
+  text-align: right;
+  padding-right: 8px;
+}
+
+/* 让 real-input 靠左对齐输入 (还原图片样子) */
+.real-input {
+  text-align: left;
+}
+
+.suffix {
+  color: #333;
+  font-size: 14px;
+  font-weight: 400;
+  position: absolute;
+  right: 12px;
+}
+
+/* --- 简单的展开/收起动画 --- */
+.slide-fade-enter-active,
+.slide-fade-leave-active {
+  transition: all 0.3s ease-out;
+  max-height: 200px; /* 只要比实际高度大就行 */
+  opacity: 1;
+  overflow: hidden;
+}
+
+.slide-fade-enter-from,
+.slide-fade-leave-to {
+  max-height: 0;
+  opacity: 0;
+  margin-top: 0;
+}
+</style>

+ 97 - 0
src/views/bitcoin/components/assetlessState.vue

@@ -0,0 +1,97 @@
+<script setup>
+// 定义按钮点击事件
+const handleDeposit = () => {
+  console.log("点击了前往充币");
+  // 这里可以写跳转路由的代码,例如:router.push('/deposit')
+};
+</script>
+
+<template>
+   <div>
+      <div class="empty-state-container">
+    <div class="image-wrapper">
+<!--      src="https://cdn-icons-png.flaticon.com/512/5501/5501360.png"-->
+      <img
+        src="../../../assets/icon/bitcoin/qianwangcb.svg"
+        alt="暂无资产"
+        class="empty-image"
+      />
+    </div>
+
+    <h2 class="title">暂无资产</h2>
+    <p class="subtitle">立即充币或买币,开启交易之旅</p>
+
+    <button class="action-btn" @click="handleDeposit">
+      前往充币
+    </button>
+  </div>
+    </div>
+</template>
+
+<style lang="less" scoped>
+/* 基础尺寸:375px
+  如果你使用了 postcss-pxtorem 等插件,这里的 px 会自动转为 rem
+*/
+
+.empty-state-container {
+  width: 100%;
+  //min-height: 100vh; /* 占满全屏高度 */
+  background-color: #fff;
+  display: flex;
+  flex-direction: column;
+  align-items: center; /* 水平居中 */
+  padding-top: 30px; /* 距离顶部的距离,根据设计稿调整 */
+  box-sizing: border-box;
+}
+
+/* 图片区域 */
+.image-wrapper {
+  margin-bottom: 15px;
+}
+
+.empty-image {
+  width: 120px; /* 根据图片实际大小调整 */
+  height: auto;
+  /* 如果图片本身没有黑白滤镜,可以用 css 调整,或者直接用切好的图 */
+  filter: grayscale(100%);
+  opacity: 0.8;
+}
+
+/* 主标题 */
+.title {
+  font-size: 18px;
+  color: #333333; /* 深黑色 */
+  font-weight: 500;
+  margin: 0 0 0 0; /* 下边距 */
+  line-height: 1.5;
+}
+
+/* 副标题 */
+.subtitle {
+  font-size: 14px;
+  color: #999999; /* 浅灰色 */
+  margin: 0 0 20px 0; /* 距离按钮的间距 */
+  line-height: 1.5;
+  text-align: center;
+  padding: 0 20px; /* 防止文字太长贴边 */
+}
+
+/* 按钮样式 */
+.action-btn {
+  width: 315px; /* 375 - (30px padding * 2) 左右留白 */
+  height: 48px;
+  background-color: #DC4653; /* 提取自图片的红色 */
+  color: white;
+  font-size: 16px;
+  font-weight: bold;
+  border: none;
+  border-radius: 24px; /* 圆角,高度的一半形成胶囊状 */
+  cursor: pointer;
+  box-shadow: 0 4px 10px rgba(220, 70, 83, 0.3); /* 增加一点红色阴影更有质感 */
+  transition: opacity 0.2s;
+}
+
+.action-btn:active {
+  opacity: 0.8; /* 点击时的反馈 */
+}
+</style>

+ 127 - 0
src/views/bitcoin/components/assetlessStateData.vue

@@ -0,0 +1,127 @@
+<script setup>
+
+</script>
+
+<template>
+  <div class="menu-content-l">
+        <div class="menu-content-lb pf400 fs14 fc666666">
+          <span>价格</span><span>数量(USDT)</span>
+        </div>
+        <div class="menu-content-lb2">
+          <p class="pf600 fs16 fcDF384C">5,678.00</p>
+          <p class="fs12 fcA8A8A8 pf400">1,678.00</p>
+        </div>
+        <div  class="menu-content-lb1">
+          <div class="menu-content-lb1l pf400 fs14 fcFF7171">
+            <span class="">40,166.82</span>
+            <span>40,166.82</span>
+            <span>40,166.82</span>
+            <span>40,166.82</span>
+            <span>40,166.82</span>
+            <span>40,166.82</span>
+            <span>40,166.82</span>
+            <span>40,166.82</span>
+            <span>40,166.82</span>
+            <span class="">40,166.82</span>
+            <span>40,166.82</span>
+            <span>40,166.82</span>
+            <span>40,166.82</span>
+            <span>40,166.82</span>
+            <span>40,166.82</span>
+            <span>40,166.82</span>
+            <span>40,166.82</span>
+            <span>40,166.82</span>
+            <span>40,166.82</span>
+          </div>
+          <div class="menu-content-lb1r pf400 fs14 fc444444">
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+            <span>37.80K</span>
+          </div>
+        </div>
+        <div class="menu-content-lb1">
+          <div class="menu-content-lb1l pf400 fs12 fc333333">
+            <span class="fs12">深度1</span>
+            <img src="../../../assets/icon/bitcoin/shendul.svg" alt="">
+
+          </div>
+          <div class="menu-content-lb1r pf400 fs14 fc444444">
+            <img src="../../../assets/icon/bitcoin/wuzichan.svg" alt="">
+          </div>
+        </div>
+
+      </div>
+</template>
+
+<style scoped lang="less">
+  .menu-content-l{
+        flex: 1;
+        .menu-content-lb{
+          display: flex;
+          flex-direction: row;
+          justify-content: space-between;
+          padding-right: 14px;
+        }
+        .menu-content-lb1{
+          margin-top: 5px;
+          display: flex;
+          flex-direction: row;
+          justify-content: space-between;
+           padding-right: 14px;
+          .menu-content-lb1l{
+            display: flex;
+            flex-direction: column;
+            line-height: 22px;
+          }
+          .menu-content-lb1r{
+            display: flex;
+            flex-direction: column;
+            line-height: 22px;
+          }
+        }
+        .menu-content-lb1:nth-child(3){
+          .menu-content-lb1l{
+            color: #45b26b;
+          }
+        }
+        .menu-content-lb1:nth-child(4){
+          .menu-content-lb1l{
+            width: 100%;
+            display: flex;
+            flex-direction: row;
+            justify-content: space-between;
+            align-items: center;
+            background-color: #f5f5f5;
+            border-radius: 6px;
+            height: 24px;
+            padding: 0 5px 0 13px;
+          }
+          .menu-content-lb1r{
+            margin-left: 15px;
+          }
+        }
+        .menu-content-lb2{
+          margin-top: 8px;
+          line-height: 16px;
+          //span:nth-child(2){
+          //  //border-style: dashed;
+          //}
+        }
+      }
+</style>

+ 504 - 0
src/views/bitcoin/components/position.vue

@@ -0,0 +1,504 @@
+<script setup>
+import { Icon as VanIcon, Button as VanButton } from 'vant';
+
+</script>
+
+<template>
+   <div>
+      <!--    m买入-->
+      <div class="transaction-cards">
+        <div class="container">
+
+<!--      <div class="top-nav">-->
+<!--        <div class="tabs">-->
+<!--          <div class="tab-item active">-->
+<!--            持有仓位(2)-->
+<!--            <div class="active-line"></div>-->
+<!--          </div>-->
+<!--          <div class="tab-item">当前委托(0)</div>-->
+<!--        </div>-->
+<!--        <div class="filter-all">-->
+<!--          <van-icon name="clock-o" style="margin-right: 4px;" /> 全部-->
+<!--        </div>-->
+<!--      </div>-->
+
+      <div class="position-card">
+
+        <div class="card-header">
+          <div class="coin-info">
+            <div class="btc-icon">₿</div>
+            <div class="title-group">
+              <div class="coin-name">BTC/USDT 永续</div>
+              <div class="tags">
+                <span class="tag-buy">买入</span>
+                <span class="tag-lever">逐仓 20X</span>
+              </div>
+            </div>
+          </div>
+          <div class="order-time">
+            <div>2025-11-04, 16:30</div>
+            <div style="text-align: right; margin-top: 2px;">下单时间</div>
+          </div>
+        </div>
+
+        <div class="divider"></div>
+
+        <div class="pnl-row">
+          <span class="label">未实现盈亏(USDT)</span>
+          <span class="value green-text">+0.2015 USDT</span>
+        </div>
+
+        <div class="data-grid">
+          <div class="grid-item align-left">
+            <div class="label">持仓数量</div>
+            <div class="value">0.215 USDT</div>
+          </div>
+          <div class="grid-item align-center">
+            <div class="label">开仓价格</div>
+            <div class="value">0.215 USDT</div>
+          </div>
+          <div class="grid-item align-right">
+            <div class="label">标记价格</div>
+            <div class="value">0.215 USDT</div>
+          </div>
+
+          <div class="grid-item align-left mt-10">
+            <div class="label">保证金</div>
+            <div class="value">0.215 USDT</div>
+          </div>
+          <div class="grid-item align-center mt-10">
+            <div class="label">强平价格</div>
+            <div class="value">0.215 USDT</div>
+          </div>
+          <div class="grid-item align-right mt-10">
+            <div class="label">收益率</div>
+            <div class="value green-text">+0.21%</div>
+          </div>
+        </div>
+
+        <div class="action-bar">
+          <div class="tp-sl-btn">止盈止损</div>
+          <div class="expand-btn">
+            展开 <van-icon name="arrow-down" />
+          </div>
+        </div>
+
+        <div class="footer-btn">
+          <van-button block round color="#e6424a" class="close-btn">
+            平仓
+          </van-button>
+        </div>
+
+      </div>
+    </div>
+      </div>
+      <!--    卖出-->
+      <div class="transaction-cards1">
+      <div class="mobile-viewport">
+
+    <div class="position-card">
+
+      <div class="card-header">
+        <div class="coin-info">
+          <div class="btc-icon">₿</div>
+          <div class="title-group">
+            <div class="coin-name">BTC/USDT 永续</div>
+            <div class="tags">
+              <span class="tag-sell">卖出</span>
+              <span class="tag-lever">全仓 20X</span>
+            </div>
+          </div>
+        </div>
+        <div class="order-time">
+          <div class="time-val">2025-11-04, 16:30</div>
+          <div class="time-lbl">下单时间</div>
+        </div>
+      </div>
+
+      <div class="divider"></div>
+
+      <div class="pnl-row">
+        <span class="label">未实现盈亏(USDT)</span>
+        <span class="value red-text">-0.2015 USDT</span>
+      </div>
+
+      <div class="data-grid">
+        <div class="grid-item align-left">
+          <div class="label">持仓数量</div>
+          <div class="value">0.215 USDT</div>
+        </div>
+        <div class="grid-item align-center">
+          <div class="label">开仓价格</div>
+          <div class="value">0.215 USDT</div>
+        </div>
+        <div class="grid-item align-right">
+          <div class="label">标记价格</div>
+          <div class="value">0.215 USDT</div>
+        </div>
+
+        <div class="grid-item align-left mt-12">
+          <div class="label">保证金</div>
+          <div class="value">0.215 USDT</div>
+        </div>
+        <div class="grid-item align-center mt-12">
+          <div class="label">强平价格</div>
+          <div class="value">0.215 USDT</div>
+        </div>
+        <div class="grid-item align-right mt-12">
+          <div class="label">收益率</div>
+          <div class="value red-text">+0.21%</div>
+        </div>
+      </div>
+
+      <div class="action-bar">
+        <div class="tp-sl-text">止盈止损</div>
+        <div class="expand-btn active">
+          收起 <van-icon name="arrow-up" />
+        </div>
+      </div>
+
+      <div class="detail-panel">
+        <div class="detail-row">
+          <div class="d-left">
+            <span class="d-tag">止盈</span>
+            <span class="d-val gray">标记价格≥2080.80</span>
+          </div>
+          <div class="d-right">
+            <span class="d-label">盈亏</span>
+            <span class="d-val green-text">+0.2015 USDT</span>
+          </div>
+        </div>
+
+        <div class="detail-row">
+          <div class="d-left">
+            <span class="d-tag">止损</span>
+            <span class="d-val gray">最新价格≤9878.8</span>
+          </div>
+          <div class="d-right">
+            <span class="d-label">盈亏</span>
+            <span class="d-val red-text">-0.2015 USDT</span>
+          </div>
+        </div>
+
+        <div class="detail-row">
+          <div class="d-left">
+            <span class="d-tag">数量</span>
+            <span class="d-val gray">0.215 USDT</span>
+          </div>
+          <div class="d-right">
+            <span class="d-label">委托价</span>
+            <span class="d-val gray">市价</span>
+          </div>
+        </div>
+      </div>
+
+      <div class="footer-btn">
+        <van-button block round color="#e6424a" class="close-btn">
+          平仓
+        </van-button>
+      </div>
+
+    </div>
+  </div>
+    </div>
+    </div>
+</template>
+
+<style scoped lang="less">
+
+/* 模拟手机视口 375px */
+.mobile-viewport {
+  width: 100%;
+  max-width: 375px;
+  margin: 0 auto;
+  background-color: #ffffff; /* 外部背景色 */
+  padding: 0 15px;
+  box-sizing: border-box;
+  font-family: -apple-system, BlinkMacSystemFont, Roboto, Arial, sans-serif;
+}
+
+/* 卡片主体 */
+.position-card {
+  background: #ffffff;
+  border-radius: 8px;
+  padding: 15px;
+  border: 1px solid #ebedf0;
+  position: relative;
+}
+
+/* --- Header --- */
+.card-header {
+  display: flex;
+  justify-content: space-between;
+  align-items: flex-start;
+  margin-bottom: 12px;
+}
+.coin-info { display: flex; align-items: center; }
+.btc-icon {
+  width: 32px;
+  height: 32px;
+  background: #f7931a;
+  border-radius: 50%;
+  color: white;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  font-weight: bold;
+  font-size: 18px;
+  margin-right: 8px;
+}
+.title-group { display: flex; flex-direction: column; justify-content: center; }
+.coin-name {
+  font-size: 16px;
+  font-weight: 600;
+  color: #333;
+  line-height: 1.2;
+  margin-bottom: 4px;
+}
+.tags { display: flex; align-items: center; }
+
+/* 标签样式 */
+.tag-sell {
+  background-color: #e6424a; /* 卖出红 */
+  color: white;
+  font-size: 11px;
+  padding: 1px 4px;
+  border-radius: 3px;
+  margin-right: 4px;
+  line-height: 1.4;
+}
+.tag-lever {
+  background-color: #9aa0a5; /* 灰色背景 */
+  color: #fff;
+  font-size: 11px;
+  padding: 1px 4px;
+  border-radius: 3px;
+  line-height: 1.4;
+}
+
+/* 时间 */
+.order-time { text-align: right; }
+.time-val { font-size: 12px; color: #666; }
+.time-lbl { font-size: 11px; color: #999; margin-top: 2px; }
+
+/* 分割线 */
+.divider { height: 1px; background-color: #f0f0f0; margin: 10px 0; }
+
+/* 盈亏行 */
+.pnl-row {
+  display: flex;
+  justify-content: space-between;
+  margin-bottom: 12px;
+  font-size: 13px;
+  align-items: center;
+}
+.pnl-row .label { color: #999; }
+.pnl-row .value { font-size: 15px; font-weight: 500; }
+
+/* 通用颜色 */
+.green-text { color: #00b45a; }
+.red-text { color: #e6424a; }
+.gray { color: #888; }
+
+/* 数据网格 */
+.data-grid { display: flex; flex-wrap: wrap; }
+.grid-item { width: 33.33%; }
+.align-left { text-align: left; }
+.align-center { text-align: center; }
+.align-right { text-align: right; }
+.mt-12 { margin-top: 12px; }
+
+.grid-item .label { font-size: 11px; color: #999; margin-bottom: 4px; }
+.grid-item .value { font-size: 13px; color: #333; font-weight: 500; }
+
+/* 操作栏 */
+.action-bar {
+  display: flex;
+  justify-content: space-between;
+  margin-top: 15px;
+  font-size: 12px;
+  color: #999;
+  align-items: center;
+}
+.tp-sl-text {
+  //text-decoration: underline;
+  text-decoration-color: #ccc;
+}
+.expand-btn { display: flex; align-items: center; cursor: pointer; }
+
+/* --- 详情面板 (关键还原部分) --- */
+.detail-panel {
+  margin-top: 8px;
+  padding-top: 4px;
+}
+.detail-row {
+  display: flex;
+  justify-content: space-between;
+  font-size: 12px;
+  margin-bottom: 6px;
+  line-height: 1.5;
+}
+.d-left { display: flex; align-items: center; }
+.d-right { display: flex; align-items: center; }
+
+/* 详情里的文字对齐 */
+.d-tag {
+  color: #999;
+  margin-right: 12px; /* 标签(止盈)和数值之间的间距 */
+  min-width: 24px; /* 保证标签对齐 */
+}
+.d-label {
+  color: #999;
+  margin-right: 8px;
+}
+.d-val {
+  font-family: Arial, sans-serif;
+}
+
+/* 底部按钮 */
+.footer-btn { margin-top: 15px; }
+.close-btn { font-size: 15px; letter-spacing: 1px; border: none; }
+
+.container {
+  background-color: #fff;
+  //min-height: 100vh;
+  padding: 15px;
+  font-family: sans-serif;
+}
+
+.top-nav {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  margin-bottom: 12px;
+}
+.tabs { display: flex; align-items: center; gap: 20px; }
+.tab-item {
+  font-size: 16px;
+  color: #969799;
+  position: relative;
+  padding-bottom: 6px;
+  font-weight: 600;
+}
+.tab-item.active {
+  color: #323233;
+  font-weight: 600;
+  font-size: 17px;
+}
+.active-line {
+  position: absolute;
+  bottom: 0;
+  left: 50%;
+  transform: translateX(-50%);
+  width: 20px;
+  height: 3px;
+  background-color: #323233;
+  border-radius: 2px;
+}
+.filter-all {
+  font-size: 16px;
+  color: #969799;
+  display: flex;
+  font-weight: 600;
+  align-items: center;
+}
+
+.position-card {
+  background: #ffffff;
+  border-radius: 12px;
+  padding: 16px;
+  /* 去掉投影,增加描边 */
+  box-shadow: none;
+  border: 1px solid #ebedf0;
+}
+
+.card-header {
+  display: flex;
+  justify-content: space-between;
+  align-items: flex-start;
+  margin-bottom: 12px;
+}
+.coin-info { display: flex; align-items: center; }
+.btc-icon {
+  width: 36px;
+  height: 36px;
+  background: #f7931a;
+  border-radius: 50%;
+  color: white;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  font-weight: bold;
+  font-size: 20px;
+  margin-right: 10px;
+}
+.coin-name {
+  font-size: 16px;
+  font-weight: bold;
+  color: #323233;
+  line-height: 1.2;
+  margin-bottom: 4px;
+}
+.tags { display: flex; align-items: center; }
+.tag-buy {
+  background-color: #00b45a;
+  color: white;
+  font-size: 11px;
+  padding: 1px 4px;
+  border-radius: 3px;
+  margin-right: 4px;
+}
+.tag-lever {
+  background-color: #f0f0f0;
+  color: #969799;
+  font-size: 11px;
+  padding: 1px 4px;
+  border-radius: 3px;
+}
+.order-time {
+  text-align: right;
+  font-size: 12px;
+  color: #969799;
+  line-height: 1.4;
+}
+.divider {
+  height: 1px;
+  background-color: #f5f6f7;
+  margin: 12px 0;
+}
+.pnl-row {
+  display: flex;
+  justify-content: space-between;
+  margin-bottom: 12px;
+  font-size: 13px;
+}
+.pnl-row .label { color: #969799; }
+.green-text { color: #00b45a; font-weight: 500; }
+
+.data-grid { display: flex; flex-wrap: wrap; }
+.grid-item { width: 33.33%; margin-bottom: 4px; }
+.mt-10 { margin-top: 12px; }
+.align-left { text-align: left; }
+.align-center { text-align: center; }
+.align-right { text-align: right; }
+.grid-item .label {
+  font-size: 12px;
+  color: #969799;
+  margin-bottom: 4px;
+}
+.grid-item .value {
+  font-size: 14px;
+  color: #323233;
+  font-weight: 500;
+}
+
+.action-bar {
+  display: flex;
+  justify-content: space-between;
+  margin-top: 16px;
+  font-size: 13px;
+  color: #969799;
+}
+.footer-btn { margin-top: 16px; }
+.close-btn { font-size: 16px; font-weight: 500; letter-spacing: 1px; }
+</style>

+ 340 - 0
src/views/bitcoin/components/sellOrder.vue

@@ -0,0 +1,340 @@
+<script setup>
+import {defineAsyncComponent, ref} from 'vue';
+const assetlessState = defineAsyncComponent(() => import("./assetlessState.vue"));
+const  position = defineAsyncComponent(() => import("./position.vue"));
+
+// 1. 模拟数据:为了还原图片,我们创建两个不同的订单对象
+const orders = ref([
+  {
+    id: 1,
+    symbol: 'BTC/USDT',
+    contractType: '永续',
+    side: 'buy', // 'buy' | 'sell'
+    leverage: '20X',
+    orderType: '市价',
+    amount: '0.215 USDT',
+    price: '0.215 USDT',
+    statusText: '止损',
+    triggerPrice: '标记价格>20',
+    time: '2025-11-04, 16:30',
+    stateText: '未触发',
+    canCancel: true // 显示红色撤单按钮
+  },
+  {
+    id: 2,
+    symbol: 'BTC/USDT',
+    contractType: '永续',
+    side: 'sell',
+    leverage: '20X',
+    orderType: '市价',
+    amount: '0.215 USDT',
+    price: '0.215 USDT',
+    statusText: '止盈',
+    triggerPrice: '标记价格>20',
+    time: '2025-11-04, 16:30',
+    stateText: '未触发',
+    canCancel: false // 显示灰色已完成/不可操作按钮
+  }
+]);
+
+// 当前选中的 Tab,默认选中 index 1 (当前委托)
+const currentTab = ref(0);
+const tabs = ['持有仓位(2)', '当前委托(2)'];
+
+// 按钮操作
+const handleCancel = (id) => {
+  console.log('撤单 ID:', id);
+  // 这里写撤单逻辑
+};
+</script>
+
+<template>
+  <div class="page-container">
+
+    <div class="tabs-header">
+      <div class="tabs-left">
+        <div
+          v-for="(tab, index) in tabs"
+          :key="index"
+          class="tab-item"
+          :class="{ active: currentTab === index }"
+          @click="currentTab = index"
+        >
+          {{ tab }}
+          <div class="active-line" v-if="currentTab === index"></div>
+        </div>
+      </div>
+
+      <div  class="tabs-right">
+        <span class="history-icon" style="align-content: center; display: flex; gap: 5px; align-items: center">
+          <img src="../../../assets/icon/bitcoin/shizhong.svg" alt=""> 全部</span>
+      </div>
+    </div>
+    <position v-if="currentTab==0"></position>
+
+    <div v-if="currentTab==1" class="order-list">
+      <div
+        v-for="item in orders"
+        :key="item.id"
+        class="order-card"
+      >
+        <div class="card-top">
+          <div class="coin-info">
+            <div class="coin-icon">₿</div>
+            <div class="coin-details">
+              <div class="coin-name">
+                {{ item.symbol }} <span class="contract-tag">{{ item.contractType }}</span>
+              </div>
+              <div class="tags-row">
+                <span class="tag" :class="item.side === 'buy' ? 'tag-buy' : 'tag-sell'">
+                  {{ item.side === 'buy' ? '买入' : '卖出' }}
+                </span>
+                <span class="tag tag-gray">逐仓 {{ item.leverage }}</span>
+                <span class="tag tag-gray">{{ item.orderType }}</span>
+              </div>
+            </div>
+          </div>
+
+          <button
+            v-if="item.canCancel"
+            class="btn-cancel"
+            @click="handleCancel(item.id)"
+          >
+            撤单
+          </button>
+          <div v-else class="badge-completed">
+            已完成
+          </div>
+        </div>
+
+        <div class="divider"></div>
+
+        <div class="card-body-grid">
+          <div class="grid-item align-left">
+            <div class="label">数量</div>
+            <div class="value">{{ item.amount }}</div>
+          </div>
+          <div class="grid-item align-center">
+            <div class="label">价格</div>
+            <div class="value">{{ item.price }}</div>
+          </div>
+          <div class="grid-item align-right">
+            <div class="label">状态</div>
+            <div class="value bold-text">{{ item.statusText }}</div>
+          </div>
+
+          <div class="grid-item align-left">
+            <div class="label">触发价格</div>
+            <div class="value">{{ item.triggerPrice }}</div>
+          </div>
+          <div class="grid-item align-center">
+            <div class="label">下单时间</div>
+            <div class="value">{{ item.time }}</div>
+          </div>
+          <div class="grid-item align-right">
+            <div class="label">状态</div>
+            <div class="value bold-text">{{ item.stateText }}</div>
+          </div>
+        </div>
+
+      </div>
+    </div>
+  </div>
+</template>
+
+<style lang="less" scoped>
+/* 基础设置 */
+.page-container {
+  width: 100%;
+  //min-height: 100vh;
+  //background-color: #FAFAFA; /* 浅灰背景 */
+  font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Helvetica Neue", Arial, sans-serif;
+}
+
+/* --- Tabs 样式 --- */
+.tabs-header {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  padding: 0 16px;
+  background-color: #fff;
+  height: 44px;
+  position: sticky;
+  top: 0;
+  z-index: 10;
+}
+
+.tabs-left {
+  display: flex;
+  gap: 24px;
+}
+
+.tab-item {
+  font-size: 15px;
+  color: #999;
+  position: relative;
+  cursor: pointer;
+  padding: 10px 0;
+}
+
+.tab-item.active {
+  color: #333;
+  font-weight: 600;
+  font-size: 16px;
+}
+
+.active-line {
+  position: absolute;
+  bottom: 0;
+  left: 50%;
+  transform: translateX(-50%);
+  width: 20px;
+  height: 3px;
+  background-color: #121212; /* 选中时的蓝色 */
+  border-radius: 2px;
+}
+
+.tabs-right {
+  color: #999;
+  font-size: 14px;
+  align-content: center;
+}
+
+/* --- 列表卡片样式 --- */
+.order-list {
+  padding: 15px;
+}
+
+.order-card {
+  background-color: #fff;
+  border-radius: 8px;
+  padding: 16px;
+  margin-bottom: 12px;
+  //box-shadow: 0 2px 8px rgba(0,0,0,0.02); /* 轻微阴影 */
+  border: 1px solid #f0f0f0;
+}
+
+/* 卡片头部 */
+.card-top {
+  display: flex;
+  justify-content: space-between;
+  align-items: flex-start;
+  margin-bottom: 12px;
+}
+
+.coin-info {
+  display: flex;
+  gap: 10px;
+}
+
+.coin-icon {
+  width: 36px;
+  height: 36px;
+  background-color: #F7931A; /* BTC 橙色 */
+  color: white;
+  border-radius: 50%;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  font-weight: bold;
+  font-size: 20px;
+}
+
+.coin-name {
+  font-size: 16px;
+  font-weight: 600;
+  color: #333;
+  margin-bottom: 4px;
+}
+
+.contract-tag {
+  font-size: 12px;
+  font-weight: normal;
+  color: #333;
+}
+
+.tags-row {
+  display: flex;
+  gap: 6px;
+}
+
+/* 标签体系 */
+.tag {
+  font-size: 11px;
+  padding: 1px 4px;
+  border-radius: 2px;
+  color: #fff;
+}
+
+.tag-buy {
+  background-color: #2EBD85; /* 涨/买入绿 */
+}
+
+.tag-sell {
+  background-color: #DF294A; /* 跌/卖出红 */
+}
+
+.tag-gray {
+  background-color: #F0F0F0;
+  color: #999;
+}
+
+/* 按钮体系 */
+.btn-cancel {
+  background-color: #DF294A;
+  color: white;
+  border: none;
+  padding: 6px 16px;
+  border-radius: 4px;
+  font-size: 13px;
+  cursor: pointer;
+}
+
+.badge-completed {
+  background-color: #aaa;
+  color: white;
+  padding: 6px 12px;
+  border-radius: 4px;
+  font-size: 13px;
+}
+
+.divider {
+  height: 1px;
+  background-color: #F5F5F5;
+  margin-bottom: 12px;
+}
+
+/* --- 数据网格 Grid --- */
+.card-body-grid {
+  display: grid;
+  /* 定义三列,左侧和中间自动,右侧靠边 */
+  grid-template-columns: 1fr 1fr 1fr;
+  row-gap: 12px; /* 行间距 */
+}
+
+.grid-item {
+  display: flex;
+  flex-direction: column;
+  gap: 4px;
+}
+
+/* 对齐方式 */
+.align-left { align-items: flex-start; }
+.align-center { align-items: center; }
+.align-right { align-items: flex-end; }
+
+.label {
+  font-size: 12px;
+  color: #999; /* 灰色标签 */
+}
+
+.value {
+  font-size: 13px;
+  color: #333;
+  font-family: Helvetica, Arial, sans-serif; /* 数字字体优化 */
+}
+
+.bold-text {
+  font-weight: 500;
+}
+</style>