member.vue 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. <template>
  2. <div id="member">
  3. <member-detail
  4. :backColor="backColor"
  5. :info="site"
  6. :menuList="menu"
  7. :messageInfo="messageInfo"
  8. :carouselList="tupianList"
  9. :newsList="newsList"
  10. :rencaiList="rencaiList"
  11. :dangjianList="dangjianList"
  12. :yaowenList="yaowenList"
  13. :dangguiList="dangguiList"
  14. :zhishiList="zhishiList"
  15. :zhunti="zhuantiList"
  16. :tujiList="huodongList"
  17. ></member-detail>
  18. </div>
  19. </template>
  20. <script>
  21. import memberDetail from '@/components/member.vue';
  22. import { mapActions, mapState } from 'vuex';
  23. import _ from 'lodash';
  24. export default {
  25. metaInfo() {
  26. return {
  27. title: this.siteTitle ? this.siteTitle : '就业信息网',
  28. };
  29. },
  30. name: 'member',
  31. props: {},
  32. components: {
  33. memberDetail,
  34. },
  35. data: () => ({
  36. backColor: '#be0101',
  37. info: {
  38. title: '吉林省高等学校毕业生就业信息网',
  39. banner: require('@/assets/memberBg.jpg'),
  40. copyright: '吉ICP备09006292号-1 Copyright 2019 版权所有 吉林省高等学校毕业生就业指导中心 All Rights Reserved',
  41. },
  42. messageInfo: {
  43. title: '市委常委会召开“不忘初心、牢记使命“专题民主生活会',
  44. content: '吉林省高等学校毕业生就业信息网',
  45. },
  46. carouselList: [
  47. {
  48. url: require('@/assets/news.jpg'),
  49. title: '吉林省高等学校毕业生就业信息网',
  50. },
  51. ],
  52. tupianList: [], //高层声音中左侧图片新闻
  53. newsList: [], //高层声音中右侧文字新闻列表
  54. rencaiList: [], //人才建设
  55. dangjianList: [], //党建综合
  56. yaowenList: [], //党建要闻
  57. dangguiList: [], //党规党章
  58. zhishiList: [], //知识问答
  59. zhuantiList: [], //专题学习
  60. huodongList: [], //活动图集
  61. site: {}, //站点信息
  62. siteTitle: {}, //站点标题
  63. menu: [], //菜单
  64. modules: [], //模块
  65. }),
  66. async created() {
  67. await this.toGetSite(); //获取主站信息
  68. this.loadMenu(); //获取菜单信息
  69. this.toGetModule(); //获取模块信息
  70. },
  71. computed: {},
  72. methods: {
  73. ...mapActions(['getSite', `getMenu`, 'getColumn', 'getModule', 'getNews', 'getJobInfo', 'getPosts', 'getLink']),
  74. //站点信息
  75. async toGetSite() {
  76. let site = sessionStorage.getItem('site');
  77. if (site) {
  78. this.$set(this, `site`, JSON.parse(site));
  79. this.$set(this, `siteTitle`, this.site.name);
  80. } else {
  81. let result = await this.getSite({ type: 'search' });
  82. if (result.errcode === 0) {
  83. sessionStorage.setItem('site', JSON.stringify(result.data));
  84. if (_.get(result.data, `custom`)) {
  85. let item = result.custom;
  86. }
  87. this.$set(this, `site`, result.data);
  88. this.$set(this, `siteTitle`, this.site.name);
  89. }
  90. }
  91. },
  92. //菜单
  93. async loadMenu() {
  94. let menu = sessionStorage.getItem('menu');
  95. if (menu) {
  96. this.$set(this, `menu`, JSON.parse(menu));
  97. this.finishedMenu();
  98. return;
  99. } else this.toGetMenu();
  100. },
  101. async toGetMenu() {
  102. let result = await this.getMenu({ type: `list` });
  103. if (result.errcode === 0) {
  104. // sessionStorage.setItem('menu', JSON.stringify(result.data));
  105. this.$set(this, `menu`, result.data);
  106. this.finishedMenu();
  107. }
  108. },
  109. async finishedMenu() {
  110. let menus = JSON.parse(JSON.stringify(this.menu));
  111. for (const item of menus) {
  112. if (item.type === 'content') {
  113. item.path = `/detail?id=${item.content_id}`;
  114. } else if (item.type !== 'url') {
  115. let res = await this.completeMenu(item);
  116. item.children = res;
  117. }
  118. }
  119. this.$set(this, `menu`, menus);
  120. },
  121. async completeMenu(item) {
  122. let result = await this.getColumn({
  123. type: `list`,
  124. data: { parent_id: item.id },
  125. });
  126. if (result.errcode === 0) {
  127. let columns = result.data;
  128. for (const col of columns) {
  129. if (col.type === 'content') {
  130. col.path = `/detail/${col.content_id}`;
  131. } else if (col.type !== 'url') {
  132. col.path = `/newsList/menu/${col.id}?title=${col.title}`;
  133. if (col.parent.includes('党员')) {
  134. col.path = `/memberList/menu/${col.id}?title=${col.title}`;
  135. }
  136. }
  137. }
  138. return columns;
  139. }
  140. },
  141. //模块
  142. async loadModule() {
  143. let modules = sessionStorage.getItem('modules');
  144. for (const item of modules) {
  145. if (item.category === 'member') {
  146. this.$set(this, `modules`, JSON.parse(modules));
  147. return;
  148. }
  149. }
  150. this.toGetModule();
  151. },
  152. async toGetModule() {
  153. let result = await this.getModule({ type: `list` });
  154. if (result.errcode === 0) {
  155. sessionStorage.setItem('modules', JSON.stringify(result.data));
  156. this.$set(this, `modules`, result.data);
  157. this.finishedModule();
  158. }
  159. },
  160. async finishedModule() {
  161. let modules = JSON.parse(JSON.stringify(this.modules));
  162. let object = {};
  163. for (const item of modules) {
  164. if (item.category === 'member') {
  165. if (`${item.is_use}` === `0`) {
  166. let res = await this.completeModules(item);
  167. item.children = res;
  168. object = item;
  169. }
  170. }
  171. }
  172. for (const item of object.children) {
  173. console.log(item.category);
  174. console.log(_.get(this, `${item.category}`));
  175. this.$set(this, `${item.category}List`, item);
  176. }
  177. },
  178. async completeModules(item) {
  179. let result = await this.getColumn({
  180. type: `list`,
  181. data: { parent_id: item.id },
  182. });
  183. if (result.errcode === 0) {
  184. let columns = result.data;
  185. for (const col of columns) {
  186. if (col.type === `bugList`) {
  187. col.path = `/memberList/module/${col.content_id}`;
  188. col.children = await this.completeColumn(col);
  189. } else if (col.type === `column`) {
  190. col.path = `/memberList/module/${col.id}`;
  191. col.children = await this.completeColumn(col);
  192. } else if (col.type === `content`) {
  193. col.path = `/detail/${col.content_id}`;
  194. }
  195. }
  196. return columns;
  197. }
  198. },
  199. async completeColumn(item) {
  200. let data = { skip: 0, limit: 8 };
  201. if (item.type === `bugList`) {
  202. data.news_type = `0`;
  203. data.parent_id = item.content_id;
  204. } else {
  205. data.news_type = `1`;
  206. data.parent_id = item.id;
  207. }
  208. let result = await this.getNews({ type: 'bugList', data: data });
  209. if (result.errcode === 0) {
  210. return result.data;
  211. }
  212. },
  213. },
  214. };
  215. </script>
  216. <style lang="scss" scoped></style>