123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531 |
- <template>
- <view>
- <!-- 搜索 -->
- <view class="search flex align-center justify-center">
- <view class="search-box">
- <u-search placeholder="搜索岗位" shape="square" @clear="clear" v-model="keyword" @custom="custom"
- @search="custom"></u-search>
- </view>
- </view>
- <block v-if="show">
- <view class="searchJl flex justify-center">
- <view class="searchJl-box">
- <view class="searchJl-box-title">
- 热门搜索
- </view>
- <view class="searchJl-box-label flex align-center flex-wrap">
- <view class="searchJl-box-item" @click="goSearch(item.keyWord)"
- v-for="(item,index) in searchList" :key="index">
- {{item.keyWord}}
- </view>
- </view>
- </view>
- </view>
- </block>
- <block v-else>
- <!-- 筛选 -->
- <view class="screen flex justify-center align-center">
- <view class="screen-box">
- <view class="topbg-sx-box flex justify-between align-center">
- <view class="topbg-sx-box-l flex align-center">
- <view class="topbg-sx-box-l-i" :class="currentSx==index?'active3':''"
- @click="currentSx = index" v-for="(item,index) in sxTypeList" :key="index">
- {{item.name}}
- </view>
- </view>
- <view class="topbg-sx-box-r flex align-center">
- <text style="color: #00B78F;font-size: 28rpx;font-weight: 500;margin-right: 10rpx;"
- @click="goNav('/package/screen/city?city='+city+'&county='+county)">{{county?county:city}}</text>
- <u-icon name="arrow-down-fill" color="#00B78F" size="20"
- @click="goNav('/package/screen/city?city='+city+'&county='+county)"></u-icon>
- <text style="color: #CCCCCC;margin-left: 30rpx;margin-right: 30rpx;">|</text>
- <text style="color: #999999;font-size: 28rpx;font-weight: 500;margin-right: 10rpx;"
- @click="goNav('/package/screen/screen')">筛选</text>
- <u-icon name="arrow-down-fill" color="#CCCCCC" size="20"
- @click="goNav('/package/screen/screen')"></u-icon>
- </view>
- </view>
- </view>
- </view>
- <!-- 岗位推荐 -->
- <view class="gwList flex justify-center" v-if="dataList.length>0">
- <view class="gwList-box">
- <scroll-view scroll-y="true" style="width: 100%;height: 100%;">
- <view class="gwList-box-item flex justify-center" @click="gotoInfo(item.postPushId)"
- v-for="(item,index) in dataList" :key="index">
- <view class="gwList-box-item-box">
- <view class="gwList-box-item-box-title flex justify-between align-center">
- <view class=""
- style="max-width: 450rpx;overflow:hidden;white-space: nowrap;text-overflow: ellipsis;-o-text-overflow:ellipsis;">
- <block v-if="isSameName(item.ruleClassifyName,item.stationName)">
- {{item.ruleClassifyName}}-
- </block>
- <block>
- {{item.stationName}}
- </block>
- </view>
- <text>{{item.salaryRange}}</text>
- </view>
- <view class="gwList-box-item-box-label flex align-center flex-wrap">
- <text
- style="color: #666666;font-size: 26rpx;padding: 10rpx 25rpx 10rpx 25rpx;background-color: #F6F6F6;border-radius: 8rpx;margin-right: 20rpx;margin-bottom: 20rpx;"
- v-for="(ite,ind) in item.positionWelfare" :key="ind">{{ite}}</text>
- </view>
- <view class="gwList-box-item-box-name flex justify-between align-center">
- <text>{{item.company?item.company.companyName:''}}</text>
- <text v-if="item.company">{{item.company?item.company.companyPeople:''}}</text>
- </view>
- <view class="gwList-box-item-box-line"></view>
- <view class="gwList-box-item-box-info flex justify-between align-center">
- <view class="gwList-box-item-box-info-l flex align-center">
- <image :src="item.company?item.company.companyLogo:'../../static/logo.png'"
- style="width: 58rpx;height: 58rpx;border-radius: 50%;margin-right: 20rpx;"
- mode=""></image>
- <text
- v-if="item.company">{{item.company?item.company.companyLegalPerson:'未知'}}·创始人</text>
- </view>
- <view class="gwList-box-item-box-info-r">
- {{item.county}}
- {{item.address}}
- </view>
- </view>
- </view>
- </view>
- </scroll-view>
- </view>
- </view>
- <!-- 暂无数据 -->
- <view class="gwList" v-else>
- <empty />
- </view>
- </block>
- </view>
- </template>
- <script>
- import empty from '../../components/empty.vue'
- export default {
- components: {
- empty
- },
- data() {
- return {
- show: false,
- keyword: '',
- currentSx: 0,
- sxTypeList: [{
- id: 1,
- name: '推荐',
- },
- {
- id: 2,
- name: '最新',
- }
- ],
- token: '',
- page: 1,
- limit: 10,
- totlo: 1,
- city: '',
- county: '', //区
- education: '', //学历
- salaryRange: '', //薪资
- experience: '', //经验
- companyPeople: '', //公司规模
- industry: '', //行业
- longitude: '',
- latitude: '',
- dataList: [],
- searchList: [],
- };
- },
- watch: {
- currentSx(newData, oldData) {
- this.getUserList();
- },
- },
- onLoad() {
- let that = this
- //获取经纬度后请求岗位接口,经纬度用于筛选距离
- uni.getLocation({
- type: 'wgs84', //wgs84 gcj02
- success: function(res) {
- console.log(res, '地理位置');
- that.latitude = res.latitude;
- that.longitude = res.longitude;
- that.getUserList();
- },
- fail: function() {
- console.log('获取地址失败');
- }
- })
- this.getMyRecordList()
- },
- onShow() {
- let that = this;
- if (!this.city) {
- if (uni.getStorageSync('city')) {
- this.city = uni.getStorageSync('city')
- } else {
- this.city = ''
- }
- }
- uni.$once('filterCity', data => {
- console.log(data, '选择的市')
- that.city = data.city
- that.county = data.county
- that.getUserList();
- })
- this.token = uni.getStorageSync('token');
- console.log(uni.getStorageSync('filter'), '1111111111');
- if (uni.getStorageSync('filter') && (uni.getStorageSync('filter')).length > 0) {
- let filter = uni.getStorageSync('filter')
- filter.map(item => {
- let arr = []
- item.list.map(ite => {
- if (ite.value != '不限') {
- arr.push(ite.value)
- }
- })
- switch (item.name) {
- case '学历':
- this.education = arr.join(',')
- break;
- case '薪资':
- this.salaryRange = arr.join(',')
- break;
- case '经验':
- this.experience = arr.join(',')
- break;
- case '公司规模':
- this.companyPeople = arr.join(',')
- break;
- case '行业':
- this.industry = arr.join(',')
- break;
- }
- })
- } else {
- this.education = '' //学历
- this.experience = '' //经验
- this.industry = '' //行业
- this.salaryRange = '' //薪资
- this.companyPeople = '' //公司规模
- }
- that.getUserList();
- },
- onPullDownRefresh() {
- this.page = 1
- this.getUserList();
- },
- onReachBottom() {
- if (this.page < this.totlo) {
- this.page += 1
- this.getUserList();
- }
- },
- methods: {
- //判断岗位名称与职位名称是否相同(不区分大小写)
- isSameName(className, name) {
- let str1 = className.trim();
- let str2 = name.trim();
- if (str1.length !== str2.length) {
- return true;
- }
- return str1.toLowerCase() !== str2.toLowerCase();
- },
- /**
- * @param {Object} postPushId
- * 岗位详情
- */
- gotoInfo(postPushId) {
- if (uni.getStorageSync('token')) {
- uni.navigateTo({
- url: '/pages/index/game/order?postPushId=' + postPushId
- })
- } else {
- this.noLogin()
- }
- },
- //我的搜索关键词
- getMyRecordList() {
- this.$Request.get('/app/record/getMyRecordList', {
- userId: uni.getStorageSync('userId') ? uni.getStorageSync('userId') : ''
- }).then(res => {
- if (res.code == 0) {
- this.searchList = res.data.records
- if (this.searchList.length > 0) {
- this.show = true
- } else {
- this.show = false
- this.custom()
- }
- }
- })
- },
- /**
- * 清空搜索内容
- */
- clear() {
- this.page = 1
- this.getUserList();
- },
- /**
- * @param {Object} keyword
- * 热词搜索
- */
- goSearch(keyword) {
- this.show = false
- this.keyword = keyword
- this.getUserList();
- },
- /**
- * @param {Object} e
- * 用户点击搜索时触发
- */
- custom(e) {
- this.show = false
- this.page = 1
- this.getUserList()
- },
- /**
- * 获取岗位列表
- */
- getUserList() {
- let data = {
- page: this.page,
- limit: this.limit,
- postType: '',
- ruleClassifyName: this.keyword, //岗位名称
- screen: +this.currentSx + 1, //1推荐 2最新
- county: this.county, //区
- city: this.city, //城市
- salaryRange: this.salaryRange, //薪资范围
- education: this.education, //学历
- experience: this.experience, //经验
- industry: this.industry, //行业
- companyPeople: this.companyPeople, //公司规模
- lng: this.longitude,
- lat: this.latitude,
- userId: uni.getStorageSync('userId') ? uni.getStorageSync('userId') : ''
- }
- this.$Request.get('/app/postPush/userGetPostPushList', data).then(res => {
- uni.stopPullDownRefresh()
- if (res.code == 0) {
- res.data.records.map(item => {
- if (item.positionWelfare) {
- item.positionWelfare = item.positionWelfare.split(',')
- } else {
- item.positionWelfare = []
- }
- })
- if (this.page == 1) {
- this.dataList = res.data.records
- } else {
- this.dataList = [...this.dataList, ...res.data.records]
- }
- this.totlo = res.data.pages
- }
- })
- },
- //跳转
- goNav(url) {
- if (uni.getStorageSync('token')) {
- uni.navigateTo({
- url: url
- })
- } else {
- this.noLogin()
- }
- },
- //未登录
- noLogin() {
- uni.showModal({
- title: '提示',
- content: '您还未登录,请先登录',
- confirmColor: '#00B88F',
- success: function(res) {
- if (res.confirm) {
- console.log('用户点击确定');
- // uni.reLaunch({
- // url:'/pages/public/login'
- // })
- uni.navigateTo({
- url: '/pages/public/login'
- })
- } else if (res.cancel) {
- console.log('用户点击取消');
- }
- }
- })
- },
- },
- }
- </script>
- <style lang="scss">
- page {
- background: #F2F2F7;
- }
- .active3 {
- color: #1A1A1A !important;
- font-size: 28rpx !important;
- font-weight: 800 !important;
- }
- .search {
- width: 100%;
- height: 88rpx;
- background-color: #ffffff;
- position: fixed;
- top: 0;
- z-index: 9999;
- .search-box {
- width: 686rpx;
- height: 60rpx;
- }
- }
- .screen {
- width: 100%;
- height: 100rpx;
- background-color: #ffffff;
- position: fixed;
- top: 88rpx;
- z-index: 9999;
- .screen-box {
- width: 686rpx;
- height: 80rpx;
- .topbg-sx-box {
- width: 686rpx;
- height: 25rpx;
- margin-top: 30rpx;
- .topbg-sx-box-l-i {
- color: #999999;
- font-size: 28rpx;
- font-weight: 500;
- margin-right: 38rpx;
- }
- }
- }
- }
- .searchJl {
- width: 100%;
- background-color: #ffffff;
- position: fixed;
- top: 80rpx;
- height: calc(100vh - 80rpx);
- .searchJl-box {
- width: 686rpx;
- height: 100%;
- .searchJl-box-title {
- color: #333333;
- font-size: 28rpx;
- font-weight: bold;
- margin-top: 40rpx;
- }
- .searchJl-box-label {
- width: 100%;
- margin-top: 20rpx;
- .searchJl-box-item {
- padding: 20rpx;
- border-radius: 8rpx;
- background-color: #F5F5F5;
- color: #333333;
- font-size: 24rpx;
- font-weight: 500;
- margin-right: 20rpx;
- margin-top: 20rpx;
- }
- }
- }
- }
- .gwList {
- width: 100%;
- margin-top: 200rpx;
- .gwList-box {
- width: 686rpx;
- height: 100%;
- .gwList-box-item {
- width: 100%;
- // height: 329rpx;
- background-color: #ffffff;
- border-radius: 24rpx;
- margin-bottom: 20rpx;
- padding-bottom: 20rpx;
- }
- .gwList-box-item-box {
- width: 623rpx;
- height: 100%;
- .gwList-box-item-box-title {
- margin-top: 30rpx;
- view:nth-of-type(1) {
- color: #1F1F1F;
- font-size: 38rpx;
- font-weight: 800;
- }
- text:nth-of-type(1) {
- color: #00B88F;
- font-size: 38rpx;
- font-weight: bold;
- }
- }
- .gwList-box-item-box-label {
- margin-top: 30rpx;
- }
- .gwList-box-item-box-name {
- margin-top: 24rpx;
- color: #999999;
- font-size: 28rpx;
- font-weight: 500;
- }
- .gwList-box-item-box-line {
- width: 100%;
- border: 1rpx solid #E6E6E6;
- margin-top: 30rpx;
- margin-bottom: 20rpx;
- }
- .gwList-box-item-box-info {
- font-size: 26rpx;
- .gwList-box-item-box-info-l {
- color: #1A1A1A;
- }
- .gwList-box-item-box-info-r {
- color: #999999;
- max-width: 300rpx;
- }
- }
- }
- }
- }
- </style>
|