From 940d76fdc141d7028918fbe30adb1bb3935a2b54 Mon Sep 17 00:00:00 2001
From: DESKTOP-CVS3R96\我恁爹 <11>
Date: Mon, 07 Nov 2022 04:27:24 +0800
Subject: [PATCH] 暂存
---
src/page/home/home.vue | 2
src/components/elalert.vue | 78 +++++++++
index.html | 6
src/page/list/trading-list.vue | 373 +++++++++++++++++++++++++++-------------------
4 files changed, 302 insertions(+), 157 deletions(-)
diff --git a/index.html b/index.html
index d2bb309..b112b38 100644
--- a/index.html
+++ b/index.html
@@ -2,7 +2,7 @@
<html>
<head>
<meta charset="utf-8">
- <meta name=viewport content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">
+ <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">
<title>首页</title>
<link rel="shortcut icon" href=./favicon.ico type=image/x-icon>
<link href="static/css/public1.css" rel="stylesheet">
@@ -10,10 +10,12 @@
<script>
// 禁用缩放
function addMeta() {
- $('head').append('<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />');
+ // $('head').append('<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />');
}
setTimeout(addMeta, 3000);
+
+
// 禁用双指放大
document.documentElement.addEventListener('touchstart', function (event) {
if (event.touches.length > 1) {
diff --git a/src/components/elalert.vue b/src/components/elalert.vue
new file mode 100644
index 0000000..bd677ab
--- /dev/null
+++ b/src/components/elalert.vue
@@ -0,0 +1,78 @@
+<!-- -->
+<template>
+ <el-alert v-show="alertShow" :closable="closable" :title="texts" :type="elType" center>
+ </el-alert>
+</template>
+
+<script>
+export default {
+ props: {
+ alertShow: {
+ type: Boolean,
+ default: false
+ },
+ closable: {
+ type: Boolean,
+ default: false
+ },
+ texts: {
+ type: String,
+ default: ''
+ },
+ elType: {
+ type: String,
+ default: 'warning'
+ }
+ },
+ data() {
+ return {
+
+ }
+ },
+ //监听alertShow变成true时,2秒后自动关闭
+ watch: {
+ alertShow: function (val) {
+ if (val) {
+ setTimeout(() => {
+ this.$emit('closeAlert')
+ }, 2000)
+ }
+ }
+ },
+ //生命周期 - 创建完成(访问当前this实例)
+ created() {
+
+ },
+ //生命周期 - 挂载完成(访问DOM元素)
+ mounted() {
+
+ },
+ methods:{
+ //定时调用父组件方法关闭弹窗
+ closeAlert(){
+ //定时调用父组件方法关闭弹窗
+ setTimeout(()=>{
+ this.$emit('closeAlert')
+ },2000)
+ }
+
+ }
+}
+</script>
+<style scoped lang="less">
+/* @import url(); 引入css类 */
+/deep/.el-alert{
+ width: 70%!important;
+ height: 1rem!important;
+ position: absolute!important;
+ top: 0!important;
+ bottom: 0!important;
+ left: 0!important;
+ right: 0!important;
+ margin: auto!important;
+ font-size: 0.3rem!important;
+}
+/deep/.el-alert__title{
+ font-size: 0.3rem!important;
+}
+</style>
\ No newline at end of file
diff --git a/src/page/home/home.vue b/src/page/home/home.vue
index 5854c7d..5d00d0b 100644
--- a/src/page/home/home.vue
+++ b/src/page/home/home.vue
@@ -739,7 +739,7 @@
}
.title {
- width: 20%;
+ width: 30%;
height: 100%;
display: flex;
align-items: center;
diff --git a/src/page/list/trading-list.vue b/src/page/list/trading-list.vue
index 65e2561..402d7d7 100644
--- a/src/page/list/trading-list.vue
+++ b/src/page/list/trading-list.vue
@@ -18,12 +18,8 @@
</div>
<div class="tab_class">
<div class="scroll_tab">
- <div
- class="tab_items"
- v-for="(item, index) in tabsClassArr"
- :key="index"
- @click="handleTabsItem(item, index)"
- >
+ <div class="tab_items" v-for="(item, index) in tabsClassArr" :key="index"
+ @click="handleTabsItem(item, index)">
<span :class="tabsItemIndex === index ? 'active' : ''">{{ item.name }}</span>
</div>
</div>
@@ -58,23 +54,24 @@
<span class="collection" @click="handleCollectionClick(item)">
<span class="shu"></span>
</span>
- <span class="title_color">{{ item.name }}</span>
+ <span class="title_color">{{ tabsItemIndex == 3 ? item.futuresName : item.indexName }}</span>
</div>
<div class="bt">
- <span>{{ item.referred }}</span>
+ <span>{{ tabsItemIndex == 3 ? item.futuresCode : item.indexCode }}</span>
</div>
</div>
<div class="center_price">
<div class="tp">
- <span class="price_color">{{ item.price }}</span>
+ <span class="price_color">{{ tabsItemIndex == 3 ? Number(item.nowPrice).toFixed(2) : item.currentPoint
+ }}</span>
</div>
<div class="bt">
- <span>{{ item.time }}</span>
+ <span>{{ item.addTime | gettime }}</span>
</div>
</div>
<div class="right_bs">
<div class="tp">
- <span class="price_color">{{ item.applies + '%' }}</span>
+ <span class="price_color">{{ tabsItemIndex == 3 ? item.coinRate : item.floatRate + '%' }}</span>
</div>
<div class="bt"></div>
</div>
@@ -85,19 +82,14 @@
</div>
</div>
<div class="shai" v-if="dialogFlag" @click="openDialog()"></div>
- <div class="top_title" @click="openDialog()" ref="topTitle">
+ <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)"
- >
+ <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">
+ <div class="right_money" @click="openDialog()">
<div class="content_money" v-if="tabsIndex === 1">
<div class="top_price">
<div class="left">
@@ -123,168 +115,178 @@
</template>
<script>
+import * as api from "@/axios/api";
+import elalert from "@/components/elalert.vue";
export default {
name: "trading",
+ components: {
+ elalert
+ },
data() {
return {
tabsIndex: 1,
tabsArr: ["自选", "市场"],
tabClassActive: 1,
dialogFlag: false,
+ pageNum: 1,
+ stockPlate: "",
+ alertShow: false,
+ elType: "warning",
+ texts: "",
tabsClassArr: [
{
- name: "热门",
+ name: "指数",
+ type: 0
+ },
+ {
+ name: "沪深",
type: 1
},
{
- name: "外汇",
+ name: "科创",
type: 2
},
{
- name: "商品",
+ name: "期货",
type: 3
- },
- {
- name: "股票",
- type: 4
- },
- {
- name: "指数",
- type: 5
- },
- {
- name: "加密",
- type: 6
}
],
tabsItemIndex: 0,
- listArr: [
- {
- name: "香港50指数",
- referred: "HK50",
- price: 16445.5,
- time: "02:59:58",
- applies: 5.93,
- collection: true
- },
- {
- name: "香港50指数",
- referred: "HK50",
- price: 16445.5,
- time: "02:59:58",
- applies: 5.93,
- collection: true
- },
- {
- name: "香港50指数",
- referred: "HK50",
- price: 16445.5,
- time: "02:59:58",
- applies: 5.93,
- collection: true
- },
- {
- name: "香港50指数",
- referred: "HK50",
- price: 16445.5,
- time: "02:59:58",
- applies: 5.93,
- collection: true
- },
- {
- name: "香港50指数",
- referred: "HK50",
- price: 16445.5,
- time: "02:59:58",
- applies: 5.93,
- collection: false
- },
- {
- name: "香港50指数",
- referred: "HK50",
- price: 16445.5,
- time: "02:59:58",
- applies: 5.93,
- collection: false
- },
- {
- name: "香港50指数",
- referred: "HK50",
- price: 16445.5,
- time: "02:59:58",
- applies: 5.93,
- collection: true
- },
- {
- name: "香港50指数",
- referred: "HK50",
- price: 16445.5,
- time: "02:59:58",
- applies: 5.93,
- collection: false
- },
- {
- name: "香港50指数",
- referred: "HK50",
- price: 16445.5,
- time: "02:59:58",
- applies: 5.93,
- collection: false
- },
- {
- name: "香港50指数",
- referred: "HK50",
- price: 16445.5,
- time: "02:59:58",
- applies: 5.93,
- collection: false
- },
- {
- name: "香港50指数",
- referred: "HK50",
- price: 16445.5,
- time: "02:59:58",
- applies: 5.93,
- collection: false
- },
- {
- name: "香港50指数",
- referred: "HK50",
- price: 16445.5,
- time: "02:59:58",
- applies: 5.93,
- collection: false
- },
- {
- name: "香港50指数",
- referred: "HK50",
- price: 16445.5,
- time: "02:59:58",
- applies: 5.93,
- collection: false
- }
- ]
+ listArr: []
};
},
+ mounted() {
+ this.getListMarket();
+
+ },
methods: {
+ closeAlert() {
+ this.alertShow = false;
+ },
+ async getListMarket() {
+
+ // 获取指数列表
+ let result = await api.getListMarket()
+ if (result.status === 0) {
+ this.listArr = result.data
+ } else {
+ this.texts = result.msg;
+ this.alertShow = true;
+ }
+ },
+ async getStock() {
+ let opt = {
+ pageNum: this.pageNum,
+ pageSize: 15,
+ stockPlate: this.stockPlate,
+ }
+ let data = await api.getListMarket(opt)
+ if (data.status === 0) {
+
+ data.data.forEach(element => {
+ this.listArr.push(element)
+ })
+ } else {
+ this.texts = data.msg;
+ this.alertShow = true;
+ }
+ },
+ async getFutures() {
+ // 获取期货列表
+ let opt = {
+ homeShow: 1,
+ pageNum: this.pageNum,
+ pageSize: 15
+ }
+ let data = await api.getHomeFutures(opt)
+ if (data.status === 0) {
+ console.log(this.tabsItemIndex)
+ this.listArr = data.data
+ console.log("期货", this.listArr)
+ } else {
+ this.texts = data.msg;
+ this.alertShow = true;
+ }
+ },
handleTabsClick(item, index) {
- this.tabsIndex = index;
+ if (index == 0) {
+ this.$refs['topTitle'].style.height = '1.2821rem'
+ setTimeout(() => {
+ this.dialogFlag = false;
+ this.tabsIndex = index;
+ }, 800);
+ } else {
+ this.tabsIndex = index;
+ }
+
+
},
handleTabsItem(item, index) {
this.tabsItemIndex = index;
+ switch (item.type) {
+ case 0:
+ this.listArr = [];
+ this.getListMarket();
+ break;
+ case 1:
+ this.stockPlate = ""
+ this.listArr = [];
+ this.getStock();
+ break;
+ case 2:
+ this.stockPlate = "科创"
+ this.listArr = [];
+ this.getStock();
+ break;
+ case 3:
+ this.listArr = [];
+ this.getFutures();
+ break;
+ }
},
handleCollectionClick(item) {
item.collection = !item.collection;
},
openDialog() {
- if (!this.dialogFlag) {
- this.$refs['topTitle'].style.height = '7rem'
- }else {
- this.$refs['topTitle'].style.height = '1.2821rem'
- }
+ if (!this.dialogFlag) {
+ this.$refs['topTitle'].style.height = '7rem'
+ } else {
+ this.$refs['topTitle'].style.height = '1.2821rem'
+ }
this.dialogFlag = !this.dialogFlag;
}
- }
+ },
+ filters: {
+ 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;
+ }
+ },
};
</script>
@@ -293,15 +295,18 @@
width: 100%;
height: calc(100% - 1.3rem);
background: #fff;
- > .content {
+
+ >.content {
width: 100%;
height: 100%;
}
}
+
.tabs {
width: 100%;
height: 100%;
position: relative;
+
.search {
width: 100%;
height: 1rem;
@@ -309,29 +314,34 @@
align-items: center;
justify-content: center;
padding: 0 0.3rem;
+
.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;
@@ -339,12 +349,14 @@
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;
@@ -352,6 +364,7 @@
}
}
}
+
.top_title {
width: 100%;
height: 1.2821rem;
@@ -361,18 +374,21 @@
top: 0;
z-index: 9999999;
transition: all 1s;
+
>div {
width: 100%;
height: 1.2821rem;
display: flex;
align-items: center;
- justify-content: space-between;
+ justify-content: space-between;
}
+
.tabs_title {
width: 23%;
height: 100%;
display: flex;
}
+
.tb {
width: 50%;
height: 100%;
@@ -381,17 +397,20 @@
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;
@@ -400,13 +419,14 @@
display: -webkit-box;
white-space: nowrap;
- > div {
+ >div {
display: inline-block;
width: 15%;
height: 100%;
display: flex;
font-size: 0.4rem;
align-items: center;
+
span {
display: inline-block;
min-width: 40%;
@@ -415,6 +435,7 @@
line-height: 1.1538rem;
}
}
+
span.active {
color: rgb(2, 99, 226);
border-bottom: 0.07rem solid rgb(2, 99, 226);
@@ -422,9 +443,11 @@
transition: all 0.5s;
}
}
+
.scroll_tab::-webkit-scrollbar {
display: none;
}
+
.kai_mess {
width: 100%;
height: 1.2821rem;
@@ -432,6 +455,7 @@
display: flex;
justify-content: space-between;
position: absolute;
+
.left_identity_img {
width: 0.9744rem;
height: 100%;
@@ -439,11 +463,13 @@
justify-content: center;
align-items: center;
margin-left: 0.2rem;
+
img {
width: 0.6rem;
height: 0.6rem;
}
}
+
.text {
width: 80%;
height: 100%;
@@ -454,62 +480,75 @@
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%;
height: calc(100% - 1.2821rem - 1rem - 1.1538rem - 1.3333rem);
overflow-x: auto;
padding-bottom: 1.2821rem;
padding: 0 0.3rem;
+
.list_items {
width: 100%;
- > div {
+
+ >div {
width: 100%;
height: 1.0256rem;
display: flex;
margin: 0.5rem 0;
- > div {
- > div {
+
+ >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;
@@ -517,42 +556,53 @@
padding: 0 0.3rem;
color: #a1a2a4;
display: flex;
- > div {
+
+ >div {
display: flex;
align-items: center;
}
+
.varieties {
width: 45%;
}
+
.latest_price {
width: 35%;
}
+
.applies {
width: 20%;
}
}
+
.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;
@@ -561,28 +611,33 @@
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%;
display: flex;
align-items: center;
justify-content: space-between;
+
.left {
width: 0.8rem;
height: 0.4103rem;
@@ -594,23 +649,27 @@
align-items: center;
justify-content: center;
margin-left: 0.3rem;
+
span {
display: inline-block;
transform: scale(0.8);
font-weight: 600;
}
}
+
.right {
width: calc(100% - 1.2rem);
height: 100%;
display: flex;
align-items: center;
justify-content: flex-end;
+
span {
font-weight: 600;
}
}
}
+
.bottom_balance {
width: 100%;
height: 30%;
@@ -623,17 +682,20 @@
padding-right: 0.48rem;
}
}
+
.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%;
@@ -643,9 +705,11 @@
z-index: 9;
transition: all 0.5s;
}
+
.dialog.open {
top: 7%;
}
+
.shai {
position: absolute;
width: 100%;
@@ -655,6 +719,7 @@
z-index: 10;
transition: all 0.5s;
}
+
.shai.open {
top: 4%;
}
--
Gitblit v1.9.3