This commit is contained in:
zxy
2024-03-07 17:52:21 +08:00
10 changed files with 928 additions and 40 deletions

40
api/userrecruit.js Normal file
View File

@@ -0,0 +1,40 @@
import {
request
} from '@/untils/AxiosUtils.js';
import {
getStore
} from '@/untils/store.js'
function getHeader() {
const platformId = getStore({
name: 'platformId'
})
if (platformId) {
return {
'Platform-Id': platformId
}
} else {
return {}
}
}
/*首页 最新任务(10条)*/
export const getPushListByUserId = (params) => {
return request({
url: '/api/jobslink-api/user/userrecruit/getPushListByUserId',
headers: getHeader(),
method: 'get',
params
})
}
/*岗位详情*/
// workDetail
export const userrecruitDetail = (workId) => {
return request({
url: '/api/jobslink-api/user/userrecruit/getWorksInfoByWorkId',
method: 'get',
params: {
workId
}
})
}

View File

@@ -23,6 +23,7 @@
<view style="flex:1;"></view> <view style="flex:1;"></view>
<u-tag text="任务" v-if="companyitem.type == 0" plain size="mini" type="warning"></u-tag> <u-tag text="任务" v-if="companyitem.type == 0" plain size="mini" type="warning"></u-tag>
<u-tag text="岗位" v-if="companyitem.type == 1" plain size="mini"></u-tag> <u-tag text="岗位" v-if="companyitem.type == 1" plain size="mini"></u-tag>
<u-tag text="招工" v-if="companyitem.type == 2" plain size="mini"></u-tag>
</view> </view>
<view style="width: 100%;height: 1rpx;background-color: #999;margin: 0 auto;opacity: .5;"></view> <view style="width: 100%;height: 1rpx;background-color: #999;margin: 0 auto;opacity: .5;"></view>
<view class="timeAddress" style="position: relative;"> <view class="timeAddress" style="position: relative;">

View File

