| | |
| | | <div class="tab_class"> |
| | | <div class="scroll_tab"> |
| | | <div class="tab_items" v-for="(item, index) in tabsClassArr" :key="index" |
| | | :class="index==0?'mrt':''" |
| | | @click="handleTabsItem(item, index)"> |
| | | <span :class="tabsItemIndex === index ? 'active' : ''">{{ item.name }}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="kai_mess"> |
| | | <div class="kai_mess" v-show="isToken==''" @click="$router.push('/login')"> |
| | | <div class="left_identity_img"> |
| | | <img src="../../assets/img/shenfen2.png" alt /> |
| | | </div> |
| | | <div class="text"> |
| | | <div class="text" > |
| | | <span>{{ '开户即可入金交易' }}</span> |
| | | </div> |
| | | <div class="right_go"> |
| | |
| | | <span>{{ '涨跌幅' }}</span> |
| | | </div> |
| | | </div> |
| | | <div class="list"> |
| | | <div class="list" :class="isToken==''?'listHeight':'listHeights'"> |
| | | <van-list |
| | | v-model="loading" |
| | | :finished="finished" |
| | | finished-text="没有更多了" |
| | | @load="onLoad" |
| | | > |
| | | <div class="list_items"> |
| | | <div class="item" v-for="(item, index) in listArr" :key="index"> |
| | | <div class="left_title"> |
| | | <div class="tp"> |
| | | <span class="collection" @click="handleCollectionClick(item)"> |
| | | <span class="shu"></span> |
| | | <span class="collection" @click="options(item)"> |
| | | <span class="shu" :class="item.isOption == '1'?'shublue':''"></span> |
| | | </span> |
| | | <span class="title_color">{{ tabsItemIndex == 3 ? item.futuresName : item.indexName }}</span> |
| | | <span class="title_color">{{ tabsItemIndex == 3 ? item.futuresName : tabsItemIndex == 2?item.name : tabsItemIndex == 0?item.name :item.indexName }}</span> |
| | | </div> |
| | | <div class="bt"> |
| | | <span>{{ tabsItemIndex == 3 ? item.futuresCode : item.indexCode }}</span> |
| | | <span>{{ tabsItemIndex == 3 ? item.futuresCode : tabsItemIndex == 2?item.code : tabsItemIndex == 0?item.code : item.indexCode }}</span> |
| | | |
| | | </div> |
| | | </div> |
| | | <div class="center_price"> |
| | | <div class="tp"> |
| | | <span class="price_color">{{ tabsItemIndex == 3 ? Number(item.nowPrice).toFixed(2) : item.currentPoint |
| | | <span class="price_color" v-if="tabsItemIndex == 0||tabsItemIndex == 2" :class="item.hcrate>0?'green':'red'">{{ item.nowPrice |
| | | }}</span> |
| | | <span class="price_color" v-else>{{ tabsItemIndex == 3 ? Number(item.nowPrice).toFixed(2) : item.currentPoint |
| | | }}</span> |
| | | </div> |
| | | <div class="bt"> |
| | | <span>{{ item.addTime | gettime }}</span> |
| | | <span v-if="tabsItemIndex == 3 ||tabsItemIndex == 1">{{'手续费:'+item.transFee}}</span> |
| | | <span v-else>{{ item.today_min }}</span> |
| | | </div> |
| | | </div> |
| | | <div class="right_bs"> |
| | | <div class="tp"> |
| | | <span class="price_color">{{ tabsItemIndex == 3 ? item.coinRate : item.floatRate + '%' }}</span> |
| | | <span class="price_color" v-if="tabsItemIndex == 0||tabsItemIndex == 2" :class="item.hcrate>0?'green':'red'">{{ item.hcrate }}</span> |
| | | <span class="price_color" v-if="tabsItemIndex == 1" :class="item.floatRate>0?'green':'red'">{{ item.floatRate + '%' }}</span> |
| | | <span class="price_color" v-if="tabsItemIndex == 3" :class="((item.nowPrice - item.lastClose) / item.lastClose * 100).toFixed(2)>0?'green':'red'" >{{ item.lastClose == "" ? 0.00 : ((Number(item.nowPrice) - Number(item.lastClose)) / Number(item.lastClose) * 100).toFixed(2) +'%' }}</span> |
| | | </div> |
| | | <div class="bt"></div> |
| | | <div class="bt"> |
| | | <div v-if="tabsItemIndex != 1&&tabsItemIndex != 3">{{item.stock_type.toUpperCase()}}</div> |
| | | <!-- class="codeIcon" --> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | </van-list> |
| | | |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <span>{{ '余额' }}</span> |
| | | </div> |
| | | <div class="right"> |
| | | <span>{{ '¥ 49,656.79' }}</span> |
| | | <span style="white-space: nowarp;" v-show="tabsItemIndex == 1" >{{ '¥ '+$store.state.userInfo.userIndexAmt }}</span> |
| | | <span style="white-space: nowarp;" v-show="tabsItemIndex == 0">{{ '¥ '+$store.state.userInfo.userAmt }}</span> |
| | | <span style="white-space: nowarp;" v-show="tabsItemIndex == 2">{{ '¥ '+$store.state.userInfo.userAmt }}</span> |
| | | <span style="white-space: nowarp;" v-show="tabsItemIndex == 3">{{ '¥ '+$store.state.userInfo.userFuturesAmt }}</span> |
| | | </div> |
| | | <div class="sanjiao"> |
| | | <img src="../../assets/img/xiala.png" alt /> |
| | | <img :class="dialogFlag?'xuanz':''" style="transition: all 0.5s;" src="../../assets/img/xiala.png" alt /> |
| | | </div> |
| | | </div> |
| | | <div class="bottom_balance"> |
| | |
| | | <div class="cards"> |
| | | <div class="card_item"> |
| | | <div class="tops_title"> |
| | | <div><span>{{ '净值' }}</span></div> |
| | | <div><span>{{ '总资产' }}</span></div> |
| | | </div> |
| | | <div class="bottom_price"> |
| | | <div><span>{{ '49,863.60' }}</span></div> |
| | | <div><p v-if="this.$store.state.settingForm.indexDisplay && !this.$store.state.settingForm.futuresDisplay " |
| | | class="account">¥{{$store.state.hide?'****':Number($store.state.userInfo.userAmt + |
| | | $store.state.userInfo.userIndexAmt).toFixed(2)}}</p> |
| | | <p v-else-if="!this.$store.state.settingForm.indexDisplay && this.$store.state.settingForm.futuresDisplay" |
| | | class="account">¥{{$store.state.hide?'****':Number($store.state.userInfo.userAmt + |
| | | $store.state.userInfo.userFuturesAmt).toFixed(2)}}</p> |
| | | <p v-else-if="!this.$store.state.settingForm.indexDisplay && !this.$store.state.settingForm.futuresDisplay" |
| | | class="account">¥{{$store.state.hide?'****':Number($store.state.userInfo.userAmt).toFixed(2)}}</p> |
| | | <p v-else-if="this.$store.state.settingForm.indexDisplay && this.$store.state.settingForm.futuresDisplay" |
| | | class="account">¥{{$store.state.hide?'****':Number($store.state.userInfo.userAmt + |
| | | $store.state.userInfo.userIndexAmt + $store.state.userInfo.userFuturesAmt).toFixed(2)}}</p> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="card_item"> |
| | | <div class="tops_title"> |
| | | <div><span>{{ '强平线' }}</span></div> |
| | | </div> |
| | | <div class="bottom_price"> |
| | | <div><span v-show="tabsItemIndex == 1">{{$store.state.hide?'****':Number(($store.state.userInfo.enableIndexAmt + $store.state.userInfo.allIndexFreezAmt) * indexSettingInfo.forceSellPercent).toFixed(2)}}</span> |
| | | <span v-show="tabsItemIndex == 0">{{$store.state.hide?'****':Number(($store.state.userInfo.enableAmt + $store.state.userInfo.allFreezAmt) * settingInfo.forceStopPercent).toFixed(2)}} </span> |
| | | <span v-show="tabsItemIndex == 2">{{$store.state.hide?'****':Number(($store.state.userInfo.enableAmt + $store.state.userInfo.allFreezAmt) * settingInfo.forceStopPercent).toFixed(2)}} </span> |
| | | <span v-show="tabsItemIndex == 3">{{$store.state.hide?'****':Number(($store.state.userInfo.enableFuturesAmt + $store.state.userInfo.allFuturesFreezAmt) * futuresSettingInfo.forceSellPercent).toFixed(2)}}</span></div> |
| | | </div> |
| | | </div> |
| | | <div class="card_item"> |
| | | <div class="tops_title"> |
| | | <div><span>{{tabsItemIndex == 1? '指数':tabsItemIndex == 0?'沪深':tabsItemIndex == 2?'科创':tabsItemIndex == 3?'期货':''}}</span><span>{{ '资产' }}</span></div> |
| | | </div> |
| | | <div class="bottom_price"> |
| | | <div><span v-show="tabsItemIndex == 1">{{ '¥ '+$store.state.userInfo.userIndexAmt }}</span> |
| | | <span v-show="tabsItemIndex == 0">{{ '¥ '+$store.state.userInfo.userAmt }}</span> |
| | | <span v-show="tabsItemIndex == 2">{{ '¥ '+$store.state.userInfo.userAmt }}</span> |
| | | <span v-show="tabsItemIndex == 3">{{ '¥ '+$store.state.userInfo.userFuturesAmt }}</span></div> |
| | | </div> |
| | | </div> |
| | | <div class="card_item"> |
| | | <div class="tops_title"> |
| | | <div><span>{{ '可用资金' }}</span></div> |
| | | </div> |
| | | <div class="bottom_price"> |
| | | <div><span v-show="tabsItemIndex == 1">{{ '¥ '+$store.state.userInfo.enableIndexAmt }}</span> |
| | | <span v-show="tabsItemIndex == 0">{{ '¥ '+$store.state.userInfo.enableAmt }}</span> |
| | | <span v-show="tabsItemIndex == 2">{{ '¥ '+$store.state.userInfo.enableAmt }}</span> |
| | | <span v-show="tabsItemIndex == 3">{{ '¥ '+$store.state.userInfo.enableFuturesAmt }}</span></div> |
| | | </div> |
| | | </div> |
| | | <div class="card_item"> |
| | | <div class="tops_title"> |
| | | <div><span>{{ '冻结保证金' }}</span></div> |
| | | </div> |
| | | <div class="bottom_price"> |
| | | <div><span v-show="tabsItemIndex == 1">{{ '¥ '+$store.state.userInfo.allIndexFreezAmt }}</span> |
| | | <span v-show="tabsItemIndex == 0">{{ '¥ '+$store.state.userInfo.allFreezAmt }}</span> |
| | | <span v-show="tabsItemIndex == 2">{{ '¥ '+$store.state.userInfo.allFreezAmt }}</span> |
| | | <span v-show="tabsItemIndex == 3">{{ '¥ '+$store.state.userInfo.allFuturesFreezAmt }}</span></div> |
| | | </div> |
| | | </div> |
| | | <div class="card_item"> |
| | | <div class="tops_title"> |
| | | <div><span>{{ '持仓总盈亏' }}</span></div> |
| | | </div> |
| | | <div class="bottom_price"> |
| | | <div><span :class="$store.state.userInfo.allIndexProfitAndLose>0?' red':$store.state.userInfo.allIndexProfitAndLose<0?' green':''" v-show="tabsItemIndex == 1">{{ '¥ '+$store.state.userInfo.allIndexProfitAndLose }}</span> |
| | | <span :class="$store.state.userInfo.allProfitAndLose>0?' red':$store.state.userInfo.allProfitAndLose<0?' green':''" v-show="tabsItemIndex == 0">{{ '¥ '+$store.state.userInfo.allProfitAndLose }}</span> |
| | | <span :class="$store.state.userInfo.allProfitAndLose>0?' red':$store.state.userInfo.allProfitAndLose<0?' green':''" v-show="tabsItemIndex == 2">{{ '¥ '+$store.state.userInfo.allProfitAndLose }}</span> |
| | | <span :class="$store.state.userInfo.allFuturesProfitAndLose>0?'red':$store.state.userInfo.allFuturesProfitAndLose<0?' green':''" v-show="tabsItemIndex == 3">{{ '¥ '+Number($store.state.userInfo.allFuturesProfitAndLose).toFixed(2)}}</span></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | pageNum: 1, |
| | | stockPlate: "", |
| | | alertShow: false, |
| | | isToken:'', |
| | | elType: "warning", |
| | | indexSettingInfo: {}, |
| | | futuresSettingInfo:{}, |
| | | settingInfo:{}, |
| | | loading: false, |
| | | finished: false, |
| | | texts: "", |
| | | tabsClassArr: [ |
| | | { |
| | | name: "指数", |
| | | { |
| | | name: "沪深京", |
| | | type: 0 |
| | | }, |
| | | { |
| | | name: "沪深", |
| | | name: "指数", |
| | | type: 1 |
| | | }, |
| | | |
| | | { |
| | | name: "科创", |
| | | type: 2 |
| | |
| | | } |
| | | ], |
| | | tabsItemIndex: 0, |
| | | listArr: [] |
| | | listArr: [], |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.getListMarket(); |
| | | |
| | | this.getStock(); |
| | | this.isToken=window.localStorage.getItem('USERTOKEN') |
| | | this.getUserInfo() |
| | | this.getIndexSettingInfo() |
| | | this.getSettingInfo() |
| | | this.getFuturesSetting() |
| | | }, |
| | | methods: { |
| | | closeAlert() { |
| | | this.alertShow = false; |
| | | }, |
| | | async getUserInfo () { |
| | | // 获取用户信息 |
| | | // let showcookie = this.getCookie('USER_TOKEN'); |
| | | let data = await api.getUserInfo() |
| | | if (data.status === 0) { |
| | | // this.getProductSetting() |
| | | this.$store.state.userInfo = data.data |
| | | } else { |
| | | Toast(data.msg) |
| | | } |
| | | this.$store.state.user = this.user |
| | | }, |
| | | async getIndexSettingInfo () { |
| | | // 网站设置信息 指数 |
| | | let data = await api.getIndexSetting() |
| | | if (data.status === 0) { |
| | | // 成功 |
| | | this.indexSettingInfo = data.data |
| | | } else { |
| | | Toast(data.msg) |
| | | } |
| | | }, |
| | | async getFuturesSetting () { |
| | | // 网站设置信息 期货 |
| | | let data = await api.getFuturesSetting() |
| | | if (data.status === 0) { |
| | | // 成功 |
| | | this.futuresSettingInfo = data.data |
| | | } else { |
| | | Toast(data.msg) |
| | | } |
| | | }, |
| | | async getSettingInfo () { |
| | | let data = await api.getSetting() |
| | | if (data.status === 0) { |
| | | // 成功 |
| | | this.settingInfo = data.data |
| | | } else { |
| | | Toast(data.msg) |
| | | } |
| | | }, |
| | | async getListMarket() { |
| | | |
| | |
| | | } |
| | | }, |
| | | async getStock() { |
| | | //沪深 |
| | | let opt = { |
| | | pageNum: this.pageNum, |
| | | pageSize: 15, |
| | | stockPlate: this.stockPlate, |
| | | } |
| | | let data = await api.getListMarket(opt) |
| | | let data = await api.getStock(opt) |
| | | if (data.status === 0) { |
| | | |
| | | data.data.forEach(element => { |
| | | data.data.list.forEach(element => { |
| | | this.listArr.push(element) |
| | | }) |
| | | } else { |
| | |
| | | pageNum: this.pageNum, |
| | | pageSize: 15 |
| | | } |
| | | let data = await api.getHomeFutures(opt) |
| | | let data = await api.getListFutures(opt) |
| | | if (data.status === 0) { |
| | | console.log(this.tabsItemIndex) |
| | | this.listArr = data.data |
| | |
| | | }, |
| | | handleTabsClick(item, index) { |
| | | if (index == 0) { |
| | | this.$refs['topTitle'].style.height = '1.2821rem' |
| | | if(this.dialogFlag){ |
| | | this.$refs['topTitle'].style.height = '1.2821rem' |
| | | setTimeout(() => { |
| | | this.dialogFlag = false; |
| | | this.tabsIndex = index; |
| | | }, 800); |
| | | }else{ |
| | | this.tabsIndex = index; |
| | | } |
| | | } else { |
| | | this.tabsIndex = index; |
| | | } |
| | | |
| | | |
| | | }, |
| | | handleTabsItem(item, index) { |
| | | this.tabsItemIndex = index; |
| | | switch (item.type) { |
| | | case 0: |
| | | case 1: |
| | | this.listArr = []; |
| | | this.getListMarket(); |
| | | break; |
| | | case 1: |
| | | case 0: |
| | | this.stockPlate = "" |
| | | this.listArr = []; |
| | | this.getStock(); |
| | |
| | | break; |
| | | } |
| | | }, |
| | | async options(val) { |
| | | if(val.isOption=='1'){ |
| | | let data = await api.delOption({ code: val.indexCode }) |
| | | if (data.status === 0) { |
| | | switch (this.tabsItemIndex) { |
| | | case 1: |
| | | this.listArr = []; |
| | | this.getListMarket(); |
| | | break; |
| | | case 0: |
| | | this.stockPlate = "" |
| | | this.listArr = []; |
| | | this.getStock(); |
| | | break; |
| | | case 2: |
| | | this.stockPlate = "科创" |
| | | this.listArr = []; |
| | | this.getStock(); |
| | | break; |
| | | case 3: |
| | | this.listArr = []; |
| | | this.getFutures(); |
| | | break; |
| | | } |
| | | this.refreshList() |
| | | } else { |
| | | |
| | | } |
| | | }else{ |
| | | var codes=""; |
| | | switch (this.tabsItemIndex) { |
| | | |
| | | case 0: |
| | | codes = val.code; |
| | | break; |
| | | |
| | | case 1: |
| | | codes = val.indexGid; |
| | | break; |
| | | case 2: |
| | | codes = val.code; |
| | | break; |
| | | case 3: |
| | | codes = val.futuresGid; |
| | | break; |
| | | |
| | | default: |
| | | break; |
| | | } |
| | | |
| | | let data = await api.addOption({ code: codes }); |
| | | if (data.status === 0) { |
| | | switch (this.tabsItemIndex) { |
| | | case 1: |
| | | this.listArr = []; |
| | | this.getListMarket(); |
| | | break; |
| | | case 0: |
| | | this.stockPlate = "" |
| | | this.listArr = []; |
| | | this.getStock(); |
| | | break; |
| | | case 2: |
| | | this.stockPlate = "科创" |
| | | this.listArr = []; |
| | | this.getStock(); |
| | | break; |
| | | case 3: |
| | | this.listArr = []; |
| | | this.getFutures(); |
| | | break; |
| | | } |
| | | } else { |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | }, |
| | | async refreshList () { |
| | | // 刷新指数 |
| | | if (this.loading) { |
| | | return |
| | | } |
| | | let opt = { |
| | | pageNum: 1, |
| | | pageSize: this.currentNum |
| | | } |
| | | let data = await api.getListMarket(opt) |
| | | this.list = data.data |
| | | }, |
| | | handleCollectionClick(item) { |
| | | item.collection = !item.collection; |
| | | }, |
| | | openDialog() { |
| | | if (!this.dialogFlag) { |
| | | this.$refs['topTitle'].style.height = '7rem' |
| | | this.$refs['topTitle'].style.height = '6.9rem' |
| | | } else { |
| | | this.$refs['topTitle'].style.height = '1.2821rem' |
| | | } |
| | |
| | | background: #fff; |
| | | top: 0; |
| | | z-index: 9999999; |
| | | transition: all 1s; |
| | | transition: all 0.5s; |
| | | overflow: hidden; |
| | | border-radius: 0 0 0.2rem 0.2rem; |
| | | >div { |
| | | width: 100%; |
| | | height: 1.2821rem; |
| | |
| | | |
| | | .list { |
| | | width: 100%; |
| | | height: calc(100% - 1.2821rem - 1rem - 1.1538rem - 1.3333rem); |
| | | |
| | | overflow-x: auto; |
| | | padding-bottom: 1.2821rem; |
| | | padding: 0 0.3rem; |
| | | |
| | | .list_items { |
| | | margin-top: -0.5rem; |
| | | width: 100%; |
| | | |
| | | >div { |
| | |
| | | .list_title { |
| | | width: 100%; |
| | | height: 1rem; |
| | | margin-top: 1.29rem; |
| | | margin-top: .29rem; |
| | | padding: 0 0.3rem; |
| | | color: #a1a2a4; |
| | | display: flex; |
| | |
| | | } |
| | | |
| | | .price_color { |
| | | color: rgb(39, 171, 99); |
| | | //color: rgb(39, 171, 99); |
| | | font-size: 0.4rem; |
| | | font-weight: 600; |
| | | } |
| | |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | margin-left: 0.3rem; |
| | | |
| | | |
| | | span { |
| | | display: inline-block; |
| | |
| | | } |
| | | |
| | | .right { |
| | | width: calc(100% - 1.2rem); |
| | | width: auto; |
| | | height: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: flex-end; |
| | | |
| | | white-space: nowrap; |
| | | span { |
| | | font-weight: 600; |
| | | } |
| | |
| | | height: 1.5385rem; |
| | | background: #f6f6f7; |
| | | border-radius: .2rem; |
| | | margin-top: 0.2rem; |
| | | .tops_title{ |
| | | width: 100%; |
| | | height: 40%; |
| | |
| | | font-weight: 600; |
| | | } |
| | | } |
| | | |
| | | } |
| | | .shublue{ |
| | | background: #0263e2!important; |
| | | } |
| | | .xuanz{ |
| | | //旋转 |
| | | transform: rotate(180deg); |
| | | transition: all 0.5s; |
| | | } |
| | | .red{ |
| | | color: #ff0000; |
| | | } |
| | | .green{ |
| | | color: #27ab63; |
| | | } |
| | | .mrt{ |
| | | margin-right: 0.35rem; |
| | | } |
| | | .codeIcon{ |
| | | width: 0.6rem; |
| | | height: 0.6rem; |
| | | background-color: #0263e2; |
| | | color: #fff; |
| | | |
| | | border-radius: 0.05rem; |
| | | margin-left: 0.1rem; |
| | | //缩放 |
| | | transform: scale(0.8); |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | } |
| | | .listHeight{ |
| | | height: calc(100% - 1.2821rem - 1rem - 1.1538rem - 1.3333rem); |
| | | } |
| | | .listHeights{ |
| | | height: calc(100% - 1rem - 1.1538rem - 1.3333rem); |
| | | } |
| | | </style> |