You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3602 lines
97 KiB
Vue

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div class="joblist-container">
<!-- 城市的弹出框 -->
<a-modal class="cityModal" transitionName v-model="visible" width="680px" @cancel="cityModalClose" title="请选择城市" :footer="null">
<div class="inputBox">
<a-input placeholder="请输入城市名称" allow-clear width="300px" v-model="cityValue" @keyup.enter="searchCity" @input="resetCityList"></a-input>
<a-button @click="searchCity">确认</a-button>
</div>
<ul class="firstList">
<li @click="[(currentCityList = hotCityList), (activeInd = -1)]">
<div :class="activeInd == -1 ? 'active' : ''">热门地区</div>
</li>
<li v-for="(item, index) in hasJobCityList.firstList" :key="index" @click="[changeCurrentCity(index), (activeInd = index)]">
<div :class="activeInd == index ? 'active' : ''">
<span v-for="i in item" :key="i">{{ i }}</span>
</div>
</li>
</ul>
<ul class="currentCity">
<li v-for="(item, index) in currentCityList" :key="index">
<div @click="searchJob(item)">{{ item.name }}</div>
</li>
</ul>
</a-modal>
<!-- 筛选导航 -->
<div class="navigation">
<div class="w" id="navigation">
<span class="dn">
<!-- <i class="iconfont icon-yigezhuanmenfuwudailidepingtai"></i> -->
<router-link to="/main">
<!-- <svg class="icon" aria-hidden="true">
<use xlink:href="#icon-yishoudanlogo"></use></svg
>-->
<img src="http://matripe.oss-cn-beijing.aliyuncs.com/bcSVG/dtLogo.png" class="icon" />
</router-link>
</span>
<!-- 特色筛选的列表盒子 -->
<!-- <div v-if="isspecialboxshow" class="specialbox" @click.stop="">
<div class="w">
<ul>
<li
v-for="(item, index) in specialList"
:key="index"
@click.stop="specialclick(index, item)"
:class="{
'special-active': filterObj.specialactive.indexOf(item.name) > -1,
}"
>
{{ item.name }}
</li>
</ul>
</div>
</div>-->
<!-- <ul class="filterbox">
<li>
<i class="iconfont icon-dingwei"></i>
<a-cascader
:options="cityoption"
change-on-select
@change="onChange"
placeholder="选择城市"
v-model="formvalue.district"
popupClassName="flitercity"
:getPopupContainer="
(triggerNode) => {
return triggerNode.parentNode || document.body;
}
"
id="city"
:popupStyle="{
transform: 'all .1s',
}"
><i slot="suffixIcon" class="iconfont icon-xiala"></i
></a-cascader>
<div @click="visible = true">
<span :style="{ color: currentCity != '全国' ? '#ff6a00' : '' }">{{ currentCity }}</span>
<div><i class="iconfont icon-sousuoxiala"></i> <i class="iconfont icon-guanbishixin" v-show="currentCity != '全国'" @click.stop="resetCity"></i></div>
</div>
</li>
<li>
<div>
<a-cascader
:options="options.price"
placeholder="工价"
@change="onChange"
popupClassName="monthlypay"
:getPopupContainer="
(triggerNode) => {
return triggerNode.parentNode || document.body;
}
"
v-model="formvalue.monthlyPayStr"
id="price"
><i slot="suffixIcon" class="iconfont icon-xiala"></i
></a-cascader>
</div>
</li>
<li>
<div>
<a-cascader
:options="options.gender"
placeholder="性别"
@change="onChange"
class="gender"
popupClassName="gender"
:getPopupContainer="
(triggerNode) => {
return triggerNode.parentNode || document.body;
}
"
v-model="formvalue.sex"
id="gender"
><i slot="suffixIcon" class="iconfont icon-xiala"></i
></a-cascader>
</div>
</li>
<li>
<a-cascader
:options="options.age"
placeholder="年龄"
@change="onChange"
popupClassName="agestr"
:getPopupContainer="
(triggerNode) => {
return triggerNode.parentNode || document.body;
}
"
v-model="formvalue.ageStr"
id="age"
><i slot="suffixIcon" class="iconfont icon-xiala"></i
></a-cascader>
</li>
<li class="special">
<div @click.stop="isspecialboxshowclick" :style="isspecialboxshow ? 'color:#ff4400' : ''">
<ul class="showspecial" v-if="filterObj.specialactive.length !== 0">
<li v-for="(item, index) in filterObj.specialactive" :key="index" @click.stop>{{ item }}<i class="iconfont icon-guanbi" @click.stop="delmark(index)"></i></li>
</ul>
<span v-if="filterObj.specialactive.length > 2">...</span>
<span :style="filterObj.specialactive.length > 0 ? 'color:#ff4400' : ''" v-if="filterObj.specialactive.length === 0">特色</span><i class="iconfont icon-xiala" :class="isspecialboxshow ? 'turn' : ''" :style="isspecialboxshow ? 'color:#ff4400' : ''"></i>
</div>
</li>
<li class="ageinputbox">
<a-input
class="ageinput"
placeholder="年龄,如20"
v-model="formvalue.ageStr"
type="text"
allow-clear
@input="resetAgeSearch"
@keyup.enter="onSearch"
@click.stop="
() => {
return false;
}
"
></a-input>
<div class="confirm">
<button @click="onSearch">确定</button>
</div>
</li>
<li class="claerfilter">
<div>
<a @click="claerfilter" href="javascript:;" v-show="formvalue.ageStr.length != 0 || formvalue.sex.length != 0 || formvalue.monthlyPayStr.length != 0 || filterObj.specialactive.length != 0">清空筛选条件</a>
</div>
</li>
</ul>-->
<div class="searchBox" @blur="hidedownHotStore" @focus="showHotStore" tabindex="0" outline="0" hidefocus="true">
<a-input placeholder="搜索职位、企业名称、年龄要求" @keyup.enter="onSearch" @input="resetsearch" @blur="hidedownHotStore" @focus="showHotStore" tabindex="0" v-model="searchValue" class="searchinput" style allow-clear>
<div slot="prefix" class="fsa w100" @focus.stop tabindex="0" @click.stop="visible = true">
<span class="dpib esl" style="width: 60px">{{ currentCity }}</span>
<div>
<i class="iconfont icon-sousuoxiala"></i>
<i class="iconfont icon-guanbishixin" v-show="currentCity != '全国'" @click.stop="resetCity"></i>
</div>
</div>
<button slot="suffix" @click="onSearch" style="border-radius: 0px 6px 6px 0">搜索</button>
</a-input>
<!-- v-show="isdownHotStoreShow" -->
<!-- <ul class="downHotStore" style="display: none">
<div>热门企业</div>
<li v-for="(item, index) in hotStoreList" :key="index" @click="getHotStoreList(item)">
{{ item.storeName }}
</li>
</ul>-->
<div class="hotStore">
<!-- <span>热门企业:</span> -->
<ul>
<li v-for="(item, index) in hotStoreList" :key="index" @click="getHotStoreList(item)">{{ item.storeName }}</li>
<!-- <li @click="resetResult" style="color: #aaa">重置</li> -->
</ul>
</div>
</div>
<ul class="hotTag" style="display: none">
<div>热门:</div>
<li
v-for="(item, index) in specialHotTag"
:key="index"
@click="specialclick(index, item)"
:class="{
active: filterObj.specialactive.indexOf(item) > -1,
}"
>
{{ item.name }}
</li>
</ul>
</div>
</div>
<!-- 面包屑 -->
<!-- <a-breadcrumb class="w">
<a-breadcrumb-item href="">
<router-link to="/main"><a-icon type="home" /></router-link>
</a-breadcrumb-item>
<a-breadcrumb-item href="">
<span>一手职位</span>
</a-breadcrumb-item>
</a-breadcrumb>-->
<!-- #### 主体部分 ##### -->
<div class="w" id="maincontent">
<div class="maincontentleft" v-if="!isVocational" style="padding-top: 50px">
<div class="tabBar" @click="changeTab($event)">
<div class="tabSubset" :class="{ active: signType == '' }" data-type="0">全部</div>
<div class="tabSubset" :class="{ active: signType == 1 }" v-if="loginValue.agencyName == '郑州一才工作'" data-type="1">一才</div>
<!-- <div class="tabSubset" :class="{ active: signType == 2 }" data-type="2">三方</div> -->
</div>
<div class="filter" v-show="signType == ''" :class="[filterStatus == 0 ? '' : 'nobd']" style>
<div class="filter-title" :style="{ top: filterStatus == 0 ? '-32px' : '-21px' }">
<span>
<span>
所有筛选
<i class="iconfont icon-youjiantou"></i>
</span>
<span class="filter-show">
<span @click="delFilter($event, 'price')" v-show="filterObj.price">
{{ filterObj.price }}
<i class="iconfont icon-guanbi2" v-show="filterObj.price"></i>
</span>
<span @click="delFilter($event, 'gender')" v-show="filterObj.gender">
{{ filterObj.gender }}
<i class="iconfont icon-guanbi2" v-show="filterObj.gender"></i>
</span>
<span @click="delFilter($event, 'age')" v-show="filterObj.age">
{{ filterObj.age }}
<i class="iconfont icon-guanbi2" v-show="filterObj.age"></i>
</span>
<span @click="delFilter($event, 'special', item)" v-for="(item, index) in filterObj.specialactive" :key="index">
{{ item.name }}
<i class="iconfont icon-guanbi2"></i>
</span>
<i v-show="showDotted" style="line-height: 24px">...</i>
</span>
</span>
<span>
<span class="toggleFilter" @click="hideFilterContent">
{{ filterStatus == 0 ? "收起筛选" : "展开筛选" }}
<i
class="iconfont icon-sousuoxiala"
:style="{
transform: filterStatus == 0 ? 'rotate(180deg) scale(.6)' : '',
}"
></i>
</span>
<a-dropdown :trigger="['click']" overlayClassName="sortClass" placement="bottomRight">
<span class="sort">{{ sortStr }}</span>
<a-menu slot="overlay">
<a-menu-item>
<div class="sortMenu" :class="sortNum == 1 ? 'active' : ''" @click="sortList('price')">工价优先</div>
</a-menu-item>
<a-menu-item>
<div class="sortMenu" :class="sortNum == 2 ? 'active' : ''" @click="sortList('juli')">距离优先</div>
</a-menu-item>
<a-menu-item>
<div class="sortMenu" :class="sortNum == 3 ? 'active' : ''" @click="sortList('fuwufei')">佣金优先</div>
</a-menu-item>
</a-menu>
</a-dropdown>
</span>
</div>
<div class="filter-content" style="transition: height 0.2s">
<dl class="price">
<dt>工价:</dt>
<dd>
<div class="ageinputbox">
<!-- <div> -->
<a-input
class="ageinput"
v-model="minMonthlyPay"
:maxLength="5"
type="text"
allow-clear
prefix="¥"
@input="resetPriceSearch"
@click.stop="
() => {
return false;
}
"
></a-input>
<span class="middle-line">-</span>
<a-input
class="ageinput"
v-model="maxMonthlyPay"
:maxLength="5"
type="text"
allow-clear
prefix="¥"
@input="resetPriceSearch"
@click.stop="
() => {
return false;
}
"
></a-input>
<div class="confirm">
<button @click="searchPrice">确定</button>
</div>
<!-- </div> -->
</div>
<i @click="searchPrice">
<span
:style="{
color: filterObj.price == '3000-4000' ? '#ff4400' : '',
}"
>3000-4000</span
>
<span
:style="{
color: filterObj.price == '4000-5000' ? '#ff4400' : '',
}"
>4000-5000</span
>
<span
:style="{
color: filterObj.price == '5000-6000' ? '#ff4400' : '',
}"
>5000-6000</span
>
<span
:style="{
color: filterObj.price == '6000-7000' ? '#ff4400' : '',
}"
>6000-7000</span
>
</i>
</dd>
</dl>
<dl class="price">
<dt>年龄:</dt>
<dd>
<div class="ageinputbox">
<!-- <div> -->
<a-input
class="ageinput age"
v-model="minAge"
:maxLength="3"
type="text"
allow-clear
suffix="岁"
@input="resetAgeSearch"
@click.stop="
() => {
return false;
}
"
></a-input>
<span class="middle-line">-</span>
<a-input
class="ageinput age"
v-model="maxAge"
:maxLength="3"
type="text"
allow-clear
suffix="岁"
@input="resetAgeSearch"
@click.stop="
() => {
return false;
}
"
></a-input>
<div class="confirm">
<button @click="searchAge">确定</button>
</div>
<!-- </div> -->
</div>
</dd>
</dl>
<dl>
<dt>性别:</dt>
<dd @click="searchGender">
<span :style="{ color: filterObj.gender == '男' ? '#ff4400' : '' }">男</span>
<span :style="{ color: filterObj.gender == '女' ? '#ff4400' : '' }">女</span>
<span
:style="{
color: filterObj.gender == '男女不限' ? '#ff4400' : '',
}"
>男女不限</span
>
</dd>
</dl>
<dl>
<dt>分类:</dt>
<dd>
<span v-for="(item, index) in classifyList" :key="index" :class="{ 'special-active': filterObj.specialactive.indexOf(item) > -1 }" @click.stop="classifyClick(index, item)">{{ item.name }}</span>
</dd>
</dl>
<dl>
<dt>薪资福利:</dt>
<dd>
<span
v-for="(item, index) in tagArray1"
:key="index"
:class="{
'special-active': filterObj.specialactive.indexOf(item) > -1,
}"
@click.stop="specialclick(index, item)"
>{{ item.name }}</span
>
</dd>
</dl>
<dl>
<dt>宿舍保障:</dt>
<dd>
<span
v-for="(item, index) in tagArray3"
:key="index"
:class="{
'special-active': filterObj.specialactive.indexOf(item) > -1,
}"
@click.stop="specialclick(index, item)"
>{{ item.name }}</span
>
</dd>
</dl>
<dl>
<dt>班制休息:</dt>
<dd>
<span
v-for="(item, index) in tagArray0"
:key="index"
:class="{
'special-active': filterObj.specialactive.indexOf(item) > -1,
}"
@click.stop="specialclick(index, item)"
>{{ item.name }}</span
>
</dd>
</dl>
<dl>
<dt>面试特色:</dt>
<dd>
<span
v-for="(item, index) in tagArray4"
:key="index"
:class="{
'special-active': filterObj.specialactive.indexOf(item) > -1,
}"
@click.stop="specialclick(index, item)"
>{{ item.name }}</span
>
</dd>
</dl>
<dl>
<dt>其他特色:</dt>
<dd>
<span
v-for="(item, index) in tagArray2"
:key="index"
:class="{
'special-active': filterObj.specialactive.indexOf(item) > -1,
}"
@click.stop="specialclick(index, item)"
>{{ item.name }}</span
>
</dd>
</dl>
</div>
</div>
<div style="text-align: center">
<a-spin tip="加载中..." :spinning="isspinning"></a-spin>
</div>
<!-- <div
class="nodata"
v-if="jobMainList.length === 0 && isspinning === false"
>-->
<template v-if="jobMainList.length === 0 && isspinning === false">
<a-empty class="nodata" description="暂无符合条件的岗位" />
</template>
<!-- </div> -->
<div v-if="!isspinning">
<div
class="subset"
v-for="(item, index) in jobMainList"
:key="index"
:style="{
background: item.recruitment == '1' ? '#fff' : '#f5f5f5',
}"
>
<!-- v-if="signType == ''" -->
<span @click="toDetail(item)" style="cursor: pointer">
<div class="subsetleft" @click="totop">
<div class="imgbox">
<img v-if="item.logo.length !== 0" :src="item.logo" />
<div v-else class="default_avatar">{{ item.brandName || item.jobName }}</div>
<!-- <img v-else src="../../../static/img/nopicture.png" /> -->
</div>
<div class="jobinfobox">
<!-- <router-link
target="_blank"
:to="'/detail/' + item.id"
rel="opener"
>-->
<div class="jobname">{{ item.jobName }}</div>
<!-- </router-link> -->
<div class="jobinfo">
<span>{{ item.district }}</span>
<span>{{ item.gender }}</span>
<span v-if="item.distance != null && item.distance != '' && formvalue.sortTag == 2">{{ item.distanceKm }}</span>
<span v-else>{{ item.age }}</span>
</div>
<div class="jobtag">
<!-- <span>返费</span> -->
<!-- <i class="iconfont icon-ziying" v-if="item.signType == 1" style></i> -->
<span class="hotTag" v-if="item.hotJob == 1">
<i class="iconfont icon-dianzan1 mr0" style="font-size: 12px"></i>
主推
</span>
<span v-for="(item1, index) in item.jobSpecialLabelNames" :key="index">{{ item1 }}</span>
<span v-if="item.jobSpecialLabelNames.length == 0">暂无特色</span>
</div>
<div class="jobpricemonth" v-if="item.minMonthlyPay">
<!-- :style="{ opacity: item.minMonthlyPay ? '1' : '0' }" -->
<template v-if="formvalue.signType != 1">
<span>{{ item.minMonthlyPay ? item.minMonthlyPay : "" }}</span
>-<span>{{ item.maxMonthlyPay ? item.maxMonthlyPay : "" }}</span
>元/月
</template>
<template v-else>
<span>{{ item.minMonthlyPay ? item.minMonthlyPay / 100 : "" }}</span
>-<span>{{ item.maxMonthlyPay ? item.maxMonthlyPay / 100 : "" }}</span
>元/月
</template>
</div>
<div class="jobpricehour" v-html="getSalaryClassifyValue(item.salaryClassify, item.salaryClassifyValue)"></div>
</div>
</div>
</span>
<div class="subsetright">
<div class="topContainer">
<div class="updateTime" style="display: none">
<span>更新时间:{{ item.updateTime || "--" }} ( {{ item.diffTime || "--" }} )</span>
</div>
<div class="topbox">
<div>服务费</div>
<div>{{ item.servetype }}</div>
</div>
</div>
<div class="bottombox1">
<!-- <a-popover title="" trigger="click" placement="bottomRight">
<template slot="content" class="jobDesp_content">
<div :class="'copy' + index" @click="copyText($event, index)">复制</div>
<span v-if="item.jobDesp" :class="'copyInfo' + index">{{ item.jobDesp }}</span
><span v-else>暂无详单</span>
</template>-->
<a>
<button
type="primary"
class="jobDesp br4"
:style="{
background: item.recruitment == '1' ? '#fff' : '#f5f5f5',
}"
@click="toDetail(item)"
>
更多
</button>
</a>
<!-- </a-popover> -->
<button class="apply br4" @click="torecord(item)" v-if="item.recruitment == '1'">报名{{item.id}}</button>
<button class="norecruitment" v-else>暂时停招</button>
<!-- <button @click="showmodal(item)" @click="">报名</button> -->
</div>
</div>
</div>
</div>
<div class="pagecontainer f40">
<a-pagination :current="+formvalue.pageNum" :default-current="1" :defaultPageSize="8" :total="formvalue.total" @change="pageChange" />
<div class="ant-pagination-options-quick-jumper">
跳至
<input ref="pageinput" type="text" @keyup.enter="inputpageChange" @blur="inputpageChange" />页
</div>
</div>
</div>
<div class="maincontentleft isVocational" v-else style="padding-top: 50px">
<div class="tabBar" @click="changeTab($event)">
<div class="tabSubset" :class="{ active: 1 }" data-type="0">全部</div>
</div>
<div style="text-align: center">
<a-spin tip="加载中..." :spinning="isspinning"></a-spin>
</div>
<!-- <template v-if="jobMainList.length === 0 && isspinning === false">
<a-empty class="nodata" description="暂无符合条件的岗位" />
</template> -->
<div v-if="!isspinning">
<div
class="subset"
v-for="(item, index) in zhijiaoList"
:key="index"
:style="{
background: '#fff',
}"
>
<router-link target="_blank" :to="`/detail?id=${item.id}&page=${formvalue.pageNum}&type=vocational`" rel="opener">
<div class="subsetleft" @click="totop">
<div class="imgbox">
<img v-if="item.logo.length !== 0" :src="item.logo" />
<div v-else class="default_avatar">{{ item.vocationalName || item.jobName }}</div>
<!-- <img v-else src="../../../static/img/nopicture.png" /> -->
</div>
<div class="jobinfobox" style="display: flex; flex-direction: column; justify-content: space-between">
<div>
<div class="jobname">{{ item.vocationalName }}</div>
<div class="jobinfo">
<span>{{ item.district || "河南省 | 郑州市 | 16-35岁" }}</span>
<!-- <span>{{ item.gender }}</span> -->
</div>
<div class="jobpricemonth">
<span style="color: #ff4d4f; background: rgba(255, 77, 79, 0.1); padding: 1px 6px"> 工作薪资:{{ item.salary }} </span>
</div>
</div>
<div class="jobpricehour" style="font-size: 18px">
学费<span class="" style="font-size: 24px">{{ item.tuition }}</span>
<span style="font-size: 16px"> | 课期{{ item.semester }}</span>
</div>
</div>
</div>
</router-link>
<div class="subsetright">
<div class="topContainer">
<div class="topbox">
<div>服务费</div>
<div>{{ item.serviceCharge }}</div>
</div>
</div>
<div class="bottombox1">
<!-- <a-popover title="" trigger="click" placement="bottomRight">
<template slot="content" class="jobDesp_content">
<div :class="'copy' + index" @click="copyText($event, index)">复制</div>
<span v-if="item.jobDesp" :class="'copyInfo' + index">{{ item.jobDesp }}</span
><span v-else>暂无详单</span>
</template>-->
<router-link target="_blank" :to="`/detail?id=${item.id}&type=vocational`" rel="opener">
<button
type="primary"
class="jobDesp br4"
:style="{
background: '#fff',
}"
>
更多
</button>
</router-link>
<!-- </a-popover> -->
<button class="apply br4" @click="showRecord(item)">立即报名</button>
<!-- <button class="norecruitment" v-else>暂时停招</button> -->
<!-- <button @click="showmodal(item)" @click="">报名</button> -->
</div>
</div>
</div>
</div>
</div>
<div class="maincontentright">
<div class="dateinfo">
<h1 class="bottombox">
<i>我的日历</i>
</h1>
<p
class="day"
:style="{
'font-size': '60px',
color: '#ff4400',
'line-height': '80px',
'margin-top': '8px',
}"
>
{{ dateinfo.day }}
</p>
<p class="week" :style="{ 'font-size': '16px', color: '#ff4400' }">{{ dateinfo.week }}</p>
<p class="date" :style="{ 'font-size': '16px', color: '#ff4400' }">{{ dateinfo.date }}</p>
</div>
<div class="hotphone">
<h1 class="bottombox" style>
<i>客户经理</i>
</h1>
<!-- <div class="fcsc"> -->
<!-- <p>0371-6611 3723</p> -->
<img style="width: 60px; height: 60px; border-radius: 50%" class="mt24" :src="managerInfo.avatar || 'https://matripe-cms.oss-cn-beijing.aliyuncs.com/1shoudan/service.jpg'" alt />
<div style="color: #333; font-weight: 600">
<p class="f16" style="margin-top: 10px">
{{ managerInfo.name }}
<i class="iconfont icon-dianhua1 ml4 f14" style="line-height: 24px; color: #ff4400"></i>
</p>
<p class="f16">{{ managerInfo.workPhone || "-" }}</p>
</div>
<!-- </div> -->
</div>
<!-- <div class="relationme">
<p class="bottombox"><i>稻田合作</i></p>
<button>发布稻田</button>
</div>-->
<recommend />
</div>
</div>
<recordModal :show.sync="recordShow" :jobDetail="currentInfo"></recordModal>
</div>
</template>
<script>
import {
JobListApi,
JobListApiYicai,
getJobSpecialApi,
getProvinceApi,
getHotCityApi,
getCityWhichHasJobApi,
getHotStoreApi,
getClassifyListApi,
// getCityApi,
} from "../../api/job";
import { getUserManagerApi } from "../../api/userinfo";
import $ from "jquery";
import { moneyToFixed, getSalaryClassifyValue, isNotEmptyCheck, disposeJobListData, setReturnFee } from "../../utils/commonUtil";
import recommend from "@/components/FirstJob/components/recommend.vue";
import { nationlist } from "../../utils/datalist";
import Clipboard from "clipboard";
// 报名弹窗
import recordModal from "./components/vocationalRecord.vue";
// import PinYin from '../../utils/ChinesePY'
// import recordbill from "@/components/FirstJob/components/recordbill.vue";
export default {
// 注入获取职位列表的方法
inject: ["reload"],
// 组件名称
name: "",
// 局部注册的组件
components: {
recommend,
recordModal,
// recordbill,
},
// 组件参数 接收来自父组件的数据
props: {
isspecialboxshow: {
require: true,
},
formvalue: {
// type: Object,
require: true,
},
// isspinning: {
// require: true,
// }, // 加载中显示
},
// 组件状态值
data() {
return {
jobMainList: [], // 职位列表
zhijiaoList: [
// 职教列表
{
id: 0,
vocationalName: "电气工程师(初级班)",
logo: "https://matripe-cms.oss-cn-beijing.aliyuncs.com/zhijiao/job1.png",
tuition: "6800元",
serviceCharge: "2000元/人",
salary: "7000-9000元/月",
enterprise: "",
semester: "30天",
totalProfit: "2500元/人+就业分成",
address: "河南省郑州市航空港区如荼路重英街交叉口南侧100米路东",
desp: `一、就业前景:
1. 学习合格后,公司统一推荐到相关企业的设备安装、调试、运营维护等相关岗位。
2. 薪酬待遇电气工程师初级实习期6000-8000元/月实习期过后7000-9000元/月。
二、关于学校
优星图教育科技是集智能制造设备的研发生产、智能工厂设计与升级改造、自动化技能人才培养培训为一体的智能制造整体解决方案供应商。双师型教师团队,先进的自动化教学设备,理论结合实操,让你用最短的时间学会最有用的技术,从而实现高质量就业!
三、课程介绍
本培养体系通过70%实操+30%理论相结合的模式掌握自动化技术,每个模块均有考核,考核通过即可推荐工作,未通过即针对性辅导,完成技术掌握。课程体系持续升级,教学内容以就业为导向,紧贴企业需求。
四、课程内容:
1. 电工基础课程
2. 气动基础课程
3. 传感器课程
4. 西门子200SMART PLC课程
5. ABB机器人课程
五、学习时间:
周一到周六
夏季:上午 8:30-11:30下午 14:00-18:00晚上 19:00-21:00 (晚自习)
冬季:上午 8:30-11:30下午 13:30-17:30晚上 18:30-20:30 (晚自习)
周日休息期间教室全天开放,可随时实操。
六、招生对象
基本要求初中及以上学历年龄18-35周岁思想端正心理和身体健康无危害团体的传染性疾病热爱自动化行业服从公司安排适应出差。
1. 工厂中想通过学习一门技术改变自己的一线操作工;
2. 从事自动化设备机构装配人员电控知识的扩展;
3. 想从事自动化行业的自动化相关专业毕业生,在步入岗位前的充电学习。
七、吃饭住宿
1. 吃饭自理住宿4-8人间收费12-18元/天/人。预约报名缴纳300元定金送开学大礼包被褥四件套+生活用品大礼包独立卫生间、空调、热水器免费洗衣机、饮水机24小时提供。
2. 住宿期间水电费全免!
八、服务流程
报名成功----到校考察----面试合格----缴纳费用----签订协议----安排入学----学习合格----推荐就业。
九、学员需提前准备的环节
1. 换洗衣服、常用物品即可
十、学习地址  
河南省郑州市航空港区如荼路重英街交叉口南侧100米路东`,
},
{
id: 1,
vocationalName: "调试工程师(中级班)",
logo: "https://matripe-cms.oss-cn-beijing.aliyuncs.com/zhijiao/job2.png",
tuition: "11800元",
serviceCharge: "3000元/人",
salary: "8000-11000元/月",
enterprise: "",
semester: "60天",
totalProfit: "4000元/人+就业分成",
address: "河南省郑州市航空港区如荼路重英街交叉口南侧100米路东",
desp: `一、就业前景:
1. 学习合格后,公司统一推荐到相关企业的设备安装、调试、运营维护等相关岗位。
2. 薪酬待遇调试工程师中级实习期7000-9000元/月实习期过后8000-11000元/月。
二、关于学校
优星图教育科技是集智能制造设备的研发生产、智能工厂设计与升级改造、自动化技能人才培养培训为一体的智能制造整体解决方案供应商。双师型教师团队,先进的自动化教学设备,理论结合实操,让你用最短的时间学会最有用的技术,从而实现高质量就业!
三、课程介绍
本培养体系通过70%实操+30%理论相结合的模式掌握自动化技术,每个模块均有考核,考核通过即可推荐工作,未通过即针对性辅导,完成技术掌握。课程体系持续升级,教学内容以就业为导向,紧贴企业需求。
四、课程内容:
1. PLC编程基础知识
2. 编程基本指令学习
3. 威纶通触摸屏
4. 运动控制课程
5. 模拟量应用课程
6. 通信课程/绘图课程
7. 非标设备实操课程
五、学习时间:
周一到周六
夏季:上午 8:30-11:30下午 14:00-18:00晚上 19:00-21:00 (晚自习)
冬季:上午 8:30-11:30下午 13:30-17:30晚上 18:30-20:30 (晚自习)
周日休息期间教室全天开放,可随时实操。
六、招生对象
基本要求初中及以上学历年龄18-35周岁思想端正心理和身体健康无危害团体的传染性疾病热爱自动化行业服从公司安排适应出差。
1. 工厂中想通过学习一门技术改变自己的一线操作工;
2. 从事自动化设备机构装配人员电控知识的扩展;
3. 想从事自动化行业的自动化相关专业毕业生,在步入岗位前的充电学习。
七、吃饭住宿
1. 吃饭自理住宿4-8人间收费12-18元/天/人。预约报名缴纳300元定金送开学大礼包被褥四件套+生活用品大礼包独立卫生间、空调、热水器免费洗衣机、饮水机24小时提供。
2. 住宿期间水电费全免!
八、服务流程
报名成功----到校考察----面试合格----缴纳费用----签订协议----安排入学----学习合格----推荐就业。
九、学员需提前准备的环节
1. 换洗衣服、常用物品即可
十、学习地址  
河南省郑州市航空港区如荼路重英街交叉口南侧100米路东`,
},
{
id: 2,
vocationalName: "运营管理团队(高级班)",
logo: "https://matripe-cms.oss-cn-beijing.aliyuncs.com/zhijiao/job3.png",
tuition: "19800元",
serviceCharge: "6500元/人",
salary: "9000-11000元/月",
enterprise: "",
semester: "90天",
totalProfit: "8000元/人",
address: "河南省郑州市航空港区如荼路重英街交叉口南侧100米路东",
desp: `一、就业前景:
1. 学习合格后,公司统一推荐到相关企业的设备安装、调试、运营维护等相关岗位。
2. 薪酬待遇:运营/教师精英班高级实习期三个月8000-9000元/月实习期过后9000-11000元/月运营管理类学员孵化创业年综合收入20w。
二、关于学校
优星图教育科技是集智能制造设备的研发生产、智能工厂设计与升级改造、自动化技能人才培养培训为一体的智能制造整体解决方案供应商。双师型教师团队,先进的自动化教学设备,理论结合实操,让你用最短的时间学会最有用的技术,从而实现高质量就业!
三、课程介绍
本培养体系通过70%实操+30%理论相结合的模式掌握自动化技术,每个模块均有考核,考核通过即可推荐工作,未通过即针对性辅导,完成技术掌握。课程体系持续升级,教学内容以就业为导向,紧贴企业需求。
四、课程内容:
1. 自动化专业技能培训 5周
2. 自动化教学技法培训 5周
3. 线上新媒体应用培训 1周
4. 综合素养培训 1周
五、学习时间:
周一到周六
夏季:上午 8:30-11:30下午 14:00-18:00晚上 19:00-21:00 (晚自习)
冬季:上午 8:30-11:30下午 13:30-17:30晚上 18:30-20:30 (晚自习)
周日休息期间教室全天开放,可随时实操。
六、招生对象
基本要求初中及以上学历年龄18-35周岁思想端正心理和身体健康无危害团体的传染性疾病热爱自动化行业服从公司安排适应出差。
1. 工厂中想通过学习一门技术改变自己的一线操作工;
2. 从事自动化设备机构装配人员电控知识的扩展;
3. 想从事自动化行业的自动化相关专业毕业生,在步入岗位前的充电学习。
七、吃饭住宿
1. 吃饭自理住宿4-8人间收费12-18元/天/人。预约报名缴纳300元定金送开学大礼包被褥四件套+生活用品大礼包独立卫生间、空调、热水器免费洗衣机、饮水机24小时提供。
2. 住宿期间水电费全免!
八、服务流程
报名成功----到校考察----面试合格----缴纳费用----签订协议----安排入学----学习合格----推荐就业。
九、学员需提前准备的环节
1. 换洗衣服、常用物品即可
十、学习地址  
河南省郑州市航空港区如荼路重英街交叉口南侧100米路东`,
},
],
recordShow: false,
currentInfo: {}, // 当前点击的职位信息
isVocational: false,
isLogin: false,
isspinning: false,
sortNum: 1, // 排序的标识
sortStr: "工价优先",
specialList: [], // 获取的特色列表
classifyList: [], // 分类列表
searchValue: "",
specialvalue: [], // 点中的特色标签
classifyvalue: [], // 点中的分类标签
filterObj: {
price: "", // 选中的价格搜索
gender: "", // 选中的性别搜索
specialactive: [], // 点中的特色标签索引
},
showDotted: false,
visible: false, // 录单模态框的展示
confirmLoading: false, // 录单提交的loading效果
cityoption: [], // 城市列表
hotCityList: [], // 热门城市列表
hasJobCityList: {}, // 有职位的城市列表
currentCityList: {}, // 当前首字母展示的城市列表
minMonthlyPay: "",
maxMonthlyPay: "",
isdownHotStoreShow: false, // 热门企业下拉显示
currentPage: "",
currentCity: "全国",
cityValue: "", // 城市输入框内容
activeInd: -1,
hotStoreList: [],
newFormValue: [],
apply: "", // 报名企业id
filterStatus: 0, // 筛选开合状态
filterHeight: "", // 筛选盒子高度
signType: 0, // 自营三方类型(0全部,1自营,2三方)
tagArray0: [],
tagArray1: [],
tagArray2: [],
tagArray3: [],
tagArray4: [],
proxyinfo: JSON.parse(localStorage.getItem("LOGIN_DATA")),
nationlist: nationlist,
specialHotTag: [],
loginValue: {},
dateinfo: {
day: "",
week: "",
date: "",
},
options: {
//
price: [
{
value: "3000-4000",
label: "3000-4000元",
uid: 1,
},
{
value: "4000-5000",
label: "4000-5000元",
uid: 1,
},
{
value: "5000-6000",
label: "5000-6000元",
uid: 1,
},
{
value: "6000-7000",
label: "6000-7000元",
uid: 1,
},
],
age: [
{
value: "16-45",
label: "16-45岁",
uid: 2,
},
{
value: "18-35",
label: "18-35岁",
uid: 2,
},
{
value: "45-58",
label: "45-58岁",
uid: 2,
},
{
value: "58",
label: "58岁以上",
uid: 2,
},
],
gender: [
{
value: "1",
label: "男",
uid: 3,
},
{
value: "2",
label: "女",
uid: 3,
},
{
value: "-1",
label: "男女不限",
uid: 3,
},
],
},
relationList: [],
lng: "",
lat: "",
minAge: "",
maxAge: "",
managerInfo: {},
};
},
// 计算属性
computed: {},
// 侦听器
watch: {
formvalue: {
handler() {
// console.log(e);
// 筛选列表数据处理
// if (e.district !== undefined) {
// if (e.district.length === 0) {
// document.getElementById("city").style.width = 85 + "px";
// } else {
// const result = e.district.join("");
// console.log(result);
// if (result.length > 6) {
// document.getElementById("city").style.width = (result.length + 3) * 14 + "px";
// document.getElementById("city").style.maxWidth = "210px";
// document.querySelector("#city").nextElementSibling.style.width = (result.length + 3) * 14 + "px"; // 获取下一个兄弟元素s
// document.getElementById("city").nextElementSibling.style.maxWidth = "210px";
// } else if (result.length > 5) {
// document.getElementById("city").style.width = (result.length + 2.8) * 14 + "px";
// document.querySelector("#city").nextElementSibling.style.width = (result.length + 2.6) * 14 + "px";
// } else if (result.length > 4) {
// document.getElementById("city").style.width = (result.length + 2.4) * 14 + "px";
// document.querySelector("#city").nextElementSibling.style.width = (result.length + 2.4) * 14 + "px";
// } else {
// document.getElementById("city").style.width = (result.length + 1.5) * 14 + "px";
// document.getElementById("city").style.minWidth = 72 + "px";
// document.querySelector("#city").nextElementSibling.style.width = (result.length + 1.5) * 14 + "px";
// }
// }
// }
// 工价的判断
// if (e.monthlyPayStr.length == 0) {
// document.getElementById("price").style.width = 60 + "px";
// document.getElementById("price").style.minWidth = 60 + "px";
// } else {
// const result = e.monthlyPayStr.join("");
// if (result.length >= 0) {
// document.getElementById("price").style.width = "120px";
// document.getElementById("price").nextElementSibling.style.width = "130px";
// document.querySelector(".ant-cascader-picker-label").style.width =
// "150px";
// }
// }
// if (e.monthlyPayStr.length == 0) {
// document.getElementById("price").style.width = 60 + "px";
// document.getElementById("price").style.minWidth = 60 + "px";
// } else {
// const result = e.monthlyPayStr.join("");
// if (result.length >= 0) {
// document.getElementById("price").style.width = "120px";
// document.getElementById("price").nextElementSibling.style.width = "130px";
// // document.querySelector(".ant-cascader-picker-label").style.width =
// // "150px";
// }
// }
// if (e.sex.length == 0) {
// document.getElementById("gender").style.width = 60 + "px";
// document.getElementById("gender").style.minWidth = 60 + "px";
// } else {
// const result = e.sex.join("");
// if (result.length >= 2) {
// document.getElementById("gender").style.width = "90px";
// document.getElementById("gender").nextElementSibling.style.width = "100px";
// document.querySelector(".ant-cascader-picker-label").style.width =
// "150px";
// }
// }
// 年龄筛选长度的判断
// if (e.ageStr.length === 0) {
// document.getElementById("age").style.width = 60 + "px";
// } else {
// const result = e.ageStr.join("");
// if (result.length >= 0) {
// document.getElementById("age").style.width = "90px";
// document.getElementById("age").nextElementSibling.style.width = "90px";
// // document.querySelector(".ant-cascader-picker-label").style.width =
// // "150px";
// }
// }
},
deep: true,
},
$route: {
handler(e) {
console.log("$route", e);
if (e.query.type && e.query.type == "vocational") {
this.isVocational = true;
} else {
this.isVocational = false;
}
// console.log("ischange");
// console.log(to);
// console.log(from);
},
deep: true,
immediate: true,
},
filterObj: {
handler(newv) {
var arr = Object.keys(newv);
console.log(arr.length);
if (arr.length + newv.specialactive.length - 1 > 6) {
this.showDotted = true;
} else {
this.showDotted = false;
}
},
deep: true,
},
"formvalue.pageNum"(val) {
sessionStorage.removeItem("PAGE_TYPE");
},
},
// 组件
// 生命周期钩子 注:没用到的钩子请自行删除
/**
* 组件实例创建完成属性已绑定但DOM还未生成$ el属性还不存在
*/
created() {
// console.log(this.proxyinfo);
console.log(this.$route);
window.addEventListener("beforeunload", (e) => this.removePageInfo());
if (sessionStorage.getItem("PAGE_TYPE")) {
let info = JSON.parse(sessionStorage.getItem("PAGE_TYPE"));
this.signType = info.signType ? info.signType : "";
this.currentPage = info.pageNum ? info.pageNum : 1;
}
if (this.$route.query.type) {
if (this.$route.query.type == "vocational") {
this.isVocational = true;
}
}
if (localStorage.getItem("LOGIN_DATA")) {
this.isLogin = true;
}
if (this.currentPage) {
// console.log(this.currentPage);
this.formvalue.pageNum = this.currentPage;
}
if (this.signType == "") {
this.getJobList();
} else {
this.getJobListYicai();
}
this.getRecommendJob();
this.getJobSpecial();
this.getProvince();
this.getdateinfo();
this.getHotCity();
this.getCityWhichHasJob();
this.getHotStore();
this.getClassifyList();
this.getUserManager();
this.hideFilterContent();
if (isNotEmptyCheck(localStorage.getItem("POSITION_INFO"))) {
let position = JSON.parse(localStorage.getItem("POSITION_INFO"));
let diffTime = new Date().getTime() - JSON.parse(localStorage.getItem("POSITION_INFO")).timestamp;
if (diffTime / 3600000 > 24) {
this.getPosition();
} else {
this.lng = position.lng;
this.lat = position.lat;
}
} else {
this.getPosition();
}
},
/**
* el 被新创建的 vm.el 替换,并挂载到实例上去之后调用该钩子。
* 如果 root 实例挂载了一个文档内元素,当 mounted 被调用时 vm.el 也在文档内。
*/
mounted() {
this.loginValue = localStorage.getItem("LOGIN_DATA") !== null ? JSON.parse(localStorage.getItem("LOGIN_DATA")) : { tel: "" };
console.log(this.loginValue);
},
beforeDestroy() {
console.log("beforeDestroy");
// sessionStorage.removeItem("PAGE_TYPE")
},
destroyed() {
window.removeEventListener("beforeunload", (e) => this.removePageInfo(e));
},
// 组件方法
methods: {
removePageInfo() {
sessionStorage.removeItem("PAGE_TYPE");
},
// 处理筛选框的定位
// filterbox() {
// return () => {
// return document.getElementById("filterbox")[0];
// // return document.body;
// };
// },
/**
* 获取登录人对应的客户经理信息
*/
getUserManager() {
getUserManagerApi().then(({ data }) => {
console.log(data);
this.$store.commit("setManagerInfo", data.data);
this.managerInfo = data.data;
console.log("+++++++++++++++++++++++++", this.$store);
});
},
async getRecommendJob() {
this.isspinning = true;
try {
if (this.isLogin) {
const { data } = await JobListApi({
pageNum: 1,
pageSize: 4,
jobCategory: 608,
});
// console.log(data);
this.fellowList = disposeJobListData(data.data.recordList);
// console.log(this.fellowList);
}
// this.$emit("update:relationList", this.relationList);
} catch (error) {
console.log(error);
}
this.isspinning = false;
},
// 获取工作列表
async getJobList(newdata) {
this.isspinning = true;
console.log("this.formvalue", this.formvalue);
try {
newdata = {
district: "",
monthlyPayStr: "",
ageStr: "",
jobSpecialLabelIds: "",
aliasName: "",
pageNum: 1,
pageSize: 8,
total: null, //分页配置
};
for (var k in this.formvalue) {
// console.log(this.formvalue[k]);
if (Array.isArray(this.formvalue[k])) {
newdata[k] = this.formvalue[k].length > 0 ? this.formvalue[k].join() : "";
} else {
newdata[k] = this.formvalue[k];
}
}
// console.log(newdata);
// debugger;
// console.log(this.isLogin);
if (this.isLogin) {
const { data } = await JobListApi(newdata);
console.log("data", data);
if (data.status === 200) {
this.jobMainList = disposeJobListData(data.data.recordList);
this.formvalue.total = data.data.recordCount;
console.log(this.jobMainList);
} else {
this.$message.info("数据获取失败");
}
}
this.totop();
// = data.data.recordList;
// console.log(this.formvalue);
} catch (error) {
console.log(error);
}
this.isspinning = false;
},
// 获取一才工作列表
async getJobListYicai(newdata) {
this.isspinning = true;
console.log(this.formvalue);
try {
newdata = {
agencyId: "3087",
// agencyId: "2743", //测试版
recruitment: "1",
keys: "",
pageNum: 1,
pageSize: 8,
total: null, //分页配置
};
for (var k in this.formvalue) {
// console.log(this.formvalue[k]);
if (Array.isArray(this.formvalue[k])) {
newdata[k] = this.formvalue[k].length > 0 ? this.formvalue[k].join() : "";
} else {
newdata[k] = this.formvalue[k];
}
}
// console.log(newdata);
// debugger;
// console.log(this.isLogin);
if (this.isLogin) {
const { data } = await JobListApiYicai(newdata);
// console.log(data);
if (data.status === 200) {
this.jobMainList = disposeJobListData(data.data.recordList);
this.jobMainList.forEach((item, index) => {
item["servetype"] = setReturnFee(item.returnFee, item.returnFeeType);
});
this.formvalue.total = data.data.recordCount;
console.log(this.jobMainList);
} else {
this.$message.info("数据获取失败");
}
}
this.totop();
// = data.data.recordList;
// console.log(this.formvalue);
} catch (error) {
console.log(error);
}
this.isspinning = false;
},
//搜索企业名称
onSearch() {
// console.log(e);
// if (typeof e === "string" || typeof e === "number") {
// if (e.length !== 0) {
// console.log("zifuchuan ");
// this.formvalue.aliasName = e;
// this.getJobList();
// }
// } else
console.log(typeof this.searchValue.trim());
// this.formvalue = {
// // 筛选的上传参数
// district: [], // 城镇数据
// monthlyPayStr: [], // 每月工资
// ageStr: '', // 年龄数据
// jobSpecialLabelIds: [], // 特色标签索引
// aliasName: '',
// sex: [],
// pageNum: 1,
// pageSize: 8,
// total: null, //分页配置
// }
this.formvalue.aliasName = "";
this.formvalue.ageStr = "";
if (this.searchValue.trim() !== "") {
this.formvalue.pageNum = 1;
console.log(this.searchValue);
if (typeof +this.searchValue.trim() == "number" && !isNaN(+this.searchValue.trim())) {
this.formvalue.ageStr = this.searchValue.trim();
} else {
this.formvalue.aliasName = this.searchValue.trim();
this.formvalue.keys = this.searchValue.trim();
}
// console.log("search1");
// this.formvalue.aliasName = this.searchValue;
// console.log(this.formvalue);
if(this.formvalue.signType == 1){
this.getJobListYicai();
}else{
this.getJobList();
}
this.isdownHotStoreShow = false;
}
// this.$router.push("/list").catch((err) => {
// console.log(err);
// });
},
// 搜索工价
searchPrice(e) {
console.log(e);
if (e.target.nodeName == "SPAN") {
if (e.target.textContent == this.filterObj.price) {
this.formvalue.monthlyPayStr = "";
this.filterObj.price = "";
} else {
this.formvalue.monthlyPayStr = e.target.textContent;
this.filterObj.price = this.formvalue.monthlyPayStr;
}
this.getJobList();
} else if (e.target.nodeName == "BUTTON") {
console.log(this.minMonthlyPay);
console.log(this.maxMonthlyPay);
if (this.minMonthlyPay.length != 0 && this.maxMonthlyPay.length != 0 && typeof +this.minMonthlyPay == "number" && typeof +this.maxMonthlyPay == "number" && !isNaN(+this.minMonthlyPay) && !isNaN(+this.maxMonthlyPay)) {
this.formvalue.monthlyPayStr = this.minMonthlyPay + "-" + this.maxMonthlyPay;
this.filterObj.price = this.formvalue.monthlyPayStr;
this.getJobList();
}
}
},
/**
* 搜索年龄
*/
searchAge() {
console.log(this.minAge);
console.log(this.maxAge);
if (this.minAge.length != 0 && this.maxAge.length != 0 && typeof +this.minAge == "number" && typeof +this.maxAge == "number" && !isNaN(+this.minAge) && !isNaN(+this.maxAge)) {
let list = [this.minAge, this.maxAge];
list.sort(function (a, b) {
return a - b;
});
console.log(list);
this.formvalue.ageRangeStr = list[0] + "-" + list[1];
this.filterObj.age = this.formvalue.ageRangeStr;
console.log(this.filterObj.age);
this.getJobList();
}
},
// 搜索性别
searchGender(e) {
console.log(e);
if (e.target.tagName == "SPAN") {
if (e.target.textContent == "男") {
if (this.filterObj.gender == "男") {
this.filterObj.gender = "";
this.formvalue.sex = "";
} else {
this.filterObj.gender = "男";
this.formvalue.sex = 1;
}
} else if (e.target.textContent == "女") {
if (this.filterObj.gender == "女") {
this.filterObj.gender = "";
this.formvalue.sex = "";
} else {
this.filterObj.gender = "女";
this.formvalue.sex = 2;
}
} else {
if (this.filterObj.gender == "男女不限") {
this.filterObj.gender = "";
this.formvalue.sex = "";
} else {
this.filterObj.gender = "男女不限";
this.formvalue.sex = -1;
}
}
this.getJobList();
}
},
// 获取职位特色
getJobSpecial() {
// var timestamp = new Date().getTime();
console.log(new Date().getTime() - JSON.parse(localStorage.getItem("SPECIALLIST")));
console.log(new Date(new Date().getTime() - JSON.parse(localStorage.getItem("SPECIALLIST"))));
if (isNotEmptyCheck(localStorage.getItem("SPECIALLIST"))) {
let diffTime = new Date().getTime() - JSON.parse(localStorage.getItem("SPECIALLIST")).timestamp;
if (diffTime / 3600000 > 2) {
console.log("======================", "needRequest");
this.getJobSpecialList().then((res) => {
this.specialList = res;
this.specialList.forEach((item) => {
if (item.typeClassify == "0") {
this.tagArray0.push(item);
} else if (item.typeClassify == "1") {
this.tagArray1.push(item);
} else if (item.typeClassify == "2") {
this.tagArray2.push(item);
} else if (item.typeClassify == "3") {
this.tagArray3.push(item);
} else if (item.typeClassify == "4") {
this.tagArray4.push(item);
}
if (item.name == "大龄工" || item.name == "暑假工" || item.name == "长白班") {
this.specialHotTag.push(item);
}
});
});
} else {
this.specialList = JSON.parse(localStorage.getItem("SPECIALLIST")).data;
console.log(diffTime);
this.specialList.forEach((item) => {
if (item.typeClassify == "0") {
this.tagArray0.push(item);
} else if (item.typeClassify == "1") {
this.tagArray1.push(item);
} else if (item.typeClassify == "2") {
this.tagArray2.push(item);
} else if (item.typeClassify == "3") {
this.tagArray3.push(item);
} else if (item.typeClassify == "4") {
this.tagArray4.push(item);
}
if (item.name == "大龄工" || item.name == "暑假工" || item.name == "长白班") {
this.specialHotTag.push(item);
}
});
}
} else {
this.getJobSpecialList().then((res) => {
this.specialList = res;
this.specialList.forEach((item) => {
if (item.typeClassify == "0") {
this.tagArray0.push(item);
} else if (item.typeClassify == "1") {
this.tagArray1.push(item);
} else if (item.typeClassify == "2") {
this.tagArray2.push(item);
} else if (item.typeClassify == "3") {
this.tagArray3.push(item);
} else if (item.typeClassify == "4") {
this.tagArray4.push(item);
}
if (item.name == "大龄工" || item.name == "暑假工" || item.name == "长白班") {
this.specialHotTag.push(item);
}
});
});
}
this.$nextTick(() => {
let fileterContent = document.querySelector(".filter-content");
this.filterHeight = fileterContent.scrollHeight;
// fileterContent.style.height = this.filterHeight + "px";
});
},
// 改变自营三方类型
changeTab(e) {
console.log(e.target.dataset.type);
if (e.target.dataset.type != undefined) {
this.formvalue.pageNum = 1;
if (e.target.dataset.type != 0) {
this.formvalue.signType = this.signType = e.target.dataset.type;
this.getJobListYicai();
} else {
this.formvalue.signType = this.signType = "";
this.getJobList();
}
}
},
async getJobSpecialList() {
const { data } = await getJobSpecialApi();
console.log(data);
if (data.status == 200) {
let container = {
data: data.data,
timestamp: new Date().getTime(),
};
// console.log(container.timestamp);
localStorage.setItem("SPECIALLIST", JSON.stringify(container));
return data.data;
}
},
// 获取省份列表
async getProvince() {
// const that = this;
try {
const { data } = await getProvinceApi();
// console.log(data);
data.data.pop();
this.cityoption = data.data;
// console.log(this.cityoption);
// console.log(data);
} catch (error) {
// console.log(error);
}
},
// 筛选职位
onChange() {
// console.log(e);
// console.log(item);
// console.log(this.formvalue);
// if (item) {
// if (item.uid === 1) {
// console.log(1);
// this.formvalue.monthlyPayStr = item[0];
// } else if (item.uid === 2) {
// this.formvalue.ageStr = item[0];
// } else if (item[0].id) {
// console.log(e.join());
// this.formvalue.district = e;
// } else
// if (item[0].uid == 3){
// this.formvalue.sex = item[0].value;
// }
// }
this.getJobList();
},
pageChange(e) {
console.log(e);
this.formvalue.pageNum = e;
this.$refs.pageinput.value = "";
if (this.signType == 1) {
this.getJobListYicai();
} else {
this.getJobList();
}
},
inputpageChange(e) {
const pagenumcount = this.formvalue.total / this.formvalue.pageSize;
// console.log(pagenumcount);
if (e.target.value) {
if (e.target.value > pagenumcount) {
this.formvalue.pageNum = Math.ceil(pagenumcount);
} else {
this.formvalue.pageNum = e.target.value;
}
} else {
this.formvalue.pageNum = 1;
}
this.getJobList();
// console.log(e);
},
handleChange() {},
claerfilter() {
const { pageNum, pageSize, total } = this.formvalue;
// this.formvalue = { // 改变引用地址不会使vue侦听到数据的变化,
// district: [],
// monthlyPayStr: [],
// ageStr: [],
// jobSpecialLabelIds: [],
// pageNum,
// pageSize,
// total, //分页配置
// };
this.formvalue.district = [];
this.formvalue.monthlyPayStr = [];
this.formvalue.ageStr = "";
this.formvalue.jobSpecialLabelIds = [];
this.formvalue.aliasName = "";
this.formvalue.cityName = "";
this.formvalue.sex = [];
this.formvalue.levelType = "";
this.formvalue.hotStoreId = "";
this.currentCity = "全国";
this.formvalue.pageNum = pageNum;
this.formvalue.pageSize = pageSize;
this.formvalue.total = total;
// console.log(this.formvalue);
this.filterObj.specialactive = [];
this.specialvalue = [];
this.getJobList();
},
specialclick(index, item) {
// console.log(item);
// console.log(index);
let arrIndex = this.filterObj.specialactive.indexOf(item);
if (arrIndex > -1) {
this.filterObj.specialactive.splice(arrIndex, 1);
this.specialvalue.splice(arrIndex, 1);
} else {
this.filterObj.specialactive.push(item);
this.specialvalue.push(item.id);
}
this.formvalue.jobSpecialLabelIds = this.specialvalue;
// console.log(this.filterObj.specialactive);
this.getJobList();
// console.log(this.specialvalue);
// console.log(this.formvalue);
// console.log(index);
},
classifyClick(index, item) {
let arrIndex = this.filterObj.specialactive.indexOf(item);
if (arrIndex > -1) {
this.filterObj.specialactive.splice(arrIndex, 1);
this.classifyvalue.splice(arrIndex, 1);
} else {
this.filterObj.specialactive.push(item);
this.classifyvalue.push(item.id);
}
this.formvalue.jobCategoryLabelIds = this.classifyvalue;
// console.log(this.filterObj.specialactive);
this.getJobList();
},
isspecialboxshowclick() {
this.$emit("update:isspecialboxshow", !this.isspecialboxshow);
},
totop() {
// console.log(window);
document.body.scrollTop = 0;
document.documentElement.scrollTop = 0;
// window.body.scrollY = 0;
},
moneyToFixed(value) {
// console.log(value);
return moneyToFixed(value);
},
// 重置搜索结果
resetsearch(e) {
// console.log(e);
if (e.target.value.length === 0) {
this.formvalue.aliasName = "";
this.formvalue.keys = "";
this.formvalue.ageStr = "";
if (this.formvalue.signType != 0) {
this.getJobListYicai();
} else {
this.getJobList();
}
}
// this.$router.push("/list").catch((err) => {
// console.log(err);
// });
},
delFilter(e, value, items) {
console.log(e);
console.log(items);
if (value == "price") {
this.filterObj.price = "";
this.formvalue.monthlyPayStr = "";
this.minMonthlyPay = "";
this.maxMonthlyPay = "";
} else if (value == "gender") {
this.filterObj.gender = "";
this.formvalue.sex = "";
} else if (value == "age") {
this.filterObj.age = "";
this.formvalue.ageRangeStr = "";
this.minAge = "";
this.maxAge = "";
} else {
this.filterObj.specialactive.splice(this.filterObj.specialactive.indexOf(items), 1);
if (this.classifyvalue.indexOf(items.id) != -1) {
this.classifyvalue.splice(this.classifyvalue.indexOf(items.id), 1);
this.formvalue.jobCategoryLabelIds = this.classifyvalue;
} else {
this.specialvalue.splice(this.specialvalue.indexOf(items.id), 1);
this.formvalue.jobSpecialLabelIds = this.specialvalue;
}
// if(this.filterObj.specialactive.indexOf(items) > -1){
// }
}
this.getJobList();
},
resetPriceSearch(e) {
// console.log(e.target.value);
// console.log(+e.target.value);
if (this.minMonthlyPay.length == 0 && this.maxMonthlyPay.length == 0) {
this.formvalue.monthlyPayStr = "";
this.filterObj.price = "";
this.getJobList();
} else if (typeof +e.target.value != "number" || isNaN(+e.target.value)) {
this.$message.warning("请输入正确的价格");
}
},
resetAgeSearch(e) {
console.log(this.minAge);
console.log(this.maxAge);
if (this.minAge.length == 0 && this.maxAge.length == 0) {
this.formvalue.ageRangeStr = "";
this.filterObj.age = "";
this.getJobList();
} else if (typeof +e.target.value != "number" || isNaN(+e.target.value)) {
this.$message.warning("请输入正确的价格");
}
},
cityModalClose() {
// 城市选择弹出框关闭
this.cityValue = "";
this.searchCity();
},
// 获取日期信息
getdateinfo() {
const date = new Date();
// console.log(date);
// console.log(date.getDate());
// console.log(date.getDay());
// console.log(date.getFullYear());
// console.log(date.getMonth());
if (date.getDay() === 1) {
this.dateinfo.week = "星期一";
} else if (date.getDay() === 2) {
this.dateinfo.week = "星期二";
} else if (date.getDay() === 3) {
this.dateinfo.week = "星期三";
} else if (date.getDay() === 4) {
this.dateinfo.week = "星期四";
} else if (date.getDay() === 5) {
this.dateinfo.week = "星期五";
} else if (date.getDay() === 6) {
this.dateinfo.week = "星期六";
} else if (date.getDay() === 7) {
this.dateinfo.week = "星期日";
}
// console.log(date.getDate());
// console.log(date.getDate().length);
if (date.getDate().toString().length <= 1) {
this.dateinfo.day = "0" + date.getDate();
// console.log(this.dateinfo.day);
} else {
this.dateinfo.day = date.getDate();
// console.log(this.dateinfo.day);
}
this.dateinfo.date = date.getFullYear() + "." + (date.getMonth() + 1);
},
// delmark(index) {
// // console.log(index);
// this.specialactive.splice(index, 1);
// this.specialvalue.splice(index, 1);
// this.getJobList();
// },
torecord(item) {
// 跳转到路由新页面的方法
// console.log(item);
// let userinfo = JSON.stringify(item);
sessionStorage.setItem("PAGE_TYPE", JSON.stringify({ id: item.id, pageNum: this.formvalue.pageNum, signType: this.signType }));
if (this.signType == "") {
this.$router.push({ name: "recordbill", params: item });
sessionStorage.setItem("CURRENT_FIRM", JSON.stringify(item));
} else if (this.signType == "1") {
this.$router.push({ name: "recordbillYicai", params: item });
sessionStorage.setItem("CURRENT_FIRM_YICAI", JSON.stringify(item));
}
},
getSalaryClassifyValue(salaryClassify, salaryClassifyValue) {
return getSalaryClassifyValue(salaryClassify, salaryClassifyValue);
},
async getHotCity() {
try {
const { data } = await getHotCityApi();
// console.log(data);
if (data.status == 200) {
this.hotCityList = data.data;
this.currentCityList = this.hotCityList;
}
} catch (error) {
// console.log(error);
}
},
async getCityWhichHasJob() {
try {
const { data } = await getCityWhichHasJobApi();
console.log(data);
if (data.status == 200) {
let pinyinList = [];
data.data.forEach((item) => {
if (pinyinList.indexOf(item.firstLetter) == -1) {
pinyinList.push(item.firstLetter);
}
});
pinyinList.sort(); // 拼音首字母排序
let firstList = [];
let cityList = [];
let num = -1;
pinyinList.forEach((item, i) => {
if (i % 5 == 0) {
num++;
firstList[num] = [];
}
firstList[num].push(item);
});
firstList.forEach((item, i) => {
cityList[i] = [];
item.forEach((item1) => {
data.data.forEach((item2) => {
if (item2.firstLetter == item1) {
cityList[i].push(item2);
}
});
});
});
this.hasJobCityList.firstList = firstList;
this.hasJobCityList.cityList = cityList;
}
} catch (error) {
// console.log(error);
}
},
async getHotStore() {
try {
const { data } = await getHotStoreApi();
// console.log(data);
if (data.status == 200) {
let middle = [];
this.hotStoreList = data.data;
this.hotStoreList.forEach((item, index) => {
if (index <= 4) {
middle.push(item);
}
});
this.hotStoreList = middle;
// console.log(this.hotStoreList);
}
} catch (error) {
// console.log(error);
}
},
async getClassifyList() {
try {
const { data } = await getClassifyListApi();
console.log(data);
if (data.status == 200) {
console.log(data);
this.classifyList = data.data.labels;
this.$nextTick(() => {
let fileterContent = document.querySelector(".filter-content");
if (isNotEmptyCheck(fileterContent.scrollHeight)) {
this.filterHeight = fileterContent.scrollHeight;
}
// fileterContent.style.height = this.filterHeight + "px";
});
}
} catch (error) {
// console.log(error);
}
},
changeCurrentCity(index) {
this.currentCityList = this.hasJobCityList.cityList[index];
// console.log(index);
},
searchCity() {
this.currentCityList = [];
if (this.cityValue) {
this.hotCityList.forEach((item) => {
// console.log(item);
// console.log(item.name.indexOf(this.cityValue));
if (item.name.indexOf(this.cityValue) > -1) {
// console.log(123);
this.currentCityList.push(item);
}
});
}
if (this.currentCityList.length == 0) {
this.currentCityList = this.hotCityList;
}
},
resetCityList(e) {
if (e.target.value.length === 0) {
this.cityValue = "";
this.currentCityList = this.hotCityList;
}
},
searchJob(item) {
// console.log(item);
if (item.levelType == 1) {
this.formvalue.cityName = "";
this.formvalue.provinceName = item.name;
} else {
this.formvalue.provinceName = "";
this.formvalue.cityName = item.name;
}
this.formvalue.levelType = item.levelType;
this.currentCity = item.name;
// this.getJobList();
this.visible = false;
if (this.formvalue.signType != 0) {
this.getJobListYicai();
} else {
this.getJobList();
}
},
getHotStoreList(item) {
// console.log(item);
this.searchValue = item.storeName;
this.formvalue.aliasName = item.storeName;
this.isdownHotStoreShow = false;
// this.formvalue.hotStoreId = item.storeId;
this.getJobList();
},
resetResult() {
this.formvalue.cityName = "";
this.formvalue.levelType = "";
this.formvalue.hotStoreId = "";
this.currentCity = "全国";
// console.log(this.formvalue);
// this.getJobList();
if (this.formvalue.signType != 0) {
this.getJobListYicai();
} else {
this.getJobList();
}
},
copyText(event, ind) {
// 复制文本内容
var clipboard = new Clipboard(".copy" + ind, {
// .copy 是点击的触发元素
target: function () {
// 通过target指定要复印的节点
return document.querySelector(".copyInfo" + ind); // .copyInfo 是要复制的目标内容
},
});
// console.log(clipboard);
// if(){
// }
clipboard.on("success", () => {
// success 是成功的回调 success => error 可以捕获复制失败的异常信息
// console.log(123);
// console.log(e);
this.$message.success("复制成功");
clipboard.destroy();
});
},
showHotStore() {
// 显示热门企业下拉
// console.log("isinner");
this.isdownHotStoreShow = true;
},
hidedownHotStore() {
// console.log("isdown");
this.isdownHotStoreShow = false;
},
resetCity() {
// 重置当前城市
this.currentCity = "全国";
this.formvalue.cityName = "";
this.formvalue.levelType = "";
this.formvalue.provinceName = "";
// this.getJobList();
if (this.formvalue.signType != 0) {
this.getJobListYicai();
} else {
this.getJobList();
}
},
/**
* 前往详情页
*/
toDetail(item) {
// :to="signType == '' ? '/detail?id=' + item.id + '&page=' + formvalue.pageNum : '/detailYicai?id=' + item.id + '&page=' + formvalue.pageNum"
sessionStorage.setItem("PAGE_TYPE", JSON.stringify({ id: item.id, pageNum: this.formvalue.pageNum, signType: this.signType }));
const routeURL = this.$router.resolve({
name: this.signType == "" ? "Detail" : "DetailYicai",
// query: item.id,
});
window.open(routeURL.href, "_blank");
console.log(item);
},
hideFilterContent() {
setTimeout(() => {
let fileterContent = document.querySelector(".filter-content");
// console.log(fileterContent)
// fileterContent.style.transition = 'all .2s'
if (this.filterStatus == 0) {
console.log("is in the 0 zone");
this.filterStatus = 1;
fileterContent.style.height = "0px";
} else {
console.log("is in the 1 zone");
this.filterStatus = 0;
fileterContent.style.height = this.filterHeight + "px";
}
}, 0);
},
/**
* 获取当前位置信息
*
*
*/
getPosition() {
let that = this;
$.ajax({
url: "https://restapi.amap.com/v3/ip?key=44c6ad3624a5957505fec66f6bdd6110",
// type: "GET",
dataType: "JSONP",
success: function (data) {
console.log(data);
let position = data.rectangle.split(";");
console.log(position);
var lng1;
var lng2;
position.forEach((item, index) => {
if (index == 0) {
lng1 = item.split(",");
} else if (index == 1) {
lng2 = item.split(",");
}
});
that.lng = (+lng1[0] + +lng2[0]) / 2;
that.lat = (+lng1[1] + +lng2[1]) / 2;
localStorage.setItem("POSITION_INFO", JSON.stringify({ lng: that.lng, lat: that.lat, timestamp: new Date().getTime() }));
// lng: '',
// lat: '',
// let code = cityList.find((item) => {
// return item.city == data.city
// }).code
},
});
},
sortList(type) {
console.log(type);
this.formvalue.lng = "";
this.formvalue.lat = "";
if (type == "juli") {
this.formvalue.sortTag = 2;
this.sortNum = 2;
this.sortStr = "距离优先";
this.formvalue.lng = this.lng;
this.formvalue.lat = this.lat;
} else if (type == "fuwufei") {
this.sortNum = 3;
this.sortStr = "佣金优先";
this.formvalue.sortTag = 3;
} else if (type == "price") {
this.sortNum = 1;
this.sortStr = "工价优先";
this.formvalue.sortTag = 1;
}
this.getJobList();
},
/**
* 职教职培报名点击
*/
showRecord(info) {
console.log(info);
this.currentInfo = info;
this.recordShow = true;
// window.open(`https://jinshuju.net/f/ohFOxo?x_field_1=${this.currentInfo.vocationalName}&background=white&banner=show&embedded=true&inner_redirect=false`);
// console.log("this.recordShow", this.recordShow);
// console.log("this.currentInfo", this.currentInfo);
},
},
};
</script>
<style scoped lang="less">
.joblist-container {
background-color: #fff;
}
// .dropdown {
// display: inline-block;
// width: 100px;
// height: 32px;
// line-height: 30px;
// font-size: 16px;
// // border: 1px solid rgba(77, 87, 94, 0.3);
// border-radius: 4px;
// margin-left: 16px;
// border: 1px solid #ff4400;
// background-color: #fff;
// color: rgba(255, 106, 0, 1);
// text-align: center;
// cursor: pointer;
// &:hover {
// color: #fff;
// background-color: #ff791a;
// }
// }
/deep/ .ant-drawer-content {
box-sizing: border-box;
}
// 录单模态框样式
/deep/ .ant-drawer-wrapper-body {
// overflow: none;
// position: relative;
&::-webkit-scrollbar {
/*滚动条整体样式*/
width: 0px; /*高宽分别对应横竖滚动条的尺寸*/
height: 4px;
}
.ant-drawer-header {
position: absolute;
width: 100%;
background-color: #fff;
padding: 12px 24px;
z-index: 999;
.ant-drawer-close {
height: 48px;
width: 48px;
line-height: 48px;
}
}
.ant-drawer-body {
overflow-y: auto;
margin-top: 47px;
}
}
/deep/ .ant-form {
// overflow: auto;
margin-bottom: 50px;
}
/deep/ .ant-form-item {
// margin-bottom: 0;
display: flex;
justify-content: start;
align-items: middle;
margin-top: -8px;
.ant-form-item-label {
line-height: 40px;
// font-weight: bold;
}
.ant-input {
// width: 430px;
height: 40px;
// border: none;
border: 1px solid #dddddd;
box-shadow: none !important;
// background-color: #f6f6f6;
}
.ant-select-selection__rendered,
.ant-select-selection--single,
.ant-select {
height: 40px;
// border: none;
// border: 1px solid #dddddd;
line-height: 40px;
box-shadow: none !important;
border-color: #d9d9d9;
/deep/ .ant-form-item-children {
line-height: 40px;
// .ant-radio-checked {
// }
// display: flex !important;
}
// &:hover {
// border-color: #d9d9d9;
// }
// &:focus {
// border-color: #d9d9d9;
// }
// &:active {
// border-color: #d9d9d9;
// }
}
}
// /deep/ .ant-modal-footer {
// padding: 10px 24px;
// .ant-btn {
// box-shadow: none;
// &:hover {
// color: #ff4400;
// border-color: #ff4400;
// }
// }
// .ant-btn.ant-btn-primary {
// background-color: #ff4400 !important;
// border: none;
// line-height: 32px;
// margin-left: 12px;
// color: #fff;
// box-shadow: none;
// &:hover {
// background-color: #ff8025 !important;
// }
// }
// }
/deep/ .ant-modal-header {
.ant-modal-title {
font-size: 20px;
// font-weight: normal;
}
}
/deep/ .ant-drawer-body {
overflow: auto;
padding: 20px 16px 8px 16px;
}
/deep/ .navigation {
// margin-top: -1px;
width: 100vw;
padding: 25px 0 64px 0;
background-color: #fff;
// border: 1px solid #f6f6f6;
// height: 72px;
// margin-bottom: 10px;
// line-height: 100px;
position: relative;
z-index: 9;
.special-active {
color: rgb(254, 97, 0) !important;
background-color: rgba(255, 106, 0, 0.1) !important;
}
.ant-cascader-picker-focused {
input {
transition: all 0.3s;
}
input::placeholder {
color: rgb(255, 106, 0) !important;
}
i {
color: rgb(255, 106, 0) !important;
}
}
> .w {
// height: 72px;
background-color: #fff;
display: flex;
justify-content: end;
// flex-direction: column;
.icon {
width: 90px;
height: auto;
margin-top: 6px;
}
.searchBox {
position: relative;
// margin-left: 100px;
width: 757px;
margin-right: 256px;
line-height: 44px;
z-index: 10;
.hotStore {
position: absolute;
top: 46px;
left: 0px;
line-height: 24px;
// margin: 8px 0 12px 0;
font-size: 14px;
display: flex;
> span {
width: 80px;
}
ul {
display: flex;
flex-wrap: wrap;
flex: 1;
li {
color: #ff4400;
margin-right: 20px;
overflow: hidden;
cursor: pointer;
&:hover {
color: #ff8f3f;
}
&:active {
color: #e24f00;
}
// &:nth-child(-n + 5) {
// display: none;
// }
}
}
}
.downHotStore {
position: absolute;
width: 685px;
top: 44px;
left: 0;
z-index: 99;
// border-radius: 8px;
background-color: #fff;
border: 1px solid #eee;
div {
padding: 0 12px;
}
li {
height: 42px;
line-height: 42px;
padding: 0 12px;
font-size: 14px;
cursor: pointer;
&:hover {
color: #ff4400;
}
}
li:not(:last-child) {
border-bottom: 1px solid #eee;
}
}
}
.searchinput {
// margin-top: 19px;
// margin-right: 285px;
// width: 685px;
// height: 44px;
&.ant-input-affix-wrapper {
// width: 772px;
position: relative;
.ant-input-prefix {
position: absolute;
height: 86%;
width: 80px;
left: 4px;
top: 50%;
padding: 0 8px;
background-color: #fff;
transform: translateY(-50%);
cursor: pointer;
&::after {
content: "";
position: absolute;
width: 1px;
height: 50%;
background-color: #eee;
right: 0px;
top: 50%;
transform: translateY(-50%);
}
> div {
position: relative;
&:hover .icon-guanbishixin {
opacity: 1;
}
&:hover {
opacity: 0.6;
}
> span {
display: inline-block;
text-align: center;
user-select: none;
width: 60px;
}
i {
display: inline-block;
transform: scale(0.6);
transition: opacity 0.1s;
font-size: 12px;
color: #c5c5c5;
}
.icon-guanbishixin {
position: absolute;
right: 0;
top: 3px;
opacity: 0;
transform: scale(1.4);
}
}
}
.ant-input-suffix {
right: 0px !important;
.ant-input-clear-icon {
margin-right: 20px;
width: 1.5em !important;
height: 1.5em !important;
> svg {
width: 100%;
height: 100%;
}
}
}
}
> .ant-input {
height: 40px;
text-indent: 60px;
background: #fff;
border: 2px solid #ff4400;
border-radius: 6px;
box-shadow: 0px 2px 4px 0px transparent;
font-size: 14px !important;
padding-right: 0;
// border-color: #e9e9e9;
&::placeholder {
// text-indent: 30px;
font-size: 14px !important;
}
&:hover {
border-color: #ff6933;
box-shadow: none;
}
&:focus {
border-color: #ff6933;
}
}
button {
width: 80px;
height: 40px;
color: white;
background: #ff4400;
border-color: #ff4400;
border: none;
// border-radius: 999px;
font-size: 16px;
box-shadow: none;
cursor: pointer;
outline: none;
&:hover {
background-color: rgba(255, 68, 0, 0.8);
}
// &:focus {
// border: none;
// }
}
}
.specialbox {
position: absolute;
border-bottom: 1px solid #f6f6f6;
box-shadow: 0 8px 8px rgba(0, 0, 0, 0.15);
// display: ;
transition: all 0.4s;
left: 0;
top: 45px;
width: 100vw;
background-color: #fff;
z-index: 99;
ul {
overflow: hidden;
padding: 20px 0 8px 0;
li {
padding: 4px 16px;
margin: 0px 16px 12px 0;
cursor: pointer;
float: left;
background: rgba(216, 216, 216, 0.3);
// border-radius: 15px;
font-size: 14px;
color: #4d575e;
line-height: 22px;
&:hover {
color: rgb(254, 97, 0);
background-color: rgba(255, 106, 0, 0.1);
}
}
}
}
.filterbox {
display: flex;
justify-content: flex-start;
min-width: 664px;
> li {
// margin-top: 22px;
font-size: 14px;
color: #4d575e;
margin-right: 4px;
line-height: 44px;
.ant-cascader-picker {
width: auto;
position: relative;
transform: translateY(-2px);
.anticon-close-circle {
font-size: 14px;
}
.icon-xiala {
font-size: 12px;
transform: translateY(1px) scale(0.5);
}
.ant-cascader-input {
width: 60px;
height: 40px;
// line-height: 40px;
// margin-top: -5px;
// max-width: 150px !important;
border: none;
padding: 0;
// margin-bottom: 6px;
box-shadow: none;
&::placeholder {
// width: auto;
// text-indent: 20px;
color: #4d575ecc;
// line-height: 20px;
font-size: 14px;
}
}
span {
width: 60px;
// max-width: 150px;
color: rgb(255, 106, 0) !important;
font-size: 14px;
padding: 0 20px 0 0;
text-align: left;
// line-height: 22px !important;
}
}
}
> li:not(.ageinputbox) {
padding-top: 4px;
}
.ageinputbox {
position: relative;
&:hover .confirm {
display: block;
}
.ageinput.age {
position: relative;
z-index: 3;
padding: 0;
padding-top: 8px;
margin: 0 5px;
height: 32px;
width: 90px;
text-indent: 10px;
border-color: #e9e9e9;
&:hover {
input {
border-color: #ff4400;
}
}
input {
// border-radius: 999px;
padding-right: unset;
&::placeholder {
// text-indent: 30px;
font-size: 14px !important;
}
&:hover {
border-color: #ff4400;
box-shadow: none;
}
&:focus {
border-color: #ff4400;
box-shadow: none;
}
}
.ant-input-suffix {
right: 0px;
top: 76%;
}
}
.confirm {
position: absolute;
display: none;
width: 160px;
height: 48px;
line-height: 44px;
left: 8px;
top: 0;
z-index: 1;
border: 1px solid #eee;
background-color: #fff;
box-shadow: 0 5px 10px 5px #eee;
button {
position: relative;
width: 44px;
height: 28px;
line-height: 26px;
top: 50%;
transform: translateY(-50%);
margin-right: 8px;
float: right;
background-color: rgba(255, 68, 0, 0.9);
border: none;
color: #fff;
&:hover {
background-color: rgba(255, 68, 0, 0.75);
}
&:active {
background-color: rgba(255, 68, 0, 1);
}
}
}
}
> li:first-child {
> div {
display: flex;
// line-height: 40px;
margin-top: -2px;
margin-right: 12px;
cursor: pointer;
span {
margin-right: 12px;
}
}
}
.claerfilter {
position: relative;
color: #8c8d8f;
font-size: 14px;
margin: 0px 10px 0 10px;
// color: rgba(78, 88, 95, 0.8);
transform: translateY(-1px);
// margin-left: 25px;
a {
display: inline-block;
// margin-top: 4px;
transition: all 0.5s;
// line-height: 14px;
&:active {
color: #ff6a00;
transition: none;
}
}
}
}
.hotTag {
display: flex;
line-height: 44px;
margin-left: 18px;
div {
font-size: 14px;
}
li {
margin-right: 12px;
color: #ff6a00;
font-size: 14px;
cursor: pointer;
}
> .active {
text-decoration: underline;
}
}
}
}
/deep/ #maincontent {
display: flex;
justify-content: space-between;
margin-top: 10px;
.maincontentleft {
width: 944px;
margin-right: 16px;
text-align: left;
position: relative;
.tabBar {
position: absolute;
display: flex;
justify-content: start;
align-items: center;
width: 100%;
top: -40px;
text-align: center;
line-height: 40px;
border-bottom: 2px solid #f40;
z-index: 999;
font-size: 16px;
.tabSubset {
width: 96px;
height: 40px;
border-radius: 6px 6px 0px 0px;
cursor: pointer;
&.active {
background-color: #f40;
color: #fff;
}
}
}
.filter {
position: relative;
width: 100%;
top: -10px;
margin-top: 10px;
margin-bottom: 6px;
box-sizing: border-box;
border: 1px solid #ededed;
border-radius: 6px;
// background-color: pink;
padding: 0 12px;
.filter-title {
position: absolute;
display: flex;
align-items: center;
justify-content: space-between;
font-size: 14px;
width: 100%;
height: 24px;
top: -34px;
left: 0;
padding-left: 20px;
z-index: 10;
span i {
font-size: 12px;
}
.toggleFilter {
height: 24px;
padding: 0px 2px 0 4px;
line-height: 22px;
border: 1px solid #ededed;
background-color: #f5f5f5;
border-radius: 4px;
color: #666;
cursor: pointer;
user-select: none;
i {
// line-height: 28px;
height: 100%;
line-height: 22px;
display: inline-block;
transform-origin: center;
transform: scale(0.6);
margin-left: 2px;
}
}
.sort {
width: 86px;
height: 22px;
margin-left: 16px;
display: inline-block;
text-align: center;
padding: 0px 2px 0 4px;
line-height: 20px;
border: 1px solid #ededed;
background-color: #f5f5f5;
border-radius: 4px;
color: #666;
cursor: pointer;
user-select: none;
}
> span:first-child {
display: flex;
align-items: center;
justify-content: start;
line-height: 22px;
> span:first-child {
margin-right: 14px;
i {
margin-left: 4px;
}
}
}
.filter-show {
display: flex;
line-height: 1;
color: #666;
> span:nth-child(-n + 6) {
display: inline-block;
}
> span {
display: none;
height: 24px;
line-height: 22px;
padding: 0 2px 0 4px;
background-color: #f5f5f5;
border: 1px solid #ededed;
margin-right: 8px;
user-select: none;
border-radius: 4px;
cursor: pointer;
&:hover {
border-color: #f40;
background: #fff3ef;
color: #f40;
i {
color: #ff4400;
}
}
i {
font-size: 14px;
margin-left: 4px;
color: #666;
}
}
}
}
.filter-content {
overflow: hidden;
// background-color: skyblue;
dl {
display: flex;
justify-content: start;
padding: 8px 8px 4px 8px;
font-size: 14px;
line-height: 1.5;
user-select: none;
.special-active {
color: #ff4400 !important;
// background-color: rgba(255, 106, 0, 0.1) !important;
}
&:first-child {
padding-bottom: 7px;
dd {
> i {
> span {
color: #333;
&:hover {
color: #ff4400;
}
}
}
}
}
&:not(:last-child) {
border-bottom: 1px dotted #ededed;
}
&:not(:first-child) {
dd {
display: flex;
justify-content: start;
flex-wrap: wrap;
> span {
margin-bottom: 4px;
color: #333;
cursor: pointer;
&:hover {
color: #ff4400;
}
}
}
}
dt {
width: 74px;
margin-right: 16px;
text-align: left;
color: #888;
}
dd {
flex: 1;
.ageinputbox {
position: relative;
display: inline-block;
margin-right: 16px;
> span:nth-of-type(2) {
position: relative;
z-index: 2;
}
&:hover .confirm {
display: block;
}
.ageinput:not(.age) {
position: relative;
z-index: 3;
padding: 0;
// margin: 0 5px;
height: 26px;
width: 80px;
border-color: #ddd;
.ant-input-prefix {
left: 3px;
top: 51%;
}
&:hover {
input {
border-color: #ff4400;
}
}
input {
border-radius: 4px;
text-indent: 20px;
height: 26px;
padding: 0;
padding-right: unset;
border-color: #ddd;
&::placeholder {
// text-indent: 30px;
font-size: 14px !important;
}
&:hover {
border-color: #ff4400;
box-shadow: none;
}
&:focus {
border-color: #ff4400;
box-shadow: none;
}
}
.ant-input-suffix {
right: 3px;
}
}
.ageinput {
position: relative;
z-index: 3;
padding: 0;
// margin: 0 5px;
height: 26px;
width: 80px;
border-color: #ddd;
.ant-input-prefix {
left: 3px;
top: 51%;
}
&:hover {
input {
border-color: #ff4400;
}
}
input {
border-radius: 4px;
text-indent: 10px;
height: 26px;
padding: 0;
padding-right: unset;
border-color: #ddd;
&::placeholder {
// text-indent: 30px;
font-size: 14px !important;
}
&:hover {
border-color: #ff4400;
box-shadow: none;
}
&:focus {
border-color: #ff4400;
box-shadow: none;
}
}
.ant-input-suffix {
right: 3px;
}
}
.confirm {
position: absolute;
display: none;
width: 254px;
height: 46px;
line-height: 46px;
left: -8px;
top: -11px;
z-index: 1;
border: 1px solid #eee;
border-radius: 6px;
background-color: #fff;
box-shadow: 0 0px 10px 5px #eee;
button {
position: relative;
width: 44px;
height: 26px;
line-height: 26px;
top: 52%;
transform: translateY(-50%);
margin-right: 8px;
float: right;
background-color: rgba(255, 68, 0, 0.9);
border-radius: 4px;
border: none;
color: #fff;
&:hover {
background-color: rgba(255, 68, 0, 0.75);
}
&:active {
background-color: rgba(255, 68, 0, 1);
}
}
}
}
> span {
margin-right: 40px;
> span {
cursor: pointer;
margin-right: 40px;
}
}
}
}
.price {
dd i {
span {
cursor: pointer;
margin-right: 40px;
}
}
}
}
}
.nodata {
overflow: hidden;
height: 230px;
padding-top: 30px;
text-align: center;
background-color: #fff;
// border-radius: 5px;
margin: 0 auto;
color: #00000066;
margin-bottom: 20px;
p {
position: relative;
transform: translateY(35px);
}
}
.subset {
display: flex;
justify-content: space-between;
border: 1px solid #ededed;
// width: 944px;
// height: 212px;
padding: 16px;
margin-bottom: 16px;
background: #ffffff;
border-radius: 6px;
transition: all 0.2s;
&:hover {
// position: relative;
box-shadow: 3px 3px 20px 0px rgba(77, 87, 94, 0.1);
// transform: translateY(-0.5px);
}
.subsetleft {
display: flex;
.imgbox {
width: 156px;
height: 156px;
margin-right: 16px;
position: relative;
overflow: hidden;
img {
position: absolute;
top: 50%;
left: 50%;
transform: translateX(-50%) translateY(-50%);
// width: 100%;
height: 100%;
}
.default_avatar {
width: 156px;
height: 156px;
display: flex;
align-items: center;
text-align: center;
background-color: #d85043;
color: #fff;
font-size: 44px;
line-height: 1.3;
}
}
.jobinfobox {
.jobname {
// margin: 12px 0;
font-size: 18px;
font-weight: 600;
text-align: left;
color: #333;
line-height: 26px;
&:hover {
color: #ff4400;
}
}
.jobinfo {
margin-top: 8px;
// opacity: 0.5;
font-size: 14px;
font-weight: 400;
text-align: left;
color: #999;
line-height: 20px;
}
.jobtag {
display: flex;
margin-top: 10px;
align-items: center;
text-align: left;
// span:first-child {
// color: #ff4400;
// background: rgba(254, 97, 0, 0.1);
// }
i {
margin-right: 8px;
color: #f40;
font-size: 20px;
}
span {
height: 20px;
margin-right: 8px;
line-height: 1;
font-size: 14px;
padding: 2px 8px;
background: rgba(51, 51, 51, 0.06);
border-radius: 2px;
}
.hotTag {
background-color: #f40;
color: #fff;
font-size: 12px;
padding: 4px;
i {
margin-right: 4px;
color: #fff;
}
}
}
.jobpricemonth {
margin-top: 10px;
font-size: 14px;
font-weight: 400;
text-align: left;
color: #333;
line-height: 20px;
}
.jobpricehour {
margin-top: 8px;
font-size: 14px;
font-weight: normal;
text-align: left;
color: #ff4400;
// line-height: 24px;
font-weight: 600;
span {
vertical-align: baseline;
font-size: 22px;
line-height: 28px;
}
i {
font-size: 18px;
line-height: 28px;
}
}
}
}
.subsetright {
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: flex-end;
.topContainer {
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: flex-end;
margin-top: -8px;
}
.updateTime {
line-height: 1;
font-size: 14px;
color: #999;
}
.topbox {
width: 100px;
height: 48px;
margin-top: 8px;
overflow: hidden;
text-align: center;
background: rgba(255, 106, 0, 0.1);
// border-radius: 4px;
border-radius: 4px;
line-height: 26px;
div {
// font-weight: normal;
font-size: 16px;
span {
font-size: 20px;
// font-weight: normal;
}
}
div:first-child {
height: 22px;
background: #ff4400;
line-height: 21px;
font-size: 14px;
color: #ffffff;
border: 1px solid #ff4400;
// border-radius: 4px 4px 0px 0px;
}
div:last-child {
font-weight: normal;
background-color: #fff3ef;
color: #ff4400 !important;
}
}
.bottombox1 {
display: flex;
align-items: center;
.jobDesp {
border: 1px solid #ff4400;
background-color: #fff;
color: #ff4400;
transition: none;
box-shadow: none;
text-shadow: none;
cursor: pointer;
&:hover {
color: #fff;
background-color: #ff4400;
}
}
button {
min-width: 80px;
height: 28px;
font-size: 16px;
// border: 1px solid rgba(77, 87, 94, 0.3);
// border-radius: 4px;
}
> a {
button:first-child {
border: 1px solid #d9d9d9;
// border-radius: 4px;
color: #4d575e;
background-color: #fff;
cursor: pointer;
&:hover {
color: #ff4400;
border-color: #ff4400;
background-color: #fff;
}
}
}
.apply {
margin-left: 16px;
border: 1px solid #ff4400;
padding: 0 16px;
background-color: #fff;
color: #ff4400;
cursor: pointer;
&:hover {
color: #fff;
background-color: #ff4400;
}
}
}
}
.norecruitment {
background-color: #f5f5f5;
border: 1px solid #ccc;
margin-left: 16px;
color: #ccc;
}
}
// .pagecontainer {
// display: flex;
// justify-content: center;
// text-align: center;
// margin-bottom: 30px;
// .ant-pagination-options-quick-jumper {
// margin-left: 10px;
// font-size: 16px;
// }
// .ant-pagination-disabled {
// a:hover {
// color: #c5c5c5 !important;
// }
// }
// .ant-pagination-next,
// .ant-pagination-prev {
// a:hover {
// color: #ff4400;
// }
// }
// input[type="text"] {
// box-shadow: none;
// &:focus {
// border: 1px solid #ff4400;
// }
// &:hover {
// border: 1px solid #ff4400;
// }
// }
// .ant-pagination-item {
// border: none;
// a:hover {
// color: #ff4400;
// }
// }
// .ant-pagination-item-active {
// background: #ff4400;
// a {
// color: white;
// }
// a:hover {
// color: white;
// }
// }
// .ant-pagination-item-link {
// border: none;
// }
// }
}
.maincontentright {
width: 240px;
position: relative;
top: -42px;
> div {
margin-bottom: 16px;
border: 1px solid #ededed;
border-radius: 6px;
}
.dateinfo {
text-align: center;
overflow: hidden;
border-radius: 6px;
border: none;
position: relative;
padding-bottom: 10px;
background-color: #fff3ef;
.bottombox {
position: relative;
margin-top: 0;
margin-bottom: 0;
// padding-top: 10px;
height: 44px;
padding: 0;
line-height: 44px;
font-size: 16px;
font-weight: 600;
border-bottom: none;
color: #fff;
background-color: #ff4400;
z-index: 10;
&::after {
left: 0;
// display: none;
}
}
}
.hotphone {
overflow: hidden;
position: relative;
width: 240px;
height: 200px;
// height: 114px;
// padding: 0 20px 20px 20px;
border-radius: 6px;
background-color: #fff;
text-align: center;
.bottombox {
font-size: 16px;
font-weight: 600;
}
}
.relationme {
overflow: hidden;
position: relative;
width: 240px;
height: 160px;
padding: 0 20px 20px;
background: #ffffff;
text-align: center;
button {
position: absolute;
width: 120px;
height: 32px;
margin-top: 16px;
font-size: 16px;
line-height: 20px;
// border-radius: 999px;
border: 0;
background-color: #ff4400;
color: #fff;
top: 55%;
left: 50%;
transform: translateX(-50%) translateY(-50%);
}
}
}
}
.sortClass {
.sortMenu {
text-align: center;
height: 46px;
line-height: 46px;
}
.ant-dropdown-menu {
padding: 0;
}
.ant-dropdown-menu-item {
width: 140px;
padding: 0 16px;
&:not(:last-child) {
.sortMenu {
border-bottom: 1px solid #eee;
}
}
&:hover {
background-color: #fff3ef;
}
}
.active.sortMenu {
color: #ff4400;
}
}
.cityModal {
.inputBox {
display: flex;
}
/deep/ .ant-input-affix-wrapper {
flex: 1;
margin-right: 12px;
.ant-input {
&:hover {
border-color: #ff4400;
}
&:focus {
border-color: #ff4400;
box-shadow: none;
}
}
}
.ant-btn {
&:hover {
border-color: #ff4400;
color: #ff4400;
}
&:active {
border-color: #ee3f00;
color: #ee3f00;
}
&:focus {
border-color: #ff4400;
color: #ff4400;
}
}
button {
width: 60px;
height: 32px;
}
.firstList {
display: flex;
justify-content: start;
margin: 30px 0;
li {
width: 16.6%;
text-align: center;
color: #666;
div {
width: 60%;
padding-bottom: 5px;
cursor: pointer;
&:hover {
color: #ff4400;
}
}
.active {
color: #ff4400;
// position: relative;
// &::after {
// content:'';
// display: block;
// position: absolute;
// height: 2px;
// width: 50px;
// bottom: 0;
// left: 0;
// background-color: #ff4400;
// }
border-bottom: 2px solid #ff4400;
}
}
}
.currentCity {
display: flex;
flex-wrap: wrap;
li {
width: 16.6%;
margin-bottom: 20px;
text-align: center;
cursor: pointer;
div {
width: 60%;
&:hover {
color: #ff4400;
}
}
}
}
}
p {
margin-bottom: 0;
}
</style>