@@ -23,6 +23,7 @@
<view style="flex:1;"></view> <view style="flex:1;"></view>
<u-tag text="任务" v-if="companyitem.type == 0" plain size="mini" type="warning"></u-tag> <u-tag text="任务" v-if="companyitem.type == 0" plain size="mini" type="warning"></u-tag>
<u-tag text="岗位" v-if="companyitem.type == 1" plain size="mini"></u-tag> <u-tag text="岗位" v-if="companyitem.type == 1" plain size="mini"></u-tag>
<u-tag text="招工" v-if="companyitem.type == 2" plain size="mini"></u-tag>
</view> </view>
<view style="width: 100%;height: 1rpx;background-color: #999;margin: 0 auto;opacity: .5;"></view> <view style="width: 100%;height: 1rpx;background-color: #999;margin: 0 auto;opacity: .5;"></view>
<view class="timeAddress" style="position: relative;"> <view class="timeAddress" style="position: relative;">
@@ -85,7 +86,11 @@ export default {
}, },
computed: { computed: {
skillNames() { skillNames() {
return this.companyitem.skillNames.split(',') if(this.companyitem.skillNames) {
return this.companyitem.skillNames?.split(',')
} else {
return []
}
} }
}, },
methods: { methods: {

View File

@@ -31,6 +31,12 @@
"navigationBarTitleText" : "岗位详情", "navigationBarTitleText" : "岗位详情",
"navigationBarBackgroundColor" : "#FFFFFF" "navigationBarBackgroundColor" : "#FFFFFF"
} }
},{
"path" : "pages/projectInfo/userrecruitInfo",
"style" : {
"navigationBarTitleText" : "招工详情",
"navigationBarBackgroundColor" : "#FFFFFF"
}
}, },
{ {
"path" : "pages/projectInfo/signContract", "path" : "pages/projectInfo/signContract",

View File

@@ -3,7 +3,7 @@
<view class="titleSearch"> <view class="titleSearch">
<view class="searchName"> </view> <view class="searchName"> </view>
<u-search placeholder="搜任务/搜岗位/搜政策" @focus="goSeach" shape="round" :showAction="false"></u-search> <u-search placeholder="搜任务/搜岗位/搜政策/搜招工" @focus="goSeach" shape="round" :showAction="false"></u-search>
</view> </view>
<view class="navPosition" @click="navTo('/pages/project/projectList')"> <view class="navPosition" @click="navTo('/pages/project/projectList')">
<u-icon name="map" color="#2979ff" size="16"></u-icon> <u-icon name="map" color="#2979ff" size="16"></u-icon>
@@ -64,28 +64,35 @@
</view> </view>
</view> </view>
</block> </block>
<block v-if="activeTab == 2"> <block v-if="activeTab == 2">
<!-- <view v-if="recommendList.length > 0"> <view>
<block v-for="(item, index) in recommendList" :key="item.id"> <!-- <view class="location" @click="gomap">
<companyList :companyitem="item"></companyList> <image src="../../static/img/location.svg" mode=""></image>
</block> {{ currentAddress }}切换位置
<image src="../../static/img/right.svg" mode=""></image>
</view> -->
</view> </view>
<view v-if="policyContentList.length > 0" style="padding-bottom: 20rpx;">
<block v-for="(item, index) in policyContentList" :key="item.id">
<userrecruitList :companyitem="item"></userrecruitList>
</block>
</view>
<view v-else> <view v-else>
<image src="../../static/img/pic_notask.svg" mode="" class="nothing"></image> <image src="../../static/img/pic_notask.svg" mode="" class="nothing"></image>
<view class="nothingContnt"> <view class="nothingContnt">
完善技能获取精推荐 暂无信息
</view> </view>
<view class="btn" @click="goResume">
完善技能
</view> </view>
</view> --> </block>
<!-- <block v-if="activeTab == 2">
<view v-for="(item, index) in policyContentList" :key="index" style="width: 90%;height: 100rpx;background-color: #fff;border-radius: 10rpx;margin:20rpx 5% 20rpx 5%;display: flex;align-items: center" @click="goPolicyInfo(item.id)"> <view v-for="(item, index) in policyContentList" :key="index" style="width: 90%;height: 100rpx;background-color: #fff;border-radius: 10rpx;margin:20rpx 5% 20rpx 5%;display: flex;align-items: center" @click="goPolicyInfo(item.id)">
<image :src="item.headPic" style="width: 60rpx;height: 60rpx;margin: 0 20rpx;"></image> <image :src="item.headPic" style="width: 60rpx;height: 60rpx;margin: 0 20rpx;"></image>
<view style="font-size: 26rpx;">{{ item.articleTitle }}</view> <view style="font-size: 26rpx;">{{ item.articleTitle }}</view>
</view> </view>
</block> </block> -->
<cs-button></cs-button> <cs-button></cs-button>
</view> </view>
@@ -98,12 +105,14 @@ import vTabs from '@/components/v-tabs/v-tabs.vue';
import testData from '@/common/textdata.js'; import testData from '@/common/textdata.js';
import companyList from '@/components/companyList/companyList.vue'; import companyList from '@/components/companyList/companyList.vue';
import workList from '@/components/companyList/workList.vue' import workList from '@/components/companyList/workList.vue'
import userrecruitList from './userrecruitList.vue'
import { import {
newMissionAll, newMissionAll,
recommendMission, recommendMission,
nearMission nearMission
} from '@/api/mission.js'; } from '@/api/mission.js';
import {getPolicyContent} from '@/api/newIndex.js' import {getPolicyContent} from '@/api/newIndex.js'
import {getPushListByUserId } from '@/api/userrecruit.js'
import { import {
getcoder getcoder
} from "@/api/map.js"; } from "@/api/map.js";
@@ -114,7 +123,8 @@ export default {
vTabs, vTabs,
companyList, companyList,
verticalMenu, verticalMenu,
workList workList,
userrecruitList
}, },
data() { data() {
@@ -140,6 +150,11 @@ export default {
size: 10, size: 10,
total: 0 total: 0
}, },
policyPage: {
current: 1,
size: 10,
total: 0
},
currentAddress: '', currentAddress: '',
currentPoint: { currentPoint: {
latitude: 0, latitude: 0,
@@ -149,7 +164,7 @@ export default {
open: false, open: false,
showPopUp: false, showPopUp: false,
nonReactiveArray: ["推荐任务", "推荐岗位", "推荐政策"], nonReactiveArray: ["推荐任务", "推荐岗位", "推荐招工"],
} }
}, },
onLoad: function () { onLoad: function () {
@@ -251,9 +266,32 @@ export default {
}) })
}, },
getPolicy(){ getPolicy(){
getPolicyContent(1).then(res=>{ let params = {
this.policyContentList=res.data.data.records current: this.policyPage.current,
size: this.policyPage.size,
}
getPushListByUserId(params).then((res) => {
if(res.data.code === 200 ){
const {records, current, total, size } = res.data.data
console.log('个人招工', records, current, total, size)
if(!records.length) {
return uni.showToast({
icon: "none",
title: '没有更多了',
}) })
}
if(current === 1) {
this.policyContentList = records
} else {
this.policyContentList = this.policyContentList.concat(records);
}
this.policyPage.current = current + 1;
this.policyPage.total = total;
}
})
// getPolicyContent(1).then(res=>{
// this.policyContentList=res.data.data.records
// })
}, },
changeTab: function (e) { changeTab: function (e) {
this.activeTab = e; this.activeTab = e;
@@ -306,10 +344,10 @@ export default {
if (this.newPage.current === 1) { if (this.newPage.current === 1) {
this.newList = []; this.newList = [];
} }
this.newPage.current += 1;
this.newPage.total = res.data.data.total; this.newPage.total = res.data.data.total;
if (res.data.data && res.data.data.records.length) { if (res.data.data && res.data.data.records.length) {
this.newList = this.newList.concat(res.data.data.records); this.newList = this.newList.concat(res.data.data.records);
this.newPage.current += 1;
} }
}) })
}, },
@@ -317,7 +355,8 @@ export default {
upLoad: function () { upLoad: function () {
if (this.activeTab === 0) { if (this.activeTab === 0) {
if (this.nearPage.current <= Math.ceil(this.nearPage.total / this.nearPage.size)) { if (this.nearPage.current <= Math.ceil(this.nearPage.total / this.nearPage.size)) {
this.getNearList(this.currentPoint); // this.getNearList(this.currentPoint);
this.getNewList();
} else { } else {
uni.showToast({ uni.showToast({
icon: "none", icon: "none",
@@ -338,22 +377,16 @@ export default {
return return
} }
if (this.activeTab === 2) { if (this.activeTab === 2) {
if (this.newPage.current <= Math.ceil(this.newPage.total / this.newPage.size)) { this.getPolicy()
this.getNewList();
} else {
uni.showToast({
icon: "none",
title: '已经是最后一页',
})
}
return
} }
}, },
//下拉刷新 //下拉刷新
download: function () { download: function () {
if (this.activeTab === 0) { if (this.activeTab === 0) {
this.nearPage.current = 1; this.nearPage.current = 1;
this.newPage.current = 1;
this.getLocation(); this.getLocation();
this.getNewList();
setTimeout(function () { setTimeout(function () {
uni.stopPullDownRefresh(); uni.stopPullDownRefresh();
}, 1000); }, 1000);
@@ -368,8 +401,8 @@ export default {
return return
} }
if (this.activeTab === 2) { if (this.activeTab === 2) {
this.newPage.current = 1; this.policyPage.current = 1;
this.getNewList(); this.getPolicy()
setTimeout(function () { setTimeout(function () {
uni.stopPullDownRefresh(); uni.stopPullDownRefresh();
}, 1000); }, 1000);

View File

@@ -0,0 +1,230 @@
<template>
<view class="body" @click="goInfo(companyitem.id)">
<view class="heads">
<view class="head_left">
<rich-text :nodes="string">
</rich-text>
</view>
<view class="head_right">
{{ companyitem.wage }}{{ wageUnit[companyitem.wageUnitCategory] }}
</view>
</view>
<view class="ask">
<view class="askList">
{{ companyitem.tradeNames }}
</view>
<view class="askList" v-for="(item, index) in skillNames" :key="index">
{{ item }}
</view>
</view>
<!-- <view class="allName">
{{ companyitem.jobCompanyName }}
</view> -->
<view style="width: 100%;height: 1rpx;background-color: #999;margin: 0 auto;opacity: .5;"></view>
<view class="timeAddress" style="position: relative;">
<!-- <view v-if="companyitem.missionCompanyName">
{{ companyitem.missionCompanyName }}
</view> -->
<!-- <view>
<image src="../../static/img/city.png" style="width: 40rpx;height: 40rpx;" mode=""></image>
{{ companyitem.jobCompanyName }}
</view> -->
<view style="display: flex;align-items: center;">
<image src="../../static/img/city.png" style="width: 40rpx;height: 40rpx;margin-right: 10rpx;" mode=""></image>
<view style="font-size: 26rpx;color:#333;">{{ companyitem.jobCompanyName }}</view>
</view>
<!-- <view v-if="near">
{{ companyitem.distanceStr }}km
</view>
<view v-else>
{{ getCity(companyitem.cityId) }}
</view> -->
<view style="display: flex;align-items: center;position:absolute;right:0;">
<image src="../../static/img/location_new.png" style="width: 30rpx;height: 30rpx;" mode=""></image>
<view>2.2km</view>
</view>
</view>
<view class="comment" v-if='comment' @tap.stop="goComment(companyitem.missionNo)">
<view class="comment_content commentimg" v-if='companyitem.scoreAll > 0'>
<image class="commentimg_image" src="../../static/img/star.full.svg" v-for="index1 in companyitem.scoreAll"
mode="" :key="index1"></image>
<image class="commentimg_image" src="../../static/img/star.empty.svg"
v-for="index2 in (5 - companyitem.scoreAll)" mode="" :key="index2"></image>
</view>
<view class="comment_content allName gocomment" v-else>
评价
</view>
</view>
</view>
</template>
<script>
import {
toDoller,
dateFormat
} from "../../untils/format.js";
import dictionary from '@/common/textdata.js';
export default {
beforeCreate: function () { },
props: {
companyitem: {
type: Object,
default() { return [] }
},
comment: {
type: Boolean,
default: false
},
noApply: {
type: Boolean,
default: true
},
near: {
type: Boolean,
default: false
}
},
data() {
return {
...dictionary,
string: "<div style='overflow: hidden;white-space: nowrap;text-overflow: ellipsis;'>" + this.companyitem.jobName +
"</div>"
};
},
computed: {
skillNames() {
return this.companyitem.skillNames.split(',')
}
},
methods: {
goComment: function (no) {
uni.navigateTo({
url: `../../pageMy/mycomment/mycomment?missionNo=${encodeURIComponent(no)}`
})
},
goInfo: function (no) {
console.log('11111')
const isCan = this.noApply === false ? '0' : '1'
uni.navigateTo({
url: `/pages/projectInfo/userrecruitInfo?workId=${encodeURIComponent(no)}&isCan=${isCan}`
})
},
getCity: function (val) {
if (val) {
let areas = this.$store.getters.getAreaParents(val)
if (areas.length === 3) {
return areas[0].label + '-' + areas[1].label + '-' + areas[2].label
}
}
},
toDoller,
dateFormat
}
}
</script>
<style>
.commentimg_image {
width: 40rpx;
height: 40rpx;
}
.commentimg {
display: flex;
align-items: center;
justify-content: flex-end;
}
.gocomment {
font-size: 26rpx !important;
border-radius: 5rpx;
border: 1rpx solid #c3c3c3;
width: 160rpx;
text-align: center;
float: right;
height: 50rpx;
line-height: 50rpx;
}
.timeAddress {
display: flex;
align-items: center;
justify-content: space-between;
font-family: PingFangSC-Regular;
font-size: 24rpx;
color: #999999;
margin: 10rpx 0;
padding: 10rpx 0;
}
.allName {
font-family: PingFangSC-Regular;
font-size: 28rpx;
color: #666666;
}
.askList {
/* width: 14%; */
font-family: PingFangSC-Regular;
font-size: 24rpx;
color: #666666;
background-color: #f6f6f6;
padding: 5rpx 15rpx;
margin-right: 10rpx;
margin-bottom: 10rpx;
}
.ask {
overflow: hidden;
width: 100%;
display: flex;
align-items: center;
flex-wrap: wrap;
justify-content: flex-start;
margin: 20rpx 0;
}
.head_right {
ont-family: PingFangSC-Medium;
font-size: 28rpx;
color: #F46161;
font-weight: bold;
}
.head_left {
font-family: PingFangSC-Medium;
font-size: 32rpx;
font-weight: bold;
color: #333333;
width: 350rpx;
overflow: hidden;
white-space: nowrap;
/*不换行*/
text-overflow: ellipsis;
/*超出部分文字以...显示*/
}
.highlight {
color: #F46161;
}
.body {
width: 690rpx;
margin: 0rpx auto;
background-color: #fefefe;
overflow: hidden;
box-sizing: border-box;
padding: 20rpx;
padding-bottom: 0;
border-radius: 20rpx;
margin-top: 20rpx;
}
.heads {
display: flex;
align-items: center;
justify-content: space-between;
}
</style>

View File

@@ -0,0 +1,571 @@
<template>
<view v-if="showDetail">
<view class="head">
<view class="proname">
{{info.jobName}}
</view>
<!-- <view class="prolist">
任务编码{{info.missionNo}}
</view> -->
<view class="prolist">
发布日期{{dateFormat((info.stime))}}
</view>
<view class="prolist">
招聘人数{{info.peopleNum}}
</view>
<view class="prolist">
行业类型{{info.tradeNames?info.tradeNames:info.jobCompanyIndustry}}
</view>
<view class="prolist">
工种类型{{info.skillNames}}
</view>
<!-- <view class="fee">
{{info.wage}}{{wageUnit[info.wageUnitCategory]}}
</view> -->
</view>
<view class="head">
<view class="proname proneed">
岗位要求
</view>
<!-- <view class="prolist">
<view class="protype">
年龄要求{{age[info.ageDesc]}}
</view>
</view> -->
<view class="prolist">
<view class="protype">
学历要求{{info.education}}
</view>
<view class="protype">
经验要求{{info.experienceDesc}}
</view>
</view>
<view class="prolist">
岗位地址{{info.jobAddress}}
</view>
<view class="prolist proint" style="font-weight: bold;color:#333;">
任务描述
</view>
<view class="prolist description">
{{info.jobDescription}}
</view>
<!-- 技能标签 start -->
<view class="ask">
<view class="askList" v-for="(item,index) in skillNames" :key="index">
{{item}}
</view>
</view>
<!-- 技能标签 end -->
<view v-if="info.jobSources" class="prolist">
来源{{info.jobSources}}
</view>
</view>
<view class="head">
<!-- <view class="proname proneed">
企业信息
</view> -->
<!-- <view class="prolist">
{{info.companyName}}
</view> -->
<!-- <view class="prolist">
企业名称{{info.jobCompanyName}}
</view> -->
<view style="display: flex;align-items: center;">
<image src="../../static/img/city.png" style="width: 40rpx;height: 40rpx;margin-right: 20rpx;" mode=""></image>
<view style="font-size: 30rpx;">{{info.jobCompanyName}}</view>
</view>
</view>
<view class="head">
<view class="proname proneed">
地址
</view>
<!-- <view class="prolist">
<view class="protype">
联系人{{info.callName}}
</view>
<view class="protype">
联系方式{{info.callTel}}
</view>
</view> -->
<!-- <view class="prolist" v-if="info.callNumber">
座机号{{info.callNumber}}
</view> -->
<view class="prolist">
岗位地址{{info.address}}
</view>
<map class="map" :latitude="latitude" :longitude="longitude" :markers="covers"></map>
</view>
<view class="" style="height:200rpx;background-color: #f6f6f6;" v-if="isShow!=='0'"></view>
<view class="btn" v-if="isShow!=='0'&&status===0">
<view @click="collect" style="display: flex;align-items: center;margin-right: 10rpx;flex-direction: column;">
<image v-if="collectStatus == 0" src="../../static/img/collect.png" style="width: 36rpx;height: 36rpx;" mode=""></image>
<image v-if="collectStatus == 1" src="../../static/img/collect_yes.png" style="width: 36rpx;height: 36rpx;" mode=""></image>
<view v-if="collectStatus == 0" style="font-size: 26rpx;color:#707070;margin-top:10rpx;">收藏</view>
<view v-if="collectStatus == 1" style="font-size: 20rpx;color:#707070;margin-top:10rpx;">已收藏</view>
</view>
<view @click="callPhone" class="bottombtn flexbtn" style="margin-right: 10rpx;background-color: #FBAD17;border-radius: 45rpx;">
电话联系
</view>
<view @click="submit" class="bottombtn flexbtn" style="border-radius: 45rpx;">
申请
</view>
</view>
<view class="btn" v-if="isShow!=='0'&&status!==0">
<!-- <view class="bottombtn lookContract" @click="lookMask">查看合同</view> -->
<view @click="collect" style="display: flex;align-items: center;margin-right: 10rpx;flex-direction: column;">
<image v-if="collectStatus == 0" src="../../static/img/collect.png" style="width: 36rpx;height: 36rpx;" mode=""></image>
<image v-if="collectStatus == 1" src="../../static/img/collect_yes.png" style="width: 36rpx;height: 36rpx;" mode=""></image>
<view v-if="collectStatus == 0" style="font-size: 26rpx;color:#707070;margin-top:10rpx;">收藏</view>
<view v-if="collectStatus == 1" style="font-size: 20rpx;color:#707070;margin-top:10rpx;">已收藏</view>
</view>
<view @click="callPhone" class="bottombtn flexbtn" style="margin-right: 10rpx;background-color: #FBAD17;border-radius: 45rpx;">
电话联系
</view>
<view class="bottombtn disabledBtn flexbtn" style="border-radius: 45rpx;">已申请</view>
</view>
<uniMask :maskShow="maskShow">
<view class="contractMask">
<!-- #ifdef H5 || APP-PLUS -->
<view class="close" @click="close" style="top: 124rpx;">+</view>
<!-- #endif -->
<!-- #ifdef MP-WEIXIN -->
<view class="close" @click="close">+</view>
<!-- #endif -->
<view style="height: 30px;"></view>
<img :src="src" alt="" style="width:100%;height: 1000px;">
<view v-if="nextBtn" class="down" @click="next">下一步</view>
</view>
</uniMask>
<u-popup closeable :show="showPopUp" mode="bottom" @close="closePopUp">
<view style="height: 200rpx;padding: 20rpx 40rpx;">
<view style="font-size: 28rpx;font-weight: bold;">重要提示</view>
<view style="font-size: 24rpx;color:#707070;margin-top:10rpx;">为保障个人基本劳动权益建议通过平台用工的形式就业</view>
<view style="text-align: center;font-size:28rpx;margin-top: 30rpx;"> {{ info.callName }} : {{ info.callTel }}</view>
</view>
</u-popup>
</view>
<view v-else-if="showCode" class="codeSealBox">
<!-- #ifdef H5 || APP-PLUS -->
<view class="closeCode" @click="closeShowCode" style="top: 124rpx;">+</view>
<!-- #endif -->
<!-- #ifdef MP-WEIXIN -->
<view class="closeCode" @click="closeShowCode">+</view>
<!-- #endif -->
<view class="title">
<view class="name">签名密码</view>
<view class="tip">6位数字签名密码</view>
</view>
<view style="height: 36px;"></view>
<valid-code ref="validCode" @finish="getInpCode" :maxlength="maxlength"></valid-code>
<view style="height: 36px;"></view>
<view class="forget" @click="forget">忘记密码</view>
</view>
</template>
<script>
import {mapGetters} from 'vuex'
import {missionDetail,submit, getCollectState, updateCollectStatus, workDetail} from '@/api/mission.js';
import {GoLogin} from '@/untils/AxiosUtils.js';
import {setRead} from '@/api/news.js';
import {checkPass} from '@/api/auth.js';
import dictionary from '@/common/textdata.js';
import {dateFormat} from "../../untils/format.js";
import {userrecruitDetail} from '@/api/userrecruit.js'
import uniMask from '@/components/uni-mask/mask.vue'
import validCode from '@/components/p-valid-code/p-valid-code.vue'
export default {
data() {
return {
...dictionary,
info: {},
status: null,
showDetail: false,
showCode: false,
maskShow: false,
nextBtn: false,
loading: false,
latitude: 39.909, //中心点
longitude: 116.39742,
covers: [{ //marker标记位置
id: 0,
latitude: 0,
longitude: 0,
// width:30,
// height:30,
iconPath: '../../static/img/location.png'
}],
missionNo: "",
isShow: '',
type: '',
id: '',
src: 'https://jlfiles.oss-cn-zhangjiakou.aliyuncs.com/jobslink-api/doc/%E7%94%B5%E5%AD%90%E5%90%88%E5%90%8C%E9%A2%84%E8%A7%88%E5%9B%BE%E7%89%87.png',
maxlength: 6,
collectStatus: 0, // 收藏状态
showPopUp: false,
}
},
components: {uniMask,validCode},
onLoad: function(option) { //option为object类型会序列化上个页面传递的参数
// this.$store.dispatch('setAutograph')
if (option.workId) {
this.workId = decodeURIComponent(option.workId);
}
if (option.isCan) {
this.isShow = option.isCan; //isShow为'0'则为我的任务、我的评价过来的,需要隐藏抢任务按钮
}
if (option.type) {
this.type = option.type; //type为1则为消息邀请过来的,需要设置消息已读;
}
if (option.id) {
this.id = option.id; //消息id
}
},
onShow: function() {
this.showDetail = true
this.getData();
},
onShareAppMessage(obj) {
return {
title: this.info.missionTitle,
path: `/pages/projectInfo/projectInfo?missionNo=${this.info.missionNo}`
}
},
methods: {
dateFormat,
collect() {
// console.log('收藏,取消收藏')
const status = this.collectStatus == 0 ? 1 : 0;
updateCollectStatus(this.info.id, status, 2).then(res => {
if(res.data.code == 200) {
this.getCollectStatus()
}
})
},
callPhone() {
this.showPopUp = true;
},
closePopUp() {
this.showPopUp = false;
},
// 获取收藏状态
getCollectStatus() {
getCollectState(this.info.id, 2).then(res => {
// 0 未收藏1 已收藏
// console.log(res)
this.collectStatus = res.data.data;
})
},
getData: function() {
const self = this;
userrecruitDetail(self.workId).then(res => {
self.info = res.data.data;
self.status = res.data.data.status;
self.missionNo = res.data.data.missionNo;
self.latitude = self.info.lat;
self.longitude = self.info.lon;
self.covers[0].latitude = self.info.lat;
self.covers[0].longitude = self.info.lon;
self.showDetail = true;
self.getCollectStatus();
if (self.type === 1) {
// 设置已读
setRead(self.id).then(res => {
self.$store.commit("SET_READ");
})
}
}, error => {
console.log(error);
});
},
submit: function() {
if (!this.$store.state.user.token) {
GoLogin()
return
}
if(this.loading) return
const auth = this.auth
const contractOn = this.info.contractOn
const sealOk = this.autograph && this.autograph.data && this.autograph.data.signSrcUrl
// if (sealOk) {
// console.log('直接抢任务')
// this.submitTask()
// } else
// if (!auth.realNameState || !auth.laborState || !auth.insureState) {
// this.goSign(0)
// } else if (!auth.bankCardState){
// this.goSign(1)
// } else
if (contractOn && !sealOk) {
this.goSign(2)
} else if (sealOk && contractOn){
this.nextBtn = true
this.lookMask()
} else {
this.submitTask()
}
},
// 查看合同
lookMask(){
this.maskShow = true
},
// 岗位申请
submitTask(){
submit(this.missionNo,2).then(res => {
uni.hideLoading()
uni.showToast({
title: '操作成功',
icon: 'none'
});
this.status = null;
this.loading = false
}, error => {
this.loading = false
});
},
// 步骤
goSign(active){
uni.navigateTo({
url: `/pages/projectInfo/signContract?active=${active}`
})
},
// 关闭弹窗
close(){
this.maskShow = false
},
// 合同下一步
next(){
this.maskShow = false
this.showDetail = false
this.showCode = true
},
// 输入签名密码
getInpCode(password){
uni.showLoading({
title:"请求中..."
})
this.loading = true
var obj = {
pass: password
}
checkPass(obj).then(res => {
this.submitTask()
this.closeShowCode()
}).catch(err => {
this.loading = false
})
},
// 关闭签名密码弹窗
closeShowCode(){
this.showCode = false
this.showDetail = true
},
// 忘记密码
forget(){
uni.navigateTo({
url: `/pageMy/setUserBase/seal/forget?forget=true`
})
}
},
computed: {
...mapGetters(['auth', 'autograph']),
skillNames() {
if (this.info.skillNames) {
return this.info.skillNames.split(',')
}
}
}
}
</script>
<style lang="scss">
.codeSealBox{
padding: 285rpx 72rpx 0 72rpx;
.closeCode{
position: absolute;
right: 36rpx;
top: 120rpx;
color: #1B66FF;
transform: rotate(45deg);
font-size: 40px;
}
.title{
display: flex;
align-items: center;
}
.name{
height: 46rpx;
font-size: 46rpx;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #333333;
line-height: 46rpx;
margin-right: 28rpx;
}
.tip{
height: 38rpx;
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #999999;
line-height: 38rpx;
}
.forget{
height: 38rpx;
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #5AA0FA;
line-height: 38rpx;
text-align: right;
}
}
.contractMask{
background-color: #FFFFFF;
margin: 30rpx;
position: relative;
border-radius: 4px;
height: 96%;
overflow: auto;
.close{
width: 23px;
height: 23px;
color: #1B66FF;
position: fixed;
right: 60rpx;
top: 60rpx;
transform: rotate(45deg);
font-size: 40px;
}
.down{
position:fixed;
bottom: 30px;
left:14%;
width: 545rpx;
height: 90rpx;
line-height: 90rpx;
text-align: center;
background: #1B66FF;
font-size: 36rpx;
font-weight: 400;
color: #FFFFFF;
}
}
.lookContract{
width: 30%;
margin-right: 30rpx;
}
.flexbtn{
flex:1;
}
.bottombtn {
background-color: #1B66FF;
color: #fff;
text-align: center;
border-radius: 10rpx;
font-family: PingFangSC-Medium;
font-size: 32rpx;
height: 90rpx;
line-height: 90rpx;
}
.btn {
background-color: #fefefe;
width: 690rpx;
padding: 30rpx;
padding-bottom: 80rpx;
position: fixed;
bottom: 0;
left: 0;
display:flex;
}
.disabledBtn {
background-color: #c8c9cc;
}
.map {
width: 100%;
height: 350rpx;
margin-top: 30rpx;
}
.askList {
font-family: PingFangSC-Regular;
font-size: 24rpx;
color: #666666;
background-color: #f6f6f6;
padding: 5rpx 15rpx;
margin-right: 10rpx;
margin-top: 15rpx;
}
.ask {
overflow: hidden;
width: 100%;
display: flex;
align-items: center;
flex-wrap: wrap;
justify-content: flex-start;
margin: 20rpx 0;
}
.proint {
margin-top: 30rpx;
font-size: 30rpx !important;
}
.proneed {
font-size: 32rpx !important;
}
.fee {
font-family: PingFangSC-Medium;
font-size: 32rpx;
color: #F46161;
margin-top: 30rpx;
}
.protype {
width: 50%;
}
.prolist {
font-family: PingFangSC-Regular;
font-size: 28rpx;
color: #666666;
display: flex;
align-items: center;
justify-content: space-between;
text-align: left;
padding: 5rpx 0;
}
.proname {
font-weight: bold;
font-family: PingFangSC-Medium;
font-size: 40rpx;
color: #333333;
width: 90%;
overflow: hidden;
padding-bottom: 20rpx;
}
.head {
padding: 30rpx;
background: #fefefe;
border-bottom: 20rpx solid #f6f6f6;
}
.description {
word-break: break-all;
white-space: pre-line;
}
</style>

View File

@@ -174,6 +174,7 @@
import {checkPass} from '@/api/auth.js'; import {checkPass} from '@/api/auth.js';
import dictionary from '@/common/textdata.js'; import dictionary from '@/common/textdata.js';
import {dateFormat} from "../../untils/format.js"; import {dateFormat} from "../../untils/format.js";
import {userrecruitDetail} from '@/api/userrecruit.js'
import uniMask from '@/components/uni-mask/mask.vue' import uniMask from '@/components/uni-mask/mask.vue'
import validCode from '@/components/p-valid-code/p-valid-code.vue' import validCode from '@/components/p-valid-code/p-valid-code.vue'
export default { export default {

View File

@@ -5,7 +5,7 @@
<view class="search-item"> <view class="search-item">
<image src="../../static/img/search.svg" style="width: 32rpx;height: 32rpx;" mode=""></image> <image src="../../static/img/search.svg" style="width: 32rpx;height: 32rpx;" mode=""></image>
<input type="text" confirm-type="搜索" v-model="keywords" @confirm="getNewList('search')" <input type="text" confirm-type="搜索" v-model="keywords" @confirm="getNewList('search')"
placeholder="搜任务/搜岗位/搜政策" /> placeholder="搜任务/搜岗位/搜政策/搜招工" />
<view @click="getNewList('search')" style="width: 80rpx;height: 50rpx;color:#fff;background-color: #0091ff;font-size:24rpx;text-align: center;line-height: 50rpx;border-radius: 25rpx;;">搜索</view> <view @click="getNewList('search')" style="width: 80rpx;height: 50rpx;color:#fff;background-color: #0091ff;font-size:24rpx;text-align: center;line-height: 50rpx;border-radius: 25rpx;;">搜索</view>
</view> </view>
<!-- <view class="close" @click="closeBack"> <!-- <view class="close" @click="closeBack">
@@ -37,6 +37,7 @@
<view class="type" v-if="item.type == 0">任务</view> <view class="type" v-if="item.type == 0">任务</view>
<view class="type" v-else-if="item.type == 1">岗位</view> <view class="type" v-else-if="item.type == 1">岗位</view>
<view class="type" v-else-if="item.type == 2">政策</view> <view class="type" v-else-if="item.type == 2">政策</view>
<view class="type" v-else-if="item.type == 3">招工</view>
</view> </view>
<view v-if="searchResultList.length > 0" style="text-align: center;font-size: 26rpx;margin-top: 20rpx;color:#999;">没有更多数据了</view> <view v-if="searchResultList.length > 0" style="text-align: center;font-size: 26rpx;margin-top: 20rpx;color:#999;">没有更多数据了</view>
<view v-if="searchResultList.length == 0" style="text-align: center;font-size: 26rpx;margin-top: 20rpx;">暂无数据</view> <view v-if="searchResultList.length == 0" style="text-align: center;font-size: 26rpx;margin-top: 20rpx;">暂无数据</view>

View File

@@ -4,9 +4,9 @@ module.exports = {
proxy: { proxy: {
'/api': { '/api': {
// target: 'http://192.168.3.104:8000', // 本地服务接口地址 // target: 'http://192.168.3.104:8000', // 本地服务接口地址
target: "http://39.98.184.58:8000", // 阿里云后台地址 // target: "http://39.98.184.58:8000", // 阿里云后台地址
// target: "http://192.168.0.101:8000", // 本地网关 // target: "http://192.168.0.101:8000", // 本地网关
// target: 'http://192.168.3.111:8000', // 本地服务接口地址 target: 'http://192.168.3.111:8000', // 本地服务接口地址
ws: true, ws: true,
pathRewrite: { pathRewrite: {
'^/api': '/' '^/api': '/'