talk.vue 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <template>
  2. <div id="talk">
  3. <talk-detail :menuList="menu" :sideMenu="sideMenu" :info="site" :backColor="backColor" :Color="Color" :talkInfo="talkInfo" :jobList="jobList"></talk-detail>
  4. </div>
  5. </template>
  6. <script>
  7. import talkDetail from '@/components/talk.vue';
  8. import { mapActions, mapState } from 'vuex';
  9. import _ from 'lodash';
  10. export default {
  11. metaInfo() {
  12. return {
  13. title: this.siteTitle ? this.siteTitle : '就业信息网',
  14. };
  15. },
  16. name: 'talk',
  17. props: {},
  18. components: {
  19. talkDetail,
  20. },
  21. data: () => ({
  22. info: {
  23. src: require('@/assets/logo.png'),
  24. phone: '0431-12345678',
  25. banner: require('@/assets/banner.png'),
  26. address: '办公地址:长春市经济技术开发区金川街151号吉林省高等学校毕业生就业指导中心2楼一站式办公大厅',
  27. email: '邮编:130012',
  28. gongjiao: '公交线路:乘坐120路、227路、20路、260路、80路、130路、281路、154路、190路、125路公交北方市场下车,北方市场南门南行200米。',
  29. mobile: '业务咨询电话:0431-84657570 0431-84657571;',
  30. date: '办公时间:周一至周五,法定假日不对外办公。',
  31. copyright: '吉ICP备09006292号-1 Copyright 2013 版权所有 吉林省高等学校毕业生就业指导中心 All Rights Reserved',
  32. },
  33. talkInfo: {},
  34. jobList: [],
  35. menu: [],
  36. site: {},
  37. sideMenu: [],
  38. siteTitle: '',
  39. backColor: '#0457c7',
  40. Color: '#0457c7',
  41. }),
  42. async created() {
  43. await this.toGetSite(); //获取主站信息
  44. await this.loadMenu(); //获取菜单信息
  45. this.search();
  46. },
  47. computed: {},
  48. methods: {
  49. ...mapActions(['getSite', 'getMenu', 'getColumn', 'getTalk', 'getPosts']),
  50. async search() {
  51. //1直接拿着参数发送请求
  52. let result = await this.getTalk({ type: 'fetch', data: { id: this.$route.query.id } });
  53. if (`${result.errcode}` === '0') {
  54. this.$set(this, `talkInfo`, result.data);
  55. this.searchJobs();
  56. } else {
  57. this.$message.error(result.errmsg ? result.errmsg : 'error');
  58. }
  59. },
  60. async searchJobs() {
  61. let jobs = this.talkInfo.jobs;
  62. if (jobs.length > 0) {
  63. jobs.map(async item => {
  64. let result = await this.postOperation({ type: 'search', data: { id: item } });
  65. if (`${result.errcode}` === '0') {
  66. result.data ? this.jobList.push(result.data) : '';
  67. }
  68. });
  69. }
  70. },
  71. //站点信息
  72. async toGetSite() {
  73. let site = sessionStorage.getItem('site');
  74. if (site) {
  75. this.$set(this, `site`, JSON.parse(site));
  76. this.$set(this, `siteTitle`, this.site.name);
  77. } else {
  78. let result = await this.getSite({ type: 'search' });
  79. if (result.errcode === 0) {
  80. sessionStorage.setItem('site', JSON.stringify(result.data));
  81. if (_.get(result.data, `custom`)) {
  82. let item = result.custom;
  83. }
  84. this.$set(this, `site`, result.data);
  85. this.$set(this, `siteTitle`, this.site.name);
  86. }
  87. }
  88. },
  89. //菜单
  90. async loadMenu() {
  91. let menu = sessionStorage.getItem('menu');
  92. if (menu) {
  93. this.$set(this, `menu`, JSON.parse(menu));
  94. await this.finishedMenu();
  95. } else this.toGetMenu();
  96. },
  97. async toGetMenu() {
  98. let result = await this.getMenu({ type: `list` });
  99. if (result.errcode === 0) {
  100. sessionStorage.setItem('menu', JSON.stringify(result.data));
  101. this.$set(this, `menu`, result.data);
  102. this.finishedMenu();
  103. }
  104. },
  105. async finishedMenu() {
  106. let menus = JSON.parse(JSON.stringify(this.menu));
  107. for (const item of menus) {
  108. if (item.type === 'content') {
  109. item.path = `/detail/${item.content_id}`;
  110. } else if (item.type !== 'url') {
  111. let res = await this.completeMenu(item);
  112. item.children = res;
  113. }
  114. }
  115. this.$set(this, `menu`, menus);
  116. },
  117. async completeMenu(item) {
  118. let result = await this.getColumn({
  119. type: `list`,
  120. data: { parent_id: item.id },
  121. });
  122. if (result.errcode === 0) {
  123. let columns = result.data;
  124. for (const col of columns) {
  125. if (col.type === 'content') {
  126. col.path = `/detail/${col.content_id}`;
  127. } else if (col.type !== 'url') {
  128. col.path = `/newsList/menu/${col.id}?title=${col.title}`;
  129. if (col.parent.includes('党员')) {
  130. col.path = `/memberList/menu/${col.id}?title=${col.title}`;
  131. }
  132. }
  133. }
  134. return columns;
  135. }
  136. },
  137. },
  138. };
  139. </script>
  140. <style lang="less" scoped></style>