| | |
| | | <div slot="right" class="header-right"> |
| | | <!-- 消息图标 - 始终显示(如果已登录) --> |
| | | <div class="message-icon-wrapper" @click="goToMessage" v-if="isLoggedIn"> |
| | | <svg class="message-icon" viewBox="0 0 24 24" fill="currentColor"> |
| | | <!-- <svg class="message-icon" viewBox="0 0 24 24" fill="currentColor"> |
| | | <path d="M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H6l-2 2V4h16v12z"/> |
| | | </svg> |
| | | </svg> --> |
| | | <span v-if="unreadCount > 0" class="message-badge">{{ unreadCount > 99 ? '99+' : unreadCount }}</span> |
| | | </div> |
| | | <!-- 其他图标 --> |
| | |
| | | </script> |
| | | |
| | | <style lang="less" scoped> |
| | | // 全局隐藏滚动条 |
| | | /deep/ html, |
| | | /deep/ body { |
| | | scrollbar-width: none; /* Firefox */ |
| | | -ms-overflow-style: none; /* IE and Edge */ |
| | | &::-webkit-scrollbar { |
| | | display: none; /* Chrome, Safari, Opera */ |
| | | width: 0; |
| | | height: 0; |
| | | } |
| | | } |
| | | |
| | | /deep/ .van-list__finished-text { |
| | | line-height: 1.925926rem !important; |
| | | } |
| | |
| | | // height: calc(100% - 1rem); |
| | | box-sizing: border-box; |
| | | overflow-y: auto; |
| | | // 隐藏滚动条 |
| | | scrollbar-width: none; /* Firefox */ |
| | | -ms-overflow-style: none; /* IE and Edge */ |
| | | &::-webkit-scrollbar { |
| | | display: none; /* Chrome, Safari, Opera */ |
| | | width: 0; |
| | | height: 0; |
| | | } |
| | | } |
| | | |
| | | &.red-theme { |
| | |
| | | } |
| | | } |
| | | </style> |
| | | |
| | | <style lang="less"> |
| | | /* 全局隐藏滚动条 - 确保整个项目都不显示滚动条 */ |
| | | html, |
| | | body { |
| | | scrollbar-width: none; /* Firefox */ |
| | | -ms-overflow-style: none; /* IE and Edge */ |
| | | } |
| | | |
| | | html::-webkit-scrollbar, |
| | | body::-webkit-scrollbar { |
| | | display: none; /* Chrome, Safari, Opera */ |
| | | width: 0; |
| | | height: 0; |
| | | } |
| | | |
| | | /* 隐藏所有元素的滚动条 */ |
| | | * { |
| | | scrollbar-width: none; /* Firefox */ |
| | | -ms-overflow-style: none; /* IE and Edge */ |
| | | } |
| | | |
| | | *::-webkit-scrollbar { |
| | | display: none; /* Chrome, Safari, Opera */ |
| | | width: 0; |
| | | height: 0; |
| | | } |
| | | </style> |
| | |
| | | return post('/api/site/getBannerByPlat.do', options) |
| | | } |
| | | |
| | | // 获取站点banner |
| | | export function getSiteBanner(options) { |
| | | return post('/api/user/getSiteBanner.do', options) |
| | | } |
| | | |
| | | // 公告列表 |
| | | export function getArtList(options) { |
| | | return post('/api/art/list.do', options) |
| | |
| | | jy543: "Securities to Bank Transfer", |
| | | jy544: "Discount Rate", |
| | | jy545: "Remaining Share Percentage", |
| | | jy546: "Remaining", |
| | | |
| | | } |
| | | |
| | |
| | | jy543: "銀證轉出", |
| | | jy544: "折價率", |
| | | jy545: "剩餘份額百分比", |
| | | jy546: "剩餘", |
| | | |
| | | } |
| | |
| | | jy543: "银证转出", |
| | | jy544: "折价率", |
| | | jy545: "剩余份额百分比", |
| | | jy546: "剩余", |
| | | |
| | | }; |
| | |
| | | <img src="@/assets/img/b1.png" style="width: 100%;height: 170px;border-radius: 14px;" /> |
| | | </div> --> |
| | | <div style="margin: 0 10px;margin-top: 30px;margin-bottom: 30px;"> |
| | | <img src="@/assets/img/banner-home.png" style="width: 100%;height: 170px;border-radius: 14px;" /> |
| | | <van-swipe class="banner-swipe" :autoplay="3000" indicator-color="white" v-if="bannerList && bannerList.length > 0"> |
| | | <van-swipe-item v-for="(item, index) in bannerList" :key="index"> |
| | | <img :src="item.bannerUrl" style="width: 100%;height: 4.5rem;border-radius: 14px;object-fit: cover;" @click="handleBannerClick(item)" /> |
| | | </van-swipe-item> |
| | | </van-swipe> |
| | | <img v-else src="@/assets/img/banner-home.png" style="width: 100%;height: 170px;border-radius: 14px;" /> |
| | | </div> |
| | | </div> |
| | | <div style="width: 100%; height: 40px;"></div> |
| | |
| | | show: false, |
| | | secret: "", |
| | | unreadCount: 0, |
| | | messageTimer: null |
| | | messageTimer: null, |
| | | bannerList: [] |
| | | }; |
| | | }, |
| | | computed: { |
| | |
| | | mounted() { |
| | | this.getNewsList(1); |
| | | this.stockgetZdfNumber(); |
| | | this.getSiteBannerList(); |
| | | this.kLineChart = init("Zline"); |
| | | this.kLineChart.setStyleOptions({ |
| | | candle: { |
| | |
| | | elAlertText: data.msg |
| | | }); |
| | | } |
| | | }, |
| | | async getSiteBannerList() { |
| | | try { |
| | | let data = await api.getSiteBanner(); |
| | | if (data.status === 0 && data.data) { |
| | | let list = Array.isArray(data.data) ? data.data : []; |
| | | // 按照 isOrder 从小到大排序 |
| | | this.bannerList = list.sort((a, b) => { |
| | | const orderA = a.isOrder || 0; |
| | | const orderB = b.isOrder || 0; |
| | | return orderA - orderB; |
| | | }); |
| | | } |
| | | } catch (error) { |
| | | console.error('获取轮播图失败:', error); |
| | | this.bannerList = []; |
| | | } |
| | | }, |
| | | handleBannerClick(item) { |
| | | if (item.targetUrl || item.linkUrl) { |
| | | window.open(item.targetUrl || item.linkUrl, '_blank'); |
| | | } |
| | | } |
| | | } |
| | | }; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .banner-swipe { |
| | | width: 100%; |
| | | height: 4.5rem; |
| | | border-radius: 14px; |
| | | overflow: hidden; |
| | | |
| | | .van-swipe-item { |
| | | width: 100%; |
| | | height: 100%; |
| | | |
| | | img { |
| | | width: 100%; |
| | | height: 100%; |
| | | object-fit: cover; |
| | | cursor: pointer; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .dang { |
| | |
| | | <div> |
| | | <van-list v-model="loading" :finished="finished" :finished-text="$t('hj43')" @load="onLoad" offset="500" |
| | | :immediate-check="false"> |
| | | <div class="skm" v-for="(item, index) in shengouList" :key="index"> |
| | | <div class="skm" v-for="(item, index) in shengouList" :key="index" @click="getshengou(1, item)"> |
| | | <div class="shead shn"> |
| | | <div class="shl"> |
| | | <h6>{{ item.name }}</h6> |
| | |
| | | </a> |
| | | </p> |
| | | </div> |
| | | <div v-if="shengouIdx == 0"> |
| | | <!-- <div v-if="shengouIdx == 0"> |
| | | <div class="she1" @click="getshengou(1, item)"><span style="font-size: 0.32rem;"> {{ |
| | | $t("jy98") }}</span><span> {{ $t("jy94") }}</span></div> |
| | | <div class="she2" @click="getshengou(2, item)"><span style="font-size: 0.32rem;"> {{ |
| | | $t("jy99") }}</span><span> {{ $t("jy100") }}</span></div> |
| | | </div> |
| | | </div> --> |
| | | <p class="shr" v-if="shengouIdx == 1"> {{ $t("hj59") }} |
| | | <span>{{ dayjs(item.subscribeTime).format('YYYY-MM-DD') }}</span> |
| | | </p> |
| | | </div> |
| | | <div class="shead shn" style="padding-top: 0px !important;" v-if="shengouIdx == 0"> |
| | | <p class="shr"> |
| | | <!-- <p class="shr"> |
| | | {{ $t("hj59") }} |
| | | <span>{{ dayjs(item.subscribeTime).format('YYYY-MM-DD') }}</span> |
| | | </p> |
| | | </p> --> |
| | | </div> |
| | | <div class="plkm"> |
| | | <p><span> {{ $t("jy101") }}</span><a>{{ item.price }}/ {{ $t("jy96") }}</a></p> |
| | | <p><span> {{ $t("jy102") }}</span><a>{{ item.pe }}</a></p> |
| | | <!-- <p><span> {{ $t("jy102") }}</span><a>{{ item.pe }}</a></p> --> |
| | | <p style="display: none;"><span> {{ $t("jy103") }}</span><a> 0.75{{ $t("jy104") }}</a></p> |
| | | <p><span> {{ $t("jy105") }}</span><a>{{ item.orderNumber }} {{ $t("jy104") }}</a></p> |
| | | |
| | | <p><span> {{ $t("jy545") }}</span><a>{{ item.residualShare || '--' }}%</a></p> |
| | | <div class="residual-progress" v-if="item.residualShare !== undefined && item.residualShare !== null"> |
| | | <div class="progress-bar-wrapper"> |
| | | <div class="progress-bar-bg"> |
| | | <div class="progress-bar-fill" :style="{ width: (item.residualShare || 0) + '%' }"></div> |
| | | </div> |
| | | <span class="progress-text">【{{ $t("jy546") }}{{ item.residualShare || 0 }}%】</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </van-list> |
| | |
| | | } |
| | | } |
| | | |
| | | .residual-progress { |
| | | width: 100%; |
| | | margin-top: 0.4rem; |
| | | |
| | | .progress-bar-wrapper { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 0.2rem; |
| | | |
| | | .progress-bar-bg { |
| | | flex: 1; |
| | | height: 0.3rem; |
| | | background-color: #f0f0f0; |
| | | border-radius: 0.15rem; |
| | | overflow: hidden; |
| | | position: relative; |
| | | |
| | | .progress-bar-fill { |
| | | height: 100%; |
| | | background: linear-gradient(90deg, #f33030 0%, #d73d3d 100%); |
| | | border-radius: 0.15rem; |
| | | position: absolute; |
| | | left: 0; |
| | | top: 0; |
| | | transition: width 0.3s ease; |
| | | min-width: 0; |
| | | } |
| | | } |
| | | |
| | | .progress-text { |
| | | color: #333; |
| | | font-size: 0.28rem; |
| | | white-space: nowrap; |
| | | font-weight: 500; |
| | | flex-shrink: 0; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .shn { |
| | | justify-content: space-between; |
| | | |
| | |
| | | <div class="rety"> |
| | | <div class="lingdang-wrapper" @click="$router.push('/notify')" v-if="isLoggedIn"> |
| | | <img class="lingdang" src="@/assets/img/消息中心.png" alt="" /> |
| | | <span v-if="unreadCount > 0" class="lingdang-badge"></span> |
| | | <!-- <span v-if="unreadCount > 0" class="lingdang-badge"></span> --> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | </div> |
| | | |
| | | <div class="bdan"> |
| | | <p style="display: flex; align-items: center;font-family: '宋体';"> |
| | | <p style="display: flex; align-items: center;font-family: '宋体';justify-content: right;"> |
| | | <img |
| | | src="data:image/png;base64,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" |
| | | style="width: 0.4272rem; height: 0.4272rem; margin-right: 0.1602rem;" /> |
| | | {{ $t("jy537") }} |
| | | </p> |
| | | <h6 style="margin-left: 0.534rem;"> |
| | | <h6 style="margin-left: 0.534rem;text-align: right;"> |
| | | <span class="bzz" v-if="!selectUserFlag">{{ |
| | | "¥ " + $store.state.userInfo.enableIndexAmt |
| | | }}</span> |
| | |
| | | style="width: 0.4272rem; height: 0.4272rem; margin-right: 0.1602rem; " /> |
| | | {{ $t("jy12") }} |
| | | </p> |
| | | <h6 style="margin-left: 0.534rem;"> |
| | | <h6> |
| | | {{ "¥ " + $store.state.userInfo.allProfitAndLose }} |
| | | </h6> |
| | | </div> |
| | | |
| | | <div class="bdan"> |
| | | <p style="display: flex; align-items: center; font-family: '宋体';"> |
| | | <p style="display: flex; align-items: center; font-family: '宋体';justify-content: right;"> |
| | | <img |
| | | src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAA/hJREFUWEfFl11sVEUUx38zu620yEdwaUWjUFEjKFoMKjaibJRGWkmMSFBfqU9Gow8Uw4ua+FJJ/HgwMVSNT9UYeRIbU0pKdC0lJrbpA9KUpCkVsWmBNrDttrt3xsyd/ea2965s47zc5M455/+fM+ecOUcQcOkebsUJNaN0FCHqQdcBq9Lq0yBG0HoAKXoIOT+JKNeDmBZ+Qvpn7iUsD6F5FVjuJ5/ejyP4lpRqE89zfjGdBQnoHpbhyPfRvANUBgQuFptH8ykV6j0RJeFlw5OAPslGlPwBqP+PwMVqAzhqn5c3biCgT/IoSnYCtWUCz5gZR6om8Sx/5NstIODed0j2AmvLDJ4xN4GjGvI9kSWge6liRp5G80hZwNdE4aEOSIxBfxMkJzNmB1mutosGZs2PHIEu2YagtSzgxsjDx6DmRWvu7AH4+5ucac1HolEdyhJIB92fQIUvgYrbILIbpn6D2RFvcRGCrZ2w5jlIXoXft8NMQTYmcdRmcxWuB3S3bEfT4gtuBB4/Ayu3WZfG7gEnXqhmwDe1Q2oaxj6zX0OieGm+Eo2qRegYK5iVlwIXmZ1XIGwKoIZf18PcxZxpIS24cw2GTPnQi50pTpVaJ3R3aD9afxfo9LX7oO4wzI1DeCVMdsLIh2lVAZsNeByG3vYDtzpCvCL0CXkUeN2XQO3LsP5gOqIvg6yELd/bOEhdger7ITkFQ28FA7eA7UKfCPWBfmJRAjV7YUNrDjwjXBGBZ/6xyZSaglORUsCN3hnjgQnAaBYu42ITxSbq72yB/ub8XLay4dXw9CXrjflx+OUO+3/TUah5KWfPuQ6xDV5nnDQE5jwfm8d6YZVxjIbYRkiMejsp0mzz/eLXMH3aytT/CJGmQvnukJf+/MIEdl61gWZWrA4SF3zDJCtQIgHvKzBBd9ebMHEcRo94g4dWgAzn9lLXQKdK8YC5ggBB6AV/yzrYMZZfzWH0Yxg+WAIBG4TB0rCYxLK74amiUvzXF3DujRIImDT0K0Qm1badAmfGUghVQ/9ue/KbJeAWIr9SbE76wOcwsCcX4ecP2xp/cwRmqFK328eoS36J4IBnpC0Vgcxj5BKwndBZz+d4aQgk0epB0ciwf0OyNASOiF3KbX4KW7K47DO9TMFVlJ/AIAn1pNiDG9X+TWllDTScg+Rly6tyLfRttVmx4wKIvEJkCtbwu7ClA2r3F74FPe4QtXBTmpH+X9vyLAkblMduuI7gr0Gx5CCO2htoMMmSMKNZUn6AcEcz/2bVm1wSzSclj2b5tnQX9yFlK5rXgOqATphF0wGqzaTaYjq+03GeR8x4/gJaR9GiHuGO56vT+1NoMYLQAwh3PD8edDz/F5zhrmiE4ANeAAAAAElFTkSuQmCC" |
| | | style="width: 0.4272rem; height: 0.4272rem; margin-right: 0.1602rem;" /> |
| | | {{ $t("jy13") }} |
| | | </p> |
| | | <h6 style="margin-left: 0.534rem;"> |
| | | <h6 style="margin-left: 0.534rem;text-align: right;"> |
| | | {{ "¥ " + ($store.state.userInfo.historyProfitLoss || "0.00") }} |
| | | </h6> |
| | | </div> |
| | |
| | | font-size: 0.3738rem; |
| | | margin-top: 0.0801rem; |
| | | font-weight: 700; |
| | | margin-left: 0.534rem; |
| | | // margin-left: 0.534rem; |
| | | } |
| | | |
| | | .bdan h6 .bzz { |
| | |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .avatar-uploader ::v-deep .el-upload { |
| | | .avatar-uploader /deep/ .el-upload { |
| | | width: 1.1748rem; |
| | | height: 1.1748rem; |
| | | } |
| | | |
| | | .avatar-uploader ::v-deep .el-upload__input { |
| | | .avatar-uploader /deep/ .el-upload__input { |
| | | opacity: 0 !important; |
| | | } |
| | | |
| | | .avatar-uploader ::v-deep .el-upload--picture-card { |
| | | .avatar-uploader /deep/ .el-upload--picture-card { |
| | | width: 1.1748rem; |
| | | height: 1.1748rem; |
| | | border-radius: 50%; |
| | |
| | | background: transparent; |
| | | } |
| | | |
| | | .avatar-uploader ::v-deep .el-upload--picture-card .el-upload__input { |
| | | .avatar-uploader /deep/ .el-upload--picture-card .el-upload__input { |
| | | opacity: 0; |
| | | } |
| | | |
| | |
| | | text-decoration: none; |
| | | } |
| | | |
| | | /* 隐藏滚动条但保持滚动功能 */ |
| | | ::-webkit-scrollbar { |
| | | width: 5px; |
| | | height: 5px; |
| | | display: none; |
| | | width: 0; |
| | | height: 0; |
| | | } |
| | | |
| | | ::-webkit-scrollbar-track-piece { |
| | | background-color: rgba(0, 0, 0, 0.2); |
| | | -webkit-border-radius: 6px; |
| | | display: none; |
| | | } |
| | | |
| | | ::-webkit-scrollbar-thumb:vertical { |
| | | height: 5px; |
| | | background-color: hsla(0, 0%, 49%, 0.7); |
| | | -webkit-border-radius: 6px; |
| | | display: none; |
| | | } |
| | | |
| | | ::-webkit-scrollbar-thumb:horizontal { |
| | | width: 5px; |
| | | background-color: hsla(0, 0%, 49%, 0.7); |
| | | -webkit-border-radius: 6px; |
| | | display: none; |
| | | } |
| | | |
| | | /* 全局隐藏滚动条 - 跨浏览器兼容 */ |
| | | * { |
| | | scrollbar-width: none; /* Firefox */ |
| | | -ms-overflow-style: none; /* IE and Edge */ |
| | | } |
| | | |
| | | *::-webkit-scrollbar { |
| | | display: none; /* Chrome, Safari, Opera */ |
| | | width: 0; |
| | | height: 0; |
| | | } |
| | | |
| | | input { |