|  | @@ -0,0 +1,202 @@
 | 
	
		
			
				|  |  | +<template>
 | 
	
		
			
				|  |  | +  <div id="vocation" ref="vocation">
 | 
	
		
			
				|  |  | +    <el-card style="height:158px;margin: 10px auto;">
 | 
	
		
			
				|  |  | +      <div :style="{'background-image':backimg}" class="back">
 | 
	
		
			
				|  |  | +        <p style="color:#A6A6A6;font-size:24px;font-weight:bold;">Professional library</p>
 | 
	
		
			
				|  |  | +        <p style="color:#414141;font-size:24px;font-weight:bold;">专业库</p>
 | 
	
		
			
				|  |  | +        <hr class="layui-bg-orange" style="width:40px;height:4px;margin-top:10px;" />
 | 
	
		
			
				|  |  | +      </div>
 | 
	
		
			
				|  |  | +    </el-card>
 | 
	
		
			
				|  |  | +    <el-card class="box-card" >
 | 
	
		
			
				|  |  | +      <div slot="header"  >
 | 
	
		
			
				|  |  | +        <span class="tabs-item" @click="type = '本科'" :class="{'bg-primary':type == '本科'}">本科</span>
 | 
	
		
			
				|  |  | +        <span class="tabs-item" @click="type = '专科'" :class="{'bg-primary':type == '专科'}">专科</span>
 | 
	
		
			
				|  |  | +        <p class="line"></p>
 | 
	
		
			
				|  |  | +        <div class="tags-wrap">
 | 
	
		
			
				|  |  | +          <a :href="`#${item.code}`" class="tag" v-for="item in levelOne">{{ item.name }}</a>
 | 
	
		
			
				|  |  | +        </div>
 | 
	
		
			
				|  |  | +      </div>
 | 
	
		
			
				|  |  | +      <div class="list-wrap">
 | 
	
		
			
				|  |  | +        <!--  一级 -->
 | 
	
		
			
				|  |  | +        <div class="levelOne" v-for="item in majorList" :id="item.code">
 | 
	
		
			
				|  |  | +          <!--   一级专业title-->
 | 
	
		
			
				|  |  | +          <p class="voca-title mt10 mb10 bold" >{{`${item.name} (${item.code}) `}}</p>
 | 
	
		
			
				|  |  | +          <div class="last-level" v-for="subLevel in item.children">
 | 
	
		
			
				|  |  | +            <!--  二级专业 -->
 | 
	
		
			
				|  |  | +            <p class="sub-title">{{`${subLevel.name} (${subLevel.code}) `}}</p>
 | 
	
		
			
				|  |  | +            <!--  三级专业 -->
 | 
	
		
			
				|  |  | +            <div class="last-children-wrap" v-if="subLevel.children.length > 0">
 | 
	
		
			
				|  |  | +              <span @click="goDetail(vocation.code)" class="last-children" v-for="vocation in subLevel.children">{{vocation.name}}</span>
 | 
	
		
			
				|  |  | +            </div>
 | 
	
		
			
				|  |  | +          </div>
 | 
	
		
			
				|  |  | +        </div>
 | 
	
		
			
				|  |  | +      </div>
 | 
	
		
			
				|  |  | +    </el-card>
 | 
	
		
			
				|  |  | +  </div>
 | 
	
		
			
				|  |  | +</template>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +<script>
 | 
	
		
			
				|  |  | +import {mapState} from 'vuex';
 | 
	
		
			
				|  |  | +import { allMajor } from '@/api/webApi/professlib';
 | 
	
		
			
				|  |  | +export default {
 | 
	
		
			
				|  |  | +  name: "index",
 | 
	
		
			
				|  |  | +  data(){
 | 
	
		
			
				|  |  | +    return {
 | 
	
		
			
				|  |  | +      backimg:'url('+require('@/assets/images/icon_pro.png')+')',
 | 
	
		
			
				|  |  | +      levelOne: [], // 专业大类
 | 
	
		
			
				|  |  | +      type: '本科',
 | 
	
		
			
				|  |  | +      majorList: []
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  computed:{
 | 
	
		
			
				|  |  | +    ...mapState({theme: state => state.settings.theme})
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  watch:{
 | 
	
		
			
				|  |  | +    theme:{
 | 
	
		
			
				|  |  | +      immediate:true,
 | 
	
		
			
				|  |  | +      handler(val){
 | 
	
		
			
				|  |  | +        this.$nextTick(()=>{
 | 
	
		
			
				|  |  | +          this.$refs.vocation.style.setProperty('--themeColor', val)
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    type: {
 | 
	
		
			
				|  |  | +      immediate:true,
 | 
	
		
			
				|  |  | +      handler(val){
 | 
	
		
			
				|  |  | +        console.log(val)
 | 
	
		
			
				|  |  | +        this.getAllMajor()
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  methods:{
 | 
	
		
			
				|  |  | +    goDetail(code){
 | 
	
		
			
				|  |  | +      this.$router.push({name:'jobDetail',query:{code:code}})
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    getAllMajor() {
 | 
	
		
			
				|  |  | +      allMajor({
 | 
	
		
			
				|  |  | +        type: this.type
 | 
	
		
			
				|  |  | +      }).then(res => {
 | 
	
		
			
				|  |  | +        console.log(res)
 | 
	
		
			
				|  |  | +        this.majorList = res.data
 | 
	
		
			
				|  |  | +        this.levelOne = res.data.map(item => {
 | 
	
		
			
				|  |  | +          return {
 | 
	
		
			
				|  |  | +            code: item.code,
 | 
	
		
			
				|  |  | +            name: item.name,
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +      })
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +</script>
 | 
	
		
			
				|  |  | +<style lang="scss" scoped>
 | 
	
		
			
				|  |  | +#vocation{
 | 
	
		
			
				|  |  | +  .levelOne{
 | 
	
		
			
				|  |  | +    padding-top:100px;
 | 
	
		
			
				|  |  | +    margin-top:-100px;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  .layui-bg-orange{
 | 
	
		
			
				|  |  | +    background-color: var(--themeColor);
 | 
	
		
			
				|  |  | +    margin-left:0;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  .back{
 | 
	
		
			
				|  |  | +    padding:30px;
 | 
	
		
			
				|  |  | +    margin-top: 10px;background-color:white;background-repeat: no-repeat;background-position: bottom right;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  .title{
 | 
	
		
			
				|  |  | +    background-color: var(--themeColor);
 | 
	
		
			
				|  |  | +    width: 162px;
 | 
	
		
			
				|  |  | +    height: 37px;
 | 
	
		
			
				|  |  | +    color: #fff;
 | 
	
		
			
				|  |  | +    font-size: 16px;
 | 
	
		
			
				|  |  | +    line-height: 37px;
 | 
	
		
			
				|  |  | +    text-align: center;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  .line {
 | 
	
		
			
				|  |  | +    background-color: var(--themeColor);
 | 
	
		
			
				|  |  | +    height: 4px;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  .last-children-wrap{
 | 
	
		
			
				|  |  | +    flex-wrap: wrap;
 | 
	
		
			
				|  |  | +    display: flex;
 | 
	
		
			
				|  |  | +    .last-children{
 | 
	
		
			
				|  |  | +      flex: 25%;
 | 
	
		
			
				|  |  | +      flex-grow: 0;
 | 
	
		
			
				|  |  | +      margin-bottom: 10px;
 | 
	
		
			
				|  |  | +      color: var(--themeColor);
 | 
	
		
			
				|  |  | +      &:hover{
 | 
	
		
			
				|  |  | +        text-decoration: underline;
 | 
	
		
			
				|  |  | +        cursor: pointer;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    .tabs-item{
 | 
	
		
			
				|  |  | +      cursor: pointer;
 | 
	
		
			
				|  |  | +      padding: 0 33px;
 | 
	
		
			
				|  |  | +      border: 1px solid #f2f2f2;
 | 
	
		
			
				|  |  | +      border-bottom: 0px;
 | 
	
		
			
				|  |  | +      display: inline-block;
 | 
	
		
			
				|  |  | +      line-height: 40px;
 | 
	
		
			
				|  |  | +      &:hover{
 | 
	
		
			
				|  |  | +        color:#47C6A2;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      &.bg-primary{
 | 
	
		
			
				|  |  | +        background: #47C6A2 ;
 | 
	
		
			
				|  |  | +        color: white;
 | 
	
		
			
				|  |  | +        border: 0px;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  .tags-wrap {
 | 
	
		
			
				|  |  | +    overflow: hidden;
 | 
	
		
			
				|  |  | +    box-sizing: border-box;
 | 
	
		
			
				|  |  | +    border-top: 1px solid #e1e1e1;
 | 
	
		
			
				|  |  | +    border-left: 1px solid #e1e1e1;
 | 
	
		
			
				|  |  | +    display: flex;
 | 
	
		
			
				|  |  | +    flex-flow: row wrap;
 | 
	
		
			
				|  |  | +    justify-content: start;
 | 
	
		
			
				|  |  | +    .tag{
 | 
	
		
			
				|  |  | +      border-bottom: 1px solid #e1e1e1;
 | 
	
		
			
				|  |  | +      border-right: 1px solid #e1e1e1;
 | 
	
		
			
				|  |  | +      font-size: 12px;
 | 
	
		
			
				|  |  | +      text-align: center;
 | 
	
		
			
				|  |  | +      flex: 10%;
 | 
	
		
			
				|  |  | +      text-align: center;
 | 
	
		
			
				|  |  | +      flex-grow: 0;
 | 
	
		
			
				|  |  | +      color: #555;
 | 
	
		
			
				|  |  | +      height: 40px;
 | 
	
		
			
				|  |  | +      line-height: 40px;
 | 
	
		
			
				|  |  | +      cursor: pointer;
 | 
	
		
			
				|  |  | +      &:hover{
 | 
	
		
			
				|  |  | +        text-decoration: underline;
 | 
	
		
			
				|  |  | +        cursor: pointer;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  .sub-title{
 | 
	
		
			
				|  |  | +    color: #333;
 | 
	
		
			
				|  |  | +    line-height: 26px;
 | 
	
		
			
				|  |  | +    padding: 5px 10px;
 | 
	
		
			
				|  |  | +    background: #f3f3f3;
 | 
	
		
			
				|  |  | +    margin-bottom: 2px;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  .voca-title{
 | 
	
		
			
				|  |  | +    border-left:4px solid var(--themeColor);
 | 
	
		
			
				|  |  | +    padding:0px 5px;
 | 
	
		
			
				|  |  | +    color: var(--themeColor);
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  .row{
 | 
	
		
			
				|  |  | +    .rowHead{
 | 
	
		
			
				|  |  | +      background-color:#a7e6d4;
 | 
	
		
			
				|  |  | +      &:hover{
 | 
	
		
			
				|  |  | +        background-color: var(--themeColor);
 | 
	
		
			
				|  |  | +        hr{
 | 
	
		
			
				|  |  | +          background-color: #ffffff;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +</style>
 | 
	
		
			
				|  |  | +
 |