| | |
| | | <template> |
| | | <div class="tr_list_page"> |
| | | <div class="content"> |
| | | <div class="tabs"> |
| | | <div class="bottom_content" v-if="tabsIndex === 1"> |
| | | <!-- 搜索框 --> |
| | | <div class="search"> |
| | | <div class="search_content"> |
| | | <div class="left_search"> |
| | | <div class="search_img"> |
| | | <img src="../../assets/img/searchs.png" alt /> |
| | | </div> |
| | | <div class="search_input"> |
| | | <input type="text" class="searchs" placeholder="输入品种名称/代码搜索" ref="search" id="sousuo" v-model="gpcode" |
| | | @input="gpinput" /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div> |
| | | <!-- 搜索框 --> |
| | | <div class="search"> |
| | | <div class="search_content"> |
| | | <div class="left_search"> |
| | | <div class="search_img"> |
| | | <img src="../../assets/img/searchs.png" alt /> |
| | | </div> |
| | | <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" v-show="isToken == ''" @click="$router.push('/login')"> |
| | | <div class="left_identity_img"> |
| | | <img src="../../assets/img/shenfen2.png" alt /> |
| | | </div> |
| | | <div class="text"> |
| | | <span>{{ '开户即可入金交易' }}</span> |
| | | </div> |
| | | <div class="right_go"> |
| | | <img src="../../assets/img/yuoujiantou.png" alt /> |
| | | </div> |
| | | </div> |
| | | <div class="list_title"> |
| | | <div class="item_title varieties"> |
| | | <span>{{ '品种' }}</span> |
| | | </div> |
| | | <div class="item_title latest_price"> |
| | | <span>{{ '最新价' }}</span> |
| | | </div> |
| | | <div class="item_title applies"> |
| | | <span v-show="tabsItemIndex != 5">{{ '涨跌幅' }}</span> |
| | | <span v-show="tabsItemIndex == 5" style="width: 100%;text-align: center;">{{ '申购类型' }}</span> |
| | | </div> |
| | | </div> |
| | | <!-- 市场列表 --> |
| | | <div class="list" :class="isToken == '' ? 'listHeight' : 'listHeights'"> |
| | | <van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="onLoad" |
| | | :immediate-check="false"> |
| | | <div class="van-clearfix"> |
| | | <div class="list_items"> |
| | | <div class="item" v-for="(item, index) in listArr" :key="index" |
| | | @click="handleGoToKlineDetail(item, index)"> |
| | | <div v-if="(tabsItemIndex == 5 && item.zt == 0) || tabsItemIndex != 5"> |
| | | <div class="left_title"> |
| | | <div class="tp"> |
| | | <span class="collection" @click.stop="options(item)"> |
| | | <span v-show="tabsItemIndex != 5" class="shu" |
| | | :class="item.isOption == '1' ? 'shublue' : ''"></span> |
| | | <span v-show="tabsItemIndex == 5" class="shu hongse"></span> |
| | | </span> |
| | | <span class="title_color" style="white-space: nowrap;overflow: hidden;"> |
| | | {{ tabsItemIndex == 5 ? item.name : tabsItemIndex == |
| | | 2 ? item.name : tabsItemIndex == 0 || tabsItemIndex == 3 || tabsItemIndex == 4 ? item.name : |
| | | item.indexName | getName |
| | | }} |
| | | </span> |
| | | </div> |
| | | <div class="bt"> |
| | | <span> |
| | | {{ tabsItemIndex == 5 ? item.stockType + item.code : tabsItemIndex == 2 ? item.gid : |
| | | tabsItemIndex |
| | | == |
| | | 0 || tabsItemIndex == 3 || tabsItemIndex == 4 ? item.gid : item.indexCode |
| | | }} |
| | | </span> |
| | | </div> |
| | | </div> |
| | | <div class="center_price"> |
| | | <div class="tp"> |
| | | <span class="price_color" |
| | | v-if="tabsItemIndex == 0 || tabsItemIndex == 2 || tabsItemIndex == 3 || tabsItemIndex == 4" |
| | | :class="item.hcrate > 0 ? 'green' : 'red'"> |
| | | {{ item.nowPrice |
| | | }} |
| | | </span> |
| | | <span class="price_color" v-else> |
| | | {{ tabsItemIndex == 5 ? Number(item.price).toFixed(2) : |
| | | item.currentPoint |
| | | }} |
| | | </span> |
| | | </div> |
| | | <div class="bt"> |
| | | <span v-if="tabsItemIndex == 5 || tabsItemIndex == 1">{{ tabsItemIndex == 5 ? 'Max:' + |
| | | Number(item.orderNumber) : '手续费:' + Number(item.transFee) |
| | | }}</span> |
| | | <span v-else>{{ item.today_min }}</span> |
| | | </div> |
| | | </div> |
| | | <div class="right_bs"> |
| | | <div class="tp" style="justify-content: flex-end;"> |
| | | <span class="price_color" |
| | | v-if="tabsItemIndex == 0 || tabsItemIndex == 2 || tabsItemIndex == 3 || tabsItemIndex == 4" |
| | | :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 v-if="tabsItemIndex == 5" :class="item.type == 1 ? 'xgsgType' : 'xgsgTypeRed'"> |
| | | <!-- {{item.orderNumber}} --> |
| | | {{ item.type == 1 ? '新股申购' : '线下配售' }} |
| | | </div> |
| | | </div> |
| | | <div class="bt" style="justify-content: flex-end;"> |
| | | <div v-if="tabsItemIndex != 1 && tabsItemIndex != 5">{{ item.preclose_px }}</div> |
| | | <!-- class="codeIcon" item.stock_type.toUpperCase()--> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </van-list> |
| | | <div class="search_input"> |
| | | <input |
| | | type="text" |
| | | class="searchs" |
| | | :placeholder="$t('hj37')" |
| | | ref="search" |
| | | id="sousuo" |
| | | v-model="gpcode" |
| | | @input="gpinput" |
| | | /> |
| | | </div> |
| | | </div> |
| | | <div class="bottom_content" v-if="tabsIndex === 0"> |
| | | <!-- 搜索框 --> |
| | | <div class="search"> |
| | | <div class="search_content"> |
| | | <div class="left_search"> |
| | | <div class="search_img"> |
| | | <img src="../../assets/img/searchs.png" alt /> |
| | | </div> |
| | | <div class="search_input"> |
| | | <input type="text" class="searchs" placeholder="输入品种名称/代码搜索" |
| | | onkeyup="value=value.replace(/[^a-zA-Z0-9]/g,'')" v-model="gpcodes" @input="gpinputs" /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="list_title"> |
| | | <div class="item_title varieties"> |
| | | <span>{{ '品种' }}</span> |
| | | </div> |
| | | <div class="item_title latest_price"> |
| | | <span>{{ '最新价' }}</span> |
| | | </div> |
| | | <div class="item_title applies"> |
| | | <span>{{ '涨跌幅' }}</span> |
| | | </div> |
| | | </div> |
| | | |
| | | |
| | | <!-- 自选列表 --> |
| | | <div class="list zxlist"> |
| | | <van-list v-model="loadings" :finished="finisheds" finished-text="没有更多了" @load="onLoads" |
| | | :immediate-check="false"> |
| | | <div class="van-clearfix"> |
| | | <div class="list_items"> |
| | | <div class="item" @click="handleGoToKlineDetail1(item, index)" v-for="(item, index) in listArrs" :key="item.indexCode"> |
| | | <div class="left_title" style="flex-direction: column;align-items: flex-start;"> |
| | | <div class="tp" style="display: flex;align-items: center;line-height: 2;"> |
| | | <span class="collection" @click="optionszx(item)"> |
| | | <span class="shu" :class="item.isOption == '1' ? 'shublue' : ''"></span> |
| | | </span> |
| | | <span class="title_color" style="overflow: hidden;-webkit-line-clamp: 1;text-overflow: ellipsis;display: -webkit-box;-webkit-box-orient: vertical;">{{ item.stockName }}</span> |
| | | </div> |
| | | <div class="bt"> |
| | | <span>{{ item.stockGid }}</span> |
| | | </div> |
| | | </div> |
| | | <div class="center_price" style="align-items: center;"> |
| | | <div class="tp"> |
| | | <span class="price_color">{{ item.nowPrice }}</span> |
| | | </div> |
| | | <div class="bt"> |
| | | <span>{{ item.addTime }}</span> |
| | | </div> |
| | | </div> |
| | | <div class="right_bs" style="justify-content: flex-end;align-items: center;"> |
| | | <div class="tp" > |
| | | <span class="price_color" :class="item.hcrate > 0 ? 'green' : 'red'">{{ item.hcrate }}</span> |
| | | </div> |
| | | <div class="bt"> |
| | | <!-- <div>{{ item.stock_type.toUpperCase() }}</div> --> |
| | | <!-- class="codeIcon" --> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </van-list> |
| | | </div> |
| | | </div> |
| | | <div class="right_search" @click="sousuo">{{ $t("Search") }}</div> |
| | | </div> |
| | | </div> |
| | | <div class="shai" v-if="dialogFlag" @click="openDialog()"></div> |
| | | <div class="top_title" ref="topTitle"> |
| | | <div> |
| | | <div class="tabs_title"> |
| | | <div class="tb" v-for="(item, index) in tabsArr" :key="index" @click="handleTabsClick(item, index)"> |
| | | <span :class="index === tabsIndex ? 'active' : ''">{{ item }}</span> |
| | | </div> |
| | | </div> |
| | | <div class="right_money" @click="openDialog()"> |
| | | <div class="content_money" v-if="tabsIndex === 1"> |
| | | <div class="top_price"> |
| | | <div class="left"> |
| | | <span>{{ '余额' }}</span> |
| | | </div> |
| | | <div class="right" v-if="userData.length == 0">¥0.00</div> |
| | | <div class="right" v-if="userData.length != 0"> |
| | | <span v-if="$store.state.userInfo.userAmt == undefined">¥0.00</span> |
| | | <span v-if="$store.state.userInfo && tabsItemIndex == 1" style="white-space: nowarp;"> |
| | | {{ '¥' + $store.state.userInfo.userIndexAmt |
| | | }} |
| | | </span> |
| | | <span v-if="$store.state.userInfo.userAmt != undefined && (tabsItemIndex == 0)" |
| | | style="white-space: nowarp;"> |
| | | {{ '¥ ' + $store.state.userInfo.userAmt |
| | | }} |
| | | </span> |
| | | <span v-if="$store.state.userInfo.userAmt != undefined && tabsItemIndex == 3" |
| | | style="white-space: nowarp;"> |
| | | {{ '$ ' + (Number($store.state.userInfo.userAmt) / 7.1).toFixed(2) |
| | | }} |
| | | </span> |
| | | <span v-if="$store.state.userInfo.userAmt != undefined && tabsItemIndex == 4" |
| | | style="white-space: nowarp;"> |
| | | {{ 'HK$ ' + (Number($store.state.userInfo.userAmt) / 0.9).toFixed(2) |
| | | }} |
| | | </span> |
| | | <span v-if="$store.state.userInfo.userAmt != undefined && tabsItemIndex == 2" |
| | | style="white-space: nowarp;"> |
| | | {{ '¥ ' + $store.state.userInfo.userAmt |
| | | }} |
| | | </span> |
| | | <span v-if="$store.state.userInfo.userAmt != undefined && tabsItemIndex == 5" |
| | | style="white-space: nowarp;"> |
| | | {{ '¥ ' + $store.state.userInfo.userAmt |
| | | }} |
| | | </span> |
| | | <!-- <span v-if="$store.state.userInfo && tabsItemIndex == 3" style="white-space: nowarp;"> |
| | | {{ |
| | | '¥' + $store.state.userInfo.userFuturesAmt |
| | | }} |
| | | </span> --> |
| | | </div> |
| | | <div class="sanjiao"> |
| | | <img :class="dialogFlag ? 'xuanz' : ''" style="transition: all 0.5s;" src="../../assets/img/xiala.png" |
| | | alt /> |
| | | </div> |
| | | </div> |
| | | <div class="bottom_balance"> |
| | | <div> |
| | | <span>{{ '可用余额' }}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="cards"> |
| | | <div class="card_item"> |
| | | <div class="tops_title"> |
| | | <div> |
| | | <span>{{ '总资产' }}</span> |
| | | </div> |
| | | </div> |
| | | <div class="bottom_price"> |
| | | <div v-if="tabsItemIndex != 3 && tabsItemIndex != 4"> |
| | | <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 v-if="tabsItemIndex == 3"> |
| | | <p v-if="this.$store.state.settingForm.indexDisplay && !this.$store.state.settingForm.futuresDisplay" |
| | | class="account"> |
| | | $ {{ $store.state.hide ? '****' : Number(Number($store.state.userInfo.userAmt + |
| | | $store.state.userInfo.userIndexAmt) / 7.1).toFixed(2) |
| | | }} |
| | | </p> |
| | | <p v-else-if="!this.$store.state.settingForm.indexDisplay && this.$store.state.settingForm.futuresDisplay" |
| | | class="account"> |
| | | $ {{ $store.state.hide ? '****' : Number(Number($store.state.userInfo.userAmt + |
| | | $store.state.userInfo.userFuturesAmt) / 7.1).toFixed(2) |
| | | }} |
| | | </p> |
| | | <p v-else-if="!this.$store.state.settingForm.indexDisplay && !this.$store.state.settingForm.futuresDisplay" |
| | | class="account">$ {{ Number($store.state.hide ? '****' : |
| | | Number($store.state.userInfo.userAmt) / 7.1).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 v-if="tabsItemIndex == 4"> |
| | | <p v-if="this.$store.state.settingForm.indexDisplay && !this.$store.state.settingForm.futuresDisplay" |
| | | class="account"> |
| | | HK$ {{ $store.state.hide ? '****' : Number(Number($store.state.userInfo.userAmt + |
| | | $store.state.userInfo.userIndexAmt) / 0.9).toFixed(2) |
| | | }} |
| | | </p> |
| | | <p v-else-if="!this.$store.state.settingForm.indexDisplay && this.$store.state.settingForm.futuresDisplay" |
| | | class="account"> |
| | | HK$ {{ $store.state.hide ? '****' : Number(Number($store.state.userInfo.userAmt + |
| | | $store.state.userInfo.userFuturesAmt) / 0.9).toFixed(2) |
| | | }} |
| | | </p> |
| | | <p v-else-if="!this.$store.state.settingForm.indexDisplay && !this.$store.state.settingForm.futuresDisplay" |
| | | class="account">HK$ {{ $store.state.hide ? '****' : |
| | | Number(Number($store.state.userInfo.userAmt) / 0.9).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 || tabsItemIndex == 5"> |
| | | {{ $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(Number(($store.state.userInfo.enableAmt |
| | | + |
| | | $store.state.userInfo.allFreezAmt) * Number(settingInfo.forceStopPercent)) / 7.1).toFixed(2) |
| | | }} |
| | | </span> |
| | | <span v-show="tabsItemIndex == 4"> |
| | | {{ $store.state.hide ? '****' : Number(Number(Number($store.state.userInfo.enableAmt |
| | | + |
| | | $store.state.userInfo.allFreezAmt) * Number(settingInfo.forceStopPercent)) / 0.9).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 == |
| | | 5 ? '股票' : '' |
| | | }} |
| | | </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 || tabsItemIndex == 5">{{ '¥ ' + $store.state.userInfo.userAmt }}</span> |
| | | <span v-show="tabsItemIndex == 3">{{ '$ ' + (Number($store.state.userInfo.userAmt) / 7.1).toFixed(2) |
| | | }}</span> |
| | | <span v-show="tabsItemIndex == 4">{{ 'HK$ ' + (Number($store.state.userInfo.userAmt) / 0.9).toFixed(2) |
| | | }}</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 || tabsItemIndex == 5">{{ '¥ ' + $store.state.userInfo.enableAmt |
| | | }}</span> |
| | | <span v-show="tabsItemIndex == 3">{{ '$ ' + (Number($store.state.userInfo.enableAmt) / 7.1).toFixed(2) |
| | | }}</span> |
| | | <span v-show="tabsItemIndex == 4">{{ 'HK$ ' + (Number($store.state.userInfo.enableAmt) / 0.9).toFixed(2) |
| | | }}</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 == 5">{{ '¥ ' + $store.state.userInfo.djzj |
| | | }}</span> |
| | | <span v-show="tabsItemIndex == 3">{{ '$ ' + (Number($store.state.userInfo.allFreezAmt) / 7.1).toFixed(2) |
| | | }}</span> |
| | | <span v-show="tabsItemIndex == 4">{{ 'HK$ ' + (Number($store.state.userInfo.allFreezAmt) / 0.9).toFixed(2) |
| | | }}</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 || tabsItemIndex == 5">{{ '¥ ' + $store.state.userInfo.allProfitAndLose |
| | | }}</span> |
| | | <span |
| | | :class="$store.state.userInfo.allProfitAndLose > 0 ? ' red' : $store.state.userInfo.allProfitAndLose < 0 ? ' green' : ''" |
| | | v-show="tabsItemIndex == 3">{{ '$ ' + (Number($store.state.userInfo.allProfitAndLose) / 7.1).toFixed(2) |
| | | }}</span> |
| | | <span |
| | | :class="$store.state.userInfo.allProfitAndLose > 0 ? ' red' : $store.state.userInfo.allProfitAndLose < 0 ? ' green' : ''" |
| | | v-show="tabsItemIndex == 4">{{ 'HK$ ' + (Number($store.state.userInfo.allProfitAndLose) / 0.9).toFixed(2) |
| | | }}</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> |
| | | </div> |
| | | |
| | | <!-- 新股弹窗 --> |
| | | <van-popup v-model="settingDialog" position="bottom" :style="{ height: '35%' }" @close="popClose"> |
| | | <div class="setting_content"> |
| | | <div class="old_password"> |
| | | <div class="left_titles"> |
| | | <span>{{ '申购数量:' }}</span> |
| | | </div> |
| | | <div class="right_password_input"> |
| | | <input type="number" v-model="sgNum" /> |
| | | </div> |
| | | </div> |
| | | <div class="btn_setting" @click="changeSg()"> |
| | | <span>{{ '立即申购' }}</span> |
| | | </div> |
| | | <div class="shijian"> |
| | | <div class="xgsj"> |
| | | |
| | | <div class="sjtlt">申购时间: </div> |
| | | <div class="xgTime" v-if="this.sgsj">{{ this.sgsj | getTimeYear }}</div> |
| | | </div> |
| | | <div class="xgsj"> |
| | | <div class="sjtlt">认缴时间: </div> |
| | | <div class="xgTime" v-if="this.rjsj">{{ this.rjsj | getTimeYear }}</div> |
| | | </div> |
| | | </div> |
| | | <!-- <div class="old_password"> |
| | | <div class="left_titles"> |
| | | <span>{{ '新密码:' }}</span> |
| | | </div> |
| | | <div class="right_password_input"> |
| | | <input type="password" v-model="newPassword" /> |
| | | </div> |
| | | </div> |
| | | <div class="old_password"> |
| | | <div class="left_titles"> |
| | | <span>{{ '确认新密码:' }}</span> |
| | | </div> |
| | | <div class="right_password_input"> |
| | | <input type="password" v-model="cirNewPassword" /> |
| | | </div> |
| | | </div> --> |
| | | |
| | | </div> |
| | | </van-popup> |
| | | |
| | | <tabsList ref="tabsList" /> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | //Toast |
| | | import { Toast } from 'vant'; |
| | | import * as api from "@/axios/api"; |
| | | import tabsList from "./tradingList/tabs"; |
| | | export default { |
| | | name: "trading", |
| | | components: { |
| | | }, |
| | | name: "TradingList", |
| | | components: { tabsList }, |
| | | data() { |
| | | return { |
| | | tabsIndex: 1, |
| | | tabsArr: ["自选", "市场"], |
| | | tabClassActive: 1, |
| | | dialogFlag: false, |
| | | pageNum: 1, |
| | | pageNums: 1, |
| | | stockPlate: "", |
| | | alertShow: false, |
| | | isToken: "", |
| | | elType: "warning", |
| | | indexSettingInfo: {}, |
| | | futuresSettingInfo: {}, |
| | | settingInfo: {}, |
| | | loading: false, |
| | | loadings: false, |
| | | finished: false, |
| | | finisheds: false, |
| | | settingDialog: false, |
| | | sgNum: 1, |
| | | sgCode: '', |
| | | gpcode: "", |
| | | gpcodes: "", |
| | | texts: "", |
| | | sgsj: "", |
| | | rjsj: "", |
| | | orderNumber: "", |
| | | elAlertShow: false, |
| | | userData: [], |
| | | elAlertText: "", |
| | | stockType: '', |
| | | tabsClassArr: [ |
| | | { |
| | | name: "沪深京", |
| | | type: 0 |
| | | }, |
| | | { |
| | | name: "指数", |
| | | type: 1 |
| | | }, |
| | | |
| | | { |
| | | name: "科创", |
| | | type: 2 |
| | | }, |
| | | // { |
| | | // name: "期货", |
| | | // type: 3 |
| | | // } |
| | | { |
| | | name: "美股", |
| | | type: 3 |
| | | }, |
| | | { |
| | | name: "港股", |
| | | type: 4 |
| | | }, |
| | | { |
| | | name: "新股", |
| | | type: 5 |
| | | } |
| | | ], |
| | | tabsItemIndex: 0, |
| | | listArr: [], |
| | | listArrs: [], |
| | | }; |
| | | }, |
| | | |
| | | created() { |
| | | if (this.$route.query.type == 1) { |
| | | //选中sousuo输入框 |
| | | this.$nextTick(() => { |
| | | this.$refs.search.focus(); |
| | | }); |
| | | } |
| | | if (this.$route.query.listid) { |
| | | this.tabsItemIndex = Number(this.$route.query.listid) |
| | | } |
| | | }, |
| | | |
| | | mounted() { |
| | | this.loading = true; |
| | | this.getStock(); |
| | | this.isToken = window.localStorage.getItem("USERTOKEN"); |
| | | this.getUserInfo(); |
| | | this.getIndexSettingInfo(); |
| | | this.getSettingInfo(); |
| | | this.getFuturesSetting(); |
| | | }, |
| | | methods: { |
| | | onLoad() { |
| | | this.pageNum++; |
| | | // 异步更新数据 |
| | | // setTimeout 仅做示例,真实场景中一般为 ajax 请求 |
| | | switch (this.tabsItemIndex) { |
| | | case 1: |
| | | this.loading = true; |
| | | this.getListMarket(); |
| | | break; |
| | | case 0: |
| | | this.stockPlate = ""; |
| | | this.stockType = ""; |
| | | this.loading = true; |
| | | this.getStock(); |
| | | break; |
| | | case 2: |
| | | this.stockPlate = "科创"; |
| | | this.stockType = ""; |
| | | this.loading = true; |
| | | this.getStocks(); |
| | | break; |
| | | case 3: |
| | | this.stockPlate = ""; |
| | | this.stockType = "us"; |
| | | this.loading = true; |
| | | this.getStock(); |
| | | break; |
| | | case 4: |
| | | this.stockPlate = ""; |
| | | this.stockType = "hk"; |
| | | this.loading = true; |
| | | this.getStock(); |
| | | break; |
| | | case 5: |
| | | this.loading = true; |
| | | this.getFutures(); |
| | | break; |
| | | } |
| | | |
| | | // 加载状态结束 |
| | | // this.loading = false; |
| | | |
| | | // 数据全部加载完成 |
| | | // if (this.list.length >= 40) { |
| | | // this.finished = true; |
| | | // } |
| | | sousuo() { |
| | | this.$refs.tabsList.sousuo = this.gpcode; |
| | | }, |
| | | gpinput() { |
| | | |
| | | this.pageNum = 1; |
| | | this.listArr = []; |
| | | this.loading = true; |
| | | this.finished = false; |
| | | this.stockType = ''; |
| | | switch (this.tabsItemIndex) { |
| | | case 1: |
| | | this.getListMarket(); |
| | | break; |
| | | case 0: |
| | | this.stockPlate = ""; |
| | | this.stockType = ''; |
| | | this.getStock(); |
| | | break; |
| | | case 2: |
| | | this.stockPlate = "科创"; |
| | | this.stockType = ''; |
| | | this.getStocks(); |
| | | break; |
| | | case 3: |
| | | this.stockPlate = ""; |
| | | this.stockType = 'us'; |
| | | this.getStock(); |
| | | break; |
| | | case 4: |
| | | this.stockPlate = ""; |
| | | this.stockType = 'hk'; |
| | | this.getStock(); |
| | | break; |
| | | case 5: |
| | | this.getFutures(); |
| | | break; |
| | | } |
| | | gpinput(e) { |
| | | this.gpcode = e.target.value; |
| | | this.$refs.tabsList.sousuo = e.target.value; |
| | | }, |
| | | gpinputs() { |
| | | this.pageNums = 1; |
| | | this.listArrs = []; |
| | | this.loadings = true; |
| | | this.finisheds = false; |
| | | this.getMyList(); |
| | | }, |
| | | onLoads() { |
| | | this.pageNums++; |
| | | this.loadings = true; |
| | | this.getMyList(); |
| | | }, |
| | | 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; |
| | | this.userData = data.data; |
| | | } else { |
| | | |
| | | |
| | | } |
| | | this.$store.state.user = this.user; |
| | | }, |
| | | async getIndexSettingInfo() { |
| | | // 网站设置信息 指数 |
| | | let data = await api.getIndexSetting(); |
| | | if (data.status === 0) { |
| | | // 成功 |
| | | this.indexSettingInfo = data.data; |
| | | } else { |
| | | this.$store.commit('elAlertShow', { 'elAlertShow': true, 'elAlertText': data.msg }); |
| | | } |
| | | }, |
| | | async getFuturesSetting() { |
| | | // 网站设置信息 期货 |
| | | let data = await api.getFuturesSetting(); |
| | | if (data.status === 0) { |
| | | // 成功 |
| | | this.futuresSettingInfo = data.data; |
| | | } else { |
| | | this.$store.commit('elAlertShow', { 'elAlertShow': true, 'elAlertText': data.msg }); |
| | | } |
| | | }, |
| | | async getSettingInfo() { |
| | | let data = await api.getSetting(); |
| | | if (data.status === 0) { |
| | | // 成功 |
| | | this.settingInfo = data.data; |
| | | } else { |
| | | ` this.$store.commit('elAlertShow',{'elAlertShow':true,'elAlertText': data.msg});` |
| | | } |
| | | }, |
| | | async getListMarket() { |
| | | let val = { |
| | | pageNum: this.pageNum, |
| | | pageSize: 15 |
| | | }; |
| | | // 获取指数列表 |
| | | let result = await api.getListMarket(val); |
| | | this.loading = false; |
| | | if (result.status === 0) { |
| | | if (this.tabsItemIndex == 1) { |
| | | this.listArr = result.data; |
| | | this.finished = true; |
| | | } |
| | | } else { |
| | | this.texts = result.msg; |
| | | this.alertShow = true; |
| | | } |
| | | }, |
| | | async getStock() { |
| | | //沪深 |
| | | let opt = { |
| | | pageNum: this.pageNum, |
| | | pageSize: 15, |
| | | stockPlate: this.stockPlate, |
| | | keyWords: this.gpcode, |
| | | stockType: this.stockType |
| | | }; |
| | | let data = await api.getStock(opt); |
| | | this.loading = false; |
| | | if (data.status === 0) { |
| | | if (data.data.list.length < 15) { |
| | | this.finished = true; |
| | | } |
| | | if (this.tabsItemIndex == 0 || this.tabsItemIndex == 3 || this.tabsItemIndex == 4) { |
| | | if (this.gpcode) { |
| | | this.listArr = data.data.list; |
| | | } else { |
| | | data.data.list.forEach(element => { |
| | | this.listArr.push(element); |
| | | }); |
| | | } |
| | | |
| | | } |
| | | } else { |
| | | this.texts = data.msg; |
| | | this.alertShow = true; |
| | | } |
| | | }, |
| | | async getStocks() { |
| | | //科创 |
| | | let opt = { |
| | | pageNum: this.pageNum, |
| | | pageSize: 15, |
| | | stockPlate: this.stockPlate, |
| | | keyWords: this.gpcode |
| | | }; |
| | | let data = await api.getStock(opt); |
| | | this.loading = false; |
| | | if (data.status === 0) { |
| | | if (data.data.list.length < 15) { |
| | | this.finished = true; |
| | | } |
| | | if (this.tabsItemIndex == 2) { |
| | | if (this.gpcode) { |
| | | this.listArr = data.data.list; |
| | | } else { |
| | | data.data.list.forEach(element => { |
| | | this.listArr.push(element); |
| | | }); |
| | | } |
| | | } |
| | | } else { |
| | | this.texts = data.msg; |
| | | this.alertShow = true; |
| | | } |
| | | }, |
| | | |
| | | popClose() { |
| | | this.sgCode = ''; |
| | | this.sgsj = ''; |
| | | this.rjsj = ''; |
| | | this.orderNumber = ''; |
| | | }, |
| | | async changeSg() { |
| | | if (!this.sgNum) { |
| | | Toast('数量不能为空'); |
| | | return; |
| | | }; |
| | | //this.sgNum必须是数字并且不能小于1 |
| | | if (this.sgNum < 1) { |
| | | Toast('数量不能小于1'); |
| | | return; |
| | | } |
| | | if (this.sgNum > this.orderNumber) { |
| | | Toast('数量不能大于' + this.orderNumber); |
| | | return; |
| | | } |
| | | |
| | | let opt = { |
| | | newCode: this.sgCode, |
| | | applyNums: this.sgNum, |
| | | phone: this.$store.state.userInfo.phone, |
| | | }; |
| | | let data = await api.getNewAdd(opt); |
| | | if (data.status === 0) { |
| | | this.sgShow = false; |
| | | this.sgCode = ''; |
| | | this.sgsj = ''; |
| | | this.rjsj = ''; |
| | | this.orderNumber = ''; |
| | | Toast('申购成功'); |
| | | this.$router.push({ path: '/warehouse?index=3' }); |
| | | } else { |
| | | Toast(data.msg); |
| | | } |
| | | if (navigator.vibrate) { |
| | | // 支持 |
| | | navigator.vibrate([55]); |
| | | } |
| | | }, |
| | | handleGoToKlineDetail1(item) { |
| | | var codes = item.stockCode; |
| | | var names = item.stockName; |
| | | var if_zhishu = '0'; |
| | | var if_us = item.stock_type == 'us' ? '1' : item.stock_type == 'hk' ? '2' : ''; |
| | | this.$router.push({ |
| | | path: "/kline", |
| | | query: { |
| | | name: names, |
| | | code: codes, |
| | | if_us: if_us, |
| | | if_zhishu: if_zhishu, |
| | | sok: item.type ? item.type : this.filterSH(item.stock_type), |
| | | type: item.stock_type |
| | | } |
| | | }); |
| | | }, |
| | | //进入详情 |
| | | handleGoToKlineDetail(item) { |
| | | if (this.userData.length == 0) { |
| | | this.$store.commit('dialogVisible', true); |
| | | return; |
| | | } |
| | | var codes = ""; |
| | | var names = ""; |
| | | var stock_type = ""; |
| | | var soks = ""; |
| | | var if_zhishu = '0'; |
| | | var if_us = ''; |
| | | switch (this.tabsItemIndex) { |
| | | case 0: |
| | | codes = item.code; |
| | | names = item.name; |
| | | stock_type = item.stock_type == 'us' ? item.stock_type + 'a' : item.stock_type; |
| | | soks = item.type ? item.type : this.filterSH(item.stock_type); |
| | | if_zhishu = '0'; |
| | | if_us = item.stock_type == 'us' ? '1' : ''; |
| | | break; |
| | | case 3: |
| | | codes = item.code; |
| | | names = item.name; |
| | | stock_type = item.stock_type + 'a'; |
| | | if_us = '1'; |
| | | soks = item.type; |
| | | if_zhishu = '0'; |
| | | break; |
| | | case 4: |
| | | codes = item.code; |
| | | names = item.name; |
| | | stock_type = item.stock_type; |
| | | soks = item.type; |
| | | if_zhishu = '0'; |
| | | if_us = '2'; |
| | | break; |
| | | case 1: |
| | | codes = item.indexGid; |
| | | names = item.indexName; |
| | | stock_type = 'sh'; |
| | | if_zhishu = item.indexCode; |
| | | soks = item.type ? item.type : 0; |
| | | break; |
| | | case 2: |
| | | codes = item.code; |
| | | names = item.name; |
| | | stock_type = item.stock_type; |
| | | soks = this.filterSH(item.stock_type); |
| | | if_zhishu = '0'; |
| | | break; |
| | | case 5: |
| | | this.sgCode = item.code; |
| | | this.sgsj = item.subscribeTime; |
| | | this.rjsj = item.subscriptionTime; |
| | | this.orderNumber = item.orderNumber; |
| | | this.settingDialog = true; |
| | | return; |
| | | codes = item.futuresGid; |
| | | names = item.futuresName; |
| | | soks = 0; |
| | | stock_type = 'qh'; |
| | | if_zhishu = item.indexGid; |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | |
| | | this.$router.push({ |
| | | path: "/kline", |
| | | query: { |
| | | name: names, |
| | | stockplate: item.stock_plate, |
| | | code: codes, |
| | | type: stock_type, |
| | | sok: soks, |
| | | if_us: if_us, |
| | | usType: item.type, |
| | | if_zhishu: if_zhishu, |
| | | } |
| | | }); |
| | | }, |
| | | filterSH(val) { |
| | | if (val === "sh") { |
| | | return 1; |
| | | } else if (val === "bj" || val === "sz") { |
| | | return 0; |
| | | } |
| | | }, |
| | | |
| | | async getFutures() { |
| | | // 获取期货列表 |
| | | let opt = { |
| | | |
| | | |
| | | }; |
| | | let data = await api.getNewGu(opt); |
| | | this.loading = false; |
| | | if (data.status === 0) { |
| | | if (this.tabsItemIndex == 5) { |
| | | this.listArr = data.data.list; |
| | | } |
| | | this.finished = true; |
| | | } else { |
| | | this.texts = data.msg; |
| | | this.alertShow = true; |
| | | } |
| | | }, |
| | | // async getFutures() { |
| | | // // 获取期货列表 |
| | | // let opt = { |
| | | // homeShow: 1, |
| | | // pageNum: this.pageNum, |
| | | // pageSize: 15 |
| | | // }; |
| | | // let data = await api.getListFutures(opt); |
| | | // this.loading = false; |
| | | // if (data.data.length < 15) { |
| | | // this.finished = true; |
| | | // } |
| | | // if (data.status === 0) { |
| | | // if (this.tabsItemIndex == 3) { |
| | | // data.data.forEach(element => { |
| | | // this.listArr.push(element); |
| | | // }); |
| | | // } |
| | | // } else { |
| | | // this.texts = data.msg; |
| | | // this.alertShow = true; |
| | | // } |
| | | // }, |
| | | async getMyList() { |
| | | this.loadings = true; |
| | | //获取自选列表 |
| | | let opt = { |
| | | pageNum: this.pageNums, |
| | | pageSize: 15, |
| | | keyWords: this.gpcodes |
| | | }; |
| | | let data = await api.getMyList(opt); |
| | | this.loadings = false; |
| | | if (data.status == 0) { |
| | | data.data.list.forEach(element => { |
| | | this.listArrs.push(element); |
| | | }); |
| | | } |
| | | if (data.data.list.length < 15) { |
| | | this.finisheds = true; |
| | | } |
| | | }, |
| | | handleTabsClick(item, index) { |
| | | if (this.userData.length == 0) { |
| | | this.$store.commit('dialogVisible', true); |
| | | return; |
| | | } |
| | | if (index == 0) { |
| | | if (this.dialogFlag) { |
| | | this.$refs["topTitle"].style.height = "1.2821rem"; |
| | | setTimeout(() => { |
| | | this.dialogFlag = false; |
| | | |
| | | this.listArrs = []; |
| | | this.pageNums = 1; |
| | | this.finisheds = false; |
| | | this.tabsIndex = index; |
| | | this.getMyList(); |
| | | }, 800); |
| | | } else { |
| | | this.listArrs = []; |
| | | this.pageNums = 1; |
| | | this.finisheds = false; |
| | | this.tabsIndex = index; |
| | | this.getMyList(); |
| | | } |
| | | } else { |
| | | this.tabsIndex = index; |
| | | } |
| | | }, |
| | | handleTabsItem(item, index) { |
| | | this.tabsItemIndex = index; |
| | | this.pageNum = 1; |
| | | this.finished = false; |
| | | this.loading = true; |
| | | switch (item.type) { |
| | | case 1: |
| | | this.listArr = []; |
| | | this.getListMarket(); |
| | | break; |
| | | case 0: |
| | | this.stockPlate = ""; |
| | | this.listArr = []; |
| | | this.stockType = ''; |
| | | this.getStock(); |
| | | break; |
| | | case 2: |
| | | this.stockPlate = "科创"; |
| | | this.stockType = ''; |
| | | this.listArr = []; |
| | | this.getStocks(); |
| | | break; |
| | | case 3: |
| | | this.stockPlate = ""; |
| | | this.stockType = 'us'; |
| | | this.listArr = []; |
| | | this.getStock(); |
| | | break; |
| | | case 4: |
| | | this.stockPlate = ""; |
| | | this.stockType = 'hk'; |
| | | this.listArr = []; |
| | | this.getStock(); |
| | | break; |
| | | case 5: |
| | | this.listArr = []; |
| | | this.getFutures(); |
| | | break; |
| | | } |
| | | if (navigator.vibrate) { |
| | | // 支持 |
| | | navigator.vibrate([55]); |
| | | } |
| | | }, |
| | | async options(val) { |
| | | if(this.tabsItemIndex == 1){ |
| | | this.$message({ |
| | | message: '指数暂不支持自选!', |
| | | type: 'warning' |
| | | }); |
| | | return; |
| | | } |
| | | 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.code; |
| | | break; |
| | | case 4: |
| | | codes = val.code; |
| | | break; |
| | | case 5: |
| | | codes = val.futuresGid; |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | if (val.isOption == "1") { |
| | | let data = await api.delOption({ code: codes }); |
| | | if (data.status === 0) { |
| | | switch (this.tabsItemIndex) { |
| | | case 1: |
| | | this.pageNum = 1; |
| | | this.listArr = []; |
| | | this.loading = true; |
| | | this.finished = false; |
| | | this.getListMarket(); |
| | | break; |
| | | case 0: |
| | | this.stockPlate = ""; |
| | | this.pageNum = 1; |
| | | this.stockType = ''; |
| | | this.loading = true; |
| | | this.listArr = []; |
| | | this.finished = false; |
| | | this.getStock(); |
| | | break; |
| | | case 2: |
| | | this.stockPlate = "科创"; |
| | | this.pageNum = 1; |
| | | this.stockType = ''; |
| | | this.loading = true; |
| | | this.listArr = []; |
| | | this.finished = false; |
| | | this.getStocks(); |
| | | break; |
| | | case 3: |
| | | this.stockPlate = ""; |
| | | this.stockType = 'us'; |
| | | this.pageNum = 1; |
| | | this.loading = true; |
| | | this.listArr = []; |
| | | this.finished = false; |
| | | this.getStock(); |
| | | break; |
| | | case 4: |
| | | this.stockPlate = ""; |
| | | this.stockType = 'hk'; |
| | | this.pageNum = 1; |
| | | this.loading = true; |
| | | this.listArr = []; |
| | | this.finished = false; |
| | | this.getStock(); |
| | | break; |
| | | case 5: |
| | | this.listArr = []; |
| | | this.loading = true; |
| | | this.pageNum = 1; |
| | | this.finished = false; |
| | | this.getFutures(); |
| | | break; |
| | | } |
| | | this.refreshList(); |
| | | } else { |
| | | console.log(data.msg); |
| | | } |
| | | } else { |
| | | let data = await api.addOption({ code: codes }); |
| | | if (data.status === 0) { |
| | | switch (this.tabsItemIndex) { |
| | | case 1: |
| | | this.listArr = []; |
| | | this.pageNum = 1; |
| | | this.finished = false; |
| | | this.getListMarket(); |
| | | break; |
| | | case 0: |
| | | this.stockPlate = ""; |
| | | this.stockType = ''; |
| | | this.pageNum = 1; |
| | | this.finished = false; |
| | | this.listArr = []; |
| | | this.getStock(); |
| | | break; |
| | | case 2: |
| | | this.stockPlate = "科创"; |
| | | this.stockType = ''; |
| | | this.pageNum = 1; |
| | | this.finished = false; |
| | | this.listArr = []; |
| | | this.getStocks(); |
| | | break; |
| | | case 3: |
| | | this.stockPlate = ""; |
| | | this.pageNum = 1; |
| | | this.finished = false; |
| | | this.stockType = 'us'; |
| | | this.listArr = []; |
| | | this.getStock(); |
| | | break; |
| | | case 4: |
| | | this.stockPlate = ""; |
| | | this.stockType = 'hk'; |
| | | this.pageNum = 1; |
| | | this.finished = false; |
| | | this.listArr = []; |
| | | this.getStock(); |
| | | break; |
| | | case 5: |
| | | this.listArr = []; |
| | | this.pageNum = 1; |
| | | this.finished = false; |
| | | this.getFutures(); |
| | | break; |
| | | } |
| | | } else { |
| | | console.log(data.msg); |
| | | } |
| | | } |
| | | if (navigator.vibrate) { |
| | | // 支持 |
| | | navigator.vibrate([55]); |
| | | } |
| | | }, |
| | | async optionszx(val) { |
| | | let data = await api.delOption({ code: val.stockGid }); |
| | | if (data.status === 0) { |
| | | this.listArrs = []; |
| | | this.pageNums = 1; |
| | | this.finisheds = false; |
| | | this.getMyList(); |
| | | } else { |
| | | console.log(data.msg); |
| | | } |
| | | if (navigator.vibrate) { |
| | | // 支持 |
| | | navigator.vibrate([55]); |
| | | } |
| | | }, |
| | | 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.userData.length == 0) { |
| | | this.$store.commit('dialogVisible', true); |
| | | return; |
| | | } |
| | | if (!this.dialogFlag) { |
| | | this.$refs["topTitle"].style.height = "6.9rem"; |
| | | } else { |
| | | this.$refs["topTitle"].style.height = "1.2821rem"; |
| | | } |
| | | this.dialogFlag = !this.dialogFlag; |
| | | } |
| | | }, |
| | | filters: { |
| | | getName(name) { |
| | | if (name.length > 15) { |
| | | return name.substring(0, 14); |
| | | } else { |
| | | return name; |
| | | } |
| | | }, |
| | | gettime(time) { |
| | | if (!time) { |
| | | return ""; |
| | | } |
| | | var nd = new Date(time); |
| | | var y = nd.getFullYear(); |
| | | var mm = nd.getMonth() + 1; |
| | | var d = nd.getDate(); |
| | | var h = nd.getHours(); |
| | | var m = nd.getMinutes(); |
| | | var c = nd.getSeconds(); |
| | | if (mm < 10) { |
| | | mm = "0" + mm; |
| | | } |
| | | if (d < 10) { |
| | | d = "0" + d; |
| | | } |
| | | if (h < 10) { |
| | | h = "0" + h; |
| | | } |
| | | if (m < 10) { |
| | | m = "0" + m; |
| | | } |
| | | if (c < 10) { |
| | | c = "0" + c; |
| | | } |
| | | //17:35:2922-06-2022 |
| | | return h + ":" + m + ":" + c; |
| | | }, |
| | | getTimeYear(time) { |
| | | if (!time) { |
| | | return ""; |
| | | } |
| | | var nd = new Date(time); |
| | | var y = nd.getFullYear(); |
| | | var mm = nd.getMonth() + 1; |
| | | var d = nd.getDate(); |
| | | var h = nd.getHours(); |
| | | var m = nd.getMinutes(); |
| | | var c = nd.getSeconds(); |
| | | if (mm < 10) { |
| | | mm = "0" + mm; |
| | | } |
| | | if (d < 10) { |
| | | d = "0" + d; |
| | | } |
| | | if (h < 10) { |
| | | h = "0" + h; |
| | | } |
| | | if (m < 10) { |
| | | m = "0" + m; |
| | | } |
| | | if (c < 10) { |
| | | c = "0" + c; |
| | | } |
| | | //17:35:2922-06-2022 |
| | | return y + '-' + mm + '-' + d + ' ' + h + ":" + m + ":" + c; |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped lang="less"> |
| | | .tr_list_page { |
| | | width: 100%; |
| | | height: calc(100% - 1.3rem); |
| | | background: #fff; |
| | | |
| | | >.content { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | } |
| | | |
| | | .tabs { |
| | | width: 100%; |
| | | height: 100%; |
| | | .search { |
| | | height: 1rem; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | margin: 15px 22px; |
| | | position: relative; |
| | | z-index: 99; |
| | | |
| | | .search { |
| | | .search_content { |
| | | width: 100%; |
| | | height: 1rem; |
| | | height: 90%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | padding: 0 0.3rem; |
| | | position: relative; |
| | | |
| | | .search_content { |
| | | width: 100%; |
| | | height: 90%; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .left_search { |
| | | width: 100%; |
| | | height: 100%; |
| | | background: #f6f6f6; |
| | | border-radius: 0.15rem; |
| | | display: flex; |
| | | |
| | | .search_img { |
| | | width: 1rem; |
| | | height: 100%; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | |
| | | img { |
| | | width: 0.5rem; |
| | | height: 0.5rem; |
| | | } |
| | | } |
| | | |
| | | .search_input { |
| | | width: 100%; |
| | | overflow: hidden; |
| | | height: 100%; |
| | | display: flex; |
| | | } |
| | | } |
| | | |
| | | .right_search_class { |
| | | width: 13%; |
| | | height: 100%; |
| | | display: flex; |
| | | justify-content: flex-end; |
| | | align-items: center; |
| | | |
| | | img { |
| | | width: 0.6rem; |
| | | height: 0.6rem; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .top_title { |
| | | width: 100%; |
| | | height: 1.2821rem; |
| | | padding: 0 0.3rem; |
| | | position: fixed; |
| | | background: #fff; |
| | | top: 0; |
| | | z-index: 2000; |
| | | transition: all 0.5s; |
| | | overflow: hidden; |
| | | border-radius: 0 0 0.2rem 0.2rem; |
| | | |
| | | >div { |
| | | width: 100%; |
| | | height: 1.2821rem; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .tabs_title { |
| | | width: 26%; |
| | | height: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .tb { |
| | | width: 50%; |
| | | height: 100%; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | font-size: 0.4103rem; |
| | | } |
| | | |
| | | .active { |
| | | font-size: 0.5003rem; |
| | | font-weight: 800; |
| | | } |
| | | } |
| | | |
| | | .bottom_content { |
| | | width: 100%; |
| | | height: calc(100% - 1.2821rem); |
| | | position: relative; |
| | | top: 7%; |
| | | } |
| | | |
| | | .scroll_tab { |
| | | width: 100%; |
| | | height: 1rem; |
| | | overflow-x: scroll; |
| | | -webkit-overflow-scrolling: touch; |
| | | display: -webkit-box; |
| | | white-space: nowrap; |
| | | |
| | | >div { |
| | | display: inline-block; |
| | | width: 15%; |
| | | height: 100%; |
| | | display: flex; |
| | | font-size: 0.4rem; |
| | | align-items: center; |
| | | |
| | | span { |
| | | display: inline-block; |
| | | min-width: 40%; |
| | | height: 100%; |
| | | text-align: center; |
| | | line-height: 1.1538rem; |
| | | } |
| | | } |
| | | |
| | | span.active { |
| | | color: rgb(2, 99, 226); |
| | | border-bottom: 0.07rem solid rgb(2, 99, 226); |
| | | font-weight: 800; |
| | | transition: all 0.5s; |
| | | } |
| | | } |
| | | |
| | | .scroll_tab::-webkit-scrollbar { |
| | | display: none; |
| | | } |
| | | |
| | | .kai_mess { |
| | | width: 100%; |
| | | height: 1.2821rem; |
| | | background: #f5f9fe; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | position: absolute; |
| | | |
| | | .left_identity_img { |
| | | width: 0.9744rem; |
| | | height: 100%; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | margin-left: 0.2rem; |
| | | |
| | | img { |
| | | width: 0.6rem; |
| | | height: 0.6rem; |
| | | } |
| | | } |
| | | |
| | | .text { |
| | | width: 80%; |
| | | height: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | color: rgb(2, 99, 226); |
| | | font-weight: 800; |
| | | font-size: 0.35rem; |
| | | padding-left: 0.35rem; |
| | | } |
| | | |
| | | .right_go { |
| | | width: 10%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | |
| | | img { |
| | | width: 0.6rem; |
| | | height: 0.6rem; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .list::-webkit-scrollbar { |
| | | display: none; |
| | | } |
| | | |
| | | .list { |
| | | width: 100%; |
| | | |
| | | overflow-x: auto; |
| | | padding-bottom: 1.2821rem; |
| | | padding: 0 0.3rem; |
| | | |
| | | .list_items { |
| | | margin-top: -0.5rem; |
| | | .left_search { |
| | | width: 100%; |
| | | |
| | | >div { |
| | | width: 100%; |
| | | height: 1.0256rem; |
| | | display: flex; |
| | | margin: 0.5rem 0; |
| | | |
| | | >div { |
| | | width: 100%; |
| | | height: 1.0256rem; |
| | | display: flex; |
| | | |
| | | >div { |
| | | >div { |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .tp { |
| | | width: 100%; |
| | | height: 70%; |
| | | } |
| | | |
| | | .bt { |
| | | width: 100%; |
| | | height: 30%; |
| | | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .left_title { |
| | | width: 45%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .center_price { |
| | | width: 35%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .right_bs { |
| | | width: 20%; |
| | | height: 100%; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .list_title { |
| | | width: 100%; |
| | | height: 1rem; |
| | | margin-top: 0.29rem; |
| | | padding: 0 0.3rem; |
| | | color: #a1a2a4; |
| | | display: flex; |
| | | |
| | | >div { |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .varieties { |
| | | width: 45%; |
| | | } |
| | | |
| | | .latest_price { |
| | | width: 35%; |
| | | } |
| | | |
| | | .applies { |
| | | width: 20%; |
| | | justify-content: flex-end; |
| | | } |
| | | } |
| | | |
| | | .price_color { |
| | | //color: rgb(39, 171, 99); |
| | | font-size: 0.4rem; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | .title_color { |
| | | color: rgb(2, 2, 2); |
| | | font-size: 0.4rem; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | .tab_items { |
| | | font-size: 0.2rem; |
| | | } |
| | | |
| | | .tab_class { |
| | | padding: 0 0.3rem; |
| | | } |
| | | |
| | | .searchs::placeholder { |
| | | color: #8e8f92; |
| | | } |
| | | |
| | | .searchs { |
| | | width: 100%; |
| | | } |
| | | |
| | | .collection { |
| | | display: inline-block; |
| | | width: 0.1rem; |
| | | height: 50%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | margin-right: 0.1rem; |
| | | |
| | | .shu { |
| | | width: 60%; |
| | | height: 100%; |
| | | background: #919191; |
| | | } |
| | | } |
| | | |
| | | .right_money { |
| | | width: 44%; |
| | | height: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: flex-end; |
| | | |
| | | .content_money { |
| | | // width: 80%; |
| | | height: 80%; |
| | | } |
| | | |
| | | .top_price { |
| | | width: 100%; |
| | | height: 70%; |
| | | background: #fff; |
| | | border-radius: 0.5rem; |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | .left { |
| | | width: 0.8rem; |
| | | height: 0.4103rem; |
| | | border-radius: 0.1rem; |
| | | background: #4d73b1; |
| | | color: #fff; |
| | | font-size: 0.3077rem; |
| | | .search_img { |
| | | width: 1rem; |
| | | height: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | |
| | | span { |
| | | display: inline-block; |
| | | transform: scale(0.8); |
| | | font-weight: 600; |
| | | align-items: center; |
| | | img { |
| | | width: 0.5rem; |
| | | height: 0.5rem; |
| | | } |
| | | } |
| | | |
| | | .right { |
| | | width: auto; |
| | | .search_input { |
| | | width: 100%; |
| | | overflow: hidden; |
| | | height: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: flex-end; |
| | | white-space: nowrap; |
| | | margin-left: 0.1rem; |
| | | margin-right: 0.1rem; |
| | | min-width: 1.9rem; |
| | | |
| | | // padding-left: 0.2rem; |
| | | span { |
| | | font-weight: 600; |
| | | text-align: right; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .bottom_balance { |
| | | width: 100%; |
| | | height: 30%; |
| | | display: flex; |
| | | justify-content: flex-end; |
| | | font-size: 0.3077rem; |
| | | color: #acaeaf; |
| | | transform: scale(0.9); |
| | | margin-left: 0.2rem; |
| | | padding-right: 0.68rem; |
| | | .right_search { |
| | | width: 140px; |
| | | line-height: 0.9rem; |
| | | text-align: center; |
| | | height: 100%; |
| | | border-radius: 0.5rem; |
| | | background-color: #0066ed; |
| | | color: #ffffff; |
| | | font-weight: bold; |
| | | margin-left: 20px; |
| | | } |
| | | } |
| | | |
| | | .sanjiao { |
| | | width: 0.4rem; |
| | | height: 0.4rem; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | |
| | | img { |
| | | width: 0.4rem; |
| | | height: 0.4rem; |
| | | } |
| | | } |
| | | |
| | | .dialog { |
| | | position: absolute; |
| | | width: 100%; |
| | | height: 100%; |
| | | background: rgba(0, 0, 0, 0.4); |
| | | top: 7%; |
| | | z-index: 9; |
| | | transition: all 0.5s; |
| | | } |
| | | |
| | | .dialog.open { |
| | | top: 7%; |
| | | } |
| | | |
| | | .shai { |
| | | position: absolute; |
| | | width: 100%; |
| | | height: 100%; |
| | | background: rgba(0, 0, 0, 0.4); |
| | | top: 0%; |
| | | z-index: 10; |
| | | transition: all 0.5s; |
| | | } |
| | | |
| | | .shai.open { |
| | | top: 4%; |
| | | } |
| | | |
| | | .cards { |
| | | width: 100%; |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | } |
| | | |
| | | .card_item { |
| | | width: 48%; |
| | | height: 1.5385rem; |
| | | background: #f6f6f7; |
| | | border-radius: 0.2rem; |
| | | margin-top: 0.2rem; |
| | | |
| | | .tops_title { |
| | | width: 100%; |
| | | height: 40%; |
| | | display: flex; |
| | | align-items: flex-end; |
| | | padding-left: 0.5rem; |
| | | } |
| | | |
| | | .bottom_price { |
| | | width: 100%; |
| | | height: 60%; |
| | | display: flex; |
| | | align-items: center; |
| | | padding-left: 0.5rem; |
| | | |
| | | p { |
| | | font-weight: 600; |
| | | } |
| | | |
| | | span { |
| | | 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); |
| | | } |
| | | |
| | | .zxlist { |
| | | height: calc(100% - 1rem - 1rem); |
| | | padding-bottom: 0.2rem; |
| | | } |
| | | |
| | | /deep/.van-list__loading { |
| | | margin-top: 0.2rem; |
| | | } |
| | | |
| | | .hongse { |
| | | |
| | | background-color: #4d73b1 !important; |
| | | } |
| | | |
| | | .xgsgType { |
| | | position: relative; |
| | | top: 30%; |
| | | left: 0; |
| | | right: 0; |
| | | margin: auto; |
| | | width: 85%; |
| | | height: 80%; |
| | | text-align: center; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | border-radius: 0.1rem; |
| | | background-color: rgba(102, 204, 153, 0.1); |
| | | border: 0.04rem solid #5CE398; |
| | | color: #5CE398; |
| | | } |
| | | |
| | | .xgsgTypeRed { |
| | | position: relative; |
| | | top: 30%; |
| | | left: 0; |
| | | right: 0; |
| | | margin: auto; |
| | | width: 85%; |
| | | height: 80%; |
| | | text-align: center; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | border-radius: 0.1rem; |
| | | background-color: rgba(223, 59, 59, 0.062); |
| | | border: 0.04rem solid rgb(231, 61, 61); |
| | | color: rgb(231, 61, 61); |
| | | } |
| | | |
| | | .setting_content { |
| | | width: 100%; |
| | | height: 5rem; |
| | | padding: 0.3rem; |
| | | |
| | | .old_password { |
| | | width: 100%; |
| | | height: 1.6rem; |
| | | background: rgb(243, 243, 243); |
| | | border-radius: 0.15rem; |
| | | display: flex; |
| | | margin-top: 0.8rem; |
| | | |
| | | .left_titles { |
| | | margin-left: 0.2rem; |
| | | width: 25%; |
| | | height: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | padding-left: 0.2rem; |
| | | font-size: 0.3975rem; |
| | | |
| | | // justify-content: flex-end; |
| | | span { |
| | | font-weight: 600; |
| | | letter-spacing: 0.04rem; |
| | | } |
| | | } |
| | | |
| | | .right_password_input { |
| | | width: 75%; |
| | | height: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | input { |
| | | width: 100%; |
| | | height: 100%; |
| | | padding-left: 0.2rem; |
| | | border-radius: 0 0.2rem 0.2rem 0; |
| | | font-size: 0.3975rem; |
| | | font-weight: 600; |
| | | //文字间距 |
| | | letter-spacing: 0.04rem; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .btn_setting { |
| | | width: 100%; |
| | | height: 1.3rem; |
| | | border-radius: 0.15rem; |
| | | background: #2d6ae9; |
| | | color: #fff; |
| | | font-size: 0.4615rem; |
| | | margin-top: 0.5rem; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | |
| | | span { |
| | | font-weight: 600; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .shijian { |
| | | width: 100%; |
| | | height: 1.6rem; |
| | | margin-top: 0.5rem; |
| | | margin-bottom: 0.5rem; |
| | | } |
| | | |
| | | .xgsj { |
| | | font-size: 0.3875rem; |
| | | font-weight: 600; |
| | | display: flex; |
| | | height: 50%; |
| | | align-items: center; |
| | | |
| | | } |
| | | |
| | | .sjtlt { |
| | | width: 25%; |
| | | margin-left: 0.4rem; |
| | | } |
| | | |
| | | .xgTime() { |
| | | width: 75%; |
| | | } |
| | | |
| | | /deep/.van-popup { |
| | | border-radius: 0.2rem 0.2rem 0 0; |
| | | } |
| | | </style> |