فهرست منبع

调试首页模块

lrf402788946 5 سال پیش
والد
کامیت
613ac3908b

+ 33 - 0
src/config/jobs-menu.js

@@ -0,0 +1,33 @@
+export const jobMenu = {
+  title: '招聘相关',
+  children: [
+    {
+      title: '校内宣讲会',
+      path: `/talk/list/in`,
+    },
+    {
+      title: '校外宣讲会',
+      path: `/talk/list/out`,
+    },
+    {
+      title: '校内招聘会',
+      path: `/jobfair/list/in`,
+    },
+    {
+      title: '校外招聘会',
+      path: `/jobfair/list/out`,
+    },
+    {
+      title: '招聘信息',
+      path: `/jobinfo/list`,
+    },
+    {
+      title: '正式岗位',
+      path: `/jobs/list/official`,
+    },
+    {
+      title: '实习岗位',
+      path: `/jobs/list/internship`,
+    },
+  ],
+};

+ 29 - 17
src/layout/layout-part/menus.vue

@@ -1,14 +1,20 @@
 <template>
   <div id="menus">
-    <el-menu :default-active="activeMenu" active-text-color="#850000" @select="changeMenu">
-      <el-menu-item v-for="(item, index) in list" :key="index" :index="item.path" :style="`${activeMenu === item.path ? 'border-left:2px solid #850000' : ''}`">
-        <span slot="title">{{ item.name }}</span>
+    <el-menu :default-active="activeMenu" active-text-color="#850000" :router="true">
+      <el-menu-item
+        v-for="(item, index) in list"
+        :key="index"
+        :index="item.path"
+        :style="`${activeMenu === item.path ? 'border-left:2px solid #850000;color:#850000' : ''}`"
+      >
+        <span slot="title">{{ item.title }}</span>
       </el-menu-item>
     </el-menu>
   </div>
 </template>
 
 <script>
