123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488 |
- <template>
- <div class="home">
- <div class="top-btns">
- <div class="row">
- <button class="btn" @click="toInvitePeople">
- <img src="@/assets/1.png" alt="邀请百姓" class="btn-icon" />
- <span>邀请百姓</span>
- </button>
- <button class="btn" @click="toOfficialGroup">
- <img src="@/assets/2.png" alt="官方群聊" class="btn-icon" />
- <span>官方群聊</span>
- </button>
- </div>
- <div class="kefu">
- <img src="@/assets/kefu.jpg" alt="客服" />
- </div>
- <div class="row">
- <button class="btn" @click="toAppDownload">
- <img src="@/assets/3.png" alt="APP下载" class="btn-icon" />
- <span>APP下载</span>
- </button>
- <button class="btn" @click="toCultureDetail">
- <img src="@/assets/4.png" alt="央企文化" class="btn-icon" />
- <span>央企文化</span>
- </button>
- </div>
- </div>
- <div class="carousel">
- <van-swipe
- :autoplay="3000"
- indicator-color="#ed4b39"
- style="width: 100%; height: 100px; border-radius: 8px; overflow: hidden;"
- >
- <van-swipe-item v-for="(banner, index) in banners" :key="index">
- <img
- :src="banner"
- alt="轮播图"
- style="width: 100%; height: 100px; object-fit: cover;"
- />
- </van-swipe-item>
- </van-swipe>
- </div>
- <div class="reward-section">
- <div class="reward-table">
- <div class="reward-row header">
- <span>团队奖励</span>
- <span>一级</span>
- <span>二级</span>
- <span>三级</span>
- </div>
- <div class="reward-row value">
- <span></span>
- <span>20%</span>
- <span>10%</span>
- <span>5%</span>
- </div>
- </div>
- <button
- class="party-btn"
- :class="{ 'is-member': userInfo.isdangyuan === 1 }"
- @click="userInfo.isdangyuan === 0 && toApply()"
- >
- {{ userInfo.isdangyuan === 1 ? '已是党员' : '党员申请' }}
- </button>
- </div>
- <div class="news-title">新闻中心</div>
- <div class="news-list">
- <div
- class="news_content"
- v-for="(news, index) in newsList"
- :key="index"
- v-html="news.content"
- ></div>
- </div>
- <van-dialog
- v-model="showAuthDialog"
- :show-confirm-button="false"
- :show-cancel-button="false"
- :close-on-click-overlay="true"
- class="auth-dialog"
- v-if="userInfo.if_real === 0"
- >
- <div class="close-icon-wrapper">
- <van-icon name="cross" class="close-icon" @click="showAuthDialog = false" />
- </div>
- <div class="auth-content">
- <p class="auth-text">你还未进行实名认证</p>
- <button class="auth-btn" @click="toAuth">去认证</button>
- </div>
- </van-dialog>
- <van-dialog
- v-model="showDialog"
- :show-confirm-button="false"
- :show-cancel-button="false"
- :close-on-click-overlay="true"
- class="welcome-dialog"
- v-if="userInfo.gonggao"
- >
- <div class="close-icon-wrapper">
- <van-icon name="cross" class="close-icon" @click="showDialog = false" />
- </div>
- <div class="dialog-title">{{userInfo.gonggao.title}}</div>
- <div class="dialog-content" v-html="userInfo.gonggao.value"></div>
- </van-dialog>
- </div>
- </template>
- <script>
- import { getBanners, getUserInfo, getNews } from '@/api/home';
- import { Swipe, SwipeItem, Dialog, Icon } from 'vant';
- import Vue from 'vue';
- export default {
- name: "Home",
- data() {
- return {
- banners: [],
- userInfo: {
- gonggao: null,
- if_real: 0,
- link: []
- },
- newsList: [],
- showDialog: true,
- showAuthDialog: false,
- };
- },
- components: {
- [Swipe.name]: Swipe,
- [SwipeItem.name]: SwipeItem,
- [Icon.name]: Icon,
- },
- created() {
- Vue.use(Dialog);
- },
- mounted() {
- this.getBanners();
- this.getUserInfo();
- this.getNewsDetail()
- },
- methods: {
- async getUserInfo() {
- const res = await getUserInfo();
- this.userInfo = res.data;
- if (this.userInfo.if_real === 0) {
- this.showAuthDialog = true;
- }
- },
- async getBanners() {
- const formData = new FormData();
- formData.append('cid', 5);
- const res = await getBanners(formData);
- this.banners = res.data
- },
- async getNewsDetail() {
- const res = await getNews()
- this.newsList = res.data
- },
- toOfficialGroup() {
- window.open(this.userInfo.link[2].value, '_blank');
- },
- toAppDownload() {
- window.open(this.userInfo.link[1].value, '_blank');
- },
- toCultureDetail() {
- this.$router.push('/culture/detail');
- },
- toInvitePeople() {
- this.$router.push('/InvitePeople');
- },
- toApply(){
- this.$router.push('/Apply');
- },
- toAuth() {
- this.$router.push('/user-center');
- this.showAuthDialog = false;
- }
- }
- };
- </script>
- <style lang="scss" scoped>
- .home {
- min-height: 100vh;
- width: 100%;
- background: url('~@/assets/dabag.png') no-repeat;
- background-size: cover;
- background-attachment: fixed;
- display: flex;
- flex-direction: column;
- padding:100px 18px 80px;
- box-sizing: border-box;
- position: relative;
- }
- .top-btns {
- width: 100%;
- display: flex;
- justify-content: space-between;
- margin-top: 15px;
-
- .row {
- display: flex;
- justify-content: center;
- flex-direction: column;
- margin-bottom: 12px;
- width: 28%;
- }
- .kefu {
- height: 80px;
- background: #fff;
- border: 2px solid #fff;
- width: 24%;
- img {
- width: 100%;
- height: 100%;
- object-fit: cover;
- }
- }
- .btn {
- width: 100%;
- height: 36px;
- background: #fff;
- border: none;
- border-radius: 6px;
- font-size: 14px;
- color: #000;
- font-weight: 500;
- box-shadow: 0 2px 8px rgba(0,0,0,0.04);
- cursor: pointer;
- transition: background 0.2s;
- margin-bottom: 12px;
- display: flex;
- align-items: center;
- padding: 0 8px;
- white-space: nowrap;
- &:hover {
- background: #ffeaea;
- }
- .btn-icon {
- width: 18px;
- height: 18px;
- margin-right: 4px;
- flex-shrink: 0;
- }
- span {
- flex: 0 1 auto;
- text-align: left;
- }
- }
- }
- .carousel {
- width: 100%;
- max-width: 500px;
- margin: 0 auto 16px auto;
- height: 100px;
- background: #fff;
- border-radius: 8px;
- display: flex;
- align-items: center;
- justify-content: center;
- font-size: 20px;
- color: #b20000;
- font-weight: 500;
- box-shadow: 0 2px 8px rgba(0,0,0,0.04);
- }
- .reward-section {
- width: 90%;
- background: #fff;
- border-radius: 8px;
- margin: 0 auto 16px auto;
- display: flex;
- align-items: center;
- justify-content: space-between;
- padding: 15px;
- box-shadow: 0 2px 8px rgba(0,0,0,0.04);
- .reward-table {
- display: grid;
- grid-template-columns: 1.5fr 1fr 1fr 1fr;
- width: 100%;
- .reward-row {
- display: contents;
- &.header span,
- &.value span {
- padding: 4px 0;
- text-align: center;
- font-size: 12px;
- color: #000;
- }
- &.header span {
- font-weight: bold;
- }
- }
- .reward-row.value span {
- font-weight: 500;
- }
- }
- .party-btn {
- width: 130px;
- background: #ed4b39;
- color: #fff;
- border: none;
- border-radius: 20px;
- padding: 4px 8px;
- font-size: 14px;
- font-weight: 500;
- margin-left: 12px;
- cursor: pointer;
- transition: all 0.2s;
-
- &:hover {
- background: #c9301c;
- }
- &.is-member {
- background: #999;
- cursor: not-allowed;
-
- &:hover {
- background: #999;
- }
- }
- }
- }
- .news-title {
- width: 90%;
- margin: 24px auto 0 auto;
- color: #fff;
- font-size: 20px;
- font-weight: bold;
- text-shadow: 0 2px 8px rgba(0,0,0,0.12);
- }
- .news-list {
- width: 100%;
- padding-bottom: 40px;
- overflow-x: hidden;
- flex: 1;
- display: flex;
- flex-direction: column;
- }
- .news_content {
- width: 100%;
- min-height: 100px;
- border: none;
- margin: 16px auto 0;
- border-radius: 8px;
- background: #fff;
- padding: 15px;
- box-shadow: 0 2px 8px rgba(0,0,0,0.04);
- box-sizing: border-box;
-
- &:last-child {
- margin-bottom: 20px;
- }
- :deep(p) {
- margin: 0;
- padding: 0;
- display: flex;
- align-items: flex-start;
- gap: 15px;
- flex-wrap: wrap;
- }
- :deep(img) {
- width: 120px;
- height: 90px;
- object-fit: cover;
- border-radius: 4px;
- flex-shrink: 0;
- }
- :deep(span) {
- flex: 1;
- min-width: 200px;
- font-size: 14px;
- line-height: 1.6;
- color: #333;
- }
- :deep(div) {
- width: 100%;
- display: flex;
- align-items: flex-start;
- gap: 15px;
- margin-bottom: 10px;
- }
- :deep(*:not(img)) {
- max-width: 100%;
- word-break: break-word;
- }
- }
- .close-icon-wrapper {
- position: absolute;
- top: 16px;
- right: 16px;
- z-index: 1;
-
- .close-icon {
- font-size: 20px;
- color: #969799;
- cursor: pointer;
- padding: 4px;
-
- &:hover {
- color: #323233;
- }
- }
- }
- .dialog-title {
- text-align: center;
- font-size: 18px;
- font-weight: bold;
- padding: 16px 0;
- margin-top: 8px;
- }
- .welcome-dialog {
- :deep(.van-dialog__content) {
- padding: 20px;
- position: relative;
- }
- }
- .dialog-content {
- max-width: 80%;
- max-height: 70vh;
- overflow-y: auto;
- text-align: center;
- padding: 20px 0;
- margin: 0 auto;
-
- p {
- margin: 10px 0;
- font-size: 16px;
- color: #333;
- }
- }
- .auth-dialog {
- :deep(.van-dialog__content) {
- padding: 30px 20px;
- position: relative;
- }
- }
- .auth-content {
- text-align: center;
- height: 120px;
-
- .auth-text {
- font-size: 16px;
- color: #333;
- margin-bottom: 20px;
- margin-top:12px;
- }
-
- .auth-btn {
- width: 83%;
- height: 36px;
- background: #ed4b39;
- color: #fff;
- border: none;
- border-radius: 18px;
- font-size: 14px;
- font-weight: 500;
- cursor: pointer;
- transition: background 0.2s;
- margin-top:20px;
-
- &:hover {
- background: #c9301c;
- }
- }
- }
- </style>
|