1
admin
2026-01-11 9cb99d3e0db2c59f334d1f670ae74ead12717b2d
1
10 files modified
224 ■■■■ changed files
src/App.vue 52 ●●●●● patch | view | raw | blame | history
src/axios/api.js 5 ●●●●● patch | view | raw | blame | history
src/locales/en.js 1 ●●●● patch | view | raw | blame | history
src/locales/tw.js 1 ●●●● patch | view | raw | blame | history
src/locales/zh.js 1 ●●●● patch | view | raw | blame | history
src/page/home/home.vue 52 ●●●●● patch | view | raw | blame | history
src/page/home/listcomponents/xingusg.vue 61 ●●●● patch | view | raw | blame | history
src/page/newUser/index.vue 14 ●●●● patch | view | raw | blame | history
src/page/newUser/setup.vue 8 ●●●● patch | view | raw | blame | history
static/css/public2.css 29 ●●●●● patch | view | raw | blame | history
src/App.vue
@@ -6,9 +6,9 @@
        <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>
          <!-- 其他图标 -->
@@ -222,6 +222,18 @@
</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;
}
@@ -268,6 +280,14 @@
    // 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 {
@@ -472,3 +492,31 @@
  }
}
</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>
src/axios/api.js
@@ -394,6 +394,11 @@
  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)
src/locales/en.js
@@ -821,6 +821,7 @@
  jy543: "Securities to Bank Transfer",
  jy544: "Discount Rate",
  jy545: "Remaining Share Percentage",
  jy546: "Remaining",
  
}
src/locales/tw.js
@@ -824,5 +824,6 @@
  jy543: "銀證轉出",
  jy544: "折價率",
  jy545: "剩餘份額百分比",
  jy546: "剩餘",
  
}
src/locales/zh.js
@@ -823,5 +823,6 @@
  jy543: "银证转出",
  jy544: "折价率",
  jy545: "剩余份额百分比",
  jy546: "剩余",
  
};
src/page/home/home.vue
@@ -60,7 +60,12 @@
            <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>
@@ -281,7 +286,8 @@
      show: false,
      secret: "",
      unreadCount: 0,
      messageTimer: null
      messageTimer: null,
      bannerList: []
    };
  },
  computed: {
@@ -292,6 +298,7 @@
  mounted() {
    this.getNewsList(1);
    this.stockgetZdfNumber();
    this.getSiteBannerList();
    this.kLineChart = init("Zline");
    this.kLineChart.setStyleOptions({
      candle: {
@@ -568,6 +575,28 @@
          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');
      }
    }
  }
};
@@ -719,6 +748,25 @@
      }
    }
  }
  .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 {
src/page/home/listcomponents/xingusg.vue
@@ -19,7 +19,7 @@
        <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>
@@ -40,29 +40,36 @@
                                </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>
@@ -365,6 +372,46 @@
        }
    }
    .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;
src/page/newUser/index.vue
@@ -219,7 +219,7 @@
        <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>
