cyl/dev
wangxia 4 years ago
parent c83a61d491
commit 9a097a3985

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

@ -3,8 +3,8 @@
"version": "0.1.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build --report",
"serve": "vue-cli-service serve --compress",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},
"dependencies": {

@ -3,6 +3,7 @@
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="Content-type" content="application/javascript; charset=UTF-8"/>
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<!-- <title><%= htmlWebpackPlugin.options.title %></title> -->

@ -106,7 +106,9 @@
<!-- 面包屑 -->
<a-breadcrumb class="w">
<a-breadcrumb-item href="">
<router-link to="/main"><a-icon type="home" /></router-link>
<router-link to="/main">
<a-icon type="home" />
</router-link>
</a-breadcrumb-item>
<a-breadcrumb-item href="">
<a @click="toList">
@ -121,43 +123,17 @@
<div class="maincontent w">
<div class="maincontentleft">
<div class="subset">
<a-skeleton
avatar
:loading="skeletonshow"
v-if="skeletonshow"
:paragraph="{ rows: 4 }"
/>
<div class="subsetleft" v-else>
<a-skeleton avatar active class="skeleton1" v-show="skeletonshow" :paragraph="{ rows: 4 }" />
<div class="subsetleft" v-show="!skeletonshow">
<div class="imgbox">
<a-carousel
arrows
:autoplay="true"
effect="fade"
:dots="true"
ref="scrollimg"
v-if="storeImage.length !== 0"
>
<div
slot="prevArrow"
class="custom-slick-arrow"
style="left: 5px; z-index: 99"
>
<a-carousel arrows :autoplay="true" effect="fade" :dots="true" ref="scrollimg" v-if="storeImage.length !== 0">
<div slot="prevArrow" class="custom-slick-arrow" style="left: 5px; z-index: 99">
<a-icon type="left-circle" />
</div>
<div
slot="nextArrow"
class="custom-slick-arrow"
style="right: 5px; z-index: 99"
>
<div slot="nextArrow" class="custom-slick-arrow" style="right: 5px; z-index: 99">
<a-icon type="right-circle" />
</div>
<img
v-for="(item, index) in storeImage"
:key="index"
:src="item"
alt=""
/>
<img v-for="(item, index) in storeImage" :key="index" :src="item" alt="" />
</a-carousel>
<img v-else src="../../../static/img/nopicture.png" alt="" />
</div>
@ -170,52 +146,30 @@
</div>
<div class="jobtag">
<!-- <span>返费</span> -->
<a-tag
:color="labelColor[index % labelColor.length]"
v-for="(item, index) in jobDetail.jobRequestLabelNames"
:key="index"
>{{ item }}</a-tag
>
<a-tag :color="labelColor[index % labelColor.length]" v-for="(item, index) in jobDetail.jobRequestLabelNames" :key="index">{{ item }}</a-tag>
</div>
<div
style="height: 27px"
v-if="!jobDetail.jobRequestLabelNames"
class="jobtag"
>
<div style="height: 27px" v-if="!jobDetail.jobRequestLabelNames" class="jobtag">
<a-tag :color="labelColor[1]">暂无要求</a-tag>
</div>
<div class="jobtag1">
<!-- <span>返费</span> -->
<a-tag
v-for="(item, index) in jobDetail.jobSpecialLabelNames"
:key="index"
>{{ item }}</a-tag
>
<a-tag v-for="(item, index) in jobDetail.jobSpecialLabelNames" :key="index">{{ item }}</a-tag>
</div>
<div
style="height: 27px"
v-if="!jobDetail.jobSpecialLabelNames"
class="jobtag"
>
<div style="height: 27px" v-if="!jobDetail.jobSpecialLabelNames" class="jobtag">
<a-tag style="backgroundcolor: #f5f5f5">暂无特色</a-tag>
</div>
<div
style="
<div style="
display: flex;
align-items: center;
height: 26px;
margin-top: 16px;
"
>
<div
class="jobpricehour"
v-html="
">
<div class="jobpricehour" v-html="
getSalaryClassifyValue(
jobDetail.salaryClassify,
jobDetail.salaryClassifyValue
)
"
>
">
<!-- <template v-if="jobDetail.hourlyPay"
><span>{{ jobDetail.hourlyPay }}</span
>/小时</template
@ -227,9 +181,7 @@
</div>
<span style="font-size: 16px">&nbsp;&nbsp;|&nbsp;&nbsp;</span>
<div class="jobpricemonth">
<span>{{ jobDetail.minMonthlyPay }}</span
>-<span>{{ jobDetail.maxMonthlyPay }}</span
>/
<span>{{ jobDetail.minMonthlyPay }}</span>-<span>{{ jobDetail.maxMonthlyPay }}</span>/
</div>
</div>
@ -262,9 +214,12 @@
<a-button type="primary" class="jobDesp">职位详单</a-button>
</a-popover> -->
<button class="dropdown bottombox1" @click="torecord()">
<button class="dropdown bottombox1" @click="torecord()" v-if="jobDetail.recruitment == '1'">
报名
</button>
<button class="norecruitment bottombox1" v-else>
暂时停招
</button>
</div>
</div>
</div>
@ -275,31 +230,16 @@
<div class="jobinformationbox">
<h1>
<div class="infotitle">
<span
@click="tabchange = 1"
:class="tabchange === 1 ? 'active' : ''"
>基本信息</span
>
<span
@click="tabchange = 0"
:class="tabchange !== 1 ? 'active' : ''"
>财务结算</span
>
<span @click="tabchange = 1" :class="tabchange === 1 ? 'active' : ''">基本信息</span>
<span @click="tabchange = 0" :class="tabchange !== 1 ? 'active' : ''">财务结算</span>
</div>
<!-- <div class="copy" @click="xiangdanVisible = true">通告</div> -->
<a-modal
v-model="xiangdanVisible"
title="通告"
class="xiangdan"
:footer="null"
@ok="handleOk"
>
<a-modal v-model="xiangdanVisible" title="通告" class="xiangdan" :footer="null" @ok="handleOk">
<!-- <template slot="content" class="jobDesp_content"> -->
<div class="copy" @click="copyText($event)"></div>
<span v-if="jobDetail.jobDesp" class="copyInfo">{{
jobDetail.jobDesp
}}</span
><span v-else></span>
}}</span><span v-else></span>
<!-- </template> -->
</a-modal>
</h1>
@ -314,12 +254,7 @@
<div class="baseInfoContent" v-if="tabchange === 1">
<div class="pay" id="pay">
<div class="mb12 mt20">薪资待遇</div>
<a-descriptions
bordered
size="small"
:column="1"
class="leftDesc boubleLevel"
>
<a-descriptions bordered size="small" :column="1" class="leftDesc boubleLevel">
<!-- <a-descriptions-item class="test1">
<span slot="label" class="fw500">工价</span>
<span>{{ jobDetail.calculationUnit }}</span>
@ -382,26 +317,16 @@
<!-- 岗位要求 -->
<div class="required" id="required">
<div class="mb12 mt20">面试要求</div>
<a-descriptions
bordered
size="small"
:column="1"
class="leftDesc"
>
<a-descriptions bordered size="small" :column="1" class="leftDesc">
<a-descriptions-item class="test1">
<span slot="label" class="fw500">性别年龄</span>
<span>
<span class="man" v-if="jobDetail.minAgeMan"
> {{ jobDetail.minAgeMan }}
<span class="man" v-if="jobDetail.minAgeMan"> {{ jobDetail.minAgeMan }}
<span v-if="jobDetail.maxAgeMan">{{
"- " + jobDetail.maxAgeMan
}}</span
> </span
><span class="woman" v-if="jobDetail.minAgeWoman">
}}</span> </span><span class="woman" v-if="jobDetail.minAgeWoman">
{{ jobDetail.minAgeWoman }}
<span> {{ "- " + jobDetail.maxAgeWoman }}</span
></span
>
<span> {{ "- " + jobDetail.maxAgeWoman }}</span></span>
</span>
</a-descriptions-item>
<a-descriptions-item>
@ -435,12 +360,7 @@
<!-- 基本信息 -->
<div class=" " id="contentspecial">
<div class="mb12 mt20">岗位说明</div>
<a-descriptions
bordered
size="small"
:column="1"
class="leftDesc"
>
<a-descriptions bordered size="small" :column="1" class="leftDesc">
<a-descriptions-item class="test1">
<span slot="label" class="fw500">工作内容</span>
<span>{{ jobDetail.workContent || "-" }}</span>
@ -485,8 +405,7 @@
<div>吃饭</div>
<ul>
<li>
<span>吃饭</span
><span>{{ jobDetail.workingLunch || "-" }}</span>
<span>吃饭</span><span>{{ jobDetail.workingLunch || "-" }}</span>
</li>
<!-- <li>
<span>餐补</span
@ -504,8 +423,7 @@
<span>民族窗口</span><span>{{ jobDetail.muslim }}</span>
</li> -->
<li>
<span>补充说明</span
><span style="white-space: break-spaces">{{
<span>补充说明</span><span style="white-space: break-spaces">{{
jobDetail.workingLunchDesp || "-"
}}</span>
</li>
@ -515,12 +433,10 @@
<div>住宿</div>
<ul>
<li>
<span>住宿</span
><span>{{ jobDetail.dormitory || "-" }}</span>
<span>住宿</span><span>{{ jobDetail.dormitory || "-" }}</span>
</li>
<li>
<span>宿舍设施</span
><span>{{ jobDetail.dormitoryFacilities || "-" }}</span>
<span>宿舍设施</span><span>{{ jobDetail.dormitoryFacilities || "-" }}</span>
</li>
<!-- <li>
<span>宿舍距离</span
@ -541,15 +457,13 @@
><span>{{ jobDetail.dormitoryFacilities }}</span>
</li> -->
<li>
<span>水电费</span
><span>{{ jobDetail.waterAndElec || "-" }}</span>
<span>水电费</span><span>{{ jobDetail.waterAndElec || "-" }}</span>
</li>
<!-- <li>
<span>班车</span><span>{{ jobDetail.regularBus }}</span>
</li> -->
<li>
<span>补充说明</span
><span style="white-space: break-spaces">{{
<span>补充说明</span><span style="white-space: break-spaces">{{
jobDetail.dormitoryDesp || "-"
}}</span>
</li>
@ -621,13 +535,7 @@
{{ jobDetail.agencyStatement || "-" }}
</div>
</div>
<a-descriptions
bordered
size="small"
:column="1"
class="leftDesc mt20"
style="width: 900px"
>
<a-descriptions bordered size="small" :column="1" class="leftDesc mt20" style="width: 900px">
<a-descriptions-item class="test1">
<span slot="label" class="fw500">代理利润</span>
<span>{{ jobDetail.agencyProfit || "-" }}</span>
@ -698,7 +606,10 @@
<p>0371-6611 3723</p>
</div>
</div> -->
<div class="mask" v-if="!(jobDetail.recruitment == '1')"></div>
</div>
</template>
<script>
import { getJobDetailApi } from "../../api/job";
@ -1305,6 +1216,17 @@ export default {
// background-color: #ff791a;
// }
// }
.norecruitment {
border: 1px solid #ccc;
margin-left: 16px;
color: #ccc;
cursor: default;
&:hover {
border: 1px solid #ccc;
background-color: #fff;
color: #ccc;
}
}
}
}
}
@ -1692,4 +1614,14 @@ export default {
}
}
}
.mask {
position: fixed;
width: 100vw;
height: 100vh;
background-color: rgba(0, 0, 0, 0.06);
top: 0;
left: 0;
z-index: 999;
pointer-events: none;
}
</style>

