guhongwei 4 rokov pred
rodič
commit
72a5555077
90 zmenil súbory, kde vykonal 1825 pridanie a 9006 odobranie
  1. 33 88
      src/router/index.js
  2. 4 0
      src/store/index.js
  3. 43 0
      src/store/market/patent.js
  4. 43 0
      src/store/market/util.js
  5. 0 251
      src/views/channel/detail.vue
  6. 0 207
      src/views/channel/index.vue
  7. 0 101
      src/views/channel/parts/list.vue
  8. 0 147
      src/views/journ/detail.vue
  9. 0 237
      src/views/journ/index.vue
  10. 0 72
      src/views/journ/parts/kjzxList.vue
  11. 0 551
      src/views/live copy/detail(第一版).vue
  12. 0 233
      src/views/live copy/detail.vue
  13. 0 285
      src/views/live copy/exportsDetail.vue
  14. 0 138
      src/views/live copy/index.vue
  15. 0 88
      src/views/live copy/parts/czxm.vue
  16. 0 254
      src/views/live copy/parts/dockchat.vue
  17. 0 124
      src/views/live copy/parts/exports.vue
  18. 0 101
      src/views/live copy/parts/exportsList.vue
  19. 0 110
      src/views/live copy/parts/imgtxtdock.vue
  20. 0 103
      src/views/live copy/parts/jbft.vue
  21. 0 108
      src/views/live copy/parts/liveList.vue
  22. 0 123
      src/views/live copy/parts/personal.vue
  23. 0 100
      src/views/live copy/parts/personalList.vue
  24. 0 205
      src/views/live copy/parts/product.vue
  25. 0 103
      src/views/live copy/parts/xmly.vue
  26. 0 598
      src/views/live copy/personalDetail.vue
  27. 0 0
      src/views/live/backups/detailtwo.vue
  28. 53 0
      src/views/live/detail.vue
  29. 2 3
      src/views/live/channelDetail.vue
  30. 4 7
      src/views/live/interviewDeatil.vue
  31. 4 3
      src/views/market/detailParts/pantentDeatil.vue
  32. 7 7
      src/views/live/liveDetail.vue
  33. 3 7
      src/views/live/roadshowDetail.vue
  34. 38 113
      src/views/live/index.vue
  35. 14 12
      src/views/live/parts/channel.vue
  36. 60 0
      src/views/live/index/jbft.vue
  37. 60 0
      src/views/live/index/jnpx.vue
  38. 3 3
      src/views/live/parts/liveList.vue
  39. 40 71
      src/views/live/parts/onlineEx.vue
  40. 17 27
      src/views/live/parts/roadshow.vue
  41. 141 0
      src/views/live/index/trainInter.vue
  42. 0 472
      src/views/live/liveDetailtwo.vue
  43. 1 1
      src/views/live/liveParts/czxm.vue
  44. 1 1
      src/views/live/liveParts/xmly.vue
  45. 0 110
      src/views/live/parts/interview.vue
  46. 0 107
      src/views/live/parts/skill.vue
  47. 0 263
      src/views/market copy/exportDetail.vue
  48. 0 226
      src/views/market copy/index.vue
  49. 0 76
      src/views/market copy/newparts/achieve.vue
  50. 0 76
      src/views/market copy/newparts/business.vue
  51. 0 79
      src/views/market copy/newparts/expert.vue
  52. 0 278
      src/views/market copy/newparts/productInfo.vue
  53. 0 76
      src/views/market copy/newparts/technology.vue
  54. 0 90
      src/views/market copy/productDetail.vue
  55. 44 91
      src/views/market/detail.vue
  56. 22 10
      src/views/market/detailParts/demandDetail.vue
  57. 21 9
      src/views/market/detailParts/expertDetail.vue
  58. 137 0
      src/views/market/detail/patentDetail.vue
  59. 27 13
      src/views/market/detailParts/serveDetail.vue
  60. 25 46
      src/views/market/detailParts/tecDetail.vue
  61. 37 237
      src/views/market/index.vue
  62. 134 0
      src/views/market/index/achieve.vue
  63. 133 0
      src/views/market/index/expert.vue
  64. 118 0
      src/views/market/index/patent.vue
  65. 133 0
      src/views/market/index/service.vue
  66. 131 0
      src/views/market/index/techol.vue
  67. 0 77
      src/views/market/parts/demand.vue
  68. 0 77
      src/views/market/parts/expert.vue
  69. 0 67
      src/views/market/parts/pantent.vue
  70. 0 74
      src/views/market/parts/serve.vue
  71. 0 74
      src/views/market/parts/tec.vue
  72. 0 155
      src/views/scienceNews/detail.vue
  73. 0 143
      src/views/scienceNews/index.vue
  74. 0 89
      src/views/service/detail.vue
  75. 0 396
      src/views/service/index.vue
  76. 0 138
      src/views/service/parts/technicallist.vue
  77. 0 145
      src/views/service/parts/threeInfo.vue
  78. 0 104
      src/views/service/parts/twoInfo.vue
  79. 0 114
      src/views/service/techDetail.vue
  80. 0 100
      src/views/user copy/index.vue
  81. 0 110
      src/views/user copy/parts/clickBtn.vue
  82. 33 64
      src/views/user/detail.vue
  83. 21 13
      src/views/user/detailParts/xwzxDetail.vue
  84. 21 13
      src/views/user/detailParts/tztgDetail.vue
  85. 27 14
      src/views/service/parts/technicaldetail.vue
  86. 4 50
      src/views/user/index.vue
  87. 55 43
      src/views/user/index/news.vue
  88. 65 53
      src/views/user/index/notice.vue
  89. 65 52
      src/views/user/index/question.vue
  90. 1 0
      vue.config.js

+ 33 - 88
src/router/index.js

