浏览代码

Merge branch 'master' of http://git.cc-lotus.info/service-platform/web-website

wuhongyuq 5 年之前
父节点
当前提交
0f59e34557

+ 122 - 0
src/components/government/governmentDetail.vue

@@ -0,0 +1,122 @@
+<template>
+  <div id="governmentDetail">
+    <el-row>
+      <el-col :span="24" class="top">
+        <top></top>
+      </el-col>
+      <el-col :span="24" class="logo">
+        <div class="w_1200">
+          <logo :info="info"></logo>
+        </div>
+      </el-col>
+      <el-col :span="24" class="menu">
+        <div class="w_1200">
+          <menuInfo></menuInfo>
+        </div>
+      </el-col>
+      <el-col :span="24" class="main">
+        <div class="w_1200">
+          <el-col :span="5" class="left">
+            <el-col :span="24" class="leftTop">
+              <native :nativeList="nativeList"></native>
+            </el-col>
+            <el-col :span="24" class="leftDiao">
+              <examine></examine>
+            </el-col>
+          </el-col>
+          <el-col :span="19" class="right">
+            <message :columnTitle="columnTitle" :governmentDetail="governmentDetail"></message>
+          </el-col>
+        </div>
+      </el-col>
+      <el-col :span="24" class="foot">
+        <div class="w_1200">
+          <foot :info="info"></foot>
+        </div>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import top from '@/layout/index/top.vue';
+import logo from '@/layout/index/logo.vue';
+import menuInfo from '@/layout/index/menuInfo.vue';
+import foot from '@/layout/index/foot.vue';
+import native from '@/layout/government/native.vue';
+import examine from '@/layout/personCenter/question.vue';
+import message from '@/layout/government/message.vue';
+
+export default {
+  name: 'government',
+  props: {
+    info: null, //站点信息
+    nativeList: null, //标签栏
+    columnTitle: null, //栏目名称
+    governmentDetail: null, //信息详情
+  },
+  components: {
+    top, //头部
+    logo, //logo
+    menuInfo, //导航
+    foot, //底部
+    native, //列表-分类导航
+    examine, //网上调查(引用于科技人才中的question)
+    message, //信息详情
+  },
+  data: () => ({}),
+  created() {},
+  computed: {},
+  methods: {},
+};
+</script>
+
+<style lang="less" scoped>
+.w_1200 {
+  width: 1200px;
+  margin: 0 auto;
+}
+.top {
+  height: 40px;
+  overflow: hidden;
+  background-color: rgba(11, 58, 125, 0.8);
+}
+.logo {
+  height: 200px;
+  overflow: hidden;
+}
+.menu {
+  height: 70px;
+  overflow: hidden;
+}
+.main {
+  min-height: 800;
+  overflow: hidden;
+  margin: 10px 0;
+}
+.main .left {
+  width: 240px;
+  min-height: 800px;
+  margin: 0 10px 0 0;
+}
+.main .left .leftTop {
+  height: 420px;
+  background-color: #fff;
+  margin: 0 0 10px 0;
+}
+.main .left .leftDiao {
+  background: #fff;
+  height: 370px;
+  overflow: hidden;
+}
+.main .right {
+  min-height: 800px;
+  background-color: #fff;
+}
+.foot {
+  float: left;
+  width: 100%;
+  height: 120px;
+  overflow: hidden;
+}
+</style>

+ 91 - 0
src/layout/government/message.vue