@ -23,35 +23,16 @@
>
</a-modal> -->
<!-- 城市的弹出框 -->
<a-modal
class="cityModal"
transitionName=""
v-model="visible"
width="680px"
@cancel="cityModalClose"
title="请选择城市"
:footer="null"
>
<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>
<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)]"
>
<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>
@ -68,10 +49,9 @@
<div class="w" id="navigation">
<span>
<!-- <i class="iconfont icon-yigezhuanmenfuwudailidepingtai"></i> -->
<router-link to="/main"
><svg class="icon" aria-hidden="true">
<use xlink:href="#icon-yishoudanlogo"></use></svg
></router-link>
<router-link to="/main"><svg class="icon" aria-hidden="true">
<use xlink:href="#icon-yishoudanlogo"></use>
</svg></router-link>
</span>
<!-- 特色筛选的列表盒子 -->
<!-- <div v-if="isspecialboxshow" class="specialbox" @click.stop="">
@ -206,39 +186,10 @@
</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"
@focus.stop=""
tabindex="0"
@click.stop="visible = true"
>
<span>{{ currentCity }}</span
><i class="iconfont icon-sousuoxiala"></i
><i
class="iconfont icon-guanbishixin"
v-show="currentCity != '全国'"
@click.stop="resetCity"
></i>
<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" @focus.stop="" tabindex="0" @click.stop="visible = true">
<span>{{ currentCity }}</span><i class="iconfont icon-sousuoxiala"></i><i class="iconfont icon-guanbishixin" v-show="currentCity != '全国'" @click.stop="resetCity"></i>
</div>
<button slot="suffix" @click="onSearch" style="">搜索</button>
</a-input>
@ -252,11 +203,7 @@
<div class="hotStore">
<!-- <span>热门企业</span> -->
<ul>
<li
v-for="(item, index) in hotStoreList"
:key="index"
@click="getHotStoreList(item)"
>
<li v-for="(item, index) in hotStoreList" :key="index" @click="getHotStoreList(item)">
{{ item.storeName }}
</li>
<!-- <li @click="resetResult" style="color: #aaa">重置</li> -->
@ -265,14 +212,9 @@
</div>
<ul class="hotTag" style="display: none">
<div>热门</div>
<li
v-for="(item, index) in specialHotTag"
:key="index"
@click="specialclick(index, item)"
:class="{
<li v-for="(item, index) in specialHotTag" :key="index" @click="specialclick(index, item)" :class="{
active: filterObj.specialactive.indexOf(item) > -1,
}"
>
}">
{{ item.name }}
</li>
</ul>
@ -291,73 +233,33 @@
<div class="w" id="maincontent">
<div class="maincontentleft" style="padding-top: 50px">
<div class="tabBar" @click="changeTab($event)">
<div
class="tabSubset"
:class="{ active: signType == '' }"
data-type="0"
>
<div class="tabSubset" :class="{ active: signType == '' }" data-type="0">
全部
</div>
<div
class="tabSubset"
:class="{ active: signType == 1 }"
data-type="1"
>
<div class="tabSubset" :class="{ active: signType == 1 }" data-type="1">
自营
</div>
<div
class="tabSubset"
:class="{ active: signType == 2 }"
data-type="2"
>
<div class="tabSubset" :class="{ active: signType == 2 }" data-type="2">
三方
</div>
</div>
<div class="filter" :class="[filterStatus == 0 ? '' : 'nobd']" style="">
<div
class="filter-title"
:style="{ top: filterStatus == 0 ? '-32px' : '-21px' }"
>
<span
><span>所有筛选<i class="iconfont icon-youjiantou"></i></span>
<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, 'special', item)"
v-for="(item, index) in filterObj.specialactive"
:key="index"
>{{ item.name }}<i class="iconfont icon-guanbi2"></i
></span>
<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, '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 @click="hideFilterContent"
>{{ filterStatus == 0 ? "收起筛选" : "展开筛选"
}}<i
class="iconfont icon-sousuoxiala"
:style="{
<span @click="hideFilterContent">{{ filterStatus == 0 ? "" : ""
}}<i class="iconfont icon-sousuoxiala" :style="{
transform:
filterStatus == 0 ? 'rotate(180deg) scale(.6)' : '',
}"
></i
></span>
}"></i></span>
</div>
<div class="filter-content" style="transition: height 0.2s">
<dl class="price">
@ -365,156 +267,86 @@
<dd>
<div class="ageinputbox">
<!-- <div> -->
<a-input
class="ageinput"
v-model="minMonthlyPay"
type="text"
allow-clear
prefix="¥"
@input="resetAgeSearch"
@click.stop="
<a-input class="ageinput" v-model="minMonthlyPay" type="text" allow-clear prefix="¥" @input="resetAgeSearch" @click.stop="
() => {
return false;
}
"
></a-input
><span class="middle-line"> - </span
><a-input
class="ageinput"
v-model="maxMonthlyPay"
type="text"
allow-clear
prefix="¥"
@input="resetAgeSearch"
@click.stop="
"></a-input><span class="middle-line"> - </span>
<a-input class="ageinput" v-model="maxMonthlyPay" type="text" allow-clear prefix="¥" @input="resetAgeSearch" @click.stop="
() => {
return false;
}
"
></a-input>
"></a-input>
<div class="confirm">
<button @click="searchPrice"></button>
</div>
<!-- </div> -->
</div>
<i @click="searchPrice"
><span
:style="{
<i @click="searchPrice"><span :style="{
color: filterObj.price == '3000-4000' ? '#ff4400' : '',
}"
>3000-4000</span
>
<span
:style="{
}">3000-4000</span>
<span :style="{
color: filterObj.price == '4000-5000' ? '#ff4400' : '',
}"
>4000-5000</span
>
<span
:style="{
}">4000-5000</span>
<span :style="{
color: filterObj.price == '5000-6000' ? '#ff4400' : '',
}"
>5000-6000</span
>
<span
:style="{
}">5000-6000</span>
<span :style="{
color: filterObj.price == '6000-7000' ? '#ff4400' : '',
}"
>6000-7000</span
></i
>
}">6000-7000</span></i>
</dd>
</dl>
<dl>
<dt>性别</dt>
<dd @click="searchGender">
<span
:style="{ color: filterObj.gender == '男' ? '#ff4400' : '' }"
></span
><span
:style="{ color: filterObj.gender == '女' ? '#ff4400' : '' }"
></span
><span
:style="{
<span :style="{ color: filterObj.gender == '男' ? '#ff4400' : '' }"></span><span :style="{ color: filterObj.gender == '女' ? '#ff4400' : '' }"></span><span :style="{
color: filterObj.gender == '男女不限' ? '#ff4400' : '',
}"
>男女不限</span
>
}">男女不限</span>
</dd>
</dl>
<dl>
<dt>薪资福利</dt>
<dd>
<span
v-for="(item, index) in tagArray1"
:key="index"
:class="{
<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
>
}" @click.stop="specialclick(index, item)">{{ item.name }}</span>
</dd>
</dl>
<dl>
<dt>宿舍保障</dt>
<dd>
<span
v-for="(item, index) in tagArray3"
:key="index"
:class="{
<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
>
}" @click.stop="specialclick(index, item)">{{ item.name }}</span>
</dd>
</dl>
<dl>
<dt>班制休息</dt>
<dd>
<span
v-for="(item, index) in tagArray0"
:key="index"
:class="{
<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
>
}" @click.stop="specialclick(index, item)">{{ item.name }}</span>
</dd>
</dl>
<dl>
<dt>面试特色</dt>
<dd>
<span
v-for="(item, index) in tagArray4"
:key="index"
:class="{
<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
>
}" @click.stop="specialclick(index, item)">{{ item.name }}</span>
</dd>
</dl>
<dl>
<dt>其他特色</dt>
<dd>
<span
v-for="(item, index) in tagArray2"
:key="index"
:class="{
<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
>
}" @click.stop="specialclick(index, item)">{{ item.name }}</span>
</dd>
</dl>
</div>
@ -532,14 +364,10 @@
<!-- </div> -->
<div v-if="!isspinning">
<div class="subset" v-for="(item, index) in jobMainList" :key="index">
<router-link
target="_blank"
:to="
<div class="subset" v-for="(item, index) in jobMainList" :key="index" :style="{background:item.recruitment == '1'?'#fff':'#f5f5f5'}">
<router-link target="_blank" :to="
'/detail?' + 'id=' + item.id + '&' + 'page=' + formvalue.pageNum
"
rel="opener"
>
" rel="opener">
<div class="subsetleft" @click="totop">
<div class="imgbox">
<img v-if="item.logo.length !== 0" :src="item.logo" />
@ -560,39 +388,24 @@
</div>
<div class="jobtag">
<!-- <span>返费</span> -->
<i
class="iconfont icon-ziying"
v-if="item.signType == 1"
style=""
></i>
<span
v-for="(item1, index) in item.jobSpecialLabelNames"
:key="index"
>{{ item1 }}</span
><span v-if="item.jobSpecialLabelNames.length == 0"
>暂无特色</span
>
<i class="iconfont icon-ziying" v-if="item.signType == 1" style=""></i>
<span v-for="(item1, index) in item.jobSpecialLabelNames" :key="index">{{ item1 }}</span><span v-if="item.jobSpecialLabelNames.length == 0"></span>
</div>
<div class="jobpricemonth">
<!-- :style="{ opacity: item.minMonthlyPay ? '1' : '0' }" -->
<span>{{
item.minMonthlyPay ? item.minMonthlyPay : ""
}}</span
>-<span>{{
}}</span>-<span>{{
item.maxMonthlyPay ? item.maxMonthlyPay : ""
}}</span
>/
}}</span>/
</div>
<div
class="jobpricehour"
v-html="
<div class="jobpricehour" v-html="
getSalaryClassifyValue(
item.salaryClassify,
item.salaryClassifyValue
)
"
>
">
<!-- <template v-if="item.hourlyPay"
><span>{{ item.hourlyPay }}</span
>/小时</template
@ -608,8 +421,7 @@
<div class="subsetright">
<div class="topContainer">
<div class="updateTime" style="display: none">
<span
>更新时间{{ item.updateTime || "--" }} (
<span>更新时间{{ item.updateTime || "--" }} (
{{ item.diffTime || "--" }} )
</span>
</div>
@ -625,24 +437,14 @@
<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 +
'&' +
'page=' +
formvalue.pageNum
"
rel="opener"
>
<button type="primary" class="jobDesp">
<router-link target="_blank" :to="'/detail?' +'id=' + item.id + '&' + 'page=' + formvalue.pageNum" rel="opener">
<button type="primary" class="jobDesp" :style="{background:item.recruitment == '1'?'#fff':'#f5f5f5'}">
更多
</button></router-link
>
</button>
</router-link>
<!-- </a-popover> -->
<button @click="torecord(item)"></button>
<button class="apply" @click="torecord(item)" v-if="item.recruitment == '1'"></button>
<button class="norecruitment" v-else></button>
<!-- <button @click="showmodal(item)" @click="">报名</button> -->
</div>
@ -650,35 +452,21 @@
</div>
</div>
<div class="pagecontainer">
<a-pagination
:current="+formvalue.pageNum"
:default-current="1"
:defaultPageSize="8"
:total="formvalue.total"
@change="pageChange"
/>
<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"
/>
跳至<input ref="pageinput" type="text" @keyup.enter="inputpageChange" @blur="inputpageChange" />
</div>
</div>
</div>
<div class="maincontentright">
<div class="dateinfo">
<h1 class="bottombox"><i>我的日历</i></h1>
<p
class="day"
:style="{
<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' }">
@ -2783,7 +2571,7 @@ export default {
}
}
> button:last-child {
.apply {
margin-left: 16px;
border: 1px solid #ff4400;
background-color: #fff;
@ -2797,6 +2585,13 @@ export default {
}
}
}
.norecruitment {
background-color: #f5f5f5;
border: 1px solid #ccc;
margin-left: 16px;
color: #ccc;
}
}
// .pagecontainer {
// display: flex;

