12 files modified
4 files added
| | |
| | | export function rtDk(options) { |
| | | return post(`/api/dk/rtDk.do?id=` + options); |
| | | } |
| | | // 市场指数图数据 |
| | | export function getIndexData() { |
| | | return post(`/api/stock/getIndexData.do`); |
| | | } |
| | |
| | | <div class="footImgDeft"> |
| | | <img |
| | | v-show="$store.state.select == '/markets'" |
| | | src="../assets/foot/tab_1_a.png" |
| | | src="../assets/foot/tab_5_a.png" |
| | | /> |
| | | <img |
| | | v-show="$store.state.select != '/markets'" |
| | | src="../assets/foot/tab_1.png" |
| | | src="../assets/foot/tab_5.png" |
| | | /> |
| | | </div> |
| | | <div :class="$store.state.select == '/markets' ? 'blueFont' : ''"> |
| | | {{ $t("hj62") }} |
| | | {{ $t("hj224") }} |
| | | </div> |
| | | </div> |
| | | |
| | | <div |
| | | :class="touch == 2 ? 'footDemos' : 'footDemo'" |
| | | @click="goRouter('/markets-list', 2)" |
| | | > |
| | | <div class="footImgDeft"> |
| | | <img |
| | | v-show="$store.state.select == '/markets-list'" |
| | | src="../assets/foot/tab_1_a.png" |
| | | /> |
| | | <img |
| | | v-show="$store.state.select != '/markets-list'" |
| | | src="../assets/foot/tab_1.png" |
| | | /> |
| | | </div> |
| | | <div :class="$store.state.select == '/markets-list' ? 'blueFont' : ''"> |
| | | {{ $t("hj62") }} |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- <div |
| | | :class="touch == 2 ? 'footDemos' : 'footDemo'" |
| | | @click="goRouter('/fund_index', 2)" |
| | | > |
| | |
| | | <div :class="$store.state.select == '/fund_index' ? 'blueFont' : ''"> |
| | | {{ $t("理财") }} |
| | | </div> |
| | | </div> |
| | | </div> --> |
| | | |
| | | <div |
| | | :class="touch == 3 ? 'footDemos' : 'footDemo'" |
| | | @click="goRouter('/new-list', 3)" |
| | | @click="goRouter('/myorder', 3)" |
| | | > |
| | | <div class="footImgDeft"> |
| | | <img |
| | | v-show="$store.state.select == '/new-list'" |
| | | v-show="$store.state.select == '/myorder'" |
| | | src="../assets/foot/tab_3_a.png" |
| | | /> |
| | | <img |
| | | v-show="$store.state.select != '/new-list'" |
| | | v-show="$store.state.select != '/myorder'" |
| | | src="../assets/foot/tab_3.png" |
| | | /> |
| | | </div> |
| | | <div :class="$store.state.select == '/new-list' ? 'blueFont' : ''"> |
| | | {{ $t("hj6") }} |
| | | <div :class="$store.state.select == '/myorder' ? 'blueFont' : ''"> |
| | | {{ $t("订单") }} |
| | | </div> |
| | | </div> |
| | | |
| | |
| | | <template> |
| | | <div class="index_component" :class="dataObj.chg > 0 ? 'bg-green' : 'bg-red'" @click="toLine"> |
| | | <div class="index_component bg-red" @click="toLine"> |
| | | <div class="item_title"> |
| | | <span class="line-one">{{ dataObj.name }}</span> |
| | | <span class="line-one">{{ dataObj.symbol }}</span> |
| | | </div> |
| | | <div class="item_price">{{ dataObj.last }}</div> |
| | | <div class="item_index flex-between"> |
| | | <span>{{ dataObj.chg }}</span> |
| | | <span>{{ dataObj.chgPct }}%</span> |
| | | </div> |
| | | <div style="width:100%;flex:1"> |
| | | <Echart :ids="ids" :colorType="dataObj.chg / 1" :data="klist"></Echart> |
| | | <div style="width:100%;flex:1" class="flex-center"> |
| | | <!-- <Echart :ids="ids" :colorType="dataObj.chg / 1" :data="klist"></Echart> --> |
| | | <img src="@/assets/img/down_4.png" style="width:80%;" /> |
| | | </div> |
| | | </div> |
| | | </template> |
| | |
| | | }, |
| | | dataObj: { |
| | | type: Object, |
| | | default: () => { } |
| | | default: () => {} |
| | | } |
| | | }, |
| | | computed: { |
| | |
| | | methods: { |
| | | // 跳转到指数图 |
| | | toLine() { |
| | | return |
| | | // 点击进入详情 |
| | | const obj = { |
| | | pid: this.dataObj.id || "", |
| | | type: this.dataObj.stockType || "" |
| | | type: "US", |
| | | }; |
| | | window.localStorage.setItem("kLine", JSON.stringify(obj)); |
| | | |
| | | this.$router.push({ |
| | | path: "/kLineIndex", |
| | | // path: "/kline", |
| | | query: { |
| | | // if_us: 1, |
| | | code: this.dataObj.id, |
| | | type: this.dataObj.stockType |
| | | type: "US" |
| | | } |
| | | }); |
| | | } |
| | |
| | | </script> |
| | | |
| | | <style lang="less" scoped> |
| | | @red: #ee0a24; |
| | | @red: #f54346; |
| | | |
| | | .bg-red { |
| | | background-color: rgba(red, 0.1); |
| | | background: linear-gradient(180deg, #2d1b23, #161a23); |
| | | color: @red; |
| | | } |
| | | |
| | |
| | | .item_title { |
| | | padding: 0 0.5em; |
| | | font-size: 0.35em; |
| | | color: #333; |
| | | color: #fff; |
| | | text-align: center; |
| | | |
| | | span { |
| | | width: 100%; |
| | |
| | | default: false |
| | | } |
| | | }, |
| | | watch: {}, |
| | | watch: { |
| | | }, |
| | | mounted() { |
| | | this.init(); |
| | | this.initWebSocket(); |
| | |
| | | <template> |
| | | <div class="new_list"> |
| | | <tab-head :title="$t('hj6')"></tab-head> |
| | | <!-- <tab-head :title="$t('hj6')"></tab-head> --> |
| | | |
| | | <news-item v-for="item in newsList" :key="item.id" :item="item"></news-item> |
| | | |
| | |
| | | <div class="periodWrap kline_periodWrap" ref="kline_periodWrap"> |
| | | <!-- DWM 分 --> |
| | | <div class="btnGroup" style="position: relative"> |
| | | <div class="btn2" v-for="(item, index) in KLinePeriodMenu" :class="{ active: KLinePeriodIndex == index }" |
| | | :key="item.ID" @click="OnClickKLinePeriodMenu(index, item, 'kline')"> |
| | | <div |
| | | class="btn2" |
| | | v-for="(item, index) in KLinePeriodMenu" |
| | | :class="{ active: KLinePeriodIndex == index }" |
| | | :key="item.ID" |
| | | @click="OnClickKLinePeriodMenu(index, item, 'kline')" |
| | | > |
| | | <span>{{ item.Name }}</span> |
| | | </div> |
| | | |
| | | <div style="position: absolute; right: 0; top: 25px; z-index: 99" v-if="isShow == true"> |
| | | <div class="btnGroup" v-show="IsShowRightMenu" style="display: flex; flex-direction: column"> |
| | | <div class="btn" :class="{ active: KLineRightIndex == index }" v-for="(item, index) in KLineRightMenu" |
| | | :key="item.ID" style="padding: 10px" @click="OnClickKLineRightMenu(index, item)"> |
| | | <div |
| | | style="position: absolute; right: 0; top: 25px; z-index: 99" |
| | | v-if="isShow == true" |
| | | > |
| | | <div |
| | | class="btnGroup" |
| | | v-show="IsShowRightMenu" |
| | | style="display: flex; flex-direction: column" |
| | | > |
| | | <div |
| | | class="btn" |
| | | :class="{ active: KLineRightIndex == index }" |
| | | v-for="(item, index) in KLineRightMenu" |
| | | :key="item.ID" |
| | | style="padding: 10px" |
| | | @click="OnClickKLineRightMenu(index, item)" |
| | | > |
| | | {{ item.Name }} |
| | | </div> |
| | | <div class="btn" v-for="item in KLineIndexMenu" :key="item.ID" style="padding: 10px" |
| | | @click="ChangeKLineIndex(item)"> |
| | | <div |
| | | class="btn" |
| | | v-for="item in KLineIndexMenu" |
| | | :key="item.ID" |
| | | style="padding: 10px" |
| | | @click="ChangeKLineIndex(item)" |
| | | > |
| | | {{ item.Name }} |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="hqchart" id="hqchart_minute" ref="kline" v-show="chartType == 'minute'"></div> |
| | | <div class="hqchart" id="hqchart_kline" ref="kline2" v-show="chartType == 'kline'"></div> |
| | | <div |
| | | class="hqchart" |
| | | id="hqchart_minute" |
| | | ref="kline" |
| | | v-show="chartType == 'minute'" |
| | | ></div> |
| | | <div |
| | | class="hqchart" |
| | | id="hqchart_kline" |
| | | ref="kline2" |
| | | v-show="chartType == 'kline'" |
| | | ></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | import EastMoney from "../../../eastmoney/HQData.js"; |
| | | import i18n from "@/locales/index.js"; |
| | | |
| | | HQChart.Chart.MARKET_SUFFIX_NAME.GetMarketStatus = function (symbol) { |
| | | HQChart.Chart.MARKET_SUFFIX_NAME.GetMarketStatus = function(symbol) { |
| | | return 2; |
| | | }; // 一直交易 |
| | | function DefaultData() { } |
| | | function DefaultData() {} |
| | | |
| | | DefaultData.GetMinuteOption = function () { |
| | | DefaultData.GetMinuteOption = function() { |
| | | var option = { |
| | | Type: "分钟走势图", // 创建图形类型 |
| | | // Type:'分钟走势图横屏', |
| | |
| | | // { Index:"KDJ", Modify: false, Change: true, Close: true}, |
| | | // { Index: "KDJ", Modify: false, Change: false, Close: false } |
| | | ], |
| | | SplashTitle: 'loading...', |
| | | SplashTitle: "loading...", |
| | | Symbol: "AAPL.usa", |
| | | IsAutoUpdate: true, // 是自动更新数据 |
| | | AutoUpdateFrequency: 20000, |
| | |
| | | return option; |
| | | }; |
| | | |
| | | DefaultData.GetMinuteIndexMenu = function () { |
| | | DefaultData.GetMinuteIndexMenu = function() { |
| | | var data = [ |
| | | { |
| | | Name: "MACD", |
| | |
| | | return data; |
| | | }; |
| | | |
| | | DefaultData.GetKLineIndexMenu = function () { |
| | | DefaultData.GetKLineIndexMenu = function() { |
| | | var data = [ |
| | | { |
| | | Name: "MA", |
| | |
| | | return data; |
| | | }; |
| | | |
| | | DefaultData.GetTestSymbolMenu = function () { |
| | | DefaultData.GetTestSymbolMenu = function() { |
| | | // 品种代码规则 ${东方财富品种代码}_${东方财富市场}.${HQChart内部市场后缀} |
| | | var data = [ |
| | | { |
| | |
| | | }; |
| | | |
| | | // k形图 |
| | | DefaultData.GetKLineOption = function () { |
| | | DefaultData.GetKLineOption = function() { |
| | | var option = { |
| | | Type: "历史K线图", // 创建图形类型 |
| | | Language: "EN", // 英文 'EN' 简体中文:'CN' 繁体中文:"TC" |
| | |
| | | } |
| | | // { Index: 'MACD', Modify: true, Change: true, Close: false } |
| | | ], |
| | | SplashTitle: 'loading...', |
| | | SplashTitle: "loading...", |
| | | Symbol: "600015.sh", |
| | | IsAutoUpdate: true, // 是自动更新数据 |
| | | AutoUpdateFrequency: 15000, |
| | |
| | | return option; |
| | | }; |
| | | |
| | | DefaultData.GetMinuteDayMenu = function () { |
| | | DefaultData.GetMinuteDayMenu = function() { |
| | | var data = [ |
| | | { |
| | | Name: "1D", |
| | |
| | | return data; |
| | | }; |
| | | |
| | | DefaultData.GetKLinePeriodMenu = function () { |
| | | DefaultData.GetKLinePeriodMenu = function() { |
| | | var data = [ |
| | | // { Name: i18n.t('hj86'), ID: 3 },分时额外处理 |
| | | // { Name: i18n.t("hj86"), ID: 4 }, |
| | |
| | | return data; |
| | | }; |
| | | |
| | | DefaultData.GetKLineRightMenu = function () { |
| | | DefaultData.GetKLineRightMenu = function() { |
| | | var data = [ |
| | | { |
| | | Name: i18n.t("hj93"), |
| | |
| | | var self = this; |
| | | // 侦听元素的调整大小事件,并使用元素作为调整大小事件的参数来调用侦听器函数。传递给函数的选项将 |
| | | // 覆盖实例选项 |
| | | erd.listenTo(this.$refs["rightContent"], function (element) { |
| | | erd.listenTo(this.$refs["rightContent"], function(element) { |
| | | var width = element.offsetWidth; |
| | | var height = element.offsetHeight; |
| | | self.tableHeight = height - 10; // 将监听到的宽高进行赋值 |
| | |
| | | SetChartStyle() { |
| | | EastMoney.HQData.SetMinuteChartCoordinate(); |
| | | var blackStyle = HQChart.Chart.HQChartStyle.GetStyleConfig( |
| | | HQChart.Chart.STYLE_TYPE_ID.WHITE_ID |
| | | ); // 读取黑色风格配置 |
| | | // HQChart.Chart.STYLE_TYPE_ID.WHITE_ID // 白色风格 |
| | | HQChart.Chart.STYLE_TYPE_ID.BLACK_ID // 黑色风格 |
| | | ); |
| | | |
| | | blackStyle.UpBarColor = "#449b54"; //上涨 |
| | | blackStyle.DownBarColor = "#e13b45"; |
| | |
| | | |
| | | option.NetworkFilter = (data, callback) => { |
| | | this.NetworkFilter(data, callback); |
| | | |
| | | // this.NetworkFilter(data, callback); |
| | | }; // 网络请求回调函数 |
| | | var chart = HQChart.Chart.JSChart.Init(this.$refs.kline2); |
| | | HQChart.Chart.JSChart.GetResource().FrameLogo.Text = null; |
| | |
| | | clearInterval(this.timerss); |
| | | this.timerss = null; |
| | | } |
| | | this.getFilter(data, callback); |
| | | this.timerss = setInterval(() => { |
| | | switch (data.Name) { |
| | | // 分时图数据对接 |
| | | case "MinuteChartContainer::RequestMinuteData": |
| | | EastMoney.HQData.NetworkFilter(data, callback); |
| | | break; |
| | | case "MinuteChartContainer::RequestHistoryMinuteData": |
| | | EastMoney.HQData.NetworkFilter(data, callback); |
| | | break; |
| | | |
| | | case "KLineChartContainer::RequestHistoryData": // 日线全量数据下载 |
| | | EastMoney.HQData.NetworkFilter(data, callback); |
| | | break; |
| | | case "KLineChartContainer::RequestRealtimeData": // 日线实时数据更新 |
| | | EastMoney.HQData.NetworkFilter(data, callback); |
| | | break; |
| | | case "KLineChartContainer::RequestFlowCapitalData": // 流通股本 |
| | | EastMoney.HQData.NetworkFilter(data, callback); |
| | | break; |
| | | case "KLineChartContainer::ReqeustHistoryMinuteData": // 分钟全量数据下载 |
| | | EastMoney.HQData.NetworkFilter(data, callback); |
| | | break; |
| | | case "KLineChartContainer::RequestMinuteRealtimeData": // 分钟增量数据更新 |
| | | EastMoney.HQData.NetworkFilter(data, callback); |
| | | break; |
| | | } |
| | | this.getFilter(data, callback); |
| | | }, 5000); |
| | | }, |
| | | getFilter(data, callback) { |
| | | switch (data.Name) { |
| | | // 分时图数据对接 |
| | | case "MinuteChartContainer::RequestMinuteData": |
| | | EastMoney.HQData.NetworkFilter(data, callback); |
| | | break; |
| | | case "MinuteChartContainer::RequestHistoryMinuteData": |
| | | EastMoney.HQData.NetworkFilter(data, callback); |
| | | break; |
| | | |
| | | case "KLineChartContainer::RequestHistoryData": // 日线全量数据下载 |
| | | EastMoney.HQData.NetworkFilter(data, callback); |
| | | break; |
| | | case "KLineChartContainer::RequestRealtimeData": // 日线实时数据更新 |
| | | EastMoney.HQData.NetworkFilter(data, callback); |
| | | break; |
| | | case "KLineChartContainer::RequestFlowCapitalData": // 流通股本 |
| | | EastMoney.HQData.NetworkFilter(data, callback); |
| | | break; |
| | | case "KLineChartContainer::ReqeustHistoryMinuteData": // 分钟全量数据下载 |
| | | EastMoney.HQData.NetworkFilter(data, callback); |
| | | break; |
| | | case "KLineChartContainer::RequestMinuteRealtimeData": // 分钟增量数据更新 |
| | | EastMoney.HQData.NetworkFilter(data, callback); |
| | | break; |
| | | } |
| | | }, |
| | | handleSelect(key, keyPath) { |
| | | console.log(key, keyPath); |
| | | this.ChangeSymbol(keyPath[1]); |
| | |
| | | justify-content: center; |
| | | // flex-direction: column; |
| | | |
| | | >.btn { |
| | | > .btn { |
| | | cursor: pointer; |
| | | width: 100%; |
| | | text-align: center; |
| | |
| | | |
| | | .btnGroup { |
| | | // border: 1px solid #242424; |
| | | color: #000; |
| | | color: #fff; |
| | | display: flex; |
| | | background: #fff; |
| | | // background: #fff; |
| | | |
| | | .btn { |
| | | margin: 0 0.1rem; |
| | |
| | | .active { |
| | | color: #c4d600; |
| | | font-weight: 800; |
| | | background: rgb(245, 245, 245); |
| | | background: #444; |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | #hqchart_minute { |
| | | // height: 100%; |
| | | background-color: #fff; |
| | | background-color: #000; |
| | | height: 5rem; |
| | | position: relative; |
| | | } |
| | | |
| | | #hqchart_kline { |
| | | // height: 100% !important; |
| | | background-color: #fff; |
| | | background-color: #000; |
| | | height: 5rem; |
| | | position: relative; |
| | | } |
| | |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | background: #fff !important; |
| | | // background: #fff !important; |
| | | } |
| | | |
| | | .btnGroup { |
| | |
| | | <span class="i_icon">{{ bayType }}</span> |
| | | <span class="i_hint" style="color:#777">{{ singDetails.spell }}</span> |
| | | </div> |
| | | <div class="detail_title_a">{{ singDetails.name }}({{ singDetails.gid }})</div> |
| | | <div class="detail_title_a"> |
| | | {{ singDetails.name }}({{ singDetails.gid }}) |
| | | </div> |
| | | <div class="real_time_detail"> |
| | | <div class="left_now_price"> |
| | | <div class="top_now"> |
| | | <!-- <span :class="singDetails.nowPrice - singDetails.preclose_px > 0 ? 'price green' : 'price red'">{{ |
| | | singDetails.nowPrice |
| | | }}</span> --> |
| | | <span :class="singDetails.hcrate > 0 ? 'price green' : 'price red'">{{ singDetails.nowPrice }}</span> |
| | | <span |
| | | :class="singDetails.hcrate > 0 ? 'price green' : 'price red'" |
| | | >{{ singDetails.nowPrice }}</span |
| | | > |
| | | </div> |
| | | <div class="bottom_now"> |
| | | <div> |
| | |
| | | <span v-else> |
| | | {{ |
| | | (singDetails.nowPrice - singDetails.preclose_px).toFixed(2) |
| | | }}</span> |
| | | }}</span |
| | | > |
| | | </div> |
| | | <div class="tew" :class="singDetails.hcrate > 0 ? 'number green' : 'number red'"> |
| | | <div |
| | | class="tew" |
| | | :class="singDetails.hcrate > 0 ? 'number green' : 'number red'" |
| | | > |
| | | <span v-if="singDetails.nowPrice === 0">-</span> |
| | | <!-- <span v-else>({{ singDetails.nowPrice - singDetails.preclose_px > 0 ? '+' : '' }} |
| | | {{ singDetails.hcrate ? singDetails.hcrate : '0' }}%)</span> --> |
| | | <span v-else> |
| | | ({{ singDetails.hcrate ? singDetails.hcrate : "0" }}%)</span> |
| | | ({{ singDetails.hcrate ? singDetails.hcrate : "0" }}%)</span |
| | | > |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <!-- <span :class="singDetails.preclose_px < 0 ? 'number green' : 'number red'">{{ |
| | | singDetails.open_px |
| | | }}</span> --> |
| | | <span :class="singDetails.hcrate > 0 ? 'number green' : 'number red' |
| | | ">{{ singDetails.open_px }}</span> |
| | | <span |
| | | :class=" |
| | | singDetails.hcrate > 0 ? 'number green' : 'number red' |
| | | " |
| | | >{{ singDetails.open_px }}</span |
| | | > |
| | | </div> |
| | | <div class="rights topes"> |
| | | <span class="titles">{{ $t("hj73") }}</span> |
| | | <!-- <span :class="singDetails.preclose_px < 0 ? 'number green' : 'number red'">{{ |
| | | singDetails.today_max |
| | | }}</span> --> |
| | | <span :class="singDetails.hcrate > 0 ? 'number green' : 'number red' |
| | | ">{{ singDetails.today_max }}</span> |
| | | <span |
| | | :class=" |
| | | singDetails.hcrate > 0 ? 'number green' : 'number red' |
| | | " |
| | | >{{ singDetails.today_max }}</span |
| | | > |
| | | </div> |
| | | </div> |
| | | <div class="bottoms"> |
| | |
| | | <!-- <span :class="singDetails.preclose_px < 0 ? 'number green' : 'number red'">{{ |
| | | singDetails.preclose_px |
| | | }}</span> --> |
| | | <span :class="singDetails.hcrate > 0 ? 'number green' : 'number red' |
| | | ">{{ singDetails.preclose_px }}</span> |
| | | <span |
| | | :class=" |
| | | singDetails.hcrate > 0 ? 'number green' : 'number red' |
| | | " |
| | | >{{ singDetails.preclose_px }}</span |
| | | > |
| | | </div> |
| | | <div class="rights bots"> |
| | | <span class="titles">{{ $t("hj75") }}</span> |
| | | <!-- <span :class="singDetails.preclose_px < 0 ? 'number green' : 'number red'">{{ |
| | | singDetails.today_min |
| | | }}</span> --> |
| | | <span :class="singDetails.hcrate > 0 ? 'number green' : 'number red' |
| | | ">{{ singDetails.today_min }}</span> |
| | | <span |
| | | :class=" |
| | | singDetails.hcrate > 0 ? 'number green' : 'number red' |
| | | " |
| | | >{{ singDetails.today_min }}</span |
| | | > |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="k_line_detail"> |
| | | <Kline :key="key" :type="singDetails.type" /> |
| | | </div> |
| | | <div class="priect_top_bottom" style="display: none" v-if=" |
| | | kLineDetails.if_us != 1 && |
| | | kLineDetails.type != 'hk' && |
| | | kLineDetails.type != 'hk' && |
| | | kLineDetails.if_zhishu == 0 |
| | | "> |
| | | <div |
| | | class="priect_top_bottom" |
| | | style="display: none" |
| | | v-if=" |
| | | kLineDetails.if_us != 1 && |
| | | kLineDetails.type != 'hk' && |
| | | kLineDetails.type != 'hk' && |
| | | kLineDetails.if_zhishu == 0 |
| | | " |
| | | > |
| | | <div class="t_title"> |
| | | <span>{{ $t("hj76") }}</span> |
| | | </div> |
| | |
| | | <div class="t_ma"> |
| | | <span>{{ $t("hj80") }}</span> |
| | | </div> |
| | | <div class="ets" v-for="(item, i) in timedata.data.details" :key="i"> |
| | | <div |
| | | class="ets" |
| | | v-for="(item, i) in timedata.data.details" |
| | | :key="i" |
| | | > |
| | | <div class="left_sell1"> |
| | | <span>{{ item.split(",")[0] }}</span> |
| | | </div> |
| | |
| | | <div class="t_ma"> |
| | | <span>{{ $t("hj81") }}</span> |
| | | </div> |
| | | <div class="ets" v-for="(item, i) in timedata.data.details" :key="i"> |
| | | <div |
| | | class="ets" |
| | | v-for="(item, i) in timedata.data.details" |
| | | :key="i" |
| | | > |
| | | <div class="left_sell1"> |
| | | <span>{{ item.split(",")[1] }}</span> |
| | | </div> |
| | |
| | | <div class="t_ma"> |
| | | <span>{{ $t("hj82") }}</span> |
| | | </div> |
| | | <div class="ets" v-for="(item, i) in timedata.data.details" :key="i"> |
| | | <div |
| | | class="ets" |
| | | v-for="(item, i) in timedata.data.details" |
| | | :key="i" |
| | | > |
| | | <div class="left_sell1"> |
| | | <span>{{ item.split(",")[2] }}</span> |
| | | </div> |
| | |
| | | <div class="btns"> |
| | | <div class="lefts"> |
| | | <div class="left_ca" @click="option()"> |
| | | <img src="../../assets/img/meishoucang.png" alt v-if="isOptionOpt === false" /> |
| | | <img |
| | | src="../../assets/img/meishoucang.png" |
| | | alt |
| | | v-if="isOptionOpt === false" |
| | | /> |
| | | <img src="../../assets/img/shoucangle.png" alt v-else /> |
| | | </div> |
| | | <!-- <div class="right_xx" @click="handleJj()"> |
| | |
| | | if (query.if_us === "1") { |
| | | this.getSingDetailUs(); |
| | | } else { |
| | | this.getSingDetails(); |
| | | this.timer = setInterval(() => { |
| | | this.getSingDetails(); |
| | | }, 5000); |
| | |
| | | height: calc(100% - 1.7rem); |
| | | overflow: auto; |
| | | |
| | | >.content { |
| | | > .content { |
| | | width: 100%; |
| | | height: 100%; |
| | | position: relative; |
| | |
| | | // background: #fff; |
| | | |
| | | .detail_title_a { |
| | | font-size: .45rem; |
| | | font-size: 0.45rem; |
| | | font-weight: 500; |
| | | margin-top: .2rem; |
| | | line-height: .45rem; |
| | | margin-top: 0.2rem; |
| | | line-height: 0.45rem; |
| | | } |
| | | |
| | | .i_icon { |
| | |
| | | align-items: center; |
| | | margin-right: 10vw; |
| | | |
| | | >img { |
| | | > img { |
| | | // margin-top: 0.2rem; |
| | | width: 0.6rem; |
| | | height: 0.6rem; |
| | |
| | | max-width: 70%; |
| | | height: 100%; |
| | | |
| | | >div { |
| | | > div { |
| | | width: 100%; |
| | | padding: 0.15rem 0; |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | >div { |
| | | > div { |
| | | // width: 50%; |
| | | height: 100%; |
| | | display: flex; |
| | |
| | | justify-content: space-between; |
| | | margin-top: 0.6rem; |
| | | |
| | | >div { |
| | | > div { |
| | | width: 49%; |
| | | height: 100%; |
| | | } |
| | |
| | | display: flex; |
| | | margin-top: 0.08rem; |
| | | |
| | | >div { |
| | | > div { |
| | | width: 50%; |
| | | height: 100%; |
| | | display: flex; |
| | |
| | | height: 70%; |
| | | display: flex; |
| | | align-items: center; |
| | | padding-left: .3rem; |
| | | padding-left: 0.3rem; |
| | | |
| | | >div { |
| | | > div { |
| | | width: 50%; |
| | | height: 100%; |
| | | display: flex; |
| | |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | padding-right: .2rem; |
| | | padding-right: 0.2rem; |
| | | |
| | | >div { |
| | | > div { |
| | | border-radius: 0.15rem; |
| | | } |
| | | |
| | |
| | | <div class="ti_cont"> |
| | | <div class="top_back"> |
| | | <div class="left_back" @click="handleBackaa()"> |
| | | <img src="../../assets/img/zuojiantou.png" alt /> |
| | | <img src="../../assets/img/backs.png" alt /> |
| | | </div> |
| | | <div class="right_title"> |
| | | <div class="t_t" style="white-space: nowrap"> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="recommendation"> |
| | | <!-- <div class="recommendation"> |
| | | <div class="division"></div> |
| | | <div class="recommendation_title">{{ $t("相关股票") }}</div> |
| | | <stock-list :propOption="propOption"></stock-list> |
| | | </div> |
| | | </div> --> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | if (query.if_us === "1") { |
| | | this.getSingDetailUs(); |
| | | } else { |
| | | this.getSingDetails(); |
| | | this.timer = setInterval(() => { |
| | | this.getSingDetails(); |
| | | }, 2000); |
| | |
| | | this.getOpation(); |
| | | // this.$Lazyload(); |
| | | this.getUserInfo(); |
| | | this.getNohknews(); |
| | | // this.getNohknews(); |
| | | }, |
| | | beforeDestroy() { |
| | | this.clearInterval(this.timer); // 在组件销毁前清除定时器 |
| | |
| | | width: 100%; |
| | | // height: 3.2rem; |
| | | padding: 0 0.3rem; |
| | | background: #fff; |
| | | // background: #fff; |
| | | |
| | | .top_back { |
| | | width: 50%; |
| | |
| | | <template> |
| | | <div class="markets"> |
| | | <tab-head :title="$t('hj62')"></tab-head> |
| | | |
| | | <div class="tui-search"> |
| | | <van-field |
| | | v-model="keyValue" |
| | | :placeholder="$t('hj37')" |
| | | right-icon="search" |
| | | @click-right-icon="search" |
| | | /> |
| | | </div> |
| | | <tab-head :title="$t('hj224')"></tab-head> |
| | | |
| | | <div class="tui-tabs flex-start"> |
| | | <div class="tab_item flex-center"> |
| | |
| | | </div> |
| | | |
| | | <div class="flex-between navs"> |
| | | <div class="nav_item" v-for="item in usDataStockBeans" :key="item.id"> |
| | | <div class="nav_item" v-for="item in sList" :key="item.id"> |
| | | <index-component :ids="'a' + item.id" :dataObj="item"></index-component> |
| | | </div> |
| | | </div> |
| | |
| | | </div> |
| | | </div> |
| | | |
| | | <stock-list :propOption="propOption" ref="stockList"></stock-list> |
| | | <new-list></new-list> |
| | | |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import newList from "@/page/home/newList.vue"; |
| | | import indexComponent from "@/components/index-component.vue"; |
| | | import tabHead from "@/components/tabHead.vue"; |
| | | import stockList from "@/components/stock-list.vue"; |
| | | import * as api from "@/axios/api"; |
| | | export default { |
| | | name: "markets", |
| | |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | kData: {}, |
| | | keyValue: "", // 搜索 |
| | | tabs: [ |
| | | { |
| | | name: this.$t("订单"), |
| | |
| | | img: require("@/assets/img/market_3.png") |
| | | } |
| | | ], |
| | | usDataStockBeans: [] |
| | | sList: [] |
| | | }; |
| | | }, |
| | | components: { |
| | | tabHead, |
| | | stockList |
| | | indexComponent, |
| | | newList |
| | | }, |
| | | watch: {}, |
| | | computed: { |
| | | // 传递给列表组件的类型值 |
| | | propOption() { |
| | | return { stockType: "US", keyWords: this.keyValue }; |
| | | } |
| | | created() { |
| | | this.getZs(); |
| | | }, |
| | | async created() {}, |
| | | mounted() {}, |
| | | methods: { |
| | | // 搜索 |
| | | search() { |
| | | this.$refs.stockList.init(); |
| | | // 获取三张指数图 |
| | | async getZs() { |
| | | let data = await api.getIndexData(); |
| | | if (data.status == 0) { |
| | | this.sList = data.data; |
| | | } |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="less" scoped> |
| | | /deep/ .van-cell { |
| | | background-color: rgba(#000, 0); |
| | | border: rgba(#fff, 0.5) 2px solid; |
| | | border-radius: 5em; |
| | | } |
| | | /deep/ .van-icon { |
| | | font-size: 1.6em; |
| | | } |
| | | .markets { |
| | | font-size: 10vw; |
| | | width: 100vw; |
| | | min-height: 100vh; |
| | | padding-bottom: 1.5rem; |
| | | .navs { |
| | | padding: 0 0.25em 0 0.25em; |
| | | padding: 0.25em 0.25em 0 0.25em; |
| | | |
| | | .nav_item { |
| | | width: 2.833em; |
| | |
| | | font-size: 0.4em; |
| | | } |
| | | } |
| | | } |
| | | .tui-search { |
| | | padding: 0.225em; |
| | | } |
| | | } |
| | | </style> |
| New file |
| | |
| | | <template> |
| | | <div class="market_list"> |
| | | <tab-head :title="$t('hj62')"></tab-head> |
| | | |
| | | <div class="tui-search"> |
| | | <van-field |
| | | v-model="keyValue" |
| | | :placeholder="$t('hj37')" |
| | | right-icon="search" |
| | | @click-right-icon="search" |
| | | /> |
| | | </div> |
| | | <stock-list :propOption="propOption" ref="stockList"></stock-list> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import tabHead from "@/components/tabHead.vue"; |
| | | import stockList from "@/components/stock-list.vue"; |
| | | export default { |
| | | data() { |
| | | return { |
| | | keyValue: "" // 搜索 |
| | | }; |
| | | }, |
| | | components: { |
| | | stockList, |
| | | tabHead |
| | | }, |
| | | computed: { |
| | | // 传递给列表组件的类型值 |
| | | propOption() { |
| | | return { stockType: "US", keyWords: this.keyValue }; |
| | | } |
| | | }, |
| | | methods: { |
| | | // 搜索 |
| | | search() { |
| | | this.$refs.stockList.init(); |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="less" scoped> |
| | | /deep/ .van-cell { |
| | | background-color: rgba(#000, 0); |
| | | border: rgba(#fff, 0.5) 2px solid; |
| | | border-radius: 5em; |
| | | } |
| | | /deep/ .van-icon { |
| | | font-size: 1.6em; |
| | | } |
| | | .market_list { |
| | | font-size: 10vw; |
| | | width: 100vw; |
| | | min-height: 100vh; |
| | | padding-bottom: 1.5rem; |
| | | |
| | | .tui-search { |
| | | padding: 0.225em; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="all-assets flex-between"> |
| | | <div class="all-assets flex-center"> |
| | | <div class="assets-item flex-center"> |
| | | <div class="all-size">{{ $t("hj48") }}</div> |
| | | <div class="big-size">{{ moneyData.availableBalance }}</div> |
| | | </div> |
| | | <div class="assets-item flex-center"> |
| | | <div class="assets-item flex-center" style="align-items: end;"> |
| | | <div class="all-size">{{ $t("账户盈亏") }}</div> |
| | | <div class="big-size">{{ moneyData.cumulativeProfitAndLoss }}</div> |
| | | </div> |
| | |
| | | padding: 0.225rem 0 0.35rem; |
| | | justify-content: space-evenly; |
| | | .assets-item { |
| | | width: 33.33%; |
| | | width: 50%; |
| | | flex-shrink: 0; |
| | | flex-direction: column; |
| | | align-items: start; |
| | | padding: 0 0.3rem; |
| | | .big-size { |
| | | font-size: 0.4rem; |
| | | color: #fff; |
| | |
| | | <template> |
| | | <div class="my_order"> |
| | | <tab-head :title="$t('订单')"></tab-head> |
| | | <van-tabs v-model="active" title-inactive-color="#898a8e"> |
| | | <van-tab |
| | | :title="$t('hj2')" |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import tabHead from "@/components/tabHead.vue"; |
| | | import * as api from "@/axios/api"; |
| | | export default { |
| | | components: { |
| | | tabHead |
| | | }, |
| | | data() { |
| | | return { |
| | | active: "0", |
| | |
| | | this.actIndex = index; |
| | | }, |
| | | goBuy(i, index) { |
| | | console.log("ddddd", i); |
| | | return; |
| | | // console.log("ddddd", i); |
| | | // return; |
| | | this.$router.push({ |
| | | path: "/TradingBuy", |
| | | query: { |
| | | t: index, |
| | | code: i.stockCode, |
| | | m: i.now_price, |
| | | // type: i.if_zhishu, |
| | | id: i.stockId, |
| | | name: i.stockName, |
| | | spell: i.stockSpell, |
| | | // if_us: i.if_us, |
| | | bayType: i.stockGid, |
| | | gid: i.stockGidJb |
| | | } |
| | | }); |
| | | if (navigator.vibrate) { |
| | | // 支持 |
| | | navigator.vibrate([55]); |
| | | } |
| | | }, |
| | | // 平仓跳转详情 |
| | | toDetails(i) { |
| | |
| | | }, |
| | | // #region 7.2 新增路由------------------------------------- |
| | | // 新首页 |
| | | { |
| | | path: "/home_index", |
| | | name: "home_index", |
| | | meta: { |
| | | title: i18n.t("hj224"), |
| | | requireAuth: false, |
| | | index: 0 |
| | | }, |
| | | component: () => import("@/page/home/homeIndex.vue") |
| | | }, |
| | | // 市场 |
| | | // { |
| | | // path: "/home_index", |
| | | // name: "home_index", |
| | | // meta: { |
| | | // title: i18n.t("hj224"), |
| | | // requireAuth: false, |
| | | // index: 0 |
| | | // }, |
| | | // component: () => import("@/page/home/homeIndex.vue") |
| | | // }, |
| | | // 首页 |
| | | { |
| | | path: "/markets", |
| | | name: "markets", |
| | |
| | | index: 0 |
| | | }, |
| | | component: () => import("@/page/markets/markets.vue") |
| | | }, |
| | | // 股票列表页 |
| | | { |
| | | path: "/markets-list", |
| | | name: "markets-list", |
| | | meta: { |
| | | title: i18n.t("hj62"), |
| | | requireAuth: true, |
| | | index: 0 |
| | | }, |
| | | component: () => import("@/page/markets/marketsList.vue") |
| | | }, |
| | | { |
| | | path: "/transferNew", |
| | |
| | | meta: { |
| | | title: i18n.t("订单"), |
| | | requireAuth: false, |
| | | hasHeader: true, |
| | | show: true, |
| | | // hasHeader: true, |
| | | // show: true, |
| | | index: 1 |
| | | }, |
| | | component: () => import("@/page/user/myOrder.vue") |