@@ -0,0 +1,91 @@
+<template>
+  <div id="message">
+    <el-row>
+      <el-col :span="24" class="info">
+        <el-col :span="24" class="topInfo">
+          <span>{{ columnTitle }}</span>
+        </el-col>
+        <el-col :span="24" class="infoMess">
+          <el-col :span="24" class="title">
+            {{ governmentDetail.title }}
+          </el-col>
+          <el-col :span="24" class="infoDate">
+            <p>
+              <span>发布人:{{ governmentDetail.publish }}</span>
+              <span>来源:{{ governmentDetail.orgin }}</span>
+              <span
+                >发布时间:
+                {{ governmentDetail.meta && governmentDetail.meta.createdAt ? new Date(governmentDetail.meta.createdAt).toLocaleDateString() : '' || '' }}</span
+              >
+            </p>
+          </el-col>
+          <el-col v-if="governmentDetail.picture" class="image">
+            <el-image style="width:50%" :src="governmentDetail.picture"></el-image>
+          </el-col>
+          <el-col :span="24" class="content">
+            <p v-html="governmentDetail.content"></p>
+          </el-col>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'message',
+  props: {
+    columnTitle: null,
+    governmentDetail: null,
+  },
+  components: {},
+  data: () => ({}),
+  created() {},
+  computed: {},
+  methods: {},
+};
+</script>
+
+<style lang="less" scoped>
+p {
+  padding: 0;
+  margin: 0;
+}
+.info {
+  padding: 0 20px;
+}
+.topInfo {
+  height: 60px;
+  line-height: 60px;
+  font-size: 22px;
+}
+.infoMess .title {
+  line-height: 30px;
+  text-align: center;
+  font-size: 16px;
+  font-weight: bold;
+  color: #000000;
+  margin: 0 0 20px 0;
+}
+.infoDate {
+  height: 36px;
+  line-height: 36px;
+}
+.infoDate p {
+  width: 700px;
+  background: #eeeeee;
+  margin: 0 105px;
+}
+.infoDate p span {
+  font-size: 14px;
+  color: #000;
+  padding: 0 0 0 80px;
+}
+.infoMess .image {
+  text-align: center;
+  margin: 20px 0 0 0;
+}
+.content {
+  padding: 0px 0 20px 0;
+}
+</style>

+ 65 - 0
src/layout/government/native.vue

