wxy 4 years ago
parent
commit
1a88630248
44 changed files with 842 additions and 604 deletions
  1. 1 1
      package.json
  2. BIN
      src/assets/bendi7.png
  3. BIN
      src/assets/bendi8.png
  4. BIN
      src/assets/dynamic1.png
  5. BIN
      src/assets/dynamic2.png
  6. BIN
      src/assets/dynamic3.png
  7. BIN
      src/assets/dynamic4.png
  8. 2 1
      src/components/parts/chat.vue
  9. 2 1
      src/layout/common/topInfo.vue
  10. 9 10
      src/router/index.js
  11. 0 1
      src/store/common/mutations.js
  12. 6 0
      src/store/index.js
  13. 42 0
      src/store/live/column.js
  14. 39 0
      src/store/live/news.js
  15. 5 1
      src/views/adminCenter/duijiehui/add.vue
  16. 5 1
      src/views/adminCenter/duijiehui/index.vue
  17. 5 1
      src/views/adminCenter/enterpriseProduct/detail.vue
  18. 5 1
      src/views/adminCenter/enterpriseProduct/index.vue
  19. 5 1
      src/views/adminCenter/transaction/detail.vue
  20. 5 1
      src/views/adminCenter/transaction/index.vue
  21. 5 1
      src/views/adminCenter/user/detail.vue
  22. 5 1
      src/views/adminCenter/user/index.vue
  23. 0 6
      src/views/live/detail.vue
  24. 0 136
      src/views/live/detail2.vue
  25. 7 4
      src/views/live/index.vue
  26. 0 388
      src/views/live/parts/videoDetail.vue
  27. 0 14
      src/views/live/parts/videoDetail2.vue
  28. 24 2
      src/views/market/exportDetail.vue
  29. 5 1
      src/views/market/productDetail.vue
  30. 11 5
      src/views/service/detail.vue
  31. 110 8
      src/views/service/index.vue
  32. 87 0
      src/views/service/parts/technicaldetail.vue
  33. 138 0
      src/views/service/parts/technicallist.vue
  34. 145 0
      src/views/service/parts/threeInfo.vue
  35. 114 0
      src/views/service/techDetail.vue
  36. 5 1
      src/views/updatePwd/index.vue
  37. 0 1
      src/views/user/parts/clickBtn.vue
  38. 5 1
      src/views/userCenter/dock/detail.vue
  39. 5 1
      src/views/userCenter/dock/index.vue
  40. 5 1
      src/views/userCenter/matter/detail.vue
  41. 5 1
      src/views/userCenter/matter/index.vue
  42. 25 10
      src/views/userCenter/myProduct/detail.vue
  43. 5 1
      src/views/userCenter/myProduct/index.vue
  44. 5 1
      src/views/userCenter/user/index.vue

+ 1 - 1
package.json