@ -169,9 +169,9 @@ export default {
return {
isshow: false,
imglist: [
"http://matripe.oss-cn-beijing.aliyuncs.com/yishoudan/newBanner/banner1.png",
"http://matripe.oss-cn-beijing.aliyuncs.com/yishoudan/newBanner/banner2.png",
"http://matripe.oss-cn-beijing.aliyuncs.com/yishoudan/newBanner/banner3.png",
"http://matripe.oss-cn-beijing.aliyuncs.com/yishoudan/newBanner/banner1.webp",
"http://matripe.oss-cn-beijing.aliyuncs.com/yishoudan/newBanner/banner2.webp",
"http://matripe.oss-cn-beijing.aliyuncs.com/yishoudan/newBanner/banner3.webp",
],
cooperativeImg: [],
isLogin: false,
@ -391,7 +391,7 @@ export default {
padding-top: 100px;
// padding-bottom: 96px;
height: 740px;
background: url("http://matripe.oss-cn-beijing.aliyuncs.com/yishoudan/cooperativeBrandBg.png")
background: url("http://matripe.oss-cn-beijing.aliyuncs.com/yishoudan/cooperativeBrandBg.webp")
no-repeat 100%;
.content {
ul {
@ -448,7 +448,7 @@ export default {
justify-content: center;
padding: unset;
height: 445px;
background: url("http://matripe.oss-cn-beijing.aliyuncs.com/yishoudan/relationUsBg.png")
background: url("http://matripe.oss-cn-beijing.aliyuncs.com/yishoudan/relationUsBg.webp")
no-repeat 100% 100%;
// padding-bottom: 126px;

@ -14,7 +14,7 @@ import AMap from "vue-amap";
Vue.use(AMap);
console.log("development");
AMap.initAMapApiLoader({
// 高德key
// 高德key
key: "44f4591aabba558514366f6e55f8d20e", // 自己到官网申请,我随便写的
// 插件集合 (插件按需引入)
plugin: [

@ -1326,6 +1326,8 @@ export function disposeJobListData(jobList) {
item.servetype = `${item.returnFee || "--"}元/公斤`;
} else if (item.returnFeeType === 5) {
item.servetype = `工人收入${item.returnFee || "--"}%`;
} else if (item.returnFeeType === 6) {
item.servetype = `${item.returnFee || "--"}`;
}
// console.log(item);
// item["returnFee"] = item.returnFee / 100;
@ -1511,6 +1513,8 @@ export function disposeJobListData(jobList) {
jobList.servetype = `${jobList.returnFee || "--"}元/公斤`;
} else if (jobList.returnFeeType === 5) {
jobList.servetype = `工人收入${jobList.returnFee || "--"}%`;
} else if (jobList.returnFeeType === 6) {
jobList.servetype = `${jobList.returnFee || "--"}`;
}
} else {
jobList.servetype = `${jobList.returnFee || "--"}元/小时`;
@ -1786,7 +1790,7 @@ export function agencyPermissionArray() {
* 根据代理权限ID获取名称
*/
export function getAgencyPermissionNameById(permissionStr) {
let str = "";
// let str = "";
let array = agencyPermissionArray();
let names = [];
let permissions = permissionStr.split(",");

@ -7,36 +7,18 @@
<span>
<ul>
<li>
<router-link
to="/"
:class="routertitleindex == 0 ? 'titleactive' : ''"
rel="opener"
>
一手单首页</router-link
>
<router-link to="/" :class="routertitleindex == 0 ? 'titleactive' : ''" rel="opener">
一手单首页</router-link>
</li>
<li>
<router-link
to="/list"
@click.native="toList"
:class="routertitleindex == 1 ? 'titleactive' : ''"
rel="opener"
>一手职位</router-link
>
<router-link to="/list" @click.native="toList" :class="routertitleindex == 1 ? 'titleactive' : ''" rel="opener">一手职位</router-link>
</li>
<li>
<router-link
to="/mybill"
:class="routertitleindex == 5 ? 'titleactive' : ''"
rel="opener"
>我的报名
<router-link to="/mybill" :class="routertitleindex == 5 ? 'titleactive' : ''" rel="opener">我的报名
</router-link>
</li>
<li>
<router-link
to="/mytownsman"
:class="routertitleindex == 4 ? 'titleactive' : ''"
>我的老乡
<router-link to="/mytownsman" :class="routertitleindex == 4 ? 'titleactive' : ''">我的老乡
</router-link>
</li>
<!-- <li>
@ -68,29 +50,19 @@
<span>个人中心</span>
<div class="loginbox" slot="overlay">
<div>
<img
:src="loginValue.imgSrc"
alt=""
v-if="loginValue.imgSrc !== ''"
style="border-radius: 50%"
/>
<span v-else class="iconfont icon-morentouxiang avatar"></span
><span class="username">{{
<img :src="loginValue.imgSrc" alt="" v-if="loginValue.imgSrc !== ''" style="border-radius: 50%" />
<span v-else class="iconfont icon-morentouxiang avatar"></span><span class="username">{{
loginValue.userName || loginValue.nickName || loginValue.tel
}}</span>
</div>
<router-link to="/accountsetting">
<div>
<span
><i class="iconfont icon-gerenzhongxin"></i>个人中心</span
><i class="iconfont icon-youjiantou"></i></div
></router-link>
<router-link to="/memberInfo"
><div>
<span
><i class="iconfont icon-zhanghaoshezhi"></i
>成员管理</span
><i class="iconfont icon-youjiantou"></i>
<span><i class="iconfont icon-gerenzhongxin"></i>个人中心</span><i class="iconfont icon-youjiantou"></i>
</div>
</router-link>
<router-link to="/memberInfo">
<div>
<span><i class="iconfont icon-zhanghaoshezhi"></i>成员管理</span><i class="iconfont icon-youjiantou"></i>
</div>
</router-link>
<!-- <router-link to="/accountsetting"
@ -107,10 +79,8 @@
</span>
<span class="loginbtn" v-else>
<!-- <router-link to="/register">注册</router-link>/ -->
<router-link to="/login"
><button style="cursor: pointer">登录</button></router-link
></span
>
<router-link to="/login"><button style="cursor: pointer">登录</button></router-link>
</span>
</span>
<!-- <span class="navigationright">
<ul>
@ -134,12 +104,7 @@
</div>
<!-- 搜索栏 -->
<router-view
:isspecialboxshow.sync="isspecialboxshow"
:formvalue="formvalue"
:jobMainList="jobMainList"
:isspinning="isspinning"
></router-view>
<router-view :isspecialboxshow.sync="isspecialboxshow" :formvalue="formvalue" :jobMainList="jobMainList" :isspinning="isspinning"></router-view>
<!-- 老乡广告 -->
<!-- <div class="fellowtownsman" v-if="laoxiangshow">
<div class="w">
@ -212,9 +177,7 @@
</ul> -->
<div>
Copyright © 2015 - 2022 Bocai. All Rights Reserved. <i></i>
<a target="_blank" href="https://beian.miit.gov.cn/#/Integrated/index"
>京ICP备16043923号-9</a
>
<a target="_blank" href="https://beian.miit.gov.cn/#/Integrated/index">京ICP备16043923号-9</a>
</div>
</div>
</footer>

@ -1,11 +1,11 @@
"use strict";
const path = require("path");
const defaultSettings = require("./src/settings.js");
// const webpack = require("webpack");
// const CompressionPlugin = require("compression-webpack-plugin");
const webpack = require("webpack");
const CompressionPlugin = require("compression-webpack-plugin");
// const zlib = require("zlib");
function resolve(dir) {
return path.join(__dirname, dir);
return path.join(__dirname, dir);
}
const name = defaultSettings.title || "vue Admin Template"; // page title
@ -13,204 +13,205 @@ const name = defaultSettings.title || "vue Admin Template"; // page title
const port = 8888 || process.env.port || process.env.npm_config_port; // dev port
module.exports = {
publicPath: "./",
outputDir: "dist",
assetsDir: "static",
lintOnSave: process.env.NODE_ENV === "development",
// lintOnSave: false,
productionSourceMap: false,
devServer: {
// 配置反向代理
port: port,
open: true,
overlay: {
warnings: false,
errors: true,
},
proxy: {
// 地址中有 /api 的时候会触发代理
"/api_prod": {
// target: "http://localhost:8001/",
target: "http://bl7.matripe.com.cn:8001",
// target: "http://1shoudan.renminshitang.com.cn",
// target: "https://d.matripe.com.cn",
ws: true, // proxy websockets
changeOrigin: true, // 确定是否跨域
pathRewrite: {
"^/api_prod": "",
},
},
// '/api_prod': {
// target: 'http://a.matripe.com.cn',
// ws: true, // proxy websockets
// changeOrigin: true, // needed for virtual hosted sites
// pathRewrite: {
// '^/api_prod': '' // rewrite path
// }
// },
// '/api_dev': {
// target: 'http://nb.renminshitang.com.cn:8001',
// ws: true, // proxy websockets
// changeOrigin: true, // needed for virtual hosted sites
// pathRewrite: {
// '^/api_dev': '/' // rewrite path
// }
// }
// ,'/api_test': {
// target: 'http://localhost:8003',
// ws: true, // proxy websockets
// changeOrigin: true, // needed for virtual hosted sites
// pathRewrite: {
// '^/api_test': '' // rewrite path
// }
// }
},
// before: require('./mock/mock-server.js')
},
chainWebpack: (config) => {
// 开发环境的webpack配置
config.when(process.env.NODE_ENV === "development", (config) => {
config.entry("app").clear().add("./src/main-dev.js");
config.set("externals", {});
});
// 生产环境的webpack配置
config.when(process.env.NODE_ENV === "production", (config) => {
config.entry("app").clear().add("./src/main-prod.js");
});
config.plugins.delete("fork-ts-checker"), // 禁用fork-ts-checker
config.plugins.delete("prefetch");
},
publicPath: "./",
outputDir: "dist",
assetsDir: "static",
lintOnSave: process.env.NODE_ENV === "development",
// lintOnSave: false,
productionSourceMap: false,
devServer: {
// 配置反向代理
compress: true, // 配置webpack的压缩,但是在package.json中需要配置 --compress
port: port,
open: true,
overlay: {
warnings: false,
errors: true,
},
proxy: {
// 地址中有 /api 的时候会触发代理
"/api_prod": {
// target: "http://localhost:8001/",
target: "http://bl7.matripe.com.cn:8001",
// target: "http://1shoudan.renminshitang.com.cn",
// target: "https://d.matripe.com.cn",
ws: true, // proxy websockets
changeOrigin: true, // 确定是否跨域
pathRewrite: {
"^/api_prod": "",
},
},
// '/api_prod': {
// target: 'http://a.matripe.com.cn',
// ws: true, // proxy websockets
// changeOrigin: true, // needed for virtual hosted sites
// pathRewrite: {
// '^/api_prod': '' // rewrite path
// }
// },
// '/api_dev': {
// target: 'http://nb.renminshitang.com.cn:8001',
// ws: true, // proxy websockets
// changeOrigin: true, // needed for virtual hosted sites
// pathRewrite: {
// '^/api_dev': '/' // rewrite path
// }
// }
// ,'/api_test': {
// target: 'http://localhost:8003',
// ws: true, // proxy websockets
// changeOrigin: true, // needed for virtual hosted sites
// pathRewrite: {
// '^/api_test': '' // rewrite path
// }
// }
},
// before: require('./mock/mock-server.js')
},
chainWebpack: (config) => {
// 开发环境的webpack配置
config.when(process.env.NODE_ENV === "development", (config) => {
config.entry("app").clear().add("./src/main-dev.js");
config.set("externals", {});
});
// 生产环境的webpack配置
config.when(process.env.NODE_ENV === "production", (config) => {
config.entry("app").clear().add("./src/main-prod.js");
});
config.plugins.delete("fork-ts-checker"), // 禁用fork-ts-checker
config.plugins.delete("prefetch");
},
configureWebpack: {
// provide the app's title in webpack's name field, so that
// it can be accessed in index.html to inject the correct title.
name: name,
configureWebpack: {
// provide the app's title in webpack's name field, so that
// it can be accessed in index.html to inject the correct title.
name: name,
resolve: {
alias: {
"@": resolve("src"),
"@ant-design/icons/lib/dist.$": resolve("src/icons.js"),
},
},
// plugins: [
// new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
// // 下面两项配置才是 compression-webpack-plugin 压缩配置
// // 压缩成 .gz 文件
// new CompressionPlugin({
// filename: '[path][base].gz',
// algorithm: 'gzip',
// test: /\.js$|\.css$|\.html$/,
// threshold: 10240,
// minRatio: 0.8
// }),
// // 压缩成 .br 文件,如果 zlib 报错无法解决,可以注释这段使用代码,一般本地没问题,需要注意线上服务器会可能发生找不到 zlib 的情况。
// new CompressionPlugin({
// filename: '[path][base].br',
// algorithm: 'brotliCompress',
// test: /\.(js|css|html|svg)$/,
// compressionOptions: {
// params: {
// [zlib.constants.BROTLI_PARAM_QUALITY]: 11
// }
// },
// threshold: 10240,
// minRatio: 0.8
// })
// ],
// },
optimization: {
runtimeChunk: "single",
splitChunks: {
chunks: "all",
maxInitialRequests: Infinity,
minSize: 20000,
cacheGroups: {
vendor: {
test: /[\\/]node_modules[\\/]/,
name(module) {
// get the name. E.g. node_modules/packageName/not/this/part.js
// or node_modules/packageName
const packageName = module.context.match(
/[\\/]node_modules[\\/](.*?)([\\/]|$)/
)[1];
// npm package names are URL-safe, but some servers don't like @ symbols
return `npm.${packageName.replace("@", "")}`;
},
},
},
},
},
// chainWebpack (config) {
// // it can improve the speed of the first screen, it is recommended to turn on preload
// config.plugin('preload').tap(() => [
// {
// rel: 'preload',
// // to ignore runtime.js
// // https://github.com/vuejs/vue-cli/blob/dev/packages/@vue/cli-service/lib/config/app.js#L171
// fileBlacklist: [/\.map$/, /hot-update\.js$/, /runtime\..*\.js$/],
// include: 'initial'
// }
// ])
resolve: {
alias: {
"@": resolve("src"),
"@ant-design/icons/lib/dist.$": resolve("src/icons.js"),
},
},
plugins: [
// new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
// // 下面两项配置才是 compression-webpack-plugin 压缩配置
// // 压缩成 .gz 文件
// new CompressionPlugin({
// algorithm: "gzip",
// test: /\.js$|\.html$|\.css/, //匹配文件名
// threshold: 10240,
// minRatio: 0.8,
// deleteOriginalAssets: false, // 是否删除源文件
// }),
// 压缩成 .br 文件,如果 zlib 报错无法解决,可以注释这段使用代码,一般本地没问题,需要注意线上服务器会可能发生找不到 zlib 的情况。
// new CompressionPlugin({
// filename: '[path].br',
// algorithm: 'brotliCompress',
// test: /\.(js|css|html|svg)$/,
// compressionOptions: {
// params: {
// [zlib.constants.BROTLI_PARAM_QUALITY]: 11
// }
// },
// threshold: 10240,
// minRatio: 0.8,
// deleteOriginalAssets: true //是否删除原文件
// // when there are many pages, it will cause too many meaningless requests
// config.plugins.delete('prefetch')
// })
],
// },
optimization: {
runtimeChunk: "single",
splitChunks: {
chunks: "all",
maxInitialRequests: Infinity,
minSize: 20000,
cacheGroups: {
vendor: {
test: /[\\/]node_modules[\\/]/,
name(module) {
// get the name. E.g. node_modules/packageName/not/this/part.js
// or node_modules/packageName
const packageName = module.context.match(/[\\/]node_modules[\\/](.*?)([\\/]|$)/)[1];
// npm package names are URL-safe, but some servers don't like @ symbols
return `npm.${packageName.replace("@", "")}`;
},
},
},
},
},
// chainWebpack (config) {
// // it can improve the speed of the first screen, it is recommended to turn on preload
// config.plugin('preload').tap(() => [
// {
// rel: 'preload',
// // to ignore runtime.js
// // https://github.com/vuejs/vue-cli/blob/dev/packages/@vue/cli-service/lib/config/app.js#L171
// fileBlacklist: [/\.map$/, /hot-update\.js$/, /runtime\..*\.js$/],
// include: 'initial'
// }
// ])
// // set svg-sprite-loader
// config.module
// .rule('svg')
// .exclude.add(resolve('src/icons'))
// .end()
// config.module
// .rule('icons')
// .test(/\.svg$/)
// .include.add(resolve('src/icons'))
// .end()
// .use('svg-sprite-loader')
// .loader('svg-sprite-loader')
// .options({
// symbolId: 'icon-[name]'
// })
// .end()
// // when there are many pages, it will cause too many meaningless requests
// config.plugins.delete('prefetch')
// config
// .when(process.env.NODE_ENV !== 'development',
// config => {
// config
// .plugin('ScriptExtHtmlWebpackPlugin')
// .after('html')
// .use('script-ext-html-webpack-plugin', [{
// // `runtime` must same as runtimeChunk name. default is `runtime`
// inline: /runtime\..*\.js$/
// }])
// .end()
// config
// .optimization.splitChunks({
// chunks: 'all',
// cacheGroups: {
// libs: {
// name: 'chunk-libs',
// test: /[\\/]node_modules[\\/]/,
// priority: 10,
// chunks: 'initial' // only package third parties that are initially dependent
// },
// elementUI: {
// name: 'chunk-elementUI', // split elementUI into a single package
// priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
// test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm
// },
// commons: {
// name: 'chunk-commons',
// test: resolve('src/components'), // can customize your rules
// minChunks: 3, // minimum common number
// priority: 5,
// reuseExistingChunk: true
// }
// }
// })
// // https:// webpack.js.org/configuration/optimization/#optimizationruntimechunk
// config.optimization.runtimeChunk('single')
// }
// )
// }
},
// // set svg-sprite-loader
// config.module
// .rule('svg')
// .exclude.add(resolve('src/icons'))
// .end()
// config.module
// .rule('icons')
// .test(/\.svg$/)
// .include.add(resolve('src/icons'))
// .end()
// .use('svg-sprite-loader')
// .loader('svg-sprite-loader')
// .options({
// symbolId: 'icon-[name]'
// })
// .end()
// config
// .when(process.env.NODE_ENV !== 'development',
// config => {
// config
// .plugin('ScriptExtHtmlWebpackPlugin')
// .after('html')
// .use('script-ext-html-webpack-plugin', [{
// // `runtime` must same as runtimeChunk name. default is `runtime`
// inline: /runtime\..*\.js$/
// }])
// .end()
// config
// .optimization.splitChunks({
// chunks: 'all',
// cacheGroups: {
// libs: {
// name: 'chunk-libs',
// test: /[\\/]node_modules[\\/]/,
// priority: 10,
// chunks: 'initial' // only package third parties that are initially dependent
// },
// elementUI: {
// name: 'chunk-elementUI', // split elementUI into a single package
// priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
// test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm
// },
// commons: {
// name: 'chunk-commons',
// test: resolve('src/components'), // can customize your rules
// minChunks: 3, // minimum common number
// priority: 5,
// reuseExistingChunk: true
// }
// }
// })
// // https:// webpack.js.org/configuration/optimization/#optimizationruntimechunk
// config.optimization.runtimeChunk('single')
// }
// )
// }
},
};

Loading…
Cancel
Save