+import { jobMenu } from '@/config/jobs-menu';
 import _ from 'lodash';
 export default {
   name: 'menus',
@@ -17,6 +23,7 @@ export default {
   },
   data: () => ({
     activeMenu: '',
+    jobs: jobMenu,
     list: [],
   }),
   created() {
@@ -25,6 +32,11 @@ export default {
   mounted() {
     this.getPage();
   },
+  computed: {
+    parent_id() {
+      return this.$route.params.parent_id;
+    },
+  },
   watch: {
     $route: {
       handler(val) {
@@ -32,27 +44,31 @@ export default {
       },
       deep: true,
     },
+    parent_id: 'getMenu',
   },
   methods: {
     getMenu() {
       let route = this.$route.path;
+      if (!route.includes('/info/list')) {
+        //显示固定的招聘菜单
+        this.$set(this, `list`, this.jobs.children);
+        return;
+      }
+      //过滤自定义的栏目出来
       let menu = sessionStorage.getItem('menu');
       if (menu) {
         menu = JSON.parse(menu);
         let res = menu.filter(fil => {
-          if (fil.path === route) return;
-          else {
-            let is_this = false;
-            if (fil.children) {
-              for (const item of fil.children) {
-                if (item.path === route) {
-                  is_this = true;
-                  break;
-                }
+          let is_this = false;
+          if (fil.children) {
+            for (const item of fil.children) {
+              if (item.path === route) {
+                is_this = true;
+                break;
               }
             }
-            return is_this;
           }
+          return is_this;
         });
         if (res.length > 0) {
           let this_menu = res[0];
@@ -63,10 +79,6 @@ export default {
         }
       }
     },
-    changeMenu(val) {
-      this.$router.push({ path: val });
-      this.$set(this, `activeMenu`, val);
-    },
     getPage() {
       let path = this.$route.path;
       this.$set(this, `activeMenu`, path);

+ 25 - 7
src/layout/layout-part/top-menu.vue

@@ -4,14 +4,24 @@
       <div class="w_1200">
         <el-col :span="24" class="menu">
           <el-menu :default-active="activeIndex" mode="horizontal" background-color="#850000" text-color="#fff" active-text-color="#fff" :router="true">
+            <el-menu-item index="/">首页</el-menu-item>
+            <template>
+              <el-submenu index="/jobs">
+                <template slot="title">
+                  {{ jobs.title }}
+                </template>
+                <el-menu-item v-for="(sub, subIndex) in jobs.children" :key="subIndex" :index="sub.path">{{ sub.title }}</el-menu-item>
+              </el-submenu>
+              <!-- <el-menu-item v-else :index="item.path" :key="index">{{ item.title }}</el-menu-item> -->
+            </template>
             <template v-for="(item, index) in menu">
-              <el-submenu v-if="item.children.length > 0" :index="`${index}`" :key="index">
+              <el-submenu :index="`${index}`" :key="index">
                 <template slot="title">
                   {{ item.title }}
                 </template>
                 <el-menu-item v-for="(sub, subIndex) in item.children" :key="subIndex" :index="sub.path">{{ sub.title }}</el-menu-item>
               </el-submenu>
-              <el-menu-item v-else :index="item.path" :key="index">{{ item.title }}</el-menu-item>
+              <!-- <el-menu-item v-else :index="item.path" :key="index">{{ item.title }}</el-menu-item> -->
             </template>
           </el-menu>
         </el-col>
@@ -21,6 +31,7 @@
 </template>
 
 <script>
+import { jobMenu } from '@/config/jobs-menu';
 import { mapActions, mapState } from 'vuex';
 import _ from 'lodash';
 export default {
@@ -28,6 +39,7 @@ export default {
   components: {},
   data: () => ({
     activeIndex: '1',
+    jobs: jobMenu,
     menu: [],
     backColor: '#850000',
   }),
@@ -51,15 +63,21 @@ export default {
         let allMenu = result.data;
         for (let item of allMenu) {
           let res = await this.completeMenu(item);
-          console.log(res);
+          item.children = res;
         }
+        sessionStorage.setItem('menu', JSON.stringify(allMenu));
+        this.$set(this, `menu`, allMenu);
       }
     },
     async completeMenu(item) {
-      //如果type
-      let res = await this.columnOperation({ type: 'search', data: { parent_id: item.id } });
-      console.log(res);
-      return res;
+      let res = await this.columnOperation({ type: 'list', data: { parent_id: item.id, site: item.site } });
+      if (`${res.errcode}` === '0') {
+        //组合path:res.data内容都为栏目.所以,点击这些栏目显示的列表应该是信息列表,需要用栏目的id作为查询信息的parten_id查出不同栏目的信息
+        for (const col of res.data) {
+          col.path = `/info/list/${col.id}`;
+        }
+        return res.data;
+      }
     },
   },
 };

+ 2 - 2
src/router.js

@@ -9,14 +9,14 @@ export default new Router({
   routes: [
     {
       path: '/',
-      component: () => import('@/views/index/request.vue'),
+      component: () => import('@/views/index/index.vue'),
     },
     {
       path: '/info',
       component: () => import('@/views/info/index.vue'),
       children: [
         {
-          path: 'list',
+          path: 'list/:parent_id',
           component: () => import('@/views/info/list.vue'),
         },
       ],

+ 41 - 17
src/store.js

@@ -35,19 +35,18 @@ const api = {
   // 站点管理
   siteQuery: '/api/cms/site/query',
   siteFetch: `/api/cms/site/config`,
+  siteContent: `/api/cms/site/content`,
   // 新闻管理
-  query: '/api/cms/news/list',
-  fetch: '/api/cms/news/fetch/{id}',
-  // update: '/api/cms/news/update/{id}',
-  // delete: '/api/cms/news/delete/{id}',
-  // news: '/adminapi/cms/news/create',
-  // query: '/adminapi/cms/news/query',
-  // fetch: id => `/adminapi/cms/news/fetch/${id}`,
-  // update: id => `/adminapi/cms/news/update/${id}`,
-  // delete: id => `/adminapi/cms/news/delete/${id}`,
+  newsQuery: '/api/cms/news/list',
+  newsFetch: '/api/cms/news/fetch/{id}',
   //栏目管理
-  columnQuery: '/api/cms/column/list',
-  columnFetch: '/api/cms/column/fetch/{id}',
+  columnQuery: `${process.env.NODE_ENV === 'development' ? '/adminapi' : '/api/cms'}/column/list`,
+  columnFetch: `${process.env.NODE_ENV === 'development' ? '/adminapi' : '/api/cms'}/column/fetch/{id}`,
+  //模块管理
+  moduleQuery: `/api/cms/modules/list`,
+  //合作单位/友情链接
+  linkQuery: `${process.env.NODE_ENV === 'development' ? '/adminapi' : '/api/cms'}/img/list`,
+
   // 学生关注企业
   // stucorp: `/adminapi${process.env.NODE_ENV === 'development' ? '' : ' / jobs'}/studentcorp`,
   // stucorpsearch: `/adminapi${process.env.NODE_ENV === 'development' ? '' : ' / jobs'}/studentcorp`,
@@ -58,6 +57,7 @@ const api = {
   stucorpsearch: '/api/stud/studentcorp',
   stucorplist: '/api/stud/studentcorp',
   stucorpdelete: '/api/stud/studentcorp/{id}',
+  //测试前缀${process.env.NODE_ENV === 'development' ? '/adminapi' : '/api/cms'}
 };
 
 export default new Vuex.Store({
@@ -285,7 +285,7 @@ export default new Vuex.Store({
       let result;
       if (type === 'list') {
         let { site } = data;
-        result = await this.$axios.$get(api.menuQuery, {}, { site: site });
+        result = await this.$axios.$get(api.menuQuery, {}, { site: site, is_use: '0' });
       }
       if (type === 'search') {
         let { id } = data;
@@ -293,6 +293,15 @@ export default new Vuex.Store({
       }
       return result;
     },
+    //模块管理
+    async moduleOperation({ state }, { type, data }) {
+      let result;
+      if (type === 'list') {
+        let { site } = data;
+        result = await this.$axios.$get(api.moduleQuery, {}, { site: site, is_use: '0' });
+      }
+      return result;
+    },
     // 站点管理
     async siteOperation({ state }, { type, data }) {
       let result;
@@ -303,7 +312,11 @@ export default new Vuex.Store({
       if (type === 'search') {
         let { site } = data;
         //_tenant
+        let content = await this.$axios.$get(api.siteContent, {}, { _tenant: site });
         result = await this.$axios.$get(api.siteFetch, {}, { _tenant: site });
+        if (`${content.errcode}` === '0') {
+          result.data.content = content.data;
+        }
       }
       return result;
     },
@@ -312,12 +325,12 @@ export default new Vuex.Store({
       let { skip, limit } = data;
       let result;
       if (type === 'list') {
-        let { site, column } = data;
-        result = await this.$axios.$get(api.query, {}, { site: site, column: column, skip: skip, limit: limit });
+        let { site, parent_id } = data;
+        result = await this.$axios.$get(api.newsQuery, {}, { site: site, parent_id: parent_id, skip: skip, limit: limit, is_use: '0' });
       }
       if (type === 'search') {
         let { id } = data;
-        result = await this.$axios.$get(api.fetch, { id: id });
+        result = await this.$axios.$get(api.newsFetch, { id: id });
       }
       return result;
     },
@@ -327,10 +340,12 @@ export default new Vuex.Store({
       let result;
       if (type === 'list') {
         //TODO
+        let { parent_id, site } = data;
+        result = await this.$axios.$get(api.columnQuery, {}, { parent_id: parent_id, site: site, is_use: '0' });
       }
       if (type === 'search') {
-        let { id } = data;
-        result = await this.$axios.$get(api.columnFetch, { id: id });
+        let { parent_id } = data;
+        result = await this.$axios.$get(api.columnFetch, { id: parent_id });
       }
       return result;
     },
@@ -364,6 +379,15 @@ export default new Vuex.Store({
       }
       return result;
     },
+    //合作单位/友情链接
+    async linkOperation({ state }, { type, data }) {
+      let result;
+      if (type === 'list') {
+        let { site, type } = data;
+        result = await this.$axios.$get(api.linkQuery, {}, { site: site, type: type, is_use: `0` });
+      }
+      return result;
+    },
   },
 });
 

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 195 - 1573
src/views/index/index.vue


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1597 - 0
src/views/index/page-one.vue


+ 0 - 136
src/views/index/request.vue

@@ -1,136 +0,0 @@
-<template>
-  <div id="request">
-    <el-row>
-      <pages-one
-        v-if="!loading"
-        :newList="newList"
-        :gongList="gongList"
-        :listSchIn="listSchIn"
-        :jobfairList="jobfairList"
-        :listSchOut="listSchOut"
-        :PostInfos="PostInfos"
-        :causeList="causeList"
-        :teacherList="teacherList"
-        :tagsIns="tagsIns"
-        :tagsCiv="tagsCiv"
-        :tagsSel="tagsSel"
-        :tagsWes="tagsWes"
-        :tagsSpe="tagsSpe"
-        :tagsThr="tagsThr"
-        :tagsCol="tagsCol"
-        :tagsOne="tagsOne"
-      >
-        <template #calendar>
-          <self-calendar></self-calendar>
-        </template>
-      </pages-one>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import selfCalendar from '@/components/self-calendar.vue';
-import pagesOne from './index.vue';
-import { mapActions, mapState } from 'vuex';
-export default {
-  name: 'request',
-  props: {},
-  components: {
-    pagesOne,
-    selfCalendar,
-  },
-  data: () => ({
-    loading: true,
-    limit: 4,
-    newList: [
-      { url: require('@/assets/a1.jpg'), id: 1, name: '应用技术学院召开首届专场人才招聘会' },
-      { url: require('@/assets/a2.jpg'), id: 2, name: '浙江湖州城市综合推介会暨2019年重点用人单位招聘会在我校举行' },
-      { url: require('@/assets/a3.jpg'), id: 3, name: '我校与亚信科技(中国)有限公司举行校企战略合作签约暨客座教授聘任仪式' },
-      { url: require('@/assets/a4.jpg'), id: 4, name: '求职创业补贴学生名单公示' },
-      { url: require('@/assets/a5.jpg'), id: 5, name: '学校隆重举行2019届毕业生春季供需洽谈会' },
-    ],
-    gongList: [{ date: '07-21', title: '关于举办全国民营科技企业面向2019届高校毕业生网上招聘会活动的通知' }],
-    listSchIn: [],
-    jobfairList: [],
-    listSchOut: [],
-    PostInfos: [],
-    causeList: [{ title: '【吉林省人事考试网】2019年吉林省省直事业单位公开招聘高级人才公告(17号)', date: '2019-10-18' }],
-    teacherList: [{ title: '【吉林教师】2019年松原前郭县城区学校选拔农村教师实施方案(75人) ', date: '2019-10-18' }],
-    tagsIns: [{ title: '【事业单位】2019年中国科技大学附属中学教师招聘公告', date: '2019-10-14' }],
-    tagsCiv: [{ title: '【公务员】2020年国家公务员考试公告', date: '2019-10-14' }],
-    tagsSel: [{ title: '【吉林选调生】2018年吉林把选调生工作作为建设高素质专业化干部队伍', date: '2019-3-11' }],
-    tagsWes: [{ title: '【西部计划】甘肃省张掖市引导525名高校毕业生进疆稳定就业', date: '2019-3-20' }],
-    tagsSpe: [{ title: '【特岗教师】2019承德宽城满族自治县公开招聘“地方特岗教师”228人公告', date: '2019-7-28' }],
-    tagsThr: [{ title: '【三支一扶】2020中央机关及其直属机构公务员考试公告', date: '2019-10-14' }],
-    tagsCol: [{ title: '【村官】2019江苏高邮市龙虬镇招聘村会计3人公告', date: '2019-10-14' }],
-    tagsOne: [{ title: '[广西] 中国建筑材料工业地质勘查中心广西总队', date: '10-15' }],
-    site: {},
-  }),
-  created() {
-    this.getSite();
-    // this.search();
-  },
-  computed: {},
-  methods: {
-    ...mapActions(['jobfairOperation', 'postTalksInfo', 'jobinfoOperation', 'getBugInfo', 'newsOperation', 'siteOperation']),
-    async getSite() {
-      let site = sessionStorage.getItem('site');
-      if (!site) {
-        let result = await this.siteOperation({ type: 'search', data: { site: this.$site } });
-        if (`${result.errcode}` === `0`) {
-          sessionStorage.setItem('site', JSON.stringify(result.data));
-        }
-      }
-      this.$set(this, `loading`, false);
-    },
-    async search() {
-      // 1直接拿着参数发送请求
-      let result = await this.postTalksInfo({ type: 'list', data: { schid: this.$site } });
-      if (`${result.errcode}` === '0') {
-        //给this=>vue的实例下在中的list属性,赋予result。data的值
-        this.$set(this, `listSchIn`, result.data);
-      } else {
-        this.$message.error(result.errmsg ? result.errmsg : 'error');
-      }
-      result = await this.jobfairOperation({ type: 'list', data: { schid: this.$site } });
-      if (`${result.errcode}` === '0') {
-        //给this=>vue的实例下在中的list属性,赋予result。data的值
-        this.$set(this, `jobfairList`, result.data);
-      } else {
-        this.$message.error(result.errmsg ? result.errmsg : 'error');
-      }
-      result = await this.postTalksInfo({ type: 'list', data: {} });
-      if (`${result.errcode}` === '0') {
-        //给this=>vue的实例下在中的list属性,赋予result。data的值
-        this.$set(this, `listSchOut`, result.data);
-      } else {
-        this.$message.error(result.errmsg ? result.errmsg : 'error');
-      }
-      result = await this.jobinfoOperation({ type: 'list', data: { limit: this.limit } });
-      if (`${result.errcode}` === '0') {
-        //给this=>vue的实例下在中的list属性,赋予result。data的值
-        this.$set(this, 'PostInfos', result.data);
-      } else {
-        this.$message.error(result.errmsg ? result.errmsg : 'error');
-      }
-      result = await this.newsOperation({ type: 'list', data: { site: this.$site, limit: 4, skip: 0 } });
-      if (`${result.errcode}` === '0') {
-        //给this=>vue的实例下在中的list属性,赋予result。data的值
-        this.$set(this, 'newList', result.data);
-      } else {
-        this.$message.error(result.errmsg ? result.errmsg : 'error');
-      }
-
-      // result = await this.getBugInfo({ data: { skip: 0, limit: this.$limit } });
-      // if (`${result.errcode}` === '0') {
-      //   //给this=>vue的实例下在中的list属性,赋予result。data的值
-      //   this.$set(this, 'cause', result.data);
-      // } else {
-      //   this.$message.error(result.errmsg ? result.errmsg : 'error');
-      // }
-    },
-  },
-};
-</script>
-
-<style lang="scss" scoped></style>

+ 1 - 1
src/views/info/detail.vue

@@ -26,7 +26,7 @@
             <!-- 点击人次:26125 -->
           </el-col>
           <el-col :span="24" style="text-align:center">
-            <el-image :src="info.picurl" style="height:60%;width:60%"></el-image>
+            <el-image :src="info.pic" style="height:60%;width:60%" v-if="info.pic"></el-image>
           </el-col>
           <el-col :span="24" style="padding-top: 1rem;font-size: 20px;text-indent: 2rem;line-height: 30px;" v-html="info.content"> </el-col>
         </el-row>

+ 1 - 2
src/views/info/index.vue

@@ -2,7 +2,7 @@
   <div id="index">
     <detail-layout>
       <template v-slot:mainSide>
-        <menus :menuList="menuList"></menus>
+        <menus></menus>
       </template>
       <template v-slot:mainMain>
         <router-view />
@@ -37,7 +37,6 @@ export default {
     input3: '',
     currentPage4: 1,
     activeMenu: '1',
-    menuList: [{ index: '1', name: '创业法规' }, { index: '2', name: '创业培训' }, { index: '3', name: '创业案例' }],
   }),
   created() {},
   computed: {},

+ 10 - 3
src/views/info/list.vue

@@ -6,7 +6,7 @@
         <el-breadcrumb separator=">">
           <el-breadcrumb-item :to="{ path: '/' }"><span style="color:#666666">网站首页</span></el-breadcrumb-item>
           <el-breadcrumb-item>
-            <a href="info/list"><span style="color:#666666">新闻列表</span></a>
+            <a><span style="color:#666666">信息列表</span></a>
           </el-breadcrumb-item>
         </el-breadcrumb>
       </el-col>
@@ -55,7 +55,14 @@ export default {
   created() {
     this.search();
   },
-  computed: {},
+  computed: {
+    parent_id() {
+      return this.$route.params.parent_id;
+    },
+  },
+  watch: {
+    parent_id: 'search',
+  },
   methods: {
     ...mapActions(['newsOperation']),
     async search(page) {
@@ -63,7 +70,7 @@ export default {
       if (page) {
         skip = (page - 1) * this.$limit;
       }
-      let newData = { skip: skip, limit: this.$limit, ...this.searchInfo };
+      let newData = { skip: skip, limit: this.$limit, ...this.searchInfo, parent_id: this.parent_id };
       let result = await this.newsOperation({ type: 'list', data: { site: this.$site, ...newData } });
       if (`${result.errcode}` === '0') {
         //给this=>vue的实例下在中的list属性,赋予result。data的值

+ 2 - 2
src/views/jobfair/list.vue

@@ -58,7 +58,7 @@
 
 <script>
 import { mapActions, mapState } from 'vuex';
-
+import _ from 'lodash';
 export default {
   name: 'JobfairIndex',
   props: {},
@@ -86,7 +86,7 @@ export default {
     ...mapActions(['jobfairOperation']),
     async search(page) {
       let skip = 0;
-      if (page) {
+      if (page && _.isNumber(page)) {
         skip = (page - 1) * this.$limit;
       }
       let newData = { skip: skip, limit: this.$limit, ...this.searchInfo };

+ 1 - 1
src/views/talk/list.vue

@@ -61,7 +61,7 @@
           <el-col :span="10">
             <span class="el-icon-time"></span>
             举办时间:
-            <span style="color:#ff4400">{{ item.date }} {{ item.time }}</span>
+            <span style="color:#ff4400">{{ item.time }}</span>
           </el-col>
         </el-row>
         <!-- <el-row>

+ 3 - 3
vue.config.js

@@ -1,5 +1,5 @@
 const path = require('path');
-const resumeSrc = path.resolve(__dirname, '../web-common');
+const publics = path.resolve(__dirname, '../web-common');
 module.exports = {
   publicPath: process.env.NODE_ENV === 'development' ? '/' : process.env.VUE_APP_ROUTER,
   configureWebpack: config => {
@@ -10,7 +10,7 @@ module.exports = {
           '@': path.resolve(__dirname, './src'),
           '@c': path.resolve(__dirname, './src/components'),
           '@a': path.resolve(__dirname, './src/assets'),
-          '@resume': resumeSrc,
+          '@publics': publics,
         },
       },
     });
@@ -46,7 +46,7 @@ module.exports = {
         ws: true,
       },
       '/adminapi': {
-        target: 'http://10.16.5.15:8101',
+        target: 'http://10.16.5.15:8105',
         ws: true,
         pathRewrite: { '^/adminapi': '/api' },
       },