@@ -0,0 +1,65 @@
+<template>
+  <div id="native">
+    <el-col class="swfl">
+      <el-image style="width:22px;height:22px;margin:0 5px -5px 0;" :src="src"></el-image>
+      <span>标签栏</span>
+    </el-col>
+    <el-col>
+      <el-menu default-active="1" class="el-menu-vertical-demo" @open="handleOpen" @close="handleClose" text-color="#215299" active-text-color="#215299">
+        <el-menu-item index="1" v-for="(item, index) in nativeList" :key="index"
+          ><span slot="title" @click="clickUrl(item.id)">{{ item.name }}</span></el-menu-item
+        >
+      </el-menu>
+    </el-col>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'native',
+  props: {
+    nativeList: null,
+  },
+  components: {},
+  data: () => ({
+    src: require('@/assets/swfl.png'),
+  }),
+  created() {},
+  computed: {},
+  methods: {
+    clickUrl(id) {
+      this.$emit('clickLists', { id });
+    },
+    handleOpen(key, keyPath) {
+      console.log(key, keyPath);
+    },
+    handleClose(key, keyPath) {
+      console.log(key, keyPath);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.swfl {
+  height: 60px;
+  width: 240px;
+  line-height: 60px;
+  background-color: #22529a;
+  text-align: center;
+}
+.swfl span {
+  font-size: 22px;
+  color: #ffffff;
+}
+/deep/.el-menu-item {
+  height: 60px;
+  text-align: center;
+  line-height: 60px;
+  border-bottom: 1px dashed;
+  font-size: 22px;
+}
+/deep/.el-menu-item:last-child {
+  border-bottom: none;
+}
+</style>

+ 24 - 4
src/layout/government/news.vue

@@ -6,7 +6,12 @@
           <span slot="label">创新吉林</span>
           <span slot="label">创新吉林</span>
           <el-col :span="24" class="list">
           <el-col :span="24" class="list">
             <ul>
             <ul>
-              <li class="chuangxinList" v-for="(item, index) in chuangxinList" :key="index">
+              <li
+                class="chuangxinList"
+                v-for="(item, index) in chuangxinList"
+                :key="index"
+                @click="$router.push({ path: '/government/governmentDetail', query: { id: item.id } })"
+              >
                 <el-col :span="19" class="title textOver">{{ item.title }}</el-col>
                 <el-col :span="19" class="title textOver">{{ item.title }}</el-col>
                 <el-col :span="4" class="date"> {{ item.meta && item.meta.createdAt ? new Date(item.meta.createdAt).toLocaleDateString() : '' || '' }}</el-col>
                 <el-col :span="4" class="date"> {{ item.meta && item.meta.createdAt ? new Date(item.meta.createdAt).toLocaleDateString() : '' || '' }}</el-col>
               </li>
               </li>
@@ -18,7 +23,12 @@
           <span slot="label">国内动态</span>
           <span slot="label">国内动态</span>
           <el-col :span="24" class="list">
           <el-col :span="24" class="list">
             <ul>
             <ul>
-              <li class="chuangxinList" v-for="(item, index) in guoneiList" :key="index">
+              <li
+                class="chuangxinList"
+                v-for="(item, index) in guoneiList"
+                :key="index"
+                @click="$router.push({ path: '/government/governmentDetail', query: { id: item.id } })"
+              >
                 <el-col :span="19" class="title textOver">{{ item.title }}</el-col>
                 <el-col :span="19" class="title textOver">{{ item.title }}</el-col>
                 <el-col :span="4" class="date"> {{ item.meta && item.meta.createdAt ? new Date(item.meta.createdAt).toLocaleDateString() : '' || '' }}</el-col>
                 <el-col :span="4" class="date"> {{ item.meta && item.meta.createdAt ? new Date(item.meta.createdAt).toLocaleDateString() : '' || '' }}</el-col>
               </li>
               </li>
@@ -30,7 +40,12 @@
           <span slot="label">政务活动</span>
           <span slot="label">政务活动</span>
           <el-col :span="24" class="list">
           <el-col :span="24" class="list">
             <ul>
             <ul>
-              <li class="chuangxinList" v-for="(item, index) in zhengwuList" :key="index">
+              <li
+                class="chuangxinList"
+                v-for="(item, index) in zhengwuList"
+                :key="index"
+                @click="$router.push({ path: '/government/governmentDetail', query: { id: item.id } })"
+              >
                 <el-col :span="19" class="title textOver">{{ item.title }}</el-col>
                 <el-col :span="19" class="title textOver">{{ item.title }}</el-col>
                 <el-col :span="4" class="date"> {{ item.meta && item.meta.createdAt ? new Date(item.meta.createdAt).toLocaleDateString() : '' || '' }}</el-col>
                 <el-col :span="4" class="date"> {{ item.meta && item.meta.createdAt ? new Date(item.meta.createdAt).toLocaleDateString() : '' || '' }}</el-col>
               </li>
               </li>
@@ -42,7 +57,12 @@
           <span slot="label">媒体焦距</span>
           <span slot="label">媒体焦距</span>
           <el-col :span="24" class="list">
           <el-col :span="24" class="list">
             <ul>
             <ul>
-              <li class="chuangxinList" v-for="(item, index) in meitiList" :key="index">
+              <li
+                class="chuangxinList"
+                v-for="(item, index) in meitiList"
+                :key="index"
+                @click="$router.push({ path: '/government/governmentDetail', query: { id: item.id } })"
+              >
                 <el-col :span="19" class="title textOver">{{ item.title }}</el-col>
                 <el-col :span="19" class="title textOver">{{ item.title }}</el-col>
                 <el-col :span="4" class="date"> {{ item.meta && item.meta.createdAt ? new Date(item.meta.createdAt).toLocaleDateString() : '' || '' }}</el-col>
                 <el-col :span="4" class="date"> {{ item.meta && item.meta.createdAt ? new Date(item.meta.createdAt).toLocaleDateString() : '' || '' }}</el-col>
               </li>
               </li>

+ 6 - 1
src/layout/government/notice.vue

@@ -10,7 +10,12 @@
         </el-col>
         </el-col>
         <el-col :span="24" class="list">
         <el-col :span="24" class="list">
           <ul>
           <ul>
-            <li class="zixunList" v-for="(item, index) in tongzhiList" :key="index">
+            <li
+              class="zixunList"
+              v-for="(item, index) in tongzhiList"
+              :key="index"
+              @click="$router.push({ path: '/government/governmentDetail', query: { id: item.id } })"
+            >
               <el-link :underline="false">
               <el-link :underline="false">
                 <span class="title textOver">{{ item.title }}</span>
                 <span class="title textOver">{{ item.title }}</span>
                 <span class="date textOver">{{ item.meta && item.meta.createdAt ? new Date(item.meta.createdAt).toLocaleDateString() : '' || '' }}</span>
                 <span class="date textOver">{{ item.meta && item.meta.createdAt ? new Date(item.meta.createdAt).toLocaleDateString() : '' || '' }}</span>

+ 5 - 1
src/layout/government/photoNews.vue

@@ -3,7 +3,11 @@
     <el-col :span="24" class="info">
     <el-col :span="24" class="info">
       <div class="block">
       <div class="block">
         <el-carousel height="360px">
         <el-carousel height="360px">
-          <el-carousel-item v-for="(item, index) in photoNews" :key="index">
+          <el-carousel-item
+            v-for="(item, index) in photoNews"
+            :key="index"
+            @click.native="$router.push({ path: '/government/governmentDetail', query: { id: item.id } })"
+          >
             <el-image style="width:100%;height:360px;" :src="item.picture"></el-image>
             <el-image style="width:100%;height:360px;" :src="item.picture"></el-image>
             <p class="title textOver">{{ item.title }}</p>
             <p class="title textOver">{{ item.title }}</p>
           </el-carousel-item>
           </el-carousel-item>

+ 6 - 0
src/router/index.js

@@ -15,6 +15,12 @@ const routes = [
     name: 'government',
     name: 'government',
     component: () => import('../views/government/government.vue'),
     component: () => import('../views/government/government.vue'),
   },
   },
+  // 科技政务-详情
+  {
+    path: '/government/governmentDetail',
+    name: 'governmentDetail',
+    component: () => import('../views/government/governmentDetail.vue'),
+  },
   // 科技政策
   // 科技政策
   {
   {
     path: '/policy/policy',
     path: '/policy/policy',

+ 79 - 0
src/views/government/governmentDetail.vue

@@ -0,0 +1,79 @@
+<template>
+  <div id="governmentDetail">
+    <governmentDetail-layout :info="info" :nativeList="nativeList" :columnTitle="columnTitle" :governmentDetail="governmentDetail"></governmentDetail-layout>
+  </div>
+</template>
+
+<script>
+import governmentDetailLayout from '@/components/government/governmentDetail.vue';
+import { createNamespacedHelpers, mapGetters } from 'vuex';
+const { mapActions: mapSite } = createNamespacedHelpers('site');
+const { mapActions: mapColumn } = createNamespacedHelpers('affairsColumn');
+const { mapActions: mapNews } = createNamespacedHelpers('affairsNews');
+export default {
+  name: 'governmentDetail',
+  props: {},
+  components: {
+    governmentDetailLayout,
+  },
+  data: () => ({
+    info: {},
+    nativeList: [
+      {
+        name: '通知公告',
+      },
+    ],
+    columnTitle: '',
+    governmentDetail: {},
+  }),
+  created() {
+    this.searchSite();
+    this.searchColumn();
+    this.searchInfo();
+  },
+  computed: {},
+  methods: {
+    ...mapSite(['showInfo']),
+    ...mapColumn({ columnList: 'query', columnInfo: 'fetch' }),
+    ...mapNews({ newsList: 'query', newsInfo: 'fetch' }),
+    // 查询站点信息
+    async searchSite() {
+      let res = await this.showInfo();
+      let object = JSON.parse(JSON.stringify(res.data));
+      if (object) {
+        this.$set(this, `info`, res.data);
+      } else {
+        this.$message.error(res.errmsg ? res.errmsg : 'error');
+      }
+    },
+    // 查询科技政务栏目
+    async searchColumn({ ...info } = {}) {
+      const res = await this.columnList({ ...info });
+      this.$set(this, `nativeList`, res.data);
+      console.log(res);
+      // for (const val of res.data) {
+      //   this.tpxwSearch({ column_id: val.id, site: val.site });
+      // }
+    },
+    async searchInfo() {
+      let detailId = this.$route.query.id;
+      const res = await this.newsInfo(detailId);
+      const result = await this.columnInfo(res.data.column_id);
+      this.$set(this, `columnTitle`, result.data.name);
+      this.$set(this, `governmentDetail`, res.data);
+    },
+    // // 查询信息列表
+    // async tpxwSearch({ skip = 0, limit = 10, column_id, site } = {}) {
+    //   const res = await this.newsList({ skip, limit, column_id: column_id });
+    //   for (const val of res.data) {
+    //     const result = await this.columnInfo(val.column_id);
+    //     val.column_name = result.data.name;
+    //   }
+    //   this.$set(this, `${site}List`, res.data);
+    //   console.log(res.data);
+    // },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>