@@ -10,62 +10,34 @@ const routes = [
   // 直播大厅
   {
     path: '/live/index',
-    name: 'live_index',
     meta: { title: '直播大厅', isleftarrow: false },
     component: () => import('../views/live/index.vue'),
   },
-  // 直播大厅-在线展会详情
   {
-    path: '/live/liveDetail',
-    name: 'liveDetail',
-    meta: { title: '展会详情', isleftarrow: true },
-    component: () => import('../views/live/liveDetail.vue'),
-  },
-  // 直播大厅-科技频道详情
-  {
-    path: '/live/channelDetail',
-    name: 'channelDetail',
-    meta: { title: '科技频道', isleftarrow: true },
-    component: () => import('../views/live/channelDetail.vue'),
-  },
-  // 直播大厅-嘉宾访谈详情
-  {
-    path: '/live/interviewDeatil',
-    name: 'interviewDeatil',
-    meta: { title: '嘉宾访谈详情', isleftarrow: true },
-    component: () => import('../views/live/interviewDeatil.vue'),
-  },
-  // 直播大厅-项目路演详情
-  {
-    path: '/live/roadshowDetail',
-    name: 'roadshowDetail',
-    meta: { title: '项目路演详情', isleftarrow: true },
-    component: () => import('../views/live/roadshowDetail.vue'),
+    path: '/live/detail',
+    meta: { title: '直播大厅详情', isleftarrow: true },
+    component: () => import('../views/live/detail.vue'),
   },
   // 科技超市
   {
     path: '/market/index',
-    name: 'market_index',
     meta: { title: '科技超市', isleftarrow: false },
     component: () => import('../views/market/index.vue'),
   },
   // 科技超市详情
   {
     path: '/market/detail',
-    name: 'detail',
     meta: { title: '科技超市详情', isleftarrow: true },
     component: () => import('../views/market/detail.vue'),
   },
   // 个人中心
   {
     path: '/user/index',
-    name: 'user',
     meta: { title: '个人中心', isleftarrow: false },
     component: () => import('../views/user/index.vue'),
   },
   {
     path: '/user/detail',
-    name: 'user',
     meta: { title: '详情', isleftarrow: true },
     component: () => import('../views/user/detail.vue'),
   },
@@ -82,61 +54,82 @@ const routes = [
     meta: { title: '登录', isleftarrow: true },
     component: () => import('../views/login.vue'),
   },
+  // 绑定
+  {
+    path: '/bind',
+    name: 'bind',
+    meta: { title: '绑定', isleftarrow: false },
+    component: () => import('../views/bind.vue'),
+  },
+  // 展会绑定
+  {
+    path: '/dockbind',
+    name: 'dockbind',
+    meta: { title: '展会绑定', isleftarrow: false },
+    component: () => import('../views/dockbind.vue'),
+  },
+  // 错误
+  {
+    path: '/error',
+    name: 'error',
+    meta: { title: '绑定授权', isleftarrow: false },
+    component: () => import('../views/followbind.vue'),
+  },
+  //关注公众号
+  {
+    path: '/followbind',
+    name: 'followbind',
+    meta: { title: '关注公众号', isleftarrow: false },
+    component: () => import('../views/followbind.vue'),
+  },
   // 第一版个人中心
   // 个人-机构-专家
   // 个人中心
   {
     path: '/userCenter/user/index',
-    name: 'userCenter',
     meta: { title: '个人中心', isleftarrow: true },
     component: () => import('../views/userCenter/user/index.vue'),
   },
   // 我的发布
   {
     path: '/userCenter/myProduct/index',
-    name: 'userCenter',
     meta: { title: '我的发布', isleftarrow: true },
     component: () => import('../views/userCenter/myProduct/index.vue'),
   },
   // 信息发布
   {
     path: '/userCenter/myProduct/detail',
-    name: 'userCenter',
     meta: { title: '信息发布', isleftarrow: true },
     component: () => import('../views/userCenter/myProduct/detail.vue'),
   },
   // 事项管理
   {
     path: '/userCenter/matter/index',
-    name: 'userCenter',
     meta: { title: '事项管理', isleftarrow: true },
     component: () => import('../views/userCenter/matter/index.vue'),
   },
   // 事项操作
   {
     path: '/userCenter/matter/detail',
-    name: 'userCenter',
     meta: { title: '事项管理', isleftarrow: true },
     component: () => import('../views/userCenter/matter/detail.vue'),
   },
   // 展会管理
   {
     path: '/userCenter/dock/index',
-    name: 'userCenter',
     meta: { title: '展会管理', isleftarrow: true },
     component: () => import('../views/userCenter/dock/index.vue'),
   },
   // 申请参展
   {
     path: '/userCenter/dock/detail',
-    name: 'userCenter',
+
     meta: { title: '申请参展', isleftarrow: true },
     component: () => import('../views/userCenter/dock/detail.vue'),
   },
   // 修改密码
   {
     path: '/updatePwd/index',
-    name: 'userCenter',
     meta: { title: '修改密码', isleftarrow: true },
     component: () => import('../views/updatePwd/index.vue'),
   },
@@ -144,56 +137,48 @@ const routes = [
   // 用户管理
   {
     path: '/adminCenter/user/index',
-    name: 'adminCenter',
     meta: { title: '用户管理', isleftarrow: true },
     component: () => import('../views/adminCenter/user/index.vue'),
   },
   // 用户审核
   {
     path: '/adminCenter/user/detail',
-    name: 'adminCenter',
     meta: { title: '用户审核', isleftarrow: true },
     component: () => import('../views/adminCenter/user/detail.vue'),
   },
   // 展会管理
   {
     path: '/adminCenter/duijiehui/index',
-    name: 'adminCenter',
     meta: { title: '展会管理', isleftarrow: true },
     component: () => import('../views/adminCenter/duijiehui/index.vue'),
   },
   // 创建展会
   {
     path: '/adminCenter/duijiehui/add',
-    name: 'adminCenter',
     meta: { title: '创建展会', isleftarrow: true },
     component: () => import('../views/adminCenter/duijiehui/add.vue'),
   },
   // 审核管理
   {
     path: '/adminCenter/enterpriseProduct/index',
-    name: 'adminCenter',
     meta: { title: '审核管理', isleftarrow: true },
     component: () => import('../views/adminCenter/enterpriseProduct/index.vue'),
   },
   // 产品审核
   {
     path: '/adminCenter/enterpriseProduct/detail',
-    name: 'adminCenter',
     meta: { title: '产品审核', isleftarrow: true },
     component: () => import('../views/adminCenter/enterpriseProduct/detail.vue'),
   },
   // 交易审核
   {
     path: '/adminCenter/transaction/index',
-    name: 'adminCenter',
     meta: { title: '交易审核', isleftarrow: true },
     component: () => import('../views/adminCenter/transaction/index.vue'),
   },
   // 审核详情
   {
     path: '/adminCenter/transaction/detail',
-    name: 'adminCenter',
     meta: { title: '审核详情', isleftarrow: true },
     component: () => import('../views/adminCenter/transaction/detail.vue'),
   },
@@ -202,165 +187,140 @@ const routes = [
   // 在线展会
   {
     path: '/viewTwo/live/index',
-    name: 'live',
     meta: { title: '在线展会', isleftarrow: true },
     component: () => import('../viewTwo/live/index.vue'),
   },
   // 在线展会详情
   {
     path: '/viewTwo/live/detail',
-    name: 'live',
     meta: { title: '在线展会详情', isleftarrow: true },
     component: () => import('../viewTwo/live/detail.vue'),
   },
   // 人才对接详情
   {
     path: '/viewTwo/live/personalDetail',
-    name: 'live',
     meta: { title: '人才对接详情', isleftarrow: true },
     component: () => import('../viewTwo/live/personalDetail.vue'),
   },
   // 专家培训详情
   {
     path: '/viewTwo/live/exportsDetail',
-    name: 'live',
     meta: { title: '专家培训详情', isleftarrow: true },
     component: () => import('../viewTwo/live/exportsDetail.vue'),
   },
   // 科技频道
   {
     path: '/viewTwo/channel/index',
-    name: 'channel',
     meta: { title: '科技频道', isleftarrow: false },
     component: () => import('../viewTwo/channel/index.vue'),
   },
   {
     path: '/viewTwo/channel/detail',
-    name: 'detail',
     meta: { title: '科技频道详情', isleftarrow: true },
     component: () => import('../viewTwo/channel/detail.vue'),
   },
   // 培训访谈
   {
     path: '/viewTwo/interview/index',
-    name: 'interview',
     meta: { title: '培训访谈', isleftarrow: false },
     component: () => import('../viewTwo/interview/index.vue'),
   },
   {
     path: '/viewTwo/interview/detail',
-    name: 'detail',
     meta: { title: '培训访谈详情', isleftarrow: true },
     component: () => import('../viewTwo/interview/detail.vue'),
   },
   // 项目路演
   {
     path: '/viewTwo/roadshow/index',
-    name: 'roadshow',
     meta: { title: '项目路演', isleftarrow: false },
     component: () => import('../viewTwo/roadshow/index.vue'),
   },
   {
     path: '/viewTwo/roadshow/detail',
-    name: 'roadshow',
     meta: { title: '项目路演详情', isleftarrow: true },
     component: () => import('../viewTwo/roadshow/detail.vue'),
   },
   // 技术成果
   {
     path: '/viewTwo/achieve/index',
-    name: 'achieve',
     meta: { title: '技术成果', isleftarrow: false },
     component: () => import('../viewTwo/achieve/index.vue'),
   },
   {
     path: '/viewTwo/achieve/detail',
-    name: 'achieve',
     meta: { title: '技术成果详情', isleftarrow: true },
     component: () => import('../viewTwo/achieve/detail.vue'),
   },
   // e专利
   {
     path: '/viewTwo/patent/index',
-    name: 'patent',
     meta: { title: 'e专利', isleftarrow: false },
     component: () => import('../viewTwo/patent/index.vue'),
   },
   {
     path: '/viewTwo/patent/detail',
-    name: 'patent',
     meta: { title: 'e专利详情', isleftarrow: true },
     component: () => import('../viewTwo/patent/detail.vue'),
   },
   // 科技需求
   {
     path: '/viewTwo/techol/index',
-    name: 'techol',
     meta: { title: '科技需求', isleftarrow: false },
     component: () => import('../viewTwo/techol/index.vue'),
   },
   {
     path: '/viewTwo/techol/detail',
-    name: 'techol',
     meta: { title: '科技需求详情', isleftarrow: true },
     component: () => import('../viewTwo/techol/detail.vue'),
   },
   // 专家智库
   {
     path: '/viewTwo/expert/index',
-    name: 'expert',
     meta: { title: '专家智库', isleftarrow: false },
     component: () => import('../viewTwo/expert/index.vue'),
   },
   {
     path: '/viewTwo/expert/detail',
-    name: 'expert',
     meta: { title: '专家智库详情', isleftarrow: true },
     component: () => import('../viewTwo/expert/detail.vue'),
   },
   // 在线服务
   {
     path: '/viewTwo/service/index',
-    name: 'service',
     meta: { title: '在线服务', isleftarrow: false },
     component: () => import('../viewTwo/service/index.vue'),
   },
   {
     path: '/viewTwo/service/detail',
-    name: 'service',
     meta: { title: '在线服务', isleftarrow: true },
     component: () => import('../viewTwo/service/detail.vue'),
   },
   // 调查问卷
   {
     path: '/viewTwo/question/index',
-    name: 'question',
     meta: { title: '调查问卷', isleftarrow: false },
     component: () => import('../viewTwo/question/index.vue'),
   },
   // 通知通告
   {
     path: '/viewTwo/notice/index',
-    name: 'notice',
     meta: { title: '通知通告', isleftarrow: false },
     component: () => import('../viewTwo/notice/index.vue'),
   },
   {
     path: '/viewTwo/notice/detail',
-    name: 'notice',
     meta: { title: '通知通告详情', isleftarrow: true },
     component: () => import('../viewTwo/notice/detail.vue'),
   },
   // 新闻资讯
   {
     path: '/viewTwo/news/index',
-    name: 'news',
     meta: { title: '新闻资讯', isleftarrow: false },
     component: () => import('../viewTwo/news/index.vue'),
   },
   {
     path: '/viewTwo/news/detail',
-    name: 'news',
     meta: { title: '新闻资讯详情', isleftarrow: true },
     component: () => import('../viewTwo/news/detail.vue'),
   },
@@ -382,56 +342,49 @@ const routes = [
   // 个人中心
   {
     path: '/viewTwo/userCenter/user/index',
-    name: 'userCenter',
+    name: 'user_index',
     meta: { title: '个人中心', isleftarrow: true },
     component: () => import('../viewTwo/userCenter/user/index.vue'),
   },
   // 我的发布
   {
     path: '/viewTwo/userCenter/myProduct/index',
-    name: 'userCenter',
     meta: { title: '我的发布', isleftarrow: true },
     component: () => import('../viewTwo/userCenter/myProduct/index.vue'),
   },
   // 信息发布
   {
     path: '/viewTwo/userCenter/myProduct/detail',
-    name: 'userCenter',
     meta: { title: '信息发布', isleftarrow: true },
     component: () => import('../viewTwo/userCenter/myProduct/detail.vue'),
   },
   // 事项管理
   {
     path: '/viewTwo/userCenter/matter/index',
-    name: 'userCenter',
     meta: { title: '事项管理', isleftarrow: true },
     component: () => import('../viewTwo/userCenter/matter/index.vue'),
   },
   // 事项操作
   {
     path: '/viewTwo/userCenter/matter/detail',
-    name: 'userCenter',
     meta: { title: '事项管理', isleftarrow: true },
     component: () => import('../viewTwo/userCenter/matter/detail.vue'),
   },
   // 展会管理
   {
     path: '/viewTwo/userCenter/dock/index',
-    name: 'userCenter',
     meta: { title: '展会管理', isleftarrow: true },
     component: () => import('../viewTwo/userCenter/dock/index.vue'),
   },
   // 申请参展
   {
     path: '/viewTwo/userCenter/dock/detail',
-    name: 'userCenter',
     meta: { title: '申请参展', isleftarrow: true },
     component: () => import('../viewTwo/userCenter/dock/detail.vue'),
   },
   // 修改密码
   {
     path: '/viewTwo/updatePwd/index',
-    name: 'userCenter',
     meta: { title: '修改密码', isleftarrow: true },
     component: () => import('../viewTwo/updatePwd/index.vue'),
   },
@@ -439,56 +392,48 @@ const routes = [
   // 用户管理
   {
     path: '/viewTwo/adminCenter/user/index',
-    name: 'adminCenter',
     meta: { title: '用户管理', isleftarrow: true },
     component: () => import('../viewTwo/adminCenter/user/index.vue'),
   },
   // 用户审核
   {
     path: '/viewTwo/adminCenter/user/detail',
-    name: 'adminCenter',
     meta: { title: '用户审核', isleftarrow: true },
     component: () => import('../viewTwo/adminCenter/user/detail.vue'),
   },
   // 展会管理
   {
     path: '/viewTwo/adminCenter/duijiehui/index',
-    name: 'adminCenter',
     meta: { title: '展会管理', isleftarrow: true },
     component: () => import('../viewTwo/adminCenter/duijiehui/index.vue'),
   },
   // 创建展会
   {
     path: '/viewTwo/adminCenter/duijiehui/add',
-    name: 'adminCenter',
     meta: { title: '创建展会', isleftarrow: true },
     component: () => import('../viewTwo/adminCenter/duijiehui/add.vue'),
   },
   // 审核管理
   {
     path: '/viewTwo/adminCenter/enterpriseProduct/index',
-    name: 'adminCenter',
     meta: { title: '审核管理', isleftarrow: true },
     component: () => import('../viewTwo/adminCenter/enterpriseProduct/index.vue'),
   },
   // 产品审核
   {
     path: '/viewTwo/adminCenter/enterpriseProduct/detail',
-    name: 'adminCenter',
     meta: { title: '产品审核', isleftarrow: true },
     component: () => import('../viewTwo/adminCenter/enterpriseProduct/detail.vue'),
   },
   // 交易审核
   {
     path: '/viewTwo/adminCenter/transaction/index',
-    name: 'adminCenter',
     meta: { title: '交易审核', isleftarrow: true },
     component: () => import('../viewTwo/adminCenter/transaction/index.vue'),
   },
   // 审核详情
   {
     path: '/viewTwo/adminCenter/transaction/detail',
-    name: 'adminCenter',
     meta: { title: '审核详情', isleftarrow: true },
     component: () => import('../viewTwo/adminCenter/transaction/detail.vue'),
   },

+ 4 - 0
src/store/index.js

@@ -35,6 +35,8 @@ import transaction from './market/transaction';
 import productpact from './market/productpact';
 // 登录用户表
 import authUser from './user/auth-user';
+// e专利
+import patent from './market/patent';
 
 // 公共
 import * as ustate from '@/store/common/state';
@@ -83,5 +85,7 @@ export default new Vuex.Store({
     channel,
     channelVideo,
     scienceNews,
+    // e专利
+    patent,
   },
 });

+ 43 - 0
src/store/market/patent.js

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

+ 43 - 0
src/store/market/util.js

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

+ 0 - 251
src/views/channel/detail.vue

@@ -1,251 +0,0 @@
-<template>
-  <div id="detail">
-    <el-row>
-      <el-col :span="24" class="style">
-        <el-col :span="24" class="top">
-          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow" @onClickLeft="back"> </NavBar>
-        </el-col>
-        <el-col :span="24" class="main">
-          <el-col :span="24" class="video">
-            <video
-              autoplay="autoplay"
-              controls="controls"
-              preload="meta"
-              x-webkit-airplay="true"
-              webkit-playsinline="true"
-              playsinline="true"
-              x5-video-player-type="h5"
-              x5-video-player-fullscreen="true"
-              controlsList="nodownload"
-              :src="videoUrl"
-              loop="loop"
-            >
-              <source src="movie.ogg" type="video/ogg" />
-              <source src="movie.mp4" type="video/mp4" />
-            </video>
-          </el-col>
-          <el-col :span="24" class="text">
-            <van-collapse v-model="activeNames">
-              <van-collapse-item name="1">
-                <template #title>
-                  <div class="title">{{ form.title }}</div>
-                </template>
-                <el-col :span="24" class="con">
-                  <p><span>更新时间:</span>{{ form.create_time }}</p>
-                  <p><span>来源:</span>{{ form.orgin }}</p>
-                  <p><span>简介:</span>{{ form.desc }}</p>
-                </el-col>
-              </van-collapse-item>
-              <van-collapse-item name="2">
-                <template #title>
-                  <div class="title">视频列表</div>
-                </template>
-                <el-col :span="24" class="videodata">
-                  <el-col :span="12" class="videolist" v-for="(item, index) in videodata" :key="index" @click.native="changevideo(item, index)">
-                    <p :style="`color:${menuIndex == index ? menuColor : ''}`">{{ item.title }}</p>
-                    <p :style="`color:${menuIndex == index ? menuColor : ''}`">{{ item.start_time }}</p>
-                  </el-col>
-                </el-col>
-              </van-collapse-item>
-            </van-collapse>
-          </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: channel } = createNamespacedHelpers('channel');
-const { mapActions: channelVideo } = createNamespacedHelpers('channelVideo');
-var moment = require('moment');
-const _ = require('lodash');
-export default {
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  name: 'detail',
-  props: {},
-  components: {
-    NavBar,
-  },
-  data: function() {
-    return {
-      // 头部标题
-      title: '',
-      // meta为true
-      isleftarrow: '',
-      // 返回
-      navShow: true,
-      activeNames: ['1', '2'],
-      form: {},
-      // 视频列表
-      videodata: [],
-      // 视频路径
-      videoUrl: '',
-      // 选集参数
-      menuIndex: '',
-      menuColor: 'rgb(64,158,255)',
-    };
-  },
-  async created() {
-    await this.search();
-  },
-  methods: {
-    ...channel(['query', 'fetch']),
-    ...channelVideo({ videoquery: 'query' }),
-    async search() {
-      let res = await this.fetch(this.id);
-      if (this.$checkRes(res)) {
-        this.$set(this, `form`, res.data);
-      }
-      res = await this.videoquery({ user_id: this.id });
-      if (this.$checkRes(res)) {
-        this.$set(this, `videodata`, _.orderBy(res.data, ['start_time'], ['asc']));
-      }
-    },
-    changevideo(item, index) {
-      if (item) {
-        console.log(item.file_path);
-        this.menuIndex = index;
-        this.$set(this, `videoUrl`, item.file_path);
-      }
-    },
-    searchvideo() {
-      let data = this.videodata;
-      let adate = moment().format('YYYY-MM-DD HH:mm');
-      // let adate = '2020-11-13 10:16';
-      let arr = data.find(i => i.start_time <= adate && i.end_time >= adate);
-      let index = data.findIndex(i => i.start_time <= adate && i.end_time >= adate);
-      if (arr && index) {
-        this.changevideo(arr, index);
-      } else {
-        this.changevideo(data[0], '0');
-      }
-    },
-    back() {
-      this.$router.push({ path: '/channel/index' });
-    },
-  },
-  watch: {
-    videodata: {
-      immediate: true,
-      deep: true,
-      handler(val) {
-        if (val) {
-          this.searchvideo();
-        }
-      },
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-    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>
-.active {
-  color: #ff0000;
-}
-.style {
-  width: 100%;
-  min-height: 667px;
-  position: relative;
-  background-color: #f9fafc;
-}
-.top {
-  height: 46px;
-  overflow: hidden;
-}
-.main {
-  .video {
-    video {
-      width: 100%;
-      height: 200px;
-      background-color: #000;
-    }
-    video::-webkit-media-controls-mute-button {
-      display: none !important;
-    }
-  }
-  .text {
-    padding: 5px 10px;
-    .title {
-      font-size: 16px;
-      font-weight: bold;
-    }
-    .con {
-      p {
-        span {
-          font-weight: bold;
-          padding: 10px 0 0 0;
-        }
-      }
-    }
-    .videodata {
-      margin: 5px 0 0 0;
-      .videolist {
-        text-align: center;
-        background: #f1f1f1;
-        margin: 0 10px 10px 0;
-        border-radius: 10px;
-        height: 100px;
-        width: 48%;
-        padding: 15px 0;
-        p:nth-child(1) {
-          font-size: 16px;
-          font-weight: bold;
-          padding: 0 10px;
-          overflow: hidden;
-          text-overflow: ellipsis;
-          -webkit-line-clamp: 2;
-          word-break: break-all;
-          display: -webkit-box;
-          -webkit-box-orient: vertical;
-        }
-        p:nth-child(2) {
-          font-size: 14px;
-          font-weight: bold;
-        }
-      }
-      .videolist:nth-child(2n) {
-        margin: 0 0 10px 0;
-      }
-    }
-  }
-}
-/deep/.van-cell {
-  background-color: transparent;
-  padding: 5px 10px;
-}
-/deep/.van-collapse-item__content {
-  background-color: transparent;
-  color: black;
-  padding: 0 10px;
-}
-/deep/.van-swipe__indicators {
-  display: none;
-}
-/deep/.van-collapse-item {
-  border-bottom: 1px solid #f1f1f1;
-}
-/deep/.van-cell::after {
-  border: 0;
-}
-/deep/[class*='van-hairline']::after {
-  border: 0;
-}
-</style>

+ 0 - 207
src/views/channel/index.vue

@@ -1,207 +0,0 @@
-<template>
-  <div id="index">
-    <el-row>
-      <el-col :span="24" class="style">
-        <el-col :span="24" class="top">
-          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
-        </el-col>
-        <el-col :span="24" class="down">
-          <el-col :span="24" class="search">
-            <el-col :span="6" class="type">
-              <el-select v-model="type" placeholder="请选择" clearable @change="typeChange">
-                <el-option v-for="(item, index) in typelist" :key="index" :label="item.name" :value="item.id"> </el-option>
-              </el-select>
-            </el-col>
-            <el-col :span="18" class="input">
-              <van-search v-model="name" @search="onSearch" placeholder="请输入信息标题" />
-            </el-col>
-          </el-col>
-          <el-col :span="24" class="data">
-            <van-tabs v-model="active">
-              <van-tab title="创新成果">
-                <list :channellist="onelist"></list>
-              </van-tab>
-              <van-tab title="科技普及">
-                <list :channellist="twolist"></list>
-              </van-tab>
-              <van-tab title="专家讲堂">
-                <list :channellist="threelist"></list>
-              </van-tab>
-            </van-tabs>
-          </el-col>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-import NavBar from '@/layout/common/topInfo.vue';
-import list from './parts/list.vue';
-const { mapActions: channel } = createNamespacedHelpers('channel');
-const { mapActions: markettype } = createNamespacedHelpers('markettype');
-export default {
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  name: 'index',
-  props: {},
-  components: {
-    NavBar,
-    list,
-  },
-  data: function() {
-    return {
-      // 头部标题
-      title: '',
-      // meta为true
-      isleftarrow: '',
-      // 返回
-      navShow: true,
-      active: 0,
-      onelist: [],
-      twolist: [],
-      threelist: [],
-      // 类型
-      typelist: [],
-      name: '',
-      type: '',
-    };
-  },
-  async created() {
-    await this.searchtype();
-    await this.search();
-  },
-  methods: {
-    ...markettype({ markettypeList: 'query' }),
-    ...channel(['query', 'delete', 'update', 'create']),
-    async search({ ...info } = {}) {
-      let type = this.typelist;
-      let one = type.find(f => f.code == '040');
-      let res = await this.query({ type: one.id, ...info });
-      if (this.$checkRes(res)) {
-        this.$set(this, `onelist`, res.data);
-      }
-      let two = type.find(f => f.code == '041');
-      res = await this.query({ type: two.id, ...info });
-      if (this.$checkRes(res)) {
-        this.$set(this, `twolist`, res.data);
-      }
-      let three = type.find(f => f.code == '042');
-      res = await this.query({ type: three.id, ...info });
-      if (this.$checkRes(res)) {
-        this.$set(this, `threelist`, res.data);
-      }
-    },
-    // 输入框是搜索
-    async searchList({ ...info } = {}) {
-      info.type = this.type;
-      if (this.name) {
-        info.title = this.name;
-        let res = await this.query({ ...info });
-        if (this.$checkRes(res)) {
-          let index = this.typelist.findIndex(i => i.id == this.type);
-          if (index == 0) this.$set(this, `onelist`, res.data);
-          else if (index == 1) this.$set(this, `twolist`, res.data);
-          else if (index == 2) this.$set(this, `threelist`, res.data);
-        }
-      } else {
-        this.search();
-      }
-    },
-    // 选择类型
-    typeChange(value) {
-      if (value) {
-        this.active = '';
-        this.$set(this, `type`, value);
-        let index = this.typelist.findIndex(i => i.id == value);
-        if (index) {
-          this.$set(this, `active`, index);
-        }
-      }
-    },
-    // 输入框查询
-    onSearch(data) {
-      this.$set(this, `name`, data);
-      if (this.type) {
-        this.searchList();
-      } else {
-        this.$notify({
-          message: '请选择频道类型',
-          type: 'danger',
-        });
-      }
-    },
-    // 查询字典表
-    async searchtype() {
-      // 类型
-      let res = await this.markettypeList({ category: '04' });
-      if (this.$checkRes(res)) {
-        this.$set(this, `typelist`, res.data);
-      }
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-  },
-  mounted() {
-    this.title = this.$route.meta.title;
-    this.isleftarrow = this.$route.meta.isleftarrow;
-  },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  watch: {},
-};
-</script>
-
-<style lang="less" scoped>
-.active {
-  color: #409eff;
-}
-.style {
-  width: 100%;
-  height: 100%;
-  position: relative;
-  background-color: #f9fafc;
-  .down {
-    position: relative;
-    .search {
-      position: fixed;
-      width: 100%;
-      z-index: 999;
-      border-bottom: 1px solid #ccc;
-      .type {
-        /deep/.el-input__inner {
-          border: none;
-          padding: 0;
-          height: 30px;
-          line-height: 30px;
-        }
-        .el-select {
-          padding: 10px 0px 0px 5px;
-        }
-        /deep/.el-input__icon {
-          line-height: 30px;
-        }
-      }
-      .input {
-        .van-search {
-          padding: 10px 12px 10px 0;
-        }
-      }
-    }
-    .data {
-      position: absolute;
-      width: 100%;
-      top: 54px;
-      background: #f9fafc;
-    }
-  }
-}
-.top {
-  height: 46px;
-  overflow: hidden;
-}
-</style>

+ 0 - 101
src/views/channel/parts/list.vue

@@ -1,101 +0,0 @@
-<template>
-  <div id="list">
-    <el-row>
-      <el-col :span="24" class="con">
-        <el-col :span="24" class="list" v-for="(item, index) in channellist" :key="index" @click.native="show(item)">
-          <el-col :span="11" class="video">
-            <el-image :src="noimage"> </el-image>
-          </el-col>
-          <el-col :span="13" class="text">
-            <p class="title textOver">
-              <span style="color:#ff0000">[{{ item.room_id }}]</span>{{ item.title }}
-            </p>
-            <p>
-              信息类型:<span>{{ item.column_name }}</span>
-            </p>
-            <p class="desc">{{ item.desc }}</p>
-            <p class="time textOver">{{ item.create_time }}</p>
-          </el-col>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-export default {
-  name: 'list',
-  props: {
-    channellist: { type: Array },
-  },
-  components: {},
-  data: function() {
-    return {
-      noimage: require('@/assets/kjzx.jpg'),
-    };
-  },
-  created() {},
-  methods: {
-    show(data) {
-      this.$router.push({ path: '/channel/detail', query: { id: data.id } });
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-  },
-  watch: {},
-};
-</script>
-
-<style lang="less" scoped>
-.con {
-  padding: 10px;
-  .list {
-    padding: 10px;
-    background-color: #fff;
-    border-radius: 5px;
-    margin: 0 0 10px 0;
-    .video {
-      height: 100px;
-      overflow: hidden;
-      .el-image {
-        width: 100%;
-        height: 100%;
-        border-radius: 10px;
-        /deep/.image-slot {
-          width: 100%;
-          height: 100%;
-        }
-      }
-    }
-    .text {
-      height: 100px;
-      overflow: hidden;
-      position: relative;
-      padding: 0 0 0 10px;
-      .title {
-        font-size: 16px;
-        font-weight: bold;
-      }
-      .desc {
-        overflow: hidden;
-        text-overflow: ellipsis;
-        display: -webkit-box;
-        -webkit-line-clamp: 3;
-        -webkit-box-orient: vertical;
-        padding: 3px 0;
-        font-size: 12px;
-        color: #666;
-      }
-      .time {
-        position: absolute;
-        bottom: 0px;
-        width: 95%;
-        font-size: 12px;
-        color: #666;
-      }
-    }
-  }
-}
-</style>

+ 0 - 147
src/views/journ/detail.vue

@@ -1,147 +0,0 @@
-<template>
-  <div id="detail">
-    <el-row>
-      <el-col :span="24" class="detail">
-        <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">
-          <el-col :span="24" class="title">{{ info.title }}</el-col>
-          <el-col :span="24" class="other">
-            <span class="textOver">信息来源:{{ info.orgin || '暂无' }}</span>
-            <span class="textOver">发布时间:{{ info.publish_time || '暂无' }}</span>
-          </el-col>
-          <el-col :span="24" v-if="info.picture != null || undefined" class="img">
-            <van-image :src="info.picture">
-              <div slot="error" class="image-slot">
-                <i class="el-icon-picture-outline"></i>
-              </div>
-            </van-image>
-          </el-col>
-          <el-col :span="24" class="con" v-html="info.content"> </el-col>
-          <el-col :span="24" class="four" v-if="info.filepath">
-            <h4>附件:</h4>
-            <el-link :href="info.filepath" :underline="false">{{ info.filepathname || '附件下载' }}</el-link>
-          </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: journnews } = createNamespacedHelpers('journnews');
-export default {
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  name: 'detail',
-  props: {},
-  components: {
-    NavBar,
-  },
-  data: function() {
-    return {
-      // 头部标题
-      title: '',
-      // meta为true
-      isleftarrow: '',
-      // 返回
-      navShow: true,
-      //详情
-      info: {},
-    };
-  },
-  created() {
-    this.search();
-  },
-  methods: {
-    ...journnews({ newsquery: 'query', newsfetch: 'fetch' }),
-    //查询详情
-    async search() {
-      const res = await this.newsfetch(this.id);
-      if (this.$checkRes(res)) {
-        this.$set(this, `info`, res.data);
-      }
-    },
-    // 返回
-    onClickLeft() {
-      this.$router.push({ path: '/journ/index' });
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-    id() {
-      return this.$route.query.id;
-    },
-  },
-  mounted() {
-    this.title = this.$route.meta.title;
-    this.isleftarrow = this.$route.meta.isleftarrow;
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.detail {
-  width: 100%;
-  min-height: 667px;
-  position: relative;
-  background-color: #f9fafc;
-}
-.top {
-  height: 46px;
-  overflow: hidden;
-}
-.main {
-  // min-height: 570px;
-  // margin: 0 0 50px 0;
-  padding: 10px;
-  .title {
-    text-align: center;
-    color: #044b79;
-    font-size: 18px;
-    font-weight: bolder;
-  }
-  .other {
-    font-size: 16px;
-    color: #666;
-    padding: 20px 0;
-    border-bottom: 1px dashed #ccc;
-    span {
-      display: inline-block;
-      width: 50%;
-    }
-  }
-  .img {
-    text-align: center;
-    margin: 0 0 15px 0;
-    .el-image {
-      width: 60%;
-    }
-  }
-  .con {
-    margin-top: 20px;
-  }
-}
-/deep/table {
-  width: 100%;
-}
-/deep/.con p img {
-  width: 100%;
-  height: 300px;
-  margin: 5px 0px;
-  display: block;
-}
-/deep/.con div img {
-  width: 100%;
-  height: 260px;
-  display: block;
-}
-/deep/.con p {
-  font-size: 14px;
-  color: #444;
-}
-</style>

+ 0 - 237
src/views/journ/index.vue

@@ -1,237 +0,0 @@
-<template>
-  <div id="index">
-    <el-row>
-      <el-col :span="24" class="style">
-        <el-col :span="24" class="top">
-          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
-        </el-col>
-        <el-col :span="24" class="down">
-          <el-col :span="24" class="search">
-            <el-col :span="6" class="type">
-              <el-select v-model="type" placeholder="请选择" clearable @change="typeChange">
-                <el-option v-for="(item, index) in column" :key="index" :label="item.title" :value="item.id"> </el-option>
-              </el-select>
-            </el-col>
-            <el-col :span="18" class="input">
-              <van-search v-model="name" @search="onSearch" placeholder="请输入信息标题" />
-            </el-col>
-          </el-col>
-          <el-col :span="24" class="data">
-            <van-tabs v-model="active">
-              <van-tab title="科技资讯">
-                <kjzxList :list="kjzxLists" @detailBtn="detailBtn"></kjzxList>
-              </van-tab>
-              <van-tab title="工作动态">
-                <kjzxList :list="gzdtLists" @detailBtn="detailBtn"></kjzxList>
-              </van-tab>
-              <van-tab title="通知通告">
-                <kjzxList :list="tztgLists" @detailBtn="detailBtn"></kjzxList>
-              </van-tab>
-              <van-tab title="技术前沿">
-                <kjzxList :list="jsqyLists" @detailBtn="detailBtn"></kjzxList>
-              </van-tab>
-            </van-tabs>
-          </el-col>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: journcolumn } = createNamespacedHelpers('journcolumn');
-const { mapActions: journnews } = createNamespacedHelpers('journnews');
-import NavBar from '@/layout/common/topInfo.vue';
-import footInfo from '@/layout/common/footInfo.vue';
-import kjzxList from './parts/kjzxList.vue';
-export default {
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  name: 'index',
-  props: {},
-  components: {
-    NavBar,
-    // footInfo,
-    kjzxList,
-  },
-  data: function() {
-    return {
-      // 头部标题
-      title: '',
-      // meta为true
-      isleftarrow: '',
-      // 返回
-      navShow: true,
-      //菜单显示
-      active: 0,
-      //科技资讯
-      kjzxLists: [],
-      //科技动态
-      gzdtLists: [],
-      //通知通告
-      tztgLists: [],
-      //技术前沿
-      jsqyLists: [],
-      //栏目
-      column: [],
-      // 类型
-      name: '',
-      type: '',
-    };
-  },
-  async created() {
-    await this.searchColumn();
-    await this.searchList();
-  },
-  methods: {
-    ...journcolumn({ columnquery: 'query' }),
-    ...journnews({ newsquery: 'query' }),
-    async searchColumn() {
-      const res = await this.columnquery();
-      if (this.$checkRes(res)) {
-        console.log(_.orderBy(res.data, ['meta.createdAt'], ['asc']));
-        this.$set(this, `column`, _.orderBy(res.data, ['meta.createdAt'], ['asc']));
-      }
-    },
-    async searchList() {
-      let col = this.column.find(i => i.site == 'kjzx');
-      if (col) {
-        const res = await this.newsquery({ column_id: col.id });
-        if (this.$checkRes(res)) {
-          this.$set(this, `kjzxLists`, _.orderBy(res.data, ['publish_time'], ['desc']));
-        }
-      }
-      let col2 = this.column.find(i => i.site == 'gzdt');
-      if (col2) {
-        const res = await this.newsquery({ column_id: col2.id });
-        if (this.$checkRes(res)) {
-          this.$set(this, `gzdtLists`, _.orderBy(res.data, ['publish_time'], ['desc']));
-        }
-      }
-      let col3 = this.column.find(i => i.site == 'tztg');
-      if (col3) {
-        const res = await this.newsquery({ column_id: col3.id });
-        if (this.$checkRes(res)) {
-          this.$set(this, `tztgLists`, _.orderBy(res.data, ['publish_time'], ['desc']));
-        }
-      }
-      let col4 = this.column.find(i => i.site == 'jsqy');
-      if (col4) {
-        const res = await this.newsquery({ column_id: col4.id });
-        if (this.$checkRes(res)) {
-          this.$set(this, `jsqyLists`, _.orderBy(res.data, ['publish_time'], ['desc']));
-        }
-      }
-    },
-    async search({ ...info } = {}) {
-      info.column_id = this.type;
-      if (this.name) {
-        info.title = this.name;
-        const res = await this.newsquery({ ...info });
-        if (this.$checkRes(res)) {
-          let col = this.column.find(i => i.id == this.type);
-          if (col.site == 'kjzx') this.$set(this, `kjzxLists`, _.orderBy(res.data, ['publish_time'], ['desc']));
-          else if (col.site == 'gzdt') this.$set(this, `gzdtLists`, _.orderBy(res.data, ['publish_time'], ['desc']));
-          else if (col.site == 'tztg') this.$set(this, `tztgLists`, _.orderBy(res.data, ['publish_time'], ['desc']));
-          else if (col.site == 'jsqy') this.$set(this, `jsqyLists`, _.orderBy(res.data, ['publish_time'], ['desc']));
-        }
-      } else {
-        this.searchList();
-      }
-    },
-    // 选择类型
-    typeChange(value) {
-      if (value) {
-        this.active = '';
-        this.$set(this, `type`, value);
-        let index = this.column.findIndex(i => i.id == value);
-        if (index) {
-          this.$set(this, `active`, index);
-        }
-      }
-    },
-    // 输入框查询
-    onSearch(data) {
-      this.$set(this, `name`, data);
-      if (this.type) {
-        this.search();
-      } else {
-        this.$notify({
-          message: '请选择信息类型',
-          type: 'danger',
-        });
-      }
-    },
-    detailBtn(data) {
-      this.$router.push({ path: '/journ/detail', query: { id: data.id } });
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-  },
-  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%;
-  height: 100%;
-  position: relative;
-  background-color: #f9fafc;
-  .down {
-    position: relative;
-    .search {
-      position: fixed;
-      width: 100%;
-      z-index: 999;
-      border-bottom: 1px solid #ccc;
-      background-color: #fff;
-      .type {
-        /deep/.el-input__inner {
-          border: none;
-          padding: 0;
-          height: 30px;
-          line-height: 30px;
-        }
-        .el-select {
-          padding: 10px 0px 0px 5px;
-        }
-        /deep/.el-input__icon {
-          line-height: 30px;
-        }
-      }
-      .input {
-        .van-search {
-          padding: 10px 12px 10px 0;
-        }
-      }
-    }
-    .data {
-      position: absolute;
-      width: 100%;
-      top: 54px;
-      background: #f9fafc;
-    }
-  }
-}
-.top {
-  height: 46px;
-  overflow: hidden;
-}
-.foot {
-  position: absolute;
-  bottom: 0;
-}
-/deep/.van-tabs__line {
-  width: 60px;
-}
-</style>

+ 0 - 72
src/views/journ/parts/kjzxList.vue

@@ -1,72 +0,0 @@
-<template>
-  <div id="kjzxList">
-    <el-row>
-      <el-col :span="24" class="kjzx">
-        <el-col :span="24" class="list" v-for="(item, index) in list" :key="index" @click.native="detailBtn(item)">
-          <el-col :span="24" class="name textOver">
-            {{ item.title }}
-          </el-col>
-          <el-col :span="24" class="other">
-            <span class="textOver">信息来源:{{ item.orgin || '暂无' }}</span>
-            <span class="textOver">发布时间:{{ item.publish_time || '暂无' }}</span>
-          </el-col>
-        </el-col>
-      </el-col>
-      <el-backtop :bottom="50" :right="10"> </el-backtop>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-export default {
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  name: 'kjzxList',
-  props: {
-    list: { type: Array },
-  },
-  components: {},
-  data: function() {
-    return {};
-  },
-  created() {},
-  methods: {
-    detailBtn(data) {
-      this.$emit('detailBtn', data);
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.kjzx {
-  padding: 0 10px;
-  .list {
-    border-bottom: 1px dashed #ccc;
-    padding: 10px 0;
-    .name {
-      font-size: 18px;
-      font-weight: bold;
-    }
-    .company {
-      font-size: 16px;
-      color: #666;
-      padding: 5px 0 0 0;
-    }
-    .other {
-      font-size: 16px;
-      color: #666;
-      padding: 5px 0 0 0;
-      span {
-        display: inline-block;
-        width: 50%;
-      }
-    }
-  }
-}
-</style>

+ 0 - 551
src/views/live copy/detail(第一版).vue

@@ -1,551 +0,0 @@
-<template>
-  <div id="roomDetail">
-    <el-row>
-      <el-col :span="24" class="main">
-        <el-col :span="24" class="video">
-          <el-col :span="24" class="top">
-            <el-col :span="24" class="downVideo" v-if="videoData != ''">
-              <video
-                autoplay="autoplay"
-                controls="controls"
-                preload="meta"
-                x-webkit-airplay="true"
-                webkit-playsinline="true"
-                playsinline="true"
-                x5-video-player-type="h5"
-                x5-video-player-fullscreen="true"
-                controlsList="nodownload"
-                :src="videoPath"
-                loop="loop"
-              >
-                <source src="movie.ogg" type="video/ogg" />
-                <source src="movie.mp4" type="video/mp4" />
-              </video>
-            </el-col>
-            <el-col :span="24" class="downTxt" v-else>
-              <p>{{ dockInfo.title }}</p>
-            </el-col>
-          </el-col>
-          <el-col :span="24" class="down">
-            <el-col :span="12" class="left">
-              <el-link :underline="false" class="back" @click="back()">返回列表</el-link>
-            </el-col>
-            <el-col :span="12" class="right">
-              <el-link :underline="false" class="back" @click="showPopup">选择视频</el-link>
-            </el-col>
-          </el-col>
-        </el-col>
-        <el-col :span="24" class="chat">
-          <van-tabs v-model="chatactive" type="card" animated>
-            <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="market">
-          <van-tabs v-model="marketactive" type="card" animated>
-            <van-tab title="技术成果">
-              <el-col :span="24" class="one">
-                <el-col :span="24" class="list" v-for="(item, index) in achieveList" :key="index">
-                  <p class="textOver">{{ item.name }}</p>
-                  <p class="textOver">领域:{{ item.field }}</p>
-                  <p class="textOver">联系人:{{ item.contacts }}</p>
-                </el-col>
-              </el-col>
-            </van-tab>
-            <van-tab title="科技需求">
-              <el-col :span="24" class="one">
-                <el-col :span="24" class="list" v-for="(item, index) in techolList" :key="index">
-                  <p class="textOver">{{ item.name }}</p>
-                  <p class="textOver">领域:{{ item.field }}</p>
-                  <p class="textOver">联系人:{{ item.contacts }}</p>
-                </el-col>
-              </el-col>
-            </van-tab>
-            <van-tab title="专家智库">
-              <el-col :span="24" class="three">
-                <el-col :span="24" class="expertList" v-for="(item, index) in expertList" :key="index" @click.native="expertBtn(item)">
-                  <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-tabs>
-        </el-col>
-        <el-col :span="24" class="jbxm">
-          <van-tabs v-model="jbxmactive" type="card" animated>
-            <van-tab title="嘉宾访谈">
-              <el-col :span="24" class="jiabinlist">
-                <el-col
-                  :span="24"
-                  class="jiabin"
-                  v-for="(item, index) in zxzdlist"
-                  :key="index"
-                  @click.native="$router.push({ path: '/live/detail2', query: { id: item.id, type: '1' } })"
-                >
-                  <el-col :span="5" class="img4">
-                    <img :src="item.picture" style="width: 100%; height: 100%" />
-                  </el-col>
-                  <el-col :span="19" 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"
-                  @click.native="$router.push({ path: '/live/detail2', query: { id: item.id, type: '2' } })"
-                >
-                  <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>
-    <van-popup v-model="show" position="bottom">
-      <van-picker
-        title="视频信息"
-        v-model="show"
-        show-toolbar
-        :columns="videoData"
-        @confirm="onConfirm"
-        @cancel="onCancel"
-        @change="onChange"
-        value-key="videointro"
-      />
-    </van-popup>
-  </div>
-</template>
-
-<script>
-// 图文直播
-import textVideo from '@/components/parts/textVideo.vue';
-// 公共聊天
-import chat from '@/components/parts/chat.vue';
-import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: dock } = createNamespacedHelpers('dock');
-const { mapActions: marketuser } = createNamespacedHelpers('marketuser');
-const { mapActions: exportuser } = createNamespacedHelpers('exportuser');
-const { mapActions: newsguidance } = createNamespacedHelpers('newsguidance');
-const { mapActions: newsroadshow } = createNamespacedHelpers('newsroadshow');
-import moment from 'moment';
-export default {
-  name: 'roomDetail',
-  props: {},
-  components: {
-    textVideo,
-    chat,
-  },
-  data: function() {
-    return {
-      // 展会id
-      dock_id: '',
-      //展会详情
-      dockInfo: {},
-      // 聊天
-      chatactive: 0,
-      // 图文直播
-      lunboList: [],
-      // 科技超市
-      marketactive: 0,
-      // 技术成果
-      achieveList: [],
-      // 科技需求
-      techolList: [],
-      // 专家智库
-      expertList: [],
-      expertimage: require('@/assets/222.png'),
-      // 嘉宾,项目
-      jbxmactive: 0,
-      // 嘉宾访谈
-      zxzdlist: [],
-      // 项目路演
-      xmlyList: [],
-      // 选择视频
-      show: false,
-      // 视频管理
-      menuIndex: '0',
-      videoData: [],
-      videoPath: '',
-    };
-  },
-  async created() {
-    if (this.id) {
-      this.$set(this, `dock_id`, this.id);
-    }
-    await this.search();
-    await this.seachtVideo();
-    await this.seachLunbo();
-  },
-  methods: {
-    ...dock({ dockQuery: 'query', dockFetch: 'fetch' }),
-    ...exportuser({ expertQuery: 'query' }),
-    ...marketuser({ operaFetch: 'operaFetch' }),
-    ...newsguidance({ danceQuery: 'query' }),
-    ...newsroadshow({ newsroadshowquery: 'query' }),
-    // 查询
-    async search() {
-      //展会详情
-      let res = await this.dockFetch(this.dock_id);
-      if (this.$checkRes(res)) this.$set(this, `dockInfo`, res.data);
-      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, `techolList`, jishuData);
-      //技术成果
-      var chanpinData = czxmNew.filter(item => item.type === '1');
-      if (chanpinData) this.$set(this, `achieveList`, chanpinData);
-      // 专家智库
-      let exportdata = await this.expertQuery({ role: 6 });
-      if (this.$checkRes(exportdata)) this.$set(this, `expertList`, exportdata.data);
-      //嘉宾访谈
-      let jbftData = await this.danceQuery({ dock_id: this.id });
-      if (this.$checkRes(jbftData)) this.$set(this, `zxzdlist`, jbftData.data);
-      // 项目路演
-      let xmly = await this.newsroadshowquery({ dock_id: this.id });
-      if (this.$checkRes(xmly)) this.$set(this, `xmlyList`, xmly.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);
-      }
-    },
-    // 专家详情
-    expertBtn(data) {
-      this.$router.push({ path: '/market/exportDetail', query: { id: data.id } });
-    },
-    // 返回
-    back() {
-      this.$router.push({ path: '/live/index' });
-    },
-    // 选择视频
-    showPopup() {
-      this.show = true;
-    },
-    // 视频管理
-    async seachtVideo() {
-      let res = await this.dockFetch(this.dock_id);
-      if (this.$checkRes(res)) {
-        this.$set(this, `videoData`, res.data.videodata);
-        this.changeMenu('0', this.videoData[0]);
-      }
-    },
-    channelvideo() {
-      this.$stomp({
-        [`/exchange/dock_video/${this.dock_id}`]: this.onMessageVideo,
-      });
-    },
-    onMessageVideo(message) {
-      let arr = JSON.parse(message.body);
-      this.$set(this, `videoData`, arr);
-      let num = this.videoData.length - 1;
-      let newarr = _.last(arr);
-      this.changeMenu(num, newarr);
-    },
-    changeMenu(index, item) {
-      if (item) {
-        this.menuIndex = index;
-        this.$set(this, `videoPath`, item.file_path);
-      }
-    },
-    // 确定
-    onConfirm(value, index) {
-      this.changeMenu(index, value);
-      this.onCancel();
-    },
-    // 选择
-    onChange(value, index) {
-      this.changeMenu(index, value);
-    },
-    onCancel() {
-      this.show = false;
-    },
-  },
-  mounted() {
-    this.channelvideo();
-  },
-  computed: {
-    ...mapState(['user']),
-    id() {
-      return this.$route.query.id;
-    },
-  },
-
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.main {
-  // 视频
-  .video {
-    height: 255px;
-    overflow: hidden;
-    .top {
-      height: 215px;
-      overflow: hidden;
-      .downVideo {
-        position: fixed;
-        z-index: 1;
-        width: 100%;
-        video {
-          width: 100%;
-          height: 215px;
-        }
-      }
-      .downTxt {
-        height: 215px;
-        text-align: center;
-        background-image: url('~@/assets/directBack.png');
-        background-size: 100% 100%;
-        background-repeat: no-repeat;
-        p {
-          font-size: 25px;
-          color: #fff;
-          padding: 25px 10px;
-        }
-      }
-    }
-    .down {
-      height: 30px;
-      overflow: hidden;
-      background-color: #f1f1f1;
-      .left {
-        height: 30px;
-        line-height: 30px;
-        border-right: 1px dashed #ccc;
-        text-align: center;
-        .el-link {
-          color: #333;
-          font-weight: bold;
-        }
-      }
-      .right {
-        text-align: center;
-        height: 30px;
-        line-height: 30px;
-        .el-link {
-          color: #333;
-          font-weight: bold;
-        }
-      }
-    }
-  }
-  // 聊天
-  .chat {
-    margin: 15px 0 0 0;
-    height: 400px;
-    overflow: hidden;
-  }
-  // 科技超市
-  .market {
-    margin: 15px 0 0 0;
-    .one {
-      max-height: 550px;
-      overflow-y: auto;
-      padding: 0 16px;
-      min-height: 102px;
-      .list {
-        border-bottom: 1px dashed #ccc;
-        padding: 10px 0;
-        p {
-          font-size: 16px;
-          color: #666;
-          padding: 5px 0 0 0;
-        }
-        p:nth-child(1) {
-          font-size: 18px;
-          font-weight: bold;
-          color: #000;
-        }
-      }
-    }
-    .three {
-      max-height: 550px;
-      overflow-y: auto;
-      padding: 0 16px;
-      min-height: 92px;
-      .expertList {
-        padding: 5px 0px;
-        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;
-        }
-      }
-    }
-  }
-  // 嘉宾,项目
-  .jbxm {
-    margin: 15px 0 0 0;
-    // height: 500px;
-    overflow: hidden;
-    margin-bottom: 20px;
-    .jiabinlist {
-      max-height: 450px;
-      margin-top: 10px;
-      padding: 0px 16px;
-      overflow-y: auto;
-      min-height: 70px;
-      .jiabin {
-        height: 70px;
-        margin-bottom: 6px;
-        border-bottom: 1px dashed #ccc;
-        .img4 {
-          height: 65px;
-        }
-        .info {
-          padding-left: 10px;
-          .title {
-            font-size: 18px;
-            font-weight: bolder;
-            text-overflow: ellipsis;
-            font-size: 18px;
-            font-weight: bolder;
-          }
-          .title:hover {
-            color: #409eff;
-            cursor: pointer;
-          }
-          .time {
-            text-align: right;
-          }
-          .con {
-            font-size: 16px;
-            color: #666;
-            margin-top: 3px;
-            display: -webkit-box;
-            -webkit-box-orient: vertical;
-            -webkit-line-clamp: 2;
-            overflow: hidden;
-          }
-        }
-      }
-      .jiabin:last-child {
-        margin-bottom: 0px;
-      }
-    }
-    .xmly {
-      max-height: 450px;
-      margin-top: 10px;
-      padding: 0px 16px;
-      overflow-y: auto;
-      min-height: 70px;
-      .xmlylist {
-        border-bottom: 1px dashed #ccc;
-        height: 70px;
-        margin-bottom: 5px;
-        .name {
-          font-size: 18px;
-          font-weight: bold;
-        }
-        .name:hover {
-          color: #409eff;
-          cursor: pointer;
-        }
-        .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;
-        }
-      }
-      .xmlylist:last-child {
-        margin-bottom: 0px;
-      }
-    }
-  }
-}
-// 标签样式重定义
-/deep/.van-tab {
-  font-size: 16px;
-}
-/deep/.van-tabs--card > .van-tabs__wrap {
-  height: 35px;
-}
-/deep/.van-tabs__nav--card {
-  height: 35px;
-  // margin: 0;
-}
-/deep/.van-tabs__nav--card {
-  border: 1px solid #409eff;
-}
-/deep/.van-tabs__nav--card .van-tab {
-  color: #666;
-  border-right: 1px solid #409eff;
-}
-/deep/.van-tabs__nav--card .van-tab.van-tab--active {
-  background-color: #409eff;
-  color: #fff;
-}
-</style>

+ 0 - 233
src/views/live copy/detail.vue

@@ -1,233 +0,0 @@
-<template>
-  <div id="detail">
-    <el-row>
-      <el-col :span="24" class="main">
-        <el-col :span="24" class="video">
-          <el-col :span="24" class="top">
-            <!-- 直播 -->
-            <!-- <video id="videoElement" controls class="h5video"></video> -->
-            <!-- 视频播放 -->
-            <video
-              autoplay="autoplay"
-              controls="controls"
-              preload="meta"
-              x-webkit-airplay="true"
-              webkit-playsinline="true"
-              playsinline="true"
-              x5-video-player-type="h5"
-              x5-video-player-fullscreen="true"
-              :src="videoPath"
-              v-if="videoData.length > 0"
-              loop="loop"
-            >
-              <source src="movie.ogg" type="video/ogg" />
-              <source src="movie.mp4" type="video/mp4" />
-            </video>
-            <p v-else>{{ dockInfo.title }}</p>
-          </el-col>
-          <el-col :span="24" class="down">
-            <el-button type="primary" size="mini" @click="back()">返回列表</el-button>
-            <el-button type="primary" size="mini" @click="showPopup()">选择视频</el-button>
-          </el-col>
-        </el-col>
-        <el-col :span="24" class="imgchat">
-          <van-tabs v-model="active">
-            <van-tab title="图文直播">
-              <imgtxtdock></imgtxtdock>
-            </van-tab>
-            <van-tab title="公共聊天">
-              <dockchat></dockchat>
-            </van-tab>
-            <van-tab title="参展项目">
-              <czxm></czxm>
-            </van-tab>
-            <van-tab title="项目路演">
-              <!-- <jbft></jbft> -->
-              <xmly></xmly>
-            </van-tab>
-          </van-tabs>
-        </el-col>
-      </el-col>
-    </el-row>
-    <van-popup v-model="show" position="bottom">
-      <van-picker
-        title="视频信息"
-        v-model="show"
-        show-toolbar
-        :columns="videoData"
-        @confirm="onConfirm"
-        @cancel="onCancel"
-        @change="onChange"
-        value-key="videointro"
-      />
-    </van-popup>
-  </div>
-</template>
-
-<script>
-// 图文直播
-import imgtxtdock from './parts/imgtxtdock.vue';
-// 公共聊天
-import dockchat from './parts/dockchat.vue';
-// 参展项目
-import czxm from './parts/czxm.vue';
-// 嘉宾访谈
-import jbft from './parts/jbft.vue';
-// 项目路演
-import xmly from './parts/xmly.vue';
-
-import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: dock } = createNamespacedHelpers('dock');
-import moment from 'moment';
-import flvjs from 'flv.js';
-export default {
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  name: 'detail',
-  props: {},
-  components: {
-    // 图文直播
-    imgtxtdock,
-    // 公共聊天
-    dockchat,
-    // 参展项目
-    czxm,
-    // 嘉宾访谈
-    // jbft,
-    // 项目路演
-    xmly,
-  },
-  data: function() {
-    return {
-      // 展会id
-      dock_id: '',
-      //展会详情
-      dockInfo: {},
-      // 视频管理
-      show: false,
-      menuIndex: '0',
-      videoData: [],
-      videoPath: '',
-      // 图文直播
-      active: 0,
-    };
-  },
-  async created() {
-    if (this.id) {
-      this.$set(this, `dock_id`, this.id);
-    }
-    await this.search();
-    await this.seachtVideo();
-    this.$nextTick(() => {
-      // this.searchLive();
-    });
-  },
-  methods: {
-    ...dock({ dockQuery: 'query', dockFetch: 'fetch' }),
-    async search() {
-      //展会详情
-      let res = await this.dockFetch(this.dock_id);
-      if (this.$checkRes(res)) this.$set(this, `dockInfo`, res.data);
-    },
-    // 视频管理
-    // 打开
-    showPopup() {
-      this.show = true;
-    },
-    // 查询视频
-    async seachtVideo() {
-      let res = await this.dockFetch(this.dock_id);
-      if (this.$checkRes(res)) {
-        this.$set(this, `videoData`, res.data.videodata);
-        this.changeMenu('0', this.videoData[0]);
-      }
-    },
-    channelvideo() {
-      this.$stomp({
-        [`/exchange/dock_video/${this.dock_id}`]: this.onMessageVideo,
-      });
-    },
-    onMessageVideo(message) {
-      let arr = JSON.parse(message.body);
-      this.$set(this, `videoData`, arr);
-      let num = this.videoData.length - 1;
-      let newarr = _.last(arr);
-      this.changeMenu(num, newarr);
-    },
-    // 选择视频
-    changeMenu(index, item) {
-      if (item) {
-        this.menuIndex = index;
-        this.$set(this, `videoPath`, item.file_path);
-      }
-    },
-    // 确定选择
-    onConfirm(value, index) {
-      this.changeMenu(index, value);
-      this.onCancel();
-    },
-    onChange(value, index) {
-      this.changeMenu(index, value);
-    },
-    // 取消
-    onCancel() {
-      this.show = false;
-    },
-    // 返回列表
-    back() {
-      this.$router.push({ path: '/live/index' });
-    },
-    searchLive() {
-      let player = document.getElementById('videoElement');
-      let rmtpUrl = `${process.env.VUE_APP_LIVE_URL + this.dockInfo.room_id}`;
-      if (flvjs.isSupported()) {
-        var flvPlayer = flvjs.createPlayer({
-          isLive: true,
-          type: 'flv',
-          url: rmtpUrl,
-        });
-        flvPlayer.attachMediaElement(player);
-        flvPlayer.load(); //加载
-      }
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-    id() {
-      return this.$route.query.id;
-    },
-  },
-  watch: {},
-};
-</script>
-
-<style lang="less" scoped>
-.main {
-  .video {
-    .top {
-      height: 215px;
-      background-color: #000;
-      video {
-        width: 100%;
-        height: 215px;
-      }
-      .h5video {
-        width: 100%;
-        height: 215px;
-      }
-      p {
-        font-size: 18px;
-      }
-    }
-    .down {
-      text-align: center;
-      height: 40px;
-      padding: 5px 0;
-    }
-  }
-  .imgchat {
-    padding: 0 10px;
-  }
-}
-</style>

+ 0 - 285
src/views/live copy/exportsDetail.vue

@@ -1,285 +0,0 @@
-<template>
-  <div id="roomDetail">
-    <el-row>
-      <el-col :span="24" class="style">
-        <el-col :span="24" class="main">
-          <el-col :span="24" class="video">
-            <el-link :underline="false" class="back" @click="back()"><i class="el-icon-arrow-left"></i></el-link>
-            <el-col :span="24" class="videoone" v-if="videodock.file_path != null || ''">
-              <video
-                autoplay="autoplay"
-                controls="controls"
-                preload="meta"
-                x-webkit-airplay="true"
-                webkit-playsinline="true"
-                playsinline="true"
-                x5-video-player-type="h5"
-                x5-video-player-fullscreen="true"
-                controlsList="nodownload"
-                :src="videodock.file_path"
-                loop="loop"
-              >
-                <source src="movie.ogg" type="video/ogg" />
-                <source src="movie.mp4" type="video/mp4" />
-              </video>
-            </el-col>
-            <el-col :span="24" class="videotwo" v-else>
-              专家培训在线模板
-            </el-col>
-          </el-col>
-          <el-col :span="24" class="chat">
-            <van-tabs v-model="chatactive" type="card" animated>
-              <van-tab title="公共聊天">
-                <el-col :span="24" class="right">
-                  <el-col :span="24" class="list">
-                    <el-col :span="24" class="chatList" v-for="(item, index) in lunboList" :key="index">
-                      <el-col :span="3" class="image">
-                        <el-image :src="touxiang" style="width:30px;height:30px"></el-image>
-                      </el-col>
-                      <el-col :span="21" class="other">
-                        <el-col :span="24" class="one">
-                          <span class="name">{{ item.name }}</span>
-                          <span class="time">{{ item.date }}</span>
-                        </el-col>
-                        <el-col :span="24" class="othertwo">
-                          <p class="remark">{{ item.content }}</p>
-                        </el-col>
-                      </el-col>
-                    </el-col>
-                  </el-col>
-                  <el-col :span="24" class="send">
-                    <el-col :span="19">
-                      <el-input v-model="text" size="mini"></el-input>
-                    </el-col>
-                    <el-col :span="5">
-                      <el-button size="mini" type="primary">发送</el-button>
-                    </el-col>
-                  </el-col>
-                </el-col>
-              </van-tab>
-            </van-tabs>
-          </el-col>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-// 图文直播
-import textVideo from '@/components/parts/textVideo.vue';
-// 公共聊天
-import chat from '@/components/parts/chat.vue';
-import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: dock } = createNamespacedHelpers('dock');
-import moment from 'moment';
-export default {
-  name: 'videoDetail2',
-  props: {},
-  components: {
-    // textVideo,
-    // chat,
-  },
-  data: function() {
-    return {
-      // 展会id
-      dock_id: '',
-      // 视频信息
-      videodock: {},
-      //展会详情
-      dockinfo: [],
-      // 聊天
-      chatactive: 0,
-      // 图文直播
-      lunboList: [
-        { name: '顾红伟', date: '10:00', content: '信息内容' },
-        { name: '顾红伟', date: '10:00', content: '信息内容' },
-      ],
-      // 科技超市
-      marketactive: 0,
-      expertimage: require('@/assets/222.png'),
-      // 头部标题
-      title: '',
-      // meta为true
-      isleftarrow: '',
-      // 返回
-      navShow: true,
-      touxiang: require('@/assets/touxiang.png'),
-      hand: require('@/assets/flower.gif'),
-      text: '',
-    };
-  },
-  created() {},
-  methods: {
-    async searchvideo() {
-      if (this.dock_id) {
-        let res = await this.dockFetch(this.dock_id);
-        if (this.$checkRes(res)) {
-          // 对接会详情
-          this.$set(this, `videodock`, res.data);
-        }
-      }
-    },
-    // 返回
-    back() {
-      this.$router.push({ path: '/live/index' });
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-    id() {
-      return this.$route.query.id;
-    },
-  },
-  watch: {},
-  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;
-  position: relative;
-  z-index: 999;
-}
-.main {
-  min-height: 570px;
-}
-.foot {
-  position: absolute;
-  bottom: 0;
-}
-.main {
-  position: relative;
-  // 视频
-  .video {
-    height: 215px;
-    overflow: hidden;
-    .back {
-      position: fixed;
-      z-index: 999;
-      i {
-        font-size: 30px;
-        font-weight: bold;
-        margin: 5px 0 0px 5px;
-        color: #409eff;
-      }
-    }
-    .videoone {
-      height: 215px;
-      overflow: hidden;
-      video {
-        width: 100%;
-      }
-    }
-    .videotwo {
-      background: url('~@/assets/directBack.png');
-      background-size: 100% 100%;
-      height: 215px;
-      overflow: hidden;
-      text-align: center;
-      color: #fff;
-      font-size: 20px;
-      padding: 15% 3%;
-    }
-  }
-  .chat {
-    margin: 15px 0 0 0;
-    height: 400px;
-    // overflow: hidden;
-    .right {
-      height: 400px;
-      overflow: hidden;
-      border-left: 1px dashed #f1f1f1;
-      border-right: 1px dashed #f1f1f1;
-      border-bottom: 1px dashed #f1f1f1;
-      .top {
-        background-color: #409eff;
-        height: 33px;
-        text-align: center;
-        line-height: 33px;
-        width: 170px;
-        margin: 0px 20px 0px 100px;
-        color: white;
-      }
-      .list {
-        height: 360px;
-        overflow-y: auto;
-        overflow-x: hidden;
-        padding: 0 16px;
-        .chatList {
-          padding: 10px 0;
-          border-bottom: 1px dashed #ccc;
-          .image {
-            text-align: center;
-          }
-          .other {
-            .one {
-              .name {
-                color: #000;
-                font-size: 16px;
-                font-weight: bold;
-              }
-              .time {
-                display: inline-block;
-                margin: 0 0 0 15px;
-                color: #ccc;
-              }
-            }
-            .othertwo {
-              margin: 5px 0 0 0;
-              color: #000;
-              .remark {
-                min-height: 20px;
-                font-size: 15px;
-                padding: 5px;
-                border-radius: 5px;
-                background: #245efe5f;
-              }
-            }
-          }
-        }
-      }
-      .send {
-        height: 40px;
-        line-height: 38px;
-        padding: 0 0 0 12px;
-        position: absolute;
-        bottom: 0px;
-        z-index: 9999;
-      }
-    }
-  }
-}
-// 标签样式重定义
-/deep/.van-tab {
-  font-size: 16px;
-}
-/deep/.van-tabs--card > .van-tabs__wrap {
-  height: 35px;
-}
-/deep/.van-tabs__nav--card {
-  height: 35px;
-  // margin: 0;
-}
-/deep/.van-tabs__nav--card {
-  border: 1px solid #409eff;
-}
-/deep/.van-tabs__nav--card .van-tab {
-  color: #666;
-  border-right: 1px solid #409eff;
-}
-/deep/.van-tabs__nav--card .van-tab.van-tab--active {
-  background-color: #409eff;
-  color: #fff;
-}
-</style>

+ 0 - 138
src/views/live copy/index.vue

@@ -1,138 +0,0 @@
-<template>
-  <div id="index">
-    <el-row>
-      <el-col :span="24" class="style">
-        <el-col :span="24" class="top">
-          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
-        </el-col>
-        <el-col :span="24" class="main">
-          <span v-if="columnview == '0'">
-            <product :province="province" :place="place"></product>
-          </span>
-          <span v-else-if="columnview == '1'">
-            <personal :province="province" :place="place"></personal>
-          </span>
-          <span v-else-if="columnview == '2'">
-            <exports :province="province" :place="place"></exports>
-          </span>
-        </el-col>
-        <el-col :span="24" class="foot">
-          <van-tabbar v-model="active" @change="changeType">
-            <van-tabbar-item icon="cluster-o">科技成果在线</van-tabbar-item>
-            <van-tabbar-item icon="friends-o" disabled>人才对接在线</van-tabbar-item>
-            <van-tabbar-item icon="manager-o">专家培训在线</van-tabbar-item>
-          </van-tabbar>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, mapMutations, createNamespacedHelpers } from 'vuex';
-import NavBar from '@/layout/common/topInfo.vue';
-import footInfo from '@/layout/common/footInfo.vue';
-import product from './parts/product.vue';
-import personal from './parts/personal.vue';
-import exports from './parts/exports.vue';
-const { mapActions: dock } = createNamespacedHelpers('dock');
-const { mapActions: place } = createNamespacedHelpers('place');
-const jwt = require('jsonwebtoken');
-export default {
-  name: 'index',
-  props: {},
-  components: {
-    NavBar,
-    // footInfo,
-    product,
-    personal,
-    exports,
-  },
-  data: function() {
-    return {
-      // 头部标题
-      title: '科技成果在线',
-      // meta为true
-      isleftarrow: '',
-      // 返回
-      navShow: true,
-      // 省
-      province: [],
-      // 市
-      place: [],
-      // 显示模块
-      columnview: '0',
-      active: 0,
-    };
-  },
-  async created() {
-    await this.searchPlace();
-  },
-  methods: {
-    ...mapMutations(['setUser']),
-    ...place({ palcequery: 'query', transactiondtetle: 'delete' }),
-    async searchPlace() {
-      let res1 = await this.palcequery({ level: 1 });
-      let arr = await this.palcequery({ level: 2 });
-      if (res1 || arr) {
-        this.$set(this, `province`, res1.data);
-        this.$set(this, `place`, arr.data);
-      }
-    },
-    sesstoken() {
-      if (this.token) {
-        sessionStorage.setItem('token', this.token);
-        let user = jwt.decode(this.token);
-        if (user && user.uid) {
-          this.setUser(user);
-        }
-      }
-    },
-    // 选择栏目
-    changeType(value) {
-      if (value == '0') {
-        this.$set(this, `title`, '科技成果在线');
-      } else if (value == '1') {
-        this.$set(this, `title`, '人才对接在线');
-      } else if (value == '2') {
-        this.$set(this, `title`, '专家培训在线');
-      }
-      this.$set(this, `columnview`, value);
-      this.$set(this, `active`, value);
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-    token() {
-      return this.$route.query.token;
-    },
-  },
-  watch: {
-    token: {
-      immediate: true,
-      deep: true,
-      handler(val) {
-        this.sesstoken();
-      },
-    },
-  },
-  mounted() {
-    this.isleftarrow = this.$route.meta.isleftarrow;
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.style {
-  width: 100%;
-  height: 100%;
-  position: relative;
-  background-color: #f9fafc;
-}
-.top {
-  height: 46px;
-  overflow: hidden;
-  position: relative;
-  z-index: 999;
-}
-</style>

+ 0 - 88
src/views/live copy/parts/czxm.vue

@@ -1,88 +0,0 @@
-<template>
-  <div id="czxm">
-    <el-row>
-      <el-col :span="24" class="style">
-        <el-col :span="24" class="list" v-for="(item, index) in list" :key="index" @click.native="detailBtn(item)">
-          <el-col :span="19" class="textOver name">
-            {{ item.name }}
-          </el-col>
-          <el-col :span="5" class="textOver type">
-            {{ item.type == '0' ? '科技需求' : '技术成果' }}
-          </el-col>
-          <el-col :span="24" class="textOver other"> 领域:{{ item.field }} </el-col>
-          <el-col :span="24" class="textOver other"> 领域:{{ item.contacts }} </el-col>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: dock } = createNamespacedHelpers('dock');
-export default {
-  name: 'czxm',
-  props: {},
-  components: {},
-  data: function() {
-    return {
-      // 展会id
-      dock_id: '',
-      list: [],
-    };
-  },
-  async created() {
-    if (this.id) {
-      this.$set(this, `dock_id`, this.id);
-    }
-    await this.search();
-  },
-  methods: {
-    ...dock(['fetch']),
-    async search() {
-      // 参展项目
-      let res = await this.fetch(this.dock_id);
-      if (this.$checkRes(res)) {
-        let czxm = res.data.apply.map(item => item.goodsList);
-        czxm = _.flattenDeep(czxm);
-        this.$set(this, `list`, czxm);
-      }
-    },
-    // 详情页面
-    detailBtn(data) {
-      this.$router.push({ path: '/market/productDetail', query: { id: data._id, type: data.type } });
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-    id() {
-      return this.$route.query.id;
-    },
-  },
-  watch: {},
-};
-</script>
-
-<style lang="less" scoped>
-.style {
-  min-height: 365px;
-  max-height: 365px;
-  overflow-y: auto;
-  .list {
-    padding: 5px 0;
-    border-bottom: 1px dashed #ccc;
-    .name {
-      font-size: 16px;
-      font-weight: bold;
-    }
-    .type {
-      font-size: 14px;
-      text-align: center;
-    }
-    .other {
-      font-size: 14px;
-      padding: 5px 0 0 0;
-    }
-  }
-}
-</style>

+ 0 - 254
src/views/live copy/parts/dockchat.vue

@@ -1,254 +0,0 @@
-<template>
-  <div id="dockchat">
-    <el-row>
-      <el-col :span="24" class="style">
-        <el-col :span="24" class="list" v-for="(i, index) in list" :key="index">
-          <span v-if="!isEmotion(i.content)">
-            <el-col :span="24" class="one">
-              [<span>{{ i.send_time | getTime }}</span
-              >]
-              <span>{{ i.sender_name }}</span>
-            </el-col>
-            <el-col :span="24" class="two">
-              <span> {{ i.content }}</span>
-            </el-col>
-          </span>
-          <span v-else>
-            <el-col :span="24" class="thr">
-              <span class="textOver">{{ i.sender_name }}</span>
-              <span>送出一朵/个</span>
-              <span v-html="i.content"></span>
-            </el-col>
-          </span>
-        </el-col>
-      </el-col>
-    </el-row>
-    <el-col :span="24" class="sendtxt">
-      <van-button icon="chat" type="info" round @click="show = true" />
-    </el-col>
-    <van-popup v-model="show" position="bottom" class="popup">
-      <van-col span="24" class="one">
-        <p>快捷发言</p>
-        <p>
-          <span v-for="(i, index) in kjfyList" :key="index" @click="changekjfy(i.name)">{{ i.name }}</span>
-        </p>
-      </van-col>
-      <van-col span="24" class="two">
-        <van-col span="19">
-          <van-field v-model="text" placeholder="请输入内容" />
-        </van-col>
-        <van-col span="5" style="text-align:center;">
-          <van-button round type="info" @click="send()">发言</van-button>
-        </van-col>
-      </van-col>
-    </van-popup>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: chat } = createNamespacedHelpers('chat');
-var moment = require('moment');
-import _ from 'lodash';
-export default {
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  name: 'dockchat',
-  props: {},
-  components: {},
-  data: function() {
-    return {
-      // 展会id
-      dock_id: '',
-      list: [],
-      // 发言
-      show: false,
-      text: '',
-      // 快捷发言列表
-      kjfyList: [{ name: '欢迎欢迎' }, { name: '科技创新' }, { name: '大咖云集' }],
-    };
-  },
-  async created() {
-    this.$set(this, 'dock_id', this.$route.query.id);
-    this.search();
-  },
-  mounted() {
-    this.channel();
-  },
-  methods: {
-    ...chat(['query', 'create']),
-    async search() {
-      const res = await this.query({ skip: 0, dock_id: this.dock_id });
-      if (this.$checkRes(res)) this.$set(this, `list`, res.data);
-    },
-    isEmotion(word) {
-      return word.startsWith('<img');
-    },
-    channel() {
-      this.$stomp({
-        [`/exchange/public_chat/${this.dock_id}`]: this.onMessage,
-      });
-    },
-    onMessage(message) {
-      console.log(message);
-      let body = _.get(message, 'body');
-      if (body) {
-        body = JSON.parse(body);
-        this.list.push(body);
-        this.text = '';
-      }
-      this.search();
-    },
-    // 发言
-    async send() {
-      if (this.text != '') {
-        let object = { sender_name: this.user.name ? this.user.name : '游客', content: this.text, dock_id: this.dock_id };
-        if (this.user.uid) {
-          object.sender_id = this.user.uid;
-          object.role = this.user.role;
-        }
-        let res = await this.create(object);
-        this.text = '';
-        this.show = false;
-        this.$checkRes(res, null, res.errmsg || '发言失败');
-      } else this.$message.error('请输入信息后发送');
-    },
-    // 选择快捷发言
-    changekjfy(data) {
-      this.$set(this, `text`, data);
-      this.send();
-    },
-  },
-  filters: {
-    getTime(date) {
-      if (!date) return '很久以前';
-      let today = moment().format('YYYY-MM-DD');
-      let dd = moment(date).format('YYYY-MM-DD');
-      let time;
-      if (today == dd) time = moment(date).format('HH:mm');
-      else time = moment(date).format('YYYY-MM-DD');
-      return time;
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-  },
-  watch: {},
-};
-</script>
-
-<style lang="less" scoped>
-.style {
-  min-height: 365px;
-  max-height: 365px;
-  overflow-y: auto;
-  .list {
-    padding: 5px 0;
-    .one {
-      padding: 5px 0;
-      span:nth-child(1) {
-        color: #ff0000;
-      }
-      span:nth-child(2) {
-        font-size: 16px;
-        color: #999;
-      }
-    }
-    .two {
-      min-height: 30px;
-      span {
-        font-size: 15px;
-        background: #f1f1f1;
-        padding: 5px;
-        border-radius: 5px;
-        min-width: 30%;
-        display: inline-block;
-      }
-    }
-    .thr {
-      text-align: center;
-      background: #f1f1f1;
-      border-radius: 25px;
-      width: 80%;
-      margin: 0 10%;
-      padding: 5px 0;
-      span:nth-child(1) {
-        color: #db7093;
-        font-weight: bold;
-        position: relative;
-        top: -3px;
-        font-size: 15px;
-        display: inline-block;
-        width: 45%;
-      }
-      span:nth-child(2) {
-        color: #000000;
-        position: relative;
-        top: -7px;
-        font-size: 15px;
-      }
-      span:nth-child(3) {
-        position: relative;
-        top: 2px;
-        left: 5px;
-      }
-    }
-  }
-}
-// 发言
-.sendtxt {
-  position: fixed;
-  bottom: 10px;
-  right: 10px;
-  width: 100%;
-  z-index: 999;
-  text-align: right;
-}
-.popup {
-  .one {
-    color: #fff;
-    p:nth-child(1) {
-      text-align: center;
-      padding: 25px 0;
-      font-size: 20px;
-    }
-    p:nth-child(2) {
-      padding: 0 10px;
-      text-align: center;
-      span {
-        background-color: #409eff9f;
-        display: inline-block;
-        border-radius: 25px;
-        margin: 0 10px 10px 0;
-        font-size: 15px;
-        padding: 5px 10px;
-      }
-      span:nth-child(4n) {
-        margin: 0 0 10px 0;
-      }
-    }
-  }
-  .two {
-    position: absolute;
-    bottom: 0;
-    width: 100%;
-    background: #fff;
-    padding: 5px 5px;
-    height: 40px;
-    /deep/.van-cell {
-      padding: 3px 5px;
-      border-radius: 5px;
-      border: 1px solid #ccc;
-      width: 98%;
-    }
-    /deep/.van-button {
-      height: 31px;
-    }
-  }
-}
-/deep/.van-popup {
-  height: 30%;
-  background-color: #0000005f !important;
-}
-</style>

+ 0 - 124
src/views/live copy/parts/exports.vue

@@ -1,124 +0,0 @@
-<template>
-  <div id="exports">
-    <el-row>
-      <el-col :span="24" class="main">
-        <van-tabs v-model="active1">
-          <van-tab title="正在直播">
-            <exportsList :list="listNow" :total="nowTotal" status="1" @query="searchList" :province="province" :place="place"></exportsList>
-          </van-tab>
-          <van-tab title="下期预告">
-            <exportsList :list="listPre" :total="nowTotal" status="0" @query="searchList" :province="province" :place="place"></exportsList>
-          </van-tab>
-          <van-tab title="往期直播">
-            <exportsList :list="listPast" :total="nowTotal" status="2" @query="searchList" :province="province" :place="place"></exportsList>
-          </van-tab>
-        </van-tabs>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, mapMutations, createNamespacedHelpers } from 'vuex';
-import exportsList from '../parts/exportsList.vue';
-const { mapActions: dock } = createNamespacedHelpers('dock');
-const { mapActions: place } = createNamespacedHelpers('place');
-const jwt = require('jsonwebtoken');
-export default {
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  name: 'exports',
-  props: {
-    // 省
-    province: { type: Array, default: () => [] },
-    // 市
-    place: { type: Array, default: () => [] },
-    news: { type: String, default: '0' },
-  },
-  components: {
-    exportsList,
-  },
-  data: function() {
-    return {
-      active1: 0,
-      // 下期预告
-      listPre: [
-        {
-          end_time: '2020-10-23 00:00',
-          place: '220100',
-          province: '220000',
-          start_time: '2020-10-16 10:00',
-          status: '1',
-          title: '专家培训在线模板',
-        },
-      ],
-      preTotal: 0,
-      // 正在直播
-      listNow: [
-        {
-          end_time: '2020-10-23 00:00',
-          place: '220100',
-          province: '220000',
-          start_time: '2020-10-16 10:00',
-          status: '1',
-          title: '专家培训在线模板',
-        },
-      ],
-      nowTotal: 0,
-      // 往期直播
-      listPast: [
-        {
-          end_time: '2020-10-23 00:00',
-          place: '220100',
-          province: '220000',
-          start_time: '2020-10-16 10:00',
-          status: '1',
-          title: '专家培训在线模板',
-        },
-      ],
-      pastTotal: 0,
-    };
-  },
-  async created() {
-    await this.searchList({ status: '0' });
-    await this.searchList({ status: '1' });
-    await this.searchList({ status: '2' });
-  },
-  methods: {
-    ...dock({ dockQuery: 'query' }),
-    async searchList({ skip = 0, limit = 10, status, ...info } = {}) {},
-    // sesstoken() {
-    //   if (this.token) {
-    //     sessionStorage.setItem('token', this.token);
-    //     let user = jwt.decode(this.token);
-    //     if (user && user.uid) {
-    //       this.setUser(user);
-    //     }
-    //   }
-    // },
-  },
-  computed: {
-    ...mapState(['user']),
-    token() {
-      return this.$route.query.token;
-    },
-  },
-  // watch: {
-  //   token: {
-  //     immediate: true,
-  //     deep: true,
-  //     handler(val) {
-  //       console.log(val);
-  //       this.sesstoken();
-  //     },
-  //   },
-  // },
-  mounted() {
-    this.title = this.$route.meta.title;
-    this.isleftarrow = this.$route.meta.isleftarrow;
-  },
-};
-</script>
-
-<style lang="less" scoped></style>

+ 0 - 101
src/views/live copy/parts/exportsList.vue

@@ -1,101 +0,0 @@
-<template>
-  <div id="liveList">
-    <el-row>
-      <el-col :span="24" class="info">
-        <el-col class="list" v-for="(item, index) in list" :key="index">
-          <el-col :span="24" class="left">
-            <p class="textOver">{{ item.title }}</p>
-            <p>
-              举办城市:<span>{{ getprovince(item.province) }}-{{ getplace(item.place) }}</span>
-            </p>
-            <p>
-              直播时间:<span>{{ item.start_time }}</span>
-            </p>
-          </el-col>
-          <el-col :span="24" style="text-align:center">
-            <el-button type="primary" size="mini" @click="$router.push({ path: '/live/exportsDetail', query: { id: item.id } })" v-if="item.status == '1'"
-              >进入房间</el-button
-            >
-          </el-col>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-export default {
-  name: 'liveList',
-  props: {
-    list: { type: Array },
-    status: { type: String, default: '0' },
-    news: { type: String, default: '0' },
-    // 省
-    province: { type: Array, default: () => [] },
-    // 市
-    place: { type: Array, default: () => [] },
-  },
-  components: {},
-  data: function() {
-    return {};
-  },
-  created() {},
-  methods: {
-    // 过滤省
-    getprovince(item) {
-      let res = this.province.find(i => i.code == item);
-      if (res) return res.name;
-    },
-    // 过滤市
-    getplace(item) {
-      let res = this.place.find(i => i.code == item);
-      if (res) return res.name;
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-    pageTitle() {
-      return `${this.$route.meta.title}`;
-    },
-  },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.info {
-  padding: 10px;
-}
-.list {
-  background: #fff;
-  padding: 10px;
-  border-radius: 5px;
-  margin: 0 0 10px 0;
-  .left {
-    font-size: 16px;
-    color: #ccc;
-    p {
-      padding: 0 0 10px 0;
-      span {
-        color: #000;
-      }
-    }
-    p:first-child {
-      color: #000;
-    }
-  }
-  .right {
-    text-align: center;
-    p {
-      background: #409eff;
-      color: #fff;
-      padding: 5px 8px;
-      border-radius: 5px;
-      margin: 0 0 10px 0;
-    }
-  }
-}
-</style>

+ 0 - 110
src/views/live copy/parts/imgtxtdock.vue

@@ -1,110 +0,0 @@
-<template>
-  <div id="imgtxtdock">
-    <el-row>
-      <el-col :span="24" class="style">
-        <el-col :span="24" class="list" v-for="(item, index) in list" :key="index">
-          <el-col :span="24" class="txt">
-            <span> <van-icon name="underway" />{{ getDate(item.meta.createdAt) }}</span>
-            <span>{{ item.user_name }}</span>
-          </el-col>
-          <el-col :span="24" class="brief">
-            {{ item.brief }}
-          </el-col>
-          <el-col :span="24" class="image">
-            <el-image :src="tag.url" class="imagelist" v-for="(tag, tagindex) in item.image" :key="tagindex"></el-image>
-          </el-col>
-          <el-col :span="24" class="video" v-if="item.file_path">
-            <el-link :href="item.file_path" target="_blank" :underline="false">视频播放</el-link>
-          </el-col>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: imgtxtdock } = createNamespacedHelpers('imgtxtdock');
-import moment from 'moment';
-export default {
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  name: 'imgtxtdock',
-  props: {},
-  components: {},
-  data: function() {
-    return {
-      // 展会id
-      dock_id: '',
-      list: [],
-    };
-  },
-  async created() {
-    if (this.id) {
-      this.$set(this, `dock_id`, this.id);
-    }
-    await this.search();
-  },
-  methods: {
-    ...imgtxtdock(['query']),
-    async search() {
-      // 图文直播
-      let res = await this.query({ dock_id: this.dock_id });
-      if (this.$checkRes(res)) {
-        this.$set(this, `list`, res.data);
-      }
-    },
-    // 过滤时间
-    getDate(val) {
-      let newDate = moment(val).format('hh:mm');
-      if (newDate) return newDate;
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-    id() {
-      return this.$route.query.id;
-    },
-  },
-  watch: {},
-};
-</script>
-
-<style lang="less" scoped>
-.style {
-  min-height: 365px;
-  max-height: 365px;
-  overflow-y: auto;
-  .list {
-    padding: 10px 0;
-    .txt {
-      span:nth-child(1) {
-        color: #ff0000;
-        i {
-          margin: 0 5px 0 0;
-          top: 2px;
-        }
-      }
-      span:nth-child(2) {
-        font-size: 14px;
-        padding: 4px 5px;
-        background: #f1f1f1;
-        margin: 0 0 0 10px;
-        border-radius: 10px;
-        color: #666;
-        font-weight: bold;
-      }
-    }
-    .brief {
-      font-size: 14px;
-      padding: 5px 0;
-    }
-    .image {
-      .imagelist {
-        width: 100%;
-      }
-    }
-  }
-}
-</style>

+ 0 - 103
src/views/live copy/parts/jbft.vue

@@ -1,103 +0,0 @@
-<template>
-  <div id="jbft">
-    <el-row>
-      <el-col :span="24" class="style">
-        <el-col :span="24" class="list" v-for="(item, index) in list" :key="index" @click.native="detailBtn(item)">
-          <el-col :span="19" class="textOver title">
-            {{ item.title }}
-          </el-col>
-          <el-col :span="5" class="date">
-            {{ item.publish_time }}
-          </el-col>
-          <el-col :span="24" class="textOver orgin">
-            来源:<span>{{ item.orgin }} </span>
-          </el-col>
-          <el-col :span="24" class="titlejj">
-            简介:<span>{{ item.titlejj }}</span>
-          </el-col>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: newsguidance } = createNamespacedHelpers('newsguidance');
-export default {
-  name: 'jbft',
-  props: {},
-  components: {},
-  data: function() {
-    return {
-      // 展会id
-      dock_id: '',
-      list: [],
-    };
-  },
-  async created() {
-    if (this.id) {
-      this.$set(this, `dock_id`, this.id);
-    }
-    await this.search();
-  },
-  methods: {
-    ...newsguidance(['query']),
-    async search() {
-      let res = await this.query({ dock_id: this.dock_id });
-      if (this.$checkRes(res)) this.$set(this, `list`, res.data);
-    },
-    // 详情页面
-    detailBtn(data) {
-      this.$router.push({ path: '/service/techDetail', query: { id: data.id, type: '3' } });
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-    id() {
-      return this.$route.query.id;
-    },
-  },
-  watch: {},
-};
-</script>
-
-<style lang="less" scoped>
-.style {
-  min-height: 365px;
-  max-height: 365px;
-  overflow-y: auto;
-  .list {
-    padding: 5px 0;
-    border-bottom: 1px dashed #ccc;
-    .title {
-      font-size: 16px;
-      font-weight: bold;
-    }
-    .date {
-      font-size: 14px;
-      text-align: right;
-      padding: 3px 0 0 0;
-    }
-    .orgin {
-      font-size: 14px;
-      padding: 5px 0;
-      span {
-        color: #999;
-      }
-    }
-    .titlejj {
-      font-size: 14px;
-      overflow: hidden;
-      text-overflow: ellipsis;
-      -webkit-line-clamp: 2;
-      word-break: break-all;
-      display: -webkit-box;
-      -webkit-box-orient: vertical;
-      span {
-        color: #999;
-      }
-    }
-  }
-}
-</style>

+ 0 - 108
src/views/live copy/parts/liveList.vue

@@ -1,108 +0,0 @@
-<template>
-  <div id="liveList">
-    <el-row>
-      <el-col :span="24" class="info">
-        <el-col class="list" v-for="(item, index) in list" :key="index">
-          <el-col :span="24" class="left">
-            <p class="textOver">{{ item.title }}</p>
-            <p>
-              举办城市:<span>{{ getprovince(item.province) }}-{{ getplace(item.place) }}</span>
-            </p>
-            <p>
-              直播时间:<span>{{ item.start_time }}</span>
-            </p>
-          </el-col>
-          <el-col :span="24" style="text-align:center">
-            <span v-if="item.room_id == '1005'">
-              <el-button type="primary" size="mini" @click="$router.push({ path: '/live/detailtwo', query: { id: item.id } })" v-if="item.status == '1'"
-                >进入房间</el-button
-              >
-            </span>
-            <span v-else>
-              <el-button type="primary" size="mini" @click="$router.push({ path: '/live/detail', query: { id: item.id } })" v-if="item.status == '1'"
-                >进入房间</el-button
-              >
-            </span>
-          </el-col>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-export default {
-  name: 'liveList',
-  props: {
-    list: { type: Array },
-    status: { type: String, default: '0' },
-    news: { type: String, default: '0' },
-    // 省
-    province: { type: Array, default: () => [] },
-    // 市
-    place: { type: Array, default: () => [] },
-  },
-  components: {},
-  data: function() {
-    return {};
-  },
-  created() {},
-  methods: {
-    // 过滤省
-    getprovince(item) {
-      let res = this.province.find(i => i.code == item);
-      if (res) return res.name;
-    },
-    // 过滤市
-    getplace(item) {
-      let res = this.place.find(i => i.code == item);
-      if (res) return res.name;
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-    pageTitle() {
-      return `${this.$route.meta.title}`;
-    },
-  },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.info {
-  padding: 10px;
-}
-.list {
-  background: #fff;
-  padding: 10px;
-  border-radius: 5px;
-  margin: 0 0 10px 0;
-  .left {
-    font-size: 16px;
-    color: #ccc;
-    p {
-      padding: 0 0 10px 0;
-      span {
-        color: #000;
-      }
-    }
-    p:first-child {
-      color: #000;
-    }
-  }
-  .right {
-    text-align: center;
-    p {
-      background: #409eff;
-      color: #fff;
-      padding: 5px 8px;
-      border-radius: 5px;
-      margin: 0 0 10px 0;
-    }
-  }
-}
-</style>

+ 0 - 123
src/views/live copy/parts/personal.vue

@@ -1,123 +0,0 @@
-<template>
-  <div id="personal">
-    <el-row>
-      <el-col :span="24" class="main">
-        <van-tabs v-model="active1">
-          <van-tab title="正在直播">
-            <personalList :list="listNow" :total="nowTotal" status="1" @query="searchList" :province="province" :place="place"></personalList>
-          </van-tab>
-          <van-tab title="下期预告">
-            <personalList :list="listPre" :total="nowTotal" status="0" @query="searchList" :province="province" :place="place"></personalList>
-          </van-tab>
-          <van-tab title="往期直播">
-            <personalList :list="listPast" :total="nowTotal" status="2" @query="searchList" :province="province" :place="place"></personalList>
-          </van-tab>
-        </van-tabs>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, mapMutations, createNamespacedHelpers } from 'vuex';
-import personalList from '../parts/personalList.vue';
-const { mapActions: dock } = createNamespacedHelpers('dock');
-const { mapActions: place } = createNamespacedHelpers('place');
-const jwt = require('jsonwebtoken');
-export default {
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  name: 'personal',
-  props: {
-    // 省
-    province: { type: Array, default: () => [] },
-    // 市
-    place: { type: Array, default: () => [] },
-  },
-  components: {
-    personalList,
-  },
-  data: function() {
-    return {
-      active1: 0,
-      // 下期预告
-      listPre: [
-        {
-          end_time: '2020-10-23 00:00',
-          place: '220100',
-          province: '220000',
-          start_time: '2020-10-16 10:00',
-          status: '1',
-          title: '人才招聘会模板',
-        },
-      ],
-      preTotal: 0,
-      // 正在直播
-      listNow: [
-        {
-          end_time: '2020-10-23 00:00',
-          place: '220100',
-          province: '220000',
-          start_time: '2020-10-16 10:00',
-          status: '1',
-          title: '人才招聘会模板',
-        },
-      ],
-      nowTotal: 0,
-      // 往期直播
-      listPast: [
-        {
-          end_time: '2020-10-23 00:00',
-          place: '220100',
-          province: '220000',
-          start_time: '2020-10-16 10:00',
-          status: '1',
-          title: '人才招聘会模板',
-        },
-      ],
-      pastTotal: 0,
-    };
-  },
-  async created() {
-    await this.searchList({ status: '0' });
-    await this.searchList({ status: '1' });
-    await this.searchList({ status: '2' });
-  },
-  methods: {
-    ...dock({ dockQuery: 'query' }),
-    async searchList({ skip = 0, limit = 10, status, ...info } = {}) {},
-    // sesstoken() {
-    //   if (this.token) {
-    //     sessionStorage.setItem('token', this.token);
-    //     let user = jwt.decode(this.token);
-    //     if (user && user.uid) {
-    //       this.setUser(user);
-    //     }
-    //   }
-    // },
-  },
-  computed: {
-    ...mapState(['user']),
-    token() {
-      return this.$route.query.token;
-    },
-  },
-  // watch: {
-  //   token: {
-  //     immediate: true,
-  //     deep: true,
-  //     handler(val) {
-  //       console.log(val);
-  //       this.sesstoken();
-  //     },
-  //   },
-  // },
-  mounted() {
-    this.title = this.$route.meta.title;
-    this.isleftarrow = this.$route.meta.isleftarrow;
-  },
-};
-</script>
-
-<style lang="less" scoped></style>

+ 0 - 100
src/views/live copy/parts/personalList.vue

@@ -1,100 +0,0 @@
-<template>
-  <div id="liveList">
-    <el-row>
-      <el-col :span="24" class="info">
-        <el-col class="list" v-for="(item, index) in list" :key="index">
-          <el-col :span="24" class="left">
-            <p class="textOver">{{ item.title }}</p>
-            <p>
-              举办城市:<span>{{ getprovince(item.province) }}-{{ getplace(item.place) }}</span>
-            </p>
-            <p>
-              直播时间:<span>{{ item.start_time }}</span>
-            </p>
-          </el-col>
-          <el-col :span="24" style="text-align:center">
-            <el-button type="primary" size="mini" @click="$router.push({ path: '/live/personalDetail', query: { id: item.id } })" v-if="item.status == '1'"
-              >进入房间</el-button
-            >
-          </el-col>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-export default {
-  name: 'liveList',
-  props: {
-    list: { type: Array },
-    status: { type: String, default: '0' },
-    // 省
-    province: { type: Array, default: () => [] },
-    // 市
-    place: { type: Array, default: () => [] },
-  },
-  components: {},
-  data: function() {
-    return {};
-  },
-  created() {},
-  methods: {
-    // 过滤省
-    getprovince(item) {
-      let res = this.province.find(i => i.code == item);
-      if (res) return res.name;
-    },
-    // 过滤市
-    getplace(item) {
-      let res = this.place.find(i => i.code == item);
-      if (res) return res.name;
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-    pageTitle() {
-      return `${this.$route.meta.title}`;
-    },
-  },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.info {
-  padding: 10px;
-}
-.list {
-  background: #fff;
-  padding: 10px;
-  border-radius: 5px;
-  margin: 0 0 10px 0;
-  .left {
-    font-size: 16px;
-    color: #ccc;
-    p {
-      padding: 0 0 10px 0;
-      span {
-        color: #000;
-      }
-    }
-    p:first-child {
-      color: #000;
-    }
-  }
-  .right {
-    text-align: center;
-    p {
-      background: #409eff;
-      color: #fff;
-      padding: 5px 8px;
-      border-radius: 5px;
-      margin: 0 0 10px 0;
-    }
-  }
-}
-</style>

+ 0 - 205
src/views/live copy/parts/product.vue

@@ -1,205 +0,0 @@
-<template>
-  <div id="product">
-    <el-row>
-      <el-col :span="24" class="main">
-        <el-col :span="24" class="search">
-          <el-col :span="6" class="type">
-            <el-select v-model="status" placeholder="请选择" clearable @change="typeChange">
-              <el-option v-for="(item, index) in typelist" :key="index" :label="item.name" :value="item.status"> </el-option>
-            </el-select>
-          </el-col>
-          <el-col :span="18" class="input">
-            <van-search v-model="name" @search="onSearch" placeholder="请输入信息标题" />
-          </el-col>
-        </el-col>
-        <el-col :span="24" class="list">
-          <van-tabs v-model="active">
-            <van-tab title="正在直播">
-              <liveList :list="listNow" status="1" @query="searchList" :province="province" :place="place"></liveList>
-            </van-tab>
-            <van-tab title="下期预告">
-              <liveList :list="listPre" status="0" @query="searchList" :province="province" :place="place"></liveList>
-            </van-tab>
-            <van-tab title="往期直播">
-              <liveList :list="listPast" status="2" @query="searchList" :province="province" :place="place"></liveList>
-            </van-tab>
-          </van-tabs>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, mapMutations, createNamespacedHelpers } from 'vuex';
-import liveList from '../parts/liveList.vue';
-const { mapActions: dock } = createNamespacedHelpers('dock');
-const { mapActions: place } = createNamespacedHelpers('place');
-const jwt = require('jsonwebtoken');
-export default {
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  name: 'product',
-  props: {
-    // 省
-    province: { type: Array, default: () => [] },
-    // 市
-    place: { type: Array, default: () => [] },
-  },
-  components: {
-    liveList,
-  },
-  data: function() {
-    return {
-      active: 0,
-      // 下期预告
-      listPre: [],
-      // 正在直播
-      listNow: [],
-      // 往期直播
-      listPast: [],
-      // 查询
-      name: '',
-      status: '',
-      // 类型
-      typelist: [
-        { name: '正在直播', status: '0' },
-        { name: '下期预告', status: '1' },
-        { name: '已往直播', status: '2' },
-      ],
-    };
-  },
-  async created() {
-    await this.searchList({ status: '0' });
-    await this.searchList({ status: '1' });
-    await this.searchList({ status: '2' });
-  },
-  methods: {
-    ...mapMutations(['setUser']),
-    ...dock({ dockQuery: 'query' }),
-    ...place({ palcequery: 'query', transactiondtetle: 'delete' }),
-    async searchList({ skip = 0, limit = 10, status, ...info } = {}) {
-      let res = await this.dockQuery({ is_allowed: 1, skip, status, ...info });
-      if (res.errcode === 0) {
-        if (status == '0') {
-          this.$set(this, `listPre`, res.data);
-        } else if (status == '1') {
-          this.$set(this, `listNow`, res.data);
-        } else if (status == '2') {
-          this.$set(this, `listPast`, res.data);
-        }
-      }
-    },
-    // 输入框是搜索
-    async searchTxt({ ...info } = {}) {
-      info.status = this.status == 0 ? 1 : this.status == 1 ? 0 : 2;
-      console.log(info);
-      if (this.name) {
-        info.title = this.name;
-        let res = await this.dockQuery({ is_allowed: 1, ...info });
-        if (this.$checkRes(res)) {
-          let index = this.typelist.findIndex(i => i.status == this.status);
-          if (index == 0) this.$set(this, `listNow`, res.data);
-          else if (index == 1) this.$set(this, `listPre`, res.data);
-          else if (index == 2) this.$set(this, `listPast`, res.data);
-        }
-      } else {
-        this.searchList({ status: '0' });
-        this.searchList({ status: '1' });
-        this.searchList({ status: '2' });
-      }
-    },
-    sesstoken() {
-      if (this.token) {
-        sessionStorage.setItem('token', this.token);
-        let user = jwt.decode(this.token);
-        if (user && user.uid) {
-          this.setUser(user);
-        }
-      }
-    },
-    // 选择类型
-    typeChange(value) {
-      if (value) {
-        this.active = '';
-        this.$set(this, `status`, value);
-        let index = this.typelist.findIndex(i => i.status == value);
-        if (index) {
-          this.$set(this, `active`, index);
-        }
-      }
-    },
-    // 输入框查询
-    onSearch(data) {
-      this.$set(this, `name`, data);
-      if (this.status) {
-        this.searchTxt();
-      } else {
-        this.$notify({
-          message: '请选择直播状态',
-          type: 'danger',
-        });
-      }
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-    token() {
-      return this.$route.query.token;
-    },
-  },
-  watch: {
-    token: {
-      immediate: true,
-      deep: true,
-      handler(val) {
-        // console.log(val);
-        this.sesstoken();
-      },
-    },
-  },
-  mounted() {
-    this.title = this.$route.meta.title;
-    this.isleftarrow = this.$route.meta.isleftarrow;
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.main {
-  position: relative;
-  .search {
-    position: fixed;
-    width: 100%;
-    z-index: 999;
-    border-bottom: 1px solid #ccc;
-    .type {
-      /deep/.el-input__inner {
-        border: none;
-        padding: 0;
-        height: 30px;
-        line-height: 30px;
-      }
-      .el-select {
-        padding: 10px 0px 0px 5px;
-      }
-      /deep/.el-input__icon {
-        line-height: 30px;
-      }
-    }
-    .input {
-      .van-search {
-        padding: 10px 12px 10px 0;
-      }
-    }
-  }
-  .list {
-    position: absolute;
-    width: 100%;
-    top: 54px;
-    background: #f9fafc;
-    padding: 0 0 40px 0;
-  }
-}
-</style>

+ 0 - 103
src/views/live copy/parts/xmly.vue

@@ -1,103 +0,0 @@
-<template>
-  <div id="xmly">
-    <el-row>
-      <el-col :span="24" class="style">
-        <el-col :span="24" class="list" v-for="(item, index) in list" :key="index" @click.native="detailBtn(item)">
-          <el-col :span="19" class="textOver title">
-            {{ item.title }}
-          </el-col>
-          <el-col :span="5" class="date">
-            {{ item.publish_time }}
-          </el-col>
-          <el-col :span="24" class="textOver orgin">
-            来源:<span>{{ item.orgin }} </span>
-          </el-col>
-          <el-col :span="24" class="titlejj">
-            简介:<span>{{ item.titlejj }}</span>
-          </el-col>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: newsroadshow } = createNamespacedHelpers('newsroadshow');
-export default {
-  name: 'xmly',
-  props: {},
-  components: {},
-  data: function() {
-    return {
-      // 展会id
-      dock_id: '',
-      list: [],
-    };
-  },
-  async created() {
-    if (this.id) {
-      this.$set(this, `dock_id`, this.id);
-    }
-    await this.search();
-  },
-  methods: {
-    ...newsroadshow(['query']),
-    async search() {
-      let res = await this.query({ dock_id: this.dock_id });
-      if (this.$checkRes(res)) this.$set(this, `list`, res.data);
-    },
-    // 详情页面
-    detailBtn(data) {
-      this.$router.push({ path: '/service/techDetail', query: { id: data.id, type: '4' } });
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-    id() {
-      return this.$route.query.id;
-    },
-  },
-  watch: {},
-};
-</script>
-
-<style lang="less" scoped>
-.style {
-  min-height: 365px;
-  max-height: 365px;
-  overflow-y: auto;
-  .list {
-    padding: 5px 0;
-    border-bottom: 1px dashed #ccc;
-    .title {
-      font-size: 16px;
-      font-weight: bold;
-    }
-    .date {
-      font-size: 14px;
-      text-align: right;
-      padding: 3px 0 0 0;
-    }
-    .orgin {
-      font-size: 14px;
-      padding: 5px 0;
-      span {
-        color: #999;
-      }
-    }
-    .titlejj {
-      font-size: 14px;
-      overflow: hidden;
-      text-overflow: ellipsis;
-      -webkit-line-clamp: 2;
-      word-break: break-all;
-      display: -webkit-box;
-      -webkit-box-orient: vertical;
-      span {
-        color: #999;
-      }
-    }
-  }
-}
-</style>

+ 0 - 598
src/views/live copy/personalDetail.vue

@@ -1,598 +0,0 @@
-<template>
-  <div id="roomDetail">
-    <el-row>
-      <el-col :span="24" class="style">
-        <el-col :span="24" class="main">
-          <el-col :span="24" class="video">
-            <el-link :underline="false" class="back" @click="back()"><i class="el-icon-arrow-left"></i></el-link>
-            <el-col :span="24" class="videoone" v-if="videodock.file_path != null || ''">
-              <video
-                autoplay="autoplay"
-                controls="controls"
-                preload="meta"
-                x-webkit-airplay="true"
-                webkit-playsinline="true"
-                playsinline="true"
-                x5-video-player-type="h5"
-                x5-video-player-fullscreen="true"
-                controlsList="nodownload"
-                :src="videodock.file_path"
-                loop="loop"
-              >
-                <source src="movie.ogg" type="video/ogg" />
-                <source src="movie.mp4" type="video/mp4" />
-              </video>
-            </el-col>
-            <el-col :span="24" class="videotwo" v-else>
-              人才招聘会模板
-            </el-col>
-          </el-col>
-          <el-col :span="24" class="chat">
-            <van-tabs v-model="chatactive" type="card" animated>
-              <van-tab title="公共聊天">
-                <el-col :span="24" class="right">
-                  <el-col :span="24" class="list">
-                    <el-col :span="24" class="chatList" v-for="(item, index) in lunboList" :key="index">
-                      <el-col :span="3" class="image">
-                        <el-image :src="touxiang" style="width:30px;height:30px"></el-image>
-                      </el-col>
-                      <el-col :span="21" class="other">
-                        <el-col :span="24" class="one">
-                          <span class="name">{{ item.name }}</span>
-                          <span class="time">{{ item.date }}</span>
-                        </el-col>
-                        <el-col :span="24" class="othertwo">
-                          <p class="remark">{{ item.content }}</p>
-                        </el-col>
-                      </el-col>
-                    </el-col>
-                  </el-col>
-                  <el-col :span="24" class="send">
-                    <el-col :span="19">
-                      <el-input v-model="text" size="mini"></el-input>
-                    </el-col>
-                    <el-col :span="5">
-                      <el-button size="mini" type="primary">发送</el-button>
-                    </el-col>
-                  </el-col>
-                </el-col>
-              </van-tab>
-            </van-tabs>
-          </el-col>
-          <el-col :span="24" class="market">
-            <van-tabs v-model="marketactive" type="card" animated>
-              <van-tab title="招聘信息">
-                <el-col :span="24" class="one">
-                  <el-col :span="24" class="list" v-for="(item, index) in zpxxList" :key="index">
-                    <p class="name">{{ item.name }}</p>
-                    <el-col :span="12">
-                      <p class="textOver">类型:{{ item.type }}</p>
-                    </el-col>
-                    <el-col :span="12">
-                      <p class="textOver date">{{ item.date }}</p>
-                    </el-col>
-                    <el-col :span="24">
-                      <p class="textOver">{{ item.content }}</p>
-                    </el-col>
-                  </el-col>
-                </el-col>
-              </van-tab>
-              <van-tab title="正式岗位">
-                <el-col :span="24" class="two">
-                  <el-col :span="24" class="list" v-for="(item, index) in zsgwList" :key="index">
-                    <el-col :span="18" class="name textOver">
-                      {{ item.name }}
-                    </el-col>
-                    <el-col :span="6" class="date textOver">
-                      {{ item.date }}
-                    </el-col>
-                    <el-col :span="24" class="other">
-                      <span class="textOver">需求人数:{{ item.num }}</span>
-                      <span class="textOver" style="color:#ff0000;">薪资:{{ item.xz }}</span>
-                    </el-col>
-                    <el-col :span="24" class="other">
-                      <span class="textOver">福利待遇:{{ item.fldy }}</span>
-                      <span class="textOver">职位诱惑:{{ item.zwyh }}</span>
-                    </el-col>
-                  </el-col>
-                </el-col>
-              </van-tab>
-              <van-tab title="实习岗位">
-                <el-col :span="24" class="three">
-                  <el-col :span="24" class="list" v-for="(item, index) in sxList" :key="index" @click.native="expertBtn(item)">
-                    <el-col :span="5" class="image">
-                      <el-image :src="expertimage" style="width:70px;height: 70px;border: 1px solid #f1f1f1;"></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="other">
-                        <el-col :span="12">
-                          <span class="textOver"><i class="el-icon-coin"></i>{{ item.xz }}</span>
-                        </el-col>
-                        <el-col :span="12" style="text-align:right">
-                          <span class="textOver"><i class="el-icon-location"></i>{{ item.address }}</span>
-                        </el-col>
-                        <el-col :span="24" class="fldy textOver">
-                          <span>福利待遇:{{ item.fldy }}</span>
-                        </el-col>
-                      </el-col>
-                    </el-col>
-                  </el-col>
-                </el-col>
-              </van-tab>
-            </van-tabs>
-          </el-col>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-// 图文直播
-import textVideo from '@/components/parts/textVideo.vue';
-// 公共聊天
-import chat from '@/components/parts/chat.vue';
-import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: dock } = createNamespacedHelpers('dock');
-import moment from 'moment';
-export default {
-  name: 'videoDetail2',
-  props: {},
-  components: {
-    // textVideo,
-    // chat,
-  },
-  data: function() {
-    return {
-      // 展会id
-      dock_id: '',
-      // 视频信息
-      videodock: {},
-      // 倒计时查询详情
-      times: 5,
-      //展会详情
-      dockinfo: [],
-      // 聊天列表
-      lunboList: [
-        { name: '顾红伟', date: '10:00', content: '信息内容' },
-        { name: '顾红伟', date: '10:00', content: '信息内容' },
-        { name: '顾红伟', date: '10:00', content: '信息内容' },
-        { name: '顾红伟', date: '10:00', content: '信息内容' },
-        { name: '顾红伟', date: '10:00', content: '信息内容' },
-      ],
-      // 聊天
-      chatactive: 0,
-      // 科技超市
-      marketactive: 0,
-      expertimage: require('@/assets/222.png'),
-      // 头部标题
-      title: '',
-      // meta为true
-      isleftarrow: '',
-      // 返回
-      navShow: true,
-      touxiang: require('@/assets/touxiang.png'),
-      hand: require('@/assets/flower.gif'),
-      //招聘信息
-      zpxxList: [
-        {
-          name: '长春市福瑞科技有限公司',
-          date: '2020-10-16',
-          type: '全职',
-          content: '长春市福瑞科技有限公司长春市福瑞科技有限公司长春市福瑞科技有限公司长春市福瑞科技有限公司',
-        },
-        {
-          name: '长春市福瑞科技有限公司',
-          date: '2020-10-16',
-          type: '全职',
-          content: '长春市福瑞科技有限公司长春市福瑞科技有限公司长春市福瑞科技有限公司长春市福瑞科技有限公司',
-        },
-        {
-          name: '长春市福瑞科技有限公司',
-          date: '2020-10-16',
-          type: '全职',
-          content: '长春市福瑞科技有限公司长春市福瑞科技有限公司长春市福瑞科技有限公司长春市福瑞科技有限公司',
-        },
-        {
-          name: '长春市福瑞科技有限公司',
-          date: '2020-10-16',
-          type: '全职',
-          content: '长春市福瑞科技有限公司长春市福瑞科技有限公司长春市福瑞科技有限公司长春市福瑞科技有限公司',
-        },
-      ],
-      //正式岗位
-      zsgwList: [
-        {
-          name: '应届管培生',
-          date: '2020-10-16',
-          xz: '3k-6k/月',
-          fldy: '五险一金',
-          num: '10',
-          zwyh: '扁平管理,节日礼物,岗前培训,岗位晋升',
-        },
-        {
-          name: '应届管培生',
-          date: '2020-10-16',
-          xz: '3k-6k/月',
-          fldy: '五险一金',
-          num: '10',
-          zwyh: '扁平管理,节日礼物,岗前培训,岗位晋升',
-        },
-        {
-          name: '应届管培生',
-          date: '2020-10-16',
-          xz: '3k-6k/月',
-          fldy: '五险一金',
-          num: '10',
-          zwyh: '扁平管理,节日礼物,岗前培训,岗位晋升',
-        },
-        {
-          name: '应届管培生',
-          date: '2020-10-16',
-          xz: '3k-6k/月',
-          fldy: '五险一金',
-          num: '10',
-          zwyh: '扁平管理,节日礼物,岗前培训,岗位晋升',
-        },
-        {
-          name: '应届管培生',
-          date: '2020-10-16',
-          xz: '3k-6k/月',
-          fldy: '五险一金',
-          num: '10',
-          zwyh: '扁平管理,节日礼物,岗前培训,岗位晋升',
-        },
-        {
-          name: '应届管培生',
-          date: '2020-10-16',
-          xz: '3k-6k/月',
-          fldy: '五险一金',
-          num: '10',
-          zwyh: '扁平管理,节日礼物,岗前培训,岗位晋升',
-        },
-        {
-          name: '应届管培生',
-          date: '2020-10-16',
-          xz: '3k-6k/月',
-          fldy: '五险一金',
-          num: '10',
-          zwyh: '扁平管理,节日礼物,岗前培训,岗位晋升',
-        },
-        {
-          name: '应届管培生',
-          date: '2020-10-16',
-          xz: '3k-6k/月',
-          fldy: '五险一金',
-          num: '10',
-          zwyh: '扁平管理,节日礼物,岗前培训,岗位晋升',
-        },
-      ],
-      //实习岗位
-      sxList: [
-        {
-          name: '前端开发工程师',
-          xz: '3k-6k/月',
-          address: '长春市',
-          fldy: '五险一金',
-        },
-        {
-          name: '前端开发工程师',
-          xz: '3k-6k/月',
-          address: '长春市',
-          fldy: '五险一金',
-        },
-        {
-          name: '前端开发工程师',
-          xz: '3k-6k/月',
-          address: '长春市',
-          fldy: '五险一金',
-        },
-        {
-          name: '前端开发工程师',
-          xz: '3k-6k/月',
-          address: '长春市',
-          fldy: '五险一金',
-        },
-        {
-          name: '前端开发工程师',
-          xz: '3k-6k/月',
-          address: '长春市',
-          fldy: '五险一金',
-        },
-        {
-          name: '前端开发工程师',
-          xz: '3k-6k/月',
-          address: '长春市',
-          fldy: '五险一金',
-        },
-        {
-          name: '前端开发工程师',
-          xz: '3k-6k/月',
-          address: '长春市',
-          fldy: '五险一金',
-        },
-        {
-          name: '前端开发工程师',
-          xz: '3k-6k/月',
-          address: '长春市',
-          fldy: '五险一金',
-        },
-      ],
-      sx: require('@/assets/sx.png'),
-      text: '',
-    };
-  },
-  created() {},
-  methods: {
-    async searchvideo() {
-      if (this.dock_id) {
-        let res = await this.dockFetch(this.dock_id);
-        if (this.$checkRes(res)) {
-          // 对接会详情
-          this.$set(this, `videodock`, res.data);
-        }
-      }
-    },
-    // 返回
-    back() {
-      this.$router.push({ path: '/live/index' });
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-    id() {
-      return this.$route.query.id;
-    },
-  },
-  watch: {},
-  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;
-  position: relative;
-  z-index: 999;
-}
-.main {
-  min-height: 570px;
-}
-.foot {
-  position: absolute;
-  bottom: 0;
-}
-.main {
-  // 视频
-  .video {
-    height: 215px;
-    overflow: hidden;
-    .back {
-      position: fixed;
-      z-index: 999;
-      i {
-        font-size: 30px;
-        font-weight: bold;
-        margin: 5px 0 0px 5px;
-        color: #409eff;
-      }
-    }
-    .videoone {
-      height: 215px;
-      overflow: hidden;
-      video {
-        width: 100%;
-      }
-    }
-    .videotwo {
-      background: url('~@/assets/directBack.png');
-      background-size: 100% 100%;
-      height: 215px;
-      overflow: hidden;
-      text-align: center;
-      color: #fff;
-      font-size: 20px;
-      padding: 15% 3%;
-    }
-  }
-  .chat {
-    margin: 15px 0 0 0;
-    height: 400px;
-    overflow: hidden;
-    .right {
-      height: 400px;
-      overflow: hidden;
-      border-left: 1px dashed #f1f1f1;
-      border-right: 1px dashed #f1f1f1;
-      border-bottom: 1px dashed #f1f1f1;
-      .top {
-        background-color: #409eff;
-        height: 33px;
-        text-align: center;
-        line-height: 33px;
-        width: 170px;
-        margin: 0px 20px 0px 100px;
-        color: white;
-      }
-      .list {
-        height: 330px;
-        overflow-y: auto;
-        overflow-x: hidden;
-        padding: 0 16px;
-        .chatList {
-          padding: 10px 0;
-          border-bottom: 1px dashed #ccc;
-          .image {
-            text-align: center;
-          }
-          .other {
-            .one {
-              .name {
-                color: #000;
-                font-size: 16px;
-                font-weight: bold;
-              }
-              .time {
-                display: inline-block;
-                margin: 0 0 0 15px;
-                color: #ccc;
-              }
-            }
-            .othertwo {
-              margin: 5px 0 0 0;
-              color: #000;
-              .remark {
-                min-height: 20px;
-                font-size: 15px;
-                padding: 5px;
-                border-radius: 5px;
-                background: #245efe5f;
-              }
-            }
-          }
-        }
-      }
-      .send {
-        height: 40px;
-        line-height: 38px;
-        padding: 0 0 0 12px;
-      }
-    }
-  }
-  // 科技超市
-  .market {
-    margin: 15px 0 0 0;
-    .one {
-      max-height: 550px;
-      overflow-y: auto;
-      padding: 0 16px;
-      min-height: 102px;
-      .list {
-        border-bottom: 1px dashed #ccc;
-        padding: 10px 16px;
-        .name {
-          font-size: 18px;
-          font-weight: bolder;
-        }
-        .name:hover {
-          color: #409eff;
-        }
-        .textOver {
-          font-size: 16px;
-          color: #666;
-          padding: 5px 0 0 0;
-        }
-        .date {
-          text-align: right;
-        }
-      }
-    }
-    .two {
-      max-height: 550px;
-      overflow-y: auto;
-      padding: 0 16px;
-      min-height: 102px;
-      .list {
-        border-bottom: 1px dashed #ccc;
-        padding: 10px 0;
-        .name {
-          font-size: 18px;
-          font-weight: bold;
-        }
-        .date {
-          text-align: right;
-          font-size: 16px;
-        }
-        .other {
-          padding: 2px 0 1px 0;
-          font-size: 16px;
-          span {
-            display: inline-block;
-            width: 50%;
-          }
-        }
-      }
-      .zsgwList:hover {
-        cursor: pointer;
-        .name {
-          color: #409eff;
-        }
-      }
-    }
-    .three {
-      max-height: 550px;
-      overflow-y: auto;
-      padding: 0 16px;
-      min-height: 92px;
-      .list {
-        padding: 5px 0px;
-        border-bottom: 1px dashed #ccc;
-        overflow: hidden;
-        white-space: nowrap;
-        text-overflow: ellipsis;
-        .info1 {
-          padding: 6px 0px 1px 20px;
-          .other {
-            margin-top: 5px;
-            .fldy {
-              margin-top: 5px;
-            }
-          }
-          .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;
-        }
-      }
-    }
-  }
-}
-// 标签样式重定义
-/deep/.van-tab {
-  font-size: 16px;
-}
-/deep/.van-tabs--card > .van-tabs__wrap {
-  height: 35px;
-}
-/deep/.van-tabs__nav--card {
-  height: 35px;
-  // margin: 0;
-}
-/deep/.van-tabs__nav--card {
-  border: 1px solid #409eff;
-}
-/deep/.van-tabs__nav--card .van-tab {
-  color: #666;
-  border-right: 1px solid #409eff;
-}
-/deep/.van-tabs__nav--card .van-tab.van-tab--active {
-  background-color: #409eff;
-  color: #fff;
-}
-</style>

src/views/live copy/detailtwo.vue → src/views/live/backups/detailtwo.vue


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

@@ -0,0 +1,53 @@
+<template>
+  <div id="detail">
+    <el-row>
+      <el-col :span="24" class="main">
+        <span v-if="type == '0'">
+          <liveDetail></liveDetail>
+        </span>
+        <span v-else-if="type == '1'">
+          <channelDetail></channelDetail>
+        </span>
+        <span v-else-if="type == '2'">
+          <jbftDetail></jbftDetail>
+        </span>
+        <span v-else-if="type == '3'">
+          <jnpxDetail></jnpxDetail>
+        </span>
+        <span v-else-if="type == '4'">
+          <roadshowDetail></roadshowDetail>
+        </span>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import liveDetail from './detail/liveDetail.vue';
+import channelDetail from './detail/channelDetail.vue';
+import jbftDetail from './detail/jbftDetail.vue';
+import jnpxDetail from './detail/jnpxDetail.vue';
+import roadshowDetail from './detail/roadshowDetail.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'detail',
+  props: {},
+  components: { liveDetail, channelDetail, jbftDetail, jnpxDetail, roadshowDetail },
+  data: function() {
+    return {};
+  },
+  created() {
+    console.log(this.type);
+  },
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+    type() {
+      return this.$route.query.type;
+    },
+  },
+  watch: {},
+};
+</script>
+
+<style lang="less" scoped></style>

+ 2 - 3
src/views/live/channelDetail.vue

@@ -116,7 +116,6 @@ export default {
     searchvideo() {
       let data = this.videodata;
       let adate = moment().format('YYYY-MM-DD HH:mm');
-      // let adate = '2020-11-13 10:16';
       let arr = data.find(i => i.start_time <= adate && i.end_time >= adate);
       let index = data.findIndex(i => i.start_time <= adate && i.end_time >= adate);
       if (arr && index) {
@@ -147,11 +146,11 @@ export default {
     },
   },
   mounted() {
-    this.title = this.$route.meta.title;
+    this.title = '科技频道详情';
     this.isleftarrow = this.$route.meta.isleftarrow;
   },
   metaInfo() {
-    return { title: this.$route.meta.title };
+    return { title: '科技频道详情' };
   },
 };
 </script>

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

@@ -1,5 +1,5 @@
 <template>
-  <div id="interviewDeatil">
+  <div id="jbftDetail">
     <el-row>
       <el-col :span="24" class="style">
         <el-col :span="24" class="top">
@@ -51,7 +51,7 @@ import NavBar from '@/layout/common/topInfo.vue';
 import { mapState, createNamespacedHelpers } from 'vuex';
 const { mapActions: newsguidance } = createNamespacedHelpers('newsguidance');
 export default {
-  name: 'interviewDeatil',
+  name: 'jbftDetail',
   props: {},
   components: {
     NavBar,
@@ -87,19 +87,16 @@ export default {
   },
   computed: {
     ...mapState(['user']),
-    pageTitle() {
-      return `${this.$route.meta.title}`;
-    },
     id() {
       return this.$route.query.id;
     },
   },
   mounted() {
-    this.title = this.$route.meta.title;
+    this.title = '嘉宾访谈详情';
     this.isleftarrow = this.$route.meta.isleftarrow;
   },
   metaInfo() {
-    return { title: this.$route.meta.title };
+    return { title: '嘉宾访谈详情' };
   },
 };
 </script>

+ 4 - 3
src/views/market/detailParts/pantentDeatil.vue

@@ -1,8 +1,8 @@
 <template>
-  <div id="pantentDeatil">
+  <div id="jnpxDetail">
     <el-row>
       <el-col :span="24">
-        <p>pantentDeatil</p>
+        <p>jnpxDetail</p>
       </el-col>
     </el-row>
   </div>
@@ -14,7 +14,7 @@ export default {
   metaInfo() {
     return { title: this.$route.meta.title };
   },
-  name: 'pantentDeatil',
+  name: 'jnpxDetail',
   props: {},
   components: {},
   data: function() {
@@ -25,6 +25,7 @@ export default {
   computed: {
     ...mapState(['user']),
   },
+  watch: {},
 };
 </script>
 

+ 7 - 7
src/views/live/liveDetail.vue

@@ -1,5 +1,5 @@
 <template>
-  <div id="detail">
+  <div id="liveDetail">
     <el-row>
       <el-col :span="24" class="main">
         <el-col :span="24" class="video">
@@ -66,15 +66,15 @@
 
 <script>
 // 图文直播
-import imgtxtdock from './liveParts/imgtxtdock.vue';
+import imgtxtdock from '../liveParts/imgtxtdock.vue';
 // 公共聊天
-import dockchat from './liveParts/dockchat.vue';
+import dockchat from '../liveParts/dockchat.vue';
 // 参展项目
-import czxm from './liveParts/czxm.vue';
+import czxm from '../liveParts/czxm.vue';
 // 嘉宾访谈
-import jbft from './liveParts/jbft.vue';
+import jbft from '../liveParts/jbft.vue';
 // 项目路演
-import xmly from './liveParts/xmly.vue';
+import xmly from '../liveParts/xmly.vue';
 
 import { mapState, createNamespacedHelpers } from 'vuex';
 const { mapActions: dock } = createNamespacedHelpers('dock');
@@ -84,7 +84,7 @@ export default {
   metaInfo() {
     return { title: this.$route.meta.title };
   },
-  name: 'detail',
+  name: 'liveDetail',
   props: {},
   components: {
     // 图文直播

+ 3 - 7
src/views/live/roadshowDetail.vue

@@ -82,25 +82,21 @@ export default {
     },
     // 返回
     onClickLeft() {
-      // this.$router.push({ path: '/live/index' });
-      this.$router.go(-1);
+      this.$router.push({ path: '/live/index' });
     },
   },
   computed: {
     ...mapState(['user']),
-    pageTitle() {
-      return `${this.$route.meta.title}`;
-    },
     id() {
       return this.$route.query.id;
     },
   },
   mounted() {
-    this.title = this.$route.meta.title;
+    this.title = '项目路演详情';
     this.isleftarrow = this.$route.meta.isleftarrow;
   },
   metaInfo() {
-    return { title: this.$route.meta.title };
+    return { title: '项目路演详情' };
   },
 };
 </script>

+ 38 - 113
src/views/live/index.vue

@@ -6,35 +6,24 @@
           <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
         </el-col>
         <el-col :span="24" class="info">
-          <span v-if="itemIndex == 0">
-            <onlineEx :province="province" :place="place"></onlineEx>
+          <span v-if="active == 0">
+            <onlineLive :province="province" :place="place"></onlineLive>
           </span>
-          <span v-else-if="itemIndex == 1">
+          <span v-else-if="active == 1">
             <channel></channel>
           </span>
-          <span v-else-if="itemIndex == 2">
-            <span v-if="chooseText == '嘉宾访谈'">
-              <interview></interview>
-            </span>
-            <span v-else-if="chooseText == '技能培训'">
-              <skill></skill>
-            </span>
+          <span v-else-if="active == 2">
+            <trainInter></trainInter>
           </span>
-          <span v-else-if="itemIndex == 3">
+          <span v-else-if="active == 3">
             <roadshow></roadshow>
           </span>
         </el-col>
         <el-col :span="24" class="foot">
-          <van-tabbar v-model="active" @change="clickItem">
+          <van-tabbar v-model="active" @change="changeTab">
             <van-tabbar-item icon="video-o">在线展会</van-tabbar-item>
             <van-tabbar-item icon="cashier-o">科技频道</van-tabbar-item>
-            <van-tabbar-item icon="chat-o" class="train" @click="trainClick"
-              >培训访谈
-              <el-col :span="4" class="itemCon" v-if="trainShow">
-                <el-col :span="24" class="text" @click.native.stop="interviewClick('嘉宾访谈')">嘉宾访谈</el-col>
-                <el-col :span="24" class="text" @click.native.stop="interviewClick('技能培训')">技能培训</el-col>
-              </el-col>
-            </van-tabbar-item>
+            <van-tabbar-item icon="chat-o">培训访谈</van-tabbar-item>
             <van-tabbar-item icon="desktop-o">项目路演</van-tabbar-item>
           </van-tabbar>
         </el-col>
@@ -45,18 +34,15 @@
 
 <script>
 import NavBar from '@/layout/common/topInfo.vue';
-//在线展会
-import onlineEx from './parts/onlineEx.vue';
+// 在线展会
+import onlineLive from './index/onlineLive.vue';
 //科技频道
-import channel from './parts/channel.vue';
-//嘉宾访谈
-import interview from './parts/interview.vue';
-//技能培训
-import skill from './parts/skill.vue';
+import channel from './index/channel.vue';
+// 培训访谈
+import trainInter from './index/trainInter.vue';
 //项目路演
-import roadshow from './parts/roadshow.vue';
+import roadshow from './index/roadshow.vue';
 import { mapState, mapMutations, createNamespacedHelpers } from 'vuex';
-const { mapActions: dock } = createNamespacedHelpers('dock');
 const { mapActions: place } = createNamespacedHelpers('place');
 const jwt = require('jsonwebtoken');
 export default {
@@ -66,74 +52,52 @@ export default {
   name: 'index',
   props: {},
   components: {
-    //顶部
     NavBar,
-    //在线展会
-    onlineEx,
-    //科技频道
+    // 在线展会
+    onlineLive,
+    // 科技频道
     channel,
-    //嘉宾访谈
-    interview,
-    //技能培训
-    skill,
-    //项目路演
+    // 培训访谈
+    trainInter,
+    // 项目路演
     roadshow,
   },
   data: function() {
     return {
-      //头部标题
+      // 头部标题
       title: '在线展会',
       // meta为true
       isleftarrow: '',
       // 返回
       navShow: true,
-      // 省
+      // 当前选中菜单
+      active: 0,
+      // 省市
       province: [],
-      // 市
       place: [],
-      //底部标签
-      active: 0,
-      //默认显示item的index值
-      itemIndex: 0,
-      // 培训访谈菜单显示
-      trainShow: false,
-      // 菜单选择
-      chooseText: '',
     };
   },
   async created() {
-    await this.searchPlace();
+    await this.search();
   },
   methods: {
     ...mapMutations(['setUser']),
-    ...place({ palcequery: 'query', transactiondtetle: 'delete' }),
+    ...place(['query']),
     // 查询省市
-    async searchPlace() {
-      let res = await this.palcequery({ level: 1 });
-      let arr = await this.palcequery({ level: 2 });
+    async search() {
+      let res = await this.query({ level: 1 });
+      let arr = await this.query({ level: 2 });
       if (res || arr) {
         this.$set(this, `province`, res.data);
         this.$set(this, `place`, arr.data);
       }
     },
-    //点击底部标签显示对应的组件
-    clickItem(index) {
-      this.$set(this, `itemIndex`, index);
-      this.$set(this, `trainShow`, false);
-      if (index == 0) this.$set(this, `title`, '在线展会');
-      else if (index == 1) this.$set(this, `title`, '科技频道');
-      else if (index == 2) this.$set(this, `title`, '培训访谈');
-      else if (index == 3) this.$set(this, `title`, '项目路演');
-    },
-    // 点击培训访谈
-    trainClick() {
-      this.trainShow = true;
-    },
-    //嘉宾访谈和技能培训
-    interviewClick(name) {
-      this.$set(this, `trainShow`, false);
-      this.$set(this, `chooseText`, name);
-      this.$set(this, `title`, name);
+    // 选择菜单
+    changeTab(index) {
+      if (index == 0) this.title = '在线展会';
+      else if (index == 1) this.title = '科技频道';
+      else if (index == 2) this.title = '培训访谈';
+      else if (index == 3) this.title = '项目路演';
     },
     // 获取用户
     sesstoken() {
@@ -152,61 +116,22 @@ export default {
       return this.$route.query.token;
     },
   },
-  watch: {
-    token: {
-      immediate: true,
-      deep: true,
-      handler(val) {
-        this.sesstoken();
-      },
-    },
-  },
   mounted() {
     this.isleftarrow = this.$route.meta.isleftarrow;
   },
+  watch: {},
 };
 </script>
 
 <style lang="less" scoped>
 .main {
-  width: 100%;
-  height: 100%;
-  position: relative;
-  background-color: #f9fafc;
   .top {
     height: 46px;
     overflow: hidden;
-    position: relative;
-    z-index: 999;
-  }
-  .info {
-    position: relative;
-    padding: 0 0 40px 0;
   }
   .foot {
-    .train {
-      position: relative;
-    }
-    .itemCon {
-      position: absolute;
-      z-index: 999;
-      width: 93px;
-      padding: 5px;
-      bottom: 50px;
-      left: 0px;
-      border-radius: 5px;
-      box-shadow: 0 0 5px #ccc;
-      .text {
-        font-size: 15px;
-        color: #666;
-        padding: 8px 0;
-        border-bottom: 1px dashed #ccc;
-        text-align: center;
-      }
-      .text:last-child {
-        border-bottom: none;
-      }
-    }
+    height: 50px;
+    overflow: hidden;
   }
 }
 </style>

+ 14 - 12
src/views/live/parts/channel.vue

@@ -2,16 +2,16 @@
   <div id="channel">
     <el-row>
       <el-col :span="24" class="main">
-        <el-col :span="24" class="input">
+        <el-col :span="24" class="top">
           <van-search v-model="name" @search="onSearch" placeholder="请输入信息标题" />
         </el-col>
-        <el-col :span="24" class="con">
+        <el-col :span="24" class="info">
           <el-col
             :span="24"
             class="list"
             v-for="(item, index) in list"
             :key="index"
-            @click.native="$router.push({ path: '/live/channelDetail', query: { id: item.id } })"
+            @click.native="$router.push({ path: '/live/detail', query: { id: item.id, type: '1' } })"
           >
             <el-col :span="11" class="video">
               <el-image :src="noimage"> </el-image>
@@ -103,25 +103,27 @@ export default {
 
 <style lang="less" scoped>
 .main {
-  position: relative;
-  .input {
+  .top {
+    height: 46px;
+    overflow: hidden;
     position: fixed;
-    width: 100%;
     z-index: 999;
+    background: #fff;
     border-bottom: 1px solid #ccc;
-    background-color: #fff;
     .van-search {
-      padding: 10px 12px 10px 12px;
+      padding: 5px 10px;
     }
   }
-  .con {
-    padding: 10px;
-    margin-top: 54px;
+  .info {
+    padding: 0 10px;
+    position: relative;
+    top: 46px;
+    padding: 0 0 50px 0;
     .list {
       padding: 10px;
       background-color: #fff;
       border-radius: 5px;
-      margin: 0 0 10px 0;
+      border-bottom: 1px dashed #ccc;
       .video {
         height: 100px;
         overflow: hidden;

+ 60 - 0
src/views/live/index/jbft.vue

@@ -0,0 +1,60 @@
+<template>
+  <div id="jbft">
+    <el-row>
+      <el-col :span="24" class="main">
+        <el-col
+          :span="24"
+          class="list"
+          v-for="(item, index) in list"
+          :key="index"
+          @click.native="$router.push({ path: '/live/detail', query: { id: item.id, type: '2' } })"
+        >
+          <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>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'jbft',
+  props: {
+    list: { type: Array },
+  },
+  components: {},
+  data: function() {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  watch: {},
+};
+</script>
+
+<style lang="less" scoped>
+.main {
+  padding: 0 10px;
+  .list {
+    padding: 10px 0;
+    border-bottom: 1px dashed #ccc;
+    .name {
+      font-size: 18px;
+      font-weight: bold;
+    }
+    .date {
+      height: 42px;
+      line-height: 42px;
+      color: #666;
+    }
+  }
+}
+</style>

+ 60 - 0
src/views/live/index/jnpx.vue

@@ -0,0 +1,60 @@
+<template>
+  <div id="jnpx">
+    <el-row>
+      <el-col :span="24" class="main">
+        <el-col
+          :span="24"
+          class="list"
+          v-for="(item, index) in list"
+          :key="index"
+          @click.native="$router.push({ path: '/live/detail', 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>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'jnpx',
+  props: {
+    list: { type: Array },
+  },
+  components: {},
+  data: function() {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  watch: {},
+};
+</script>
+
+<style lang="less" scoped>
+.main {
+  padding: 0 10px;
+  .list {
+    padding: 10px 0;
+    border-bottom: 1px dashed #ccc;
+    .name {
+      font-size: 18px;
+      font-weight: bold;
+    }
+    .date {
+      height: 42px;
+      line-height: 42px;
+      color: #666;
+    }
+  }
+}
+</style>

+ 3 - 3
src/views/live/parts/liveList.vue

@@ -19,7 +19,7 @@
               >
             </span>
             <span v-else>
-              <el-button type="primary" size="mini" @click="$router.push({ path: '/live/liveDetail', query: { id: item.id } })" v-if="item.status == '1'"
+              <el-button type="primary" size="mini" @click="$router.push({ path: '/live/detail', query: { id: item.id, type: '0' } })" v-if="item.status == '1'"
                 >进入房间</el-button
               >
             </span>
@@ -73,13 +73,13 @@ export default {
 
 <style lang="less" scoped>
 .info {
-  padding: 10px;
+  padding: 0 10px;
 }
 .list {
   background: #fff;
   padding: 10px;
   border-radius: 5px;
-  margin: 0 0 10px 0;
+  border-bottom: 1px dashed #ccc;
   .left {
     font-size: 16px;
     color: #ccc;

+ 40 - 71
src/views/live/parts/onlineEx.vue

@@ -1,10 +1,10 @@
 <template>
-  <div id="onlineEx">
+  <div id="onlineLive">
     <el-row>
       <el-col :span="24" class="main">
-        <el-col :span="24" class="search">
+        <el-col :span="24" class="top">
           <el-col :span="6" class="select">
-            <el-select v-model="statusValue" clearable placeholder="请选择" @change="selectChange">
+            <el-select v-model="statusValue" clearable placeholder="请选择" @change="changeStatus">
               <el-option v-for="(item, index) in statuslist" :key="index" :label="item.name" :value="item.status"> </el-option>
             </el-select>
           </el-col>
@@ -12,17 +12,11 @@
             <van-search v-model="name" @search="onSearch" placeholder="请输入信息标题" />
           </el-col>
         </el-col>
-        <el-col :span="24" class="tabs">
-          <van-tabs v-model="active">
-            <van-tab title="正在直播">
-              <liveList :list="listNow" status="1" @query="searchList" :province="province" :place="place"></liveList>
-            </van-tab>
-            <van-tab title="下期预告">
-              <liveList :list="listPre" status="0" @query="searchList" :province="province" :place="place"></liveList>
-            </van-tab>
-            <van-tab title="往期直播">
-              <liveList :list="listPast" status="2" @query="searchList" :province="province" :place="place"></liveList>
-            </van-tab>
+        <el-col :span="24" class="info">
+          <van-tabs v-model="active" @change="changeTab">
+            <van-tab title="正在直播"><liveList :list="listNow" status="1" @query="searchList" :province="province" :place="place"></liveList></van-tab>
+            <van-tab title="下期预告"><liveList :list="listPre" status="0" @query="searchList" :province="province" :place="place"></liveList></van-tab>
+            <van-tab title="往期直播"><liveList :list="listPast" status="2" @query="searchList" :province="province" :place="place"></liveList></van-tab>
           </van-tabs>
         </el-col>
       </el-col>
@@ -31,33 +25,30 @@
 </template>
 
 <script>
-import { mapState, mapMutations, createNamespacedHelpers } from 'vuex';
+import { mapState, createNamespacedHelpers } from 'vuex';
 import liveList from './liveList.vue';
 const { mapActions: dock } = createNamespacedHelpers('dock');
 export default {
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  name: 'onlineEx',
+  name: 'onlineLive',
   props: {
     // 省
     province: { type: Array, default: () => [] },
     // 市
     place: { type: Array, default: () => [] },
   },
-  components: { liveList },
+  components: {
+    liveList,
+  },
   data: function() {
     return {
       //查询
       name: '',
       statusValue: '',
-      //类型列表
       statuslist: [
         { name: '正在直播', status: '0' },
         { name: '下期预告', status: '1' },
-        { name: '往直播', status: '2' },
+        { name: '往直播', status: '2' },
       ],
-      //默认的tab
       active: 0,
       // 下期预告
       listPre: [],
@@ -73,30 +64,23 @@ export default {
     await this.searchList({ status: '2' });
   },
   methods: {
-    ...mapMutations(['setUser']),
-    ...dock({ dockQuery: 'query' }),
+    ...dock(['query']),
     //查询
     async searchList({ skip = 0, limit = 10, status, ...info } = {}) {
-      let res = await this.dockQuery({ is_allowed: 1, skip, status, ...info });
+      if (this.name) info.title = this.name;
+      let res = await this.query({ is_allowed: 1, skip, status, ...info });
       if (res.errcode == 0) {
         if (status == '0') this.$set(this, `listPre`, _.orderBy(res.data, ['start_time'], ['asc']));
         else if (status == '1') this.$set(this, `listNow`, _.orderBy(res.data, ['start_time'], ['asc']));
         else if (status == '2') this.$set(this, `listPast`, _.orderBy(res.data, ['start_time'], ['asc']));
       }
     },
-    //下拉选择
-    selectChange(status) {
-      if (status) {
-        let index = this.statuslist.findIndex(i => i.status == status);
-        if (index || index == 0) {
-          this.$set(this, `active`, index);
-        }
-      }
-    },
-    //搜索
+    // 查询
     onSearch(data) {
       if (this.statusValue) {
-        this.searchTxt();
+        if (this.statusValue == '0') this.searchList({ status: '1' });
+        else if (this.statusValue == '1') this.searchList({ status: '0' });
+        else if (this.statusValue == '2') this.searchList({ status: '2' });
       } else {
         this.$notify({
           message: '请选择直播状态',
@@ -104,44 +88,31 @@ export default {
         });
       }
     },
-    // 名字查询
-    async searchTxt({ ...info } = {}) {
-      info.status = this.statusValue == 0 ? 1 : this.statusValue == 1 ? 0 : 2;
-      if (this.name) {
-        info.title = this.name;
-        let res = await this.dockQuery({ is_allowed: 1, ...info });
-        if (this.$checkRes(res)) {
-          let index = this.statuslist.findIndex(i => i.status == this.statusValue);
-          if (index == 0) this.$set(this, `listNow`, res.data);
-          else if (index == 1) this.$set(this, `listPre`, res.data);
-          else if (index == 2) this.$set(this, `listPast`, res.data);
-        }
-      } else {
-        this.searchList({ status: '0' });
-        this.searchList({ status: '1' });
-        this.searchList({ status: '2' });
-      }
+    // 选择状态
+    changeStatus(index) {
+      this.changeTab(index);
+    },
+    // 选择标签
+    changeTab(index) {
+      this.$set(this, `active`, Number(index));
     },
   },
   computed: {
     ...mapState(['user']),
   },
-  mounted() {
-    this.title = this.$route.meta.title;
-    this.isleftarrow = this.$route.meta.isleftarrow;
-  },
+  watch: {},
 };
 </script>
 
 <style lang="less" scoped>
 .main {
-  position: relative;
-  .search {
+  .top {
+    height: 46px;
+    overflow: hidden;
+    border-bottom: 1px solid #ccc;
     position: fixed;
-    width: 100%;
     z-index: 999;
-    border-bottom: 1px solid #ccc;
-    background-color: #fff;
+    background: #fff;
     .select {
       /deep/.el-input__inner {
         border: none;
@@ -150,7 +121,7 @@ export default {
         line-height: 30px;
       }
       .el-select {
-        padding: 10px 0px 0px 5px;
+        padding: 5px 0px 0px 5px;
         background: #fff;
       }
       /deep/.el-input__icon {
@@ -159,16 +130,14 @@ export default {
     }
     .input {
       .van-search {
-        padding: 10px 12px 10px 0;
+        padding: 5px;
       }
     }
   }
-  .tabs {
-    position: absolute;
-    width: 100%;
-    top: 54px;
-    background: #f9fafc;
-    padding: 0 0 40px 0;
+  .info {
+    position: relative;
+    top: 46px;
+    padding: 0 0 50px 0;
   }
 }
 </style>

+ 17 - 27
src/views/live/parts/roadshow.vue

@@ -2,16 +2,16 @@
   <div id="roadshow">
     <el-row>
       <el-col :span="24" class="main">
-        <el-col :span="24" class="input">
-          <van-search v-model="name" @search="onSearch" placeholder="请输入信息标题" />
+        <el-col :span="24" class="top">
+          <van-search v-model="name" @search="search" placeholder="请输入信息标题" />
         </el-col>
-        <el-col :span="24" class="con">
+        <el-col :span="24" class="info">
           <el-col
             :span="24"
             class="list"
             v-for="(item, index) in list"
             :key="index"
-            @click.native="$router.push({ path: '/live/roadshowDetail', query: { id: item.id } })"
+            @click.native="$router.push({ path: '/live/detail', query: { id: item.id, type: '4' } })"
           >
             <el-col :span="24" class="name textOver">
               {{ item.title }}
@@ -47,22 +47,11 @@ export default {
   },
   methods: {
     ...newsroadshow({ adshowQuery: 'query' }),
-    async search() {
-      const res = await this.adshowQuery();
+    async search({ ...info } = {}) {
+      if (this.name) info.title = this.name;
+      const res = await this.adshowQuery({ ...info });
       if (this.$checkRes(res)) {
-        this.$set(this, `list`, res.data);
-      }
-    },
-    //搜索
-    async onSearch({ ...info } = {}) {
-      if (this.name) {
-        info.title = this.name;
-        let res = await this.adshowQuery({ ...info });
-        if (this.$checkRes(res)) {
-          this.$set(this, `list`, res.data);
-        }
-      } else {
-        this.search();
+        this.$set(this, `list`, _.uniqBy(res.data, 'title'));
       }
     },
   },
@@ -78,20 +67,21 @@ export default {
 
 <style lang="less" scoped>
 .main {
-  position: relative;
-  .input {
+  .top {
+    height: 46px;
+    overflow: hidden;
     position: fixed;
-    width: 100%;
     z-index: 999;
+    background: #fff;
     border-bottom: 1px solid #ccc;
-    background-color: #fff;
     .van-search {
-      padding: 10px 12px 10px 12px;
+      padding: 5px 10px;
     }
   }
-  .con {
-    padding: 10px;
-    margin-top: 54px;
+  .info {
+    padding: 0 10px 50px 10px;
+    position: relative;
+    top: 46px;
     .list {
       padding: 10px 0;
       border-bottom: 1px dashed #ccc;

+ 141 - 0
src/views/live/index/trainInter.vue

@@ -0,0 +1,141 @@
+<template>
+  <div id="trainInter">
+    <el-row>
+      <el-col :span="24" class="main">
+        <el-col :span="24" class="top">
+          <el-col :span="6" class="select">
+            <el-select v-model="type" clearable placeholder="请选择" @change="changeType">
+              <el-option v-for="(item, index) in typeList" :key="index" :label="item.name" :value="item.index"> </el-option>
+            </el-select>
+          </el-col>
+          <el-col :span="18" class="input">
+            <van-search v-model="name" @search="onSearch" placeholder="请输入信息标题" />
+          </el-col>
+        </el-col>
+        <el-col :span="24" class="info">
+          <van-tabs v-model="active" @change="changeTab">
+            <van-tab title="嘉宾访谈">
+              <jbft :list="jbftList"></jbft>
+            </van-tab>
+            <van-tab title="技能培训">
+              <jnpx :list="jnpxList"></jnpx>
+            </van-tab>
+          </van-tabs>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import jbft from './jbft.vue';
+import jnpx from './jnpx.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: newsguidance } = createNamespacedHelpers('newsguidance');
+export default {
+  name: 'trainInter',
+  props: {},
+  components: {
+    jbft,
+    jnpx,
+  },
+  data: function() {
+    return {
+      // 查询
+      name: '',
+      type: '',
+      typeList: [
+        { name: '嘉宾访谈', index: '0' },
+        { name: '技能培训', index: '1' },
+      ],
+      active: 0,
+      // 嘉宾访谈
+      jbftList: [],
+      // 技能培训
+      jnpxList: [],
+    };
+  },
+  async created() {
+    await this.search();
+  },
+  methods: {
+    ...newsguidance(['query']),
+    async search({ ...info } = {}) {
+      if (this.name) info.title = this.name;
+      let res = await this.query({ ...info });
+      if (this.$checkRes(res)) {
+        this.$set(this, `jbftList`, res.data);
+      }
+    },
+    // 选择类型
+    changeType(index) {
+      this.changeTab(index);
+    },
+    // 选择菜单
+    changeTab(index) {
+      this.$set(this, `active`, Number(index));
+    },
+    // 查询
+    async onSearch({ ...info } = {}) {
+      if (this.type) {
+        if (this.type == '0') {
+          if (this.name) info.title = this.name;
+          let res = await this.query({ ...info });
+          if (this.$checkRes(res)) {
+            this.$set(this, `jbftList`, res.data);
+          }
+        } else {
+          console.log('技能培训');
+        }
+      } else {
+        this.$notify({
+          message: '请选择信息类型',
+          type: 'danger',
+        });
+      }
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+  },
+  watch: {},
+};
+</script>
+
+<style lang="less" scoped>
+.main {
+  .top {
+    height: 46px;
+    overflow: hidden;
+    border-bottom: 1px solid #ccc;
+    position: fixed;
+    z-index: 999;
+    background: #fff;
+    .select {
+      /deep/.el-input__inner {
+        border: none;
+        padding: 0;
+        height: 30px;
+        line-height: 30px;
+      }
+      .el-select {
+        padding: 5px 0px 0px 5px;
+        background: #fff;
+      }
+      /deep/.el-input__icon {
+        line-height: 30px;
+      }
+    }
+    .input {
+      .van-search {
+        padding: 5px;
+      }
+    }
+  }
+  .info {
+    position: relative;
+    top: 46px;
+    padding: 0 0 50px 0;
+  }
+}
+</style>

+ 0 - 472
src/views/live/liveDetailtwo.vue

@@ -1,472 +0,0 @@
-<template>
-  <div id="detailtwo">
-    <el-row>
-      <el-col :span="24" class="main">
-        <el-col :span="24" class="video">
-          <el-col :span="24" class="top">
-            <el-col :span="24" class="downVideo" v-if="videoData != ''">
-              <video
-                autoplay="autoplay"
-                controls="controls"
-                preload="meta"
-                x-webkit-airplay="true"
-                webkit-playsinline="true"
-                playsinline="true"
-                x5-video-player-type="h5"
-                x5-video-player-fullscreen="true"
-                controlsList="nodownload"
-                :src="videoPath"
-                loop="loop"
-              >
-                <source src="movie.ogg" type="video/ogg" />
-                <source src="movie.mp4" type="video/mp4" />
-              </video>
-            </el-col>
-            <el-col :span="24" class="downTxt" v-else>
-              <p>{{ dockInfo.title }}</p>
-            </el-col>
-          </el-col>
-          <el-col :span="24" class="down">
-            <el-col :span="12" class="left">
-              <el-link :underline="false" class="back" @click="back()">返回列表</el-link>
-            </el-col>
-            <el-col :span="12" class="right">
-              <el-link :underline="false" class="back" @click="showPopup">选择视频</el-link>
-            </el-col>
-          </el-col>
-        </el-col>
-        <el-col :span="24" class="chat">
-          <van-tabs v-model="chatactive" type="card" animated>
-            <!-- <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="market">
-          <van-tabs v-model="marketactive" type="card" animated>
-            <van-tab title="技术成果">
-              <el-col :span="24" class="one">
-                <el-col :span="24" class="list" v-for="(item, index) in achieveList" :key="index">
-                  <p class="textOver">{{ item.name }}</p>
-                  <p class="textOver">领域:{{ item.field }}</p>
-                  <p class="textOver">联系人:{{ item.contacts }}</p>
-                </el-col>
-              </el-col>
-            </van-tab>
-            <van-tab title="科技需求">
-              <el-col :span="24" class="one">
-                <el-col :span="24" class="list" v-for="(item, index) in techolList" :key="index">
-                  <p class="textOver">{{ item.name }}</p>
-                  <p class="textOver">领域:{{ item.field }}</p>
-                  <p class="textOver">联系人:{{ item.contacts }}</p>
-                </el-col>
-              </el-col>
-            </van-tab>
-            <van-tab title="专家智库">
-              <el-col :span="24" class="three">
-                <el-col :span="24" class="expertList" v-for="(item, index) in expertList" :key="index" @click.native="expertBtn(item)">
-                  <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-tabs>
-        </el-col>
-      </el-col>
-    </el-row>
-    <van-popup v-model="show" position="bottom">
-      <van-picker
-        title="视频信息"
-        v-model="show"
-        show-toolbar
-        :columns="videoData"
-        @confirm="onConfirm"
-        @cancel="onCancel"
-        @change="onChange"
-        value-key="videointro"
-      />
-    </van-popup>
-  </div>
-</template>
-
-<script>
-// 公共聊天
-import chat from '@/components/parts/chat.vue';
-import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: dock } = createNamespacedHelpers('dock');
-const { mapActions: marketuser } = createNamespacedHelpers('marketuser');
-const { mapActions: exportuser } = createNamespacedHelpers('exportuser');
-const { mapActions: newsguidance } = createNamespacedHelpers('newsguidance');
-const { mapActions: newsroadshow } = createNamespacedHelpers('newsroadshow');
-import moment from 'moment';
-export default {
-  name: 'detailtwo',
-  props: {},
-  components: {
-    chat,
-  },
-  data: function() {
-    return {
-      // 展会id
-      dock_id: '',
-      //展会详情
-      dockInfo: [],
-      // 聊天
-      chatactive: 0,
-      // 图文直播
-      lunboList: [],
-      // 科技超市
-      marketactive: 0,
-      // 技术成果
-      achieveList: [],
-      // 科技需求
-      techolList: [],
-      // 专家智库
-      expertList: [],
-      expertimage: require('@/assets/222.png'),
-      // 嘉宾,项目
-      jbxmactive: 0,
-      // 嘉宾访谈
-      zxzdlist: [],
-      // 项目路演
-      xmlyList: [],
-      // 视频管理
-      show: false,
-      menuIndex: '0',
-      videoData: [],
-      videoPath: '',
-    };
-  },
-  async created() {
-    if (this.id) {
-      this.$set(this, `dock_id`, this.id);
-    }
-    await this.search();
-    await this.seachtVideo();
-    await this.seachLunbo();
-  },
-  mounted() {
-    this.channel();
-  },
-  methods: {
-    ...dock({ dockQuery: 'query', dockFetch: 'fetch' }),
-    ...exportuser({ expertQuery: 'query' }),
-    ...marketuser({ operaFetch: 'operaFetch' }),
-    ...newsguidance({ danceQuery: 'query' }),
-    ...newsroadshow({ newsroadshowquery: 'query' }),
-    // 查询
-    async search() {
-      //展会详情
-      let res = await this.dockFetch(this.dock_id);
-      if (this.$checkRes(res)) this.$set(this, `dockInfo`, res.data);
-      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, `techolList`, jishuData);
-      //技术成果
-      var chanpinData = czxmNew.filter(item => item.type === '1');
-      if (chanpinData) this.$set(this, `achieveList`, chanpinData);
-      // 专家智库
-      let exportdata = await this.expertQuery({ role: 6 });
-      if (this.$checkRes(exportdata)) this.$set(this, `expertList`, exportdata.data);
-      //嘉宾访谈
-      let jbftData = await this.danceQuery({ dock_id: this.id });
-      if (this.$checkRes(jbftData)) this.$set(this, `zxzdlist`, jbftData.data);
-      // 项目路演
-      let xmly = await this.newsroadshowquery({ dock_id: this.id });
-      if (this.$checkRes(xmly)) this.$set(this, `xmlyList`, xmly.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);
-      }
-    },
-    channel() {
-      this.$stomp({
-        [`/exchange/dock_video/${this.dock_id}`]: this.onMessage,
-      });
-    },
-    onMessage(message) {
-      this.$set(this.dockinfo, `file_path`, message.body);
-    },
-    // 专家详情
-    expertBtn(data) {
-      this.$router.push({ path: '/market/exportDetail', query: { id: data.id } });
-    },
-    // 返回
-    back() {
-      this.$router.push({ path: '/live/index' });
-    },
-    // 选择视频
-    showPopup() {
-      this.show = true;
-    },
-    // 视频管理
-    async seachtVideo() {
-      let res = await this.dockFetch(this.dock_id);
-      if (this.$checkRes(res)) {
-        this.$set(this, `videoData`, res.data.videodata);
-        this.changeMenu('0', this.videoData[0]);
-      }
-    },
-    channelvideo() {
-      this.$stomp({
-        [`/exchange/dock_video/${this.dock_id}`]: this.onMessageVideo,
-      });
-    },
-    onMessageVideo(message) {
-      let arr = JSON.parse(message.body);
-      this.$set(this, `videoData`, arr);
-      let num = this.videoData.length - 1;
-      let newarr = _.last(arr);
-      this.changeMenu(num, newarr);
-    },
-    changeMenu(index, item) {
-      if (item) {
-        this.menuIndex = index;
-        this.$set(this, `videoPath`, item.file_path);
-      }
-    },
-    // 确定
-    onConfirm(value, index) {
-      this.changeMenu(index, value);
-      this.onCancel();
-    },
-    // 选择
-    onChange(value, index) {
-      this.changeMenu(index, value);
-    },
-    onCancel() {
-      this.show = false;
-    },
-  },
-  mounted() {
-    this.channelvideo();
-  },
-  computed: {
-    ...mapState(['user']),
-    id() {
-      return this.$route.query.id;
-    },
-  },
-  watch: {},
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.main {
-  // 视频
-  .video {
-    height: 255px;
-    overflow: hidden;
-    .top {
-      height: 215px;
-      overflow: hidden;
-      .downVideo {
-        position: fixed;
-        z-index: 1;
-        width: 100%;
-        video {
-          width: 100%;
-          height: 215px;
-        }
-      }
-      .downTxt {
-        height: 215px;
-        text-align: center;
-        background-image: url('~@/assets/dock1.png');
-        background-size: 100% 100%;
-        background-repeat: no-repeat;
-        p {
-          font-size: 25px;
-          color: #fff;
-          padding: 25px 10px;
-        }
-      }
-    }
-    .down {
-      height: 40px;
-      overflow: hidden;
-      background-color: #f1f1f1;
-      .left {
-        height: 40px;
-        line-height: 40px;
-        border-right: 1px dashed #ccc;
-        text-align: center;
-        .el-link {
-          color: #333;
-          font-weight: bold;
-        }
-      }
-      .right {
-        text-align: center;
-        height: 40px;
-        line-height: 40px;
-        .el-link {
-          color: #333;
-          font-weight: bold;
-        }
-      }
-    }
-    // .back {
-    //   position: fixed;
-    //   z-index: 999;
-    //   i {
-    //     font-size: 30px;
-    //     font-weight: bold;
-    //     margin: 5px 0 0px 5px;
-    //     color: #409eff;
-    //   }
-    // }
-    // .videoone {
-    //   height: 215px;
-    //   overflow: hidden;
-    //   video {
-    //     width: 100%;
-    //   }
-    // }
-    // .videotwo {
-    //   background: url('~@/assets/directBack.png');
-    //   background-size: 100% 100%;
-    //   height: 215px;
-    //   overflow: hidden;
-    //   text-align: center;
-    //   color: #fff;
-    //   font-size: 20px;
-    //   padding: 15% 3%;
-    // }
-  }
-  // 聊天
-  .chat {
-    margin: 15px 0 0 0;
-    height: 400px;
-    overflow: hidden;
-  }
-  // 科技超市
-  .market {
-    margin: 15px 0 0 0;
-    .one {
-      max-height: 550px;
-      overflow-y: auto;
-      padding: 0 16px;
-      min-height: 102px;
-      .list {
-        border-bottom: 1px dashed #ccc;
-        padding: 10px 0;
-        p {
-          font-size: 16px;
-          color: #666;
-          padding: 5px 0 0 0;
-        }
-        p:nth-child(1) {
-          font-size: 18px;
-          font-weight: bold;
-          color: #000;
-        }
-      }
-    }
-    .three {
-      max-height: 550px;
-      overflow-y: auto;
-      padding: 0 16px;
-      min-height: 92px;
-      .expertList {
-        padding: 5px 0px;
-        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;
-        }
-      }
-    }
-  }
-  // 主办方
-  .company {
-    margin: 15px 0 0 0;
-    .name {
-      margin: 0 0 20px 0;
-      padding: 0 10px;
-      p {
-        text-align: center;
-        color: #409eff;
-      }
-      p:nth-child(1) {
-        font-family: cursive;
-        font-size: 30px;
-        font-weight: bolder;
-        text-shadow: 5px 5px 2px #ccc;
-      }
-      p:nth-child(2) {
-        padding: 10px 0 0 0;
-        font-size: 20px;
-      }
-    }
-  }
-}
-// 标签样式重定义
-/deep/.van-tab {
-  font-size: 16px;
-}
-/deep/.van-tabs--card > .van-tabs__wrap {
-  height: 35px;
-}
-/deep/.van-tabs__nav--card {
-  height: 35px;
-  // margin: 0;
-}
-/deep/.van-tabs__nav--card {
-  border: 1px solid #409eff;
-}
-/deep/.van-tabs__nav--card .van-tab {
-  color: #666;
-  border-right: 1px solid #409eff;
-}
-/deep/.van-tabs__nav--card .van-tab.van-tab--active {
-  background-color: #409eff;
-  color: #fff;
-}
-</style>

+ 1 - 1
src/views/live/liveParts/czxm.vue

@@ -50,7 +50,7 @@ export default {
     },
     // 详情页面
     detailBtn(data) {
-      this.$router.push({ path: '/market/productDetail', query: { id: data._id, type: data.type } });
+      // this.$router.push({ path: '/market/productDetail', query: { id: data._id, type: data.type } });
     },
   },
   computed: {

+ 1 - 1
src/views/live/liveParts/xmly.vue

@@ -49,7 +49,7 @@ export default {
     },
     // 详情页面
     detailBtn(data) {
-      this.$router.push({ path: '/live/roadshowDetail', query: { id: data.id } });
+      // this.$router.push({ path: '/live/detail', query: { id: data.id, type: '4' } });
     },
   },
   computed: {

+ 0 - 110
src/views/live/parts/interview.vue

@@ -1,110 +0,0 @@
-<template>
-  <div id="interview">
-    <el-row>
-      <el-col :span="24" class="main">
-        <el-col :span="24" class="input">
-          <van-search v-model="name" @search="onSearch" placeholder="请输入信息标题" />
-        </el-col>
-        <el-col :span="24" class="con">
-          <el-col
-            :span="24"
-            class="list"
-            v-for="(item, index) in list"
-            :key="index"
-            @click.native="$router.push({ path: '/live/interviewDeatil', query: { id: item.id } })"
-          >
-            <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>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: newsguidance } = createNamespacedHelpers('newsguidance');
-export default {
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  name: 'interview',
-  props: {},
-  components: {},
-  data: function() {
-    return {
-      name: '',
-      list: [],
-    };
-  },
-  created() {
-    this.search();
-  },
-  methods: {
-    ...newsguidance({ danceQuery: 'query' }),
-    async search() {
-      const res = await this.danceQuery();
-      if (this.$checkRes(res)) {
-        this.$set(this, `list`, res.data);
-      }
-    },
-    //搜索
-    async onSearch({ ...info } = {}) {
-      if (this.name) {
-        info.title = this.name;
-        let res = await this.danceQuery({ ...info });
-        if (this.$checkRes(res)) {
-          this.$set(this, `list`, res.data);
-        }
-      } else {
-        this.search();
-      }
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-  },
-
-  mounted() {
-    this.title = this.$route.meta.title;
-    this.isleftarrow = this.$route.meta.isleftarrow;
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.main {
-  position: relative;
-  .input {
-    position: fixed;
-    width: 100%;
-    z-index: 999;
-    border-bottom: 1px solid #ccc;
-    background-color: #fff;
-    .van-search {
-      padding: 10px 12px 10px 12px;
-    }
-  }
-  .con {
-    padding: 10px;
-    margin-top: 54px;
-    .list {
-      padding: 10px 0;
-      border-bottom: 1px dashed #ccc;
-      .name {
-        font-size: 18px;
-        font-weight: bold;
-      }
-      .date {
-        height: 42px;
-        line-height: 42px;
-        color: #666;
-      }
-    }
-  }
-}
-</style>

+ 0 - 107
src/views/live/parts/skill.vue

@@ -1,107 +0,0 @@
-<template>
-  <div id="skill">
-    <el-row>
-      <el-col :span="24" class="main">
-        <el-col :span="24" class="input">
-          <van-search v-model="name" @search="onSearch" placeholder="请输入信息标题" />
-        </el-col>
-        <el-col :span="24" class="con">
-          <el-col :span="24" class="list" v-for="(item, index) in list" :key="index">
-            <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>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-export default {
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  name: 'skill',
-  props: {},
-  components: {},
-  data: function() {
-    return {
-      name: '',
-      list: [
-        {
-          title: '技能培训',
-          publish_time: '2020-11-30',
-          orgin: '高新处',
-        },
-      ],
-    };
-  },
-  created() {
-    this.search();
-  },
-  methods: {
-    // ...newsguidance({ danceQuery: 'query' }),
-    async search() {
-      // const res = await this.danceQuery();
-      // if (this.$checkRes(res)) {
-      //   this.$set(this, `list`, res.data);
-      // }
-    },
-    //搜索
-    async onSearch({ ...info } = {}) {
-      // if (this.name) {
-      //   info.title = this.name;
-      //   let res = await this.danceQuery({ ...info });
-      //   if (this.$checkRes(res)) {
-      //     this.$set(this, `list`, res.data);
-      //   }
-      // } else {
-      //   this.search();
-      // }
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-  },
-  mounted() {
-    this.title = this.$route.meta.title;
-    this.isleftarrow = this.$route.meta.isleftarrow;
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.main {
-  position: relative;
-  .input {
-    position: fixed;
-    width: 100%;
-    z-index: 999;
-    border-bottom: 1px solid #ccc;
-    .van-search {
-      padding: 10px 12px 10px 12px;
-    }
-  }
-  .con {
-    padding: 10px;
-    margin-top: 54px;
-    .list {
-      padding: 10px 0;
-      border-bottom: 1px dashed #ccc;
-      .name {
-        font-size: 18px;
-        font-weight: bold;
-      }
-      .date {
-        height: 42px;
-        line-height: 42px;
-        color: #666;
-      }
-    }
-  }
-}
-</style>

+ 0 - 263
src/views/market copy/exportDetail.vue

@@ -1,263 +0,0 @@
-<template>
-  <div id="exportDetail">
-    <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">
-          <el-col :span="24" class="top">
-            <el-image :src="beijing"></el-image>
-          </el-col>
-          <el-col :span="24" class="message">
-            <el-col :span="24" class="one">
-              <el-image v-if="exportInfo.expertimage != null || undefined" :src="exportInfo.expertimage"></el-image>
-              <el-image :src="expertimage" v-else></el-image>
-              <p>
-                <span>{{ exportInfo.name || '暂无' }}</span>
-                <span>{{ exportInfo.email || '暂无' }}</span>
-              </p>
-            </el-col>
-            <el-col :span="24" class="two">
-              <van-tabs v-model="active" type="card" animated>
-                <van-tab title="基本资料">
-                  <el-col :span="24" class="basic">
-                    <p>
-                      <span>工作单位</span>
-                      <span>{{ exportInfo.company || '暂无' }}</span>
-                    </p>
-                    <p>
-                      <span>毕业院校</span>
-                      <span>{{ exportInfo.school || '暂无' }}</span>
-                    </p>
-                    <p>
-                      <span>最高学历</span>
-                      <span>{{ exportInfo.education || '暂无' }}</span>
-                    </p>
-
-                    <p>
-                      <span>出生日期</span>
-                      <span>{{ exportInfo.birthDate || '暂无' }}</span>
-                    </p>
-                    <p>
-                      <span>职务职称</span>
-                      <span>{{ exportInfo.zwzc || '暂无' }}</span>
-                    </p>
-                    <p>
-                      <span>QQ/微信</span>
-                      <span>{{ getphone(exportInfo.qqwx) || '暂无' }}</span>
-                    </p>
-                    <p>
-                      <span>电子邮箱</span>
-                      <span>{{ exportInfo.email || '暂无' }}</span>
-                    </p>
-                    <p>
-                      <span>擅长领域</span>
-                      <span>{{ exportInfo.expertise || '暂无' }}</span>
-                    </p>
-                  </el-col>
-                </van-tab>
-                <van-tab title="工作经历">
-                  <el-col :span="24" class="resume">
-                    <p>{{ exportInfo.workexperience || '暂无' }}</p>
-                  </el-col>
-                </van-tab>
-                <van-tab title="技术能力">
-                  <el-col :span="24" class="basic">
-                    <p>
-                      <span>科研综述</span>
-                      <span>{{ exportInfo.scientific || '暂无' }}</span>
-                    </p>
-                    <p>
-                      <span>承担项目</span>
-                      <span>{{ exportInfo.undertakingproject || '暂无' }}</span>
-                    </p>
-                    <p>
-                      <span>科技奖励</span>
-                      <span>{{ exportInfo.scienceaward || '暂无' }}</span>
-                    </p>
-                    <p>
-                      <span>社会任职</span>
-                      <span>{{ exportInfo.social || '暂无' }}</span>
-                    </p>
-                  </el-col>
-                </van-tab>
-              </van-tabs>
-            </el-col>
-          </el-col>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import NavBar from '@/layout/common/topInfo.vue';
-import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: exportuser } = createNamespacedHelpers('exportuser');
-export default {
-  name: 'exportDetail',
-  props: {},
-  components: {
-    NavBar,
-  },
-  data: function() {
-    return {
-      // 头部标题
-      title: '',
-      // meta为true
-      isleftarrow: '',
-      // 返回
-      navShow: true,
-      beijing: require('@/assets/test1.jpg'),
-      expertimage: require('@/assets/222.png'),
-      active: '1',
-      exportInfo: {},
-    };
-  },
-  async created() {
-    if (this.id) {
-      await this.search();
-    }
-  },
-  methods: {
-    ...exportuser(['fetch']),
-    async search() {
-      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']),
-    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;
-  background: #fff;
-  background: #fff;
-  .top {
-    height: 150px;
-    overflow: hidden;
-    .el-image {
-      height: 150px;
-      overflow: hidden;
-    }
-  }
-  .message {
-    position: relative;
-    top: -40px;
-    padding: 0 15px;
-    .one {
-      height: 80px;
-      height: 80px;
-      margin: 0 0 15px 0;
-
-      .el-image {
-        float: left;
-        width: 80px;
-        height: 80px;
-        border-radius: 90px;
-      }
-      p {
-        float: left;
-        width: 65%;
-        font-size: 18px;
-        padding: 0 15px;
-        span {
-          display: inline-block;
-          width: 100%;
-          padding: 9px 0px;
-        }
-      }
-    }
-    .two {
-      .basic {
-        font-size: 16px;
-        color: #000;
-        p {
-          padding: 0 10px;
-          min-height: 40px;
-          line-height: 40px;
-          border-bottom: 1px dashed #f6f6f6;
-          span:first-child {
-            display: inline-block;
-            width: 25%;
-            color: #cccccc;
-          }
-        }
-      }
-      .resume {
-        font-size: 16px;
-        padding: 10px;
-        p {
-          line-height: 30px;
-        }
-      }
-    }
-  }
-}
-/deep/.van-tabs--card > .van-tabs__wrap {
-  height: 40px;
-}
-/deep/.van-tabs__nav--card {
-  height: 40px;
-  border: 1px solid #ccc;
-  margin: 0;
-}
-/deep/.van-tabs__nav--card .van-tab {
-  color: #666;
-}
-/deep/.van-tabs__nav--card .van-tab.van-tab--active {
-  background: transparent;
-  color: #2c69fe;
-  font-weight: bold;
-}
-/deep/.van-tabs__nav--card .van-tab {
-  border-right: 1px solid #ccc;
-}
-</style>

+ 0 - 226
src/views/market copy/index.vue

@@ -1,226 +0,0 @@
-<template>
-  <div id="index">
-    <el-row>
-      <el-col :span="24" class="style">
-        <el-col :span="24" class="top">
-          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
-        </el-col>
-        <el-col :span="24" class="down">
-          <el-col :span="24" class="search">
-            <el-col :span="6" class="type">
-              <el-select v-model="type" placeholder="请选择" clearable @change="typeChange">
-                <el-option v-for="(item, index) in typeList" :key="index" :label="item.name" :value="item.type"> </el-option>
-              </el-select>
-            </el-col>
-            <el-col :span="18" class="input">
-              <van-search v-model="name" @search="onSearch" placeholder="请输入信息标题" />
-            </el-col>
-          </el-col>
-          <el-col :span="24" class="data">
-            <van-tabs v-model="active">
-              <van-tab title="技术成果">
-                <achieve :list="achieveList" @detailBtn="detailBtn"></achieve>
-              </van-tab>
-              <van-tab title="科技需求">
-                <technology :list="technologyList" @detailBtn="detailBtn"></technology>
-              </van-tab>
-              <van-tab title="商务服务">
-                <business :list="businessList" @detailBtn="detailBtn"></business>
-              </van-tab>
-              <van-tab title="专家智库">
-                <expert :list="expertList" @detailBtn="expertBtn"></expert>
-              </van-tab>
-            </van-tabs>
-          </el-col>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import achieve from './newparts/achieve.vue';
-import technology from './newparts/technology.vue';
-import business from './newparts/business.vue';
-import expert from './newparts/expert.vue';
-import NavBar from '@/layout/common/topInfo.vue';
-import footInfo from '@/layout/common/footInfo.vue';
-import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: product } = createNamespacedHelpers('product');
-const { mapActions: exportuser } = createNamespacedHelpers('exportuser');
-export default {
-  name: 'index',
-  props: {},
-  components: {
-    NavBar,
-    // footInfo,
-    // 技术成果
-    achieve,
-    // 科技需求
-    technology,
-    // 商务服务
-    business,
-    // 专家智库
-    expert,
-  },
-  data: function() {
-    return {
-      // 头部标题
-      title: '',
-      // meta为true
-      isleftarrow: '',
-      // 返回
-      navShow: true,
-      // 显示菜单
-      active: 0,
-      // 技术成果
-      achieveList: [],
-      // 科技需求
-      technologyList: [],
-      // 商务服务
-      businessList: [],
-      // 专家智库
-      expertList: [],
-      // 查询
-      typeList: [
-        { name: '技术成果', type: '0' },
-        { name: '科技需求', type: '1' },
-        { name: '商务服务', type: '2' },
-        { name: '专家智库', type: '3' },
-      ],
-      type: '',
-      name: '',
-    };
-  },
-  async created() {
-    await this.search();
-  },
-  methods: {
-    ...product(['query']),
-    ...exportuser({ expertquery: 'query' }),
-    async search() {
-      let res = await this.query({ skip: 0, type: '1', status: '1' });
-      if (this.$checkRes(res)) this.$set(this, `achieveList`, res.data);
-      res = await this.query({ skip: 0, type: '0', status: '1' });
-      if (this.$checkRes(res)) this.$set(this, `technologyList`, res.data);
-      res = await this.query({ skip: 0, type: '2', status: '1' });
-      if (this.$checkRes(res)) this.$set(this, `businessList`, res.data);
-      res = await this.expertquery({ skip: 0, status: '1' });
-      if (this.$checkRes(res)) this.$set(this, `expertList`, res.data);
-    },
-    // 成果,需求,商务详情
-    detailBtn(data) {
-      this.$router.push({ path: '/market/productDetail', query: { id: data.id, type: data.type } });
-    },
-    // 专家
-    expertBtn(data) {
-      this.$router.push({ path: '/market/exportDetail', query: { id: data.id } });
-    },
-    // 查询
-    async searchList({ ...info } = {}) {
-      let type = this.type;
-      if (this.name) {
-        info.name = this.name;
-        if (type == 0) {
-          let res = await this.query({ skip: 0, type: '1', status: '1', ...info });
-          if (this.$checkRes(res)) this.$set(this, `achieveList`, res.data);
-        } else if (type == 1) {
-          let res = await this.query({ skip: 0, type: '0', status: '1', ...info });
-          if (this.$checkRes(res)) this.$set(this, `technologyList`, res.data);
-        } else if (type == 2) {
-          let res = await this.query({ skip: 0, type: '2', status: '1', ...info });
-          if (this.$checkRes(res)) this.$set(this, `businessList`, res.data);
-        } else if (type == 3) {
-          let res = await this.expertquery({ skip: 0, status: '1', ...info });
-          if (this.$checkRes(res)) this.$set(this, `expertList`, res.data);
-        }
-      } else this.search();
-    },
-    // 选择类型
-    typeChange(value) {
-      if (value) {
-        this.active = '';
-        this.$set(this, `type`, value);
-        let index = this.typeList.findIndex(i => i.type == value);
-        if (index) {
-          this.$set(this, `active`, index);
-        }
-      }
-    },
-    // 输入框查询
-    onSearch(data) {
-      this.$set(this, `name`, data);
-      if (this.type) {
-        this.searchList();
-      } else {
-        this.$notify({
-          message: '请选择信息类型',
-          type: 'danger',
-        });
-      }
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-  },
-  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;
-  .down {
-    position: relative;
-    .search {
-      position: fixed;
-      width: 100%;
-      z-index: 999;
-      border-bottom: 1px solid #ccc;
-      background-color: #fff;
-      .type {
-        /deep/.el-input__inner {
-          border: none;
-          padding: 0;
-          height: 30px;
-          line-height: 30px;
-        }
-        .el-select {
-          padding: 10px 0px 0px 5px;
-        }
-        /deep/.el-input__icon {
-          line-height: 30px;
-        }
-      }
-      .input {
-        .van-search {
-          padding: 10px 12px 10px 0;
-        }
-      }
-    }
-    .data {
-      position: absolute;
-      width: 100%;
-      top: 54px;
-      background: #f9fafc;
-    }
-  }
-}
-.top {
-  height: 46px;
-  overflow: hidden;
-}
-.foot {
-  position: absolute;
-  bottom: 0;
-}
-</style>

+ 0 - 76
src/views/market copy/newparts/achieve.vue

@@ -1,76 +0,0 @@
-<template>
-  <div id="achieve">
-    <el-row>
-      <el-col :span="24" class="achieve">
-        <el-col :span="24" class="list" v-for="(item, index) in list" :key="index" @click.native="detailBtn(item)">
-          <el-col :span="24" class="name textOver">
-            {{ item.name }}
-          </el-col>
-          <el-col :span="24" class="company textOver"> 成果单位:{{ item.company || '暂无' }} </el-col>
-          <el-col :span="24" class="other">
-            <span class="textOver">领域:{{ item.field || '暂无' }}</span>
-            <span class="textOver">联系人:{{ item.contacts || '暂无' }}</span>
-          </el-col>
-        </el-col>
-      </el-col>
-      <el-backtop :bottom="50" :right="10"> </el-backtop>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-export default {
-  name: 'achieve',
-  props: {
-    list: { type: Array },
-  },
-  components: {},
-  data: function() {
-    return {};
-  },
-  created() {},
-  methods: {
-    detailBtn(data) {
-      this.$emit('detailBtn', data);
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-    pageTitle() {
-      return `${this.$route.meta.title}`;
-    },
-  },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.achieve {
-  padding: 0 10px;
-  .list {
-    border-bottom: 1px dashed #ccc;
-    padding: 10px 0;
-    .name {
-      font-size: 18px;
-      font-weight: bold;
-    }
-    .company {
-      font-size: 16px;
-      color: #666;
-      padding: 5px 0 0 0;
-    }
-    .other {
-      font-size: 16px;
-      color: #666;
-      padding: 5px 0 0 0;
-      span {
-        display: inline-block;
-        width: 50%;
-      }
-    }
-  }
-}
-</style>

+ 0 - 76
src/views/market copy/newparts/business.vue

@@ -1,76 +0,0 @@
-<template>
-  <div id="business">
-    <el-row>
-      <el-col :span="24" class="achieve">
-        <el-col :span="24" class="list" v-for="(item, index) in list" :key="index" @click.native="detailBtn(item)">
-          <el-col :span="24" class="name textOver">
-            {{ item.name }}
-          </el-col>
-          <el-col :span="24" class="company textOver"> 服务单位:{{ item.company || '暂无' }} </el-col>
-          <el-col :span="24" class="other">
-            <span class="textOver">信息属性:{{ item.messattribute || '暂无' }}</span>
-            <span class="textOver">联系人:{{ item.qqwx || '暂无' }}</span>
-          </el-col>
-        </el-col>
-      </el-col>
-      <el-backtop :bottom="50" :right="10"> </el-backtop>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-export default {
-  name: 'business',
-  props: {
-    list: { type: Array },
-  },
-  components: {},
-  data: function() {
-    return {};
-  },
-  created() {},
-  methods: {
-    detailBtn(data) {
-      this.$emit('detailBtn', data);
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-    pageTitle() {
-      return `${this.$route.meta.title}`;
-    },
-  },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.achieve {
-  padding: 0 10px;
-  .list {
-    border-bottom: 1px dashed #ccc;
-    padding: 10px 0;
-    .name {
-      font-size: 18px;
-      font-weight: bold;
-    }
-    .company {
-      font-size: 16px;
-      color: #666;
-      padding: 5px 0 0 0;
-    }
-    .other {
-      font-size: 16px;
-      color: #666;
-      padding: 5px 0 0 0;
-      span {
-        display: inline-block;
-        width: 50%;
-      }
-    }
-  }
-}
-</style>

+ 0 - 79
src/views/market copy/newparts/expert.vue

@@ -1,79 +0,0 @@
-<template>
-  <div id="expert">
-    <el-row>
-      <el-col :span="24" class="achieve">
-        <el-col :span="24" class="list" v-for="(item, index) in list" :key="index" @click.native="detailBtn(item)">
-          <el-col :span="6" class="image">
-            <el-image v-if="item.expertimage != null || undefined" :src="item.expertimage"></el-image>
-            <el-image :src="expertimage" v-else></el-image>
-          </el-col>
-          <el-col :span="18" class="name">
-            <p class="textOver">{{ item.name || '暂无' }}</p>
-            <p class="textOver">{{ item.zwzc || '暂无' }}</p>
-            <p class="textOver">{{ item.company || '暂无' }}</p>
-          </el-col>
-        </el-col>
-      </el-col>
-      <el-backtop :bottom="50" :right="10"> </el-backtop>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-export default {
-  name: 'expert',
-  props: {
-    list: { type: Array },
-  },
-  components: {},
-  data: function() {
-    return {
-      expertimage: require('@/assets/222.png'),
-    };
-  },
-  created() {},
-  methods: {
-    detailBtn(data) {
-      this.$emit('detailBtn', data);
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-    pageTitle() {
-      return `${this.$route.meta.title}`;
-    },
-  },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.achieve {
-  padding: 0 10px;
-  .list {
-    border-bottom: 1px dashed #ccc;
-    padding: 10px 0;
-    .image {
-      .el-image {
-        width: 100%;
-        border-radius: 90px;
-        height: 88px;
-      }
-    }
-    .name {
-      padding: 0 10px;
-      p {
-        font-size: 16px;
-        padding: 6px 0 0 0;
-      }
-      p:nth-child(1) {
-        font-size: 18px;
-        font-weight: bold;
-      }
-    }
-  }
-}
-</style>

+ 0 - 278
src/views/market copy/newparts/productInfo.vue

@@ -1,278 +0,0 @@
-<template>
-  <div id="productInfo">
-    <el-row>
-      <span v-if="type == '0'" class="one">
-        <el-col :span="24" class="top">
-          <el-carousel trigger="click" class="carousel">
-            <template v-if="info.image && info.image.length > 0">
-              <el-carousel-item v-for="(item, index) in info.image" :key="index">
-                <el-image :src="item.url" style="width:100%"> </el-image>
-              </el-carousel-item>
-            </template>
-            <template v-else>
-              <el-image :src="noimage"></el-image>
-            </template>
-          </el-carousel>
-        </el-col>
-        <el-col :span="24" class="message">
-          <p>
-            <span>产品名称</span>
-            <span>{{ info.name || '暂无' }}</span>
-          </p>
-          <p>
-            <span>需求方</span>
-            <span>{{ info.company || '暂无' }}</span>
-          </p>
-          <p>
-            <span>所属领域</span>
-            <span>{{ info.field || '暂无' }}</span>
-          </p>
-          <p>
-            <span>注册类型</span>
-            <span>{{ info.companytype || '暂无' }}</span>
-          </p>
-          <p>
-            <span>注册时间</span>
-            <span>{{ info.companydate || '暂无' }}</span>
-          </p>
-          <p>
-            <span>注册资金</span>
-            <span>{{ info.companycapital || '暂无' }}</span>
-          </p>
-          <p>
-            <span>投资预算</span>
-            <span>{{ info.budget || '暂无' }}</span>
-          </p>
-
-          <p>
-            <span>紧急程度</span>
-            <span>{{ info.degreeurgency || '暂无' }}</span>
-          </p>
-          <p>
-            <span>合作方式</span>
-            <span>{{ info.cooperation || '暂无' }}</span>
-          </p>
-          <p>
-            <span>联系人</span>
-            <span>{{ info.contacts || '暂无' }}</span>
-          </p>
-          <p>
-            <span>电子邮箱</span>
-            <span>{{ info.email || '暂无' }}</span>
-          </p>
-          <p>
-            <span>需求说明</span>
-            <span>{{ info.requirementdesc || '暂无' }}</span>
-          </p>
-          <p>
-            <span>预期目标</span>
-            <span>{{ info.expect || '暂无' }}</span>
-          </p>
-          <p>
-            <span>需求现状</span>
-            <span>{{ info.present || '暂无' }}</span>
-          </p>
-          <p>
-            <span>合作要求</span>
-            <span>{{ info.condition || '暂无' }}</span>
-          </p>
-        </el-col>
-      </span>
-      <span v-else-if="type == '1'" class="one">
-        <el-col :span="24" class="top">
-          <el-carousel trigger="click" class="carousel">
-            <template v-if="info.image && info.image.length > 0">
-              <el-carousel-item v-for="(item, index) in info.image" :key="index">
-                <el-image :src="item.url" style="width:100%"> </el-image>
-              </el-carousel-item>
-            </template>
-            <template v-else>
-              <el-image :src="noimage"></el-image>
-            </template>
-          </el-carousel>
-        </el-col>
-        <el-col :span="24" class="message">
-          <p>
-            <span>产品名称</span>
-            <span>{{ info.name || '暂无' }}</span>
-          </p>
-          <p>
-            <span>所属领域</span>
-            <span>{{ info.field || '暂无' }}</span>
-          </p>
-          <p>
-            <span>合作方式</span>
-            <span>{{ info.cooperation || '暂无' }}</span>
-          </p>
-          <p>
-            <span>成果状态</span>
-            <span>{{ info.achievestatus || '暂无' }}</span>
-          </p>
-          <p>
-            <span>成果来源</span>
-            <span>{{ info.achievesource || '暂无' }}</span>
-          </p>
-          <p>
-            <span>成果权属</span>
-            <span>{{ info.achieveown || '暂无' }}</span>
-          </p>
-          <p>
-            <span>意向价格</span>
-            <span>{{ info.intentionprice || '暂无' }}</span>
-          </p>
-          <p>
-            <span>联系人</span>
-            <span>{{ info.contacts || '暂无' }}</span>
-          </p>
-          <p>
-            <span>联系方式</span>
-            <span>{{ info.email }}/{{ info.qqwx || '暂无' }}</span>
-          </p>
-          <p>
-            <span>项目路演</span>
-            <el-link :href="info.roadshow" :underline="false">{{ info.roadshow ? '观看演示文件' : '暂无' }}</el-link>
-          </p>
-          <p>
-            <span>成果简介</span>
-            <span>{{ info.achievebrief || '暂无' }}</span>
-          </p>
-          <p>
-            <span>技术特点</span>
-            <span>{{ info.features || '暂无' }}</span>
-          </p>
-          <p>
-            <span>技术团队</span>
-            <span>{{ info.team || '暂无' }}</span>
-          </p>
-          <p>
-            <span>商业预期</span>
-            <span>{{ info.expectations || '暂无' }}</span>
-          </p>
-          <p>
-            <span>合作要求</span>
-            <span>{{ info.condition || '暂无' }}</span>
-          </p>
-        </el-col>
-      </span>
-      <span v-else-if="type == '2'" class="one">
-        <el-col :span="24" class="message">
-          <p>
-            <span>产品名称</span>
-            <span>{{ info.name || '暂无' }}</span>
-          </p>
-          <p>
-            <span>信息属性</span>
-            <span>{{ info.messattribute || '暂无' }}</span>
-          </p>
-          <p>
-            <span>需求程度</span>
-            <span>{{ info.demand || '暂无' }}</span>
-          </p>
-          <p>
-            <span>联系人</span>
-            <span>{{ info.contacts || '暂无' }}</span>
-          </p>
-          <p>
-            <span>联系方式</span>
-            <span>{{ info.qqwx || '暂无' }}</span>
-          </p>
-          <p>
-            <span>信息描述</span>
-            <span>{{ info.informationdesc || '暂无' }}</span>
-          </p>
-          <p>
-            <span>核心要素</span>
-            <span>{{ info.coreelements || '暂无' }}</span>
-          </p>
-
-          <p>
-            <span>价格信息</span>
-            <span>{{ info.priceinfo || '暂无' }}</span>
-          </p>
-          <p>
-            <span>商务预期</span>
-            <span>{{ info.businessexpect || '暂无' }}</span>
-          </p>
-        </el-col>
-      </span>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-export default {
-  name: 'productInfo',
-  props: {
-    info: { type: Object },
-    type: { type: String },
-  },
-  components: {},
-  data: function() {
-    return {
-      noimage: require('@/assets/noimage.jpg'),
-    };
-  },
-  created() {},
-  methods: {},
-  computed: {
-    ...mapState(['user']),
-    pageTitle() {
-      return `${this.$route.meta.title}`;
-    },
-  },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.one {
-  .top {
-    background: #fff;
-    min-height: 220px;
-    padding: 0 15px;
-    margin: 0 0 10px 0;
-    .carousel {
-      height: 200px !important;
-      padding: 10px 0;
-    }
-    .el-image {
-      width: 100%;
-      height: 200px;
-    }
-    p {
-      font-size: 18px;
-      color: #000;
-      padding: 0 0 10px 0;
-    }
-  }
-  .message {
-    background: #fff;
-    padding: 0 15px;
-    min-height: 50px;
-    p {
-      min-height: 50px;
-      line-height: 50px;
-      border-bottom: 1px solid #ccc;
-    }
-    span:first-child {
-      display: inline-block;
-      width: 80px;
-      color: #ccc;
-    }
-    span:last-child {
-      color: #000;
-    }
-    div {
-      p {
-        border-bottom: none;
-      }
-    }
-  }
-}
-/deep/.el-carousel__container {
-  height: 200px !important;
-}
-</style>

+ 0 - 76
src/views/market copy/newparts/technology.vue

@@ -1,76 +0,0 @@
-<template>
-  <div id="technology">
-    <el-row>
-      <el-col :span="24" class="achieve">
-        <el-col :span="24" class="list" v-for="(item, index) in list" :key="index" @click.native="detailBtn(item)">
-          <el-col :span="24" class="name textOver">
-            {{ item.name }}
-          </el-col>
-          <el-col :span="24" class="company textOver"> 需求单位:{{ item.company || '暂无' }} </el-col>
-          <el-col :span="24" class="other">
-            <span class="textOver">所属领域:{{ item.field || '暂无' }}</span>
-            <span class="textOver">合作方式:{{ item.cooperation || '暂无' }}</span>
-          </el-col>
-        </el-col>
-      </el-col>
-      <el-backtop :bottom="50" :right="10"> </el-backtop>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-export default {
-  name: 'technology',
-  props: {
-    list: { type: Array },
-  },
-  components: {},
-  data: function() {
-    return {};
-  },
-  created() {},
-  methods: {
-    detailBtn(data) {
-      this.$emit('detailBtn', data);
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-    pageTitle() {
-      return `${this.$route.meta.title}`;
-    },
-  },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.achieve {
-  padding: 0 10px;
-  .list {
-    border-bottom: 1px dashed #ccc;
-    padding: 10px 0;
-    .name {
-      font-size: 18px;
-      font-weight: bold;
-    }
-    .company {
-      font-size: 16px;
-      color: #666;
-      padding: 5px 0 0 0;
-    }
-    .other {
-      font-size: 16px;
-      color: #666;
-      padding: 5px 0 0 0;
-      span {
-        display: inline-block;
-        width: 50%;
-      }
-    }
-  }
-}
-</style>

+ 0 - 90
src/views/market copy/productDetail.vue

@@ -1,90 +0,0 @@
-<template>
-  <div id="productDetail">
-    <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">
-          <productInfo :info="productInfo" :type="protype"></productInfo>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import productInfo from './newparts/productInfo.vue';
-import NavBar from '@/layout/common/topInfo.vue';
-import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: product } = createNamespacedHelpers('product');
-export default {
-  name: 'productDetail',
-  props: {},
-  components: {
-    NavBar,
-    productInfo,
-  },
-  data: function() {
-    return {
-      // 头部标题
-      title: '',
-      // meta为true
-      isleftarrow: '',
-      // 返回
-      navShow: true,
-      productInfo: {},
-      protype: '',
-    };
-  },
-  created() {
-    this.$set(this, `protype`, this.type);
-    if (this.type === '0') this.$set(this, `title`, '科技需求');
-    else if (this.type === '1') this.$set(this, `title`, '技术成果');
-    else if (this.type === '2') this.$set(this, `title`, '商务服务');
-    if (this.id) this.search();
-  },
-  methods: {
-    ...product(['fetch']),
-    async search() {
-      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']),
-    type() {
-      return this.$route.query.type;
-    },
-    id() {
-      return this.$route.query.id;
-    },
-  },
-  mounted() {
-    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>

+ 44 - 91
src/views/market/detail.vue

@@ -1,25 +1,25 @@
 <template>
   <div id="detail">
     <el-row>
-      <el-col :span="24" class="detail">
+      <el-col :span="24" class="main">
         <el-col :span="24" class="top">
-          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow" @onClickLeft="back"> </NavBar>
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow" @onClickLeft="onClickLeft"> </NavBar>
         </el-col>
-        <el-col :span="24" class="main">
-          <span v-if="type == '4'">
-            <pantentDeatil :info="info"></pantentDeatil>
+        <el-col :span="24" class="info">
+          <span v-if="type == '0'">
+            <achieveDetail></achieveDetail>
           </span>
           <span v-else-if="type == '1'">
-            <tecDetail :info="info"></tecDetail>
-          </span>
-          <span v-else-if="type == '0'">
-            <demandDetail :info="info"></demandDetail>
+            <patentDetail></patentDetail>
           </span>
           <span v-else-if="type == '2'">
-            <serveDetail :info="info"></serveDetail>
+            <techolDetail></techolDetail>
+          </span>
+          <span v-else-if="type == '3'">
+            <expertDetail></expertDetail>
           </span>
-          <span v-else>
-            <expertDetail :info="info"></expertDetail>
+          <span v-else-if="type == '4'">
+            <serviceDetail></serviceDetail>
           </span>
         </el-col>
       </el-col>
@@ -28,39 +28,23 @@
 </template>
 
 <script>
-import { mapState, createNamespacedHelpers } from 'vuex';
+import achieveDetail from './detail/achieveDetail.vue';
+import patentDetail from './detail/patentDetail.vue';
+import techolDetail from './detail/techolDetail.vue';
+import expertDetail from './detail/expertDetail.vue';
+import serviceDetail from './detail/serviceDetail.vue';
 import NavBar from '@/layout/common/topInfo.vue';
-//e专利详情
-import pantentDeatil from './detailParts/pantentDeatil.vue';
-//科技成果详情
-import tecDetail from './detailParts/tecDetail.vue';
-//科技需求详情
-import demandDetail from './detailParts/demandDetail.vue';
-//在线服务详情
-import serveDetail from './detailParts/serveDetail.vue';
-//专家智库详情
-import expertDetail from './detailParts/expertDetail.vue';
-const { mapActions: product } = createNamespacedHelpers('product');
-const { mapActions: exportuser } = createNamespacedHelpers('exportuser');
+import { mapState, createNamespacedHelpers } from 'vuex';
 export default {
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
   name: 'detail',
   props: {},
   components: {
-    //顶部
     NavBar,
-    //e专利详情
-    pantentDeatil,
-    //科技成果详情
-    tecDetail,
-    //科技需求详情
-    demandDetail,
-    //在线服务详情
-    serveDetail,
-    //专家智库详情
+    achieveDetail,
+    patentDetail,
+    techolDetail,
     expertDetail,
+    serviceDetail,
   },
   data: function() {
     return {
@@ -70,77 +54,46 @@ export default {
       isleftarrow: '',
       // 返回
       navShow: true,
-      info: {},
     };
   },
-  async created() {
-    await this.search();
-    await this.setTitle();
+  created() {
+    this.searchTitle();
   },
   methods: {
-    ...product(['fetch']),
-    ...exportuser({ exportFetch: 'fetch' }),
-    //查详情
-    async search() {
-      if (this.type == '4') {
-        console.log('专利');
-        return;
-      } else if (this.type == '0' || this.type == '1' || this.type == '2') {
-        const res = await this.fetch(this.id);
-        if (this.$checkRes(res)) {
-          this.$set(this, `info`, res.data);
-        }
-      } else {
-        const res = await this.exportFetch(this.id);
-        if (this.$checkRes(res)) {
-          this.$set(this, `info`, res.data);
-        }
-      }
-    },
-    //设置标题
-    setTitle() {
-      let type = this.type;
-      if (type == '1') {
-        this.$set(this, `title`, '科技成果');
-      } else if (type === '4') {
-        this.$set(this, `title`, 'e专利');
-      } else if (type == '0') {
-        this.$set(this, `title`, '科技需求');
-      } else if (type == '2') {
-        this.$set(this, `title`, '在线服务');
-      } else {
-        this.$set(this, `title`, '专家智库');
-      }
-    },
     // 返回首页
-    back() {
+    onClickLeft() {
       this.$router.push({ path: '/market/index' });
     },
+    // 获取标题
+    searchTitle() {
+      if (this.type == '0') this.title = '技术成果详情';
+      else if (this.type == '1') this.title = 'e专利详情';
+      else if (this.type == '2') this.title = '科技需求详情';
+      else if (this.type == '3') this.title = '专家详情';
+      else if (this.type == '4') this.title = '在线服务详情';
+    },
   },
   computed: {
     ...mapState(['user']),
     type() {
       return this.$route.query.type;
     },
-    id() {
-      return this.$route.query.id;
-    },
   },
+  mounted() {
+    this.isleftarrow = this.$route.meta.isleftarrow;
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {},
 };
 </script>
 
 <style lang="less" scoped>
-.detail {
-  width: 100%;
-  min-height: 667px;
-  position: relative;
-  background-color: #f9fafc;
-}
-.top {
-  height: 46px;
-  overflow: hidden;
-}
 .main {
-  min-height: 570px;
+  .top {
+    height: 47px;
+    overflow: hidden;
+  }
 }
 </style>

+ 22 - 10
src/views/market/detailParts/demandDetail.vue

@@ -1,7 +1,7 @@
 <template>
-  <div id="demandDetail">
+  <div id="achieveDetail">
     <el-row>
-      <el-col :span="24" class="demandDetail">
+      <el-col :span="24" class="main">
         <el-col :span="24" class="top">
           <van-swipe style="height: 220px;" vertical>
             <template v-if="info.image && info.image.length > 0">
@@ -83,33 +83,45 @@
 </template>
 
 <script>
+const { mapActions: product } = createNamespacedHelpers('product');
 import { mapState, createNamespacedHelpers } from 'vuex';
 export default {
   metaInfo() {
     return { title: this.$route.meta.title };
   },
-  name: 'demandDetail',
-  props: {
-    info: { type: Object },
-  },
+  name: 'achieveDetail',
+  props: {},
   components: {},
   data: function() {
     return {
+      info: {},
       noimage: require('@/assets/noimage.jpg'),
     };
   },
-  created() {
-    // console.log(this.info);
+  async created() {
+    await this.search();
+  },
+  methods: {
+    ...product(['fetch']),
+    async search() {
+      let res = await this.fetch(this.id);
+      if (this.$checkRes(res)) {
+        this.$set(this, `info`, res.data);
+      }
+    },
   },
-  methods: {},
   computed: {
     ...mapState(['user']),
+    id() {
+      return this.$route.query.id;
+    },
   },
+  watch: {},
 };
 </script>
 
 <style lang="less" scoped>
-.demandDetail {
+.main {
   .top {
     padding: 0px 15px;
     margin-bottom: 10px;

+ 21 - 9
src/views/market/detailParts/expertDetail.vue

@@ -1,7 +1,7 @@
 <template>
-  <div id="expertDetail">
+  <div id="achieveDetail">
     <el-row>
-      <el-col :span="24" class="expertDetail">
+      <el-col :span="24" class="main">
         <el-col :span="24" class="top">
           <el-image :src="beijing"></el-image>
         </el-col>
@@ -87,23 +87,34 @@
 </template>
 
 <script>
+const { mapActions: exportuser } = createNamespacedHelpers('exportuser');
 import { mapState, createNamespacedHelpers } from 'vuex';
 export default {
   metaInfo() {
     return { title: this.$route.meta.title };
   },
-  name: 'expertDetail',
-  props: { info: { type: Object } },
+  name: 'achieveDetail',
+  props: {},
   components: {},
   data: function() {
     return {
+      info: {},
       beijing: require('@/assets/test1.jpg'),
       expertimage: require('@/assets/222.png'),
       active: '1',
     };
   },
-  created() {},
+  async created() {
+    await this.search();
+  },
   methods: {
+    ...exportuser(['fetch']),
+    async search() {
+      let res = await this.fetch(this.id);
+      if (this.$checkRes(res)) {
+        this.$set(this, `info`, res.data);
+      }
+    },
     // 隐藏手机号
     getphone(value) {
       if (value == undefined) {
@@ -125,15 +136,16 @@ export default {
   },
   computed: {
     ...mapState(['user']),
+    id() {
+      return this.$route.query.id;
+    },
   },
+  watch: {},
 };
 </script>
 
 <style lang="less" scoped>
-.expertDetail {
-  min-height: 570px;
-  background: #fff;
-  background: #fff;
+.main {
   .top {
     height: 150px;
     overflow: hidden;

+ 137 - 0
src/views/market/detail/patentDetail.vue

@@ -0,0 +1,137 @@
+<template>
+  <div id="achieveDetail">
+    <el-row>
+      <el-col :span="24" class="main">
+        <el-col :span="24" class="image">
+          <el-image v-if="info.img_url != undefined || null" :src="info.img_url"></el-image>
+          <el-image v-else :src="pic"></el-image>
+        </el-col>
+        <el-col :span="24" class="info">
+          <el-col :span="24" class="infoTxt">
+            <el-col :span="7" class="left">专利有效性:</el-col>
+            <el-col :span="17" class="right" style="color:#ff0000;font-weight:bold">{{ info.term || '暂无' }}</el-col>
+          </el-col>
+          <el-col :span="24" class="infoTxt">
+            <el-col :span="7" class="left">名称:</el-col>
+            <el-col :span="17" class="right">{{ info.name || '暂无' }}</el-col>
+          </el-col>
+          <el-col :span="24" class="infoTxt">
+            <el-col :span="7" class="left">申请号:</el-col>
+            <el-col :span="17" class="right">{{ info.create_number || '暂无' }}</el-col>
+          </el-col>
+          <el-col :span="24" class="infoTxt">
+            <el-col :span="7" class="left">申请日:</el-col>
+            <el-col :span="17" class="right">{{ info.create_date || '暂无' }}</el-col>
+          </el-col>
+          <el-col :span="24" class="infoTxt">
+            <el-col :span="7" class="left">公开(公告)号:</el-col>
+            <el-col :span="17" class="right">{{ info.success_number || '暂无' }}</el-col>
+          </el-col>
+          <el-col :span="24" class="infoTxt">
+            <el-col :span="7" class="left">公开(公告)日:</el-col>
+            <el-col :span="17" class="right">{{ info.success_date || '暂无' }}</el-col>
+          </el-col>
+          <el-col :span="24" class="infoTxt">
+            <el-col :span="7" class="left">专利类型:</el-col>
+            <el-col :span="17" class="right">{{ info.type || '暂无' }}</el-col>
+          </el-col>
+          <el-col :span="24" class="infoTxt">
+            <el-col :span="7" class="left">发明人:</el-col>
+            <el-col :span="17" class="right">{{ info.inventor || '暂无' }}</el-col>
+          </el-col>
+          <el-col :span="24" class="infoTxt">
+            <el-col :span="7" class="left">发明人地址:</el-col>
+            <el-col :span="17" class="right">{{ info.address || '暂无' }}</el-col>
+          </el-col>
+          <el-col :span="24" class="infoTxt">
+            <el-col :span="7" class="left">申请人:</el-col>
+            <el-col :span="17" class="right">{{ info.apply_personal || '暂无' }}</el-col>
+          </el-col>
+          <el-col :span="24" class="infoTxt">
+            <el-col :span="7" class="left">代理人:</el-col>
+            <el-col :span="17" class="right">{{ info.agent_personal || '暂无' }}</el-col>
+          </el-col>
+          <el-col :span="24" class="infoTxt">
+            <el-col :span="7" class="left">代理机构:</el-col>
+            <el-col :span="17" class="right">{{ info.agent || '暂无' }}</el-col>
+          </el-col>
+          <el-col :span="24" class="infoTxt">
+            <el-col :span="24" class="content"><span>摘要:</span>{{ info.abstract || '暂无' }}</el-col>
+          </el-col>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+const { mapActions: patent } = createNamespacedHelpers('patent');
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  name: 'achieveDetail',
+  props: {},
+  components: {},
+  data: function() {
+    return {
+      info: {},
+      pic: require('@a/fmzl.jpg'),
+    };
+  },
+  async created() {
+    await this.search();
+  },
+  methods: {
+    ...patent(['fetch']),
+    async search() {
+      let res = await this.fetch(this.id);
+      if (this.$checkRes(res)) {
+        this.$set(this, `info`, res.data);
+      }
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+    id() {
+      return this.$route.query.id;
+    },
+  },
+  watch: {},
+};
+</script>
+
+<style lang="less" scoped>
+.main {
+  .image {
+    padding: 10px;
+    .el-image {
+      width: 100%;
+      height: 200px;
+      box-shadow: 0 0 5px #ccc;
+    }
+  }
+  .info {
+    background: #ffffff;
+    padding: 0 10px;
+    .infoTxt {
+      padding: 10px 0;
+      border-bottom: 1px dashed #ccc;
+      .left {
+        font-size: 15px;
+      }
+      .right {
+        color: #666;
+      }
+      .content {
+        color: #666;
+        line-height: 30px;
+        span {
+          color: #000;
+        }
+      }
+    }
+  }
+}
+</style>

+ 27 - 13
src/views/market/detailParts/serveDetail.vue

@@ -1,7 +1,7 @@
 <template>
-  <div id="serveDetail">
+  <div id="achieveDetail">
     <el-row>
-      <el-col :span="24" class="serveDetail">
+      <el-col :span="24" class="main">
         <el-col :span="24" class="message">
           <p>
             <span>产品名称</span>
@@ -47,39 +47,53 @@
 </template>
 
 <script>
+const { mapActions: product } = createNamespacedHelpers('product');
 import { mapState, createNamespacedHelpers } from 'vuex';
 export default {
   metaInfo() {
     return { title: this.$route.meta.title };
   },
-  name: 'serveDetail',
-  props: {
-    info: { type: Object },
-  },
+  name: 'achieveDetail',
+  props: {},
   components: {},
   data: function() {
-    return {};
+    return {
+      info: {},
+    };
+  },
+  async created() {
+    await this.search();
+  },
+  methods: {
+    ...product(['fetch']),
+    async search() {
+      let res = await this.fetch(this.id);
+      if (this.$checkRes(res)) {
+        this.$set(this, `info`, res.data);
+      }
+    },
   },
-  created() {},
-  methods: {},
   computed: {
     ...mapState(['user']),
+    id() {
+      return this.$route.query.id;
+    },
   },
+  watch: {},
 };
 </script>
 
 <style lang="less" scoped>
-.serveDetail {
+.main {
   .message {
     background: #fff;
     padding: 0 15px;
-    min-height: 50px;
     p {
-      min-height: 50px;
-      line-height: 50px;
+      padding: 5px 0;
       border-bottom: 1px solid #ccc;
       span {
         color: #000;
+        line-height: 30px;
       }
       span:nth-child(1) {
         display: inline-block;

+ 25 - 46
src/views/market/detailParts/tecDetail.vue

@@ -1,19 +1,7 @@
 <template>
-  <div id="tecDetail">
+  <div id="achieveDetail">
     <el-row>
-      <el-col :span="24" class="tecDetail">
-        <!-- <el-col :span="24" class="top">
-          <el-carousel trigger="click" class="carousel">
-            <template v-if="info.image && info.image.length > 0">
-              <el-carousel-item v-for="(item, index) in info.image" :key="index">
-                <el-image :src="item.url" style="width:100%"> </el-image>
-              </el-carousel-item>
-            </template>
-            <template v-else>
-              <el-image :src="noimage"></el-image>
-            </template>
-          </el-carousel>
-        </el-col> -->
+      <el-col :span="24" class="main">
         <el-col :span="24" class="top">
           <van-swipe style="height: 220px;" vertical>
             <template v-if="info.image && info.image.length > 0">
@@ -94,50 +82,45 @@
 </template>
 
 <script>
+const { mapActions: product } = createNamespacedHelpers('product');
 import { mapState, createNamespacedHelpers } from 'vuex';
 export default {
   metaInfo() {
     return { title: this.$route.meta.title };
   },
-  name: 'tecDetail',
-  props: {
-    info: { type: Object },
-  },
+  name: 'achieveDetail',
+  props: {},
   components: {},
   data: function() {
     return {
+      info: {},
       noimage: require('@/assets/noimage.jpg'),
     };
   },
-  created() {},
-  methods: {},
+  async created() {
+    await this.search();
+  },
+  methods: {
+    ...product(['fetch']),
+    async search() {
+      let res = await this.fetch(this.id);
+      if (this.$checkRes(res)) {
+        this.$set(this, `info`, res.data);
+      }
+    },
+  },
   computed: {
     ...mapState(['user']),
+    id() {
+      return this.$route.query.id;
+    },
   },
+  watch: {},
 };
 </script>
 
 <style lang="less" scoped>
-.tecDetail {
-  // .top {
-  //   background: #fff;
-  //   min-height: 220px;
-  //   padding: 0 15px;
-  //   margin: 0 0 10px 0;
-  //   .carousel {
-  //     height: 200px !important;
-  //     padding: 10px 0;
-  //   }
-  //   .el-image {
-  //     width: 100%;
-  //     height: 200px;
-  //   }
-  //   p {
-  //     font-size: 18px;
-  //     color: #000;
-  //     padding: 0 0 10px 0;
-  //   }
-  // }
+.main {
   .top {
     padding: 0px 15px;
     margin-bottom: 10px;
@@ -154,13 +137,12 @@ export default {
   .message {
     background: #fff;
     padding: 0 15px;
-    min-height: 50px;
     p {
-      min-height: 50px;
-      line-height: 50px;
+      padding: 5px 0;
       border-bottom: 1px solid #ccc;
       span {
         color: #000;
+        line-height: 30px;
       }
       span:nth-child(1) {
         display: inline-block;
@@ -173,9 +155,6 @@ export default {
     }
   }
 }
-// /deep/.el-carousel__container {
-//   height: 200px !important;
-// }
 /deep/.el-link.el-link--default {
   color: #000;
 }

+ 37 - 237
src/views/market/index.vue

@@ -1,47 +1,32 @@
 <template>
   <div id="index">
     <el-row>
-      <el-col :span="24" class="con">
+      <el-col :span="24" class="main">
         <el-col :span="24" class="top">
-          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
+          <span v-if="active == 0">
+            <achieve></achieve>
+          </span>
+          <span v-else-if="active == 1">
+            <patent></patent>
+          </span>
+          <span v-else-if="active == 2">
+            <techol></techol>
+          </span>
+          <span v-else-if="active == 3">
+            <expert></expert>
+          </span>
+          <span v-else-if="active == 4">
+            <service></service>
+          </span>
         </el-col>
-        <el-col :span="24" class="box">
-          <el-col :span="24" class="search">
-            <el-col :span="6" class="select">
-              <el-select v-model="typeValue" placeholder="请选择" @change="selectChange">
-                <el-option v-for="(item, index) in typeList" :key="index" :label="item.name" :value="item.type"> </el-option>
-              </el-select>
-            </el-col>
-            <el-col :span="18" class="inputSearch">
-              <van-search v-model="SearchValue" placeholder="请输入信息标题" @search="onSearch" />
-            </el-col>
-          </el-col>
-          <el-col :span="24" class="main">
-            <span v-if="active == 0">
-              <tec :tecList="tecList" @detail="detail"></tec>
-            </span>
-            <span v-else-if="active == 1">
-              <pantent :pantentList="pantentList" @detail="detail" :typeList="typeList"></pantent>
-            </span>
-            <span v-else-if="active == 2">
-              <demand :demandList="demandList" @detail="detail"></demand>
-            </span>
-            <span v-else-if="active == 3">
-              <expert :expertList="expertList" @detail="detail"></expert>
-            </span>
-            <span v-else-if="active == 4">
-              <serve :serveList="serveList" @detail="detail"></serve>
-            </span>
-          </el-col>
-          <el-col :span="24" class="foot">
-            <van-tabbar v-model="active">
-              <van-tabbar-item icon="send-gift-o">技术成果</van-tabbar-item>
-              <van-tabbar-item icon="todo-list-o">e专利</van-tabbar-item>
-              <van-tabbar-item icon="flag-o">科技需求</van-tabbar-item>
-              <van-tabbar-item icon="manager-o">专家智库</van-tabbar-item>
-              <van-tabbar-item icon="comment-circle-o">在线服务</van-tabbar-item>
-            </van-tabbar>
-          </el-col>
+        <el-col :span="24" class="foot">
+          <van-tabbar v-model="active">
+            <van-tabbar-item icon="send-gift-o">技术成果</van-tabbar-item>
+            <van-tabbar-item icon="todo-list-o">e专利</van-tabbar-item>
+            <van-tabbar-item icon="flag-o">科技需求</van-tabbar-item>
+            <van-tabbar-item icon="manager-o">专家智库</van-tabbar-item>
+            <van-tabbar-item icon="comment-circle-o">在线服务</van-tabbar-item>
+          </van-tabbar>
         </el-col>
       </el-col>
     </el-row>
@@ -49,223 +34,38 @@
 </template>
 
 <script>
+import achieve from './index/achieve.vue';
+import patent from './index/patent.vue';
+import techol from './index/techol.vue';
+import expert from './index/expert.vue';
+import service from './index/service.vue';
 import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: product } = createNamespacedHelpers('product');
-const { mapActions: exportuser } = createNamespacedHelpers('exportuser');
-import NavBar from '@/layout/common/topInfo.vue';
-//技术成果
-import tec from './parts/tec.vue';
-//e专利
-import pantent from './parts/pantent.vue';
-//科技需求
-import demand from './parts/demand.vue';
-//专家智库
-import expert from './parts/expert.vue';
-//在线服务
-import serve from './parts/serve.vue';
 export default {
   metaInfo() {
     return { title: this.$route.meta.title };
   },
   name: 'index',
   props: {},
-  components: {
-    //顶部
-    NavBar,
-    // 技术成果
-    tec,
-    //e专利
-    pantent,
-    //科技需求
-    demand,
-    //专家智库
-    expert,
-    //在线服务
-    serve,
-  },
+  components: { achieve, patent, techol, expert, service },
   data: function() {
     return {
-      // 头部标题
-      title: '',
-      // meta为true
-      isleftarrow: '',
-      // 返回
-      navShow: true,
-      //类型列表
-      typeList: [
-        { name: '技术成果', type: '0' },
-        { name: 'e专利', type: '4' },
-        { name: '科技需求', type: '1' },
-        { name: '专家智库', type: '3' },
-        { name: '在线服务', type: '2' },
-      ],
-      //选择的类型
-      typeValue: '',
-      //搜索
-      SearchValue: '',
-      //tab默认选中索引值
       active: 0,
-      //科技成果列表
-      tecList: [],
-      //专利列表 假设e专利的type为4,注意这里的type和typeList里面的e专利的type要一样,还有改了详情的type也要改
-      pantentList: [
-        {
-          title: '标题',
-          time: '2021-09-19',
-          type: '4',
-        },
-        {
-          title: '标题',
-          time: '2021-09-19',
-          type: '4',
-        },
-        {
-          title: '标题',
-          time: '2021-09-19',
-          type: '4',
-        },
-      ],
-      //科技需求列表
-      demandList: [],
-      //专家智库列表
-      expertList: [],
-      //在线服务列表
-      serveList: [],
     };
   },
-  created() {
-    this.search();
-  },
-  methods: {
-    ...product(['query']),
-    ...exportuser({ expertquery: 'query' }),
-    async search() {
-      let res = await this.query({ skip: 0, type: '1', status: '1' });
-      if (this.$checkRes(res)) {
-        this.$set(this, `tecList`, res.data);
-      }
-      res = await this.query({ skip: 0, type: '0', status: '1' });
-      if (this.$checkRes(res)) {
-        this.$set(this, `demandList`, res.data);
-      }
-      res = await this.query({ skip: 0, type: '2', status: '1' });
-      if (this.$checkRes(res)) {
-        this.$set(this, `serveList`, res.data);
-      }
-      res = await this.expertquery({ skip: 0, status: '1' });
-      if (this.$checkRes(res)) {
-        this.$set(this, `expertList`, res.data);
-      }
-    },
-    //下拉选择
-    selectChange(type) {
-      const index = this.typeList.findIndex(i => i.type == type);
-      if (index || index == 0) {
-        this.$set(this, `active`, index);
-      }
-    },
-    //搜索
-    onSearch(name) {
-      if (this.typeValue) {
-        this.searchText();
-      } else {
-        this.$notify({
-          message: '请选择分类',
-          type: 'danger',
-        });
-      }
-    },
-    //根据title查询
-    async searchText({ ...info } = {}) {
-      if (this.SearchValue) {
-        info.name = this.SearchValue;
-        if (this.typeValue == 0) {
-          const res = await this.query({ skip: 0, type: '1', status: '1', ...info });
-          if (this.$checkRes(res)) this.$set(this, `tecList`, res.data);
-        } else if (this.typeValue == 1) {
-          const res = await this.query({ skip: 0, type: '0', status: '1', ...info });
-          if (this.$checkRes(res)) this.$set(this, `demandList`, res.data);
-        } else if (this.typeValue == 2) {
-          const res = await this.query({ skip: 0, type: '2', status: '1', ...info });
-          if (this.$checkRes(res)) this.$set(this, `serveList`, res.data);
-        } else if (this.typeValue == 3) {
-          const res = await this.expertquery({ skip: 0, status: '1', ...info });
-          if (this.$checkRes(res)) this.$set(this, `expertList`, res.data);
-        }
-        // else{
-        //专利的根据name查询
-        // }
-      } else {
-        this.search();
-      }
-    },
-    //详情
-    detail(data) {
-      this.$router.push({ path: '/market/detail', query: { id: data.id, type: data.type } });
-    },
-    //专家智库详情
-    // expertDet(data) {
-    //   console.log(data);
-    // },
-  },
+  created() {},
+  methods: {},
   computed: {
     ...mapState(['user']),
   },
-  mounted() {
-    this.title = this.$route.meta.title;
-    this.isleftarrow = this.$route.meta.isleftarrow;
-  },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
+  watch: {},
 };
 </script>
 
 <style lang="less" scoped>
-.con {
-  width: 100%;
-  min-height: 667px;
-  position: relative;
-  background-color: #f9fafc;
-  .box {
-    position: relative;
-    .search {
-      position: fixed;
-      width: 100%;
-      z-index: 999;
-      border-bottom: 1px solid #ccc;
-      background-color: #fff;
-      .select {
-        /deep/.el-input__inner {
-          border: none;
-          padding: 0;
-          height: 30px;
-          line-height: 30px;
-        }
-        .el-select {
-          padding: 10px 0px 0px 5px;
-        }
-        /deep/.el-input__icon {
-          line-height: 30px;
-        }
-      }
-      .inputSearch {
-        .van-search {
-          padding: 10px 12px 10px 0;
-        }
-      }
-    }
-    .main {
-      position: absolute;
-      width: 100%;
-      top: 54px;
-      background: #f9fafc;
-      padding: 0 0 50px 0;
-    }
+.main {
+  .foot {
+    height: 50px;
+    overflow: hidden;
   }
 }
-.top {
-  height: 46px;
-  overflow: hidden;
-}
 </style>

+ 134 - 0
src/views/market/index/achieve.vue

@@ -0,0 +1,134 @@
+<template>
+  <div id="achieve">
+    <el-row>
+      <el-col :span="24" class="main">
+        <el-col :span="24" class="top">
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
+        </el-col>
+        <el-col :span="24" class="search">
+          <van-search v-model="name" @search="search" placeholder="请输入信息标题" />
+        </el-col>
+        <el-col :span="24" class="info" v-loading="loading" element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading">
+          <el-col :span="24" class="list" v-for="(item, index) in list" :key="index" @click.native="detailBtn(item)">
+            <el-col :span="24" class="name textOver">
+              {{ item.name }}
+            </el-col>
+            <el-col :span="24" class="company textOver"> 需求单位:{{ item.company || '暂无' }} </el-col>
+            <el-col :span="24" class="other">
+              <span class="textOver">所属领域:{{ item.field || '暂无' }}</span>
+              <span class="textOver">合作方式:{{ item.cooperation || '暂无' }}</span>
+            </el-col>
+          </el-col>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import NavBar from '@/layout/common/topInfo.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: product } = createNamespacedHelpers('product');
+export default {
+  name: 'achieve',
+  props: {},
+  components: {
+    NavBar,
+  },
+  data: function() {
+    return {
+      // 头部标题
+      title: '',
+      // meta为true
+      isleftarrow: '',
+      // 返回
+      navShow: true,
+      // 查询
+      name: '',
+      // 列表
+      list: [],
+      loading: true,
+    };
+  },
+  async created() {
+    await this.search();
+  },
+  methods: {
+    ...product(['query']),
+    async search({ skip = 0, type = '1', status = '1', ...info } = {}) {
+      if (this.name) info.name = this.name;
+      let res = await this.query({ skip, type, status, ...info });
+      if (this.$checkRes(res)) {
+        this.$set(this, `list`, res.data);
+        this.loading = false;
+      }
+    },
+    detailBtn(data) {
+      this.$router.push({ path: '/market/detail', query: { id: data.id, type: '0' } });
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+  },
+  mounted() {
+    this.title = this.$route.meta.title;
+    this.isleftarrow = this.$route.meta.isleftarrow;
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {},
+};
+</script>
+
+<style lang="less" scoped>
+.main {
+  .top {
+    height: 47px;
+    overflow: hidden;
+  }
+  .search {
+    height: 46px;
+    overflow: hidden;
+    border-bottom: 1px solid #ccc;
+    position: fixed;
+    z-index: 9999;
+    background: #fff;
+    top: 46px;
+    .van-search {
+      padding: 4px 10px;
+    }
+  }
+  .info {
+    padding: 0 10px 50px 10px;
+    position: relative;
+    top: 47px;
+    min-height: 500px;
+    .list {
+      padding: 10px 0px;
+      border-bottom: 1px dashed #ccc;
+      .name {
+        font-weight: bold;
+        font-size: 18px;
+      }
+      .company {
+        font-size: 16px;
+        color: #666;
+        padding-top: 5px;
+      }
+      .other {
+        padding-top: 5px;
+        color: #666;
+        span {
+          display: inline-block;
+          width: 50%;
+        }
+        span:nth-child(2) {
+          padding-left: 5px;
+          box-sizing: border-box;
+        }
+      }
+    }
+  }
+}
+</style>

+ 133 - 0
src/views/market/index/expert.vue

@@ -0,0 +1,133 @@
+<template>
+  <div id="patent">
+    <el-row>
+      <el-col :span="24" class="main">
+        <el-col :span="24" class="top">
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
+        </el-col>
+        <el-col :span="24" class="search">
+          <van-search v-model="name" @search="search" placeholder="请输入信息标题" />
+        </el-col>
+        <el-col :span="24" class="info" v-loading="loading" element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading">
+          <el-col :span="24" class="list" v-for="(item, index) in list" :key="index" @click.native="detailBtn(item)">
+            <el-col :span="6" class="image">
+              <el-image v-if="item.expertimage != null || undefined" :src="item.expertimage" style="width: 100%"></el-image>
+              <el-image :src="expertimage" style="width: 100%" v-else></el-image>
+            </el-col>
+            <el-col :span="18" class="name">
+              <p class="textOver">{{ item.name || '暂无' }}</p>
+              <p class="textOver">{{ item.zwzc || '暂无' }}</p>
+              <p class="textOver">{{ item.company || '暂无' }}</p>
+            </el-col>
+          </el-col>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import NavBar from '@/layout/common/topInfo.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: exportuser } = createNamespacedHelpers('exportuser');
+export default {
+  name: 'patent',
+  props: {},
+  components: {
+    NavBar,
+  },
+  data: function() {
+    return {
+      // 头部标题
+      title: '',
+      // meta为true
+      isleftarrow: '',
+      // 返回
+      navShow: true,
+      // 查询
+      name: '',
+      // 列表
+      list: [],
+      expertimage: require('@/assets/222.png'),
+      loading: true,
+    };
+  },
+  async created() {
+    await this.search();
+  },
+  methods: {
+    ...exportuser(['query']),
+    async search({ skip = 0, ...info } = {}) {
+      if (this.name) info.name = this.name;
+      let res = await this.query({ skip, ...info });
+      if (this.$checkRes(res)) {
+        this.$set(this, `list`, res.data);
+        this.loading = false;
+      }
+    },
+    detailBtn(data) {
+      this.$router.push({ path: '/market/detail', query: { id: data.id, type: '3' } });
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+  },
+  mounted() {
+    this.title = this.$route.meta.title;
+    this.isleftarrow = this.$route.meta.isleftarrow;
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {},
+};
+</script>
+
+<style lang="less" scoped>
+.main {
+  .top {
+    height: 47px;
+    overflow: hidden;
+  }
+  .search {
+    height: 46px;
+    overflow: hidden;
+    border-bottom: 1px solid #ccc;
+    position: fixed;
+    z-index: 9999;
+    background: #fff;
+    top: 46px;
+    .van-search {
+      padding: 4px 10px;
+    }
+  }
+  .info {
+    padding: 0 10px 50px 10px;
+    position: relative;
+    top: 47px;
+    min-height: 500px;
+    .list {
+      padding: 10px 0px;
+      border-bottom: 1px dashed #ccc;
+      .image {
+        .el-image {
+          border-radius: 50%;
+          height: 88px;
+        }
+      }
+      .name {
+        padding-left: 10px;
+        p {
+          color: #666;
+          font-size: 16px;
+          padding-top: 5px;
+        }
+        p:nth-child(1) {
+          font-size: 18px;
+          font-weight: bold;
+        }
+      }
+    }
+  }
+}
+</style>

+ 118 - 0
src/views/market/index/patent.vue

@@ -0,0 +1,118 @@
+<template>
+  <div id="patent">
+    <el-row>
+      <el-col :span="24" class="main">
+        <el-col :span="24" class="top">
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
+        </el-col>
+        <el-col :span="24" class="search">
+          <van-search v-model="name" @search="search" placeholder="请输入信息标题" />
+        </el-col>
+        <el-col :span="24" class="info" v-loading="loading" element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading">
+          <el-col :span="24" class="list" v-for="(item, index) in list" :key="index" @click.native="detailBtn(item)">
+            <el-col :span="24" class="title textOver">{{ item.name }}</el-col>
+            <el-col :span="18" class="type textOver">专利有效性:{{ item.term }}</el-col>
+            <el-col :span="6" class="time textOver">{{ item.success_date }}</el-col>
+          </el-col>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import NavBar from '@/layout/common/topInfo.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: patent } = createNamespacedHelpers('patent');
+export default {
+  name: 'patent',
+  props: {},
+  components: {
+    NavBar,
+  },
+  data: function() {
+    return {
+      // 头部标题
+      title: '',
+      // meta为true
+      isleftarrow: '',
+      // 返回
+      navShow: true,
+      // 查询
+      name: '',
+      // 列表
+      list: [],
+      loading: true,
+    };
+  },
+  async created() {
+    await this.search();
+  },
+  methods: {
+    ...patent(['query']),
+    async search({ skip = 0, ...info } = {}) {
+      if (this.name) info.name = this.name;
+      let res = await this.query({ skip, ...info });
+      if (this.$checkRes(res)) {
+        this.$set(this, `list`, res.data);
+        this.loading = false;
+      }
+    },
+    detailBtn(data) {
+      this.$router.push({ path: '/market/detail', query: { id: data.id, type: '1' } });
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+  },
+  mounted() {
+    this.title = this.$route.meta.title;
+    this.isleftarrow = this.$route.meta.isleftarrow;
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {},
+};
+</script>
+
+<style lang="less" scoped>
+.main {
+  .top {
+    height: 47px;
+    overflow: hidden;
+  }
+  .search {
+    height: 46px;
+    overflow: hidden;
+    border-bottom: 1px solid #ccc;
+    position: fixed;
+    z-index: 9999;
+    background: #fff;
+    top: 46px;
+    .van-search {
+      padding: 4px 10px;
+    }
+  }
+  .info {
+    padding: 0 10px 50px 10px;
+    position: relative;
+    top: 47px;
+    min-height: 500px;
+    .list {
+      padding: 10px 0px;
+      border-bottom: 1px dashed #ccc;
+      .title {
+        font-size: 18px;
+        font-weight: bold;
+      }
+      .time,
+      .type {
+        color: #666;
+        font-size: 16px;
+        padding-top: 5px;
+      }
+    }
+  }
+}
+</style>

+ 133 - 0
src/views/market/index/service.vue

@@ -0,0 +1,133 @@
+<template>
+  <div id="achieve">
+    <el-row>
+      <el-col :span="24" class="main">
+        <el-col :span="24" class="top">
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
+        </el-col>
+        <el-col :span="24" class="search">
+          <van-search v-model="name" @search="search" placeholder="请输入信息标题" />
+        </el-col>
+        <el-col :span="24" class="info" v-loading="loading" element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading">
+          <el-col :span="24" class="list" v-for="(item, index) in list" :key="index" @click.native="detailBtn(item)">
+            <el-col :span="24" class="name textOver">
+              {{ item.name }}
+            </el-col>
+            <el-col :span="24" class="company textOver"> 服务单位:{{ item.company || '暂无' }} </el-col>
+            <el-col :span="24" class="other">
+              <span class="textOver">信息属性:{{ item.messattribute || '暂无' }}</span>
+              <span class="textOver">联系人:{{ item.qqwx || '暂无' }}</span>
+            </el-col>
+          </el-col>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import NavBar from '@/layout/common/topInfo.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: product } = createNamespacedHelpers('product');
+export default {
+  name: 'achieve',
+  props: {},
+  components: {
+    NavBar,
+  },
+  data: function() {
+    return {
+      // 头部标题
+      title: '',
+      // meta为true
+      isleftarrow: '',
+      // 返回
+      navShow: true,
+      // 查询
+      name: '',
+      // 列表
+      list: [],
+      loading: true,
+    };
+  },
+  async created() {
+    await this.search();
+  },
+  methods: {
+    ...product(['query']),
+    async search({ skip = 0, type = '2', status = '1', ...info } = {}) {
+      if (this.name) info.name = this.name;
+      let res = await this.query({ skip, type, status, ...info });
+      if (this.$checkRes(res)) {
+        this.$set(this, `list`, res.data);
+        this.loading = false;
+      }
+    },
+    detailBtn(data) {
+      this.$router.push({ path: '/market/detail', query: { id: data.id, type: '4' } });
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+  },
+  mounted() {
+    this.title = this.$route.meta.title;
+    this.isleftarrow = this.$route.meta.isleftarrow;
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {},
+};
+</script>
+
+<style lang="less" scoped>
+.main {
+  .top {
+    height: 47px;
+    overflow: hidden;
+  }
+  .search {
+    height: 46px;
+    overflow: hidden;
+    border-bottom: 1px solid #ccc;
+    position: fixed;
+    z-index: 9999;
+    background: #fff;
+    top: 46px;
+    .van-search {
+      padding: 4px 10px;
+    }
+  }
+  .info {
+    padding: 0 10px 50px 10px;
+    position: relative;
+    top: 47px;
+    min-height: 500px;
+    .list {
+      padding: 10px 0px;
+      border-bottom: 1px dashed #ccc;
+      .name {
+        font-size: 18px;
+        font-weight: bold;
+      }
+      .company,
+      .other {
+        font-size: 16px;
+        color: #666;
+        padding-top: 5px;
+      }
+      .other {
+        span {
+          width: 50%;
+          display: inline-block;
+        }
+        span:nth-child(1) {
+          padding-right: 5px;
+          box-sizing: border-box;
+        }
+      }
+    }
+  }
+}
+</style>

+ 131 - 0
src/views/market/index/techol.vue

@@ -0,0 +1,131 @@
+<template>
+  <div id="achieve">
+    <el-row>
+      <el-col :span="24" class="main">
+        <el-col :span="24" class="top">
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
+        </el-col>
+        <el-col :span="24" class="search">
+          <van-search v-model="name" @search="search" placeholder="请输入信息标题" />
+        </el-col>
+        <el-col :span="24" class="info" v-loading="loading" element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading">
+          <el-col :span="24" class="list" v-for="(item, index) in list" :key="index" @click.native="detailBtn(item)">
+            <el-col :span="24" class="name textOver">
+              {{ item.name }}
+            </el-col>
+            <el-col :span="24" class="company textOver"> 需求单位:{{ item.company || '暂无' }} </el-col>
+            <el-col :span="24" class="other">
+              <span class="textOver">领域:{{ item.field || '暂无' }}</span>
+              <span class="textOver">联系人:{{ item.contacts || '暂无' }}</span>
+            </el-col>
+          </el-col>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import NavBar from '@/layout/common/topInfo.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: product } = createNamespacedHelpers('product');
+export default {
+  name: 'achieve',
+  props: {},
+  components: {
+    NavBar,
+  },
+  data: function() {
+    return {
+      // 头部标题
+      title: '',
+      // meta为true
+      isleftarrow: '',
+      // 返回
+      navShow: true,
+      // 查询
+      name: '',
+      // 列表
+      list: [],
+      loading: true,
+    };
+  },
+  async created() {
+    await this.search();
+  },
+  methods: {
+    ...product(['query']),
+    async search({ skip = 0, type = '0', status = '1', ...info } = {}) {
+      if (this.name) info.name = this.name;
+      let res = await this.query({ skip, type, status, ...info });
+      if (this.$checkRes(res)) {
+        this.$set(this, `list`, res.data);
+        this.loading = false;
+      }
+    },
+    detailBtn(data) {
+      this.$router.push({ path: '/market/detail', query: { id: data.id, type: '2' } });
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+  },
+  mounted() {
+    this.title = this.$route.meta.title;
+    this.isleftarrow = this.$route.meta.isleftarrow;
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {},
+};
+</script>
+
+<style lang="less" scoped>
+.main {
+  .top {
+    height: 47px;
+    overflow: hidden;
+  }
+  .search {
+    height: 46px;
+    overflow: hidden;
+    border-bottom: 1px solid #ccc;
+    position: fixed;
+    z-index: 9999;
+    background: #fff;
+    top: 46px;
+    .van-search {
+      padding: 4px 10px;
+    }
+  }
+  .info {
+    padding: 0 10px 50px 10px;
+    position: relative;
+    top: 47px;
+    min-height: 500px;
+    .list {
+      border-bottom: 1px dashed #ccc;
+      padding: 10px 0;
+      .name {
+        font-size: 18px;
+        font-weight: bold;
+      }
+      .company {
+        font-size: 16px;
+        color: #666;
+        padding: 5px 0 0 0;
+      }
+      .other {
+        font-size: 16px;
+        color: #666;
+        padding: 5px 0 0 0;
+        span {
+          display: inline-block;
+          width: 50%;
+        }
+      }
+    }
+  }
+}
+</style>

+ 0 - 77
src/views/market/parts/demand.vue

@@ -1,77 +0,0 @@
-<template>
-  <div id="demand">
-    <el-row>
-      <el-col :span="24" class="demand">
-        <el-col :span="24" class="list" v-for="(item, index) in demandList" :key="index" @click.native="detail(item)">
-          <el-col :span="24" class="name textOver">
-            {{ item.name }}
-          </el-col>
-          <el-col :span="24" class="company textOver"> 需求单位:{{ item.company || '暂无' }} </el-col>
-          <el-col :span="24" class="other">
-            <span class="textOver">所属领域:{{ item.field || '暂无' }}</span>
-            <span class="textOver">合作方式:{{ item.cooperation || '暂无' }}</span>
-          </el-col>
-        </el-col>
-      </el-col>
-      <el-backtop :bottom="50" :right="10"> </el-backtop>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-export default {
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  name: 'demand',
-  props: {
-    demandList: { type: Array },
-  },
-  components: {},
-  data: function() {
-    return {};
-  },
-  created() {},
-  methods: {
-    //详情
-    detail(data) {
-      this.$emit('detail', data);
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.demand {
-  padding: 0px 10px;
-  .list {
-    padding: 10px 0px;
-    border-bottom: 1px dashed #ccc;
-    .name {
-      font-weight: bold;
-      font-size: 18px;
-    }
-    .company {
-      font-size: 16px;
-      color: #666;
-      padding-top: 5px;
-    }
-    .other {
-      padding-top: 5px;
-      color: #666;
-      span {
-        display: inline-block;
-        width: 50%;
-      }
-      span:nth-child(2) {
-        padding-left: 5px;
-        box-sizing: border-box;
-      }
-    }
-  }
-}
-</style>

+ 0 - 77
src/views/market/parts/expert.vue

@@ -1,77 +0,0 @@
-<template>
-  <div id="expert">
-    <el-row>
-      <el-col :span="24" class="expert">
-        <el-col :span="24" class="list" v-for="(item, index) in expertList" :key="index" @click.native="detail(item)">
-          <el-col :span="6" class="image">
-            <el-image v-if="item.expertimage != null || undefined" :src="item.expertimage" style="width: 100%"></el-image>
-            <el-image :src="expertimage" style="width: 100%" v-else></el-image>
-          </el-col>
-          <el-col :span="18" class="name">
-            <p class="textOver">{{ item.name || '暂无' }}</p>
-            <p class="textOver">{{ item.zwzc || '暂无' }}</p>
-            <p class="textOver">{{ item.company || '暂无' }}</p>
-          </el-col>
-        </el-col>
-      </el-col>
-      <el-backtop :bottom="50" :right="10"> </el-backtop>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-export default {
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  name: 'expert',
-  props: {
-    expertList: { type: Array },
-  },
-  components: {},
-  data: function() {
-    return {
-      expertimage: require('@/assets/222.png'),
-    };
-  },
-  created() {},
-  methods: {
-    //详情
-    detail(data) {
-      this.$emit('detail', data);
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.expert {
-  padding: 5px 10px;
-  .list {
-    padding: 10px 0px;
-    border-bottom: 1px dashed #ccc;
-    .image {
-      .el-image {
-        border-radius: 50%;
-        height: 88px;
-      }
-    }
-    .name {
-      padding-left: 10px;
-      p {
-        color: #666;
-        font-size: 16px;
-        padding-top: 5px;
-      }
-      p:nth-child(1) {
-        font-size: 18px;
-        font-weight: bold;
-      }
-    }
-  }
-}
-</style>

+ 0 - 67
src/views/market/parts/pantent.vue

@@ -1,67 +0,0 @@
-<template>
-  <div id="pantent">
-    <el-row>
-      <el-col :span="24" class="pantent">
-        <el-col :span="24" class="list" v-for="(item, index) in pantentList" :key="index" @click.native="detail(item)">
-          <el-col :span="24" class="title textOver">{{ item.title }}</el-col>
-          <el-col :span="12" class="type textOver">类型:{{ getType(item.type) }}</el-col>
-          <el-col :span="12" class="time textOver">时间:{{ item.time }}</el-col>
-        </el-col>
-      </el-col>
-      <el-backtop :bottom="50" :right="10"> </el-backtop>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-export default {
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  name: 'pantent',
-  props: {
-    pantentList: { type: Array },
-    typeList: { type: Array },
-  },
-  components: {},
-  data: function() {
-    return {};
-  },
-  created() {},
-  methods: {
-    //详情
-    detail(data) {
-      this.$emit('detail', data);
-    },
-    //过滤类型
-    getType(type) {
-      let types = this.typeList.find(i => i.type == type);
-      return types.name;
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.pantent {
-  padding: 0 10px;
-  .list {
-    padding: 10px 0px;
-    border-bottom: 1px dashed #ccc;
-    .title {
-      font-size: 18px;
-      font-weight: bold;
-    }
-    .time,
-    .type {
-      color: #666;
-      font-size: 16px;
-      padding-top: 5px;
-    }
-  }
-}
-</style>

+ 0 - 74
src/views/market/parts/serve.vue

@@ -1,74 +0,0 @@
-<template>
-  <div id="serve">
-    <el-row>
-      <el-col :span="24" class="serve">
-        <el-col :span="24" class="list" v-for="(item, index) in serveList" :key="index" @click.native="detail(item)">
-          <el-col :span="24" class="name textOver">
-            {{ item.name }}
-          </el-col>
-          <el-col :span="24" class="company textOver"> 服务单位:{{ item.company || '暂无' }} </el-col>
-          <el-col :span="24" class="other">
-            <span class="textOver">信息属性:{{ item.messattribute || '暂无' }}</span>
-            <span class="textOver">联系人:{{ item.qqwx || '暂无' }}</span>
-          </el-col>
-        </el-col>
-      </el-col>
-      <el-backtop :bottom="50" :right="10"> </el-backtop>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-export default {
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  name: 'serve',
-  props: { serveList: { type: Array } },
-  components: {},
-  data: function() {
-    return {};
-  },
-  created() {},
-  methods: {
-    //详情
-    detail(data) {
-      this.$emit('detail', data);
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.serve {
-  padding: 0px 10px;
-  .list {
-    padding: 10px 0px;
-    border-bottom: 1px dashed #ccc;
-    .name {
-      font-size: 18px;
-      font-weight: bold;
-    }
-    .company,
-    .other {
-      font-size: 16px;
-      color: #666;
-      padding-top: 5px;
-    }
-    .other {
-      span {
-        width: 50%;
-        display: inline-block;
-      }
-      span:nth-child(1) {
-        padding-right: 5px;
-        box-sizing: border-box;
-      }
-    }
-  }
-}
-</style>

+ 0 - 74
src/views/market/parts/tec.vue

@@ -1,74 +0,0 @@
-<template>
-  <div id="tec">
-    <el-row>
-      <el-col :span="24" class="tec">
-        <el-col :span="24" class="list" v-for="(item, index) in tecList" :key="index" @click.native="detail(item)">
-          <el-col :span="24" class="name textOver">
-            {{ item.name }}
-          </el-col>
-          <el-col :span="24" class="company textOver"> 成果单位:{{ item.company || '暂无' }} </el-col>
-          <el-col :span="24" class="other">
-            <span class="textOver">领域:{{ item.field || '暂无' }}</span>
-            <span class="textOver">联系人:{{ item.contacts || '暂无' }}</span>
-          </el-col>
-        </el-col>
-      </el-col>
-      <el-backtop :bottom="50" :right="10"> </el-backtop>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-export default {
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  name: 'tec',
-  props: {
-    tecList: { type: Array },
-  },
-  components: {},
-  data: function() {
-    return {};
-  },
-  created() {},
-  methods: {
-    //详情
-    detail(data) {
-      this.$emit('detail', data);
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.tec {
-  padding: 0 10px;
-  .list {
-    border-bottom: 1px dashed #ccc;
-    padding: 10px 0;
-    .name {
-      font-size: 18px;
-      font-weight: bold;
-    }
-    .company {
-      font-size: 16px;
-      color: #666;
-      padding: 5px 0 0 0;
-    }
-    .other {
-      font-size: 16px;
-      color: #666;
-      padding: 5px 0 0 0;
-      span {
-        display: inline-block;
-        width: 50%;
-      }
-    }
-  }
-}
-</style>

+ 0 - 155
src/views/scienceNews/detail.vue

@@ -1,155 +0,0 @@
-<template>
-  <div id="detail">
-    <el-row>
-      <el-col :span="24" class="detail">
-        <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">
-          <el-col :span="24" class="title">{{ info.title }}</el-col>
-          <el-col :span="24" class="other">
-            <p>
-              <span class="textOver">信息来源:{{ info.orgin || '暂无' }}</span>
-              <span class="textOver">发布时间:{{ info.publish_time || '暂无' }}</span>
-            </p>
-            <p class="textOver">文章作者:{{ info.publish || '系统管理员' }}</p>
-          </el-col>
-          <el-col :span="24" v-if="info.picture != null || undefined" class="img">
-            <van-image :src="info.picture">
-              <div slot="error" class="image-slot">
-                <i class="el-icon-picture-outline"></i>
-              </div>
-            </van-image>
-          </el-col>
-          <el-col :span="24" class="con" v-html="info.content"> </el-col>
-          <el-col :span="24" class="four" v-if="info.filepath">
-            <h4>附件:</h4>
-            <el-link :href="info.filepath" :underline="false">{{ info.filepathname || '附件下载' }}</el-link>
-          </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: scienceNews } = createNamespacedHelpers('scienceNews');
-export default {
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  name: 'detail',
-  props: {},
-  components: {
-    NavBar,
-  },
-  data: function() {
-    return {
-      // 头部标题
-      title: '',
-      // meta为true
-      isleftarrow: '',
-      // 返回
-      navShow: true,
-      //详情
-      info: {},
-    };
-  },
-  created() {
-    this.search();
-  },
-  methods: {
-    ...scienceNews(['fetch']),
-    //查询详情
-    async search() {
-      const res = await this.fetch(this.id);
-      if (this.$checkRes(res)) {
-        this.$set(this, `info`, res.data);
-      }
-    },
-    // 返回
-    onClickLeft() {
-      this.$router.push({ path: '/scienceNews/index' });
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-    id() {
-      return this.$route.query.id;
-    },
-  },
-  mounted() {
-    this.title = this.$route.meta.title;
-    this.isleftarrow = this.$route.meta.isleftarrow;
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.detail {
-  width: 100%;
-  min-height: 667px;
-  position: relative;
-  background-color: #f9fafc;
-}
-.top {
-  height: 46px;
-  overflow: hidden;
-}
-.main {
-  // min-height: 570px;
-  // margin: 0 0 50px 0;
-  padding: 10px;
-  .title {
-    text-align: center;
-    color: #044b79;
-    font-size: 18px;
-    font-weight: bolder;
-  }
-  .other {
-    font-size: 16px;
-    color: #666;
-    padding: 20px 0;
-    border-bottom: 1px dashed #ccc;
-    p:nth-child(1) {
-      span {
-        display: inline-block;
-        width: 50%;
-      }
-    }
-    p:nth-child(2) {
-      text-align: center;
-    }
-  }
-  .img {
-    text-align: center;
-    margin: 0 0 15px 0;
-    .el-image {
-      width: 60%;
-    }
-  }
-  .con {
-    margin-top: 20px;
-  }
-}
-/deep/table {
-  width: 100%;
-}
-/deep/.con p img {
-  width: 100%;
-  height: 300px;
-  margin: 5px 0px;
-  display: block;
-}
-/deep/.con div img {
-  width: 100%;
-  height: 260px;
-  display: block;
-}
-/deep/.con p {
-  font-size: 14px;
-  color: #444;
-}
-</style>

+ 0 - 143
src/views/scienceNews/index.vue

@@ -1,143 +0,0 @@
-<template>
-  <div id="index">
-    <el-row>
-      <el-col :span="24" class="style">
-        <el-col :span="24" class="top">
-          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
-        </el-col>
-        <el-col :span="24" class="down">
-          <el-col :span="24" class="search">
-            <van-search v-model="name" @search="onSearch" placeholder="请输入信息标题" />
-          </el-col>
-          <el-col :span="24" class="data">
-            <el-col :span="24" class="list" v-for="(item, index) in list" :key="index" @click.native="show(item)">
-              <el-col :span="18" class="title textOver">
-                {{ item.title }}
-              </el-col>
-              <el-col :span="6" class="date">
-                {{ item.publish_time }}
-              </el-col>
-              <el-col :span="24" class="other">
-                <p class="textOver">
-                  作者:<span>{{ item.publish || '系统管理员' }}</span>
-                </p>
-                <p class="textOver">
-                  信息来源:<span>{{ item.orgin }}</span>
-                </p>
-              </el-col>
-            </el-col>
-          </el-col>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import NavBar from '@/layout/common/topInfo.vue';
-import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: scienceNews } = createNamespacedHelpers('scienceNews');
-export default {
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  name: 'index',
-  props: {},
-  components: {
-    NavBar,
-  },
-  data: function() {
-    return {
-      // 头部标题
-      title: '',
-      // meta为true
-      isleftarrow: '',
-      // 返回
-      navShow: true,
-      list: [],
-      name: '',
-    };
-  },
-  async created() {
-    await this.search();
-  },
-  methods: {
-    ...scienceNews(['query', 'fetch', 'create', 'update', 'delete']),
-    async search({ skip = 0, limit = 10, ...info } = {}) {
-      if (this.name) info.title = this.name;
-      let res = await this.query({ skip, ...info });
-      if (this.$checkRes(res)) {
-        this.$set(this, `list`, res.data);
-      }
-    },
-    show(data) {
-      this.$router.push({ path: '/scienceNews/detail', query: { id: data.id } });
-    },
-    onSearch(data) {
-      this.$set(this, `name`, data);
-      this.search();
-    },
-  },
-  mounted() {
-    this.title = this.$route.meta.title;
-    this.isleftarrow = this.$route.meta.isleftarrow;
-  },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  watch: {},
-};
-</script>
-
-<style lang="less" scoped>
-.style {
-  width: 100%;
-  height: 100%;
-  position: relative;
-  background-color: #f9fafc;
-  .top {
-    height: 46px;
-    overflow: hidden;
-  }
-  .down {
-    position: relative;
-    .search {
-      position: fixed;
-      width: 100%;
-      z-index: 999;
-    }
-    .data {
-      position: absolute;
-      width: 100%;
-      top: 54px;
-      padding: 10px;
-      background: #f9fafc;
-      .list {
-        background-color: #fff;
-        border-radius: 5px;
-        margin: 0 0 10px 0;
-        padding: 5px;
-        .title {
-          font-size: 18px;
-          font-weight: bold;
-        }
-        .date {
-          text-align: right;
-          font-size: 16px;
-          padding: 6px 0 0 0;
-        }
-        .other {
-          margin: 5px 0 0 0;
-          p {
-            font-size: 16px;
-            padding: 5px 0;
-            span {
-              color: #666;
-            }
-          }
-        }
-      }
-    }
-  }
-}
-</style>

+ 0 - 89
src/views/service/detail.vue

@@ -1,89 +0,0 @@
-<template>
-  <div id="index">
-    <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">
-          <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>
-    </el-row>
-  </div>
-</template>
-
-<script>
-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',
-  props: {},
-  components: {
-    NavBar,
-    // footInfo,
-    twoInfo, //展会管理
-    threeInfo, //动态监测
-  },
-  data: function() {
-    return {
-      // 头部标题
-      title: '',
-      // meta为true
-      isleftarrow: '',
-      // 返回
-      navShow: true,
-    };
-  },
-  created() {},
-  methods: {
-    // 返回
-    onClickLeft() {
-      this.$router.push({ path: '/service/index' });
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-    column_name() {
-      return this.$route.query.column_name;
-    },
-  },
-  mounted() {
-    this.title = this.$route.meta.title;
-    this.isleftarrow = this.$route.meta.isleftarrow;
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.style {
-  width: 100%;
-  min-height: 667px;
-  position: relative;
-  background-color: #f9fafc;
-}
-.top {
-  height: 46px;
-  overflow: hidden;
-  position: relative;
-  z-index: 999;
-}
-.main {
-  min-height: 570px;
-}
-.foot {
-  position: absolute;
-  bottom: 0;
-}
-</style>

+ 0 - 396
src/views/service/index.vue

@@ -1,396 +0,0 @@
-<template>
-  <div id="index">
-    <el-row>
-      <el-col :span="24" class="style">
-        <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="12" 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="12" 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="12" 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="12" 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="12" 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="12" 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="24" class="topImage">
-            <el-image :src="topImage"></el-image>
-          </el-col>
-          <el-col :span="24" class="info">
-            <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="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="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="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="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="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="search">
-            <el-col :span="6" class="type">
-              <el-select v-model="type" placeholder="请选择" clearable @change="typeChange">
-                <el-option v-for="(item, index) in typelist" :key="index" :label="item.name" :value="item.type"> </el-option>
-              </el-select>
-            </el-col>
-            <el-col :span="18" class="input">
-              <van-search v-model="name" @search="onSearch" placeholder="请输入信息标题" />
-            </el-col>
-          </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>
-    </el-row>
-  </div>
-</template>
-
-<script>
-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 {
-      // 头部标题
-      title: '',
-      // meta为true
-      isleftarrow: '',
-      // 返回
-      navShow: true,
-      topImage: require('@/assets/topImage.jpg'),
-      onePic: require('@/assets/bendi1.png'),
-      twoPic: require('@/assets/bendi2.png'),
-      threePic: require('@/assets/bendi3.png'),
-      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: [],
-      // 查询
-      typelist: [
-        { name: '专家问诊', type: '1' },
-        { name: '行业研究', type: '2' },
-        { name: '嘉宾访谈', type: '3' },
-        { name: '项目路演', type: '4' },
-      ],
-      name: '',
-      type: '',
-    };
-  },
-  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);
-    },
-    // 输入框是搜索
-    async searchList({ ...info } = {}) {
-      if (this.name) {
-        info.title = this.name;
-        let type = this.type;
-        if (type == 1) {
-          let expertCol = this.columnList.find(i => i.name == '专家问诊');
-          const res = await this.newsList({ column_id: expertCol._id, ...info });
-          if (this.$checkRes(res)) this.$set(this, `oneList`, res.data);
-        } else if (type == 2) {
-          let workCol = this.columnList.find(i => i.name == '行业研究');
-          const res = await this.newsList({ column_id: workCol._id, ...info });
-          if (this.$checkRes(res)) this.$set(this, `twoList`, res.data);
-        } else if (type == 3) {
-          const jiabin = await this.danceQuery({ ...info });
-          if (this.$checkRes(jiabin)) this.$set(this, `threeList`, jiabin.data);
-        } else if (type == 4) {
-          const luyan = await this.adshowQuery({ ...info });
-          if (this.$checkRes(luyan)) this.$set(this, `fourList`, luyan.data);
-        }
-      } else {
-        this.search();
-      }
-    },
-    // 选择类型
-    typeChange(value) {
-      if (value) {
-        this.active = '';
-        this.$set(this, `type`, value);
-        let index = this.typelist.findIndex(i => i.type == value);
-        if (index) {
-          this.$set(this, `active`, index);
-        }
-      }
-    },
-    // 输入框查询
-    onSearch(data) {
-      this.$set(this, `name`, data);
-      if (this.type) {
-        this.searchList();
-      } else {
-        this.$notify({
-          message: '请选择信息类型',
-          type: 'danger',
-        });
-      }
-    },
-    // 智慧推荐
-    oneBtn() {},
-    // 展会管理
-    twoBtn() {
-      console.log('智慧推荐');
-    },
-    // 科技评估
-    threeBtn() {
-      console.log('智慧推荐');
-    },
-    // 合同在线
-    fourBtn() {
-      console.log('智慧推荐');
-    },
-    // 信用认证
-    fiveBtn() {
-      console.log('智慧推荐');
-    },
-    // 绩效评价
-    sixBtn() {
-      console.log('智慧推荐');
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-  },
-  mounted() {
-    this.title = this.$route.meta.title;
-    this.isleftarrow = this.$route.meta.isleftarrow;
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.style {
-  width: 100%;
-  min-height: 667px;
-  position: relative;
-  background-color: #fff;
-}
-.top {
-  height: 46px;
-  overflow: hidden;
-  position: relative;
-  z-index: 999;
-}
-.main {
-  // min-height: 570px;
-  .topImage {
-    height: 160px;
-    .el-image {
-      width: 100%;
-      height: 160px;
-    }
-  }
-  .info {
-    .btn {
-      padding: 15px 0;
-      text-align: center;
-      border: 1px solid #f9f9f9;
-      .el-image {
-        width: 45px;
-        height: 45px;
-        overflow: hidden;
-      }
-      p {
-        font-size: 15px;
-        font-family: 楷体;
-        padding: 5px 0 0 0;
-        font-weight: bold;
-      }
-    }
-    .btn:nth-child(2) .el-image {
-      width: 45px;
-      height: 40px;
-      margin: 2px 0 3px 0;
-    }
-  }
-  // .btn {
-  //   text-align: center;
-  //   background: #fff;
-  //   margin: 10px 10px 0 10px;
-  //   width: 44%;
-  //   border-radius: 5px;
-  //   padding: 15px 0;
-  //   p {
-  //     font-size: 17px;
-  //     font-family: 楷体;
-  //     padding: 5px 0 0 0;
-  //     font-weight: bold;
-  //   }
-  // }
-}
-.main1 {
-  position: relative;
-  .search {
-    position: fixed;
-    width: 100%;
-    z-index: 999;
-    border-bottom: 1px solid #ccc;
-    .type {
-      /deep/.el-input__inner {
-        border: none;
-        padding: 0;
-        height: 30px;
-        line-height: 30px;
-      }
-      .el-select {
-        padding: 10px 0px 0px 5px;
-      }
-      /deep/.el-input__icon {
-        line-height: 30px;
-      }
-    }
-    .input {
-      .van-search {
-        padding: 10px 12px 10px 0;
-      }
-    }
-  }
-  .main1info {
-    position: absolute;
-    width: 100%;
-    top: 54px;
-    background: #f9fafc;
-  }
-}
-.foot {
-  position: absolute;
-  bottom: 0;
-}
-</style>

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

@@ -1,138 +0,0 @@
-<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>

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

@@ -1,145 +0,0 @@
-<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>

+ 0 - 104
src/views/service/parts/twoInfo.vue

@@ -1,104 +0,0 @@
-<template>
-  <div id="twoInfo">
-    <el-row>
-      <el-col :span="24" class="info">
-        <el-col :span="24" class="top">
-          {{ column_name }}
-        </el-col>
-        <el-col :span="24" class="describe">
-          <h3>服务描述</h3>
-          <p>
-            展会众多业内人士齐聚直播大厅现场进行业务洽谈、产品展示、以及行业经验的交流。展会邀请各种行业的企业进行参加,促进行业交流,内外交流,横向交流,促进商业发展
-          </p>
-        </el-col>
-        <el-col :span="24" class="process">
-          <h3>服务流程</h3>
-          <el-col :span="24" class="processDiv">
-            <div>
-              <el-button>注册登录</el-button>
-              <i data-v-f4ffaafc="" class="el-icon-right"></i>
-            </div>
-            <div>
-              <el-button>提交申请办展资料</el-button>
-              <i data-v-f4ffaafc="" class="el-icon-right"></i>
-            </div>
-            <div>
-              <el-button>确认需求</el-button>
-              <i data-v-f4ffaafc="" class="el-icon-right"></i>
-            </div>
-            <div>
-              <el-button>展会宣传</el-button>
-            </div>
-          </el-col>
-        </el-col>
-        <el-col :span="24" class="btn">
-          <el-button type="primary">申请办理</el-button>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-export default {
-  name: 'twoInfo',
-  props: {
-    column_name: 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: 0 15px;
-  .top {
-    text-align: center;
-    font-size: 25px;
-    font-weight: bold;
-    color: #22529a;
-    padding: 20px 0;
-  }
-  .describe {
-    p {
-      background: #fff;
-      padding: 10px;
-      border: 1px dashed #ccc;
-    }
-  }
-  .process {
-    .processDiv {
-      background: #fff;
-      border: 1px dashed #ccc;
-      div {
-        float: left;
-        margin: 0 0 13px 0px;
-        background: #fff;
-        padding: 5px;
-        i {
-          margin: 0 5px;
-        }
-      }
-    }
-  }
-  .btn {
-    text-align: center;
-    margin: 20px 0;
-  }
-}
-</style>

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

@@ -1,114 +0,0 @@
-<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>

+ 0 - 100
src/views/user copy/index.vue

@@ -1,100 +0,0 @@
-<template>
-  <div id="index">
-    <el-row>
-      <el-col :span="24" class="style">
-        <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="info">
-            <el-col :span="8" class="img">
-              <el-image :src="imgUrl"></el-image>
-            </el-col>
-            <el-col :span="16" class="name">{{ user.name }}</el-col>
-          </el-col>
-          <el-col :span="24" class="btn">
-            <clickBtn></clickBtn>
-          </el-col>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import NavBar from '@/layout/common/topInfo.vue';
-import footInfo from '@/layout/common/footInfo.vue';
-import { mapState, createNamespacedHelpers } from 'vuex';
-import clickBtn from './parts/clickBtn.vue';
-export default {
-  name: 'index',
-  props: {},
-  components: {
-    NavBar,
-    // footInfo,
-    clickBtn,
-  },
-  data: function() {
-    return {
-      // 头部标题
-      title: '',
-      // meta为true
-      isleftarrow: '',
-      // 返回
-      navShow: true,
-      imgUrl: require('@/assets/test.jpg'),
-    };
-  },
-  created() {},
-  methods: {},
-  computed: {
-    ...mapState(['user']),
-  },
-  watch: {},
-  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;
-  .info {
-    height: 100px;
-    padding: 10px;
-    .img {
-      text-align: center;
-      .el-image {
-        width: 75%;
-        height: 80px;
-        border-radius: 50%;
-        text-align: center;
-      }
-    }
-    .name {
-      font-size: 18px;
-      font-weight: bolder;
-      margin-top: 20px;
-    }
-  }
-}
-.foot {
-  position: absolute;
-  bottom: 0;
-}
-</style>

+ 0 - 110
src/views/user copy/parts/clickBtn.vue

@@ -1,110 +0,0 @@
-<template>
-  <div id="clickBtn">
-    <el-row>
-      <el-col :span="24" class="style">
-        <span v-if="user.role == '4' || user.role == '5' || user.role == '6'">
-          <van-cell is-link title="基本信息" @click="$router.push({ path: '/userCenter/user/index' })" />
-          <van-cell is-link title="我的发布" @click="$router.push({ path: '/userCenter/myProduct/index' })" />
-          <van-cell is-link title="事项管理" @click="$router.push({ path: '/userCenter/matter/index' })" />
-          <van-cell is-link title="展会管理" @click="$router.push({ path: '/userCenter/dock/index' })" />
-        </span>
-        <span v-else-if="user.role == '0'">
-          <van-cell is-link title="用户管理" @click="$router.push({ path: '/adminCenter/user/index' })" />
-          <van-cell is-link title="展会管理" @click="$router.push({ path: '/adminCenter/duijiehui/index' })" />
-          <van-cell is-link title="审核管理" @click="$router.push({ path: '/adminCenter/enterpriseProduct/index' })" />
-          <van-cell is-link title="交易审核" @click="$router.push({ path: '/adminCenter/transaction/index' })" />
-        </span>
-        <span v-else-if="user.role == '1'">
-          <van-cell is-link title="用户管理" @click="$router.push({ path: '/adminCenter/user/index' })" />
-          <van-cell is-link title="审核管理" @click="$router.push({ path: '/adminCenter/enterpriseProduct/index' })" />
-        </span>
-        <span v-else-if="user.role == '3'">
-          展会负责人
-        </span>
-        <span v-else-if="user.role == '8'">
-          展会vip用户
-        </span>
-        <van-cell is-link title="修改密码" @click="change()" />
-        <van-cell is-link title="退出登录" @click="loginOut()" />
-        <!-- <span v-else>
-          <span v-else-if="user.role == '3'">
-            <van-cell is-link title="展会管理" @click="$router.push({ path: '/dockCenter/dockInfo/index' })" />
-            <van-cell is-link title="申请管理" @click="$router.push({ path: '/dockCenter/applyInfo/index' })" />
-            <van-cell is-link title="VIP用户" @click="$router.push({ path: '/dockCenter/vipInfo/index' })" />
-            <van-cell is-link title="交易备案" @click="$router.push({ path: '/dockCenter/transaction/index' })" />
-            <van-cell is-link title="统计报表" @click="$router.push({ path: '/dockCenter/statisInfo/index' })" />
-            <van-cell is-link title="动态监测" @click="$router.push({ path: '/dockCenter/dynamicInfo/index' })" />
-          </span>
-          <span v-else-if="user.role == '8'">
-            <van-cell is-link title="统计报表" @click="$router.push({ path: '/vipDockCenter/statisInfo/index' })" />
-            <van-cell is-link title="动态监测" @click="$router.push({ path: '/vipDockCenter/dynamicInfo/index' })" />
-          </span>
-        </span> -->
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: login } = createNamespacedHelpers('login');
-export default {
-  name: 'clickBtn',
-  props: {},
-  components: {},
-  data: function() {
-    return {
-      oneName: '',
-      twoName: '',
-      threeName: '',
-      fourName: '',
-    };
-  },
-  created() {
-    this.searchMenu();
-  },
-  methods: {
-    ...login(['toGetMenu', 'logout']),
-    async searchMenu() {
-      if (this.user.uid) {
-        const res = await this.toGetMenu({ id: this.user.uid });
-        for (const val of res.data.menus) {
-          if (val.role_name == '用户管理') {
-            this.$set(this, `oneName`, val.role_name);
-          } else if (val.role_name == '对接会') {
-            this.$set(this, `twoName`, val.role_name);
-          } else if (val.role_name == '产品供求审核管理') {
-            this.$set(this, `threeName`, val.role_name);
-          } else if (val.role_name == '产品供求交易状态审核管理') {
-            this.$set(this, `fourName`, val.role_name);
-          }
-        }
-      }
-    },
-    // 退出登录
-    async loginOut() {
-      this.logout();
-      this.$notify({
-        message: '退出成功',
-        type: 'success',
-      });
-      this.$router.push({ path: '/login' });
-    },
-    //修改密码
-    change() {
-      this.$router.push({ path: '/updatePwd/index' });
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-    pageTitle() {
-      return `${this.$route.meta.title}`;
-    },
-  },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-};
-</script>
-
-<style lang="less" scoped></style>

+ 33 - 64
src/views/user/detail.vue

@@ -1,16 +1,19 @@
 <template>
   <div id="detail">
     <el-row>
-      <el-col :span="24" class="detail">
+      <el-col :span="24" class="main">
         <el-col :span="24" class="top">
-          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow" @onClickLeft="back"> </NavBar>
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow" @onClickLeft="onClickLeft"> </NavBar>
         </el-col>
-        <el-col :span="24" class="main">
-          <span v-if="type == 'tztg'">
-            <tztg :tztgInfo="tztgInfo"></tztg>
+        <el-col :span="24" class="info">
+          <span v-if="type == '0'">
+            <questionDetail></questionDetail>
           </span>
-          <span v-else-if="type == 'xwzx'">
-            <xwzx :xwzxInfo="xwzxInfo"></xwzx>
+          <span v-else-if="type == '1'">
+            <noticeDetail></noticeDetail>
+          </span>
+          <span v-else-if="type == '2'">
+            <newsDetail></newsDetail>
           </span>
         </el-col>
       </el-col>
@@ -19,100 +22,66 @@
 </template>
 
 <script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-//新闻资讯
-const { mapActions: scienceNews } = createNamespacedHelpers('scienceNews');
-//通知通告
-const { mapActions: journnews } = createNamespacedHelpers('journnews');
+import questionDetail from './detail/questionDetail.vue';
+import noticeDetail from './detail/noticeDetail.vue';
+import newsDetail from './detail/newsDetail.vue';
 import NavBar from '@/layout/common/topInfo.vue';
-//通知通告
-import tztg from './detailParts/tztgDetail.vue';
-//新闻资讯
-import xwzx from './detailParts/xwzxDetail.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
 export default {
   name: 'detail',
   props: {},
   components: {
     NavBar,
-    //通知通告详情
-    tztg,
-    //新闻资讯详情
-    xwzx,
+    questionDetail,
+    noticeDetail,
+    newsDetail,
   },
   data: function() {
     return {
-      //头部标题
+      // 头部标题
       title: '',
       // meta为true
       isleftarrow: '',
       // 返回
       navShow: true,
-      //通知通告详情
-      tztgInfo: {},
-      //新闻资讯详情
-      xwzxInfo: {},
     };
   },
-  async created() {
-    await this.search();
+  created() {
+    this.searchTitle();
   },
   methods: {
-    ...journnews(['fetch']),
-    ...scienceNews({ xwzxFetch: 'fetch' }),
-    //查询
-    async search() {
-      let type = this.type;
-      if (type == 'tztg') {
-        this.$set(this, `title`, '通知通告详情');
-        let res = await this.fetch(this.id);
-        if (this.$checkRes(res)) {
-          this.$set(this, `tztgInfo`, res.data);
-        }
-      } else {
-        this.$set(this, `title`, '新闻资讯详情');
-        let res = await this.xwzxFetch(this.id);
-        if (this.$checkRes(res)) {
-          this.$set(this, `xwzxInfo`, res.data);
-        }
-      }
-    },
     // 返回首页
-    back() {
+    onClickLeft() {
       this.$router.push({ path: '/user/index' });
     },
+    // 获取标题
+    searchTitle() {
+      if (this.type == '0') this.title = '调查问卷详情';
+      else if (this.type == '1') this.title = '通知通告详情';
+      else if (this.type == '2') this.title = '新闻资讯详情';
+    },
   },
   computed: {
     ...mapState(['user']),
-    pageTitle() {
-      return `${this.$route.meta.title}`;
-    },
-    id() {
-      return this.$route.query.id;
-    },
     type() {
       return this.$route.query.type;
     },
   },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
   mounted() {
     this.isleftarrow = this.$route.meta.isleftarrow;
   },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {},
 };
 </script>
 
 <style lang="less" scoped>
-.detail {
-  width: 100%;
-  height: 100%;
-  position: relative;
-  background-color: #f9fafc;
+.main {
   .top {
-    height: 46px;
+    height: 47px;
     overflow: hidden;
-    position: relative;
-    z-index: 999;
   }
 }
 </style>

+ 21 - 13
src/views/user/detailParts/xwzxDetail.vue

@@ -1,5 +1,5 @@
 <template>
-  <div id="xwzxDtail">
+  <div id="newsDetail">
     <el-row>
       <el-col :spna="24" class="xwzxDtail">
         <p class="title">{{ xwzxInfo.title }}</p>
@@ -26,27 +26,35 @@
 </template>
 
 <script>
+const { mapActions: scienceNews } = createNamespacedHelpers('scienceNews');
 import { mapState, createNamespacedHelpers } from 'vuex';
 export default {
-  name: 'xwzxDtail',
-  props: {
-    xwzxInfo: { type: Object },
-  },
+  name: 'newsDetail',
+  props: {},
   components: {},
   data: function() {
-    return {};
+    return {
+      xwzxInfo: {},
+    };
+  },
+  async created() {
+    await this.search();
+  },
+  methods: {
+    ...scienceNews(['fetch']),
+    async search() {
+      let res = await this.fetch(this.id);
+      if (this.$checkRes(res)) {
+        this.$set(this, `xwzxInfo`, res.data);
+      }
+    },
   },
-  created() {},
-  methods: {},
   computed: {
     ...mapState(['user']),
-    pageTitle() {
-      return `${this.$route.meta.title}`;
+    id() {
+      return this.$route.query.id;
     },
   },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
 };
 </script>
 

+ 21 - 13
src/views/user/detailParts/tztgDetail.vue

@@ -1,5 +1,5 @@
 <template>
-  <div id="tztgDetail">
+  <div id="noticeDetail">
     <el-row>
       <el-col :spna="24" class="tztgDetail">
         <p class="title">{{ tztgInfo.title }}</p>
@@ -25,27 +25,35 @@
 </template>
 
 <script>
+const { mapActions: journnews } = createNamespacedHelpers('journnews');
 import { mapState, createNamespacedHelpers } from 'vuex';
 export default {
-  name: 'tztgDetail',
-  props: {
-    tztgInfo: { type: Object },
-  },
+  name: 'noticeDetail',
+  props: {},
   components: {},
   data: function() {
-    return {};
+    return {
+      tztgInfo: {},
+    };
+  },
+  async created() {
+    await this.search();
+  },
+  methods: {
+    ...journnews(['fetch']),
+    async search() {
+      let res = await this.fetch(this.id);
+      if (this.$checkRes(res)) {
+        this.$set(this, `tztgInfo`, res.data);
+      }
+    },
   },
-  created() {},
-  methods: {},
   computed: {
     ...mapState(['user']),
-    pageTitle() {
-      return `${this.$route.meta.title}`;
+    id() {
+      return this.$route.query.id;
     },
   },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
 };
 </script>
 

+ 27 - 14
src/views/service/parts/technicaldetail.vue

@@ -1,7 +1,7 @@
 <template>
-  <div id="technicaldetail">
+  <div id="questionDetail">
     <el-row>
-      <el-col :span="24" class="info">
+      <el-col :span="24" class="main">
         <el-col :span="24" class="name">
           {{ info.title }}
         </el-col>
@@ -43,31 +43,44 @@
 
 <script>
 import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: news } = createNamespacedHelpers('news');
 export default {
-  name: 'technicaldetail',
-  props: {
-    info: { type: Object },
+  metaInfo() {
+    return { title: this.$route.meta.title };
   },
+  name: 'questionDetail',
+  props: {},
   components: {},
   data: function() {
-    return {};
+    return {
+      info: {},
+    };
+  },
+  async created() {
+    await this.search();
+  },
+  methods: {
+    ...news(['fetch']),
+    async search() {
+      //查询栏目
+      let res = await this.fetch(this.id);
+      if (this.$checkRes(res)) {
+        this.$set(this, `info`, res.data);
+      }
+    },
   },
-  created() {},
-  methods: {},
   computed: {
     ...mapState(['user']),
-    pageTitle() {
-      return `${this.$route.meta.title}`;
+    id() {
+      return this.$route.query.id;
     },
   },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
+  watch: {},
 };
 </script>
 
 <style lang="less" scoped>
-.info {
+.main {
   .name {
     text-align: center;
     padding: 15px 10px 0 10px;

+ 4 - 50
src/views/user/index.vue

@@ -3,17 +3,14 @@
     <el-row>
       <el-col :span="24" class="main">
         <el-col :span="24" class="top">
-          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
-        </el-col>
-        <el-col :span="24" class="info">
           <span v-if="active == 0">
             <question></question>
           </span>
           <span v-else-if="active == 1">
-            <notice @btnClick="btnClick"></notice>
+            <notice></notice>
           </span>
           <span v-else-if="active == 2">
-            <news @btnClick="btnClick"></news>
+            <news></news>
           </span>
         </el-col>
         <el-col :span="24" class="foot">
@@ -33,7 +30,6 @@
 import question from './index/question.vue';
 import notice from './index/notice.vue';
 import news from './index/news.vue';
-import NavBar from '@/layout/common/topInfo.vue';
 import { mapState, createNamespacedHelpers } from 'vuex';
 export default {
   metaInfo() {
@@ -41,69 +37,27 @@ export default {
   },
   name: 'index',
   props: {},
-  components: {
-    NavBar,
-    question,
-    notice,
-    news,
-  },
+  components: { question, notice, news },
   data: function() {
     return {
-      //头部标题
-      title: '个人中心',
-      // meta为true
-      isleftarrow: '',
-      // 返回
-      navShow: true,
       active: 0,
     };
   },
-  created() {
-    this.chageAcieve(0);
-  },
+  created() {},
   methods: {
-    // 选择菜单
     chageAcieve(index) {
-      if (index == 0) {
-        this.$set(this, `title`, '调查问卷');
-      } else if (index == 1) {
-        this.$set(this, `title`, '通知通告');
-      } else if (index == 2) {
-        this.$set(this, `title`, '新闻资讯');
-      } else {
-        console.log('登录');
-        this.$set(this, `title`, '账号管理');
-      }
       if (index == 3) this.$router.push({ path: '/account/index' });
     },
-    //跳转详情
-    btnClick(data) {
-      // console.log(data);
-      this.$router.push({ path: '/user/detail', query: { id: data.id, type: data.type } });
-    },
   },
   computed: {
     ...mapState(['user']),
   },
-  mounted() {
-    this.isleftarrow = this.$route.meta.isleftarrow;
-  },
   watch: {},
 };
 </script>
 
 <style lang="less" scoped>
 .main {
-  width: 100%;
-  height: 100%;
-  position: relative;
-  background-color: #f9fafc;
-  .top {
-    height: 46px;
-    overflow: hidden;
-    position: relative;
-    z-index: 999;
-  }
   .foot {
     height: 50px;
     overflow: hidden;

+ 55 - 43
src/views/user/index/news.vue

@@ -1,12 +1,15 @@
 <template>
   <div id="news">
     <el-row>
-      <el-col :span="24" class="news">
+      <el-col :span="24" class="main">
+        <el-col :span="24" class="top">
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
+        </el-col>
         <el-col :span="24" class="search">
-          <van-search v-model="value" placeholder="请输入信息标题" @search="onSearch" />
+          <van-search v-model="name" @search="search" placeholder="请输入信息标题" />
         </el-col>
-        <el-col :span="24" class="mess">
-          <el-col :span="24" v-for="(item, index) in list" :key="index" class="list" @click.native="listClick(item)">
+        <el-col :span="24" class="info" v-loading="loading" element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading">
+          <el-col :span="24" v-for="(item, index) in list" :key="index" class="list" @click.native="detailBtn(item)">
             <p class="title textOver">{{ item.title }}</p>
             <p>
               <span class="textOver">发布时间:{{ item.publish_time }}</span>
@@ -15,80 +18,89 @@
           </el-col>
         </el-col>
       </el-col>
-      <el-backtop :bottom="50" :right="10"> </el-backtop>
     </el-row>
   </div>
 </template>
 
 <script>
-const { mapActions: scienceNews } = createNamespacedHelpers('scienceNews');
+import NavBar from '@/layout/common/topInfo.vue';
 import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: scienceNews } = createNamespacedHelpers('scienceNews');
 export default {
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
   name: 'news',
   props: {},
-  components: {},
+  components: {
+    NavBar,
+  },
   data: function() {
     return {
-      value: '',
-      //列表
+      // 头部标题
+      title: '',
+      // meta为true
+      isleftarrow: '',
+      // 返回
+      navShow: true,
+      // 查询
+      name: '',
+      // 列表
       list: [],
+      loading: true,
     };
   },
-  created() {
-    this.search();
+  async created() {
+    await this.search();
   },
   methods: {
-    ...scienceNews(['query', 'delete', 'update', 'create']),
-    async search() {
-      const res = await this.query();
+    ...scienceNews(['query']),
+    async search({ skip = 0, ...info } = {}) {
+      if (this.name) info.title = this.name;
+      let res = await this.query({ skip, ...info });
       if (this.$checkRes(res)) {
         this.$set(this, `list`, res.data);
+        this.loading = false;
       }
-      // console.log(res);
     },
-    //搜索
-    async onSearch({ ...info } = {}) {
-      if (this.value) {
-        info.title = this.value;
-        const res = await this.query({ ...info });
-        if (this.$checkRes(res)) {
-          this.$set(this, `list`, res.data);
-        }
-      } else {
-        this.search();
-      }
-    },
-    listClick(item) {
-      console.log(item);
-      this.$emit('btnClick', { type: 'xwzx', id: item.id });
+    detailBtn(data) {
+      this.$router.push({ path: '/user/detail', query: { id: data.id, type: '2' } });
     },
   },
   computed: {
     ...mapState(['user']),
   },
+  mounted() {
+    this.title = '新闻资讯';
+    this.isleftarrow = this.$route.meta.isleftarrow;
+  },
+  metaInfo() {
+    return { title: '新闻资讯' };
+  },
   watch: {},
 };
 </script>
 
 <style lang="less" scoped>
-.news {
-  position: relative;
+.main {
+  .top {
+    height: 47px;
+    overflow: hidden;
+  }
   .search {
-    position: fixed;
-    width: 100%;
-    z-index: 999;
+    height: 46px;
+    overflow: hidden;
     border-bottom: 1px solid #ccc;
-    background-color: #fff;
+    position: fixed;
+    z-index: 9999;
+    background: #fff;
+    top: 46px;
     .van-search {
-      padding: 10px 12px 10px 12px;
+      padding: 4px 10px;
     }
   }
-  .mess {
-    padding: 0px 10px;
-    margin-top: 55px;
+  .info {
+    padding: 0 10px 50px 10px;
+    position: relative;
+    top: 47px;
+    min-height: 500px;
     .list {
       padding: 10px 0px;
       border-bottom: 1px dashed #ccc;

+ 65 - 53
src/views/user/index/notice.vue

@@ -1,12 +1,15 @@
 <template>
-  <div id="notice">
+  <div id="news">
     <el-row>
-      <el-col :span="24" class="notice">
+      <el-col :span="24" class="main">
+        <el-col :span="24" class="top">
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
+        </el-col>
         <el-col :span="24" class="search">
-          <van-search v-model="value" placeholder="请输入信息标题" @search="onSearch" />
+          <van-search v-model="name" @search="search" placeholder="请输入信息标题" />
         </el-col>
-        <el-col :span="24" class="mess">
-          <el-col :span="24" v-for="(item, index) in list" :key="index" class="list" @click.native="listClick(item)">
+        <el-col :span="24" class="info" v-loading="loading" element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading">
+          <el-col :span="24" v-for="(item, index) in list" :key="index" class="list" @click.native="detailBtn(item)">
             <p class="title textOver">{{ item.title }}</p>
             <p>
               <span class="textOver">发布时间:{{ item.publish_time }}</span>
@@ -15,93 +18,102 @@
           </el-col>
         </el-col>
       </el-col>
-      <el-backtop :bottom="50" :right="10"> </el-backtop>
     </el-row>
   </div>
 </template>
 
 <script>
+import NavBar from '@/layout/common/topInfo.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
 const { mapActions: journcolumn } = createNamespacedHelpers('journcolumn');
 const { mapActions: journnews } = createNamespacedHelpers('journnews');
-import { mapState, createNamespacedHelpers } from 'vuex';
 export default {
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  name: 'notice',
+  name: 'news',
   props: {},
-  components: {},
+  components: {
+    NavBar,
+  },
   data: function() {
     return {
-      columnList: [],
-      colId: '',
+      // 头部标题
+      title: '',
+      // meta为true
+      isleftarrow: '',
+      // 返回
+      navShow: true,
+      // 查询
+      name: '',
+      // 栏目详情
+      columnInfo: {},
+      // 列表
       list: [],
-      value: '',
+      loading: true,
     };
   },
   async created() {
+    await this.searchColumn();
     await this.search();
-    await this.searchList();
   },
   methods: {
-    ...journcolumn(['query', 'delete', 'update', 'create']),
-    ...journnews({ newQuery: 'query' }),
-    //查栏目
-    async search() {
-      const res = await this.query();
-      if (this.$checkRes(res)) {
-        this.$set(this, `columnList`, res.data);
-        const colData = this.columnList.find(i => i.site == 'tztg');
-        this.colId = colData.id;
-      }
-    },
-    //查列表
-    async searchList() {
-      const res = await this.newQuery({ column_id: this.colId });
+    ...journcolumn({ columnQuery: 'query' }),
+    ...journnews(['query']),
+    async search({ skip = 0, ...info } = {}) {
+      if (this.name) info.title = this.name;
+      const res = await this.query({ skip, column_id: this.columnInfo.id, ...info });
       if (this.$checkRes(res)) {
         this.$set(this, `list`, res.data);
+        this.loading = false;
       }
     },
-    //搜索
-    async onSearch({ ...info } = {}) {
-      if (this.value) {
-        info.title = this.value;
-        info.column_id = this.colId;
-        const res = await this.newQuery({ ...info });
-        if (this.$checkRes(res)) {
-          this.$set(this, `list`, res.data);
-        }
-      } else {
-        this.searchList();
+    // 查询类型
+    async searchColumn() {
+      let res = await this.columnQuery();
+      if (this.$checkRes(res)) {
+        let columnInfo = res.data.find(i => i.site == 'tztg');
+        if (columnInfo) this.$set(this, `columnInfo`, columnInfo);
       }
     },
-    listClick(item) {
-      this.$emit('btnClick', { type: 'tztg', id: item.id });
+    detailBtn(data) {
+      this.$router.push({ path: '/user/detail', query: { id: data.id, type: '1' } });
     },
   },
   computed: {
     ...mapState(['user']),
   },
+  mounted() {
+    this.title = '通知通告';
+    this.isleftarrow = this.$route.meta.isleftarrow;
+  },
+  metaInfo() {
+    return { title: '通知通告' };
+  },
   watch: {},
 };
 </script>
 
 <style lang="less" scoped>
-.notice {
-  position: relative;
+.main {
+  .top {
+    height: 47px;
+    overflow: hidden;
+  }
   .search {
-    position: fixed;
-    width: 100%;
-    z-index: 999;
+    height: 46px;
+    overflow: hidden;
     border-bottom: 1px solid #ccc;
-    background-color: #fff;
+    position: fixed;
+    z-index: 9999;
+    background: #fff;
+    top: 46px;
     .van-search {
-      padding: 10px 12px 10px 12px;
+      padding: 4px 10px;
     }
   }
-  .mess {
-    padding: 0px 10px;
-    margin-top: 55px;
+  .info {
+    padding: 0 10px 50px 10px;
+    position: relative;
+    top: 47px;
+    min-height: 500px;
     .list {
       padding: 10px 0px;
       border-bottom: 1px dashed #ccc;

+ 65 - 52
src/views/user/index/question.vue

@@ -1,12 +1,15 @@
 <template>
-  <div id="question">
+  <div id="news">
     <el-row>
-      <el-col :span="24" class="question">
+      <el-col :span="24" class="main">
+        <el-col :span="24" class="top">
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
+        </el-col>
         <el-col :span="24" class="search">
-          <van-search v-model="value" placeholder="请输入信息标题" @search="onSearch" />
+          <van-search v-model="name" @search="search" placeholder="请输入信息标题" />
         </el-col>
-        <el-col :span="24" class="mess">
-          <el-col :span="24" v-for="(item, index) in list" :key="index" class="list">
+        <el-col :span="24" class="info" v-loading="loading" element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading">
+          <el-col :span="24" v-for="(item, index) in list" :key="index" class="list" @click.native="detailBtn(item)">
             <p class="title textOver">{{ item.title }}</p>
             <p>
               <span class="textOver">发布时间:{{ item.publish_time }}</span>
@@ -20,87 +23,97 @@
 </template>
 
 <script>
+import NavBar from '@/layout/common/topInfo.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
 const { mapActions: column } = createNamespacedHelpers('column');
 const { mapActions: news } = createNamespacedHelpers('news');
-import { mapState, createNamespacedHelpers } from 'vuex';
 export default {
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  name: 'question',
+  name: 'news',
   props: {},
-  components: {},
+  components: {
+    NavBar,
+  },
   data: function() {
     return {
-      //栏目列表
-      columnList: [],
-      colId: '',
+      // 头部标题
+      title: '',
+      // meta为true
+      isleftarrow: '',
+      // 返回
+      navShow: true,
+      // 查询
+      name: '',
+      // 栏目详情
+      columnInfo: {},
+      // 列表
       list: [],
-      value: '',
+      loading: true,
     };
   },
   async created() {
+    await this.searchColumn();
     await this.search();
-    await this.searchList();
   },
   methods: {
-    ...column(['query', 'delete', 'update', 'create']),
-    ...news({ newQuery: 'query' }),
-    //查栏目
-    async search() {
-      const res = await this.query();
+    ...column({ columnQuery: 'query' }),
+    ...news(['query']),
+    async search({ skip = 0, ...info } = {}) {
+      if (this.name) info.title = this.name;
+      const res = await this.query({ skip, column_id: this.columnInfo.id, ...info });
       if (this.$checkRes(res)) {
-        this.$set(this, `columnList`, res.data);
-        const colData = this.columnList.find(i => i.site == 'dcwj');
-        this.colId = colData.id;
+        this.$set(this, `list`, res.data);
+        this.loading = false;
       }
     },
-    //查列表
-    async searchList() {
-      const res = await this.newQuery({ column_id: this.colId });
+    // 查询类型
+    async searchColumn() {
+      let res = await this.columnQuery();
       if (this.$checkRes(res)) {
-        this.$set(this, `list`, res.data);
-        // console.log(this.list);
+        let columnInfo = res.data.find(i => i.site == 'dcwj');
+        if (columnInfo) this.$set(this, `columnInfo`, columnInfo);
       }
     },
-    //搜索
-    async onSearch({ ...info } = {}) {
-      if (this.value) {
-        info.title = this.value;
-        info.column_id = this.colId;
-        const res = await this.newQuery({ ...info });
-        console.log(res.data);
-        if (this.$checkRes(res)) {
-          this.$set(this, `list`, res.data);
-        }
-      } else {
-        this.searchList();
-      }
+    detailBtn(data) {
+      this.$router.push({ path: '/user/detail', query: { id: data.id, type: '0' } });
     },
   },
   computed: {
     ...mapState(['user']),
   },
+  mounted() {
+    this.title = '调查问卷';
+    this.isleftarrow = this.$route.meta.isleftarrow;
+  },
+  metaInfo() {
+    return { title: '调查问卷' };
+  },
   watch: {},
 };
 </script>
 
 <style lang="less" scoped>
-.question {
-  position: relative;
+.main {
+  .top {
+    height: 47px;
+    overflow: hidden;
+  }
   .search {
-    position: fixed;
-    width: 100%;
-    z-index: 999;
+    height: 46px;
+    overflow: hidden;
     border-bottom: 1px solid #ccc;
-    background-color: #fff;
+    position: fixed;
+    z-index: 9999;
+    background: #fff;
+    top: 46px;
     .van-search {
-      padding: 10px 12px 10px 12px;
+      padding: 4px 10px;
     }
   }
-  .mess {
-    padding: 0px 10px;
-    margin-top: 55px;
+  .info {
+    padding: 0 10px 50px 10px;
+    position: relative;
+    top: 47px;
+    min-height: 500px;
     .list {
       padding: 10px 0px;
       border-bottom: 1px dashed #ccc;

+ 1 - 0
vue.config.js

@@ -28,6 +28,7 @@ module.exports = {
       },
       '/api': {
         target: 'http://free.liaoningdoupo.com',
+        // target: 'http://192.168.1.19:9004',
         changeOrigin: true,
         ws: true,
       },