1 line
26 KiB
JavaScript
1 line
26 KiB
JavaScript
"use strict";(self["webpackChunkvue_antd_pro"]=self["webpackChunkvue_antd_pro"]||[]).push([[500],{46500:function(t,e,a){a.d(e,{A:function(){return C}});var i=function(){var t=this,e=t._self._c;return e("div",{staticClass:"quick-trade-panel-root"},[e("a-drawer",{staticClass:"quick-trade-drawer",class:{"theme-dark":t.isDark},attrs:{title:null,width:400,visible:t.visible,closable:!1,bodyStyle:{padding:0},maskStyle:{background:"rgba(0,0,0,0.45)"}},on:{close:t.handleClose}},[e("div",{staticClass:"qt-header"},[e("div",{staticClass:"qt-header-left"},[e("a-icon",{staticClass:"qt-icon",attrs:{type:"thunderbolt",theme:"filled"}}),e("span",{staticClass:"qt-header-title"},[t._v(t._s(t.$t("quickTrade.title")))])],1),e("a-icon",{staticClass:"qt-close",attrs:{type:"close"},on:{click:t.handleClose}})],1),e("div",{staticClass:"qt-symbol-bar"},[e("div",{staticClass:"qt-symbol-selector"},[e("a-select",{staticStyle:{width:"100%"},attrs:{"show-search":"",placeholder:t.$t("quickTrade.selectSymbol"),"filter-option":!1,"not-found-content":t.symbolSearching?null:void 0,loading:t.symbolSearching},on:{search:t.handleSymbolSearch,change:t.handleSymbolChange,focus:t.handleSymbolFocus},model:{value:t.currentSymbol,callback:function(e){t.currentSymbol=e},expression:"currentSymbol"}},[e("a-icon",{staticStyle:{color:"#999"},attrs:{slot:"suffixIcon",type:"search"},slot:"suffixIcon"}),t._l(t.symbolSuggestions,function(a){return e("a-select-option",{key:a.value,attrs:{value:a.value}},[e("div",{staticClass:"qt-symbol-option"},[e("span",{staticClass:"qt-symbol-option-name"},[t._v(t._s(a.symbol))]),a.name?e("span",{staticClass:"qt-symbol-option-desc"},[t._v(t._s(a.name))]):t._e()])])})],2)],1),e("div",{staticClass:"qt-price-display",class:t.priceChangeClass},[e("span",{staticClass:"qt-current-price"},[t._v("$"+t._s(t.formatPrice(t.currentPrice)))])])]),e("div",{staticClass:"qt-section"},[e("div",{staticClass:"qt-label"},[t._v(t._s(t.$t("quickTrade.exchange"))+" "),e("span",{staticClass:"qt-crypto-hint"},[t._v(t._s(t.$t("quickTrade.cryptoOnly")))])]),e("a-select",{staticStyle:{width:"100%"},attrs:{placeholder:t.$t("quickTrade.selectExchange"),loading:t.credLoading,notFoundContent:t.$t("quickTrade.noExchange")},on:{change:t.onCredentialChange},model:{value:t.selectedCredentialId,callback:function(e){t.selectedCredentialId=e},expression:"selectedCredentialId"}},t._l(t.credentials,function(a){return e("a-select-option",{key:a.id,attrs:{value:a.id}},[e("span",{staticStyle:{"text-transform":"capitalize"}},[t._v(t._s(a.exchange_id||a.name))]),a.enable_demo_trading?e("a-tag",{staticStyle:{"margin-left":"6px"},attrs:{color:"orange",size:"small"}},[t._v(t._s(t.$t("quickTrade.testnetTag")))]):t._e(),a.market_type?e("a-tag",{staticStyle:{"margin-left":"6px"},attrs:{size:"small"}},[t._v(t._s(a.market_type))]):t._e()],1)}),1),t.credLoading||0!==t.credentials.length?t._e():e("div",{staticClass:"qt-no-cred-actions"},[e("a-button",{attrs:{type:"primary",block:"",size:"small"},on:{click:function(e){t.showAddExchangeModal=!0}}},[e("a-icon",{attrs:{type:"plus"}}),t._v(" "+t._s(t.$t("quickTrade.addAccountInline"))+" ")],1)],1),e("div",{staticClass:"qt-manage-link"},[e("a",{on:{click:function(e){e.preventDefault(),t.showAddExchangeModal=!0}}},[e("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"plus-circle"}}),t._v(t._s(t.$t("quickTrade.addAccountInline"))+" ")],1),e("span",{staticClass:"qt-manage-sep"},[t._v("·")]),e("router-link",{attrs:{to:"/profile?tab=exchange"}},[e("a-icon",{staticStyle:{"margin-right":"4px"},attrs:{type:"setting"}}),t._v(t._s(t.$t("profile.exchange.goToManage"))+" ")],1)],1),t.selectedCredentialId?e("div",{staticClass:"qt-balance"},[t.balanceLoading?[e("a-spin",{attrs:{size:"small"}}),e("span",{staticClass:"qt-balance-label qt-balance-loading-text"},[t._v(t._s(t.$t("quickTrade.available"))+"…")])]:t.balance.error?[e("span",{staticClass:"qt-balance-label"},[t._v(t._s(t.$t("quickTrade.available"))+":")]),e("span",{staticClass:"qt-balance-error",attrs:{title:t.balance.error}},[t._v("—")])]:[e("span",{staticClass:"qt-balance-label"},[t._v(t._s(t.$t("quickTrade.available"))+":")]),e("span",{staticClass:"qt-balance-value"},[t._v("$"+t._s(t.formatPrice(t.balance.available)))])]],2):t._e()],1),e("div",{staticClass:"qt-section"},[e("div",{staticClass:"qt-direction-toggle"},[e("div",{staticClass:"qt-dir-btn qt-dir-long",class:{active:"buy"===t.side},on:{click:function(e){return t.setTradeSide("buy")}}},[e("a-icon",{attrs:{type:"arrow-up"}}),t._v(" "+t._s(t.$t("quickTrade.long"))+" ")],1),e("div",{staticClass:"qt-dir-btn qt-dir-short",class:{active:"sell"===t.side,"qt-dir-disabled":!t.isSwapMode},on:{click:function(e){return t.setTradeSide("sell")}}},[e("a-icon",{attrs:{type:"arrow-down"}}),t._v(" "+t._s(t.$t("quickTrade.short"))+" ")],1)]),t.isSwapMode?t._e():e("div",{staticClass:"qt-hint-text qt-hint-inline"},[t._v(t._s(t.$t("quickTrade.shortDisabledSpot")))])]),e("div",{staticClass:"qt-section"},[e("a-radio-group",{staticStyle:{width:"100%"},attrs:{"button-style":"solid",size:"small"},model:{value:t.orderType,callback:function(e){t.orderType=e},expression:"orderType"}},[e("a-radio-button",{staticStyle:{width:"50%","text-align":"center"},attrs:{value:"market"}},[t._v(" "+t._s(t.$t("quickTrade.market"))+" ")]),e("a-radio-button",{staticStyle:{width:"50%","text-align":"center"},attrs:{value:"limit"}},[t._v(" "+t._s(t.$t("quickTrade.limit"))+" ")])],1)],1),"limit"===t.orderType?e("div",{staticClass:"qt-section"},[e("div",{staticClass:"qt-label"},[t._v(t._s(t.$t("quickTrade.limitPrice")))]),e("a-input-number",{staticStyle:{width:"100%"},attrs:{min:0,step:t.priceStep,precision:t.pricePrecision,placeholder:t.$t("quickTrade.enterPrice")},model:{value:t.limitPrice,callback:function(e){t.limitPrice=e},expression:"limitPrice"}})],1):t._e(),e("div",{staticClass:"qt-section"},[e("div",{staticClass:"qt-label"},[t._v(t._s(t.$t("quickTrade.amount"))+" (USDT)")]),e("a-input-number",{staticStyle:{width:"100%"},attrs:{min:1,step:10,precision:2,placeholder:t.$t("quickTrade.enterAmount")},model:{value:t.amount,callback:function(e){t.amount=e},expression:"amount"}}),e("div",{staticClass:"qt-quick-amounts"},t._l(t.quickAmountPcts,function(a){return e("a-button",{key:a,attrs:{size:"small",disabled:t.balance.available<=0},on:{click:function(e){return t.setAmountByPercent(a)}}},[t._v(" "+t._s(a)+"% ")])}),1)],1),e("div",{staticClass:"qt-section qt-card qt-mode-card"},[t.isSwapMode?[e("div",{staticClass:"qt-section-title-row"},[e("span",{staticClass:"qt-section-title"},[t._v(t._s(t.$t("quickTrade.leverage")))]),e("span",{staticClass:"qt-badge-contract"},[t._v(t._s(t.$t("quickTrade.contractBadge")))])]),e("div",{staticClass:"qt-leverage-row"},[e("a-slider",{staticStyle:{flex:"1","margin-right":"12px"},attrs:{min:1,max:125,marks:t.leverageMarks,tipFormatter:function(t){return t+"x"}},model:{value:t.leverage,callback:function(e){t.leverage=e},expression:"leverage"}}),e("a-input-number",{staticClass:"qt-leverage-input",attrs:{min:1,max:125,formatter:function(t){return"".concat(t,"x")},parser:function(t){return String(t).replace("x","")}},model:{value:t.leverage,callback:function(e){t.leverage=e},expression:"leverage"}})],1),e("div",{staticClass:"qt-label qt-label-spaced"},[t._v(t._s(t.$t("quickTrade.marginMode")))]),e("a-radio-group",{staticClass:"qt-margin-radio",attrs:{size:"small","button-style":"solid"},model:{value:t.marginMode,callback:function(e){t.marginMode=e},expression:"marginMode"}},[e("a-radio-button",{attrs:{value:"cross"}},[t._v(t._s(t.$t("quickTrade.crossMargin")))]),e("a-radio-button",{attrs:{value:"isolated"}},[t._v(t._s(t.$t("quickTrade.isolatedMargin")))])],1),e("div",{staticClass:"qt-hint-text"},[t._v(t._s(t.$t("quickTrade.marginModeHint")))])]:e("div",{staticClass:"qt-spot-banner"},[e("a-icon",{staticClass:"qt-spot-banner-icon",attrs:{type:"wallet"}}),e("div",{staticClass:"qt-spot-banner-text"},[e("div",{staticClass:"qt-spot-banner-title"},[t._v(t._s(t.$t("quickTrade.spotModeTitle")))]),e("div",{staticClass:"qt-hint-text"},[t._v(t._s(t.$t("quickTrade.spotModeHint")))])])],1)],2),e("div",{staticClass:"qt-section qt-card qt-tpsl-card"},[e("div",{staticClass:"qt-section-title-row"},[e("span",{staticClass:"qt-section-title"},[t._v(t._s(t.$t("quickTrade.tpsl")))]),e("span",{staticClass:"qt-optional-tag"},[t._v(t._s(t.$t("quickTrade.optional")))])]),e("div",{staticClass:"qt-tpsl-row"},[e("div",{staticClass:"qt-tpsl-item"},[e("span",{staticClass:"qt-label qt-tp-label"},[t._v(t._s(t.$t("quickTrade.tp")))]),e("a-input-number",{staticClass:"qt-input-full",attrs:{min:0,step:t.priceStep,precision:t.pricePrecision,placeholder:t.$t("quickTrade.tpPlaceholder")},model:{value:t.tpPrice,callback:function(e){t.tpPrice=e},expression:"tpPrice"}})],1),e("div",{staticClass:"qt-tpsl-item"},[e("span",{staticClass:"qt-label qt-sl-label"},[t._v(t._s(t.$t("quickTrade.sl")))]),e("a-input-number",{staticClass:"qt-input-full",attrs:{min:0,step:t.priceStep,precision:t.pricePrecision,placeholder:t.$t("quickTrade.slPlaceholder")},model:{value:t.slPrice,callback:function(e){t.slPrice=e},expression:"slPrice"}})],1)])]),e("div",{staticClass:"qt-submit-section"},[e("a-button",{staticClass:"qt-submit-btn",class:["buy"===t.side?"qt-btn-long":"qt-btn-short"],attrs:{type:"buy"===t.side?"primary":"danger",size:"large",block:"",loading:t.submitting,disabled:!t.canSubmit},on:{click:t.handleSubmit}},[e("a-icon",{attrs:{type:"buy"===t.side?"arrow-up":"arrow-down"}}),t._v(" "+t._s("buy"===t.side?t.$t("quickTrade.buyLong"):t.$t("quickTrade.sellShort"))+" "+t._s(t.symbol)+" ")],1)],1),e("div",{staticClass:"qt-position-section"},[e("div",{staticClass:"qt-section-header"},[e("a-icon",{attrs:{type:"wallet"}}),t._v(" "+t._s(t.$t("quickTrade.currentPosition"))+" ")],1),t.currentPosition?e("div",{staticClass:"qt-position-card",class:t.currentPosition.side},[e("div",{staticClass:"qt-pos-row"},[e("span",[t._v(t._s(t.$t("quickTrade.side")))]),e("a-tag",{attrs:{color:"long"===t.currentPosition.side?"#52c41a":"#f5222d",size:"small"}},[t._v(" "+t._s("long"===t.currentPosition.side?t.$t("quickTrade.long"):t.$t("quickTrade.short"))+" ")])],1),e("div",{staticClass:"qt-pos-row"},[e("span",[t._v(t._s(t.$t("quickTrade.posSize")))]),e("span",[t._v(t._s(t.currentPosition.size))])]),e("div",{staticClass:"qt-pos-row"},[e("span",[t._v(t._s(t.$t("quickTrade.entryPrice")))]),e("span",[t._v("$"+t._s(t.formatPrice(t.currentPosition.entry_price)))])]),t.currentPosition.mark_price?e("div",{staticClass:"qt-pos-row"},[e("span",[t._v(t._s(t.$t("quickTrade.markPrice")))]),e("span",[t._v("$"+t._s(t.formatPrice(t.currentPosition.mark_price)))])]):t._e(),t.currentPosition.leverage&&t.currentPosition.leverage>1?e("div",{staticClass:"qt-pos-row"},[e("span",[t._v(t._s(t.$t("quickTrade.leverage")))]),e("span",[t._v(t._s(t.currentPosition.leverage)+"x")])]):t._e(),e("div",{staticClass:"qt-pos-row"},[e("span",[t._v(t._s(t.$t("quickTrade.unrealizedPnl")))]),e("span",{class:t.currentPosition.unrealized_pnl>=0?"qt-green":"qt-red"},[t._v(" $"+t._s(t.formatPrice(t.currentPosition.unrealized_pnl))+" ")])]),e("a-button",{staticStyle:{"margin-top":"8px"},attrs:{type:"danger",size:"small",block:"",ghost:"",loading:t.closingPosition},on:{click:t.handleClosePosition}},[t._v(" "+t._s(t.$t("quickTrade.closePosition"))+" ")])],1):e("div",{staticClass:"qt-position-empty"},[e("a-icon",{staticClass:"qt-empty-icon",attrs:{type:"inbox"}}),e("span",{staticClass:"qt-empty-desc"},[t._v(t._s(t.$t("quickTrade.noPositionHint")))])],1)]),t.recentTrades.length>0?e("div",{staticClass:"qt-history-section"},[e("a-collapse",{attrs:{bordered:!1,activeKey:t.historyCollapsed?[]:["history"]},on:{change:t.handleHistoryCollapse}},[e("a-collapse-panel",{key:"history",style:t.collapseStyle,attrs:{showArrow:!1}},[e("template",{slot:"header"},[e("div",{staticClass:"qt-section-header",staticStyle:{margin:"0",padding:"0"}},[e("a-icon",{attrs:{type:"history"}}),t._v(" "+t._s(t.$t("quickTrade.recentTrades"))+" "),e("span",{staticClass:"qt-history-count"},[t._v("("+t._s(t.recentTrades.length)+")")])],1)]),e("div",{staticClass:"qt-trade-list"},t._l(t.recentTrades,function(a){return e("div",{key:a.id,staticClass:"qt-trade-item"},[e("div",{staticClass:"qt-trade-main"},[e("a-tag",{attrs:{color:"buy"===a.side?"#52c41a":"#f5222d",size:"small"}},[t._v(" "+t._s("buy"===a.side?"LONG":"SHORT")+" ")]),e("span",{staticClass:"qt-trade-symbol"},[t._v(t._s(a.symbol))]),e("span",{staticClass:"qt-trade-amount"},[t._v("$"+t._s(t.formatPrice(a.amount)))])],1),e("div",{staticClass:"qt-trade-meta"},[e("a-tag",{attrs:{color:"filled"===a.status?"#52c41a":"failed"===a.status?"#f5222d":"#faad14",size:"small"}},[t._v(" "+t._s(a.status)+" ")]),e("span",{staticClass:"qt-trade-time"},[t._v(t._s(t.formatTime(a.created_at)))])],1)])}),0)],2)],1)],1):t._e()]),e("exchange-account-modal",{attrs:{visible:t.showAddExchangeModal},on:{"update:visible":function(e){t.showAddExchangeModal=e},success:t.onExchangeAccountSaved}})],1)},s=[],r=a(81127),n=a(56252),c=a(76338),l=(a(74423),a(95353)),o=a(42430),d=a(40011),u=a(75769);function p(t){return(0,u.Ay)({url:"/api/quick-trade/place-order",method:"post",data:t})}function m(t){return(0,u.Ay)({url:"/api/quick-trade/balance",method:"get",params:t})}function v(t){return(0,u.Ay)({url:"/api/quick-trade/position",method:"get",params:t})}function h(t){return(0,u.Ay)({url:"/api/quick-trade/history",method:"get",params:t})}function b(t){return(0,u.Ay)({url:"/api/quick-trade/close-position",method:"post",data:t})}var g=a(35038),f=a(505),y={name:"QuickTradePanel",components:{ExchangeAccountModal:d.A},props:{visible:{type:Boolean,default:!1},symbol:{type:String,default:""},presetSide:{type:String,default:""},presetPrice:{type:Number,default:0},source:{type:String,default:"manual"},marketType:{type:String,default:"swap"}},data:function(){return{credentials:[],selectedCredentialId:void 0,credLoading:!1,balanceLoading:!1,balance:{available:0,total:0},side:"buy",orderType:"market",limitPrice:0,amount:100,leverage:5,marginMode:"cross",tpPrice:null,slPrice:null,submitting:!1,closingPosition:!1,currentPrice:0,currentPosition:null,recentTrades:[],historyCollapsed:!1,currentSymbol:"",symbolSuggestions:[],symbolSearching:!1,symbolSearchTimer:null,userId:null,quickAmountPcts:[10,25,50,75,100],leverageMarks:{1:"1x",5:"5x",10:"10x",25:"25x",50:"50x",100:"100x",125:"125x"},pollTimer:null,showAddExchangeModal:!1}},computed:(0,c.A)((0,c.A)({},(0,l.aH)({navTheme:function(t){return t.app.theme}})),{},{isDark:function(){return"dark"===this.navTheme||"realdark"===this.navTheme},isSwapMode:function(){return Number(this.leverage)>1},effectiveMarketType:function(){return this.isSwapMode?"swap":"spot"},priceStep:function(){return this.currentPrice>1e4?1:this.currentPrice>100?.1:this.currentPrice>1?.01:1e-4},pricePrecision:function(){return this.currentPrice>1e4?0:this.currentPrice>100?1:this.currentPrice>1?2:4},canSubmit:function(){return this.selectedCredentialId&&this.currentSymbol&&this.amount>0&&!this.submitting},priceChangeClass:function(){return""},collapseStyle:function(){return{background:"transparent",borderRadius:"4px",border:0,overflow:"hidden"}}}),watch:{visible:function(t){t?this.init():this.stopPolling()},symbol:function(t){t&&(this.currentSymbol=t)},currentSymbol:function(t){t&&(this.loadPrice(),this.selectedCredentialId&&this.loadPosition(),this.$emit("update:symbol",t))},selectedCredentialId:function(t){t&&this.currentSymbol&&this.loadPosition()},presetSide:function(t){t&&(this.side=t)},presetPrice:function(t){t>0&&(this.currentPrice=t,this.limitPrice=t)},leverage:function(){var t=this;this.isSwapMode||"sell"!==this.side||(this.side="buy"),this.$nextTick(function(){t.selectedCredentialId&&(t.loadBalance(),t.loadPosition())})}},methods:{setTradeSide:function(t){"sell"!==t||this.isSwapMode?this.side=t:this.$message.warning(this.$t("quickTrade.shortDisabledSpot"))},init:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){return(0,r.A)().w(function(e){while(1)switch(e.n){case 0:return t.currentSymbol=t.symbol||"",t.presetSide&&(t.side=t.presetSide),"spot"===t.marketType&&(t.leverage=1),t.presetPrice>0&&(t.currentPrice=t.presetPrice,t.limitPrice=t.presetPrice),e.n=1,t.loadCredentials();case 1:return e.n=2,t.loadUserInfo();case 2:return e.n=3,t.loadWatchlistSymbols();case 3:if(!t.currentSymbol){e.n=4;break}return e.n=4,t.loadPrice();case 4:if(!t.selectedCredentialId||!t.currentSymbol){e.n=5;break}return e.n=5,t.loadPosition();case 5:t.loadHistory(),t.startPolling();case 6:return e.a(2)}},e)}))()},loadUserInfo:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a,i,s,n;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(e.p=0,i=t.$store,s=(null===i||void 0===i||null===(a=i.getters)||void 0===a?void 0:a.userInfo)||{},!s||!s.id){e.n=1;break}return t.userId=s.id,e.a(2);case 1:return e.n=2,(0,f.ug)();case 2:n=e.v,n&&1===n.code&&n.data&&(t.userId=n.data.id,i&&i.commit("SET_INFO",n.data)),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.a(2)}},e,null,[[0,3]])}))()},loadWatchlistSymbols:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a,i;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.userId){e.n=2;break}return e.n=1,t.loadUserInfo();case 1:if(t.userId){e.n=2;break}return e.a(2);case 2:return e.p=2,e.n=3,(0,g.Qo)({userid:t.userId});case 3:a=e.v,a&&1===a.code&&a.data&&(i=(a.data||[]).filter(function(t){return"crypto"===(t.market||"").toLowerCase()}).map(function(t){return{value:t.symbol||"",symbol:t.symbol||"",name:t.name||""}}).filter(function(t){return t.value}),t.symbolSuggestions=i),e.n=5;break;case 4:e.p=4,e.v;case 5:return e.a(2)}},e,null,[[2,4]])}))()},handleSymbolSearch:function(t){var e=this;this.symbolSearchTimer&&clearTimeout(this.symbolSearchTimer),t&&""!==t.trim()?this.symbolSearchTimer=setTimeout((0,n.A)((0,r.A)().m(function a(){var i;return(0,r.A)().w(function(a){while(1)switch(a.p=a.n){case 0:return e.symbolSearching=!0,a.p=1,a.n=2,(0,g._3)({market:"Crypto",keyword:t.trim(),limit:20});case 2:i=a.v,i&&1===i.code&&i.data?e.symbolSuggestions=(i.data.items||i.data||[]).map(function(t){return{value:t.symbol||"",symbol:t.symbol||"",name:t.name||""}}).filter(function(t){return t.value}):e.symbolSuggestions=[],a.n=4;break;case 3:a.p=3,a.v,e.symbolSuggestions=[];case 4:return a.p=4,e.symbolSearching=!1,a.f(4);case 5:return a.a(2)}},a,null,[[1,3,4,5]])})),300):this.loadWatchlistSymbols()},handleSymbolChange:function(t){t&&t!==this.currentSymbol&&(this.currentSymbol=t,this.loadPrice(),this.selectedCredentialId&&this.loadPosition(),this.$emit("update:symbol",t))},loadPrice:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a,i;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.currentSymbol){e.n=1;break}return t.currentPrice=0,e.a(2);case 1:return e.p=1,e.n=2,(0,u.Ay)({url:"/api/market/price",method:"get",params:{market:"Crypto",symbol:t.currentSymbol}});case 2:a=e.v,a&&1===a.code&&a.data&&(i=parseFloat(a.data.price||0),i>0&&(t.currentPrice=i,0!==t.limitPrice&&t.limitPrice!==t.presetPrice||(t.limitPrice=i))),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.a(2)}},e,null,[[1,3]])}))()},handleSymbolFocus:function(){0===this.symbolSuggestions.length&&this.loadWatchlistSymbols()},loadCredentials:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a,i,s;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return t.credLoading=!0,e.p=1,e.n=2,(0,o.IA)();case 2:a=e.v,1===a.code&&a.data&&(i=a.data.items||a.data||[],s=["ibkr","mt5"],t.credentials=i.filter(function(t){var e=(t.exchange_id||t.name||"").toLowerCase();return!s.includes(e)}),!t.selectedCredentialId&&t.credentials.length>0&&(t.selectedCredentialId=t.credentials[0].id,t.onCredentialChange(t.selectedCredentialId))),e.n=4;break;case 3:e.p=3,e.v;case 4:return e.p=4,t.credLoading=!1,e.f(4);case 5:return e.a(2)}},e,null,[[1,3,4,5]])}))()},onExchangeAccountSaved:function(t){var e=this;return(0,n.A)((0,r.A)().m(function a(){var i,s;return(0,r.A)().w(function(a){while(1)switch(a.n){case 0:return i=e.selectedCredentialId,a.n=1,e.loadCredentials();case 1:if(s=t&&(t.id||t.credential_id),!s){a.n=3;break}return e.selectedCredentialId=s,a.n=2,e.onCredentialChange(s);case 2:a.n=4;break;case 3:if(i||1!==e.credentials.length){a.n=4;break}return e.selectedCredentialId=e.credentials[0].id,a.n=4,e.onCredentialChange(e.selectedCredentialId);case 4:return a.a(2)}},a)}))()},onCredentialChange:function(t){var e=this;return(0,n.A)((0,r.A)().m(function a(){return(0,r.A)().w(function(a){while(1)switch(a.n){case 0:return e.selectedCredentialId=t,a.n=1,e.loadBalance();case 1:return a.n=2,e.loadPosition();case 2:return a.a(2)}},a)}))()},loadBalance:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a,i;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.selectedCredentialId){e.n=1;break}return e.a(2);case 1:return t.balanceLoading=!0,e.p=2,e.n=3,m({credential_id:t.selectedCredentialId,market_type:t.effectiveMarketType});case 3:a=e.v,1===a.code&&a.data?t.balance=(0,c.A)({available:0,total:0},a.data):t.balance={available:0,total:0},e.n=5;break;case 4:e.p=4,i=e.v,t.balance={available:0,total:0,error:String(i.message||i)};case 5:return e.p=5,t.balanceLoading=!1,e.f(5);case 6:return e.a(2)}},e,null,[[2,4,5,6]])}))()},loadPosition:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.selectedCredentialId&&t.currentSymbol){e.n=1;break}return e.a(2);case 1:return e.p=1,e.n=2,v({credential_id:t.selectedCredentialId,symbol:t.currentSymbol,market_type:t.effectiveMarketType});case 2:if(a=e.v,!(1===a.code&&a.data&&a.data.positions&&a.data.positions.length>0)){e.n=3;break}return t.currentPosition=a.data.positions[0],e.a(2,!0);case 3:return t.currentPosition=null,e.a(2,!1);case 4:e.n=6;break;case 5:return e.p=5,e.v,t.currentPosition=null,e.a(2,!1);case 6:return e.a(2)}},e,null,[[1,5]])}))()},loadPositionWithRetry:function(){var t=arguments,e=this;return(0,n.A)((0,r.A)().m(function a(){var i,s,n,c;return(0,r.A)().w(function(a){while(1)switch(a.n){case 0:return i=t.length>0&&void 0!==t[0]?t[0]:3,s=t.length>1&&void 0!==t[1]?t[1]:2e3,a.n=1,e.loadPosition();case 1:if(n=a.v,!n){a.n=2;break}return a.a(2);case 2:c=0;case 3:if(!(c<i)){a.n=7;break}return a.n=4,new Promise(function(t){return setTimeout(t,s)});case 4:return a.n=5,e.loadPosition();case 5:if(n=a.v,!n){a.n=6;break}return a.a(2);case 6:c++,a.n=3;break;case 7:return a.a(2)}},a)}))()},loadHistory:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:return e.p=0,e.n=1,h({limit:5});case 1:a=e.v,1===a.code&&a.data&&(t.recentTrades=a.data.trades||[]),e.n=3;break;case 2:e.p=2,e.v;case 3:return e.a(2)}},e,null,[[0,2]])}))()},setAmountByPercent:function(t){this.balance.available>0&&(this.amount=Math.floor(this.balance.available*t/100*100)/100)},handleSubmit:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a,i,s;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.canSubmit){e.n=1;break}return e.a(2);case 1:return t.submitting=!0,e.p=2,a={credential_id:t.selectedCredentialId,symbol:t.currentSymbol,side:t.side,order_type:t.orderType,amount:t.amount,price:"limit"===t.orderType?t.limitPrice:0,leverage:t.isSwapMode?t.leverage:1,market_type:t.effectiveMarketType,margin_mode:t.isSwapMode?t.marginMode:void 0,tp_price:t.tpPrice||0,sl_price:t.slPrice||0,source:t.source},e.n=3,p(a);case 3:if(i=e.v,1!==i.code){e.n=7;break}return t.$emit("order-success",i.data),e.n=4,t.loadBalance();case 4:return e.n=5,t.loadHistory();case 5:return e.n=6,t.loadPositionWithRetry();case 6:e.n=8;break;case 7:t.$message.error(i.msg||t.$t("quickTrade.orderFailed"));case 8:e.n=10;break;case 9:e.p=9,s=e.v,t.$message.error(s.message||t.$t("quickTrade.orderFailed"));case 10:return e.p=10,t.submitting=!1,e.f(10);case 11:return e.a(2)}},e,null,[[2,9,10,11]])}))()},handleClosePosition:function(){var t=this;return(0,n.A)((0,r.A)().m(function e(){var a,i,s;return(0,r.A)().w(function(e){while(1)switch(e.p=e.n){case 0:if(t.currentPosition&&t.selectedCredentialId){e.n=1;break}return e.a(2);case 1:return t.closingPosition=!0,e.p=2,a={credential_id:t.selectedCredentialId,symbol:t.currentSymbol,market_type:t.effectiveMarketType,size:0,source:"manual"},e.n=3,b(a);case 3:if(i=e.v,1!==i.code){e.n=6;break}return t.$message.success(t.$t("quickTrade.positionClosed")),e.n=4,t.loadBalance();case 4:return e.n=5,t.loadHistory();case 5:t.currentPosition=null,setTimeout((0,n.A)((0,r.A)().m(function e(){return(0,r.A)().w(function(e){while(1)switch(e.n){case 0:return e.n=1,t.loadPosition();case 1:return e.a(2)}},e)})),2e3),e.n=7;break;case 6:t.$message.error(i.msg||t.$t("quickTrade.orderFailed"));case 7:e.n=9;break;case 8:e.p=8,s=e.v,t.$message.error(s.message||t.$t("quickTrade.orderFailed"));case 9:return e.p=9,t.closingPosition=!1,e.f(9);case 10:return e.a(2)}},e,null,[[2,8,9,10]])}))()},startPolling:function(){var t=this;this.stopPolling(),this.pollTimer=setInterval(function(){t.currentSymbol&&t.loadPrice(),t.selectedCredentialId&&t.currentSymbol&&(t.loadBalance(),t.loadPosition())},1e4)},stopPolling:function(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)},handleClose:function(){this.$emit("close"),this.$emit("update:visible",!1)},handleHistoryCollapse:function(t){this.historyCollapsed=!t.includes("history")},formatPrice:function(t){var e=parseFloat(t||0);return Math.abs(e)>=1e4?e.toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:0}):Math.abs(e)>=100?e.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2}):Math.abs(e)>=1?e.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:4}):e.toLocaleString("en-US",{minimumFractionDigits:4,maximumFractionDigits:6})},formatTime:function(t){if(!t)return"";var e=new Date(t),a=function(t){return String(t).padStart(2,"0")};return"".concat(a(e.getMonth()+1),"-").concat(a(e.getDate())," ").concat(a(e.getHours()),":").concat(a(e.getMinutes()))}},beforeDestroy:function(){this.stopPolling()}},_=y,k=a(845),q=(0,k.A)(_,i,s,!1,null,"75b64b85",null),C=q.exports}}]); |