wuhongyu %!s(int64=5) %!d(string=hai) anos
pai
achega
21eb2e1b8b
Modificáronse 31 ficheiros con 2664 adicións e 38 borrados
  1. 60 0
      src/layout/achievement/achievementsDetail.vue
  2. 84 0
      src/layout/achievement/achievementsList.vue
  3. 7 7
      src/layout/achievement/cooperation.vue
  4. 0 19
      src/layout/achievement/right.vue
  5. 4 4
      src/layout/achievement/seminar.vue
  6. 56 2
      src/router/index.js
  7. 154 0
      src/views/achievement/country.vue
  8. 154 0
      src/views/achievement/entrepreneurship.vue
  9. 69 6
      src/views/achievement/index.vue
  10. 154 0
      src/views/achievement/knowledge.vue
  11. 60 0
      src/views/achievement/parts/countryDetail.vue
  12. 84 0
      src/views/achievement/parts/countryList.vue
  13. 60 0
      src/views/achievement/parts/entrepreneurshipDetail.vue
  14. 84 0
      src/views/achievement/parts/entrepreneurshipList.vue
  15. 60 0
      src/views/achievement/parts/knowledgeDetail.vue
  16. 84 0
      src/views/achievement/parts/knowledgeList.vue
  17. 60 0
      src/views/achievement/parts/projectDetail.vue
  18. 84 0
      src/views/achievement/parts/projectList.vue
  19. 60 0
      src/views/achievement/parts/softwareDetail.vue
  20. 84 0
      src/views/achievement/parts/softwareList.vue
  21. 60 0
      src/views/achievement/parts/supercomputingDetail.vue
  22. 84 0
      src/views/achievement/parts/supercomputingList.vue
  23. 60 0
      src/views/achievement/parts/teachingDetail.vue
  24. 84 0
      src/views/achievement/parts/teachingList.vue
  25. 60 0
      src/views/achievement/parts/technologyDetail.vue
  26. 84 0
      src/views/achievement/parts/technologyList.vue
  27. 154 0
      src/views/achievement/project.vue
  28. 154 0
      src/views/achievement/software.vue
  29. 154 0
      src/views/achievement/supercomputing.vue
  30. 154 0
      src/views/achievement/teaching.vue
  31. 154 0
      src/views/achievement/technology.vue

+ 60 - 0
src/layout/achievement/achievementsDetail.vue

