|
@@ -0,0 +1,184 @@
|
|
|
|
+<template>
|
|
|
|
+ <div id="newsList">
|
|
|
|
+ <list-detail
|
|
|
|
+ :menuList="menu"
|
|
|
|
+ :info="site"
|
|
|
|
+ :backColor="backColor"
|
|
|
|
+ :Color="Color"
|
|
|
|
+ :newsList="newsList"
|
|
|
|
+ :sideMenu="sideMenu"
|
|
|
|
+ :title="title"
|
|
|
|
+ @search="toGetNews"
|
|
|
|
+ :total="total"
|
|
|
|
+ :listSpan="listSpan"
|
|
|
|
+ ></list-detail>
|
|
|
|
+ </div>
|
|
|
|
+</template>
|
|
|
|
+
|
|
|
|
+<script>
|
|
|
|
+import { mapActions, mapState } from 'vuex';
|
|
|
|
+import listDetail from '@/components/newsList.vue';
|
|
|
|
+import _ from 'lodash';
|
|
|
|
+export default {
|
|
|
|
+ metaInfo() {
|
|
|
|
+ return {
|
|
|
|
+ title: this.siteTitle ? this.siteTitle : '就业信息网',
|
|
|
|
+ };
|
|
|
|
+ },
|
|
|
|
+ name: 'newsList',
|
|
|
|
+ props: {},
|
|
|
|
+ components: {
|
|
|
|
+ listDetail,
|
|
|
|
+ },
|
|
|
|
+ data: () => ({
|
|
|
|
+ info: {
|
|
|
|
+ src: require('@/assets/logo.png'),
|
|
|
|
+ phone: '0431-12345678',
|
|
|
|
+ banner: require('@/assets/banner.png'),
|
|
|
|
+ address: '办公地址:长春市经济技术开发区金川街151号吉林省高等学校毕业生就业指导中心2楼一站式办公大厅',
|
|
|
|
+ email: '邮编:130012',
|
|
|
|
+ gongjiao: '公交线路:乘坐120路、227路、20路、260路、80路、130路、281路、154路、190路、125路公交北方市场下车,北方市场南门南行200米。',
|
|
|
|
+ mobile: '业务咨询电话:0431-84657570 0431-84657571;',
|
|
|
|
+ date: '办公时间:周一至周五,法定假日不对外办公。',
|
|
|
|
+ footTitle: '吉ICP备09006292号-1 Copyright 2013 版权所有 吉林省高等学校毕业生就业指导中心 All Rights Reserved',
|
|
|
|
+ },
|
|
|
|
+ backColor: '#0457c7',
|
|
|
|
+ Color: '#0457c7',
|
|
|
|
+ newsList: [],
|
|
|
|
+ total: 0,
|
|
|
|
+ menu: [],
|
|
|
|
+ sideMenu: [],
|
|
|
|
+ site: {},
|
|
|
|
+ siteTitle: '',
|
|
|
|
+ }),
|
|
|
|
+ async created() {
|
|
|
|
+ await this.toGetSite(); //获取主站信息
|
|
|
|
+ await this.loadMenu(); //获取菜单信息
|
|
|
|
+ this.toGetNews(); //获取数据
|
|
|
|
+ },
|
|
|
|
+ computed: {
|
|
|
|
+ type() {
|
|
|
|
+ return this.$route.params.type;
|
|
|
|
+ },
|
|
|
|
+ id() {
|
|
|
|
+ return this.$route.params.id;
|
|
|
|
+ },
|
|
|
|
+ title() {
|
|
|
|
+ return this.$route.query.title;
|
|
|
|
+ },
|
|
|
|
+ listSpan() {
|
|
|
|
+ return this.type === 'menu' ? 18 : 24;
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+ watch: {
|
|
|
|
+ type: 'getSubMenu',
|
|
|
|
+ id: 'toGetNews',
|
|
|
|
+ title: 'getSubMenu',
|
|
|
|
+ },
|
|
|
|
+ methods: {
|
|
|
|
+ ...mapActions(['getSite', 'getMenu', 'getColumn', 'getNews']),
|
|
|
|
+ //站点信息
|
|
|
|
+ async toGetSite() {
|
|
|
|
+ let site = sessionStorage.getItem('site');
|
|
|
|
+ if (!site) {
|
|
|
|
+ let result = await this.getSite({ type: 'search' });
|
|
|
|
+ if (result.errcode === 0) {
|
|
|
|
+ sessionStorage.setItem('site', JSON.stringify(result.data));
|
|
|
|
+ if (_.get(result.data, `custom`)) {
|
|
|
|
+ let item = result.custom;
|
|
|
|
+ }
|
|
|
|
+ this.$set(this, `site`, result.data);
|
|
|
|
+ this.$set(this, `siteTitle`, this.site.name);
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ this.$set(this, `site`, JSON.parse(site));
|
|
|
|
+ this.$set(this, `siteTitle`, this.site.name);
|
|
|
|
+ let arr = this.site;
|
|
|
|
+ if (arr.custom) {
|
|
|
|
+ let item = arr.custom;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ //菜单
|
|
|
|
+ async loadMenu() {
|
|
|
|
+ let menu = sessionStorage.getItem('menu');
|
|
|
|
+ if (menu) {
|
|
|
|
+ this.$set(this, `menu`, JSON.parse(menu));
|
|
|
|
+ await this.finishedMenu();
|
|
|
|
+ } else this.toGetMenu();
|
|
|
|
+ this.getSubMenu();
|
|
|
|
+ },
|
|
|
|
+ async toGetMenu() {
|
|
|
|
+ let result = await this.getMenu({ type: `list` });
|
|
|
|
+ if (result.errcode === 0) {
|
|
|
|
+ sessionStorage.setItem('menu', JSON.stringify(result.data));
|
|
|
|
+ this.$set(this, `menu`, result.data);
|
|
|
|
+ this.finishedMenu();
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ async finishedMenu() {
|
|
|
|
+ let menus = JSON.parse(JSON.stringify(this.menu));
|
|
|
|
+ for (const item of menus) {
|
|
|
|
+ if (item.type === 'content') {
|
|
|
|
+ item.path = `/detail/${item.content_id}`;
|
|
|
|
+ } else if (item.type !== 'url') {
|
|
|
|
+ let res = await this.completeMenu(item);
|
|
|
|
+ item.children = res;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ this.$set(this, `menu`, menus);
|
|
|
|
+ },
|
|
|
|
+ async completeMenu(item) {
|
|
|
|
+ let result = await this.getColumn({
|
|
|
|
+ type: `list`,
|
|
|
|
+ data: { parent_id: item.id },
|
|
|
|
+ });
|
|
|
|
+ if (result.errcode === 0) {
|
|
|
|
+ let columns = result.data;
|
|
|
|
+ for (const col of columns) {
|
|
|
|
+ if (col.type === 'content') {
|
|
|
|
+ col.path = `/detail/${col.content_id}`;
|
|
|
|
+ } else if (col.type !== 'url') {
|
|
|
|
+ col.path = `/newsList/menu/${col.id}?title=${col.title}`;
|
|
|
|
+ if (col.parent.includes('党员')) {
|
|
|
|
+ col.path = `/memberList/menu/${col.id}?title=${col.title}`;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return columns;
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ //侧菜单
|
|
|
|
+ getSubMenu() {
|
|
|
|
+ let data;
|
|
|
|
+ if (this.type === `module`) {
|
|
|
|
+ data = sessionStorage.getItem(`modules`);
|
|
|
|
+ this.$set(this, `sideMenu`, []);
|
|
|
|
+ } else {
|
|
|
|
+ let res = this.menu.filter(fil => {
|
|
|
|
+ if (fil.children) {
|
|
|
|
+ let res = fil.children.filter(filc => filc.id === this.id);
|
|
|
|
+ return res.length > 0;
|
|
|
|
+ } else return false;
|
|
|
|
+ });
|
|
|
|
+ this.$set(this, `sideMenu`, res.length > 0 ? res[0].children : []);
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ //请求数据
|
|
|
|
+ async toGetNews({ skip = 0, limit = 8 } = {}) {
|
|
|
|
+ let result = await this.getNews({ type: 'list', data: { parent_id: this.id, skip: skip, limit: limit } });
|
|
|
|
+ if (result.errcode === 0) {
|
|
|
|
+ let data = result.data;
|
|
|
|
+ for (const item of data) {
|
|
|
|
+ let info = await this.getNews({ type: 'fetch', data: { id: item.id } });
|
|
|
|
+ if (info.errcode === 0) item.content = info.data.content;
|
|
|
|
+ this.$set(this, `total`, result.total);
|
|
|
|
+ }
|
|
|
|
+ this.$set(this, `newsList`, result.data);
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+</script>
|
|
|
|
+
|
|
|
|
+<style lang="less" scoped></style>
|