@@ -316,13 +316,13 @@
        </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,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAABapJREFUWEedl3lsVEUcx7+/995uu22xUO6IIqHIUYRCjAj8U6AVAgVjyLIVhCBXNFoQTUCUQCEQBKMFijGCIMohpRKPFlIsQjUKSIiWBgEBRRSD0FJaaLvHe2/GzGy33bdHd+n8tcfvN/OZ3z2EOBfPcqb4VHUKV/g44sjk4P0ASvWr8wYCXeOEKmJ0wm6ah6mypDGerSmWkGeiMx2GshyE5wEkx5Jv+b8JHJ9DYxsTj5ZcbU8nKgDPmpvo1ZoLAFoKwB7nwaFiPhA2J+iO1VS52xNpj4gAnvGu/lDwBYDMDh4cqlYFlTkjWSMMwDfeNZIpOAKgZ9TDFQXKqBFQZ0yFMnQQ+KWrML4qB/v+NGAY0dRuKQyT7ceLfwkWsABIf5vKSQDdLbskOUBdu4DS+0EZMVQeTmmdww7idfVgP54Bq74I/ud18LsNQGNTsFwNVDYm2BKtAHy00+FNUk6BMFxoKCOfgPb6IlBPK0tgN367Fubh78AqfoAyfizUqTnRZe/chfH+R2BnqoR6dUITe5pOlbjFl1YAT45rIziWBQ6w790G6tnN/9U0wesawP+9CX7hMtjZc2C/XQYYa7sdEZSMgVCeygQNHgB6uBeoSyqgaf5ErauHz/WSX56wKbGieHkrQEvQXQRgC+yYUHFAfvTNehXith1d1KMb7Pu2SXVvTl5gGx0qGyJcIS3gmeDaAcKC4ENiASiZGVDnOEF9eoPfuAnz04Ng5y6EcUYBEFbYmVhRvID42GmdvA7HzdAi0x6AMigdti1rAUVpO5Ax6EtWgV2y1p2oAEBTgtvdm7wT8lycuN/eQas9AG3xfBl05v4vYR46AnX6ZKgzn4NZWgFj607LPu0AgDjlkSc7bzvAFz4IgG1Fvox8fWkB2PlLshbYCgvAjv8EfUNR3AAA7SBvtus0B0bFA6BOGgf1RRfooRR/dDe7/ZkgXJHkkEWI32uE+UkxzPIT/oCPHIQtyYCfyZPtqgHQkm9tGJFcYHtvFZRhQ2ImBKu+AP2NtTEBANQKAG+kZhMRoLBAmtv48DOwU2fDQJTRT0J7eY50i3BPLAuILI8OUL4PUFVLHRB+FgDCz8LfoUvEhYiPiACmCe+kWaEqEiCiC+wl20GdH4Ivf6VsNmJ1CGBQOuxF68Dr78HnXBQKUBs1CG2bVsrGYxTtgvnNtx0GUKc9Ay1/Htiv56EvW2fNEMggjJyGotVqC2fJmq+/tsoCwP+7DdyPMHF1SgH16mFxgW3zWigZj8PYsQ/mwdIQC4g0jFKIRLu17ykC7Dbob78jO5m2ZD7U3JyYWWCWVcDYslM2Jtv6NwGfDt/sfNmQgpcsRNFKsRDUFr0A1ZkLXlsHffFK2RHpsUesJTgUhzHwv/4BpaXCtnUdqFsazJIyGNv3hko2J7jdvfzNKMf1MTjmh10twS4DiPo9Cn79BvQVG8Br7sS0AHXvCtuGFaC+fcCv/S0DGV6fVS/QjCSAfxISray1HQekqXsabIVr/MNGY5O8iVleCXAeDkIEdVKWtBxSksFv1UBfuhq8pi5UVgepGYkV+69EHUgsvkrrDO2txVCG+6sg//0PGB/sBrt4pVVMGTwA2itzQQP7y99ENTTWbw3ze4vCu4nHiuXwYx3JkpXTAIZFtLG43ZRsqHNngFI7SQuwypMwSsqgOXOhZI0BiMAb7sPcfRDm4WORrSRGMkfzaCotbbYABLkifCgNJkpJhjZ7OtRnJ8pK2bpME+bXR2HsORQ6iAZrRx9KA1JxjeXCdH37QJuXB2XYYDkFG7sOyEBtZ8UeywPKLUF5KKo7YuZBmEA1VDY9rodJQFU+zWzuNeAQT7Ow7IiTQQeh8IGfZsGbe3JmDgAzl4EwE0BSnAe7QdgPqBtFqrWnE/N13GYR8TxXcjlhHCfKJC6e5wg8j+o50TXivIo4TthNVhbv8/x/ix+oZ9mjVHoAAAAASUVORK5CYII="
              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>
@@ -339,19 +339,19 @@
              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>
@@ -962,7 +962,7 @@
  font-size: 0.3738rem;
  margin-top: 0.0801rem;
  font-weight: 700;
  margin-left: 0.534rem;
  // margin-left: 0.534rem;
}
.bdan h6 .bzz {
src/page/newUser/setup.vue
@@ -237,16 +237,16 @@
    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%;
@@ -254,7 +254,7 @@
    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;
}
static/css/public2.css
@@ -15155,26 +15155,35 @@
  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 {