@@ -0,0 +1,60 @@
+<template>
+  <div id="achievementsDetail">
+    <el-row>
+      <el-col :span="24" class="info">
+        <h3>{{ details.title }}</h3>
+        <div>
+          <span>文章来源:{{ details.source }}</span>
+          <span>时间:{{ details.date }}</span>
+        </div>
+        <p>{{ details.content }}</p>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'achievementsDetail',
+  props: {
+    details: null,
+  },
+  components: {},
+  data: function() {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.info {
+  padding: 20px 0;
+  h3 {
+    font-size: 24px;
+    color: #005293;
+    text-align: center;
+  }
+  div {
+    text-align: center;
+    border-bottom: 1px solid #ccc;
+    padding: 0 0 40px 0;
+    margin: 0 0 20px 0;
+    span {
+      color: #666666;
+      padding: 0 10px;
+    }
+  }
+}
+</style>

+ 84 - 0
src/layout/achievement/achievementsList.vue

@@ -0,0 +1,84 @@
+<template>
+  <div id="newsList">
+    <el-row>
+      <el-col :span="24" class="info">
+        <el-col :span="24" class="list" @click.native="detailBtn(item.id)" v-for="(item, index) in list" :key="index">
+          <span></span>
+          <span class="textOver">{{ item.title }}</span>
+          <span>{{ item.date }}</span>
+        </el-col>
+        <el-col :span="24" class="page">
+          <pagination :total="total"></pagination>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import pagination from '@/components/pagination.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'newsList',
+  props: {
+    list: null,
+    total: null,
+  },
+  components: {
+    pagination,
+  },
+  data: function() {
+    return {};
+  },
+  created() {},
+  methods: {
+    detailBtn(id) {
+      this.$emit('detailBtn', id);
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.info {
+  .list {
+    padding: 0 0 7px 0;
+
+    span:first-child {
+      display: inline-block;
+      width: 4px;
+      height: 4px;
+      background: #ccc;
+      margin: 0px 10px 7px 0px;
+    }
+    span:nth-child(2) {
+      display: inline-block;
+      font-size: 16px;
+      color: #555555;
+      font-family: '微软雅黑';
+      width: 85%;
+      margin: 0 30px 0 0;
+    }
+    span:last-child {
+      display: inline-block;
+      width: 90px;
+      font-size: 16px;
+      color: #a8abb7;
+      font-family: '微软雅黑';
+      text-align: right;
+    }
+  }
+  .page {
+    height: 50px;
+  }
+}
+</style>

+ 7 - 7
src/layout/achievement/cooperation.vue

@@ -28,15 +28,15 @@ export default {
   methods: {
     clickUrl(title) {
       if (title == '超算联盟') {
-        this.$router.push({ path: '/achievement/index' });
+        this.$router.push({ path: '/achievement/supercomputing', query: { name: '超算联盟' } });
       } else if (title == '国家网格') {
-        this.$router.push({ path: '/achievement/achievement' });
+        this.$router.push({ path: '/achievement/country', query: { name: '国家网格' } });
       } else if (title == '教学中心') {
-        this.$router.push({ path: '/achievement/knowledge' });
+        this.$router.push({ path: '/achievement/teaching', query: { name: '教学中心' } });
       } else if (title == '创业基地') {
-        this.$router.push({ path: '/achievement/technology' });
+        this.$router.push({ path: '/achievement/entrepreneurship', query: { name: '创业基地' } });
       } else if (title == '软件中心') {
-        this.$router.push({ path: '/achievement/technology' });
+        this.$router.push({ path: '/achievement/software', query: { name: '软件中心' } });
       }
     },
     handleOpen(key, keyPath) {
@@ -51,9 +51,9 @@ export default {
 
 <style lang="less" scoped>
 .swfl {
-  height: 60px;
+  height: 70px;
   width: 250px;
-  line-height: 60px;
+  line-height: 70px;
   background-color: #22529a;
   text-align: center;
 }

+ 0 - 19
src/layout/achievement/right.vue

@@ -1,19 +0,0 @@
-<template>
-  <div id="right">
-    <p>right</p>
-  </div>
-</template>
-
-<script>
-export default {
-  name: 'right',
-  props: {},
-  components: {},
-  data: () => ({}),
-  created() {},
-  computed: {},
-  methods: {},
-};
-</script>
-
-<style lang="less" scoped></style>

+ 4 - 4
src/layout/achievement/seminar.vue

@@ -29,13 +29,13 @@ export default {
     clickUrl(title) {
       console.log(title);
       if (title == '平台建设') {
-        this.$router.push({ path: '/achievement/index' });
+        this.$router.push({ path: '/achievement/index', query: { name: '平台建设' } });
       } else if (title == '项目成果') {
-        this.$router.push({ path: '/achievement/achievement' });
+        this.$router.push({ path: '/achievement/project', query: { name: '项目成果' } });
       } else if (title == '知识产权') {
-        this.$router.push({ path: '/achievement/knowledge' });
+        this.$router.push({ path: '/achievement/knowledge', query: { name: '知识产权' } });
       } else if (title == '科技支撑') {
-        this.$router.push({ path: '/achievement/technology' });
+        this.$router.push({ path: '/achievement/technology', query: { name: '科技支撑' } });
       }
     },
     handleOpen(key, keyPath) {

+ 56 - 2
src/router/index.js

@@ -33,12 +33,66 @@ const routes = [
     meta: { title: '交流互动', subSite: true },
     component: () => import('../views/communication/index.vue'),
   },
-  //成果展示
+  //成果展示第一项
   {
     path: '/achievement/index',
-    name: '成果展示',
+    name: '平台建设',
     component: () => import('../views/achievement/index.vue'),
   },
+  //成果展示-项目成果
+  {
+    path: '/achievement/project',
+    name: '项目成果',
+    component: () => import('../views/achievement/project.vue'),
+  },
+  //成果展示-知识产权
+  {
+    path: '/achievement/knowledge',
+    name: '知识产权',
+    component: () => import('../views/achievement/knowledge.vue'),
+  },
+
+  //成果展示-科技支撑
+  {
+    path: '/achievement/technology',
+    name: '科技支撑',
+    component: () => import('../views/achievement/technology.vue'),
+  },
+
+  //成果展示-超算联盟
+  {
+    path: '/achievement/supercomputing',
+    name: '超算联盟',
+    component: () => import('../views/achievement/supercomputing.vue'),
+  },
+
+  //成果展示-国家网格
+  {
+    path: '/achievement/country',
+    name: '国家网格',
+    component: () => import('../views/achievement/country.vue'),
+  },
+
+  //成果展示-教学中心
+  {
+    path: '/achievement/teaching',
+    name: '教学中心',
+    component: () => import('../views/achievement/teaching.vue'),
+  },
+  //成果展示-创业基地
+  {
+    path: '/achievement/entrepreneurship',
+    name: '创业基地',
+    component: () => import('../views/achievement/entrepreneurship.vue'),
+  },
+
+  //成果展示-软件中心
+  {
+    path: '/achievement/software',
+    name: '软件中心',
+    component: () => import('../views/achievement/software.vue'),
+  },
+
   // 党建学苑
   {
     path: '/partisan/index',

+ 154 - 0
src/views/achievement/country.vue

@@ -0,0 +1,154 @@
+<template>
+  <div id="index">
+    <el-row>
+      <el-col :span="24" class="style">
+        <el-col :span="24" class="top">
+          <top></top>
+        </el-col>
+        <el-col :span="24" class="menu">
+          <div class="w_1200">
+            <menus></menus>
+          </div>
+        </el-col>
+        <el-col :span="24" class="main">
+          <div class="w_1200">
+            <el-col :span="5" class="left">
+              <el-col :span="24" class="leftone">
+                <seminar></seminar>
+              </el-col>
+              <el-col :span="24" class="lefttwo">
+                <cooperation> </cooperation>
+              </el-col>
+            </el-col>
+            <el-col :span="19" class="context">
+              <el-col :span="18" class="right">
+                <span v-if="displays == '0'">
+                  <el-col :span="24" class="one">
+                    <span></span>
+                    <span>{{ columnName }}</span>
+                  </el-col>
+                  <el-col :span="24" class="list">
+                    <countryList :list="list" :total="total" @detailBtn="detailBtn"></countryList>
+                  </el-col>
+                </span>
+                <span v-else>
+                  <countryDetail :details="details"></countryDetail>
+                </span>
+              </el-col>
+            </el-col>
+          </div>
+        </el-col>
+        <el-col :span="24" class="foot">
+          <div class="w_1200">
+            <foot></foot>
+          </div>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import top from '@/layout/common/top.vue';
+import menus from '@/layout/common/menus.vue';
+import foot from '@/layout/common/foot.vue';
+import seminar from '@/layout/achievement/seminar.vue';
+import countryDetail from './parts/countryDetail.vue';
+import countryList from './parts/countryList.vue';
+import cooperation from '@/layout/achievement/cooperation.vue';
+
+export default {
+  name: 'index',
+  props: {},
+  components: { top, menus, foot, seminar, countryList, cooperation, countryDetail },
+  data: () => ({
+    displays: '0',
+    columnName: '',
+    total: 1,
+    details: {},
+    list: [
+      {
+        title: '新标题',
+        date: '2020-02-02',
+      },
+      {
+        title: '16条数据',
+        date: '2020-02-02',
+      },
+    ],
+    details: {
+      title: '新信息标题',
+      source: '信息部',
+      date: '2020-02-02',
+      content: '信息内容',
+    },
+  }),
+  created() {
+    this.search();
+  },
+  computed: {
+    name() {
+      return this.$route.query.name;
+    },
+  },
+  methods: {
+    async detailBtn() {
+      this.$set(this, `displays`, 1);
+    },
+    async search() {
+      this.$set(this, `columnName`, this.name);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.w_1200 {
+  width: 1200px;
+  margin: 0 auto;
+}
+.main {
+  min-height: 670px;
+  overflow: hidden;
+  margin: 10px 0;
+  .left {
+    margin: 0 10px 0 0;
+    .leftone {
+      background: #fff;
+    }
+    .lefttwo {
+      background-color: #fff;
+    }
+  }
+
+  .right {
+    width: 100%;
+    min-height: 600px;
+    background: #fff;
+    padding: 0 20px;
+    .one {
+      height: 35px;
+      margin: 20px 0;
+      border-bottom: 1px dashed #ccc;
+      span:first-child {
+        display: inline-block;
+        width: 4px;
+        height: 20px;
+        background: #005293;
+        margin: 0 10px -3px 0;
+      }
+      span:nth-child(2) {
+        font-size: 20px;
+        color: #005293;
+        font-weight: bold;
+      }
+    }
+  }
+
+  .context {
+    width: 78%;
+    min-height: 670px;
+    background: #fff;
+  }
+}
+</style>

+ 154 - 0
src/views/achievement/entrepreneurship.vue

@@ -0,0 +1,154 @@
+<template>
+  <div id="index">
+    <el-row>
+      <el-col :span="24" class="style">
+        <el-col :span="24" class="top">
+          <top></top>
+        </el-col>
+        <el-col :span="24" class="menu">
+          <div class="w_1200">
+            <menus></menus>
+          </div>
+        </el-col>
+        <el-col :span="24" class="main">
+          <div class="w_1200">
+            <el-col :span="5" class="left">
+              <el-col :span="24" class="leftone">
+                <seminar></seminar>
+              </el-col>
+              <el-col :span="24" class="lefttwo">
+                <cooperation> </cooperation>
+              </el-col>
+            </el-col>
+            <el-col :span="19" class="context">
+              <el-col :span="18" class="right">
+                <span v-if="displays == '0'">
+                  <el-col :span="24" class="one">
+                    <span></span>
+                    <span>{{ columnName }}</span>
+                  </el-col>
+                  <el-col :span="24" class="list">
+                    <entrepreneurshipList :list="list" :total="total" @detailBtn="detailBtn"></entrepreneurshipList>
+                  </el-col>
+                </span>
+                <span v-else>
+                  <entrepreneurshipDetail :details="details"></entrepreneurshipDetail>
+                </span>
+              </el-col>
+            </el-col>
+          </div>
+        </el-col>
+        <el-col :span="24" class="foot">
+          <div class="w_1200">
+            <foot></foot>
+          </div>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import top from '@/layout/common/top.vue';
+import menus from '@/layout/common/menus.vue';
+import foot from '@/layout/common/foot.vue';
+import seminar from '@/layout/achievement/seminar.vue';
+import entrepreneurshipDetail from './parts/entrepreneurshipDetail.vue';
+import entrepreneurshipList from './parts/entrepreneurshipList.vue';
+import cooperation from '@/layout/achievement/cooperation.vue';
+
+export default {
+  name: 'index',
+  props: {},
+  components: { top, menus, foot, seminar, entrepreneurshipList, cooperation, entrepreneurshipDetail },
+  data: () => ({
+    displays: '0',
+    columnName: '',
+    total: 1,
+    details: {},
+    list: [
+      {
+        title: '新标题',
+        date: '2020-02-02',
+      },
+      {
+        title: '16条数据',
+        date: '2020-02-02',
+      },
+    ],
+    details: {
+      title: '新信息标题',
+      source: '信息部',
+      date: '2020-02-02',
+      content: '信息内容',
+    },
+  }),
+  created() {
+    this.search();
+  },
+  computed: {
+    name() {
+      return this.$route.query.name;
+    },
+  },
+  methods: {
+    async detailBtn() {
+      this.$set(this, `displays`, 1);
+    },
+    async search() {
+      this.$set(this, `columnName`, this.name);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.w_1200 {
+  width: 1200px;
+  margin: 0 auto;
+}
+.main {
+  min-height: 670px;
+  overflow: hidden;
+  margin: 10px 0;
+  .left {
+    margin: 0 10px 0 0;
+    .leftone {
+      background: #fff;
+    }
+    .lefttwo {
+      background-color: #fff;
+    }
+  }
+
+  .right {
+    width: 100%;
+    min-height: 600px;
+    background: #fff;
+    padding: 0 20px;
+    .one {
+      height: 35px;
+      margin: 20px 0;
+      border-bottom: 1px dashed #ccc;
+      span:first-child {
+        display: inline-block;
+        width: 4px;
+        height: 20px;
+        background: #005293;
+        margin: 0 10px -3px 0;
+      }
+      span:nth-child(2) {
+        font-size: 20px;
+        color: #005293;
+        font-weight: bold;
+      }
+    }
+  }
+
+  .context {
+    width: 78%;
+    min-height: 670px;
+    background: #fff;
+  }
+}
+</style>

+ 69 - 6
src/views/achievement/index.vue

@@ -21,7 +21,20 @@
               </el-col>
             </el-col>
             <el-col :span="19" class="context">
-              <right></right>
+              <el-col :span="18" class="right">
+                <span v-if="displays == '0'">
+                  <el-col :span="24" class="one">
+                    <span></span>
+                    <span>{{ columnName }}</span>
+                  </el-col>
+                  <el-col :span="24" class="list">
+                    <achievementsList :list="list" :total="total" @detailBtn="detailBtn"></achievementsList>
+                  </el-col>
+                </span>
+                <span v-else>
+                  <achievementsDetail :details="details"></achievementsDetail>
+                </span>
+              </el-col>
             </el-col>
           </div>
         </el-col>
@@ -40,17 +53,43 @@ import top from '@/layout/common/top.vue';
 import menus from '@/layout/common/menus.vue';
 import foot from '@/layout/common/foot.vue';
 import seminar from '@/layout/achievement/seminar.vue';
-import right from '@/layout/achievement/right.vue';
+import achievementsDetail from '@/layout/achievement/achievementsDetail.vue';
+import achievementsList from '@/layout/achievement/achievementsList.vue';
 import cooperation from '@/layout/achievement/cooperation.vue';
 
 export default {
   name: 'index',
   props: {},
-  components: { top, menus, foot, seminar, right, cooperation },
-  data: () => ({}),
+  components: { top, menus, foot, seminar, achievementsList, cooperation, achievementsDetail },
+  data: () => ({
+    displays: '0',
+    columnName: '平台建设',
+    total: 1,
+    details: {},
+    list: [
+      {
+        title: '标题',
+        date: '2020-02-02',
+      },
+      {
+        title: '16条数据',
+        date: '2020-02-02',
+      },
+    ],
+    details: {
+      title: '信息标题',
+      source: '信息部',
+      date: '2020-02-02',
+      content: '信息内容',
+    },
+  }),
   created() {},
   computed: {},
-  methods: {},
+  methods: {
+    async detailBtn() {
+      this.$set(this, `displays`, 1);
+    },
+  },
 };
 </script>
 
@@ -70,9 +109,33 @@ export default {
     }
     .lefttwo {
       background-color: #fff;
-      margin: 10px 0 0 0;
     }
   }
+
+  .right {
+    width: 100%;
+    min-height: 600px;
+    background: #fff;
+    padding: 0 20px;
+    .one {
+      height: 35px;
+      margin: 20px 0;
+      border-bottom: 1px dashed #ccc;
+      span:first-child {
+        display: inline-block;
+        width: 4px;
+        height: 20px;
+        background: #005293;
+        margin: 0 10px -3px 0;
+      }
+      span:nth-child(2) {
+        font-size: 20px;
+        color: #005293;
+        font-weight: bold;
+      }
+    }
+  }
+
   .context {
     width: 78%;
     min-height: 670px;

+ 154 - 0
src/views/achievement/knowledge.vue

@@ -0,0 +1,154 @@
+<template>
+  <div id="index">
+    <el-row>
+      <el-col :span="24" class="style">
+        <el-col :span="24" class="top">
+          <top></top>
+        </el-col>
+        <el-col :span="24" class="menu">
+          <div class="w_1200">
+            <menus></menus>
+          </div>
+        </el-col>
+        <el-col :span="24" class="main">
+          <div class="w_1200">
+            <el-col :span="5" class="left">
+              <el-col :span="24" class="leftone">
+                <seminar></seminar>
+              </el-col>
+              <el-col :span="24" class="lefttwo">
+                <cooperation> </cooperation>
+              </el-col>
+            </el-col>
+            <el-col :span="19" class="context">
+              <el-col :span="18" class="right">
+                <span v-if="displays == '0'">
+                  <el-col :span="24" class="one">
+                    <span></span>
+                    <span>{{ columnName }}</span>
+                  </el-col>
+                  <el-col :span="24" class="list">
+                    <knowledgeList :list="list" :total="total" @detailBtn="detailBtn"></knowledgeList>
+                  </el-col>
+                </span>
+                <span v-else>
+                  <knowledgeDetail :details="details"></knowledgeDetail>
+                </span>
+              </el-col>
+            </el-col>
+          </div>
+        </el-col>
+        <el-col :span="24" class="foot">
+          <div class="w_1200">
+            <foot></foot>
+          </div>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import top from '@/layout/common/top.vue';
+import menus from '@/layout/common/menus.vue';
+import foot from '@/layout/common/foot.vue';
+import seminar from '@/layout/achievement/seminar.vue';
+import knowledgeDetail from './parts/knowledgeDetail.vue';
+import knowledgeList from './parts/knowledgeList.vue';
+import cooperation from '@/layout/achievement/cooperation.vue';
+
+export default {
+  name: 'index',
+  props: {},
+  components: { top, menus, foot, seminar, knowledgeList, cooperation, knowledgeDetail },
+  data: () => ({
+    displays: '0',
+    columnName: '',
+    total: 1,
+    details: {},
+    list: [
+      {
+        title: '标题',
+        date: '2020-02-02',
+      },
+      {
+        title: '16条数据',
+        date: '2020-02-02',
+      },
+    ],
+    details: {
+      title: '信息标题',
+      source: '信息部',
+      date: '2020-02-02',
+      content: '信息内容',
+    },
+  }),
+  created() {
+    this.search();
+  },
+  computed: {
+    name() {
+      return this.$route.query.name;
+    },
+  },
+  methods: {
+    async detailBtn() {
+      this.$set(this, `displays`, 1);
+    },
+    async search() {
+      this.$set(this, `columnName`, this.name);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.w_1200 {
+  width: 1200px;
+  margin: 0 auto;
+}
+.main {
+  min-height: 670px;
+  overflow: hidden;
+  margin: 10px 0;
+  .left {
+    margin: 0 10px 0 0;
+    .leftone {
+      background: #fff;
+    }
+    .lefttwo {
+      background-color: #fff;
+    }
+  }
+
+  .right {
+    width: 100%;
+    min-height: 600px;
+    background: #fff;
+    padding: 0 20px;
+    .one {
+      height: 35px;
+      margin: 20px 0;
+      border-bottom: 1px dashed #ccc;
+      span:first-child {
+        display: inline-block;
+        width: 4px;
+        height: 20px;
+        background: #005293;
+        margin: 0 10px -3px 0;
+      }
+      span:nth-child(2) {
+        font-size: 20px;
+        color: #005293;
+        font-weight: bold;
+      }
+    }
+  }
+
+  .context {
+    width: 78%;
+    min-height: 670px;
+    background: #fff;
+  }
+}
+</style>

+ 60 - 0
src/views/achievement/parts/countryDetail.vue

@@ -0,0 +1,60 @@
+<template>
+  <div id="achievementsDetail">
+    <el-row>
+      <el-col :span="24" class="info">
+        <h3>{{ details.title }}</h3>
+        <div>
+          <span>文章来源:{{ details.source }}</span>
+          <span>时间:{{ details.date }}</span>
+        </div>
+        <p>{{ details.content }}</p>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'achievementsDetail',
+  props: {
+    details: null,
+  },
+  components: {},
+  data: function() {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.info {
+  padding: 20px 0;
+  h3 {
+    font-size: 24px;
+    color: #005293;
+    text-align: center;
+  }
+  div {
+    text-align: center;
+    border-bottom: 1px solid #ccc;
+    padding: 0 0 40px 0;
+    margin: 0 0 20px 0;
+    span {
+      color: #666666;
+      padding: 0 10px;
+    }
+  }
+}
+</style>

+ 84 - 0
src/views/achievement/parts/countryList.vue

@@ -0,0 +1,84 @@
+<template>
+  <div id="newsList">
+    <el-row>
+      <el-col :span="24" class="info">
+        <el-col :span="24" class="list" @click.native="detailBtn(item.id)" v-for="(item, index) in list" :key="index">
+          <span></span>
+          <span class="textOver">{{ item.title }}</span>
+          <span>{{ item.date }}</span>
+        </el-col>
+        <el-col :span="24" class="page">
+          <pagination :total="total"></pagination>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import pagination from '@/components/pagination.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'newsList',
+  props: {
+    list: null,
+    total: null,
+  },
+  components: {
+    pagination,
+  },
+  data: function() {
+    return {};
+  },
+  created() {},
+  methods: {
+    detailBtn(id) {
+      this.$emit('detailBtn', id);
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.info {
+  .list {
+    padding: 0 0 7px 0;
+
+    span:first-child {
+      display: inline-block;
+      width: 4px;
+      height: 4px;
+      background: #ccc;
+      margin: 0px 10px 7px 0px;
+    }
+    span:nth-child(2) {
+      display: inline-block;
+      font-size: 16px;
+      color: #555555;
+      font-family: '微软雅黑';
+      width: 85%;
+      margin: 0 30px 0 0;
+    }
+    span:last-child {
+      display: inline-block;
+      width: 90px;
+      font-size: 16px;
+      color: #a8abb7;
+      font-family: '微软雅黑';
+      text-align: right;
+    }
+  }
+  .page {
+    height: 50px;
+  }
+}
+</style>

+ 60 - 0
src/views/achievement/parts/entrepreneurshipDetail.vue

@@ -0,0 +1,60 @@
+<template>
+  <div id="achievementsDetail">
+    <el-row>
+      <el-col :span="24" class="info">
+        <h3>{{ details.title }}</h3>
+        <div>
+          <span>文章来源:{{ details.source }}</span>
+          <span>时间:{{ details.date }}</span>
+        </div>
+        <p>{{ details.content }}</p>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'achievementsDetail',
+  props: {
+    details: null,
+  },
+  components: {},
+  data: function() {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.info {
+  padding: 20px 0;
+  h3 {
+    font-size: 24px;
+    color: #005293;
+    text-align: center;
+  }
+  div {
+    text-align: center;
+    border-bottom: 1px solid #ccc;
+    padding: 0 0 40px 0;
+    margin: 0 0 20px 0;
+    span {
+      color: #666666;
+      padding: 0 10px;
+    }
+  }
+}
+</style>

+ 84 - 0
src/views/achievement/parts/entrepreneurshipList.vue

@@ -0,0 +1,84 @@
+<template>
+  <div id="newsList">
+    <el-row>
+      <el-col :span="24" class="info">
+        <el-col :span="24" class="list" @click.native="detailBtn(item.id)" v-for="(item, index) in list" :key="index">
+          <span></span>
+          <span class="textOver">{{ item.title }}</span>
+          <span>{{ item.date }}</span>
+        </el-col>
+        <el-col :span="24" class="page">
+          <pagination :total="total"></pagination>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import pagination from '@/components/pagination.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'newsList',
+  props: {
+    list: null,
+    total: null,
+  },
+  components: {
+    pagination,
+  },
+  data: function() {
+    return {};
+  },
+  created() {},
+  methods: {
+    detailBtn(id) {
+      this.$emit('detailBtn', id);
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.info {
+  .list {
+    padding: 0 0 7px 0;
+
+    span:first-child {
+      display: inline-block;
+      width: 4px;
+      height: 4px;
+      background: #ccc;
+      margin: 0px 10px 7px 0px;
+    }
+    span:nth-child(2) {
+      display: inline-block;
+      font-size: 16px;
+      color: #555555;
+      font-family: '微软雅黑';
+      width: 85%;
+      margin: 0 30px 0 0;
+    }
+    span:last-child {
+      display: inline-block;
+      width: 90px;
+      font-size: 16px;
+      color: #a8abb7;
+      font-family: '微软雅黑';
+      text-align: right;
+    }
+  }
+  .page {
+    height: 50px;
+  }
+}
+</style>

+ 60 - 0
src/views/achievement/parts/knowledgeDetail.vue

@@ -0,0 +1,60 @@
+<template>
+  <div id="achievementsDetail">
+    <el-row>
+      <el-col :span="24" class="info">
+        <h3>{{ details.title }}</h3>
+        <div>
+          <span>文章来源:{{ details.source }}</span>
+          <span>时间:{{ details.date }}</span>
+        </div>
+        <p>{{ details.content }}</p>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'achievementsDetail',
+  props: {
+    details: null,
+  },
+  components: {},
+  data: function() {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.info {
+  padding: 20px 0;
+  h3 {
+    font-size: 24px;
+    color: #005293;
+    text-align: center;
+  }
+  div {
+    text-align: center;
+    border-bottom: 1px solid #ccc;
+    padding: 0 0 40px 0;
+    margin: 0 0 20px 0;
+    span {
+      color: #666666;
+      padding: 0 10px;
+    }
+  }
+}
+</style>

+ 84 - 0
src/views/achievement/parts/knowledgeList.vue

@@ -0,0 +1,84 @@
+<template>
+  <div id="newsList">
+    <el-row>
+      <el-col :span="24" class="info">
+        <el-col :span="24" class="list" @click.native="detailBtn(item.id)" v-for="(item, index) in list" :key="index">
+          <span></span>
+          <span class="textOver">{{ item.title }}</span>
+          <span>{{ item.date }}</span>
+        </el-col>
+        <el-col :span="24" class="page">
+          <pagination :total="total"></pagination>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import pagination from '@/components/pagination.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'newsList',
+  props: {
+    list: null,
+    total: null,
+  },
+  components: {
+    pagination,
+  },
+  data: function() {
+    return {};
+  },
+  created() {},
+  methods: {
+    detailBtn(id) {
+      this.$emit('detailBtn', id);
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.info {
+  .list {
+    padding: 0 0 7px 0;
+
+    span:first-child {
+      display: inline-block;
+      width: 4px;
+      height: 4px;
+      background: #ccc;
+      margin: 0px 10px 7px 0px;
+    }
+    span:nth-child(2) {
+      display: inline-block;
+      font-size: 16px;
+      color: #555555;
+      font-family: '微软雅黑';
+      width: 85%;
+      margin: 0 30px 0 0;
+    }
+    span:last-child {
+      display: inline-block;
+      width: 90px;
+      font-size: 16px;
+      color: #a8abb7;
+      font-family: '微软雅黑';
+      text-align: right;
+    }
+  }
+  .page {
+    height: 50px;
+  }
+}
+</style>

+ 60 - 0
src/views/achievement/parts/projectDetail.vue

@@ -0,0 +1,60 @@
+<template>
+  <div id="achievementsDetail">
+    <el-row>
+      <el-col :span="24" class="info">
+        <h3>{{ details.title }}</h3>
+        <div>
+          <span>文章来源:{{ details.source }}</span>
+          <span>时间:{{ details.date }}</span>
+        </div>
+        <p>{{ details.content }}</p>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'achievementsDetail',
+  props: {
+    details: null,
+  },
+  components: {},
+  data: function() {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.info {
+  padding: 20px 0;
+  h3 {
+    font-size: 24px;
+    color: #005293;
+    text-align: center;
+  }
+  div {
+    text-align: center;
+    border-bottom: 1px solid #ccc;
+    padding: 0 0 40px 0;
+    margin: 0 0 20px 0;
+    span {
+      color: #666666;
+      padding: 0 10px;
+    }
+  }
+}
+</style>

+ 84 - 0
src/views/achievement/parts/projectList.vue

@@ -0,0 +1,84 @@
+<template>
+  <div id="newsList">
+    <el-row>
+      <el-col :span="24" class="info">
+        <el-col :span="24" class="list" @click.native="detailBtn(item.id)" v-for="(item, index) in list" :key="index">
+          <span></span>
+          <span class="textOver">{{ item.title }}</span>
+          <span>{{ item.date }}</span>
+        </el-col>
+        <el-col :span="24" class="page">
+          <pagination :total="total"></pagination>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import pagination from '@/components/pagination.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'newsList',
+  props: {
+    list: null,
+    total: null,
+  },
+  components: {
+    pagination,
+  },
+  data: function() {
+    return {};
+  },
+  created() {},
+  methods: {
+    detailBtn(id) {
+      this.$emit('detailBtn', id);
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.info {
+  .list {
+    padding: 0 0 7px 0;
+
+    span:first-child {
+      display: inline-block;
+      width: 4px;
+      height: 4px;
+      background: #ccc;
+      margin: 0px 10px 7px 0px;
+    }
+    span:nth-child(2) {
+      display: inline-block;
+      font-size: 16px;
+      color: #555555;
+      font-family: '微软雅黑';
+      width: 85%;
+      margin: 0 30px 0 0;
+    }
+    span:last-child {
+      display: inline-block;
+      width: 90px;
+      font-size: 16px;
+      color: #a8abb7;
+      font-family: '微软雅黑';
+      text-align: right;
+    }
+  }
+  .page {
+    height: 50px;
+  }
+}
+</style>

+ 60 - 0
src/views/achievement/parts/softwareDetail.vue

@@ -0,0 +1,60 @@
+<template>
+  <div id="achievementsDetail">
+    <el-row>
+      <el-col :span="24" class="info">
+        <h3>{{ details.title }}</h3>
+        <div>
+          <span>文章来源:{{ details.source }}</span>
+          <span>时间:{{ details.date }}</span>
+        </div>
+        <p>{{ details.content }}</p>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'achievementsDetail',
+  props: {
+    details: null,
+  },
+  components: {},
+  data: function() {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.info {
+  padding: 20px 0;
+  h3 {
+    font-size: 24px;
+    color: #005293;
+    text-align: center;
+  }
+  div {
+    text-align: center;
+    border-bottom: 1px solid #ccc;
+    padding: 0 0 40px 0;
+    margin: 0 0 20px 0;
+    span {
+      color: #666666;
+      padding: 0 10px;
+    }
+  }
+}
+</style>

+ 84 - 0
src/views/achievement/parts/softwareList.vue

@@ -0,0 +1,84 @@
+<template>
+  <div id="newsList">
+    <el-row>
+      <el-col :span="24" class="info">
+        <el-col :span="24" class="list" @click.native="detailBtn(item.id)" v-for="(item, index) in list" :key="index">
+          <span></span>
+          <span class="textOver">{{ item.title }}</span>
+          <span>{{ item.date }}</span>
+        </el-col>
+        <el-col :span="24" class="page">
+          <pagination :total="total"></pagination>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import pagination from '@/components/pagination.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'newsList',
+  props: {
+    list: null,
+    total: null,
+  },
+  components: {
+    pagination,
+  },
+  data: function() {
+    return {};
+  },
+  created() {},
+  methods: {
+    detailBtn(id) {
+      this.$emit('detailBtn', id);
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.info {
+  .list {
+    padding: 0 0 7px 0;
+
+    span:first-child {
+      display: inline-block;
+      width: 4px;
+      height: 4px;
+      background: #ccc;
+      margin: 0px 10px 7px 0px;
+    }
+    span:nth-child(2) {
+      display: inline-block;
+      font-size: 16px;
+      color: #555555;
+      font-family: '微软雅黑';
+      width: 85%;
+      margin: 0 30px 0 0;
+    }
+    span:last-child {
+      display: inline-block;
+      width: 90px;
+      font-size: 16px;
+      color: #a8abb7;
+      font-family: '微软雅黑';
+      text-align: right;
+    }
+  }
+  .page {
+    height: 50px;
+  }
+}
+</style>

+ 60 - 0
src/views/achievement/parts/supercomputingDetail.vue

@@ -0,0 +1,60 @@
+<template>
+  <div id="achievementsDetail">
+    <el-row>
+      <el-col :span="24" class="info">
+        <h3>{{ details.title }}</h3>
+        <div>
+          <span>文章来源:{{ details.source }}</span>
+          <span>时间:{{ details.date }}</span>
+        </div>
+        <p>{{ details.content }}</p>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'achievementsDetail',
+  props: {
+    details: null,
+  },
+  components: {},
+  data: function() {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.info {
+  padding: 20px 0;
+  h3 {
+    font-size: 24px;
+    color: #005293;
+    text-align: center;
+  }
+  div {
+    text-align: center;
+    border-bottom: 1px solid #ccc;
+    padding: 0 0 40px 0;
+    margin: 0 0 20px 0;
+    span {
+      color: #666666;
+      padding: 0 10px;
+    }
+  }
+}
+</style>

+ 84 - 0
src/views/achievement/parts/supercomputingList.vue

@@ -0,0 +1,84 @@
+<template>
+  <div id="newsList">
+    <el-row>
+      <el-col :span="24" class="info">
+        <el-col :span="24" class="list" @click.native="detailBtn(item.id)" v-for="(item, index) in list" :key="index">
+          <span></span>
+          <span class="textOver">{{ item.title }}</span>
+          <span>{{ item.date }}</span>
+        </el-col>
+        <el-col :span="24" class="page">
+          <pagination :total="total"></pagination>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import pagination from '@/components/pagination.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'newsList',
+  props: {
+    list: null,
+    total: null,
+  },
+  components: {
+    pagination,
+  },
+  data: function() {
+    return {};
+  },
+  created() {},
+  methods: {
+    detailBtn(id) {
+      this.$emit('detailBtn', id);
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.info {
+  .list {
+    padding: 0 0 7px 0;
+
+    span:first-child {
+      display: inline-block;
+      width: 4px;
+      height: 4px;
+      background: #ccc;
+      margin: 0px 10px 7px 0px;
+    }
+    span:nth-child(2) {
+      display: inline-block;
+      font-size: 16px;
+      color: #555555;
+      font-family: '微软雅黑';
+      width: 85%;
+      margin: 0 30px 0 0;
+    }
+    span:last-child {
+      display: inline-block;
+      width: 90px;
+      font-size: 16px;
+      color: #a8abb7;
+      font-family: '微软雅黑';
+      text-align: right;
+    }
+  }
+  .page {
+    height: 50px;
+  }
+}
+</style>

+ 60 - 0
src/views/achievement/parts/teachingDetail.vue

@@ -0,0 +1,60 @@
+<template>
+  <div id="achievementsDetail">
+    <el-row>
+      <el-col :span="24" class="info">
+        <h3>{{ details.title }}</h3>
+        <div>
+          <span>文章来源:{{ details.source }}</span>
+          <span>时间:{{ details.date }}</span>
+        </div>
+        <p>{{ details.content }}</p>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'achievementsDetail',
+  props: {
+    details: null,
+  },
+  components: {},
+  data: function() {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.info {
+  padding: 20px 0;
+  h3 {
+    font-size: 24px;
+    color: #005293;
+    text-align: center;
+  }
+  div {
+    text-align: center;
+    border-bottom: 1px solid #ccc;
+    padding: 0 0 40px 0;
+    margin: 0 0 20px 0;
+    span {
+      color: #666666;
+      padding: 0 10px;
+    }
+  }
+}
+</style>

+ 84 - 0
src/views/achievement/parts/teachingList.vue

@@ -0,0 +1,84 @@
+<template>
+  <div id="newsList">
+    <el-row>
+      <el-col :span="24" class="info">
+        <el-col :span="24" class="list" @click.native="detailBtn(item.id)" v-for="(item, index) in list" :key="index">
+          <span></span>
+          <span class="textOver">{{ item.title }}</span>
+          <span>{{ item.date }}</span>
+        </el-col>
+        <el-col :span="24" class="page">
+          <pagination :total="total"></pagination>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import pagination from '@/components/pagination.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'newsList',
+  props: {
+    list: null,
+    total: null,
+  },
+  components: {
+    pagination,
+  },
+  data: function() {
+    return {};
+  },
+  created() {},
+  methods: {
+    detailBtn(id) {
+      this.$emit('detailBtn', id);
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.info {
+  .list {
+    padding: 0 0 7px 0;
+
+    span:first-child {
+      display: inline-block;
+      width: 4px;
+      height: 4px;
+      background: #ccc;
+      margin: 0px 10px 7px 0px;
+    }
+    span:nth-child(2) {
+      display: inline-block;
+      font-size: 16px;
+      color: #555555;
+      font-family: '微软雅黑';
+      width: 85%;
+      margin: 0 30px 0 0;
+    }
+    span:last-child {
+      display: inline-block;
+      width: 90px;
+      font-size: 16px;
+      color: #a8abb7;
+      font-family: '微软雅黑';
+      text-align: right;
+    }
+  }
+  .page {
+    height: 50px;
+  }
+}
+</style>

+ 60 - 0
src/views/achievement/parts/technologyDetail.vue

@@ -0,0 +1,60 @@
+<template>
+  <div id="achievementsDetail">
+    <el-row>
+      <el-col :span="24" class="info">
+        <h3>{{ details.title }}</h3>
+        <div>
+          <span>文章来源:{{ details.source }}</span>
+          <span>时间:{{ details.date }}</span>
+        </div>
+        <p>{{ details.content }}</p>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'achievementsDetail',
+  props: {
+    details: null,
+  },
+  components: {},
+  data: function() {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.info {
+  padding: 20px 0;
+  h3 {
+    font-size: 24px;
+    color: #005293;
+    text-align: center;
+  }
+  div {
+    text-align: center;
+    border-bottom: 1px solid #ccc;
+    padding: 0 0 40px 0;
+    margin: 0 0 20px 0;
+    span {
+      color: #666666;
+      padding: 0 10px;
+    }
+  }
+}
+</style>

+ 84 - 0
src/views/achievement/parts/technologyList.vue

@@ -0,0 +1,84 @@
+<template>
+  <div id="newsList">
+    <el-row>
+      <el-col :span="24" class="info">
+        <el-col :span="24" class="list" @click.native="detailBtn(item.id)" v-for="(item, index) in list" :key="index">
+          <span></span>
+          <span class="textOver">{{ item.title }}</span>
+          <span>{{ item.date }}</span>
+        </el-col>
+        <el-col :span="24" class="page">
+          <pagination :total="total"></pagination>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import pagination from '@/components/pagination.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'newsList',
+  props: {
+    list: null,
+    total: null,
+  },
+  components: {
+    pagination,
+  },
+  data: function() {
+    return {};
+  },
+  created() {},
+  methods: {
+    detailBtn(id) {
+      this.$emit('detailBtn', id);
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.info {
+  .list {
+    padding: 0 0 7px 0;
+
+    span:first-child {
+      display: inline-block;
+      width: 4px;
+      height: 4px;
+      background: #ccc;
+      margin: 0px 10px 7px 0px;
+    }
+    span:nth-child(2) {
+      display: inline-block;
+      font-size: 16px;
+      color: #555555;
+      font-family: '微软雅黑';
+      width: 85%;
+      margin: 0 30px 0 0;
+    }
+    span:last-child {
+      display: inline-block;
+      width: 90px;
+      font-size: 16px;
+      color: #a8abb7;
+      font-family: '微软雅黑';
+      text-align: right;
+    }
+  }
+  .page {
+    height: 50px;
+  }
+}
+</style>

+ 154 - 0
src/views/achievement/project.vue

@@ -0,0 +1,154 @@
+<template>
+  <div id="index">
+    <el-row>
+      <el-col :span="24" class="style">
+        <el-col :span="24" class="top">
+          <top></top>
+        </el-col>
+        <el-col :span="24" class="menu">
+          <div class="w_1200">
+            <menus></menus>
+          </div>
+        </el-col>
+        <el-col :span="24" class="main">
+          <div class="w_1200">
+            <el-col :span="5" class="left">
+              <el-col :span="24" class="leftone">
+                <seminar></seminar>
+              </el-col>
+              <el-col :span="24" class="lefttwo">
+                <cooperation> </cooperation>
+              </el-col>
+            </el-col>
+            <el-col :span="19" class="context">
+              <el-col :span="18" class="right">
+                <span v-if="displays == '0'">
+                  <el-col :span="24" class="one">
+                    <span></span>
+                    <span>{{ columnName }}</span>
+                  </el-col>
+                  <el-col :span="24" class="list">
+                    <projectList :list="list" :total="total" @detailBtn="detailBtn"></projectList>
+                  </el-col>
+                </span>
+                <span v-else>
+                  <projectDetail :details="details"></projectDetail>
+                </span>
+              </el-col>
+            </el-col>
+          </div>
+        </el-col>
+        <el-col :span="24" class="foot">
+          <div class="w_1200">
+            <foot></foot>
+          </div>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import top from '@/layout/common/top.vue';
+import menus from '@/layout/common/menus.vue';
+import foot from '@/layout/common/foot.vue';
+import seminar from '@/layout/achievement/seminar.vue';
+import projectDetail from './parts/projectDetail.vue';
+import projectList from './parts/projectList.vue';
+import cooperation from '@/layout/achievement/cooperation.vue';
+
+export default {
+  name: 'index',
+  props: {},
+  components: { top, menus, foot, seminar, projectList, cooperation, projectDetail },
+  data: () => ({
+    displays: '0',
+    columnName: '',
+    total: 1,
+    details: {},
+    list: [
+      {
+        title: '新标题',
+        date: '2020-02-02',
+      },
+      {
+        title: '16条数据',
+        date: '2020-02-02',
+      },
+    ],
+    details: {
+      title: '新信息标题',
+      source: '信息部',
+      date: '2020-02-02',
+      content: '信息内容',
+    },
+  }),
+  created() {
+    this.search();
+  },
+  computed: {
+    name() {
+      return this.$route.query.name;
+    },
+  },
+  methods: {
+    async detailBtn() {
+      this.$set(this, `displays`, 1);
+    },
+    async search() {
+      this.$set(this, `columnName`, this.name);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.w_1200 {
+  width: 1200px;
+  margin: 0 auto;
+}
+.main {
+  min-height: 670px;
+  overflow: hidden;
+  margin: 10px 0;
+  .left {
+    margin: 0 10px 0 0;
+    .leftone {
+      background: #fff;
+    }
+    .lefttwo {
+      background-color: #fff;
+    }
+  }
+
+  .right {
+    width: 100%;
+    min-height: 600px;
+    background: #fff;
+    padding: 0 20px;
+    .one {
+      height: 35px;
+      margin: 20px 0;
+      border-bottom: 1px dashed #ccc;
+      span:first-child {
+        display: inline-block;
+        width: 4px;
+        height: 20px;
+        background: #005293;
+        margin: 0 10px -3px 0;
+      }
+      span:nth-child(2) {
+        font-size: 20px;
+        color: #005293;
+        font-weight: bold;
+      }
+    }
+  }
+
+  .context {
+    width: 78%;
+    min-height: 670px;
+    background: #fff;
+  }
+}
+</style>

+ 154 - 0
src/views/achievement/software.vue

@@ -0,0 +1,154 @@
+<template>
+  <div id="index">
+    <el-row>
+      <el-col :span="24" class="style">
+        <el-col :span="24" class="top">
+          <top></top>
+        </el-col>
+        <el-col :span="24" class="menu">
+          <div class="w_1200">
+            <menus></menus>
+          </div>
+        </el-col>
+        <el-col :span="24" class="main">
+          <div class="w_1200">
+            <el-col :span="5" class="left">
+              <el-col :span="24" class="leftone">
+                <seminar></seminar>
+              </el-col>
+              <el-col :span="24" class="lefttwo">
+                <cooperation> </cooperation>
+              </el-col>
+            </el-col>
+            <el-col :span="19" class="context">
+              <el-col :span="18" class="right">
+                <span v-if="displays == '0'">
+                  <el-col :span="24" class="one">
+                    <span></span>
+                    <span>{{ columnName }}</span>
+                  </el-col>
+                  <el-col :span="24" class="list">
+                    <softwareList :list="list" :total="total" @detailBtn="detailBtn"></softwareList>
+                  </el-col>
+                </span>
+                <span v-else>
+                  <softwareDetail :details="details"></softwareDetail>
+                </span>
+              </el-col>
+            </el-col>
+          </div>
+        </el-col>
+        <el-col :span="24" class="foot">
+          <div class="w_1200">
+            <foot></foot>
+          </div>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import top from '@/layout/common/top.vue';
+import menus from '@/layout/common/menus.vue';
+import foot from '@/layout/common/foot.vue';
+import seminar from '@/layout/achievement/seminar.vue';
+import softwareDetail from './parts/softwareDetail.vue';
+import softwareList from './parts/softwareList.vue';
+import cooperation from '@/layout/achievement/cooperation.vue';
+
+export default {
+  name: 'index',
+  props: {},
+  components: { top, menus, foot, seminar, softwareList, cooperation, softwareDetail },
+  data: () => ({
+    displays: '0',
+    columnName: '',
+    total: 1,
+    details: {},
+    list: [
+      {
+        title: '新标题',
+        date: '2020-02-02',
+      },
+      {
+        title: '16条数据',
+        date: '2020-02-02',
+      },
+    ],
+    details: {
+      title: '新信息标题',
+      source: '信息部',
+      date: '2020-02-02',
+      content: '信息内容',
+    },
+  }),
+  created() {
+    this.search();
+  },
+  computed: {
+    name() {
+      return this.$route.query.name;
+    },
+  },
+  methods: {
+    async detailBtn() {
+      this.$set(this, `displays`, 1);
+    },
+    async search() {
+      this.$set(this, `columnName`, this.name);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.w_1200 {
+  width: 1200px;
+  margin: 0 auto;
+}
+.main {
+  min-height: 670px;
+  overflow: hidden;
+  margin: 10px 0;
+  .left {
+    margin: 0 10px 0 0;
+    .leftone {
+      background: #fff;
+    }
+    .lefttwo {
+      background-color: #fff;
+    }
+  }
+
+  .right {
+    width: 100%;
+    min-height: 600px;
+    background: #fff;
+    padding: 0 20px;
+    .one {
+      height: 35px;
+      margin: 20px 0;
+      border-bottom: 1px dashed #ccc;
+      span:first-child {
+        display: inline-block;
+        width: 4px;
+        height: 20px;
+        background: #005293;
+        margin: 0 10px -3px 0;
+      }
+      span:nth-child(2) {
+        font-size: 20px;
+        color: #005293;
+        font-weight: bold;
+      }
+    }
+  }
+
+  .context {
+    width: 78%;
+    min-height: 670px;
+    background: #fff;
+  }
+}
+</style>

+ 154 - 0
src/views/achievement/supercomputing.vue

@@ -0,0 +1,154 @@
+<template>
+  <div id="index">
+    <el-row>
+      <el-col :span="24" class="style">
+        <el-col :span="24" class="top">
+          <top></top>
+        </el-col>
+        <el-col :span="24" class="menu">
+          <div class="w_1200">
+            <menus></menus>
+          </div>
+        </el-col>
+        <el-col :span="24" class="main">
+          <div class="w_1200">
+            <el-col :span="5" class="left">
+              <el-col :span="24" class="leftone">
+                <seminar></seminar>
+              </el-col>
+              <el-col :span="24" class="lefttwo">
+                <cooperation> </cooperation>
+              </el-col>
+            </el-col>
+            <el-col :span="19" class="context">
+              <el-col :span="18" class="right">
+                <span v-if="displays == '0'">
+                  <el-col :span="24" class="one">
+                    <span></span>
+                    <span>{{ columnName }}</span>
+                  </el-col>
+                  <el-col :span="24" class="list">
+                    <supercomputingList :list="list" :total="total" @detailBtn="detailBtn"></supercomputingList>
+                  </el-col>
+                </span>
+                <span v-else>
+                  <supercomputingDetail :details="details"></supercomputingDetail>
+                </span>
+              </el-col>
+            </el-col>
+          </div>
+        </el-col>
+        <el-col :span="24" class="foot">
+          <div class="w_1200">
+            <foot></foot>
+          </div>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import top from '@/layout/common/top.vue';
+import menus from '@/layout/common/menus.vue';
+import foot from '@/layout/common/foot.vue';
+import seminar from '@/layout/achievement/seminar.vue';
+import supercomputingDetail from './parts/supercomputingDetail.vue';
+import supercomputingList from './parts/supercomputingList.vue';
+import cooperation from '@/layout/achievement/cooperation.vue';
+
+export default {
+  name: 'index',
+  props: {},
+  components: { top, menus, foot, seminar, supercomputingList, cooperation, supercomputingDetail },
+  data: () => ({
+    displays: '0',
+    columnName: '',
+    total: 1,
+    details: {},
+    list: [
+      {
+        title: '新标题',
+        date: '2020-02-02',
+      },
+      {
+        title: '16条数据',
+        date: '2020-02-02',
+      },
+    ],
+    details: {
+      title: '新信息标题',
+      source: '信息部',
+      date: '2020-02-02',
+      content: '信息内容',
+    },
+  }),
+  created() {
+    this.search();
+  },
+  computed: {
+    name() {
+      return this.$route.query.name;
+    },
+  },
+  methods: {
+    async detailBtn() {
+      this.$set(this, `displays`, 1);
+    },
+    async search() {
+      this.$set(this, `columnName`, this.name);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.w_1200 {
+  width: 1200px;
+  margin: 0 auto;
+}
+.main {
+  min-height: 670px;
+  overflow: hidden;
+  margin: 10px 0;
+  .left {
+    margin: 0 10px 0 0;
+    .leftone {
+      background: #fff;
+    }
+    .lefttwo {
+      background-color: #fff;
+    }
+  }
+
+  .right {
+    width: 100%;
+    min-height: 600px;
+    background: #fff;
+    padding: 0 20px;
+    .one {
+      height: 35px;
+      margin: 20px 0;
+      border-bottom: 1px dashed #ccc;
+      span:first-child {
+        display: inline-block;
+        width: 4px;
+        height: 20px;
+        background: #005293;
+        margin: 0 10px -3px 0;
+      }
+      span:nth-child(2) {
+        font-size: 20px;
+        color: #005293;
+        font-weight: bold;
+      }
+    }
+  }
+
+  .context {
+    width: 78%;
+    min-height: 670px;
+    background: #fff;
+  }
+}
+</style>

+ 154 - 0
src/views/achievement/teaching.vue

@@ -0,0 +1,154 @@
+<template>
+  <div id="index">
+    <el-row>
+      <el-col :span="24" class="style">
+        <el-col :span="24" class="top">
+          <top></top>
+        </el-col>
+        <el-col :span="24" class="menu">
+          <div class="w_1200">
+            <menus></menus>
+          </div>
+        </el-col>
+        <el-col :span="24" class="main">
+          <div class="w_1200">
+            <el-col :span="5" class="left">
+              <el-col :span="24" class="leftone">
+                <seminar></seminar>
+              </el-col>
+              <el-col :span="24" class="lefttwo">
+                <cooperation> </cooperation>
+              </el-col>
+            </el-col>
+            <el-col :span="19" class="context">
+              <el-col :span="18" class="right">
+                <span v-if="displays == '0'">
+                  <el-col :span="24" class="one">
+                    <span></span>
+                    <span>{{ columnName }}</span>
+                  </el-col>
+                  <el-col :span="24" class="list">
+                    <teachingList :list="list" :total="total" @detailBtn="detailBtn"></teachingList>
+                  </el-col>
+                </span>
+                <span v-else>
+                  <teachingDetail :details="details"></teachingDetail>
+                </span>
+              </el-col>
+            </el-col>
+          </div>
+        </el-col>
+        <el-col :span="24" class="foot">
+          <div class="w_1200">
+            <foot></foot>
+          </div>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import top from '@/layout/common/top.vue';
+import menus from '@/layout/common/menus.vue';
+import foot from '@/layout/common/foot.vue';
+import seminar from '@/layout/achievement/seminar.vue';
+import teachingDetail from './parts/teachingDetail.vue';
+import teachingList from './parts/teachingList.vue';
+import cooperation from '@/layout/achievement/cooperation.vue';
+
+export default {
+  name: 'index',
+  props: {},
+  components: { top, menus, foot, seminar, teachingList, cooperation, teachingDetail },
+  data: () => ({
+    displays: '0',
+    columnName: '',
+    total: 1,
+    details: {},
+    list: [
+      {
+        title: '新标题',
+        date: '2020-02-02',
+      },
+      {
+        title: '16条数据',
+        date: '2020-02-02',
+      },
+    ],
+    details: {
+      title: '新信息标题',
+      source: '信息部',
+      date: '2020-02-02',
+      content: '信息内容',
+    },
+  }),
+  created() {
+    this.search();
+  },
+  computed: {
+    name() {
+      return this.$route.query.name;
+    },
+  },
+  methods: {
+    async detailBtn() {
+      this.$set(this, `displays`, 1);
+    },
+    async search() {
+      this.$set(this, `columnName`, this.name);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.w_1200 {
+  width: 1200px;
+  margin: 0 auto;
+}
+.main {
+  min-height: 670px;
+  overflow: hidden;
+  margin: 10px 0;
+  .left {
+    margin: 0 10px 0 0;
+    .leftone {
+      background: #fff;
+    }
+    .lefttwo {
+      background-color: #fff;
+    }
+  }
+
+  .right {
+    width: 100%;
+    min-height: 600px;
+    background: #fff;
+    padding: 0 20px;
+    .one {
+      height: 35px;
+      margin: 20px 0;
+      border-bottom: 1px dashed #ccc;
+      span:first-child {
+        display: inline-block;
+        width: 4px;
+        height: 20px;
+        background: #005293;
+        margin: 0 10px -3px 0;
+      }
+      span:nth-child(2) {
+        font-size: 20px;
+        color: #005293;
+        font-weight: bold;
+      }
+    }
+  }
+
+  .context {
+    width: 78%;
+    min-height: 670px;
+    background: #fff;
+  }
+}
+</style>

+ 154 - 0
src/views/achievement/technology.vue

@@ -0,0 +1,154 @@
+<template>
+  <div id="index">
+    <el-row>
+      <el-col :span="24" class="style">
+        <el-col :span="24" class="top">
+          <top></top>
+        </el-col>
+        <el-col :span="24" class="menu">
+          <div class="w_1200">
+            <menus></menus>
+          </div>
+        </el-col>
+        <el-col :span="24" class="main">
+          <div class="w_1200">
+            <el-col :span="5" class="left">
+              <el-col :span="24" class="leftone">
+                <seminar></seminar>
+              </el-col>
+              <el-col :span="24" class="lefttwo">
+                <cooperation> </cooperation>
+              </el-col>
+            </el-col>
+            <el-col :span="19" class="context">
+              <el-col :span="18" class="right">
+                <span v-if="displays == '0'">
+                  <el-col :span="24" class="one">
+                    <span></span>
+                    <span>{{ columnName }}</span>
+                  </el-col>
+                  <el-col :span="24" class="list">
+                    <technologyList :list="list" :total="total" @detailBtn="detailBtn"></technologyList>
+                  </el-col>
+                </span>
+                <span v-else>
+                  <technologyDetail :details="details"></technologyDetail>
+                </span>
+              </el-col>
+            </el-col>
+          </div>
+        </el-col>
+        <el-col :span="24" class="foot">
+          <div class="w_1200">
+            <foot></foot>
+          </div>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import top from '@/layout/common/top.vue';
+import menus from '@/layout/common/menus.vue';
+import foot from '@/layout/common/foot.vue';
+import seminar from '@/layout/achievement/seminar.vue';
+import technologyDetail from './parts/technologyDetail.vue';
+import technologyList from './parts/technologyList.vue';
+import cooperation from '@/layout/achievement/cooperation.vue';
+
+export default {
+  name: 'index',
+  props: {},
+  components: { top, menus, foot, seminar, technologyList, cooperation, technologyDetail },
+  data: () => ({
+    displays: '0',
+    columnName: '',
+    total: 1,
+    details: {},
+    list: [
+      {
+        title: '新标题',
+        date: '2020-02-02',
+      },
+      {
+        title: '16条数据',
+        date: '2020-02-02',
+      },
+    ],
+    details: {
+      title: '新信息标题',
+      source: '信息部',
+      date: '2020-02-02',
+      content: '信息内容',
+    },
+  }),
+  created() {
+    this.search();
+  },
+  computed: {
+    name() {
+      return this.$route.query.name;
+    },
+  },
+  methods: {
+    async detailBtn() {
+      this.$set(this, `displays`, 1);
+    },
+    async search() {
+      this.$set(this, `columnName`, this.name);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.w_1200 {
+  width: 1200px;
+  margin: 0 auto;
+}
+.main {
+  min-height: 670px;
+  overflow: hidden;
+  margin: 10px 0;
+  .left {
+    margin: 0 10px 0 0;
+    .leftone {
+      background: #fff;
+    }
+    .lefttwo {
+      background-color: #fff;
+    }
+  }
+
+  .right {
+    width: 100%;
+    min-height: 600px;
+    background: #fff;
+    padding: 0 20px;
+    .one {
+      height: 35px;
+      margin: 20px 0;
+      border-bottom: 1px dashed #ccc;
+      span:first-child {
+        display: inline-block;
+        width: 4px;
+        height: 20px;
+        background: #005293;
+        margin: 0 10px -3px 0;
+      }
+      span:nth-child(2) {
+        font-size: 20px;
+        color: #005293;
+        font-weight: bold;
+      }
+    }
+  }
+
+  .context {
+    width: 78%;
+    min-height: 670px;
+    background: #fff;
+  }
+}
+</style>