瀏覽代碼

Merge remote-tracking branch 'origin/麦塔' into 麦塔

wangguoyu 5 年之前
父節點
當前提交
5a0ebc16c6
共有 27 個文件被更改,包括 976 次插入225 次删除
  1. 1 2
      src/App.vue
  2. 6 6
      src/api/hangyezixun.js
  3. 56 0
      src/api/newsClassify.js
  4. 10 3
      src/assets/css/cus-website/cus-website-common.scss
  5. 53 37
      src/assets/css/cus-website/cus-website-page.scss
  6. 二進制
      src/assets/images/client/carousels/1.jpg
  7. 二進制
      src/assets/images/client/carousels/2.jpg
  8. 二進制
      src/assets/images/client/carousels/3.jpg
  9. 二進制
      src/assets/images/client/carousels/4.jpg
  10. 二進制
      src/assets/images/client/carousels/5.jpg
  11. 17 5
      src/router.js
  12. 27 74
      src/views/client/Index.vue
  13. 80 26
      src/views/management/HangYeZiXun/HangYeZiXunConfig/index.vue
  14. 12 9
      src/views/management/HangYeZiXun/components/Pagination.vue
  15. 69 0
      src/views/management/HangYeZiXun/components/Select.vue
  16. 7 2
      src/views/management/HangYeZiXun/components/Table.vue
  17. 85 20
      src/views/management/HangYeZiXun/index.vue
  18. 78 0
      src/views/management/XinWenFenLei/components/Pagination.vue
  19. 113 0
      src/views/management/XinWenFenLei/components/Table.vue
  20. 0 0
      src/views/management/XinWenFenLei/components/paginationData.js
  21. 0 0
      src/views/management/XinWenFenLei/components/tableData.js
  22. 324 0
      src/views/management/XinWenFenLei/index.vue
  23. 14 8
      src/views/management/YouQingLianJie/components/Pagination.vue
  24. 1 1
      src/views/management/YouQingLianJie/components/Table.vue
  25. 0 14
      src/views/management/YouQingLianJie/components/paginationData.js
  26. 0 11
      src/views/management/YouQingLianJie/components/tableData.js
  27. 23 7
      src/views/management/YouQingLianJie/index.vue

+ 1 - 2
src/App.vue

@@ -24,12 +24,11 @@
 <style lang="scss">
     #app {
         font-family: "Helvetica Neue",Helvetica,Arial,"微软雅黑",sans-serif;
-        font-size: 16px;
         -webkit-font-smoothing: antialiased;
         -moz-osx-font-smoothing: grayscale;
         color: #2C3E50;
         display: flex;
-        justify-content: center;
         align-content: center;
+        min-width: 1240px;
     }
 </style>

+ 6 - 6
src/api/hangyezixun.js

@@ -1,36 +1,36 @@
 import request           from '@/utils/request';
 
-const pre = `/industry`
+const pre = `/news`
 