@@ -1,5 +1,5 @@
 {
-  "name": "mobile-official",
+  "name": "",
   "version": "0.1.0",
   "private": true,
   "scripts": {

BIN
src/assets/bendi7.png


BIN
src/assets/bendi8.png


BIN
src/assets/dynamic1.png


BIN
src/assets/dynamic2.png


BIN
src/assets/dynamic3.png


BIN
src/assets/dynamic4.png


+ 2 - 1
src/components/parts/chat.vue

@@ -50,7 +50,7 @@ export default {
   methods: {
     ...chat(['query', 'create']),
     async search() {
-      const res = await this.query({ skip: 0, limit: 10, dock_id: this.dock_id });
+      const res = await this.query({ skip: 0, dock_id: this.dock_id });
       if (this.$checkRes(res)) this.$set(this, `list`, _.reverse(res.data));
     },
     async send() {
@@ -81,6 +81,7 @@ export default {
       });
     },
     onMessage(message) {
+      console.log(message);
       let body = _.get(message, 'body');
       if (body) {
         body = JSON.parse(body);

+ 2 - 1
src/layout/common/topInfo.vue

@@ -22,7 +22,8 @@ export default {
   methods: {
     onClickLeft() {
       // 点击回退的时候当做地址回退
-      this.$router.go(-1);
+      this.$emit('onClickLeft');
+      // this.$router.go(-1);
     },
   },
 };

+ 9 - 10
src/router/index.js

@@ -26,12 +26,6 @@ const routes = [
     meta: { title: '直播详情', isleftarrow: true },
     component: () => import('../views/live/detail.vue'),
   },
-  {
-    path: '/live/detail2',
-    name: 'detail2',
-    meta: { title: '直播详情', isleftarrow: true },
-    component: () => import('../views/live/detail2.vue'),
-  },
   // 科技超市
   {
     path: '/market/index',
@@ -68,15 +62,22 @@ const routes = [
   {
     path: '/journ/index',
     name: 'journ',
-    meta: { title: '新闻资讯', isleftarrow: true },
+    meta: { title: '新闻资讯', isleftarrow: false },
     component: () => import('../views/journ/index.vue'),
   },
   {
     path: '/journ/detail',
     name: 'detail',
-    meta: { title: '新闻资讯', isleftarrow: true },
+    meta: { title: '新闻资讯详情', isleftarrow: true },
     component: () => import('../views/journ/detail.vue'),
   },
+  {
+    path: '/service/techDetail',
+    name: 'service_techDetail',
+    meta: { title: '技术交流', isleftarrow: true },
+    component: () => import('../views/service/techDetail.vue'),
+  },
+
   // 个人中心
   {
     path: '/user/index',
@@ -242,9 +243,7 @@ const router = new VueRouter({
 router.beforeEach(async (to, form, next) => {
   if (to.name == 'user_index') {
     let res = await store.dispatch('login/toGetUser');
-    console.log(res);
     if (res && res.uid) {
-      console.log('1');
       next();
     } else {
       let key = sessionStorage.getItem('token');

+ 0 - 1
src/store/common/mutations.js

@@ -1,5 +1,4 @@
 export const setUser = (state, payload) => {
-  console.log(state, payload);
   state.user = payload;
   // let res = true;
   // //登陆时

+ 6 - 0
src/store/index.js

@@ -4,6 +4,9 @@ import Vuex from 'vuex';
 import dock from './live/dock';
 import chat from './live/chat';
 import apply from './live/apply';
+// 技术交流
+import column from './live/column';
+import news from './live/news';
 // 项目路演
 import newsroadshow from './live/newsroadshow';
 import newsguidance from './live/newsguidance';
@@ -43,6 +46,9 @@ export default new Vuex.Store({
     dock,
     place,
     chat,
+    // 技术交流
+    column,
+    news,
     // 项目路演
     newsroadshow,
     // 科技超市

+ 42 - 0
src/store/live/column.js

@@ -0,0 +1,42 @@
+import Vue from 'vue';
+import Vuex from 'vuex';
+import _ from 'lodash';
+Vue.use(Vuex);
+const api = {
+  columnInfo: `/api/live/column`,
+};
+const state = () => ({});
+const mutations = {};
+
+const actions = {
+  async query({ commit }, { skip = 0, limit, ...info } = {}) {
+    const res = await this.$axios.$get(`${api.columnInfo}`, {
+      skip,
+      limit,
+      ...info,
+    });
+    return res;
+  },
+  async create({ commit }, payload) {
+    const res = await this.$axios.$post(`${api.columnInfo}`, payload);
+    return res;
+  },
+  async fetch({ commit }, payload) {
+    const res = await this.$axios.$get(`${api.columnInfo}/${payload}`);
+    return res;
+  },
+  async update({ commit }, { id, ...data }) {
+    const res = await this.$axios.$post(`${api.columnInfo}/update/${id}`, data);
+    return res;
+  },
+  async delete({ commit }, payload) {
+    const res = await this.$axios.$delete(`${api.columnInfo}/${payload}`);
+    return res;
+  },
+};
+export default {
+  namespaced: true,
+  state,
+  mutations,
+  actions,
+};

+ 39 - 0
src/store/live/news.js

@@ -0,0 +1,39 @@
+import Vue from 'vue';
+import Vuex from 'vuex';
+import _ from 'lodash';
+Vue.use(Vuex);
+const api = {
+  newsInfo: `/api/live/news`,
+};
+const state = () => ({});
+const mutations = {};
+
+const actions = {
+  async query({ commit }, { skip = 0, limit = undefined, ...info } = {}) {
+    const res = await this.$axios.$get(api.newsInfo, { skip, limit, ...info });
+    return res;
+  },
+  async create({ commit }, payload) {
+    const res = await this.$axios.$post(`${api.newsInfo}`, payload);
+    return res;
+  },
+  async fetch({ commit }, payload) {
+    const res = await this.$axios.$get(`${api.newsInfo}/${payload}`);
+    return res;
+  },
+  async update({ commit }, { id, ...info } = {}) {
+    const res = await this.$axios.$post(`${api.newsInfo}/update/${id}`, { ...info });
+    return res;
+  },
+  async delete({ commit }, payload) {
+    const res = await this.$axios.$delete(`${api.newsInfo}/${payload}`);
+    return res;
+  },
+};
+
+export default {
+  namespaced: true,
+  state,
+  mutations,
+  actions,
+};

+ 5 - 1
src/views/adminCenter/duijiehui/add.vue

@@ -3,7 +3,7 @@
     <el-row>
       <el-col :span="24" class="style">
         <el-col :span="24" class="top">
-          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow" @onClickLeft="onClickLeft"> </NavBar>
         </el-col>
         <el-col :span="24" class="main">
           <van-form>
@@ -207,6 +207,10 @@ export default {
         this.$set(this, `form`, data);
       }
     },
+    // 返回
+    onClickLeft() {
+      this.$router.push({ path: '/adminCenter/duijiehui/index' });
+    },
   },
   computed: {
     ...mapState(['user']),

+ 5 - 1
src/views/adminCenter/duijiehui/index.vue

@@ -3,7 +3,7 @@
     <el-row>
       <el-col :span="24" class="style">
         <el-col :span="24" class="top">
-          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow" @onClickLeft="onClickLeft"> </NavBar>
         </el-col>
         <el-col :span="24" class="main">
           <el-col :span="24" style="text-align:center;padding:10px 0;">
@@ -98,6 +98,10 @@ export default {
         this.$set(this, `place`, arr.data);
       }
     },
+    // 返回
+    onClickLeft() {
+      this.$router.push({ path: '/user/index' });
+    },
   },
   computed: {
     ...mapState(['user']),

+ 5 - 1
src/views/adminCenter/enterpriseProduct/detail.vue

@@ -3,7 +3,7 @@
     <el-row>
       <el-col :span="24" class="style">
         <el-col :span="24" class="top">
-          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow" @onClickLeft="onClickLeft"> </NavBar>
         </el-col>
         <el-col :span="24" class="main">
           <span v-if="form.type == '0'">
@@ -171,6 +171,10 @@ export default {
         this.$router.push({ path: '/adminCenter/enterpriseProduct/index' });
       }
     },
+    // 返回
+    onClickLeft() {
+      this.$router.push({ path: '/adminCenter/enterpriseProduct/index' });
+    },
   },
   computed: {
     ...mapState(['user']),

+ 5 - 1
src/views/adminCenter/enterpriseProduct/index.vue

@@ -3,7 +3,7 @@
     <el-row>
       <el-col :span="24" class="style">
         <el-col :span="24" class="top">
-          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow" @onClickLeft="onClickLeft"> </NavBar>
         </el-col>
         <el-col :span="24" class="main">
           <van-tabs v-model="active">
@@ -90,6 +90,10 @@ export default {
         this.search({ status: '2' });
       }
     },
+    // 返回
+    onClickLeft() {
+      this.$router.push({ path: '/user/index' });
+    },
   },
   computed: {
     ...mapState(['user']),

+ 5 - 1
src/views/adminCenter/transaction/detail.vue

@@ -3,7 +3,7 @@
     <el-row>
       <el-col :span="24" class="style">
         <el-col :span="24" class="top">
-          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow" @onClickLeft="onClickLeft"> </NavBar>
         </el-col>
         <el-col :span="24" class="main">
           <van-form>
@@ -82,6 +82,10 @@ export default {
         }
       }
     },
+    // 返回
+    onClickLeft() {
+      this.$router.push({ path: '/adminCenter/transaction/index' });
+    },
   },
   computed: {
     ...mapState(['user']),

+ 5 - 1
src/views/adminCenter/transaction/index.vue

@@ -3,7 +3,7 @@
     <el-row>
       <el-col :span="24" class="style">
         <el-col :span="24" class="top">
-          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow" @onClickLeft="onClickLeft"> </NavBar>
         </el-col>
         <el-col :span="24" class="main">
           <list :list="oneList" @check="check"></list>
@@ -55,6 +55,10 @@ export default {
     check(data) {
       this.$router.push({ path: '/adminCenter/transaction/detail', query: { id: data.id } });
     },
+    // 返回
+    onClickLeft() {
+      this.$router.push({ path: '/user/index' });
+    },
   },
   computed: {
     ...mapState(['user']),

+ 5 - 1
src/views/adminCenter/user/detail.vue

@@ -3,7 +3,7 @@
     <el-row>
       <el-col :span="24" class="style">
         <el-col :span="24" class="top">
-          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow" @onClickLeft="onClickLeft"> </NavBar>
         </el-col>
         <el-col :span="24" class="main">
           <detailInfo :form="form" :role="userrole" @onSubmit="onSubmit"></detailInfo>
@@ -86,6 +86,10 @@ export default {
         }
       }
     },
+    // 返回
+    onClickLeft() {
+      this.$router.push({ path: '/adminCenter/user/index' });
+    },
   },
   computed: {
     ...mapState(['user']),

+ 5 - 1
src/views/adminCenter/user/index.vue

@@ -3,7 +3,7 @@
     <el-row>
       <el-col :span="24" class="style">
         <el-col :span="24" class="top">
-          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow" @onClickLeft="onClickLeft"> </NavBar>
         </el-col>
         <el-col :span="24" class="main">
           <el-col :span="24">
@@ -86,6 +86,10 @@ export default {
     shenhebtn(data) {
       this.$router.push({ path: '/adminCenter/user/detail', query: { id: data.uid, role: data.role } });
     },
+    // 返回
+    onClickLeft() {
+      this.$router.push({ path: '/user/index' });
+    },
   },
   computed: {
     ...mapState(['user']),

+ 0 - 6
src/views/live/detail.vue

@@ -3,12 +3,6 @@
     <el-row>
       <el-col :span="24" class="style">
         <videoDetail2></videoDetail2>
-        <!-- <el-col :span="24" class="top">
-          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
-        </el-col>
-        <el-col :span="24" class="main">
-          <videoDetail2></videoDetail2>
-        </el-col> -->
       </el-col>
     </el-row>
   </div>

+ 0 - 136
src/views/live/detail2.vue

@@ -1,136 +0,0 @@
-<template>
-  <div id="detail2">
-    <el-row>
-      <el-col :span="24">
-        <el-col :span="24" class="top">
-          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
-        </el-col>
-        <el-col :span="24" class="main">
-          <el-col :span="24" class="title">{{ detailinfo.title }}</el-col>
-          <el-col :span="24" class="info">
-            <span>时间:{{ detailinfo.publish_time }}</span>
-            <span>来源:{{ detailinfo.orgin }}</span>
-          </el-col>
-          <el-col :span="24" class="img">
-            <el-image :src="detailinfo.picture" style="width:100%; height: 100%"></el-image>
-          </el-col>
-          <el-col :span="24" class="video">
-            <video :src="detailinfo.filepath" controls="controls">
-              您的浏览器不支持 video 标签。
-            </video>
-          </el-col>
-          <el-col :span="24" class="content">
-            <p v-html="detailinfo.content"></p>
-          </el-col>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-import NavBar from '@/layout/common/topInfo.vue';
-const { mapActions: newsguidance } = createNamespacedHelpers('newsguidance');
-const { mapActions: newsroadshow } = createNamespacedHelpers('newsroadshow');
-export default {
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  name: 'detail2',
-  props: {},
-  components: {
-    NavBar,
-  },
-  data: function() {
-    return {
-      // 头部标题
-      title: '',
-      // meta为true
-      isleftarrow: '',
-      // 返回
-      navShow: true,
-      //详情
-      detailinfo: {},
-    };
-  },
-  created() {
-    if (this.id) {
-      this.search();
-    }
-  },
-  methods: {
-    ...newsguidance({ newsguidancefetch: 'fetch' }),
-    ...newsroadshow({ newsroadshowfetch: 'fetch' }),
-    async search() {
-      if (this.type === '1') {
-        let res = await this.newsguidancefetch(this.id);
-        if (this.$checkRes(res)) {
-          this.$set(this, `detailinfo`, res.data);
-        }
-      } else {
-        let res = await this.newsroadshowfetch(this.id);
-        if (this.$checkRes(res)) {
-          this.$set(this, `detailinfo`, res.data);
-        }
-      }
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-    id() {
-      return this.$route.query.id;
-    },
-    type() {
-      return this.$route.query.type;
-    },
-  },
-  mounted() {
-    this.title = this.$route.meta.title;
-    this.isleftarrow = this.$route.meta.isleftarrow;
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.top {
-  height: 46px;
-  overflow: hidden;
-  position: relative;
-  z-index: 999;
-}
-.main {
-  .title {
-    color: #409eff;
-    font-size: 18px;
-    text-align: center;
-    margin-top: 20px;
-  }
-  .info {
-    text-align: center;
-    margin-top: 10px;
-    border-bottom: 1px solid gray;
-    padding-bottom: 10px;
-    span:nth-child(2) {
-      margin-left: 15px;
-    }
-  }
-  .img {
-    padding: 0px 10px;
-    height: 200px;
-    text-align: center;
-    margin-top: 10px;
-  }
-  .video {
-    video {
-      width: 100%;
-      margin-top: 10px;
-      height: 250px;
-    }
-  }
-  .content {
-    margin-top: 10px;
-    padding: 0px 10px;
-  }
-}
-</style>

+ 7 - 4
src/views/live/index.vue

@@ -100,10 +100,12 @@ export default {
       }
     },
     sesstoken() {
-      sessionStorage.setItem('token', this.token);
-      let user = jwt.decode(this.token);
-      if (user && user.uid) {
-        this.setUser(user);
+      if (this.token) {
+        sessionStorage.setItem('token', this.token);
+        let user = jwt.decode(this.token);
+        if (user && user.uid) {
+          this.setUser(user);
+        }
       }
     },
   },
@@ -118,6 +120,7 @@ export default {
       immediate: true,
       deep: true,
       handler(val) {
+        console.log(val);
         this.sesstoken();
       },
     },

+ 0 - 388
src/views/live/parts/videoDetail.vue

@@ -1,388 +0,0 @@
-<template>
-  <div id="videoDetail">
-    <el-row>
-      <el-col :span="24" class="info">
-        <el-col :span="24" class="video">
-          <video :src="dockInfo.file_path" autoplay="" controls="controls" v-if="dockInfo.file_path != null || ''" class="videoinfo">
-            您的浏览器不支持 video 标签。
-          </video>
-          <div class="videointro" v-else>
-            <p>{{ dockInfo.videointro }}</p>
-          </div>
-        </el-col>
-        <el-col :span="24" class="chat">
-          <van-tabs v-model="active">
-            <van-tab title="图文直播">
-              <textVideo :list="lunboList"></textVideo>
-            </van-tab>
-            <van-tab title="公共聊天">
-              <chat></chat>
-            </van-tab>
-          </van-tabs>
-        </el-col>
-        <el-col :span="24" class="tab">
-          <van-tabs v-model="infoactive">
-            <van-tab title="技术成果">
-              <el-col :span="24" class="two">
-                <el-col :span="24" class="twoList" v-for="(item, index) in demandList" :key="index">
-                  <el-col :span="24" class="name">{{ item.name }}</el-col>
-                  <el-col :span="24" class="field">所属领域:{{ item.field }}</el-col>
-                </el-col>
-              </el-col>
-            </van-tab>
-            <van-tab title="科技需求">
-              <el-col :span="24" class="two">
-                <el-col :span="24" class="twoList" v-for="(item, index) in twoList" :key="index">
-                  <el-col :span="24" class="name">{{ item.name }}</el-col>
-                  <el-col :span="24" class="field">所属领域:{{ item.field }}</el-col>
-                </el-col>
-              </el-col>
-            </van-tab>
-            <van-tab title="专家智库">
-              <el-col :span="24" class="two">
-                <el-col :span="24" class="twoList" v-for="(item, index) in expertList" :key="index">
-                  <el-col :span="5" class="image">
-                    <el-image
-                      :src="item.expertimage"
-                      style="width:70px;height: 70px;border: 1px solid #f1f1f1;"
-                      v-if="item.expertimage != null || undefined"
-                    ></el-image>
-                    <el-image :src="expertimage" style="width:70px;height: 70px;border: 1px solid #f1f1f1;" v-else></el-image>
-                  </el-col>
-                  <el-col :span="19" class="info1">
-                    <el-col :span="24" class="name textOver">
-                      {{ item.name }}
-                    </el-col>
-                    <el-col :span="24" class="txt textOver"> {{ item.zwzc || '暂无' }} </el-col>
-                    <el-col :span="24" class="txt textOver"> {{ item.company || '暂无' }} </el-col>
-                  </el-col>
-                </el-col>
-              </el-col>
-            </van-tab>
-            <van-tab title="嘉宾访谈">
-              <el-col :span="24" class="jiabinlist">
-                <el-col :span="24" class="jiabin" v-for="(item, index) in zxzdlist" :key="index">
-                  <el-col :span="4" class="img4">
-                    <img :src="item.picture" style="width: 100%; height: 100%" />
-                  </el-col>
-                  <el-col :span="20" class="info">
-                    <el-col :span="16" class="title">
-                      {{ item.title }}
-                    </el-col>
-                    <el-col :span="8" class="time">
-                      {{ item.publish_time }}
-                    </el-col>
-                    <el-col :span="24" class="con">{{ item.titlejj }}</el-col>
-                  </el-col>
-                </el-col>
-              </el-col>
-            </van-tab>
-            <van-tab title="项目路演">
-              <el-col :span="24" class="xmly">
-                <el-col :span="24" class="xmlylist" v-for="(item, index) in xmlyList" :key="index">
-                  <el-col :span="17" class="name textOver">
-                    {{ item.title }}
-                  </el-col>
-                  <el-col :span="7" class="date">{{ item.publish_time }} </el-col>
-                  <el-col :span="24" class="jianjie">
-                    {{ item.titlejj }}
-                  </el-col>
-                </el-col>
-              </el-col>
-            </van-tab>
-          </van-tabs>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-import chat from '@/components/parts/chat.vue';
-import textVideo from '@/components/parts/textVideo.vue';
-const { mapActions: dock } = createNamespacedHelpers('dock');
-const { mapActions: exportuser } = createNamespacedHelpers('exportuser');
-const { mapActions: marketuser } = createNamespacedHelpers('marketuser');
-const { mapActions: newsroadshow } = createNamespacedHelpers('newsroadshow');
-const { mapActions: newsguidance } = createNamespacedHelpers('newsguidance');
-import moment from 'moment';
-export default {
-  name: 'videoDetail',
-  props: {},
-  components: {
-    chat,
-    textVideo,
-  },
-  data: function() {
-    return {
-      infoactive: 4,
-      // 项目路演
-      xmlyList: [],
-      //科技需求
-      twoList: [],
-      //技术成果
-      demandList: [],
-      //专家智库
-      expertList: [],
-      expertimage: require('@/assets/222.png'),
-      // 展会详情
-      dockInfo: {},
-      times: 5,
-      // 聊天
-      active: 0,
-      // 图文直播
-      lunboList: [],
-      // 嘉宾访谈
-      zxzdlist: [],
-    };
-  },
-  async created() {
-    await this.seachdock();
-    await this.seachInfo();
-    await this.seachLunbo();
-  },
-  methods: {
-    ...dock({ dockQuery: 'query', dockFetch: 'fetch' }),
-    ...exportuser({ expertQuery: 'query' }),
-    ...marketuser({ operaFetch: 'operaFetch' }),
-    ...newsroadshow({ newsroadshowquery: 'query' }),
-    ...newsguidance({ danceQuery: 'query' }),
-    async seachInfo({ skip = 0, limit = 5, ...info } = {}) {
-      let res = await this.dockFetch(this.id);
-      if (this.$checkRes(res)) {
-        let czxm = res.data.apply.map(item => item.goodsList);
-        czxm = _.flattenDeep(czxm);
-        var czxmNew = czxm.filter(item => item.dockStatus == '1');
-        //科技需求
-        var jishuData = czxmNew.filter(item => item.type === '0');
-        this.$set(this, `twoList`, jishuData);
-        //技术成果
-        var chanpinData = czxmNew.filter(item => item.type === '1');
-        if (chanpinData) this.$set(this, `demandList`, chanpinData);
-        // 专家智库
-        let exportdata = await this.expertQuery({ role: 6 });
-        if (this.$checkRes(exportdata)) this.$set(this, `expertList`, exportdata.data);
-        // 项目路演
-        let xmly = await this.newsroadshowquery({ dock_id: this.id });
-        if (this.$checkRes(xmly)) this.$set(this, `xmlyList`, xmly.data);
-        //嘉宾访谈dock id
-        let jbftData = await this.danceQuery({ dock_id: this.id, role: 6, limit: 6 });
-        if (this.$checkRes(jbftData)) this.$set(this, `zxzdlist`, jbftData.data);
-      }
-    },
-    // 文字/视频倒计时
-    daojishi() {
-      this.timer = setInterval(() => {
-        this.times--;
-        if (this.times === 0) {
-          this.seachdock();
-          this.times = 5;
-          clearInterval(this.timer);
-        }
-      }, 1000);
-    },
-    async seachdock() {
-      if (this.id) {
-        let res = await this.dockFetch(this.id);
-        if (this.$checkRes(res)) {
-          // 对接会详情
-          this.$set(this, `dockInfo`, res.data);
-        }
-      }
-    },
-    // 查询图文直播
-    async seachLunbo() {
-      let res = await this.operaFetch({ dockid: this.id });
-      for (const val of res.data) {
-        var date = moment(val.meta.createdAt).format('YYYY-MM-DD hh:mm');
-        val.date = date;
-      }
-      if (this.$checkRes(res)) {
-        this.$set(this, `lunboList`, res.data);
-      }
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-    id() {
-      return this.$route.query.id;
-    },
-    pageTitle() {
-      return `${this.$route.meta.title}`;
-    },
-  },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  watch: {
-    times: {
-      immediate: true,
-      deep: true,
-      handler(val) {
-        if (val && val == 5) {
-          this.daojishi();
-        }
-      },
-    },
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.info {
-  padding: 10px;
-  .video {
-    background: #fff;
-    padding: 10px;
-    margin: 0 0 10px 0;
-    height: 250px;
-    .videoinfo {
-      width: 100%;
-      height: 215px;
-      background: #000;
-      padding: 0px 0 15px 0px;
-    }
-    .videointro {
-      background: url('~@/assets/directBack.png');
-      background-size: 100% 100%;
-      color: #fff;
-      padding: 0 15px;
-      height: 230px;
-      p:first-child {
-        text-align: center;
-        font-size: 30px;
-        padding: 25% 0;
-      }
-      p:last-child {
-        padding: 0;
-        padding-top: 30px;
-        text-align: center;
-        font-size: 18px;
-        line-height: 35px;
-        overflow: hidden;
-        text-overflow: ellipsis;
-        -webkit-line-clamp: 7;
-        word-break: break-all;
-        display: -webkit-box;
-        -webkit-box-orient: vertical;
-      }
-    }
-  }
-  .chat {
-    background: #fff;
-    padding: 10px;
-    .chatList {
-      border: 1px solid #ccc;
-      min-height: 300px;
-      margin: 0 0 10px 0;
-      border-radius: 10px;
-      padding: 5px 10px;
-    }
-    .chatInput {
-      .el-button {
-        width: 100%;
-        padding: 13px 0;
-      }
-    }
-  }
-  .tab {
-    background-color: #fff;
-    .two {
-      height: 510px;
-      overflow-y: auto;
-      .twoList {
-        padding: 5px 0px;
-        // font-size: 14px;
-        border-bottom: 1px dashed #ccc;
-        overflow: hidden;
-        white-space: nowrap;
-        text-overflow: ellipsis;
-        .name {
-          font-size: 18px;
-          font-weight: bolder;
-        }
-        .field {
-          margin-top: 8px;
-          font-size: 16px;
-          color: #666;
-        }
-      }
-      .image {
-        margin-top: 5px;
-        .el-image {
-          border-radius: 90%;
-        }
-      }
-      .info1 {
-        padding: 6px 0px 1px 20px;
-      }
-    }
-    .jiabinlist {
-      .jiabin {
-        padding: 5px 0px;
-        border-bottom: 1px dashed #ccc;
-        .img4 {
-          height: 75px;
-        }
-        .info {
-          padding: 0;
-          padding-left: 10px;
-          .title {
-            overflow: hidden;
-            white-space: nowrap;
-            text-overflow: ellipsis;
-            font-size: 18px;
-            font-weight: bolder;
-          }
-          .time {
-            font-size: 16px;
-            color: #666;
-          }
-          .con {
-            font-size: 16px;
-            color: #666;
-            margin-top: 5px;
-            display: -webkit-box;
-            -webkit-box-orient: vertical;
-            -webkit-line-clamp: 2;
-            overflow: hidden;
-          }
-        }
-      }
-    }
-    .xmly {
-      height: 510px;
-      overflow-y: auto;
-      padding: 5px 10px;
-      .xmlylist {
-        border-bottom: 1px dashed #ccc;
-        padding: 0px 0 8px 0;
-        margin: 0 0 5px 0;
-        .name {
-          font-size: 18px;
-          font-weight: bold;
-        }
-        .date {
-          font-size: 16px;
-          text-align: right;
-        }
-        .jianjie {
-          height: 45px;
-          font-size: 16px;
-          overflow: hidden;
-          text-overflow: ellipsis;
-          -webkit-line-clamp: 2;
-          word-break: break-all;
-          display: -webkit-box;
-          -webkit-box-orient: vertical;
-        }
-      }
-    }
-  }
-}
-/deep/.video-js {
-  height: 190px !important;
-  border-radius: 10px;
-}
-</style>

+ 0 - 14
src/views/live/parts/videoDetail2.vue

@@ -113,20 +113,6 @@
             </van-tab>
           </van-tabs>
         </el-col>
-        <el-col :span="24" class="company">
-          <el-col :span="24" class="name">
-            <p>主办单位</p>
-            <p>{{ dockinfo.sponsor }}</p>
-          </el-col>
-          <el-col :span="24" class="name">
-            <p>承办单位</p>
-            <p>{{ dockinfo.organizer }}</p>
-          </el-col>
-          <el-col :span="24" class="name">
-            <p>技术支持</p>
-            <p>长春市福瑞科技有限公司</p>
-          </el-col>
-        </el-col>
       </el-col>
     </el-row>
   </div>

+ 24 - 2
src/views/market/exportDetail.vue

@@ -3,7 +3,7 @@
     <el-row>
       <el-col :span="24" class="style">
         <el-col :span="24" class="top">
-          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow" @onClickLeft="onClickLeft"> </NavBar>
         </el-col>
         <el-col :span="24" class="main">
           <el-col :span="24" class="top">
@@ -45,7 +45,7 @@
                     </p>
                     <p>
                       <span>QQ/微信</span>
-                      <span>{{ exportInfo.qqwx || '暂无' }}</span>
+                      <span>{{ getphone(exportInfo.qqwx) || '暂无' }}</span>
                     </p>
                     <p>
                       <span>电子邮箱</span>
@@ -126,6 +126,28 @@ export default {
       let res = await this.fetch(this.id);
       this.$set(this, `exportInfo`, res.data);
     },
+    // 隐藏手机号
+    getphone(value) {
+      if (value == undefined) {
+        return '暂无';
+      } else {
+        if (value.length === 11 || value.length === 12) {
+          let start = value.slice(0, 4);
+          let end = value.slice(-3);
+          return `${start}****${end}`;
+        } else if (value.length === 20) {
+          let start = value.slice(0, 13);
+          let end = value.slice(-3);
+          return `${start}****${end}`;
+        } else {
+          return value;
+        }
+      }
+    },
+    // 返回
+    onClickLeft() {
+      this.$router.push({ path: '/market/index' });
+    },
   },
   computed: {
     ...mapState(['user']),

+ 5 - 1
src/views/market/productDetail.vue

@@ -3,7 +3,7 @@
     <el-row>
       <el-col :span="24" class="style">
         <el-col :span="24" class="top">
-          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow" @onClickLeft="onClickLeft"> </NavBar>
         </el-col>
         <el-col :span="24" class="main">
           <productInfo :info="productInfo" :type="protype"></productInfo>
@@ -50,6 +50,10 @@ export default {
       let res = await this.fetch(this.id);
       if (this.$checkRes(res)) this.$set(this, `productInfo`, res.data);
     },
+    // 返回
+    onClickLeft() {
+      this.$router.push({ path: '/market/index' });
+    },
   },
   computed: {
     ...mapState(['user']),

+ 11 - 5
src/views/service/detail.vue

@@ -3,19 +3,18 @@
     <el-row>
       <el-col :span="24" class="style">
         <el-col :span="24" class="top">
-          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow" @onClickLeft="onClickLeft"> </NavBar>
         </el-col>
         <el-col :span="24" class="main">
           <span v-if="column_name == '智慧推荐'">智慧推荐</span>
           <span v-else-if="column_name == '展会管理'"><twoInfo :column_name="column_name"></twoInfo></span>
+          <span v-else-if="column_name == '动态监测'"><threeInfo :column_name="column_name"></threeInfo></span>
           <span v-else-if="column_name == '科技评估'">科技评估</span>
           <span v-else-if="column_name == '合同在线'">合同在线</span>
           <span v-else-if="column_name == '信用认证'">信用认证</span>
           <span v-else-if="column_name == '绩效评价'">绩效评价</span>
+          <span v-else-if="column_name == '在线咨询'">在线咨询</span>
         </el-col>
-        <!-- <el-col :span="24" class="foot">
-          <footInfo></footInfo>
-        </el-col> -->
       </el-col>
     </el-row>
   </div>
@@ -26,6 +25,7 @@ import { mapState, createNamespacedHelpers } from 'vuex';
 import NavBar from '@/layout/common/topInfo.vue';
 import footInfo from '@/layout/common/footInfo.vue';
 import twoInfo from './parts/twoInfo.vue';
+import threeInfo from './parts/threeInfo.vue';
 
 export default {
   name: 'index',
@@ -34,6 +34,7 @@ export default {
     NavBar,
     // footInfo,
     twoInfo, //展会管理
+    threeInfo, //动态监测
   },
   data: function() {
     return {
@@ -46,7 +47,12 @@ export default {
     };
   },
   created() {},
-  methods: {},
+  methods: {
+    // 返回
+    onClickLeft() {
+      this.$router.push({ path: '/service/index' });
+    },
+  },
   computed: {
     ...mapState(['user']),
     column_name() {

+ 110 - 8
src/views/service/index.vue

@@ -46,42 +46,75 @@
             <el-image :src="topImage"></el-image>
           </el-col>
           <el-col :span="24" class="info">
-            <el-col :span="8" class="btn">
+            <el-col :span="6" class="btn">
               <el-link :underline="false" @click="$router.push({ path: '/service/detail', query: { column_name: '智慧推荐' } })" disabled>
                 <el-image :src="onePic"></el-image>
                 <p>智慧推荐</p>
               </el-link>
             </el-col>
-            <el-col :span="8" class="btn">
+            <el-col :span="6" class="btn">
               <el-link :underline="false" @click="$router.push({ path: '/service/detail', query: { column_name: '展会管理' } })">
                 <el-image :src="twoPic"></el-image>
                 <p>展会管理</p>
               </el-link>
             </el-col>
-            <el-col :span="8" class="btn">
+            <el-col :span="6" class="btn">
+              <el-link :underline="false" @click="$router.push({ path: '/service/detail', query: { column_name: '动态监测' } })">
+                <el-image :src="sevenPic"></el-image>
+                <p>动态监测</p>
+              </el-link>
+            </el-col>
+            <el-col :span="6" class="btn">
               <el-link :underline="false" @click="$router.push({ path: '/service/detail', query: { column_name: '科技评估' } })" disabled>
                 <el-image :src="threePic"></el-image>
                 <p>科技评估</p>
               </el-link>
             </el-col>
-            <el-col :span="8" class="btn">
+            <el-col :span="6" class="btn">
               <el-link :underline="false" @click="$router.push({ path: '/service/detail', query: { column_name: '合同在线' } })" disabled>
                 <el-image :src="fourPic"></el-image>
                 <p>合同在线</p>
               </el-link>
             </el-col>
-            <el-col :span="8" class="btn">
+            <el-col :span="6" class="btn">
               <el-link :underline="false" @click="$router.push({ path: '/service/detail', query: { column_name: '信用认证' } })" disabled>
                 <el-image :src="fivePic"></el-image>
                 <p>信用认证</p>
               </el-link>
             </el-col>
-            <el-col :span="8" class="btn">
+            <el-col :span="6" class="btn">
               <el-link :underline="false" @click="$router.push({ path: '/service/detail', query: { column_name: '绩效评价' } })" disabled>
                 <el-image :src="sixPic"></el-image>
                 <p>绩效评价</p>
               </el-link>
             </el-col>
+            <el-col :span="6" class="btn">
+              <el-link :underline="false" @click="$router.push({ path: '/service/detail', query: { column_name: '在线咨询' } })" disabled>
+                <el-image :src="eightPic"></el-image>
+                <p>在线咨询</p>
+              </el-link>
+            </el-col>
+          </el-col>
+        </el-col>
+        <el-col :span="24" class="main1">
+          <el-col :span="24" class="main1top">
+            技术交流
+          </el-col>
+          <el-col :span="24" class="main1info">
+            <van-tabs v-model="active">
+              <van-tab title="专家问诊">
+                <technicallist type="1" :list="oneList"></technicallist>
+              </van-tab>
+              <van-tab title="行业研究">
+                <technicallist type="2" :list="twoList"></technicallist>
+              </van-tab>
+              <van-tab title="嘉宾访谈">
+                <technicallist type="3" :list="threeList"></technicallist>
+              </van-tab>
+              <van-tab title="项目路演">
+                <technicallist type="4" :list="fourList"></technicallist>
+              </van-tab>
+            </van-tabs>
           </el-col>
         </el-col>
         <el-col :span="24" class="foot">
@@ -96,12 +129,18 @@
 import { mapState, createNamespacedHelpers } from 'vuex';
 import NavBar from '@/layout/common/topInfo.vue';
 import footInfo from '@/layout/common/footInfo.vue';
+import technicallist from './parts/technicallist.vue';
+const { mapActions: column } = createNamespacedHelpers('column');
+const { mapActions: news } = createNamespacedHelpers('news');
+const { mapActions: newsguidance } = createNamespacedHelpers('newsguidance');
+const { mapActions: newsroadshow } = createNamespacedHelpers('newsroadshow');
 export default {
   name: 'index',
   props: {},
   components: {
     NavBar,
     footInfo,
+    technicallist,
   },
   data: function() {
     return {
@@ -118,10 +157,59 @@ export default {
       fourPic: require('@/assets/bendi4.png'),
       fivePic: require('@/assets/bendi5.png'),
       sixPic: require('@/assets/bendi6.png'),
+      sevenPic: require('@/assets/bendi7.png'),
+      eightPic: require('@/assets/bendi8.png'),
+      // 技术交流
+      // 栏目列表
+      columnList: [],
+      active: 0,
+      oneList: [],
+      twoList: [],
+      threeList: [],
+      fourList: [],
     };
   },
-  created() {},
+  async created() {
+    await this.searchCloumn();
+    await this.search();
+  },
   methods: {
+    ...column({ columnquery: 'query', columnInfo: 'fetch' }),
+    ...news({ newsList: 'query' }),
+    ...newsguidance({ danceQuery: 'query' }),
+    ...newsroadshow({ adshowQuery: 'query' }),
+    // 技术交流
+    async searchCloumn() {
+      const res = await this.columnquery();
+      if (this.$checkRes(res)) {
+        this.$set(this, `columnList`, res.data);
+      }
+    },
+    // 查询列表
+    async search() {
+      let column = this.columnList;
+      for (const i of column) {
+        if (i.name == '专家问诊') {
+          const res = await this.newsList({ column_id: i._id });
+          if (this.$checkRes(res)) {
+            this.$set(this, `oneList`, res.data);
+          }
+        } else if (i.name == '行业研究') {
+          const res = await this.newsList({ column_id: i._id });
+          if (this.$checkRes(res)) {
+            this.$set(this, `twoList`, res.data);
+          }
+        }
+      }
+      const jiabin = await this.danceQuery();
+      if (this.$checkRes(jiabin)) {
+        this.$set(this, `threeList`, jiabin.data);
+      }
+      const luyan = await this.adshowQuery();
+      if (this.$checkRes(luyan)) {
+        this.$set(this, `fourList`, luyan.data);
+      }
+    },
     // 智慧推荐
     oneBtn() {},
     // 展会管理
@@ -169,7 +257,7 @@ export default {
   z-index: 999;
 }
 .main {
-  min-height: 570px;
+  // min-height: 570px;
   .topImage {
     height: 160px;
     .el-image {
@@ -215,6 +303,20 @@ export default {
   //   }
   // }
 }
+.main1 {
+  margin: 0 0 50px 0;
+  .main1top {
+    height: 46px;
+    line-height: 46px;
+    text-align: center;
+    background: #2c69fe;
+    color: #fff;
+  }
+  .main1info {
+    height: 565px;
+    overflow-y: auto;
+  }
+}
 .foot {
   position: absolute;
   bottom: 0;

+ 87 - 0
src/views/service/parts/technicaldetail.vue

@@ -0,0 +1,87 @@
+<template>
+  <div id="technicaldetail">
+    <el-row>
+      <el-col :span="24" class="info">
+        <el-col :span="24" class="name">
+          {{ info.title }}
+        </el-col>
+        <el-col :span="24" class="date">
+          <span class="textOver">发布时间:{{ info.publish_time }}</span>
+          <span class="textOver"> 信息来源:{{ info.orgin }}</span>
+        </el-col>
+        <el-col :span="24" class="image">
+          <el-image :src="info.picture"></el-image>
+        </el-col>
+        <el-col :span="24" class="video">
+          <video :src="info.filepath" autoplay="" controls="controls">
+            您的浏览器不支持 video 标签。
+          </video>
+        </el-col>
+        <el-col :span="24" class="content">
+          <p v-html="info.content"></p>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'technicaldetail',
+  props: {
+    info: { type: Object },
+  },
+  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 {
+  .name {
+    text-align: center;
+    padding: 15px 10px 0 10px;
+    font-size: 18px;
+    font-weight: bold;
+  }
+  .date {
+    margin: 15px 0;
+    span {
+      display: inline-block;
+      width: 50%;
+      text-align: center;
+      color: #666;
+    }
+  }
+  .image {
+    padding: 10px;
+    .el-image {
+      width: 100%;
+      height: 210px;
+    }
+  }
+  .video {
+    video {
+      width: 100%;
+      height: 215px;
+    }
+  }
+  .content {
+    padding: 10px 5px;
+  }
+}
+</style>

+ 138 - 0
src/views/service/parts/technicallist.vue

@@ -0,0 +1,138 @@
+<template>
+  <div id="technicallist">
+    <el-row>
+      <el-col :span="24" class="list">
+        <span v-if="type == '1'">
+          <el-col
+            :span="24"
+            class="one"
+            v-for="(item, index) in list"
+            :key="index"
+            @click.native="$router.push({ path: '/service/techDetail', query: { id: item.id, type: '1' } })"
+          >
+            <el-col :span="18" class="name textOver">
+              {{ item.title }}
+            </el-col>
+            <el-col :span="6" class="date textOver">
+              {{ item.publish_time }}
+            </el-col>
+            <el-col :span="24" class="jianjie"> 简介:{{ item.titlejj }} </el-col>
+          </el-col>
+        </span>
+        <span v-else-if="type == '2'">
+          <el-col
+            :span="24"
+            class="one"
+            v-for="(item, index) in list"
+            :key="index"
+            @click.native="$router.push({ path: '/service/techDetail', query: { id: item.id, type: '2' } })"
+          >
+            <el-col :span="18" class="name textOver">
+              {{ item.title }}
+            </el-col>
+            <el-col :span="6" class="date textOver">
+              {{ item.publish_time }}
+            </el-col>
+            <el-col :span="24" class="jianjie"> 简介:{{ item.titlejj }} </el-col>
+          </el-col>
+        </span>
+        <span v-else-if="type == '3'">
+          <el-col
+            :span="24"
+            class="two"
+            v-for="(item, index) in list"
+            :key="index"
+            @click.native="$router.push({ path: '/service/techDetail', query: { id: item.id, type: '3' } })"
+          >
+            <el-col :span="24" class="name textOver">
+              {{ item.title }}
+            </el-col>
+            <el-col :span="12" class="date textOver"> 发布时间:{{ item.publish_time }} </el-col>
+            <el-col :span="12" class="date textOver"> 信息来源:{{ item.orgin }} </el-col>
+          </el-col>
+        </span>
+        <span v-else-if="type == '4'">
+          <el-col
+            :span="24"
+            class="two"
+            v-for="(item, index) in list"
+            :key="index"
+            @click.native="$router.push({ path: '/service/techDetail', query: { id: item.id, type: '4' } })"
+          >
+            <el-col :span="24" class="name textOver">
+              {{ item.title }}
+            </el-col>
+            <el-col :span="12" class="date textOver"> 发布时间:{{ item.publish_time }} </el-col>
+            <el-col :span="12" class="date textOver"> 信息来源:{{ item.orgin }} </el-col>
+          </el-col>
+        </span>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'technicallist',
+  props: {
+    list: { type: Array },
+    type: { type: String, default: '1' },
+  },
+  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>
+.list {
+  padding: 0 16px;
+  .one {
+    padding: 10px 0;
+    border-bottom: 1px dashed #ccc;
+    .name {
+      font-size: 18px;
+      font-weight: bold;
+    }
+    .date {
+      text-align: right;
+    }
+    .jianjie {
+      overflow: hidden;
+      text-overflow: ellipsis;
+      -webkit-line-clamp: 2;
+      word-break: break-all;
+      display: -webkit-box;
+      -webkit-box-orient: vertical;
+      height: 42px;
+      color: #666;
+    }
+  }
+  .two {
+    padding: 10px 0;
+    border-bottom: 1px dashed #ccc;
+    .name {
+      font-size: 18px;
+      font-weight: bold;
+    }
+    .date {
+      height: 42px;
+      line-height: 42px;
+      color: #666;
+    }
+  }
+}
+</style>

+ 145 - 0
src/views/service/parts/threeInfo.vue

@@ -0,0 +1,145 @@
+<template>
+  <div id="threeInfo">
+    <el-row>
+      <el-col :span="24" class="main">
+        <el-col :span="11" class="num">
+          <p>企业注册数</p>
+          <p>{{ info.num1 || '0' }}</p>
+        </el-col>
+        <el-col :span="11" class="num">
+          <p>个人注册数</p>
+          <p>{{ info.num2 || '0' }}</p>
+        </el-col>
+        <el-col :span="11" class="num">
+          <p>专家注册数</p>
+          <p>{{ info.num3 || '0' }}</p>
+        </el-col>
+        <el-col :span="11" class="num">
+          <p>发布需求数</p>
+          <p>{{ info.num4 || '0' }}</p>
+        </el-col>
+        <el-col :span="11" class="num">
+          <p>正在洽谈</p>
+          <p>{{ info.num5 || '0' }}</p>
+        </el-col>
+        <el-col :span="11" class="num">
+          <p>达成意向</p>
+          <p>{{ info.num6 || '0' }}</p>
+        </el-col>
+        <el-col :span="11" class="num">
+          <p>对接成功</p>
+          <p>{{ info.num7 || '0' }}</p>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: marketuser } = createNamespacedHelpers('marketuser');
+const { mapActions: exportuser } = createNamespacedHelpers('exportuser');
+const { mapActions: product } = createNamespacedHelpers('product');
+const { mapActions: transaction } = createNamespacedHelpers('transaction');
+export default {
+  name: 'threeInfo',
+  props: {},
+  components: {},
+  data: function() {
+    return {
+      info: {},
+    };
+  },
+  created() {
+    this.searchInfo();
+  },
+  methods: {
+    ...marketuser({ userQuery: 'query' }),
+    ...exportuser({ expertsuserQurty: 'query' }),
+    ...product({ marketproductQuery: 'query' }),
+    ...transaction({ transactionQuery: 'query' }),
+    async searchInfo({} = {}) {
+      // 个人,企业
+      let res = await this.userQuery();
+      let s1 = res.data.filter(f => f.role == '4');
+      let s2 = res.data.filter(f => f.role == '5');
+      // 专家
+      let exportNum = await this.expertsuserQurty();
+      // 发布需求
+      let productNum = await this.marketproductQuery({ status: 1 });
+      //交易
+      let transaction1 = await this.transactionQuery({ status: 0 });
+      let transaction2 = await this.transactionQuery({ status: 1 });
+      let transaction3 = await this.transactionQuery({ status: 2 });
+      let data = {
+        num1: s2.length,
+        num2: s1.length,
+        num3: exportNum.data.length,
+        num4: productNum.data.length,
+        num5: transaction1.total,
+        num6: transaction2.total,
+        num7: transaction3.total,
+      };
+      this.$set(this, `info`, data);
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.main {
+  width: 95%;
+  margin: 10px 10px;
+  .num {
+    height: 130px;
+    text-align: center;
+    padding: 35px 0px;
+    margin: 10px 7px;
+    color: #346da4;
+    font-weight: bold;
+    p {
+      padding: 10px 0 0 0;
+    }
+    p:nth-child(2) {
+      font-size: 20px;
+    }
+  }
+  .num:nth-child(1) {
+    background: url('~@/assets/dynamic1.png') no-repeat;
+    background-size: 100% 100%;
+  }
+  .num:nth-child(2) {
+    background: url('~@/assets/dynamic2.png') no-repeat;
+    background-size: 100% 100%;
+  }
+  .num:nth-child(3) {
+    background: url('~@/assets/dynamic3.png') no-repeat;
+    background-size: 100% 100%;
+  }
+  .num:nth-child(4) {
+    background: url('~@/assets/dynamic4.png') no-repeat;
+    background-size: 100% 100%;
+  }
+  .num:nth-child(5) {
+    background: url('~@/assets/dynamic1.png') no-repeat;
+    background-size: 100% 100%;
+  }
+  .num:nth-child(6) {
+    background: url('~@/assets/dynamic2.png') no-repeat;
+    background-size: 100% 100%;
+  }
+  .num:nth-child(7) {
+    background: url('~@/assets/dynamic3.png') no-repeat;
+    background-size: 100% 100%;
+  }
+}
+</style>

+ 114 - 0
src/views/service/techDetail.vue

@@ -0,0 +1,114 @@
+<template>
+  <div id="techDetail">
+    <el-row>
+      <el-col :span="24" class="style">
+        <el-col :span="24" class="top">
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow" @onClickLeft="onClickLeft"> </NavBar>
+        </el-col>
+        <el-col :span="24" class="main">
+          <technicaldetail :info="info"></technicaldetail>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import technicaldetail from './parts/technicaldetail.vue';
+import NavBar from '@/layout/common/topInfo.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: column } = createNamespacedHelpers('column');
+const { mapActions: news } = createNamespacedHelpers('news');
+const { mapActions: newsguidance } = createNamespacedHelpers('newsguidance');
+const { mapActions: newsroadshow } = createNamespacedHelpers('newsroadshow');
+export default {
+  name: 'techDetail',
+  props: {},
+  components: {
+    NavBar,
+    technicaldetail,
+  },
+  data: function() {
+    return {
+      // 头部标题
+      title: '',
+      // meta为true
+      isleftarrow: '',
+      // 返回
+      navShow: true,
+      // 详情
+      info: {},
+    };
+  },
+  async created() {
+    if (this.id) {
+      await this.search();
+    }
+  },
+  methods: {
+    ...column({ columnList: 'query', columnInfo: 'fetch' }),
+    ...news({ newsList: 'query', newsFetch: 'fetch' }),
+    ...newsguidance({ danceQuery: 'query', danceFetch: 'fetch' }),
+    ...newsroadshow({ adshowQuery: 'query', adshowFetch: 'fetch' }),
+    async search() {
+      if (this.type == '1') {
+        let res = await this.newsFetch(this.id);
+        if (this.$checkRes(res)) {
+          this.$set(this, `info`, res.data);
+        }
+      } else if (this.type == '2') {
+        let res = await this.newsFetch(this.id);
+        if (this.$checkRes(res)) {
+          this.$set(this, `info`, res.data);
+        }
+      } else if (this.type == '3') {
+        let res = await this.danceFetch(this.id);
+        if (this.$checkRes(res)) {
+          this.$set(this, `info`, res.data);
+        }
+      } else if (this.type == '4') {
+        let res = await this.adshowFetch(this.id);
+        if (this.$checkRes(res)) {
+          this.$set(this, `info`, res.data);
+        }
+      }
+    },
+    // 返回
+    onClickLeft() {
+      this.$router.push({ path: '/service/index' });
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+    type() {
+      return this.$route.query.type;
+    },
+    id() {
+      return this.$route.query.id;
+    },
+  },
+  mounted() {
+    this.title = this.$route.meta.title;
+    this.isleftarrow = this.$route.meta.isleftarrow;
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.style {
+  width: 100%;
+  min-height: 667px;
+  position: relative;
+  background-color: #f9fafc;
+}
+.top {
+  height: 46px;
+  overflow: hidden;
+}
+.main {
+  min-height: 570px;
+}
+</style>

+ 5 - 1
src/views/updatePwd/index.vue

@@ -3,7 +3,7 @@
     <el-row>
       <el-col :span="24">
         <el-col :span="24" class="top">
-          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow" @onClickLeft="onClickLeft"> </NavBar>
         </el-col>
         <el-col :span="24" class="pwd">
           <van-form>
@@ -82,6 +82,10 @@ export default {
       }
       this.$router.push({ path: '/live/index' });
     },
+    // 返回
+    onClickLeft() {
+      this.$router.push({ path: '/user/index' });
+    },
   },
   computed: {
     ...mapState(['user']),

+ 0 - 1
src/views/user/parts/clickBtn.vue

@@ -66,7 +66,6 @@ export default {
   methods: {
     ...login(['toGetMenu', 'logout']),
     async searchMenu() {
-      console.log(this.user);
       if (this.user.uid) {
         const res = await this.toGetMenu({ id: this.user.uid });
         for (const val of res.data.menus) {

+ 5 - 1
src/views/userCenter/dock/detail.vue

@@ -3,7 +3,7 @@
     <el-row>
       <el-col :span="24" class="style">
         <el-col :span="24" class="top">
-          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow" @onClickLeft="onClickLeft"> </NavBar>
         </el-col>
         <el-col :span="24" class="main">
           <van-tabs v-model="active">
@@ -154,6 +154,10 @@ export default {
         this.$router.push({ path: '/userCenter/dock/index' });
       }
     },
+    // 返回
+    onClickLeft() {
+      this.$router.push({ path: '/userCenter/dock/index' });
+    },
   },
   computed: {
     ...mapState(['user']),

+ 5 - 1
src/views/userCenter/dock/index.vue

@@ -3,7 +3,7 @@
     <el-row>
       <el-col :span="24" class="style">
         <el-col :span="24" class="top">
-          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow" @onClickLeft="onClickLeft"> </NavBar>
         </el-col>
         <el-col :span="24" class="main">
           <el-col :span="24">
@@ -84,6 +84,10 @@ export default {
         this.$set(this, `place`, arr.data);
       }
     },
+    // 返回
+    onClickLeft() {
+      this.$router.push({ path: '/user/index' });
+    },
   },
   computed: {
     ...mapState(['user']),

+ 5 - 1
src/views/userCenter/matter/detail.vue

@@ -3,7 +3,7 @@
     <el-row>
       <el-col :span="24" class="style">
         <el-col :span="24" class="top">
-          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow" @onClickLeft="onClickLeft"> </NavBar>
         </el-col>
         <el-col :span="24" class="main">
           <van-form>
@@ -77,6 +77,10 @@ export default {
         }
       }
     },
+    // 返回
+    onClickLeft() {
+      this.$router.push({ path: '/userCenter/matter/index' });
+    },
   },
   computed: {
     ...mapState(['user']),

+ 5 - 1
src/views/userCenter/matter/index.vue

@@ -3,7 +3,7 @@
     <el-row>
       <el-col :span="24" class="style">
         <el-col :span="24" class="top">
-          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow" @onClickLeft="onClickLeft"> </NavBar>
         </el-col>
         <el-col :span="24" class="main">
           <van-tabs v-model="active">
@@ -116,6 +116,10 @@ export default {
       this.search({ status: '1' });
       this.search({ status: '2' });
     },
+    // 返回
+    onClickLeft() {
+      this.$router.push({ path: '/user/index' });
+    },
   },
   computed: {
     ...mapState(['user']),

+ 25 - 10
src/views/userCenter/myProduct/detail.vue

@@ -3,7 +3,7 @@
     <el-row>
       <el-col :span="24" class="style">
         <el-col :span="24" class="top">
-          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow" @onClickLeft="onClickLeft"> </NavBar>
         </el-col>
         <el-col :span="24" class="main">
           <van-tabs v-model="active" @click="clickbtn">
@@ -148,15 +148,26 @@ export default {
     },
     // 提交
     async onSubmit({ data }) {
-      data.type = this.type;
-      data.userid = this.user.uid;
-      let res = await this.productCreate(data);
-      if (this.$checkRes(res)) {
-        this.$notify({
-          message: '保存草稿成功',
-          type: 'success',
-        });
-        this.$router.push({ path: '/userCenter/myProduct/index' });
+      if (data.id) {
+        let res = await this.productUpdate(data);
+        if (this.$checkRes(res)) {
+          this.$notify({
+            message: '修改草稿信息成功',
+            type: 'success',
+          });
+          this.$router.push({ path: '/userCenter/myProduct/index' });
+        }
+      } else {
+        data.type = this.type;
+        data.userid = this.user.uid;
+        let res = await this.productCreate(data);
+        if (this.$checkRes(res)) {
+          this.$notify({
+            message: '保存草稿成功',
+            type: 'success',
+          });
+          this.$router.push({ path: '/userCenter/myProduct/index' });
+        }
       }
     },
     // 监听显示类型
@@ -165,6 +176,10 @@ export default {
       this.$set(this, `active`, Number(type));
       this.$set(this, `type`, type);
     },
+    // 返回
+    onClickLeft() {
+      this.$router.push({ path: '/userCenter/myProduct/index' });
+    },
   },
   computed: {
     ...mapState(['user']),

+ 5 - 1
src/views/userCenter/myProduct/index.vue

@@ -3,7 +3,7 @@
     <el-row>
       <el-col :span="24" class="style">
         <el-col :span="24" class="top">
-          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow" @onClickLeft="onClickLeft"> </NavBar>
         </el-col>
         <el-col :span="24" class="main">
           <el-col :span="24" class="btn">
@@ -121,6 +121,10 @@ export default {
         });
       }
     },
+    // 返回
+    onClickLeft() {
+      this.$router.push({ path: '/user/index' });
+    },
   },
   computed: {
     ...mapState(['user']),

+ 5 - 1
src/views/userCenter/user/index.vue

@@ -3,7 +3,7 @@
     <el-row>
       <el-col :span="24" class="style">
         <el-col :span="24" class="top">
-          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow" @onClickLeft="onClickLeft"> </NavBar>
         </el-col>
         <el-col :span="24" class="main">
           <message :form="form" @onSubmit="onSubmit" @expertBtn="expertBtn"></message>
@@ -92,6 +92,10 @@ export default {
         this.$router.push({ path: '/login' });
       }
     },
+    // 返回
+    onClickLeft() {
+      this.$router.push({ path: '/user/index' });
+    },
   },
   mounted() {
     this.title = this.$route.meta.title;