index.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444
  1. <template>
  2. <div id="technical">
  3. <el-col :span="24" class="main">
  4. <!-- <el-col :span="12" class="left">
  5. <el-col :span="24" class="downLeftTop">
  6. <el-image :src="downLeftTopImage"></el-image>
  7. <span class="topText">
  8. <span>专题研讨</span>
  9. <span
  10. ><p>S</p>
  11. <p>eminar</p></span
  12. >
  13. <span @click="turnToList('专题研讨')">更多</span>
  14. </span>
  15. </el-col>
  16. <el-col :span="24" class="infoLeft">
  17. <el-col class="infoLeftList" :span="24" v-for="(item, index) in zhuantiList" :key="index">
  18. <p>{{ item.publish_time }}</p>
  19. <p>
  20. <span @click="$router.push({ path: '/technical/list', query: { id: item.id, display: 2, column_name: '专题研讨' } })" class="textOver">{{
  21. item.title
  22. }}</span>
  23. <span>{{ item.titlejj }}</span>
  24. </p>
  25. </el-col>
  26. </el-col>
  27. </el-col> -->
  28. <el-col :span="12" class="left">
  29. <el-col :span="24" class="downLeftTop">
  30. <el-image :src="downLeftTopImage"></el-image>
  31. <span class="topText">
  32. <span>专家问诊</span>
  33. <span
  34. ><p>E</p>
  35. <p>xpert</p></span
  36. >
  37. <span @click="turnToList('专家问诊')">更多</span>
  38. </span>
  39. </el-col>
  40. <el-col :span="24" class="infoLeft">
  41. <el-col class="infoRightList" :span="24" v-for="(item, index) in jishuList" :key="index">
  42. <p>
  43. <span class="textOver" @click="$router.push({ path: '/technical/list', query: { id: item.id, display: 3, column_name: '专家问诊' } })">{{
  44. item.title
  45. }}</span
  46. ><span class="textOver">{{ item.publish_time }}</span>
  47. </p>
  48. </el-col>
  49. </el-col>
  50. </el-col>
  51. <el-col :span="12" class="right">
  52. <el-col :span="24" class="downLeftTop">
  53. <el-image :src="downLeftTopImage"></el-image>
  54. <span class="topText">
  55. <span>行业研究</span>
  56. <span
  57. ><p>I</p>
  58. <p>ndustry</p></span
  59. >
  60. <span @click="turnToList('行业研究')">更多</span>
  61. </span>
  62. </el-col>
  63. <el-col :span="23" class="infoRight">
  64. <el-col class="infoRightList" :span="24" v-for="(item, index) in hangyeList" :key="index">
  65. <p>
  66. <span class="textOver" @click="$router.push({ path: '/technical/list', query: { id: item.id, display: 3, column_name: '行业研究' } })">{{
  67. item.title
  68. }}</span
  69. ><span class="textOver">{{ item.publish_time }}</span>
  70. </p>
  71. </el-col>
  72. </el-col>
  73. </el-col>
  74. <el-col :span="24">
  75. <el-image :src="jishuImage" class="jishuImage"></el-image>
  76. </el-col>
  77. <el-col :span="12" class="left">
  78. <el-col :span="24" class="downLeftTop">
  79. <el-image :src="downLeftTopImage"></el-image>
  80. <span class="topText">
  81. <span>在线指导</span>
  82. <span
  83. ><p>G</p>
  84. <p>uidance</p></span
  85. >
  86. <span @click="turnToList('在线指导')">更多</span>
  87. </span>
  88. </el-col>
  89. <el-col :span="24" class="infoLeft">
  90. <el-col class="infoRightList" :span="24" v-for="(item, index) in zhidaolist" :key="index">
  91. <p>
  92. <span class="textOver" @click="$router.push({ path: '/technical/list', query: { id: item.id, display: 4, column_name: '在线指导' } })">{{
  93. item.title
  94. }}</span
  95. ><span class="textOver">{{ item.publish_time }}</span>
  96. </p>
  97. </el-col>
  98. </el-col>
  99. </el-col>
  100. <el-col :span="12" class="right">
  101. <el-col :span="24" class="downLeftTop">
  102. <el-image :src="downLeftTopImage"></el-image>
  103. <span class="topText">
  104. <span>项目路演</span>
  105. <span
  106. ><p>R</p>
  107. <p>oadshow</p></span
  108. >
  109. <span @click="turnToList('项目路演')">更多</span>
  110. </span>
  111. </el-col>
  112. <el-col :span="23" class="infoRight">
  113. <el-col class="infoLeftList" :span="24" v-for="(item, index) in luyanlist" :key="index">
  114. <p>{{ item.publish_time }}</p>
  115. <p>
  116. <span class="textOver" @click="$router.push({ path: '/technical/list', query: { id: item.id, display: 3, column_name: '项目路演' } })">{{
  117. item.title
  118. }}</span>
  119. <span>{{ item.titlejj }}</span>
  120. </p>
  121. </el-col>
  122. </el-col>
  123. </el-col>
  124. </el-col>
  125. </div>
  126. </template>
  127. <script>
  128. import _ from 'lodash';
  129. import { mapState, createNamespacedHelpers } from 'vuex';
  130. const { mapActions: column } = createNamespacedHelpers('column');
  131. const { mapActions: news } = createNamespacedHelpers('news');
  132. export default {
  133. name: 'technical',
  134. props: {},
  135. components: {},
  136. data: () => ({
  137. downLeftTopImage: require('@/assets/live/square_big.png'),
  138. jishuImage: require('@/assets/live/main3.png'),
  139. zhuantiList: [],
  140. jishuList: [],
  141. hangyeList: [],
  142. jiaoyuList: [],
  143. zhidaolist: [],
  144. luyanlist: [],
  145. }),
  146. created() {
  147. this.searchInfo();
  148. },
  149. computed: {
  150. pageTitle() {
  151. return `${this.$route.meta.title}`;
  152. },
  153. },
  154. metaInfo() {
  155. return { title: this.$route.meta.title };
  156. },
  157. methods: {
  158. ...column({ columnList: 'query', columnInfo: 'fetch' }),
  159. ...news({ newsList: 'query' }),
  160. async searchInfo({ ...info } = {}) {
  161. const res = await this.columnList({ ...info });
  162. for (const val of res.data) {
  163. this.tpxwSearch({ column_id: val.id, column_name: val.name, site: val.site });
  164. }
  165. },
  166. async tpxwSearch({ column_id, column_name, site } = {}) {
  167. if (column_name == '专题研讨') {
  168. const res = await this.newsList({ skip: 0, limit: 5, column_id: column_id });
  169. if (this.$checkRes(res)) this.$set(this, `zhuantiList`, res.data);
  170. } else if (column_name == '专家问诊') {
  171. const res = await this.newsList({ skip: 0, limit: 8, column_id: column_id });
  172. if (this.$checkRes(res)) this.$set(this, `jishuList`, res.data);
  173. } else if (column_name == '行业研究') {
  174. const res = await this.newsList({ skip: 0, limit: 8, column_id: column_id });
  175. if (this.$checkRes(res)) this.$set(this, `hangyeList`, res.data);
  176. } else if (column_name == '在线指导') {
  177. const res = await this.newsList({ skip: 0, limit: 8, column_id: column_id });
  178. if (this.$checkRes(res)) this.$set(this, `zhidaolist`, res.data);
  179. } else if (column_name == '项目路演') {
  180. const res = await this.newsList({ skip: 0, limit: 5, column_id: column_id });
  181. if (this.$checkRes(res)) this.$set(this, `luyanlist`, res.data);
  182. }
  183. },
  184. turnToList(column_name) {
  185. this.$router.push({ path: '/technical/list', query: { column_name: column_name, display: 1 } });
  186. },
  187. },
  188. };
  189. </script>
  190. <style lang="less" scoped>
  191. .jishuImage {
  192. width: 100%;
  193. height: 160px;
  194. }
  195. .main {
  196. width: 80%;
  197. margin: 0 auto;
  198. float: none;
  199. }
  200. .left {
  201. float: left;
  202. height: 500px;
  203. margin: 30px 0 30px 0;
  204. overflow: hidden;
  205. border-right: 1px dashed #044b79;
  206. width: 49.5%;
  207. }
  208. .leftTitle {
  209. text-align: center;
  210. position: relative;
  211. }
  212. .leftTitle p:first-child {
  213. font-size: 18px;
  214. color: #044b79;
  215. font-weight: bold;
  216. }
  217. .leftTitle p:last-child {
  218. float: left;
  219. width: 2px;
  220. height: 402px;
  221. background-color: #044b79;
  222. margin: 0 5px;
  223. position: absolute;
  224. left: 9px;
  225. }
  226. .infoLeft {
  227. height: 480px;
  228. padding: 0 10px;
  229. }
  230. .infoLeftList {
  231. float: left;
  232. width: 95%;
  233. border-bottom: 1px dashed #ccc;
  234. padding: 8px 0 8px 0;
  235. height: 90px;
  236. margin: 0 0 0 5px;
  237. }
  238. .infoLeftList:nth-child(5) {
  239. float: left;
  240. width: 95%;
  241. border-bottom: none;
  242. padding: 8px 0 8px 0;
  243. height: 90px;
  244. margin: 0 0 15px 5px;
  245. }
  246. .infoLeftList:hover p:last-child span:first-child {
  247. -webkit-transform: translateY(-3px);
  248. -ms-transform: translateY(-3px);
  249. transform: translateY(-3px);
  250. -webkit-box-shadow: 0 0 6px #999;
  251. box-shadow: 0 0 6px #999;
  252. -webkit-transition: all 0.5s ease-out;
  253. transition: all 0.5s ease-out;
  254. color: #005293;
  255. cursor: pointer;
  256. }
  257. .infoLeftList p:first-child {
  258. float: left;
  259. width: 20%;
  260. font-size: 15px;
  261. background: #044b79;
  262. text-align: center;
  263. color: #fff;
  264. font-weight: bold;
  265. padding: 4px 0px;
  266. margin: 0 0 0 5px;
  267. }
  268. .infoLeftList p:last-child {
  269. float: right;
  270. width: 70%;
  271. padding: 0 0 0 10px;
  272. }
  273. .infoLeftList p:last-child span:first-child {
  274. float: left;
  275. width: 90%;
  276. font-size: 18px;
  277. }
  278. .infoLeftList p:last-child span:last-child {
  279. float: left;
  280. width: 90%;
  281. font-size: 16px;
  282. overflow: hidden;
  283. text-overflow: ellipsis;
  284. -webkit-line-clamp: 2;
  285. word-break: break-all;
  286. display: -webkit-box;
  287. -webkit-box-orient: vertical;
  288. margin: 5px 0 0 0;
  289. color: #666;
  290. }
  291. .leftListDown {
  292. position: relative;
  293. }
  294. .leftListDown span:first-child {
  295. display: inline-block;
  296. width: 80%;
  297. height: 3px;
  298. background: rgba(4, 75, 121, 0.37);
  299. margin: 0 10px 0 0;
  300. position: absolute;
  301. left: -10px;
  302. top: 10px;
  303. }
  304. .leftListDown span:last-child {
  305. font-size: 16px;
  306. float: right;
  307. padding: 0 15px 0 0;
  308. color: #044b79;
  309. font-weight: 700;
  310. cursor: pointer;
  311. }
  312. .right {
  313. float: right;
  314. height: 500px;
  315. overflow: hidden;
  316. margin: 30px 0 30px 0;
  317. width: 49.5%;
  318. }
  319. .rightListTop {
  320. position: relative;
  321. }
  322. .rightListTop span:first-child {
  323. font-size: 16px;
  324. float: left;
  325. padding: 0 0 0 15px;
  326. color: #044b79;
  327. font-weight: 700;
  328. cursor: pointer;
  329. }
  330. .rightListTop span:last-child {
  331. display: inline-block;
  332. width: 80%;
  333. height: 3px;
  334. background: rgba(4, 75, 121, 0.37);
  335. margin: 0 10px 0 0;
  336. position: absolute;
  337. right: -10px;
  338. top: 10px;
  339. }
  340. .infoRight {
  341. height: 480px;
  342. padding: 0 10px;
  343. }
  344. .infoRightList {
  345. float: left;
  346. width: 95%;
  347. padding: 11px 0;
  348. height: 55px;
  349. }
  350. .infoRightList:nth-child(4) {
  351. border-bottom: 1px solid #ccc;
  352. padding: 0 0 17px 0;
  353. }
  354. .infoRightList:nth-child(5) {
  355. padding: 11px 0 0 0;
  356. }
  357. .infoRightList:hover p span:first-child {
  358. -webkit-transform: translateY(-3px);
  359. -ms-transform: translateY(-3px);
  360. transform: translateY(-3px);
  361. -webkit-box-shadow: 0 0 6px #999;
  362. box-shadow: 0 0 6px #999;
  363. -webkit-transition: all 0.5s ease-out;
  364. transition: all 0.5s ease-out;
  365. color: #005293;
  366. cursor: pointer;
  367. }
  368. .infoRightList p {
  369. font-size: 18px;
  370. }
  371. .infoRightList p span:first-child {
  372. display: inline-block;
  373. width: 70%;
  374. margin: 0 20px 0 10px;
  375. }
  376. .infoRightList p span:last-child {
  377. display: inline-block;
  378. width: 21%;
  379. text-align: center;
  380. font-size: 16px;
  381. }
  382. .rightTitle {
  383. text-align: center;
  384. }
  385. .rightTitle p:first-child {
  386. width: 2px;
  387. height: 370px;
  388. background: #044b79;
  389. position: relative;
  390. left: 10px;
  391. top: -20px;
  392. }
  393. .rightTitle p:last-child {
  394. font-size: 18px;
  395. font-weight: bold;
  396. color: #044b79;
  397. }
  398. .downLeftTop .el-image {
  399. width: 40px;
  400. }
  401. .topText {
  402. width: 89%;
  403. border-bottom: 2.5px solid #044b79;
  404. display: inline-block;
  405. position: relative;
  406. top: -10px;
  407. margin: 0 0 0 5px;
  408. }
  409. .topText span:first-child {
  410. font-size: 24px;
  411. font-weight: 700;
  412. color: #000000;
  413. padding: 0 10px;
  414. top: 4px;
  415. }
  416. .topText span p:first-child {
  417. font-weight: 800;
  418. font-size: 34px;
  419. color: #92959a;
  420. top: 11px;
  421. display: inline-block;
  422. }
  423. .topText span p:last-child {
  424. display: inline-block;
  425. font-weight: 700;
  426. font-size: 18px;
  427. color: #92959a;
  428. }
  429. .topText span:last-child {
  430. float: right;
  431. font-size: 16px;
  432. font-weight: 700;
  433. color: #044b79;
  434. position: relative;
  435. top: 20px;
  436. cursor: pointer;
  437. }
  438. </style>