-export function getIndustryAdd(data = {}) {
+export function getNewsAdd(data = {}) {
     return request({
                        url:    `${pre}/add`,
                        method: 'post',
                        data,
                    });
 }
-export function getIndustryDelete(data = {}) {
+export function getNewsDelete(data = {}) {
     return request({
                        url:    `${pre}/delete`,
                        method: 'post',
                        data,
                    });
 }
-export function getIndustryInfo(data = {}) {
+export function getNewsInfo(data = {}) {
     return request({
                        url:    `${pre}/info`,
                        method: 'post',
                        data,
                    });
 }
-export function getIndustryList(data = {}) {
+export function getNewsList(data = {}) {
     return request({
                        url:    `${pre}/list`,
                        method: 'post',
                        data,
                    });
 }
-export function getIndustryUpdate(data = {}) {
+export function getNewsUpdate(data = {}) {
     return request({
                        url:    `${pre}/update`,
                        method: 'post',

+ 56 - 0
src/api/newsClassify.js

@@ -0,0 +1,56 @@
+import request           from '@/utils/request';
+
+const pre = `/news/classify`
+
+export function getNewsClassifyAdd(data = {}) {
+    return request({
+                       url:    `${pre}/add`,
+                       method: 'post',
+                       data,
+                   });
+}
+
+
+export function getNewsClassifyDelete(data = {}) {
+    return request({
+                       url:    `${pre}/delete`,
+                       method: 'post',
+                       data,
+                   });
+}
+
+
+export function getNewsClassifyInfo(data = {}) {
+    return request({
+                       url:    `${pre}/info`,
+                       method: 'post',
+                       data,
+                   });
+}
+
+
+export function getNewsClassifyList(data = {}) {
+    return request({
+                       url:    `${pre}/list`,
+                       method: 'post',
+                       data,
+                   });
+}
+
+
+export function getNewsClassifySearch(data = {}) {
+    return request({
+                       url:    `${pre}/search`,
+                       method: 'post',
+                       data,
+                   });
+}
+
+
+export function getNewsClassifyUpdate(data = {}) {
+    return request({
+                       url:    `${pre}/update`,
+                       method: 'post',
+                       data,
+                   });
+}

+ 10 - 3
src/assets/css/cus-website/cus-website-common.scss

@@ -1,7 +1,12 @@
 @import "../base/utils";
 
 /************************ 通用class样式 author: TX  date:2020-07-30 **********************/
-
+/* 页面样式 */
+body, html, #app {
+  padding: 0;
+  margin: 0;
+  @include setFontStyle(0);
+}
 /* 去掉列表前的标识, li 会继承 */
 ol,ul,dl,dt,dd{list-style:none;margin: 0;padding: 0;}
 
@@ -93,7 +98,7 @@ h1,h2,h3,h4,h5,h6,p{font-size:100%;font-weight:normal;margin: 0;}
 @mixin single-line-ellipsis {text-overflow: ellipsis;overflow: hidden;word-wrap: break-word;white-space: nowrap;word-break: break-all;}
 
 /* 文本超出省略号显示 (多行),括号里传行数 ------ 使用方式:@include multi-line-ellipsis(3); */
-@mixin multi-line-ellipsis($rows){-webkit-line-clamp:$rows;text-overflow: ellipsis;overflow: hidden;word-wrap: break-word;display: -webkit-box;white-space: normal !important;-webkit-box-orient: vertical;}
+@mixin multi-line-ellipsis($rows){-webkit-line-clamp:$rows;text-overflow: ellipsis;-o-text-overflow: ellipsis;overflow: hidden;word-wrap: break-word;display: -webkit-box;white-space: normal !important;-webkit-box-orient: vertical;}
 
 
 /************************ 网站公共class样式 author: TX  date:2020-07-30 **********************/
@@ -153,6 +158,7 @@ h1,h2,h3,h4,h5,h6,p{font-size:100%;font-weight:normal;margin: 0;}
       dl{display: inline-block;margin-right: 48px;margin-bottom: 40px;vertical-align: top;}
       dt{@include setFontStyle(-4);color: #FFFFFF;margin-bottom: 24px;}
       dd{@include setFontStyle(-6);color: rgba(255,255,255,0.64);margin-bottom: 8px;}
+      dd:hover{color: rgba(255,255,255,0.85);cursor: pointer}
     }
     .contact-right-box{
       width: 170px;
@@ -173,7 +179,8 @@ h1,h2,h3,h4,h5,h6,p{font-size:100%;font-weight:normal;margin: 0;}
     .link-a-box{
       margin-left: 114px;
       line-height: 22px;
-      a{@include setFontStyle(-6);color: rgba(255,255,255,0.54);margin-right: 32px;white-space: nowrap;}
+      a{@include setFontStyle(-6);color: rgba(255,255,255,0.54);display:inline-block;margin-right: 32px;white-space: nowrap;}
+      a:hover{color: rgba(255,255,255,0.85);cursor: pointer;}
     }
   }
   //底部版权

+ 53 - 37
src/assets/css/cus-website/cus-website-page.scss

@@ -5,7 +5,6 @@
   /********  describe: 网站首页  author: TX  date:2020-07-30  ********/
   .website-index-page{
      width: 100%;
-
     /* 网站banner */
     .website-banner{
       width: 100%;
@@ -103,11 +102,11 @@
     }
 
     /* 网站标题 */
-    .website-index-title{ @include setFontStyle(14);color: rgba(0,0,0,0.85);letter-spacing: 0;padding-top: 96px;text-align: center;}
+    .website-index-title{ @include setFontStyle(14);color: rgba(0,0,0,0.85);letter-spacing: 0;padding-top: 80px;text-align: center;}
 
     /* 产品和服务 */
     .products-services-box{
-      padding: 136px 0 30px;
+      padding: 116px 0 30px;
         li{
           width: 33.33%;
           display: inline-block;
@@ -127,11 +126,11 @@
           }
           //内容区域
           .products-services-content{
-            padding: 120px 32px 48px 32px;
+            padding: 110px 32px 48px 32px;
             transition: .3s all linear;
-            @include setFontStyle(-4);
-            h2{@include setFontStyle(4);color: rgba(0,0,0,0.85);text-align: center;margin-bottom: 24px;}
-            p{line-height: 24px;color: rgba(0,0,0,0.65);margin-bottom: 56px;text-align: justify;min-height: 144px;@include multi-line-ellipsis(6);}
+            @include setFontStyle(-6);
+            h2{@include setFontStyle(2);color: rgba(0,0,0,0.85);text-align: center;margin-bottom: 16px;}
+            p{line-height: 22px;color: rgba(0,0,0,0.65);margin-bottom: 32px;text-align: justify;min-height: 136px;@include multi-line-ellipsis(6);max-height: 136px}
             a{background: #2B5CFD;border-radius: 4px;color: rgba(255, 255, 255, 0.85);cursor: pointer;width: 120px;height: 32px;line-height: 32px;display: block;text-align: center;margin: 0 auto;}
           }
         }
@@ -185,23 +184,27 @@
     /* 行业学习需求 */
     .website-demand-box{
       background: #F9FAFF;
-      padding-bottom: 96px;
+      padding-bottom: 80px;
       // 行业ul
       .industry-box{
+        margin-top: 8px;
         li{
-          width: 25%;display: inline-block;padding-top: 56px;height: 147px;overflow: hidden;
+          width: 25%;display: inline-block;margin-top: 32px;height: 147px;overflow: hidden;
           img{margin: 0 auto;display: block;transition: all .2s linear;}
-          div{transition: all .25s linear;}
-          h2{@include setFontStyle(4);color: rgba(0,0,0,0.85);text-align: center;margin: 24px 0 16px;}
-          p{@include setFontStyle(-4);color: rgba(0,0,0,0.65);line-height: 24px;margin: 0 8px 8px;min-height: 48px;text-align: center;@include multi-line-ellipsis(2);}
-          a{@include setFontStyle(-4);width: max-content;display: block;color: #2B5CFD;line-height: 24px;margin: 0 auto;}
+          div{transition: all .25s linear;text-align: center;}
+          h2{@include setFontStyle(2);color: rgba(0,0,0,0.85);text-align: center;margin: 24px 0 16px;}
+          p{@include setFontStyle(-6);color: rgba(0,0,0,0.65);line-height: 22px;margin: 0 8px 8px;min-height: 48px;@include multi-line-ellipsis(2);max-height: 48px;}
+          a{@include setFontStyle(-6);display: block;color: #2B5CFD;line-height: 24px;margin: 0 auto;}
         }
-        li:hover{
+        li:hover:not(:last-child) {
           img{opacity: 0;transform: translateY(10px);}
           div{margin-top: -147px}
-          h2{@include setFontStyle(0);margin-top: 80px;}
+          h2{@include setFontStyle(-2);margin-top: 80px;}
           a{cursor: pointer;}
         }
+        li:last-child:hover{
+          cursor: pointer;
+        }
       }
     }
 
@@ -213,32 +216,39 @@
           width: 20%;
           display: inline-block;
         }
-        img{margin: 16px auto;}
+        img{margin: 16px auto;transition: all 0.5s;}
+        li:hover{
+          img{transform: scale(1.1);box-shadow: 0 4px 8px 0 rgba(214, 214, 214, 0.76);border-radius: 8px}
+        }
       }
     }
 
     /* 我们始终专注教育系统研发更懂用户需求 */
     .website-cert-box{
       background: #F9FAFF;
-      padding-bottom: 96px;
+      padding-bottom: 80px;
+      .website-index-title{padding-bottom: 8px;}
       .cert-img-box{
         display: flex;
         justify-content: space-between;
-        margin: 56px 0;
-          img{width: 16%;border: 2px solid #2B5CFD;border-radius: 8px;}
+        margin: 32px 0;
+          span{display:block;background: #E8ECFF;border-radius: 8px;padding:10px;overflow: hidden;}
+          img{width: 180px;height:260px;transition: all 0.5s;}
+          img:hover{transform: scale(1.14);}
       }
-      a{width:238px;height:40px;line-height: 40px;margin: 0 auto;text-align: center;@include setFontStyle(-4);display:block;background: #2B5CFD;border-radius: 4px;color: rgba(255,255,255,0.85);}
+      a{width:238px;height:40px;line-height: 40px;margin: 40px auto 0;text-align: center;@include setFontStyle(-4);display:block;background: #2B5CFD;border-radius: 4px;color: rgba(255,255,255,0.85);}
+      a:hover{cursor: pointer}
     }
 
     /* 为什么选择我们 */
     .website-chose-box{
-      padding-bottom: 96px;
+      padding-bottom: 80px;
       .chose-img-box{
         li{
           width: 25%;display: inline-block;
-          div{width: 205px;height: 205px;border-radius:50%;position:relative;margin: 56px auto 24px;transition: all 0.3s;}
-          i{width: 70px;height: 70px;position: absolute;top: 65px;left: 45px;}
-          h2{@include setFontStyle(4);text-align: center;color: rgba(0,0,0,0.85);}
+          div{width: 190px;height: 190px;border-radius:50%;position:relative;margin: 40px auto 24px;transition: all 0.3s;background-size: cover}
+          i{width: 62px;height: 62px;position: absolute;top: 65px;left: 45px;background-size: cover;}
+          h2{@include setFontStyle(2);text-align: center;color: rgba(0,0,0,0.85);}
         }
         li:nth-child(1){
           div{background-image: url("~@/assets/images/website/index/" + "index-chose-service.png");}
@@ -279,12 +289,12 @@
     /* 行业资讯 */
     .website-industry-information{
       background: #F9FAFF;
-      padding-bottom: 96px;
+      padding-bottom: 80px;
       // 轮播组件
       .el-carousel{
-        margin-top: 56px;
+        margin-top: 40px;
         .el-carousel__container{
-          height: 400px;
+          height: 360px;
         }
 
       }
@@ -292,8 +302,8 @@
         background: #FFFFFF;
         border-radius: 8px;
         .website-img-box{
-          width: 200px;
-          height: 400px;
+          width: 25%;
+          height: 360px;
           background-repeat: no-repeat;
           background-size: cover;
           background-position: center;
@@ -301,21 +311,27 @@
           float: left;
         }
         .website-content-box{
-          margin-left: 200px;
-          padding: 40px 32px;
-          h1{@include setFontStyle(4);color: rgba(0,0,0,0.85);margin-bottom: 24px;}
-          p{@include setFontStyle(-4);color: rgba(0,0,0,0.64);line-height: 24px;@include multi-line-ellipsis(9);min-height: 216px;margin-bottom: 24px;}
-          a{width: 132px;height: 32px;line-height:32px;display: inline-block;@include setFontStyle(-4);background: #2B5CFD;border-radius: 4px;color: rgba(255,255,255,0.85);text-align: center}
+          margin-left: 25%;
+          padding:32px;
+          height: inherit;
+          box-sizing: border-box;
+          position: relative;
+          h1{@include setFontStyle(2);color: rgba(0,0,0,0.85);margin-bottom: 16px;@include multi-line-ellipsis(2);line-height: 30px;max-height: 60px;}
+          p{@include setFontStyle(-4);color: rgba(0,0,0,0.64);line-height: 24px;@include multi-line-ellipsis(6);margin-bottom: 24px;max-height: 144px;}
+          a{width: 132px;height: 32px;line-height:32px;display: inline-block;@include setFontStyle(-4);background: #2B5CFD;border-radius: 4px;color: rgba(255,255,255,0.85);text-align: center;
+          position: absolute;bottom: 32px;}
         }
       }
       .el-carousel__item.is-active{
+        height: 350px;
         box-shadow: 0 4px 8px 0 rgba(214, 214, 214, 0.76);
-        .website-img-box{width: 400px;}
+        .website-img-box{width: 50%;}
         .website-content-box{
-          margin-left: 400px;
-          p{@include multi-line-ellipsis(9);}
+          margin-left: 50%;
         }
       }
+      //指示器
+      .el-carousel__indicators{display: none}
     }
   }
 }

二進制
src/assets/images/client/carousels/1.jpg


二進制
src/assets/images/client/carousels/2.jpg


二進制
src/assets/images/client/carousels/3.jpg


二進制
src/assets/images/client/carousels/4.jpg


二進制
src/assets/images/client/carousels/5.jpg


+ 17 - 5
src/router.js

@@ -146,11 +146,11 @@ const router = new Router({
                                       },
                                       children:  [
                                           {
-                                              path: '/industry',
-                                              name: 'hangyezixun',
+                                              path: '/news',
+                                              name: 'news',
                                               meta: {
                                                   icon: "",
-                                                  title: "行业资讯"
+                                                  title: "新闻资讯"
                                               },
                                               isAdminMenu: true,
                                               component: () => {
@@ -158,8 +158,8 @@ const router = new Router({
                                               },
                                           },
                                           {
-                                              path: '/industry/config',
-                                              name: 'HangYeZiXunConfig',
+                                              path: '/news/config',
+                                              name: 'newsConfig',
                                               component: () => {
                                                   return import(/* webpackChunkName: "HangYeZiXun" */ './views/management/HangYeZiXun/HangYeZiXunConfig/index.vue');
                                               },
@@ -176,6 +176,18 @@ const router = new Router({
                                                   return import(/* webpackChunkName: "HangYeZiXun" */ './views/management/YouQingLianJie/index.vue');
                                               },
                                           },
+                                          {
+                                              path: '/newsClassify',
+                                              name: 'newsClassify',
+                                              meta: {
+                                                  icon: "",
+                                                  title: "新闻分类"
+                                              },
+                                              isAdminMenu: true,
+                                              component: () => {
+                                                  return import(/* webpackChunkName: "HangYeZiXun" */ './views/management/XinWenFenLei/index.vue');
+                                              },
+                                          },
                                       ],
                                   },
                               ],

+ 27 - 74
src/views/client/Index.vue

@@ -57,8 +57,7 @@
                         <div class="products-services-img"><i></i></div>
                         <div class="products-services-content">
                             <h2>考试系统</h2>
-                            <p>
-                                麦塔在线考试系统满足不同行业考试考核需求:教育机构出题判卷、课后练习布置;企事业单位企业文化、业务水平提升;政府机构党建知识考核、提高服务意识;电力金融医疗专业技能、安全生产通通交给我们!</p>
+                            <p>麦塔在线考试系统满足不同行业考试考核需求:教育机构出题判卷、课后练习布置;企事业单位企业文化、业务水平提升;政府机构党建知识考核、提高服务意识;电力金融医疗专业技能、安全生产通通交给我们!</p>
                             <a>了解详情</a>
                         </div>
                     </li>
@@ -66,8 +65,7 @@
                         <div class="products-services-img"><i></i></div>
                         <div class="products-services-content">
                             <h2>培训系统</h2>
-                            <p>
-                                麦塔在线培训系统满足企业全流程培训场景,支持移动web端、PC端、APP端答题和学习,多种学习模式保障学习效果,结果及时反馈,让知识转化为行动,提升培训成效,让学员充分获取学习乐趣与动力,满足您的个性化培训考试需求。</p>
+                            <p>麦塔在线培训系统满足企业全流程培训场景,支持移动web端、PC端、APP端答题和学习,多种学习模式保障学习效果,结果及时反馈,让知识转化为行动,提升培训成效,让学员充分获取学习乐趣与动力,满足您的个性化培训考试需求。</p>
                             <a>了解详情</a>
                         </div>
                     </li>
@@ -75,8 +73,7 @@
                         <div class="products-services-img"><i></i></div>
                         <div class="products-services-content">
                             <h2>课件制作</h2>
-                            <p>
-                                麦塔能够快速搭建企业单位、教育机构学习资源库,满足学习平台需求,针对目标对象的学习习惯和学习方式个性化开发课程核心内容,将零散、隐性的知识系统化、显性化,现已开发了管理类通用课程、医药类课程、银行业课程等数千门课程内容。</p>
+                            <p>麦塔能够快速搭建企业单位、教育机构学习资源库,满足学习平台需求,针对目标对象的学习习惯和学习方式个性化开发课程核心内容,将零散、隐性的知识系统化、显性化,现已开发了管理类通用课程、医药类课程、银行业课程等数千门课程内容。</p>
                             <a>了解详情</a>
                         </div>
                     </li>
@@ -89,54 +86,18 @@
             <div class="website-container">
                 <h1 class="website-index-title">满足不同行业学习需求</h1>
                 <ul class="industry-box">
-                    <li><img :src="demandImg1" alt="政府机构">
-                        <div><h2>政府机构</h2>
-                            <p>提高行政服务人员的综合素质和能力的提升,党建知识的考核等</p><a>了解更多</a></div>
-                    </li>
-                    <li><img :src="demandImg2" alt="医药卫生">
-                        <div><h2>医药卫生</h2>
-                            <p>应对种类繁多的专业医疗资格考试,“三基、三严”考试,辅助人才队伍建设</p><a>了解更多</a></div>
-                    </li>
-                    <li><img :src="demandImg3" alt="能源化工">
-                        <div><h2>能源化工</h2>
-                            <p>提高安全生产培训效率,分析不足、排查隐患</p><a>了解更多</a></div>
-                    </li>
-                    <li><img :src="demandImg4" alt="信息产业">
-                        <div><h2>信息产业</h2>
-                            <p>创新学习方式,打造在线学习品牌,提高全员移动学习的积极性</p><a>了解更多</a></div>
-                    </li>
-                    <li><img :src="demandImg5" alt="交通运输">
-                        <div><h2>交通运输</h2>
-                            <p>推动技能领域交流互鉴,进一步培养和选拔高技能人才</p><a>了解更多</a></div>
-                    </li>
-                    <li><img :src="demandImg6" alt="机械机电">
-                        <div><h2>机械机电</h2>
-                            <p>帮助用户创建优质工程,打造一流企业的管理方针</p><a>了解更多</a></div>
-                    </li>
-                    <li><img :src="demandImg7" alt="教育培训">
-                        <div><h2>教育培训</h2>
-                            <p>不受时间、地点等因素限制,学员与教师相隔万里也可以开展教学活动</p><a>了解更多</a></div>
-                    </li>
-                    <li><img :src="demandImg8" alt="食品餐饮">
-                        <div><h2>食品餐饮</h2>
-                            <p>定期培训考核,严格把控服务质量、食品安全标准</p><a>了解更多</a></div>
-                    </li>
-                    <li><img :src="demandImg9" alt="金融保险">
-                        <div><h2>金融保险</h2>
-                            <p>针对员工岗位性质、能力素质和业务需求,精心设计考试内容,选备了相应的题库,分岗位进行集中测试。</p><a>了解更多</a></div>
-                    </li>
-                    <li><img :src="demandImg10" alt="汽车制造">
-                        <div><h2>汽车制造</h2>
-                            <p>一线门店轻量化练习,边看边练,提高工作效率、增加企业利润</p><a>了解更多</a></div>
-                    </li>
-                    <li><img :src="demandImg11" alt="新闻出版">
-                        <div><h2>新闻出版</h2>
-                            <p>推进编辑出版专业水平提高,出版专业技术人员职业资格考试等</p><a>了解更多</a></div>
-                    </li>
-                    <li><img :src="demandImg12" alt="更多">
-                        <div><h2>更多</h2>
-                            <p></p><a>了解更多</a></div>
-                    </li>
+                    <li><img :src="demandImg1" alt="政府机构"><div><h2>政府机构</h2><p>提高行政服务人员的综合素质和能力的提升,党建知识的考核等</p><a>了解更多</a></div></li>
+                    <li><img :src="demandImg2" alt="医药卫生"><div><h2>医药卫生</h2><p>应对种类繁多的专业医疗资格考试,“三基、三严”考试,辅助人才队伍建设</p><a>了解更多</a></div></li>
+                    <li><img :src="demandImg3" alt="能源化工"><div><h2>能源化工</h2><p>提高安全生产培训效率,分析不足、排查隐患</p><a>了解更多</a></div></li>
+                    <li><img :src="demandImg4" alt="信息产业"><div><h2>信息产业</h2><p>创新学习方式,打造在线学习品牌,提高全员移动学习的积极性</p><a>了解更多</a></div></li>
+                    <li><img :src="demandImg5" alt="交通运输"><div><h2>交通运输</h2><p>推动技能领域交流互鉴,进一步培养和选拔高技能人才</p><a>了解更多</a></div></li>
+                    <li><img :src="demandImg6" alt="机械机电"><div><h2>机械机电</h2><p>帮助用户创建优质工程,打造一流企业的管理方针</p><a>了解更多</a></div></li>
+                    <li><img :src="demandImg7" alt="教育培训"><div><h2>教育培训</h2><p>不受时间、地点等因素限制,学员与教师相隔万里也可以开展教学活动</p><a>了解更多</a></div></li>
+                    <li><img :src="demandImg8" alt="食品餐饮"><div><h2>食品餐饮</h2><p>定期培训考核,严格把控服务质量、食品安全标准</p><a>了解更多</a></div></li>
+                    <li><img :src="demandImg9" alt="金融保险"><div><h2>金融保险</h2><p>针对员工岗位性质、能力素质和业务需求,精心设计考试内容,选备了相应的题库,分岗位进行集中测试。</p><a>了解更多</a></div></li>
+                    <li><img :src="demandImg10" alt="汽车制造"><div><h2>汽车制造</h2><p>一线门店轻量化练习,边看边练,提高工作效率、增加企业利润</p><a>了解更多</a></div></li>
+                    <li><img :src="demandImg11" alt="新闻出版"><div><h2>新闻出版</h2><p>推进编辑出版专业水平提高,出版专业技术人员职业资格考试等</p><a>了解更多</a></div></li>
+                    <li><img :src="demandImg12" alt="更多"><div><h2>更多</h2><p>更多行业学习需求</p><a>了解更多</a></div></li>
                 </ul>
             </div>
         </div>
@@ -175,16 +136,16 @@
             <div class="website-container">
                 <h1 class="website-index-title">我们始终专注教育系统研发更懂用户需求</h1>
                 <div class="cert-img-box">
-                    <img :src="certImg1" alt="栋科考试管理系统">
-                    <img :src="certImg2" alt="栋科精品课程管理系统">
-                    <img :src="certImg3" alt="栋科课程管理系统">
-                    <img :src="certImg4" alt="栋科用户管理系统">
+                    <span><img :src="certImg1" alt="栋科考试管理系统"></span>
+                    <span><img :src="certImg2" alt="栋科精品课程管理系统"></span>
+                    <span><img :src="certImg3" alt="栋科课程管理系统"></span>
+                    <span><img :src="certImg4" alt="栋科用户管理系统"></span>
                 </div>
                 <div class="cert-img-box">
-                    <img :src="certImg5" alt="栋科网校运营系统">
-                    <img :src="certImg6" alt="麦塔考试系统">
-                    <img :src="certImg7" alt="麦塔培训系统">
-                    <img :src="certImg8" alt="知识产权管理体系认证证书">
+                    <span><img :src="certImg5" alt="栋科网校运营系统"></span>
+                    <span><img :src="certImg6" alt="麦塔考试系统"></span>
+                    <span><img :src="certImg7" alt="麦塔培训系统"></span>
+                    <span><img :src="certImg8" alt="知识产权管理体系认证证书"></span>
                 </div>
                 <a>了解更多</a>
             </div>
@@ -195,18 +156,10 @@
             <div class="website-container">
                 <h1 class="website-index-title">为什么选择我们</h1>
                 <ul class="chose-img-box">
-                    <li>
-                        <div><i></i></div>
-                        <h2>专业的顾问服务</h2></li>
-                    <li>
-                        <div><i></i></div>
-                        <h2>完善的培训体系</h2></li>
-                    <li>
-                        <div><i></i></div>
-                        <h2>可靠的开发技术</h2></li>
-                    <li>
-                        <div><i></i></div>
-                        <h2>成熟的运营能力</h2></li>
+                    <li><div><i></i></div><h2>专业的顾问服务</h2></li>
+                    <li><div><i></i></div><h2>完善的培训体系</h2></li>
+                    <li><div><i></i></div><h2>可靠的开发技术</h2></li>
+                    <li><div><i></i></div><h2>成熟的运营能力</h2></li>
                 </ul>
             </div>
         </div>

+ 80 - 26
src/views/management/HangYeZiXun/HangYeZiXunConfig/index.vue

@@ -25,6 +25,12 @@
                 <el-form-item label="访问次数:" prop="visits">
                     <el-input :maxlength="9" placeholder="请输入访问次数" v-model="configData.visits"></el-input>
                 </el-form-item>
+                <el-form-item label="新闻分类:" prop="newsClassifyId">
+                    <mySelect label="name"
+                              id="newsClassifyId"
+                              @select-change="handleSelectDoChange"
+                              placeholder="请选择新闻分类"></mySelect>
+                </el-form-item>
                 <el-form-item label="图片:" prop="pic">
                     <upload-file :imageUrl="configData.pic"
                                  :showBtnFlag="false"
@@ -32,7 +38,7 @@
                     <h5 class="picture-size-h5">(最佳尺寸为400*400像素)</h5>
                 </el-form-item>
                 <el-form-item label="描述:" prop="intro">
-                    <el-input type="textarea" placeholder="请输入描述" :rows="9"
+                    <el-input type="textarea" placeholder="请输入描述" :rows="6"
                               v-model="configData.intro"></el-input>
                 </el-form-item>
             </el-form>
@@ -54,8 +60,8 @@
             >新增
             </el-button>
             <div v-else>
-                <el-button  type="primary"  @click="handleSave('HangYeZiXun')">保存</el-button>
-                <el-button  type="primary"  @click="back">关闭</el-button>
+                <el-button type="primary" @click="handleSave('HangYeZiXun')">保存</el-button>
+                <el-button type="primary" @click="back">关闭</el-button>
             </div>
 
         </div>
@@ -63,53 +69,80 @@
 </template>
 
 <script>
-    import uploadFile       from './components/uploadFile';
-    import MtaStQuillEditor from '@/components/management/QuillEditor.vue';
-    import * as commonTools from '@/utils/admin/tools';
-    import * as HYZXService from '@/api/hangyezixun';
+    import uploadFile           from './components/uploadFile';
+    import MtaStQuillEditor     from '@/components/management/QuillEditor.vue';
+    import mySelect             from '../components/Select';
+    import * as commonTools     from '@/utils/admin/tools';
+    import * as HYZXService     from '@/api/hangyezixun';
+    import * as NewsClassifyApi from '@/api/newsClassify';
+    import Vue                  from 'vue';
+
+    const selectData = {
+        options:        [],
+        newsClassifyId: null,
+        placeholder:    '请选择新闻资讯分类',
+    };
+    let selectServiceData = Vue.observable(selectData);
 
     export default {
         name:       'HangYeZiXunConfig',
         components: {
             uploadFile,
             MtaStQuillEditor,
+            mySelect,
+        },
+        provide:    {
+            selectServiceData: selectServiceData,
+        },
+        computed:   {
+            newsClassifyId() {
+                return selectServiceData.newsClassifyId;
+            },
         },
         data() {
             return {
                 defaultValue: new Date(),
                 configData:   {
-                    content:   '',
-                    intro:     '',
-                    pic:       '',
-                    startTime: '',
-                    title:     '',
-                    visits:    '',
+                    content:        '',
+                    intro:          '',
+                    pic:            '',
+                    startTime:      '',
+                    newsClassifyId: '',
+                    title:          '',
+                    visits:         '',
                 },
                 configRules:  {
-                    title:     [
+                    title:          [
                         { required: true, message: '标题不能为空', trigger: 'blur' },
                     ],
-                    startTime: [
+                    startTime:      [
                         { required: true, message: '开始时间不能为空', trigger: 'blur' },
                     ],
-                    intro:     [
+                    intro:          [
                         { required: true, message: '描述不能为空', trigger: 'blur' },
                     ],
-                    pic:       [
+                    pic:            [
                         { required: true, message: '图片不能为空', trigger: 'blur' },
                     ],
-                    visits:    [
+                    visits:         [
                         { required: true, message: '访问次数不能为空', trigger: 'blur' },
                     ],
-                    content:   [
+                    content:        [
                         { required: true, message: '行业详情不能为空', trigger: 'blur' },
                     ],
+                    newsClassifyId: [
+                        { required: true, message: '请选择新闻分类', trigger: 'blur' },
+                    ],
                 },
                 queryData:    null,
                 userId:       null,
             };
         },
-        methods: {
+        methods:    {
+            handleSelectDoChange(data) {
+                console.log('change', data);
+                this.configData.newsClassifyId = data;
+            },
             back() {
                 window.history.go(-1);
             },
@@ -140,7 +173,8 @@
                 });
             },
             initPageData(data) {
-                // this.configData.content = data.content;
+                selectServiceData.newsClassifyId = data.newsClassifyId;
+                this.configData.newsClassifyId = data.newsClassifyId;
                 this.$refs.editorQuill.setContent(data.content);
                 this.configData.intro = data.intro;
                 this.configData.pic = data.pic;
@@ -156,7 +190,13 @@
 
                 const loading = this.$loading({ background: 'rgba(0, 0, 0, 0.7)' });
                 try {
-                    const res = await HYZXService.getIndustryInfo(opt);
+
+                    // 新闻资讯分类
+                    const { data: newsClassifyArr } = await NewsClassifyApi.getNewsClassifySearch();
+
+                    selectServiceData.options = newsClassifyArr;
+
+                    const res = await HYZXService.getNewsInfo(opt);
                     if (res.code === 0) {
                         this.initPageData(res.data);
                     }
@@ -197,13 +237,25 @@
             },
             handleAddHangYeZiXun() {
                 const opt = this.getOptions();
-                return HYZXService.getIndustryAdd(opt);
+                return HYZXService.getNewsAdd(opt);
             },
             handleSaveHangYeZiXun() {
                 const opt = this.getOptions();
-                const newOpt = Object.assign(opt, {iiId: this.queryData.iiId})
-                return HYZXService.getIndustryUpdate(newOpt);
-            }
+                const newOpt = Object.assign(opt, { iiId: this.queryData.iiId });
+                return HYZXService.getNewsUpdate(newOpt);
+            },
+            async initPage() {
+                // 新闻资讯分类
+                const loading = this.$loading({ background: 'rgba(0, 0, 0, 0.7)' });
+                try {
+                    const { data: newsClassifyArr } = await NewsClassifyApi.getNewsClassifySearch();
+                    selectServiceData.options = newsClassifyArr;
+                    loading.close();
+                } catch (e) {
+                    loading.close();
+                }
+
+            },
         },
         created() {
             this.queryData = this.$route.query;
@@ -213,6 +265,8 @@
         mounted() {
             if (this.queryData.code === 'editor' && this.queryData.iiId) {
                 this.recoverPage();
+            } else {
+                this.initPage();
             }
         },
     };

+ 12 - 9
src/views/management/HangYeZiXun/components/Pagination.vue

@@ -11,17 +11,20 @@
 </template>
 
 <script>
-    import { paginationServiceData, defaultPageSizes } from './paginationData';
-
     export default {
         name:     'Pagination',
         props:    {
             pageSizes: {
                 type:    Array,
-                default: () => defaultPageSizes,
+                default: () => [],
             },
         },
         inject:   {
+            paginationServiceData: {
+                type:    Object,
+                default: () => {
+                },
+            },
             tableServiceData: {
                 type:    Object,
                 default: () => {
@@ -31,26 +34,26 @@
         computed: {
             page:  {
                 get() {
-                    return paginationServiceData.page;
+                    return this.paginationServiceData.page;
                 },
                 set(val) {
-                    paginationServiceData.page = val;
+                    this.paginationServiceData.page = val;
                 },
             },
             size:  {
                 get() {
-                    return paginationServiceData.size;
+                    return this.paginationServiceData.size;
                 },
                 set(val) {
-                    paginationServiceData.size = val;
+                    this.paginationServiceData.size = val;
                 },
             },
             total: {
                 get() {
-                    return paginationServiceData.total;
+                    return this.paginationServiceData.total;
                 },
                 set(val) {
-                    this.paginationServiceData.total = val;
+                    this.this.paginationServiceData.total = val;
                 },
             },
         },

+ 69 - 0
src/views/management/HangYeZiXun/components/Select.vue

@@ -0,0 +1,69 @@
+<template>
+    <el-select v-model="value" clearable :placeholder="placeholder" @change="selectChange">
+        <el-option
+                v-for="item in options"
+                :key="item[id]"
+                :label="item[label]"
+                :value="item[id]">
+        </el-option>
+    </el-select>
+</template>
+
+<script>
+    export default {
+        name: 'Select',
+
+        props: {
+            placeholder: {
+                type: String,
+                default: '请选择'
+            },
+            id: {
+                type: String,
+                default: 'id'
+            },
+            label: {
+                type: String,
+                default: 'name'
+            }
+        },
+
+        inject: {
+            selectServiceData: {
+                type:    Object,
+                default: () => {
+                },
+            },
+        },
+
+        computed: {
+            options() {
+                return this.selectServiceData.options;
+            },
+            value:   {
+                get() {
+                    return this.selectServiceData[this.id];
+                },
+                set(val) {
+                    console.log(val)
+                    this.selectServiceData[this.id] = val;
+                },
+            },
+        },
+
+        methods: {
+            selectChange(val) {
+                console.log(val)
+                this.$emit('select-change', val)
+            }
+        },
+
+        destroyed() {
+            this.selectServiceData[this.id] = null;
+        }
+    };
+</script>
+
+<style scoped>
+
+</style>

+ 7 - 2
src/views/management/HangYeZiXun/components/Table.vue

@@ -7,21 +7,25 @@
             style="width: 100%">
         <el-table-column
                 type="selection"
+                fixed
                 width="55">
         </el-table-column>
         <el-table-column
                 prop="title"
                 label="标题"
-                :show-overflow-tooltip="true"
                 width="360">
         </el-table-column>
         <el-table-column
                 prop="intro"
                 label="描述"
-                :show-overflow-tooltip="true"
                 width="360">
         </el-table-column>
         <el-table-column
+                prop="newsClassifyName"
+                label="新闻分类"
+                width="200">
+        </el-table-column>
+        <el-table-column
                 prop="pic"
                 label="图片"
                 width="300">
@@ -47,6 +51,7 @@
         </el-table-column>
         <el-table-column
                 label="操作"
+                fixed="right"
         >
             <template slot-scope="scope">
                 <el-button type="text" @click="handleEditor(scope.row)">编辑</el-button>

+ 85 - 20
src/views/management/HangYeZiXun/index.vue

@@ -2,8 +2,19 @@
     <div class="admin-hangyezixun-page">
         <div class="admin-hangyexuzhi">
             <div class="top">
-                <el-button class="btn-add" size="mini" type="primary" @click="handleAddHangYeZiXun">新增</el-button>
-                <el-button class="btn-add" size="mini" type="primary" @click="handleDeleteHangYeZiXun">删除</el-button>
+                <div>
+                    <mySelect
+                            label="name"
+                            id="newsClassifyId"
+                            placeholder="请选择新闻分类"
+                    ></mySelect>
+                    <el-button class="btn-search" size="mini" type="primary" @click="handleSearch">查询</el-button>
+                </div>
+                <div>
+                    <el-button size="mini" type="primary" @click="handleAddHangYeZiXun">新增</el-button>
+                    <el-button size="mini" type="primary" @click="handleDeleteHangYeZiXun">删除
+                    </el-button>
+                </div>
             </div>
             <myTable
                     @editor="handleEditor"
@@ -12,6 +23,7 @@
             />
             <myPagination
                     class="my-Pagination"
+                    :pageSizes="defaultPageSizes"
                     @size-change="handleSizeChange"
                     @current-page="handleCurrentPage"
             />
@@ -20,32 +32,55 @@
 </template>
 
 <script>
-    import { tableServiceData }      from './components/tableData';
-    import { paginationServiceData } from './components/paginationData';
     import myPagination              from './components/Pagination';
     import myTable                   from './components/Table';
     import * as HYZXApi              from '@/api/hangyezixun';
+    import * as NewsClassifyApi      from '@/api/newsClassify';
+    import mySelect                  from './components/Select';
+    import Vue                       from 'vue';
 
     const CHANGEPAGECODE = {
         add:    'add',
         editor: 'editor',
     };
+    const selectData = {
+        options:        [],
+        newsClassifyId: null,
+        placeholder:    '请选择新闻资讯分类',
+    };
+    const tableData = {
+        myData: []
+    }
+
+    const pagination = {
+        page:  1,
+        size:  10,
+        total: 0,
+    };
+
+    const defaultPageSizes = [10, 20, 30, 40];
+    const tableServiceData = Vue.observable(tableData);
+    const selectServiceData = Vue.observable(selectData);
+    const paginationServiceData = Vue.observable(pagination);
 
     export default {
         name:       'Hangyexuzhi',
         provide:    {
             tableServiceData,
             paginationServiceData,
+            selectServiceData,
         },
         data() {
             return {
-                curIiId:         null,
-                tableSelectData: [],
+                defaultPageSizes: defaultPageSizes,
+                curIiId:          null,
+                tableSelectData:  [],
             };
         },
         components: {
             myPagination,
             myTable,
+            mySelect,
         },
         computed:   {
             myPage() {
@@ -57,8 +92,15 @@
             myTotal() {
                 return paginationServiceData.total;
             },
+            newsClassifyId() {
+                return selectServiceData.newsClassifyId;
+            },
         },
         methods:    {
+
+            handleSearch() {
+                this.getHangYeZiXunData();
+            },
             handleEditor(data) {
                 this.curIiId = data.iiId;
                 this.changePage(CHANGEPAGECODE.editor);
@@ -93,13 +135,13 @@
                 };
                 const loading = this.$loading({ background: 'rgba(0, 0, 0, 0.7)' });
                 try {
-                    const res = await HYZXApi.getIndustryDelete(opt);
+                    const res = await HYZXApi.getNewsDelete(opt);
                     loading.close();
                     if (res.code === 0 && res.data) {
                         // 删除成功重置选择状态
                         this.tableSelectData = [];
                         const newOpt = this.getOption();
-                        const res = await HYZXApi.getIndustryList(newOpt);
+                        const res = await HYZXApi.getNewsList(newOpt);
                         if (res.code === 0) {
                             this.initPageData(res.data);
                         }
@@ -111,18 +153,19 @@
             },
             getOption() {
                 const opt = {
-                    page: this.myPage,
-                    size: this.mySize,
+                    page:           this.myPage,
+                    size:           this.mySize,
+                    newsClassifyId: this.newsClassifyId,
                 };
                 return opt;
             },
             changePage(code) {
                 switch (code) {
                     case CHANGEPAGECODE.add:
-                        this.$router.push({ name: 'HangYeZiXunConfig', query: { code: 'add' } });
+                        this.$router.push({ name: 'newsConfig', query: { code: 'add' } });
                         break;
                     case CHANGEPAGECODE.editor:
-                        this.$router.push({ name: 'HangYeZiXunConfig', query: { code: 'editor', iiId: this.curIiId } });
+                        this.$router.push({ name: 'newsConfig', query: { code: 'editor', iiId: this.curIiId } });
                         break;
                     default:
                         break;
@@ -134,7 +177,7 @@
                 const loading = this.$loading({ background: 'rgba(0, 0, 0, 0.7)' });
 
                 try {
-                    const res = await HYZXApi.getIndustryList(opt);
+                    const res = await HYZXApi.getNewsList(opt);
                     if (res.code === 0) {
                         // 渲染页面
                         this.initPageData(res.data);
@@ -148,10 +191,10 @@
             async getHangYeZiXunDelete(opt) {
                 const loading = this.$loading({ background: 'rgba(0, 0, 0, 0.7)' });
                 try {
-                    const res = await HYZXApi.getIndustryDelete(opt);
+                    const res = await HYZXApi.getNewsDelete(opt);
                     loading.close();
                     if (res.code === 0 && res.data) {
-                        const res = await HYZXApi.getIndustryList(opt);
+                        const res = await HYZXApi.getNewsList(opt);
                         if (res.code === 0) {
                             this.initPageData(res.data);
                         }
@@ -166,9 +209,31 @@
                 tableServiceData.myData = listData.data;
                 paginationServiceData.total = listData.total;
             },
+            // 修正初始化
+            async initPageService() {
+                const loading = this.$loading({ background: 'rgba(0, 0, 0, 0.7)' });
+                try {
+                    // 新闻资讯分类
+                    const { data: newsClassifyArr } = await NewsClassifyApi.getNewsClassifySearch();
+                    selectServiceData.options = newsClassifyArr;
+
+                    // 新闻资讯列表
+                    const opt = this.getOption();
+                    const { code, data } = await HYZXApi.getNewsList(opt);
+                    console.log(code, data);
+                    if (code === 0) {
+                        // 渲染页面
+                        this.initPageData(data);
+                    }
+
+                    loading.close();
+                } catch (e) {
+                    loading.close();
+                }
+            },
         },
         created() {
-            this.getHangYeZiXunData();
+            this.initPageService();
         },
     };
 </script>
@@ -179,16 +244,16 @@
 
         .top {
             display: flex;
-            justify-content: flex-end;
+            justify-content: space-between;
             margin-bottom: 10px;
 
-            .btn-add {
-
+            .btn-search {
+                margin-left: 20px;
             }
         }
 
         .my-Pagination {
-           margin-top: 20px;
+            margin-top: 20px;
         }
     }
 </style>

+ 78 - 0
src/views/management/XinWenFenLei/components/Pagination.vue

@@ -0,0 +1,78 @@
+<template>
+    <el-pagination
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+            :current-page.sync="page"
+            :page-sizes="pageSizes"
+            :page-size="size"
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="total">
+    </el-pagination>
+</template>
+
+<script>
+    import { paginationServiceData, defaultPageSizes } from './paginationData';
+
+    export default {
+        name:     'Pagination',
+        props:    {
+            pageSizes: {
+                type:    Array,
+                default: () => defaultPageSizes,
+            },
+        },
+        inject:   {
+            tableServiceData: {
+                type:    Object,
+                default: () => {
+                },
+            },
+        },
+        computed: {
+            page:  {
+                get() {
+                    return paginationServiceData.page;
+                },
+                set(val) {
+                    paginationServiceData.page = val;
+                },
+            },
+            size:  {
+                get() {
+                    return paginationServiceData.size;
+                },
+                set(val) {
+                    paginationServiceData.size = val;
+                },
+            },
+            total: {
+                get() {
+                    return paginationServiceData.total;
+                },
+                set(val) {
+                    this.paginationServiceData.total = val;
+                },
+            },
+        },
+        watch:    {
+            total(newVal) {
+                if (newVal >= this.size && !this.tableServiceData.myData.length && this.page > 1) {
+                    this.page--;
+                    this.$emit('current-page', this.page);
+                }
+            },
+        },
+        methods:  {
+            handleSizeChange(val) {
+                this.$emit('size-change', val);
+            },
+            handleCurrentChange(val) {
+                this.$emit('current-page', val);
+            },
+        },
+    };
+</script>
+
+<style scoped>
+
+</style>

+ 113 - 0
src/views/management/XinWenFenLei/components/Table.vue

@@ -0,0 +1,113 @@
+<template>
+    <el-table
+            :data="tableData"
+            border
+            class="table"
+            @selection-change="handleSelectionChange"
+            style="width: 100%">
+        <el-table-column
+                type="selection"
+                width="55">
+        </el-table-column>
+        <el-table-column
+                prop="name"
+                label="新闻分类名称"
+                :show-overflow-tooltip="true"
+                width="360">
+        </el-table-column>
+        <el-table-column
+                prop="number"
+                label="序号"
+                :show-overflow-tooltip="true"
+                width="200">
+        </el-table-column>
+        <el-table-column
+                prop="createTime"
+                label="创建时间"
+                :show-overflow-tooltip="true"
+                width="200">
+        </el-table-column>
+        <el-table-column
+                prop="updateTime"
+                label="更新时间"
+                :show-overflow-tooltip="true"
+                width="200">
+        </el-table-column>
+        <el-table-column
+                prop="updateUserName"
+                label="更新者"
+                :show-overflow-tooltip="true"
+                width="200">
+        </el-table-column>
+        <el-table-column
+                prop="createUserName"
+                label="创建者"
+                :show-overflow-tooltip="true"
+                width="200">
+        </el-table-column>
+        <el-table-column
+                label="操作"
+        >
+            <template slot-scope="scope">
+                <el-button type="text" @click="handleEditor(scope.row)">编辑</el-button>
+            </template>
+        </el-table-column>
+    </el-table>
+</template>
+
+<script>
+    export default {
+        name:     'Table',
+        inject:   {
+            tableServiceData:      {
+                type:    Object,
+                default: () => {
+                },
+            },
+            paginationServiceData: {
+                type:    Object,
+                default: () => {
+                },
+            },
+        },
+        computed: {
+            tableData() {
+                return this.tableServiceData.myData;
+            },
+        },
+        methods:  {
+            handleSelectionChange(data) {
+                const arr = [];
+                data.forEach(item => {
+                    arr.push(item.newsClassifyId);
+                });
+                this.$emit('select-change', arr);
+            },
+            handleEditor(data) {
+                this.$emit('editor', data);
+            },
+        },
+    };
+</script>
+
+<style lang="scss" scoped>
+    .table {
+        ::v-deep .is-leaf {
+            .cell {
+                text-align: center;
+            }
+        }
+
+        ::v-deep .el-table-column--selection {
+            .cell {
+                text-align: center;
+            }
+        }
+
+        .table-link {
+            text-decoration: none;
+            color: #2C98F2;
+        }
+    }
+
+</style>

+ 0 - 0
src/views/management/HangYeZiXun/components/paginationData.js → src/views/management/XinWenFenLei/components/paginationData.js


+ 0 - 0
src/views/management/HangYeZiXun/components/tableData.js → src/views/management/XinWenFenLei/components/tableData.js


+ 324 - 0
src/views/management/XinWenFenLei/index.vue

@@ -0,0 +1,324 @@
+<template>
+    <div class="admin-YouQingLianJie">
+        <!--    搜索    -->
+        <div class="yqlj-search">
+            <div>
+                <el-input
+                        class="search-name"
+                        placeholder="请输入新闻分类名称"
+                        v-model="searchData"
+                        clearable>
+                </el-input>
+                <el-button size="mini" type="primary" @click="handleSearch">查询</el-button>
+            </div>
+            <div>
+                <el-button size="mini" plain @click="handleDelete">删除</el-button>
+                <el-button size="mini" type="primary" @click="handleOpenAdd">新增</el-button>
+            </div>
+        </div>
+        <!--    table    -->
+        <myTable
+                class="yqlj-table"
+                @editor="handleOpenEditor"
+                @delete="handleDelete"
+                @select-change="handleSelectChange" />
+
+        <!--    分页    -->
+        <myPagination
+                class="yqlj-pagination"
+                @size-change="handleSizeChange"
+                @current-page="handleCurrentPage" />
+
+        <!--    弹窗 新增   -->
+        <el-dialog
+                title="新增新闻分类"
+                :visible.sync="addDialogVisit"
+                width="30%"
+                @close="handleResetLinks('addForm')"
+                center>
+            <div class="add-dialog-content">
+                <el-form :model="addForm" :rules="addRules" ref="addForm" label-width="80px" class="demo-ruleForm">
+                    <el-form-item label="名称:" prop="name">
+                        <el-input v-model="addForm.name"></el-input>
+                    </el-form-item>
+                    <el-form-item label="序号:" prop="number">
+                        <el-input v-model="addForm.number"></el-input>
+                    </el-form-item>
+                </el-form>
+            </div>
+            <span slot="footer" class="dialog-footer">
+                <el-button size="mini" @click="addDialogVisit = false">取 消</el-button>
+                <el-button size="mini" type="primary" @click="handleAddLinks('addForm')">确 定</el-button>
+            </span>
+        </el-dialog>
+        <!--    弹窗 编辑   -->
+        <el-dialog
+                title="编辑新闻分类"
+                :visible.sync="editorDialogVisit"
+                width="30%"
+                @close="handleEditorReset('editorForm')"
+                @open="handleGetLinksInfo"
+                center>
+            <div class="add-dialog-content">
+                <el-form :model="editorForm" :rules="editorRules" ref="editorForm" label-width="80px"
+                         class="demo-ruleForm">
+                    <el-form-item label="名称:" prop="name">
+                        <el-input v-model="editorForm.name"></el-input>
+                    </el-form-item>
+                    <el-form-item label="序号:" prop="number">
+                        <el-input v-model="editorForm.number"></el-input>
+                    </el-form-item>
+                </el-form>
+            </div>
+            <span slot="footer" class="dialog-footer">
+                <el-button size="mini" @click="editorDialogVisit = false">取 消</el-button>
+                <el-button size="mini" type="primary" @click="handleEditorLinks('editorForm')">确 定</el-button>
+            </span>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+    import { tableServiceData }      from './components/tableData';
+    import { paginationServiceData } from './components/paginationData';
+    import myPagination              from './components/Pagination';
+    import myTable                   from './components/Table';
+    import * as NewsClassifyService  from '@/api/newsClassify';
+    import * as comminUtil           from '@/utils/admin/tools';
+
+    export default {
+        name:       'YouQingLianJie',
+        provide:    {
+            tableServiceData,
+            paginationServiceData,
+        },
+        components: {
+            myPagination,
+            myTable,
+        },
+        data() {
+            return {
+                addDialogVisit:    false,
+                editorDialogVisit: false,
+                searchData:        '',
+                tableSelectData:   [],
+                addForm:           {
+                    name:   '',
+                    number: 0,
+                },
+                addRules:          {
+                    name:   [
+                        { required: true, message: '友情链接名称不能为空', trigger: 'blur' },
+                    ],
+                    number: [
+                        { required: true, message: '序号不能为空', trigger: 'blur' },
+                    ],
+                },
+                editorForm:        {
+                    name:   '',
+                    number: 0,
+                },
+                editorRules:       {
+                    name:   [
+                        { required: true, message: '友情链接名称不能为空', trigger: 'blur' },
+                    ],
+                    number: [
+                        { required: true, message: '序号不能为空', trigger: 'blur' },
+                    ],
+                },
+                userId:            null,
+                selectRow:         null,
+            };
+        },
+        computed:   {
+            myPage() {
+                return paginationServiceData.page;
+            },
+            mySize() {
+                return paginationServiceData.size;
+            },
+            myTotal() {
+                return paginationServiceData.total;
+            },
+        },
+        methods:    {
+            handleResetLinks(formName) {
+                this.$refs[formName].resetFields();
+                this.addDialogVisit = false;
+            },
+            handleAddLinks(formName) {
+                this.$refs[formName].validate((valid) => {
+                    if (valid) {
+                        this.addLinksFun();
+                    } else {
+                        return false;
+                    }
+                });
+            },
+            async addLinksFun() {
+                const loading = this.$loading({ background: 'rgba(0, 0, 0, 0.7)' });
+                try {
+                    const opt = Object.assign({}, this.addForm, { userId: this.userId });
+                    const res = await NewsClassifyService.getNewsClassifyAdd(opt);
+                    if (res.code === 0) {
+                        this.addDialogVisit = false;
+                        const opt = this.getOption();
+                        const myData = await NewsClassifyService.getNewsClassifyList(opt);
+                        this.initPageData(myData.data);
+                        loading.close();
+                    }
+                } catch (e) {
+                    loading.close();
+                }
+                this.addDialogVisit = false;
+            },
+            handleGetLinksInfo() {
+                const opt = { newsClassifyId: this.selectRow.newsClassifyId };
+                const loading = this.$loading({ background: 'rgba(0, 0, 0, 0.7)' });
+                NewsClassifyService.getNewsClassifyInfo(opt)
+                           .then(res => {
+                               const { name, number } = res.data;
+                               this.editorForm.name = name;
+                               this.editorForm.number = number;
+                               loading.close();
+                           })
+                           .catch(err => {
+                               loading.close();
+                           });
+            },
+            handleEditorReset(formName) {
+                this.$refs[formName].resetFields();
+                this.addDialogVisit = false;
+            },
+            handleEditorLinks(formName) {
+                this.$refs[formName].validate((valid) => {
+                    if (valid) {
+                        this.editorLinksFun();
+                    } else {
+                        return false;
+                    }
+                });
+            },
+            async editorLinksFun() {
+                const loading = this.$loading({ background: 'rgba(0, 0, 0, 0.7)' });
+                try {
+                    const opt = Object.assign({}, this.editorForm, { userId: this.userId, newsClassifyId: this.selectRow.newsClassifyId });
+                    const res = await NewsClassifyService.getNewsClassifyUpdate(opt);
+                    if (res.code === 0) {
+                        this.editorDialogVisit = false;
+                        const opt = this.getOption();
+                        const myData = await NewsClassifyService.getNewsClassifyList(opt);
+                        this.initPageData(myData.data);
+                        loading.close();
+                    }
+
+                    loading.close();
+                } catch (e) {
+                    loading.close();
+                }
+                this.addDialogVisit = false;
+            },
+            getOption() {
+                const opt = {
+                    page: this.myPage,
+                    size: this.mySize,
+                    name: this.searchData,
+                };
+                return opt;
+            },
+            handleSearch() {
+                paginationServiceData.page = 1;
+                this.searchYouQingData();
+            },
+            handleOpenAdd() {
+                this.addDialogVisit = true;
+            },
+            handleOpenEditor(data) {
+                this.selectRow = data;
+                this.editorDialogVisit = true;
+            },
+            async handleDelete() {
+                if (!this.tableSelectData.length) {
+                    this.$message.warning('请选择至少一条需要删除的数据');
+                    return;
+                }
+                const opt = {
+                    newsClassifyIds: [...this.tableSelectData],
+                };
+                const loading = this.$loading({ background: 'rgba(0, 0, 0, 0.7)' });
+                try {
+                    const res = await NewsClassifyService.getNewsClassifyDelete(opt);
+                    loading.close();
+                    if (res.code === 0 && res.data) {
+                        // 删除成功重置选择状态
+                        this.tableSelectData = [];
+                        // 刷新页面
+                        const newOpt = this.getOption();
+                        const res = await NewsClassifyService.getNewsClassifyList(newOpt);
+                        if (res.code === 0) {
+                            this.initPageData(res.data);
+                        }
+                        loading.close();
+                    }
+                } catch (err) {
+                    loading.close();
+                }
+            },
+            searchYouQingData() {
+                const opt = this.getOption();
+                const loading = this.$loading({ background: 'rgba(0, 0, 0, 0.7)' });
+                NewsClassifyService.getNewsClassifyList(opt)
+                           .then(res => {
+                               this.initPageData(res.data);
+                               loading.close();
+                           })
+                           .catch(err => {
+                               loading.close();
+                           });
+            },
+            handleSizeChange(size) {
+                paginationServiceData.size = size;
+                this.searchYouQingData();
+            },
+            handleCurrentPage(page) {
+                paginationServiceData.page = page;
+                this.searchYouQingData();
+            },
+            handleSelectChange(data) {
+                this.tableSelectData = data;
+            },
+            initPageData(listData) {
+                tableServiceData.myData = listData.data;
+                paginationServiceData.total = listData.total;
+            },
+        },
+        created() {
+            const userAuth = comminUtil.getUserAuth();
+            this.userId = userAuth && userAuth.userId ? userAuth.userId : null;
+        },
+        mounted() {
+            this.searchYouQingData();
+        },
+    };
+</script>
+
+<style lang="scss" scoped>
+    .admin-YouQingLianJie {
+        padding: 20px;
+
+        .yqlj-search {
+            display: flex;
+            justify-content: space-between;
+            margin-bottom: 20px;
+
+            .search-name {
+                width: 220px;
+                margin-right: 10px;
+            }
+        }
+
+        .yqlj-pagination {
+            margin-top: 20px;
+        }
+    }
+</style>

+ 14 - 8
src/views/management/YouQingLianJie/components/Pagination.vue

@@ -11,17 +11,20 @@
 </template>
 
 <script>
-    import { paginationServiceData, defaultPageSizes } from './paginationData';
-
     export default {
         name:     'Pagination',
         props:    {
             pageSizes: {
                 type:    Array,
-                default: () => defaultPageSizes,
+                default: () => [],
             },
         },
         inject:   {
+            paginationServiceData: {
+                type:    Object,
+                default: () => {
+                },
+            },
             tableServiceData: {
                 type:    Object,
                 default: () => {
@@ -31,23 +34,23 @@
         computed: {
             page:  {
                 get() {
-                    return paginationServiceData.page;
+                    return this.paginationServiceData.page;
                 },
                 set(val) {
-                    paginationServiceData.page = val;
+                    this.paginationServiceData.page = val;
                 },
             },
             size:  {
                 get() {
-                    return paginationServiceData.size;
+                    return this.paginationServiceData.size;
                 },
                 set(val) {
-                    paginationServiceData.size = val;
+                    this.paginationServiceData.size = val;
                 },
             },
             total: {
                 get() {
-                    return paginationServiceData.total;
+                    return this.paginationServiceData.total;
                 },
                 set(val) {
                     this.paginationServiceData.total = val;
@@ -70,6 +73,9 @@
                 this.$emit('current-page', val);
             },
         },
+        beforeDestroy() {
+            // this.paginationServiceData.clearData();
+        }
     };
 </script>
 

+ 1 - 1
src/views/management/YouQingLianJie/components/Table.vue

@@ -11,7 +11,7 @@
         </el-table-column>
         <el-table-column
                 prop="name"
-                label="名称"
+                label="友情链接名称"
                 :show-overflow-tooltip="true"
                 width="200">
         </el-table-column>

+ 0 - 14
src/views/management/YouQingLianJie/components/paginationData.js

@@ -1,14 +0,0 @@
-import Vue from 'vue';
-
-const pagination = {
-    page: 1,
-    size: 10,
-    total: 0
-}
-const defaultPageSizes = [10, 20, 30, 40];
-const paginationServiceData = Vue.observable(pagination);
-
-export {
-    paginationServiceData,
-    defaultPageSizes
-}

+ 0 - 11
src/views/management/YouQingLianJie/components/tableData.js

@@ -1,11 +0,0 @@
-import Vue from 'vue';
-
-const tableData = {
-    myData: []
-}
-
-const tableServiceData = Vue.observable(tableData);
-
-export {
-    tableServiceData
-}

+ 23 - 7
src/views/management/YouQingLianJie/index.vue

@@ -5,7 +5,7 @@
             <div>
                 <el-input
                         class="search-name"
-                        placeholder="请输入内容"
+                        placeholder="请输入友情链接名称"
                         v-model="searchData"
                         clearable>
                 </el-input>
@@ -26,6 +26,7 @@
         <!--    分页    -->
         <myPagination
                 class="yqlj-pagination"
+                :pageSizes="defaultPageSizes"
                 @size-change="handleSizeChange"
                 @current-page="handleCurrentPage" />
 
@@ -79,16 +80,30 @@
 </template>
 
 <script>
-    import { tableServiceData }      from './components/tableData';
-    import { paginationServiceData } from './components/paginationData';
-    import myPagination              from './components/Pagination';
-    import myTable                   from './components/Table';
-    import * as YQLJService          from '@/api/youqinglianjie';
-    import * as comminUtil           from '@/utils/admin/tools';
+    import myPagination     from './components/Pagination';
+    import myTable          from './components/Table';
+    import * as YQLJService from '@/api/youqinglianjie';
+    import * as comminUtil  from '@/utils/admin/tools';
+    import Vue              from 'vue';
 
+    const tableData = {
+        myData: [],
+    };
+
+    const pagination = {
+        page:  1,
+        size:  10,
+        total: 0,
+    };
+
+    const defaultPageSizes = [10, 20, 30, 40];
+
+    const paginationServiceData = Vue.observable(pagination);
+    const tableServiceData = Vue.observable(tableData);
     export default {
         name:       'YouQingLianJie',
         provide:    {
+            defaultPageSizes,
             tableServiceData,
             paginationServiceData,
         },
@@ -98,6 +113,7 @@
         },
         data() {
             return {
+                defaultPageSizes:  defaultPageSizes,
                 addDialogVisit:    false,
                 editorDialogVisit: false,
                 searchData:        '',