|  | @@ -2,23 +2,256 @@
 | 
	
		
			
				|  |  |   * @Description: 新闻中心
 | 
	
		
			
				|  |  |   * @Author: 空白格
 | 
	
		
			
				|  |  |   * @Date: 2022-08-22 10:20:21
 | 
	
		
			
				|  |  | - * @LastEditors: 空白格
 | 
	
		
			
				|  |  | - * @LastEditTime: 2022-08-22 10:25:48
 | 
	
		
			
				|  |  | + * @LastEditors: gcz
 | 
	
		
			
				|  |  | + * @LastEditTime: 2022-08-22 16:33:25
 | 
	
		
			
				|  |  |   * @FilePath: \veterans_client_web\src\views\NewsCenter\NewsCenterIndex.vue
 | 
	
		
			
				|  |  |   * @Copyright: Copyright (c) 2016~2022 by 空白格, All Rights Reserved.
 | 
	
		
			
				|  |  |  -->
 | 
	
		
			
				|  |  |  <template>
 | 
	
		
			
				|  |  |    <div class="app-main">
 | 
	
		
			
				|  |  | -    <BannerBreadcrumb title="新闻中心" :breadcrumb="false" />
 | 
	
		
			
				|  |  | +    <div class="BannerBreadcrumb-wrap">
 | 
	
		
			
				|  |  | +      <BannerBreadcrumb title="新闻中心" :breadcrumb="true" />
 | 
	
		
			
				|  |  | +      <div class="tabs">
 | 
	
		
			
				|  |  | +        <span v-for="(item,index) in tabList" 
 | 
	
		
			
				|  |  | +          @click="changeTab(index)" 
 | 
	
		
			
				|  |  | +          :class="{active:tabsActive==index}" :key="index">
 | 
	
		
			
				|  |  | +          {{item}}
 | 
	
		
			
				|  |  | +        </span>
 | 
	
		
			
				|  |  | +      </div>
 | 
	
		
			
				|  |  | +    </div>
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +    <section class="app-main-box">
 | 
	
		
			
				|  |  | +      <div class="app-main-box-content">
 | 
	
		
			
				|  |  | +        <div class="title" v-if="tabsActive==0">{{tabList[tabsActive]}}</div>
 | 
	
		
			
				|  |  | +        <div v-if="tabsActive==0" class="news-list" v-loading="loading">
 | 
	
		
			
				|  |  | +          <el-row :gutter="16">
 | 
	
		
			
				|  |  | +            <el-col
 | 
	
		
			
				|  |  | +              class="data-item"
 | 
	
		
			
				|  |  | +              :xs="24"
 | 
	
		
			
				|  |  | +              :sm="24"
 | 
	
		
			
				|  |  | +              :md="24"
 | 
	
		
			
				|  |  | +              :lg="24"
 | 
	
		
			
				|  |  | +              :xl="24"
 | 
	
		
			
				|  |  | +              v-for="(item, index) in dataList"
 | 
	
		
			
				|  |  | +              :key="index"
 | 
	
		
			
				|  |  | +            >
 | 
	
		
			
				|  |  | +              <div class="u-flex u-row-between" v-if="tabsActive==0">
 | 
	
		
			
				|  |  | +                <div class="artTitle u-line-1" >{{item.artTitle}}</div>
 | 
	
		
			
				|  |  | +                <div class="time">{{parseTime(item.updateTime, "{y}-{m}-{d}")}}</div>
 | 
	
		
			
				|  |  | +              </div>
 | 
	
		
			
				|  |  | +            </el-col>
 | 
	
		
			
				|  |  | +          </el-row>
 | 
	
		
			
				|  |  | +        </div>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        <el-tabs v-if="tabsActive==1" v-model="noticeActiveName" @tab-click="noticeClick">
 | 
	
		
			
				|  |  | +          <el-tab-pane 
 | 
	
		
			
				|  |  | +            v-for="(item,index) in noticeTypeList" :key="index" 
 | 
	
		
			
				|  |  | +            :label="item.label" 
 | 
	
		
			
				|  |  | +            :name="item.name">
 | 
	
		
			
				|  |  | +            <el-row :gutter="16">
 | 
	
		
			
				|  |  | +            <el-col
 | 
	
		
			
				|  |  | +              class="data-item"
 | 
	
		
			
				|  |  | +              :xs="24"
 | 
	
		
			
				|  |  | +              :sm="24"
 | 
	
		
			
				|  |  | +              :md="24"
 | 
	
		
			
				|  |  | +              :lg="24"
 | 
	
		
			
				|  |  | +              :xl="24"
 | 
	
		
			
				|  |  | +              v-for="(item, index) in dataList"
 | 
	
		
			
				|  |  | +              :key="index"
 | 
	
		
			
				|  |  | +            >
 | 
	
		
			
				|  |  | +              <div class="u-flex u-row-between" v-if="tabsActive==1">
 | 
	
		
			
				|  |  | +                <div class="artTitle u-line-1" >{{item.name}}</div>
 | 
	
		
			
				|  |  | +                <div class="time">{{parseTime(item.releasTime, "{y}-{m}-{d}")}}</div>
 | 
	
		
			
				|  |  | +              </div>
 | 
	
		
			
				|  |  | +            </el-col>
 | 
	
		
			
				|  |  | +          </el-row>
 | 
	
		
			
				|  |  | +            
 | 
	
		
			
				|  |  | +          </el-tab-pane>
 | 
	
		
			
				|  |  | +        </el-tabs>
 | 
	
		
			
				|  |  | +        <el-empty v-if="dataList<1" description="暂无数据"></el-empty>
 | 
	
		
			
				|  |  | +        <div class="pagination" v-if="total>queryParams.pageSize">
 | 
	
		
			
				|  |  | +          <el-pagination
 | 
	
		
			
				|  |  | +            background
 | 
	
		
			
				|  |  | +            layout="prev, pager, next"
 | 
	
		
			
				|  |  | +            :page-size="queryParams.pageSize"
 | 
	
		
			
				|  |  | +            :total="total"
 | 
	
		
			
				|  |  | +            @current-change="currentChange"
 | 
	
		
			
				|  |  | +          >
 | 
	
		
			
				|  |  | +          </el-pagination>
 | 
	
		
			
				|  |  | +        </div>
 | 
	
		
			
				|  |  | +      </div>
 | 
	
		
			
				|  |  | +    </section>
 | 
	
		
			
				|  |  |    </div>
 | 
	
		
			
				|  |  |  </template>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  <script>
 | 
	
		
			
				|  |  |  import BannerBreadcrumb from "@/components/BannerBreadcrumb";
 | 
	
		
			
				|  |  | +import {getNewsList} from "@/api/Home";
 | 
	
		
			
				|  |  | +import {getNoticeList} from "@/api/NewsCenter";
 | 
	
		
			
				|  |  | +import { parseTime } from "@/utils/utils";
 | 
	
		
			
				|  |  |  export default {
 | 
	
		
			
				|  |  |    name: "NewsCenterIndex",
 | 
	
		
			
				|  |  |    components: {
 | 
	
		
			
				|  |  |      BannerBreadcrumb,
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  | +  data() {
 | 
	
		
			
				|  |  | +    return {
 | 
	
		
			
				|  |  | +      parseTime: parseTime,
 | 
	
		
			
				|  |  | +      tabsActive:0,
 | 
	
		
			
				|  |  | +      tabList:['新闻动态','通知公告'],
 | 
	
		
			
				|  |  | +      loading: false,
 | 
	
		
			
				|  |  | +      queryParams: {
 | 
	
		
			
				|  |  | +        pageNum: 1,
 | 
	
		
			
				|  |  | +        pageSize: 10,
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      dataList:[],
 | 
	
		
			
				|  |  | +      total: 0,
 | 
	
		
			
				|  |  | +      noticeTypeList:[
 | 
	
		
			
				|  |  | +        {label:'系统通知',name:'0'},
 | 
	
		
			
				|  |  | +        {label:'培训通知',name:'2'},
 | 
	
		
			
				|  |  | +        {label:'就业通知',name:'3'},
 | 
	
		
			
				|  |  | +      ],
 | 
	
		
			
				|  |  | +      noticeActiveName:'0'
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  created() {
 | 
	
		
			
				|  |  | +    this.handleClick()
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  methods:{
 | 
	
		
			
				|  |  | +    changeTab(index){
 | 
	
		
			
				|  |  | +      this.queryParams.pageNum=1;
 | 
	
		
			
				|  |  | +      this.tabsActive = index;
 | 
	
		
			
				|  |  | +      this.handleClick()
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 获取新闻
 | 
	
		
			
				|  |  | +     * @date 2022-08-10
 | 
	
		
			
				|  |  | +     * @returns {any}
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    getNews() {
 | 
	
		
			
				|  |  | +      getNewsList(Object.assign({artCategoryId: 2},this.queryParams)).then((res) => {
 | 
	
		
			
				|  |  | +        this.dataList = res?.rows ?? [];
 | 
	
		
			
				|  |  | +        this.total = Number(res.total);
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 获取公告
 | 
	
		
			
				|  |  | +     * @date 2022-08-10
 | 
	
		
			
				|  |  | +     * @returns {any}
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    getNotice() {
 | 
	
		
			
				|  |  | +      let param = Object.assign({name: this.noticeActiveName},this.queryParams);
 | 
	
		
			
				|  |  | +      getNoticeList(param).then((res) => {
 | 
	
		
			
				|  |  | +        this.dataList = res?.rows ?? [];
 | 
	
		
			
				|  |  | +        this.total = Number(res.total);
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * tab点击事件
 | 
	
		
			
				|  |  | +     * @date 2022-08-10
 | 
	
		
			
				|  |  | +     * @param {any} tab
 | 
	
		
			
				|  |  | +     * @returns {any}
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    handleClick() {
 | 
	
		
			
				|  |  | +      switch (this.tabsActive) {
 | 
	
		
			
				|  |  | +        case 0:
 | 
	
		
			
				|  |  | +          this.getNews();
 | 
	
		
			
				|  |  | +          break;
 | 
	
		
			
				|  |  | +        case 1:
 | 
	
		
			
				|  |  | +          this.getNotice();
 | 
	
		
			
				|  |  | +          break;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 分页切换
 | 
	
		
			
				|  |  | +     * @date 2022-08-11
 | 
	
		
			
				|  |  | +     * @param {any} page
 | 
	
		
			
				|  |  | +     * @returns {any}
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    currentChange(page) {
 | 
	
		
			
				|  |  | +      this.queryParams.pageNum = page;
 | 
	
		
			
				|  |  | +      this.handleClick();
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    noticeClick(tab, event) {
 | 
	
		
			
				|  |  | +      this.getNotice()
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  </script>
 | 
	
		
			
				|  |  | +<style lang="scss" scoped>
 | 
	
		
			
				|  |  | +.app-main-box-content{
 | 
	
		
			
				|  |  | +  min-height: calc( 100vh - 73px - 104px - 64px - 23px - 100px - 40px );
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +.BannerBreadcrumb-wrap{
 | 
	
		
			
				|  |  | +  position: relative;
 | 
	
		
			
				|  |  | +  .tabs{
 | 
	
		
			
				|  |  | +    position: absolute;
 | 
	
		
			
				|  |  | +    right: 15%;
 | 
	
		
			
				|  |  | +    bottom: 18px;
 | 
	
		
			
				|  |  | +    span{
 | 
	
		
			
				|  |  | +      cursor: pointer;
 | 
	
		
			
				|  |  | +      font-size: 20px;
 | 
	
		
			
				|  |  | +      margin-left: 20px;
 | 
	
		
			
				|  |  | +      color: #7E7E7E;
 | 
	
		
			
				|  |  | +      &.active{
 | 
	
		
			
				|  |  | +        color: #f00;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +.title{
 | 
	
		
			
				|  |  | +  padding-bottom: 15px;
 | 
	
		
			
				|  |  | +  margin-bottom: 15px;
 | 
	
		
			
				|  |  | +  font-weight: 400;
 | 
	
		
			
				|  |  | +  font-size: 20px;
 | 
	
		
			
				|  |  | +  color: #000;
 | 
	
		
			
				|  |  | +  letter-spacing: 1.34px;
 | 
	
		
			
				|  |  | +  border-bottom: 1px solid #D5D5D5;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +.app-main-box-content{
 | 
	
		
			
				|  |  | +  // margin-bottom: 24px;
 | 
	
		
			
				|  |  | +  .data-item{
 | 
	
		
			
				|  |  | +    margin-bottom: 12px;
 | 
	
		
			
				|  |  | +    cursor: pointer;
 | 
	
		
			
				|  |  | +    &:hover{
 | 
	
		
			
				|  |  | +      .artTitle{
 | 
	
		
			
				|  |  | +        color: #ff3939;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    .artTitle{
 | 
	
		
			
				|  |  | +      font-weight: 400;
 | 
	
		
			
				|  |  | +      font-size: 16px;
 | 
	
		
			
				|  |  | +      color: #373737;
 | 
	
		
			
				|  |  | +      letter-spacing: 0.83px;
 | 
	
		
			
				|  |  | +      max-width: 600px;
 | 
	
		
			
				|  |  | +      line-height: 22px;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +.pagination {
 | 
	
		
			
				|  |  | +  text-align: center;
 | 
	
		
			
				|  |  | +  :deep(.el-pager .active) {
 | 
	
		
			
				|  |  | +    background-color: #ff3939;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  :deep(.el-pagination.is-background .el-pager li:not(.disabled).active) {
 | 
	
		
			
				|  |  | +    background-color: #ff3939;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// 修改tabs样式
 | 
	
		
			
				|  |  | +:deep(.el-tabs__item) {
 | 
	
		
			
				|  |  | +  font-size: 20px;
 | 
	
		
			
				|  |  | +  font-weight: 500;
 | 
	
		
			
				|  |  | +  color: #000000;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +:deep(.el-tabs__item:hover) {
 | 
	
		
			
				|  |  | +  color: #163da5;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +:deep(.el-tabs__item.is-active) {
 | 
	
		
			
				|  |  | +  color: #163da5;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +:deep(.el-tabs__active-bar) {
 | 
	
		
			
				|  |  | +  background-color: #163da5;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +</style>
 |