flat: 国庆节暂存

This commit is contained in:
史典卓
2024-10-09 10:14:51 +08:00
parent 6504a558ac
commit a4ffe68ec2
32 changed files with 2663 additions and 2135 deletions

View File

@@ -191,16 +191,16 @@
</view>
</view>
<view class="info_market">
<!-- <view class="info_market">
<view class="market_top">
<view class="top_log"></view>
<view class="next_market" @click="navTo('/pages/market/market')">去市场</view>
</view>
<!-- <view class="market_bottom">
<view class="market_bottom">
<view>了解市场<u-icon name="arrow-right" color="#666666" size="13"></u-icon></view>
<view>我要咨询<u-icon name="arrow-right" color="#666666" size="13"></u-icon></view>
</view> -->
</view>
</view>
</view> -->
<view class="latestMission">
<view class="cardTips"
@@ -293,36 +293,21 @@
};
},
onLoad: function(options) {
if (this.$api.haslogin()) {
this.$store.dispatch('getResumeInfo')
}
},
onShow: function() {
if (!this.$store.state.user.token) {
uni.reLaunch({
url: '/pages/login/login'
})
return
}
this.$store.dispatch('refreshAuthState').then((e) => {
var auth = this.$store.state.auth
if (!auth.bankCardState) {
this.step()
}
})
this.download()
this.getSwiperList()
this.getPolicy()
if (this.IsResume) {
myResume().then(res => {
const data = res.data.data
if (!(data.education && data.telephone && data.wage && data.workplace)) {
this.goures()
this.$api.sleep(1000).then(() => {
this.$api.msg('请输入基本信息')
})
if (this.$api.haslogin()) {
this.$store.dispatch('refreshAuthState').then((e) => {
var auth = this.$store.state.auth
if (!auth.bankCardState) {
this.step()
}
})
this.IsResume = false
}
},
onReady() {
@@ -399,11 +384,11 @@
})
},
download: function() {
this.isLogin = this.$store.state.user.token ? true : false;
this.isLogin = this.$api.haslogin() ? true : false;
newMission().then(res => {
this.companyList = res.data.data;
});
if (this.$store.state.user.token) {
if (this.$api.haslogin()) {
uni.$emit('newsReadChange')
this.$store.dispatch("getUnreadNum");
recMission().then(res => {
@@ -412,25 +397,7 @@
};
},
goLocation: function() {
if (!this.$store.state.user.token) {
uni.showModal({
title: '提示',
content: '您还未登录,点击确认去登录',
success: function(res) {
if (res.confirm) {
uni.redirectTo({
url: "/pages/login/login"
});
} else if (res.cancel) {
return
}
}
});
} else {
uni.navigateTo({
url: '../mapSeach/mapSeach'
});
}
this.navTo('../mapSeach/mapSeach', true)
},
goResume: function() {
uni.navigateTo({
@@ -444,40 +411,16 @@
});
},
goures: function() {
if (!this.$store.state.user.token) {
uni.showModal({
title: '提示',
content: '您还未登录,点击确认去登录',
success: function(res) {
if (res.confirm) {
uni.redirectTo({
url: "/pages/login/login"
});
} else if (res.cancel) {
return
}
}
});
} else {
uni.navigateTo({
url: '/pageMy/my/resume/index'
});
}
this.navTo('/pageMy/my/resume/index', true)
},
toNewTask() {
uni.navigateTo({
url: `/pages/project/newProject?tabIndex=${0}`
});
this.navTo(`/pages/project/newProject?tabIndex=${0}`, false)
},
toNewWork() {
uni.navigateTo({
url: `/pages/project/newProject?tabIndex=${1}`
});
this.navTo(`/pages/project/newProject?tabIndex=${1}`, false)
},
toNewProject() {
uni.navigateTo({
url: `/pages/project/newProject?tabIndex=${2}`
});
this.navTo(`/pages/project/newProject?tabIndex=${2}`, false)
},
toArticleDetail(id) {
if (id) {
@@ -487,49 +430,11 @@
}
},
gouserSet: function() {
if (!this.$store.state.user.token) {
uni.showModal({
title: '提示',
content: '您还未登录,点击确认去登录',
success: function(res) {
if (res.confirm) {
uni.redirectTo({
url: "/pages/login/login"
});
} else if (res.cancel) {
return
}
}
});
} else {
uni.navigateTo({
url: '/pageMy/setUserBase/index'
});
}
this.navTo('/pageMy/setUserBase/index', true)
},
goSeach: function() {
if (!this.$store.state.user.token) {
uni.showModal({
title: '提示',
content: '您还未登录,点击确认去登录',
success: function(res) {
if (res.confirm) {
uni.redirectTo({
url: '/pages/login/login'
})
} else if (res.cancel) {
return
}
}
});
} else {
// if (this.keywords) {
uni.navigateTo({
url: '../seach/seach?keywords=' + this.keywords
});
this.keywords = ''
// }
}
this.navTo('../seach/seach?keywords=' + this.keywords, true)
this.keywords = ''
},
getSwiperList() {
getSwiperList(this.swiperType).then(res => {

View File

@@ -7,6 +7,9 @@
import {
mapGetters
} from 'vuex'
import {
GoLogin
} from '@/untils/AxiosUtils.js';
import website from '@/config/website.js'
export default {
data() {
@@ -17,7 +20,7 @@
},
onLoad(options) {
uni.showLoading({
title: ''
title: '登录中'
})
if (options.token) {
const that = this
@@ -39,7 +42,6 @@
if (!auth.bankCardState) {
that.goSign(0)
} else {
uni.switchTab({
url: '/pages/index/index'
})
@@ -50,9 +52,10 @@
// this.$refs.code.refushCode()
});
} else {
uni.reLaunch({
url: '/pages/login/login'
})
// uni.reLaunch({
// url: '/pages/login/login'
// })
GoLogin()
}
},
method: {

View File

@@ -1,170 +1,171 @@
<template>
<login-template title="账号登录">
<!-- #ifdef H5 -->
<!-- <view class="login-go-home" @click="goHome">
<image class="login-go-home-image" src="@/static/img/home.svg"></image>
</view> -->
<!-- #endif -->
<jl-input type="text" v-model="phone" placeholder="请输入手机号" @confirm="login"></jl-input>
<jl-input type="text" v-model="password" placeholder="请输入登录密码" @confirm="login" showPassword clearable></jl-input>
<!-- <code-input ref="code" v-model="code" :getCode="getCaptcha" @key-change="keyChange" @confirm="login"></code-input> -->
<view v-if="loading" class="btn nocheck" loading="true"></view>
<view v-else-if="validate" class="btn" @click="login">立即登录</view>
<view v-else class="btn nocheck">立即登录</view>
<!-- <view class="changeLogintype">
<view class="" @click="goReg">手机注册</view>
<view class="" @click="goForget">忘记密码</view>
</view> -->
</login-template>
</template>
<script>
import {
mapGetters
} from 'vuex'
import {
getCaptcha
} from '@/api/user.js'
import {
isMobile
} from '@/untils/validate.js'
import website from '@/config/website.js'
import codeInput from './codeInput.vue'
import jlInput from '@/components/jl-input/main.vue'
import loginTemplate from './template.vue'
export default {
components: {
jlInput,
codeInput,
loginTemplate
},
data() {
return {
phone: '',
password: '',
code: '1111',
key: '',
loading: false
}
},
created() {
if (this.userInfo.token) {
uni.navigateBack()
}
},
onShow() {
// #ifdef MP-WEIXIN
wx.hideHomeButton();
//#endif
this.password = ''
if (this.$store.state.user.token) {
this.$store.dispatch('LogOut').then(() => {
this.$store.dispatch('clearAuthState')
this.$store.dispatch('endRefreshNewsTimer')
})
}
},
methods: {
goHome() {
uni.switchTab({
url: '/pages/index/index'
})
},
login(e) {
if (this.validate) {
this.userChecked = true;
console.log(this.userChecked)
// if (!this.userChecked) {
// uni.showToast({
// title:'请先阅读并同意《服务及隐私协议》',
// icon:'none',
// })
// } else {
var that = this
this.loading = true
this.$store.dispatch("LoginByUsername", {
username: this.phone,
password: this.password,
key: this.key,
code: this.code,
type: "account",
tenantId: website.tenantId
}).then((resp) => {
this.$store.dispatch('refreshAuthState').then(() => {
that.loading = false
var auth = this.auth
if (!auth.bankCardState) {
that.goSign(0)
} else {
uni.switchTab({
url: '/pages/index/index'
})
}
})
}).catch((err) => {
this.loading = false
// this.$refs.code.refushCode()
location.href = "https://dy12333.org.cn/h5/"
});
// }
}
},
// 步骤
goSign(active) {
uni.navigateTo({
url: `/pages/projectInfo/signContract?active=${active}`
})
},
keyChange(val) {
this.key = val
},
goReg() {
uni.navigateTo({
url: './reg'
})
},
goForget() {
uni.navigateTo({
url: './forgetPwd'
})
},
getCaptcha
},
computed: {
...mapGetters(['userInfo', 'auth', 'autograph', 'userChecked']),
validate() {
return this.phone && this.password && this.code
}
}
}
</script>
<style>
@import "./css.css";
/* #ifdef H5 */
.login-go-home {
position: absolute;
top: 10rpx;
left: 0;
border-radius: 50%;
width: 60rpx;
height: 60rpx;
background: rgb(217, 217, 217);
border: 1px solid rgb(198, 198, 198);
}
.login-go-home-image {
width: 40rpx;
height: 40rpx;
margin: auto;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
/* #endif */
</style>
<template>
<login-template title="账号登录">
<!-- #ifdef H5 -->
<!-- <view class="login-go-home" @click="goHome">
<image class="login-go-home-image" src="@/static/img/home.svg"></image>
</view> -->
<!-- #endif -->
<jl-input type="text" v-model="phone" placeholder="请输入手机号" @confirm="login"></jl-input>
<jl-input type="text" v-model="password" placeholder="请输入登录密码" @confirm="login" showPassword
clearable></jl-input>
<!-- <code-input ref="code" v-model="code" :getCode="getCaptcha" @key-change="keyChange" @confirm="login"></code-input> -->
<view v-if="loading" class="btn nocheck" loading="true"></view>
<view v-else-if="validate" class="btn" @click="login">立即登录</view>
<view v-else class="btn nocheck">立即登录</view>
<!-- <view class="changeLogintype">
<view class="" @click="goReg">手机注册</view>
<view class="" @click="goForget">忘记密码</view>
</view> -->
</login-template>
</template>
<script>
import {
mapGetters
} from 'vuex'
import {
getCaptcha
} from '@/api/user.js'
import {
isMobile
} from '@/untils/validate.js'
import website from '@/config/website.js'
import codeInput from './codeInput.vue'
import jlInput from '@/components/jl-input/main.vue'
import loginTemplate from './template.vue'
export default {
components: {
jlInput,
codeInput,
loginTemplate
},
data() {
return {
phone: '',
password: '',
code: '1111',
key: '',
loading: false
}
},
created() {
if (this.userInfo.token) {
uni.navigateBack()
}
},
onShow() {
// #ifdef MP-WEIXIN
wx.hideHomeButton();
//#endif
this.password = ''
if (this.$api.haslogin()) {
this.$store.dispatch('LogOut').then(() => {
this.$store.dispatch('clearAuthState')
this.$store.dispatch('endRefreshNewsTimer')
})
}
},
methods: {
goHome() {
uni.switchTab({
url: '/pages/index/index'
})
},
login(e) {
if (this.validate) {
this.userChecked = true;
console.log(this.userChecked)
// if (!this.userChecked) {
// uni.showToast({
// title:'请先阅读并同意《服务及隐私协议》',
// icon:'none',
// })
// } else {
var that = this
this.loading = true
this.$store.dispatch("LoginByUsername", {
username: this.phone,
password: this.password,
key: this.key,
code: this.code,
type: "account",
tenantId: website.tenantId
}).then((resp) => {
this.$store.dispatch('refreshAuthState').then(() => {
that.loading = false
var auth = this.auth
if (!auth.bankCardState) {
that.goSign(0)
} else {
uni.switchTab({
url: '/pages/index/index'
})
}
})
}).catch((err) => {
this.loading = false
// this.$refs.code.refushCode()
location.href = "https://dy12333.org.cn/h5/"
});
// }
}
},
// 步骤
goSign(active) {
uni.navigateTo({
url: `/pages/projectInfo/signContract?active=${active}`
})
},
keyChange(val) {
this.key = val
},
goReg() {
uni.navigateTo({
url: './reg'
})
},
goForget() {
uni.navigateTo({
url: './forgetPwd'
})
},
getCaptcha
},
computed: {
...mapGetters(['userInfo', 'auth', 'autograph', 'userChecked']),
validate() {
return this.phone && this.password && this.code
}
}
}
</script>
<style>
@import "./css.css";
/* #ifdef H5 */
.login-go-home {
position: absolute;
top: 10rpx;
left: 0;
border-radius: 50%;
width: 60rpx;
height: 60rpx;
background: rgb(217, 217, 217);
border: 1px solid rgb(198, 198, 198);
}
.login-go-home-image {
width: 40rpx;
height: 40rpx;
margin: auto;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
/* #endif */
</style>

File diff suppressed because it is too large Load Diff

View File

@@ -57,26 +57,26 @@
认证信息
<image src="../../static/img/right.svg" mode=""></image>
</view>
<view class="btnList" @click="navTo('/pageMy/setUserBase/mailbox')">
<!-- <view class="btnList" @click="navTo('/pageMy/setUserBase/mailbox')">
<image src="../../static/img/evaluate.png" mode=""></image>
咨询信箱
<image src="../../static/img/right.svg" mode=""></image>
</view>
</view> -->
<view class="btnList" @click="navTo('/pageMy/setUserBase/applicationsRecord')">
<image src="../../static/img/phone.svg" mode=""></image>
问卷调查
<image src="../../static/img/right.svg" mode=""></image>
</view>
<view class="btnList" @click="navTo('/pageMy/setUserBase/survey')">
<!-- <view class="btnList" @click="navTo('/pageMy/setUserBase/survey')">
<image src="../../static/img/phone.svg" mode=""></image>
用工调研
<image src="../../static/img/right.svg" mode=""></image>
</view>
<view class="btnList" @click="navTo('/pageMy/setUserBase/complain')">
</view> -->
<!-- <view class="btnList" @click="navTo('/pageMy/setUserBase/complain')">
<image src="../../static/img/vip.svg" mode=""></image>
投诉建议
<image src="../../static/img/right.svg" mode=""></image>
</view>
</view> -->
<template v-if="user.userIsCms">
<view class="btnList" @click="navTo('/pageMy/admin/check')">
<image src="../../static/img/check1.png" mode=""></image>
@@ -122,6 +122,9 @@
</template>
<script>
import {
GoLogin
} from '@/untils/AxiosUtils.js';
import {
mapState,
mapGetters
@@ -140,19 +143,28 @@
}
},
onLoad() {
this.$store.dispatch('getMobileIsCms')
// if (this.$store.state.user.token && this.authPass) {
// this.$store.dispatch('getMobileIsCms')
// if (this.$api.haslogin() && this.authPass) {
// this.$store.dispatch('getVipCode')
// }
},
onShow() {
if (!this.$store.state.user.token) {
uni.redirectTo({
url: '/pages/login/login'
if (/token/g.test(location.href)) {
this.$api.sleep(2000).then(() => {
if (!this.$api.haslogin()) {
GoLogin()
} else {
uni.$emit('newsReadChange')
this.$store.dispatch('refreshAuthState')
}
})
} else {
uni.$emit('newsReadChange')
this.$store.dispatch('refreshAuthState')
if (!this.$api.haslogin()) {
GoLogin()
} else {
uni.$emit('newsReadChange')
this.$store.dispatch('refreshAuthState')
}
}
// this.labourUnionInfoInit()
},

View File

@@ -27,7 +27,9 @@
import {
mapGetters
} from 'vuex'
import {
GoLogin
} from '@/untils/AxiosUtils.js';
export default {
data() {
return {
@@ -36,14 +38,21 @@
},
onLoad() {},
onShow() {
if (!this.$store.state.user.token) {
uni.redirectTo({
url: "/pages/login/login"
if (/token/g.test(location.href)) {
this.$api.sleep(2000).then(() => {
if (!this.$api.haslogin()) {
GoLogin()
} else {
uni.$emit('newsReadChange')
}
})
} else {
uni.$emit('newsReadChange')
if (!this.$api.haslogin()) {
GoLogin()
} else {
uni.$emit('newsReadChange')
}
}
console.log(this.news)
},
onPullDownRefresh() {
this.loading = true

View File

@@ -92,24 +92,18 @@
},
mounted() {
const _this = this
uni.getLocation({
type: 'gcj02',
success: function(res) {
const {
longitude,
latitude
} = res
_this.latitude = latitude
_this.longitude = longitude
_this.getList(longitude, latitude).then((covers) => {
_this.$refs.uMap.addFeature(covers)
})
},
fail: function(err) {
_this.$api.msg('无法获得周边信息')
},
complete: function(e) {}
})
console.log(this.$store.state.user.userLocation)
if (this.$store.state.user.userLocation) {
const {
latitude,
longitude
} = this.$store.state.user.userLocation
_this.getList(longitude, latitude).then((covers) => {
_this.$refs.uMap.addFeature(covers)
})
} else {
_this.$api.msg('无法获得周边信息')
}
},
onShow() {
// const _this = this
@@ -144,25 +138,17 @@
},
search() {
const _this = this
uni.getLocation({
type: 'gcj02',
success: function(res) {
const {
longitude,
latitude
} = res
_this.latitude = latitude
_this.longitude = longitude
_this.getList(longitude, latitude).then((covers) => {
_this.$api.msg('成功获得周边信息')
_this.$refs.uMap.addFeature(covers)
})
},
fail: function(err) {
_this.$api.msg('无法获得周边信息')
},
complete: function(e) {}
})
if (this.$store.state.user.userLocation) {
const {
latitude,
longitude
} = this.$store.state.user.userLocation
_this.getList(longitude, latitude).then((covers) => {
_this.$refs.uMap.addFeature(covers)
})
} else {
_this.$api.msg('无法获得周边信息')
}
// this.getList(this.longitude, this.latitude).then((covers) => {
// this.$api.msg('成功获得周边信息')
// console.log(covers)

View File

@@ -31,7 +31,7 @@
<block v-if="activeTab == 0">
<view v-if="newList.length > 0">
<block v-for="(item, index) in newList" :key="index">
<companyList :companyitem="item"></companyList>
<companyList :companyitem="item" :position="userLocation"></companyList>
</block>
</view>
<view v-else>
@@ -51,7 +51,7 @@
<view v-if="companyList.length > 0">
<block v-for="(item, index) in companyList" :key="item.id">
<workList :companyitem="item" :near="activeTab === 0"></workList>
<workList :companyitem="item" :position="userLocation" :near="activeTab === 0"></workList>
</block>
</view>
<view v-else>
@@ -109,7 +109,9 @@
getcoder
} from "@/api/map.js";
import verticalMenu from '@/components/vertical-menu/vertical-menu.vue';
import {
mapGetters
} from 'vuex'
export default {
components: {
vTabs,
@@ -117,15 +119,16 @@
verticalMenu,
workList
},
computed: {
...mapGetters(['userLocation']),
},
data() {
return {
policyContentList: [],
activeTab: 0,
activeTab: '0',
companyList: [],
recommendList: [],
newList: [],
nearPage: {
current: 1,
size: 10,
@@ -142,10 +145,7 @@
total: 0
},
currentAddress: '',
currentPoint: {
latitude: 0,
longitude: 0
},
key: 'FW3BZ-6JTK6-GCUS5-MZCRR-3GPR5-HJFEI',
open: false,
showPopUp: false,
@@ -157,10 +157,11 @@
if (option.tabIndex) {
this.activeTab = option.tabIndex
}
this.getData()
this.getPolicy()
this.$store.dispatch('getUserLocation')
this.download()
},
onShow: function() {
const enumTitle = {
"0": '最新零工岗位',
"1": '最新全职岗位',
@@ -169,7 +170,7 @@
uni.setNavigationBarTitle({
title: enumTitle[this.activeTab]
})
if (this.$store.state.user.token) {
if (this.$api.haslogin()) {
this.$store.dispatch('refreshAuthState').then((e) => {
var auth = this.$store.state.auth
if (!auth.bankCardState) {
@@ -177,7 +178,6 @@
}
})
}
const value = uni.getStorageSync('active');
if (value) {
this.activeTab = value;
@@ -190,13 +190,7 @@
},
/*下拉刷新*/
onPullDownRefresh: function() {
if (!this.$store.state.user.token) {
uni.redirectTo({
url: "/pages/login/login"
});
} else {
this.download();
}
this.download();
},
methods: {
step() {
@@ -228,30 +222,6 @@
url: '/pageMy/my/resume/addSkill'
})
},
/*定位*/
getLocation: function() {
var that = this;
uni.getLocation({
type: 'gcj02',
success: function(res) {
that.currentPoint = {
latitude: res.latitude,
longitude: res.longitude
}
// that.getAddrByPoint(res);
that.getNearList(that.currentPoint)
},
complete: function(e) {}
});
},
/*逆地址解析*/
getAddrByPoint: function(point) {
var that = this;
var location = point.latitude + ',' + point.longitude
getcoder(location, encodeURI(that.key), 0).then(res => {
that.currentAddress = res.data.result.address
});
},
goSeach: function() {
uni.navigateTo({
url: '../seach/seach'
@@ -271,8 +241,8 @@
this.activeTab = e;
},
//附近任务;
getNearList: function(point) {
nearMission(this.nearPage.current, this.nearPage.size).then(res => {
getNearList: function() {
nearMission(this.nearPage.current, this.nearPage.size, 1).then(res => {
if (this.nearPage.current === 1) {
this.companyList = [];
}
@@ -313,7 +283,7 @@
},
//最新任务;
getNewList: function() {
newMissionAll(this.newPage.current, this.newPage.size, '').then(res => {
newMissionAll(this.newPage.current, this.newPage.size, '', 1).then(res => {
if (this.newPage.current === 1) {
this.newList = [];
}
@@ -326,32 +296,31 @@
},
//上拉加载
upLoad: function() {
if (this.activeTab === 0) {
if (this.nearPage.current <= Math.ceil(this.nearPage.total / this.nearPage.size)) {
this.getNearList(this.currentPoint);
} else {
uni.showToast({
icon: "none",
title: '已经是最后一页',
})
}
return
}
if (this.activeTab === 1) {
if (this.recommendPage.current <= Math.ceil(this.recommendPage.total / this.recommendPage
.size)) {
this.getRecommendList();
} else {
uni.showToast({
icon: "none",
title: '已经是最后一页',
})
}
return
}
if (this.activeTab === 2) {
if (this.activeTab === '0') {
if (this.newPage.current <= Math.ceil(this.newPage.total / this.newPage.size)) {
this.getNewList();
this.getNewList()
} else {
uni.showToast({
icon: "none",
title: '已经是最后一页',
})
}
return
}
if (this.activeTab === '1') {
if (this.nearPage.current <= Math.ceil(this.nearPage.total / this.nearPage.size)) {
this.getNearList();
} else {
uni.showToast({
icon: "none",
title: '已经是最后一页',
})
}
return
}
if (this.activeTab === '2') {
if (this.newPage.current <= Math.ceil(this.newPage.total / this.newPage.size)) {
this.getPolicy();
} else {
uni.showToast({
icon: "none",
@@ -365,25 +334,24 @@
download: function() {
console.log(this.activeTab)
if (this.activeTab === '0') {
this.nearPage.current = 1;
console.log('123123')
this.getLocation();
this.newPage.current = 1;
this.getNewList();
setTimeout(function() {
uni.stopPullDownRefresh();
}, 1000);
return
}
if (this.activeTab === '1') {
this.recommendPage.current = 1;
this.getRecommendList();
this.nearPage.current = 1;
this.getNearList();
setTimeout(function() {
uni.stopPullDownRefresh();
}, 1000);
return
}
if (this.activeTab === '2') {
this.newPage.current = 1;
this.getNewList();
// this.newPage.current = 1;
this.getPolicy();
setTimeout(function() {
uni.stopPullDownRefresh();
}, 1000);
@@ -391,20 +359,13 @@
}
},
getData: function() {
if (!this.$store.state.user.token) {
uni.redirectTo({
url: "/pages/login/login"
});
} else {
uni.$emit('newsReadChange');
this.nearPage.current = 1;
this.recommendPage.current = 1;
this.newPage.current = 1;
this.getLocation();
this.getRecommendList();
this.getNewList();
this.getNearList();
}
uni.$emit('newsReadChange');
this.nearPage.current = 1;
this.recommendPage.current = 1;
this.newPage.current = 1;
this.getRecommendList();
this.getNewList();
this.getNearList();
},
@@ -442,7 +403,8 @@
.content {
background-color: #f3f4f8;
padding-top: 20rpx;
min-height: 80vh;
/* min-height: 80vh; */
min-height: calc(100vh - var(--window-top) - var(--status-bar-height) - var(--window-bottom));
}

View File

@@ -181,7 +181,7 @@
this.getPolicy()
},
onShow: function() {
if (this.$store.state.user.token) {
if (this.$api.haslogin()) {
this.$store.dispatch('refreshAuthState').then((e) => {
var auth = this.$store.state.auth
if (!auth.bankCardState) {
@@ -202,7 +202,7 @@
},
/*下拉刷新*/
onPullDownRefresh: function() {
if (!this.$store.state.user.token) {
if (!this.$api.haslogin()) {
uni.redirectTo({
url: "/pages/login/login"
});
@@ -244,7 +244,7 @@
getLocation: function() {
var that = this;
uni.getLocation({
type: 'gcj02',
type: 'wgs84',
success: function(res) {
that.currentPoint = {
latitude: res.latitude,
@@ -455,7 +455,7 @@
}
},
getData: function() {
if (!this.$store.state.user.token) {
if (!this.$api.haslogin()) {
uni.redirectTo({
url: "/pages/login/login"
});
@@ -588,7 +588,7 @@
.positionText {
margin: 0 10rpx;
font-weight: bold;
font-weight: bold;
}
}
@@ -610,7 +610,8 @@
.content {
background-color: #f3f4f8;
padding-top: 20rpx;
min-height: 80vh;
/* min-height: 80vh; */
min-height: calc(100vh - var(--window-top) - var(--status-bar-height) - var(--window-bottom));
}

View File

@@ -12,13 +12,16 @@
</view>
<view class="content">
<view class="typeButtonWrapper">
<view class="typeButtonLeft">
<scroll-view class="typeButtonLeft" scroll-x="true" scroll-left="0">
<view v-for="(item, index) in nonReactiveArray" :key="index"
:class="['typeButton', index == activeTab ? 'activeButton' : '']" @click="changeTab(index)">{{
item
}}</view>
</view>
:class="['typeButton', index == activeTab ? 'activeButton' : '']" @click="changeTab(index)">
{{item}}
</view>
</scroll-view>
<!-- <view class="typeButtonLeft">
<view v-for="(item, index) in nonReactiveArray" :key="index"
:class="['typeButton', index == activeTab ? 'activeButton' : '']" @click="changeTab(index)">{{item}}</view>
</view> -->
<!-- 筛选 -->
<view class="screenButton" @click="showPopUp = true">
筛选
@@ -55,7 +58,7 @@
<view v-if="companyList.length > 0" style="padding-bottom: 20rpx;">
<block v-for="(item, index) in companyList" :key="item.id">
<workList :companyitem="item" :near="activeTab === 0"></workList>
<workList :companyitem="item" :position="userLocation" :near="activeTab === 0"></workList>
</block>
</view>
<view v-else>
@@ -103,6 +106,9 @@
import companyList from '@/components/companyList/companyList.vue';
import workList from '@/components/companyList/workList.vue'
import userrecruitList from './userrecruitList.vue'
import {
GoLogin
} from '@/untils/AxiosUtils.js';
import {
newMissionAll,
recommendMission,
@@ -164,41 +170,25 @@
total: 0
},
currentAddress: '',
currentPoint: {
latitude: 0,
longitude: 0
},
key: 'FW3BZ-6JTK6-GCUS5-MZCRR-3GPR5-HJFEI',
open: false,
showPopUp: false,
isSearch: false,
searchData: {},
// nonReactiveArray: ["推荐任务", "推荐岗位", "个体户招工"],
nonReactiveArray: ["推荐零工岗位", "推荐全职岗位", "全部零工岗位", "全部全职岗位"],
}
},
onLoad: function() {
this.getData()
console.log('userLocation', this.userLocation)
// this.getPolicy()
this.$store.dispatch('getUserLocation')
},
onShow: function() {
this.download();
if (this.$store.state.user.token) {
this.$store.dispatch('refreshAuthState').then((e) => {
var auth = this.$store.state.auth
if (!auth.bankCardState) {
this.step()
}
if (/token/g.test(location.href)) {
this.$api.sleep(2000).then(() => {
this.showInit()
})
}
const value = uni.getStorageSync('active');
if (value) {
this.activeTab = value;
uni.removeStorageSync('active')
} else {
this.showInit()
}
},
/*页面滚动到底部 换页*/
@@ -207,7 +197,7 @@
},
/*下拉刷新*/
onPullDownRefresh: function() {
if (!this.$store.state.user.token) {
if (!this.$api.haslogin()) {
uni.redirectTo({
url: "/pages/login/login"
});
@@ -216,6 +206,27 @@
}
},
methods: {
showInit() {
if (!this.$api.haslogin()) {
GoLogin()
return
}
this.getData()
this.download();
if (this.$api.haslogin()) {
this.$store.dispatch('refreshAuthState').then((e) => {
var auth = this.$store.state.auth
if (!auth.bankCardState) {
this.step()
}
})
}
const value = uni.getStorageSync('active');
if (value) {
this.activeTab = value;
uni.removeStorageSync('active')
}
},
step() {
var that = this
that.open = true
@@ -245,23 +256,6 @@
url: '/pageMy/my/resume/addSkill'
})
},
/*定位*/
getLocation: function() {
var that = this;
uni.getLocation({
type: 'gcj02',
success: function(res) {
that.currentPoint = {
latitude: res.latitude,
longitude: res.longitude
}
console.log('打印', res)
// that.getAddrByPoint(res);
that.getNearList(that.currentPoint)
},
complete: function(e) {}
});
},
/*逆地址解析*/
getAddrByPoint: function(point) {
var that = this;
@@ -419,10 +413,10 @@
//下拉刷新
download: function() {
this.isSearch = false;
this.$store.dispatch('getUserLocation')
if (this.activeTab === 0 || this.activeTab === 2) {
this.nearPage.current = 1;
this.newPage.current = 1;
this.getLocation();
this.getNewList()
setTimeout(function() {
uni.stopPullDownRefresh();
@@ -430,7 +424,8 @@
return
}
if (this.activeTab === 1 || this.activeTab === 3) {
this.nearPage.current === 1
this.nearPage.current = 1;
this.newPage.current = 1;
this.getNearList()
setTimeout(function() {
uni.stopPullDownRefresh();
@@ -447,20 +442,19 @@
// }
},
getData: function() {
if (!this.$store.state.user.token) {
uni.redirectTo({
url: "/pages/login/login"
});
} else {
uni.$emit('newsReadChange');
this.nearPage.current = 1;
this.policyPage.current = 1;
this.newPage.current = 1;
this.getLocation();
// this.getNewList();
// this.getNearList();
// this.getPolicy()
}
// if (!this.$api.haslogin()) {
// uni.redirectTo({
// url: "/pages/login/login"
// });
// } else {
uni.$emit('newsReadChange');
this.nearPage.current = 1;
this.policyPage.current = 1;
this.newPage.current = 1;
// this.getNewList();
// this.getNearList();
// this.getPolicy()
// }
},
closePopUp() {
this.showPopUp = false
@@ -630,8 +624,8 @@
.content {
background-color: #f3f4f8;
padding-top: 20rpx;
min-height: 80vh;
/* min-height: 80vh; */
min-height: calc(100vh - var(--window-top) - var(--status-bar-height) - var(--window-bottom));
}
@@ -647,6 +641,7 @@
line-height: 30px;
font-size: 14px;
background-color: #fff;
margin: 20rpx 0;
}
.typeButtonWrapper {
@@ -658,9 +653,8 @@
}
.typeButtonLeft {
display: flex;
width: 80%;
overflow-x: scroll;
white-space: nowrap;
}
.typeButton {
@@ -670,6 +664,8 @@
border-radius: 50px;
margin-right: 10rpx;
white-space: nowrap;
margin: 20rpx 10rpx 20rpx 0;
display: inline-block;
}
.activeButton {

View File

@@ -123,7 +123,8 @@
style="margin-right: 10rpx;background-color: #FBAD17;border-radius: 45rpx;">
电话联系
</view>
<view @click="submit" class="bottombtn flexbtn" style="border-radius: 45rpx;">
<view @click="submit" class="bottombtn flexbtn"
:style="{backgroundColor: applyopen ? '#999999' : '#1B66FF'}">
申请
</view>
</view>
@@ -162,9 +163,10 @@
<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 }} :
<span style="color: blue"
<view style="text-align: center;font-size:28rpx;margin-top: 30rpx;"> {{ info.callName || '联系人'}} :
<span style="color: blue" v-if="info.callTel"
@click="tools.onDialingPhoneNumber(info.callTel)">{{ info.callTel }}</span>
<span style="color: #333333" v-else>无联系方式</span>
</view>
</view>
</u-popup>
@@ -251,7 +253,8 @@
maxlength: 6,
collectStatus: 0, // 收藏状态
showPopUp: false,
isInvite: false
isInvite: false,
applyopen: false
}
},
components: {
@@ -291,6 +294,14 @@
methods: {
dateFormat,
collect() {
if (!this.$api.haslogin()) {
GoLogin()
return
}
if (!this.$api.hasResume()) {
this.navTo('/pageMy/my/resume/index', true)
return
}
// console.log('收藏,取消收藏')
const status = this.collectStatus == 0 ? 1 : 0;
updateCollectStatus(this.info.id, status, 0).then(res => {
@@ -300,6 +311,14 @@
})
},
callPhone() {
if (!this.$api.haslogin()) {
GoLogin()
return
}
if (!this.$api.hasResume()) {
this.navTo('/pageMy/my/resume/index', true)
return
}
this.showPopUp = true;
},
closePopUp() {
@@ -343,7 +362,9 @@
lon: self.info.lon,
})
}
if (res.data.data.missionNo.search('ZKRD') >= 0) {
self.applyopen = true
}
self.showDetail = true;
self.getCollectStatus();
if (self.type === 1) {
@@ -357,16 +378,23 @@
});
},
submit: function() {
if (!this.$api.haslogin()) {
GoLogin()
return
}
if (!this.$api.hasResume()) {
this.navTo('/pageMy/my/resume/index', true)
return
}
if (this.applyopen) return;
const _that = this
uni.showModal({
title: '提示',
content: '请确认申请,申请后不能撤销',
success: function(res) {
if (res.confirm) {
if (!_that.$store.state.user.token) {
GoLogin()
return
}
if (_that.loading) return
const auth = _that.auth
const contractOn = _that.info.contractOn
@@ -572,11 +600,11 @@
background-color: #1B66FF;
color: #fff;
text-align: center;
border-radius: 10rpx;
font-family: PingFangSC-Medium;
font-size: 32rpx;
height: 90rpx;
line-height: 90rpx;
border-radius: 45rpx;
}
.btn {

View File

@@ -166,9 +166,10 @@
<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 }} :
<span style="color: blue"
<view style="text-align: center;font-size:28rpx;margin-top: 30rpx;"> {{ info.callName || '联系人'}} :
<span style="color: blue" v-if="info.callTel"
@click="tools.onDialingPhoneNumber(info.callTel)">{{ info.callTel }}</span>
<span style="color: #333333" v-else>无联系方式</span>
</view>
</view>
</u-popup>
@@ -295,6 +296,14 @@
methods: {
dateFormat,
collect() {
if (!this.$api.haslogin()) {
GoLogin()
return
}
if (!this.$api.hasResume()) {
this.navTo('/pageMy/my/resume/index', true)
return
}
// console.log('收藏,取消收藏')
const status = this.collectStatus == 0 ? 1 : 0;
updateCollectStatus(this.info.id, status, 2).then(res => {
@@ -304,6 +313,15 @@
})
},
callPhone() {
if (!this.$api.haslogin()) {
GoLogin()
return
}
if (!this.$api.hasResume()) {
this.navTo('/pageMy/my/resume/index', true)
return
}
this.showPopUp = true;
},
closePopUp() {
@@ -356,16 +374,21 @@
}
},
submit: function() {
if (!this.$api.haslogin()) {
GoLogin()
return
}
if (!this.$api.hasResume()) {
this.navTo('/pageMy/my/resume/index', true)
return
}
const _that = this
uni.showModal({
title: '提示',
content: '请确认申请,申请后不能撤销',
success: function(res) {
if (res.confirm) {
if (!_that.$store.state.user.token) {
GoLogin()
return
}
if (_that.loading) return
const auth = _that.auth
const contractOn = _that.info.contractOn

View File

@@ -170,9 +170,10 @@
<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 }} :
<span style="color: blue"
<view style="text-align: center;font-size:28rpx;margin-top: 30rpx;"> {{ info.callName || '联系人'}} :
<span style="color: blue" v-if="info.callTel"
@click="tools.onDialingPhoneNumber(info.callTel)">{{ info.callTel }}</span>
<span style="color: #333333" v-else>无联系方式</span>
</view>
</view>
</u-popup>
@@ -297,6 +298,14 @@
methods: {
dateFormat,
collect() {
if (!this.$api.haslogin()) {
GoLogin()
return
}
if (!this.$api.hasResume()) {
this.navTo('/pageMy/my/resume/index', true)
return
}
// console.log('收藏,取消收藏')
const status = this.collectStatus == 0 ? 1 : 0;
updateCollectStatus(this.info.id, status, 2).then(res => {
@@ -306,6 +315,15 @@
})
},
callPhone() {
if (!this.$api.haslogin()) {
GoLogin()
return
}
if (!this.$api.hasResume()) {
this.navTo('/pageMy/my/resume/index', true)
return
}
this.showPopUp = true;
},
closePopUp() {
@@ -357,16 +375,21 @@
}
},
submit: function() {
if (!this.$api.haslogin()) {
GoLogin()
return
}
if (!this.$api.hasResume()) {
this.navTo('/pageMy/my/resume/index', true)
return
}
const _that = this
uni.showModal({
title: '提示',
content: '请确认申请,申请后不能撤销',
success: function(res) {
if (res.confirm) {
if (!_that.$store.state.user.token) {
GoLogin()
return
}
if (_that.loading) return
const auth = _that.auth
const contractOn = _that.info.contractOn

View File

@@ -127,7 +127,8 @@
style="margin-right: 10rpx;background-color: #FBAD17;border-radius: 45rpx;">
电话联系
</view>
<view @click="submit" class="bottombtn flexbtn" style="border-radius: 45rpx;">
<view @click="submit" class="bottombtn flexbtn"
:style="{backgroundColor: applyopen ? '#999999' : '#1B66FF'}">
申请
</view>
</view>
@@ -166,9 +167,10 @@
<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 }} :
<span style="color: blue"
<view style="text-align: center;font-size:28rpx;margin-top: 30rpx;"> {{ info.callName || '联系人 '}} :
<span style="color: blue" v-if="info.callTel"
@click="tools.onDialingPhoneNumber(info.callTel)">{{ info.callTel }}</span>
<span style="color: #333333" v-else>无联系方式</span>
</view>
</view>
</u-popup>
@@ -251,6 +253,7 @@
maxlength: 6,
collectStatus: 0, // 收藏状态
showPopUp: false,
applyopen: false
}
},
components: {
@@ -288,6 +291,14 @@
methods: {
dateFormat,
collect() {
if (!this.$api.haslogin()) {
GoLogin()
return
}
if (!this.$api.hasResume()) {
this.navTo('/pageMy/my/resume/index', true)
return
}
// console.log('收藏,取消收藏')
const status = this.collectStatus == 0 ? 1 : 0;
updateCollectStatus(this.info.id, status, 1).then(res => {
@@ -297,6 +308,15 @@
})
},
callPhone() {
if (!this.$api.haslogin()) {
GoLogin()
return
}
if (!this.$api.hasResume()) {
this.navTo('/pageMy/my/resume/index', true)
return
}
this.showPopUp = true;
},
closePopUp() {
@@ -304,6 +324,7 @@
},
// 获取收藏状态
getCollectStatus() {
if (!this.$api.haslogin()) return
getCollectState(this.info.id, 1).then(res => {
// 0 未收藏1 已收藏
// console.log(res)
@@ -326,6 +347,9 @@
lon: self.info.lon,
})
}
if (res.data.data.missionNo.search('ZKRD') >= 0) {
self.applyopen = true
}
self.showDetail = true;
self.getCollectStatus();
if (self.type === 1) {
@@ -339,16 +363,22 @@
});
},
submit: function() {
if (!this.$api.haslogin()) {
GoLogin()
return
}
if (!this.$api.hasResume()) {
this.navTo('/pageMy/my/resume/index', true)
return
}
if (this.applyopen) return;
const _that = this
uni.showModal({
title: '提示',
content: '请确认申请,申请后不能撤销',
success: function(res) {
if (res.confirm) {
if (!_that.$store.state.user.token) {
GoLogin()
return
}
if (_that.loading) return
const auth = _that.auth
const contractOn = _that.info.contractOn
@@ -554,11 +584,11 @@
background-color: #1B66FF;
color: #fff;
text-align: center;
border-radius: 10rpx;
font-family: PingFangSC-Medium;
font-size: 32rpx;
height: 90rpx;
line-height: 90rpx;
border-radius: 45rpx;
}
.btn {

View File

@@ -1,340 +1,345 @@
<template>
<view class="body">
<CustomNavbar @back="back" titke="申请消息"></CustomNavbar>
<view v-for="(value, key) in messageList" class="newsList" @click="goList(value)" :key="key">
<view class="newsIcon">
<image :src="value.icon" mode=""></image>
<!-- <view v-if="news_recruit.unread[value.id] > 0" class="point"></view> -->
</view>
<view class="newsListRight">
<view class="head">
<view class="head_left">
{{ value.title }}
</view>
<!-- <view class="head_right" v-if="value.data.length > 0">
{{value.data[0][0][value.prop.time]}}
</view> -->
</view>
<!-- <view class="content" v-if="value.data.length > 0">
{{value.prop.desc(value)}}
</view> -->
</view>
</view>
<cs-button></cs-button>
<CustomTabbar :currentpage="2"></CustomTabbar>
</view>
</template>
<script>
import CustomTabbar from '@/components/CustomTabbar/custom_tabbar.vue'
import CustomNavbar from '@/components/CustomNavbar/navbar.vue';
export default {
components: { CustomTabbar, CustomNavbar },
data() {
return {
loading: false,
size: 20,
messageList: [{
id: "0",
title: "消息通知",
icon: "../../../static/img/notice.svg",
page: {
current: 0,
size: this.size,
total: this.size,
},
data: [],
prop: {
title: "title",
desc: (value) => {
if (value.data[0]) return value.data[0][0]["desc"];
},
time: "createTime",
isRead: "isRead",
listDesc: "desc",
},
navigateTo(item) {
uni.$once("getNewsDetail", (cb) => {
cb(item);
});
uni.navigateTo({
url: "/pages/news/newsDetail?type=0",
});
},
}
// , {
// id: "1",
// title: "任务申请",
// icon: "../../../static/img/renwu.png",
// page: {
// current: 0,
// size: this.size,
// total: this.size,
// },
// data: [],
// prop: {
// title: "missionTitle",
// desc: (value) => {
// if (value.data[0])
// return `您收到${value.data[0][0]["companyName"]}的任务`;
// },
// time: "createTime",
// isRead: "status",
// listDesc: "companyName",
// },
// navigateTo(item, dispatch) {
// // dispatch("readNew", {
// // key: "1",
// // id: item.id,
// // });
// uni.navigateTo({
// url: `/pages/projectInfo/projectInfo?type=1&missionNo=${encodeURIComponent(
// item.missionNo
// )}&id=${encodeURIComponent(item.id)}`,
// });
// },
// }, {
// id: "1",
// title: "岗位申请",
// icon: "../../../static/img/job_recruit.svg",
// page: {
// current: 0,
// size: this.size,
// total: this.size,
// },
// data: [],
// prop: {
// title: "missionTitle",
// desc: (value) => {
// if (value.data[0])
// return `您收到${value.data[0][0]["companyName"]}的任务`;
// },
// time: "createTime",
// isRead: "status",
// listDesc: "companyName",
// },
// navigateTo(item, dispatch) {
// // dispatch("readNew", {
// // key: "1",
// // id: item.id,
// // });
// uni.navigateTo({
// url: `/pages/projectInfo/projectInfo?type=1&missionNo=${encodeURIComponent(
// item.missionNo
// )}&id=${encodeURIComponent(item.id)}`,
// });
// },
// }, {
// id: "1",
// title: "个体户申请",
// icon: "../../../static/img/own_recruit.svg",
// page: {
// current: 0,
// size: this.size,
// total: this.size,
// },
// data: [],
// prop: {
// title: "missionTitle",
// desc: (value) => {
// if (value.data[0])
// return `您收到${value.data[0][0]["companyName"]}的任务`;
// },
// time: "createTime",
// isRead: "status",
// listDesc: "companyName",
// },
// navigateTo(item, dispatch) {
// // dispatch("readNew", {
// // key: "1",
// // id: item.id,
// // });
// uni.navigateTo({
// url: `/pages/projectInfo/projectInfo?type=1&missionNo=${encodeURIComponent(
// item.missionNo
// )}&id=${encodeURIComponent(item.id)}`,
// });
// },
// },
]
}
},
onLoad() { },
onShow() {
if (!this.$store.state.user.token) {
uni.redirectTo({
url: "/pages/login/login"
})
} else {
uni.$emit('newsReadChange')
}
},
// onPullDownRefresh() {
// this.loading = true
// this.$store.dispatch("newsInit").then(() => {
// this.loading = false
// uni.stopPullDownRefresh();
// }).catch(() => {
// this.loading = false
// uni.stopPullDownRefresh();
// })
// },
methods: {
goList(item) {
// if (item.data.length === 0) {
// uni.showToast({
// title: '暂无消息',
// icon: 'none'
// });
// return
// }
console.log(item.data)
// 任务推送、岗位推送、政策推送
if (item.title == '岗位申请') {
console.log('岗位申请')
uni.navigateTo({
url: './taskProjectList'
})
} else if (item.title == '岗位申请') {
console.log('岗位申请')
uni.navigateTo({
url: './jobProjectList'
})
} else if (item.title == '个体户申请') {
uni.navigateTo({
url: './policyList'
})
} else {
uni.navigateTo({
url: './newsList?type=' + item.id
})
}
},
back() {
uni.reLaunch({ url: '/pages/my/my' })
},
},
}
</script>
<style>
.content {
font-family: PingFangSC-Regular;
font-size: 28rpx;
color: #666666;
width: 560rpx;
overflow: hidden;
white-space: nowrap;
/*不换行*/
text-overflow: ellipsis;
/*超出部分文字以...显示*/
}
.head_right {
float: right;
font-family: PingFangSC-Regular;
font-size: 24rpx;
color: #CCCCCC;
}
.head_left {
float: left;
font-family: PingFangSC-Regular;
font-size: 36rpx;
color: #333333;
}
.head {
overflow: hidden;
width: 560rpx;
}
.newsListRight {
float: left;
width: 560rpx;
height: 50rpx;
line-height: 50rpx;
padding-left: 30rpx;
}
.newsList .newsIcon {
position: relative;
width: 100rpx;
height: 100rpx;
display: inline-block;
float: left;
}
.newsList image {
width: 100rpx;
height: 100rpx;
}
.newsList .point {
position: absolute;
top: 5rpx;
right: 10rpx;
width: 20rpx;
height: 20rpx;
background: red;
border-radius: 50%;
}
.newsList {
border-bottom: 1rpx solid #dddddd;
padding-bottom: 30rpx;
padding-right: 30rpx;
padding-top: 30rpx;
padding-left: 30rpx;
overflow: hidden;
display: flex;
align-items: center;
}
.body {
background-color: #fefefe;
/* padding-left: 30rpx;
width: 720rpx; */
}
page {
background: #f6f6f6;
}
</style>
<!-- <template>
<view class="1">
<CustomNavbar @back="back" :titke="'消息'"></CustomNavbar>
<empty content="暂无数据" mr-top="300"></empty>
<CustomTabbar :currentpage="2"></CustomTabbar>
</view>
</template>
<script>
import CustomNavbar from '@/components/CustomNavbar/navbar.vue'
import CustomTabbar from '@/components/CustomTabbar/custom_tabbar.vue'
export default {
components: {CustomTabbar, CustomNavbar},
data() {
return {
}
},
methods: {
back() {
uni.reLaunch({
url: '/pages/my/my'
})
}
}
}
</script>
<style lang="scss" scoped>
<template>
<view class="body">
<CustomNavbar @back="back" titke="申请消息"></CustomNavbar>
<view v-for="(value, key) in messageList" class="newsList" @click="goList(value)" :key="key">
<view class="newsIcon">
<image :src="value.icon" mode=""></image>
<!-- <view v-if="news_recruit.unread[value.id] > 0" class="point"></view> -->
</view>
<view class="newsListRight">
<view class="head">
<view class="head_left">
{{ value.title }}
</view>
<!-- <view class="head_right" v-if="value.data.length > 0">
{{value.data[0][0][value.prop.time]}}
</view> -->
</view>
<!-- <view class="content" v-if="value.data.length > 0">
{{value.prop.desc(value)}}
</view> -->
</view>
</view>
<cs-button></cs-button>
<CustomTabbar :currentpage="2"></CustomTabbar>
</view>
</template>
<script>
import CustomTabbar from '@/components/CustomTabbar/custom_tabbar.vue'
import CustomNavbar from '@/components/CustomNavbar/navbar.vue';
export default {
components: {
CustomTabbar,
CustomNavbar
},
data() {
return {
loading: false,
size: 20,
messageList: [{
id: "0",
title: "消息通知",
icon: "../../../static/img/notice.svg",
page: {
current: 0,
size: this.size,
total: this.size,
},
data: [],
prop: {
title: "title",
desc: (value) => {
if (value.data[0]) return value.data[0][0]["desc"];
},
time: "createTime",
isRead: "isRead",
listDesc: "desc",
},
navigateTo(item) {
uni.$once("getNewsDetail", (cb) => {
cb(item);
});
uni.navigateTo({
url: "/pages/news/newsDetail?type=0",
});
},
}
// , {
// id: "1",
// title: "任务申请",
// icon: "../../../static/img/renwu.png",
// page: {
// current: 0,
// size: this.size,
// total: this.size,
// },
// data: [],
// prop: {
// title: "missionTitle",
// desc: (value) => {
// if (value.data[0])
// return `您收到${value.data[0][0]["companyName"]}的任务`;
// },
// time: "createTime",
// isRead: "status",
// listDesc: "companyName",
// },
// navigateTo(item, dispatch) {
// // dispatch("readNew", {
// // key: "1",
// // id: item.id,
// // });
// uni.navigateTo({
// url: `/pages/projectInfo/projectInfo?type=1&missionNo=${encodeURIComponent(
// item.missionNo
// )}&id=${encodeURIComponent(item.id)}`,
// });
// },
// }, {
// id: "1",
// title: "岗位申请",
// icon: "../../../static/img/job_recruit.svg",
// page: {
// current: 0,
// size: this.size,
// total: this.size,
// },
// data: [],
// prop: {
// title: "missionTitle",
// desc: (value) => {
// if (value.data[0])
// return `您收到${value.data[0][0]["companyName"]}的任务`;
// },
// time: "createTime",
// isRead: "status",
// listDesc: "companyName",
// },
// navigateTo(item, dispatch) {
// // dispatch("readNew", {
// // key: "1",
// // id: item.id,
// // });
// uni.navigateTo({
// url: `/pages/projectInfo/projectInfo?type=1&missionNo=${encodeURIComponent(
// item.missionNo
// )}&id=${encodeURIComponent(item.id)}`,
// });
// },
// }, {
// id: "1",
// title: "个体户申请",
// icon: "../../../static/img/own_recruit.svg",
// page: {
// current: 0,
// size: this.size,
// total: this.size,
// },
// data: [],
// prop: {
// title: "missionTitle",
// desc: (value) => {
// if (value.data[0])
// return `您收到${value.data[0][0]["companyName"]}的任务`;
// },
// time: "createTime",
// isRead: "status",
// listDesc: "companyName",
// },
// navigateTo(item, dispatch) {
// // dispatch("readNew", {
// // key: "1",
// // id: item.id,
// // });
// uni.navigateTo({
// url: `/pages/projectInfo/projectInfo?type=1&missionNo=${encodeURIComponent(
// item.missionNo
// )}&id=${encodeURIComponent(item.id)}`,
// });
// },
// },
]
}
},
onLoad() {},
onShow() {
if (!this.$api.haslogin()) {
uni.redirectTo({
url: "/pages/login/login"
})
} else {
uni.$emit('newsReadChange')
}
},
// onPullDownRefresh() {
// this.loading = true
// this.$store.dispatch("newsInit").then(() => {
// this.loading = false
// uni.stopPullDownRefresh();
// }).catch(() => {
// this.loading = false
// uni.stopPullDownRefresh();
// })
// },
methods: {
goList(item) {
// if (item.data.length === 0) {
// uni.showToast({
// title: '暂无消息',
// icon: 'none'
// });
// return
// }
console.log(item.data)
// 任务推送、岗位推送、政策推送
if (item.title == '岗位申请') {
console.log('岗位申请')
uni.navigateTo({
url: './taskProjectList'
})
} else if (item.title == '岗位申请') {
console.log('岗位申请')
uni.navigateTo({
url: './jobProjectList'
})
} else if (item.title == '个体户申请') {
uni.navigateTo({
url: './policyList'
})
} else {
uni.navigateTo({
url: './newsList?type=' + item.id
})
}
},
back() {
uni.reLaunch({
url: '/pages/my/my'
})
},
},
}
</script>
<style>
.content {
font-family: PingFangSC-Regular;
font-size: 28rpx;
color: #666666;
width: 560rpx;
overflow: hidden;
white-space: nowrap;
/*不换行*/
text-overflow: ellipsis;
/*超出部分文字以...显示*/
}
.head_right {
float: right;
font-family: PingFangSC-Regular;
font-size: 24rpx;
color: #CCCCCC;
}
.head_left {
float: left;
font-family: PingFangSC-Regular;
font-size: 36rpx;
color: #333333;
}
.head {
overflow: hidden;
width: 560rpx;
}
.newsListRight {
float: left;
width: 560rpx;
height: 50rpx;
line-height: 50rpx;
padding-left: 30rpx;
}
.newsList .newsIcon {
position: relative;
width: 100rpx;
height: 100rpx;
display: inline-block;
float: left;
}
.newsList image {
width: 100rpx;
height: 100rpx;
}
.newsList .point {
position: absolute;
top: 5rpx;
right: 10rpx;
width: 20rpx;
height: 20rpx;
background: red;
border-radius: 50%;
}
.newsList {
border-bottom: 1rpx solid #dddddd;
padding-bottom: 30rpx;
padding-right: 30rpx;
padding-top: 30rpx;
padding-left: 30rpx;
overflow: hidden;
display: flex;
align-items: center;
}
.body {
background-color: #fefefe;
/* padding-left: 30rpx;
width: 720rpx; */
}
page {
background: #f6f6f6;
}
</style>
<!-- <template>
<view class="1">
<CustomNavbar @back="back" :titke="'消息'"></CustomNavbar>
<empty content="暂无数据" mr-top="300"></empty>
<CustomTabbar :currentpage="2"></CustomTabbar>
</view>
</template>
<script>
import CustomNavbar from '@/components/CustomNavbar/navbar.vue'
import CustomTabbar from '@/components/CustomTabbar/custom_tabbar.vue'
export default {
components: {CustomTabbar, CustomNavbar},
data() {
return {
}
},
methods: {
back() {
uni.reLaunch({
url: '/pages/my/my'
})
}
}
}
</script>
<style lang="scss" scoped>
</style> -->

View File

@@ -1,54 +1,18 @@
<template>
<view class="mainWrapper">
<view v-show="!searchResultShow" class="headSearch">
<view class="headSearch">
<view class="search-view">
<view class="search-item">
<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="getList"
placeholder="搜零工岗位/搜全职岗位/搜政策" />
<view @click="getNewList('search')"
<view @click="getList"
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 class="close" @click="closeBack">
取消
</view> -->
</view>
</view>
<view v-show="searchResultShow" class="headSearch">
<view class="search-view">
<view class="search-item" @click="clearCurrentKeyWords">
<!-- <image src="../../static/img/search.svg" style="width: 32rpx;height: 32rpx;" mode=""></image> -->
<!-- <input type="text" confirm-type="搜索" v-model="keywords" @confirm="getNewList('search')"
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
style="font-size: 24rpx;height: 50rpx;background-color: #ddd;border-radius: 25rpx;line-height: 50rpx;padding: 0 20rpx;padding-right: 40rpx;position:relative;">
{{ keywords }}
<u-icon name="close" size="14" style="position:absolute;right:10rpx;top:13rpx;"></u-icon>
</view>
</view>
</view>
</view>
<view v-show="searchResultShow" class="search-result">
<view class="title">搜索结果</view>
<view v-for="(item, index) in searchResultList" class="search-item" @click="toDetail(item)">
<image src="../../static/img/search.svg" style="width: 32rpx;height: 32rpx;margin-right: 10rpx;"
mode=""></image>
<view style="flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;">{{ item.name }}</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 == 2">政策</view>
<view class="type" v-else-if="item.type == 3">招工</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;">
暂无数据</view>
</view>
<view v-show="!searchResultShow" class="search-history">
<view class="search-history">
<view class="title">搜索记录</view>
<view class="clear" @click="clearKeyWords">
<image src="../../static/img/delete.png" style="width: 24rpx;height: 24rpx;" mode=""></image>
@@ -60,15 +24,14 @@
</view>
</view>
<view v-else class="empty">暂无历史记录</view>
<v-tabs :tabs="tabList" height="45px" v-model="activeTab" color="#999" activeColor="#000" fontSize="30rpx"
activeFontSize="31rpx" @change='changeTab' />
</view>
<v-tabs v-show="!searchResultShow" :tabs="['推荐零工岗位', '推荐全职岗位', '推荐政策']" height="45px" v-model="activeTab"
color="#999" activeColor="#000" fontSize="30rpx" activeFontSize="31rpx" @change='changeTab' />
<block v-if="(activeTab == 0)&&!searchResultShow">
<view v-if="companyList.length > 0">
<block v-if="activeTab === 0">
<view v-if="companyList.length ">
<block v-for="(item, index) in companyList" :key="item.id">
<companyList :companyitem="item"></companyList>
<companyList :companyitem="item" :location="userLocation"></companyList>
</block>
</view>
<view v-else>
@@ -78,10 +41,10 @@
</view>
</view>
</block>
<block v-if="(activeTab == 1)&&!searchResultShow">
<view v-if="newList.length > 0">
<block v-if="activeTab === 1">
<view v-if="newList.length">
<block v-for="(item, index) in newList" :key="item.id">
<workList :companyitem="item" :near="activeTab === 0"></workList>
<workList :companyitem="item" :near="activeTab === 0" :location="userLocation"></workList>
</block>
</view>
<view v-else>
@@ -92,8 +55,8 @@
<block v-if="(activeTab == 2)&&!searchResultShow">
<view v-if="recommendList.length > 0">
<block v-if="activeTab == 2">
<view v-if="recommendList.length">
<!-- <block v-for="(item, index) in recommendList" :key="item.id">
<companyList :companyitem="item"></companyList>
</block> -->
@@ -109,94 +72,86 @@
<view v-else>
<image src="../../static/img/pic_notask.svg" mode="" class="nothing"></image>
<view class="nothingContnt">
完善技能获取精推荐
暂无信息
</view>
<!-- <view class="btn" @click="goResume">
完善技能
</view> -->
完善技能
</view> -->
</view>
</block>
<!-- <view v-if="companyList.length > 0">
<block v-for="(item, index) in companyList" :key="item.id">
<companyList :companyitem="item"></companyList>
<view class="baddd"></view>
</block>
</view>
<view v-else>
<image src="../../static/img/pic_notask.svg" mode="" class="nothing"></image>
<view class="nothingContnt">
暂无任务信息
</view>
</view> -->
<block v-if="activeTab == -1">
<view>
<image src="../../static/img/pic_notask.svg" mode="" class="nothing"></image>
<view class="nothingContnt">
没有更多数据
</view>
</view>
</block>
</view>
</template>
<script>
import {
cloneDeep
} from 'lodash';
import {
newMissionAll,
getSearchKeyWordsList,
clearSearchKeyWords,
getListByKeyWords,
nearMission,
getPolicyContentList
getPolicyContentList,
userWorkSearchListAll
} from '@/api/mission.js';
import {
mapGetters
} from 'vuex'
import companyList from '@/components/companyList/companyList.vue';
import vTabs from '@/components/v-tabs/v-tabs.vue';
import testData from '@/common/textdata.js';
import workList from '@/components/companyList/workList.vue'
const titleStatus = {
'mission': {
title: '零工岗位',
val: 0,
},
'work': {
title: '全职岗位',
val: 1,
},
'policy': {
title: '政策',
val: 2,
},
}
export default {
components: {
companyList,
vTabs,
workList
},
data() {
return {
activeTab: 0,
companyList: [],
recommendList: [],
newList: [],
keywords: '',
page: {
current: 1,
size: 10,
total: 0
},
searchHistoryList: [],
searchResultShow: false,
searchResultList: []
};
companyList: [],
newList: [],
recommendList: [],
tabList: ['零工岗位', '全职岗位', '政策']
}
},
onLoad: function(option) {
this.keywords = option.keywords ? option.keywords : ''
computed: {
...mapGetters(['userLocation']),
},
onShow: function() {
this.getList('refresh');
this.getKeyWordsList()
},
/*页面滚动到底部*/
onReachBottom: function() {
this.upLoad()
},
methods: {
clearCurrentKeyWords() {
this.keywords = '';
let that = this;
setTimeout(function() {
that.searchResultShow = false;
}, 100);
},
// 新面板搜索
getNewList() {
getListByKeyWords(this.keywords).then(res => {
this.searchResultShow = true
this.searchResultList = res.data.data
// this.searchResultList.forEach((item, index) => {
// item.name = this.getInf(item.name, this.keywords);
// })
})
goPolicyInfo(data) {
if (data) {
uni.navigateTo({
url: `/pages/user/policyContent?id=${data}`
})
}
},
// 获取搜索历史记录
getKeyWordsList() {
@@ -211,142 +166,6 @@
// console.log(keyWords)
this.searchResultShow = true;
this.keywords = keyWords;
this.getNewList();
},
//最新任务;
getList: function(type = 'add') {
//改变搜索条件页码值变为1
if (type === 'refresh') {
this.page.current = 1;
};
// if (this.keywords) {
newMissionAll(this.page.current, this.page.size, this.keywords).then(res => {
this.page.total = res.data.data.total;
if (type === 'refresh') {
this.companyList = res.data.data.records
} else if (res.data.data && res.data.data.records.length) {
this.companyList = this.companyList.concat(res.data.data.records);
}
this.page.current += 1;
})
},
getgwList(type = 'add') {
if (type === 'refresh') {
this.page.current = 1;
};
nearMission(this.page.current, this.page.size).then(res => {
this.page.total = res.data.data.total;
if (type === 'refresh') {
this.newList = res.data.data.records
} else if (res.data.data && res.data.data.records.length) {
this.newList = this.newList.concat(res.data.data.records);
}
this.page.current += 1;
})
},
getPoliyList(type = 'add') {
if (type === 'refresh') {
this.page.current = 1;
};
let params = {
current: this.page.current,
size: this.page.size,
type: 1
}
getPolicyContentList(params).then(res => {
this.page.total = res.data.data.total;
if (type === 'refresh') {
this.recommendList = res.data.data.records
} else if (res.data.data && res.data.data.records.length) {
this.recommendList = this.recommendList.concat(res.data.data.records);
}
this.page.current += 1;
})
},
goPolicyInfo(data) {
if (data) {
uni.navigateTo({
url: `/pages/user/policyContent?id=${data}`
})
} else {
// uni.showToast({
// title:'暂无内容',
// icon:'none'
// })
}
},
//上拉加载
upLoad: function() {
if (this.page.current <= Math.ceil(this.page.total / this.page.size)) {
switch (this.activeTab) {
case 0:
this.getList();
break;
case 1:
this.getgwList();
break;
case 2:
this.getPoliyList()
break;
}
} else {
uni.showToast({
icon: "none",
title: '已经是最后一页',
})
return
}
},
closeBack() {
uni.navigateBack({
delta: 1
})
},
/**
* 指定关键字高亮
* @param {*} str 字符串
* @param {*} key 关键字
*/
getInf(str, key) {
if (str && key) {
let replaceReg = new RegExp(key, 'g') // 匹配关键字正则
let replaceString = "<span style='color: #1b66ff;'>" + key + "</span>" // 高亮替换
return str.replace(replaceReg, replaceString);
}
},
toDetail(item) {
const no = item.id
// 判断是岗位还是任务 0任务1岗位2政策
if (item.type == 0) {
uni.navigateTo({
url: `/pages/projectInfo/projectInfo?missionNo=${encodeURIComponent(no)}&isCan=1`
})
} else if (item.type == 1) {
uni.navigateTo({
url: `/pages/projectInfo/workInfo?workId=${encodeURIComponent(no)}&isCan=1`
})
} else if (item.type == 2) {
uni.navigateTo({
url: `/pages/user/policyContent?id=${no}`
})
}
},
changeTab: function(e) {
this.activeTab = e;
switch (e) {
case 0:
this.getList('refresh');
break;
case 1:
this.getgwList('refresh');
break;
case 2:
this.getPoliyList('refresh')
break;
}
},
// 清空搜索历史
clearKeyWords() {
@@ -355,15 +174,55 @@
this.getKeyWordsList()
}
})
},
changeTab: function(e) {
this.activeTab = e;
// const tab = cloneDeep(this.tabList[e])
// Object.keys(titleStatus).map((key) => {
// if (titleStatus[key].title === tab) {
// this.activeTab = titleStatus[key].val;
// }
// })
},
async getList() {
const params = {
keywords: this.keywords
}
let resData = await userWorkSearchListAll(params)
if (resData.data.code === 200) {
const {
mission,
policy,
work
} = resData.data.data
const tabVal = []
Object.keys(titleStatus).map((key) => {
if (resData.data.data[key].length) {
tabVal.push(titleStatus[key].title)
}
})
if (tabVal.length) {
let count = 0
Object.keys(titleStatus).map((key) => {
if (!count && titleStatus[key].title === tabVal[0]) {
this.activeTab = titleStatus[key].val;
count++
}
})
}
this.companyList = mission
this.recommendList = policy
this.newList = work
}
}
}
};
}
</script>
<style scoped>
.mainWrapper {
background-color: #f3f4f8;
min-height: 95vh;
min-height: calc(100vh - var(--window-top) - var(--status-bar-height) - var(--window-bottom));
}
.baddd {
@@ -475,6 +334,7 @@
padding: 8rpx 12rpx;
border-radius: 20rpx;
margin-right: 10rpx;
position: relative;
}
.search-result {

517
pages/seach/seachCopy.vue Normal file
View File

@@ -0,0 +1,517 @@
<template>
<view class="mainWrapper">
<view v-show="!searchResultShow" class="headSearch">
<view class="search-view">
<view class="search-item">
<image src="../../static/img/search.svg" style="width: 32rpx;height: 32rpx;" mode=""></image>
<input type="text" confirm-type="搜索" v-model="keywords" @confirm="getNewList('search')"
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>
<!-- <view class="close" @click="closeBack">
取消
</view> -->
</view>
</view>
<view v-show="searchResultShow" class="headSearch">
<view class="search-view">
<view class="search-item" @click="clearCurrentKeyWords">
<!-- <image src="../../static/img/search.svg" style="width: 32rpx;height: 32rpx;" mode=""></image> -->
<!-- <input type="text" confirm-type="搜索" v-model="keywords" @confirm="getNewList('search')"
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
style="font-size: 24rpx;height: 50rpx;background-color: #ddd;border-radius: 25rpx;line-height: 50rpx;padding: 0 20rpx;padding-right: 40rpx;position:relative;">
{{ keywords }}
<u-icon name="close" size="14" style="position:absolute;right:10rpx;top:13rpx;"></u-icon>
</view>
</view>
</view>
</view>
<view v-show="searchResultShow" class="search-result">
<view>
<view>岗位/任务</view>
<view>政策</view>
</view>
<view class="title">搜索结果</view>
<view v-for="(item, index) in searchResultList" class="search-item" @click="toDetail(item)">
<image src="../../static/img/search.svg" style="width: 32rpx;height: 32rpx;margin-right: 10rpx;"
mode=""></image>
<view style="flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;">{{ item.name }}</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.type1 == 2">政策</view>
<view class="type" v-else-if="item.type == 3">招工</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;">
暂无数据</view>
</view>
<view v-show="!searchResultShow" class="search-history">
<view class="title">搜索记录</view>
<view class="clear" @click="clearKeyWords">
<image src="../../static/img/delete.png" style="width: 24rpx;height: 24rpx;" mode=""></image>
<view style="margin-left: 5rpx;">清空</view>
</view>
<view class="wrapper" v-if="searchHistoryList.length > 0">
<view class="item" v-for="(item, index) in searchHistoryList" @click="keyWordsClick(item.keywords)">
{{ item.keywords }}
</view>
</view>
<view v-else class="empty">暂无历史记录</view>
</view>
<v-tabs v-show="!searchResultShow" :tabs="['推荐零工岗位', '推荐全职岗位', '推荐政策']" height="45px" v-model="activeTab"
color="#999" activeColor="#000" fontSize="30rpx" activeFontSize="31rpx" @change='changeTab' />
<block v-if="(activeTab == 0)&&!searchResultShow">
<view v-if="companyList.length > 0">
<block v-for="(item, index) in companyList" :key="item.id">
<companyList :companyitem="item"></companyList>
</block>
</view>
<view v-else>
<image src="../../static/img/pic_notask.svg" mode="" class="nothing"></image>
<view class="nothingContnt">
暂无信息
</view>
</view>
</block>
<block v-if="(activeTab == 1)&&!searchResultShow">
<view v-if="newList.length > 0">
<block v-for="(item, index) in newList" :key="item.id">
<workList :companyitem="item" :near="activeTab === 0"></workList>
</block>
</view>
<view v-else>
<image src="../../static/img/pic_notask.svg" class="nothing" mode=""></image>
<view class="nothingContnt">暂无信息</view>
</view>
</block>
<block v-if="(activeTab == 2)&&!searchResultShow">
<view v-if="recommendList.length > 0">
<!-- <block v-for="(item, index) in recommendList" :key="item.id">
<companyList :companyitem="item"></companyList>
</block> -->
<view v-for="(item, index) in recommendList" :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>
<view style="font-size: 26rpx;">{{ item.articleTitle }}</view>
</view>
</view>
<view v-else>
<image src="../../static/img/pic_notask.svg" mode="" class="nothing"></image>
<view class="nothingContnt">
完善技能获取精推荐
</view>
<!-- <view class="btn" @click="goResume">
完善技能
</view> -->
</view>
</block>
<!-- <view v-if="companyList.length > 0">
<block v-for="(item, index) in companyList" :key="item.id">
<companyList :companyitem="item"></companyList>
<view class="baddd"></view>
</block>
</view>
<view v-else>
<image src="../../static/img/pic_notask.svg" mode="" class="nothing"></image>
<view class="nothingContnt">
暂无任务信息
</view>
</view> -->
</view>
</template>
<script>
import {
newMissionAll,
getSearchKeyWordsList,
clearSearchKeyWords,
getListByKeyWords,
nearMission,
getPolicyContentList
} from '@/api/mission.js';
import companyList from '@/components/companyList/companyList.vue';
import vTabs from '@/components/v-tabs/v-tabs.vue';
import testData from '@/common/textdata.js';
import workList from '@/components/companyList/workList.vue'
export default {
components: {
companyList,
vTabs,
workList
},
data() {
return {
activeTab: 0,
companyList: [],
recommendList: [],
newList: [],
keywords: '',
page: {
current: 1,
size: 10,
total: 0
},
searchHistoryList: [],
searchResultShow: false,
searchResultList: []
};
},
onLoad: function(option) {
this.keywords = option.keywords ? option.keywords : ''
},
onShow: function() {
this.getList('refresh');
this.getKeyWordsList()
},
/*页面滚动到底部*/
onReachBottom: function() {
this.upLoad()
},
methods: {
clearCurrentKeyWords() {
this.keywords = '';
let that = this;
setTimeout(function() {
that.searchResultShow = false;
}, 100);
},
// 新面板搜索
getNewList() {
getListByKeyWords(this.keywords).then(res => {
this.searchResultShow = true
this.searchResultList = res.data.data
// this.searchResultList.forEach((item, index) => {
// item.name = this.getInf(item.name, this.keywords);
// })
})
},
// 获取搜索历史记录
getKeyWordsList() {
getSearchKeyWordsList().then(res => {
let response = res.data
if (response.code == 200) {
this.searchHistoryList = response.data
}
})
},
keyWordsClick(keyWords) {
// console.log(keyWords)
this.searchResultShow = true;
this.keywords = keyWords;
this.getNewList();
},
//最新任务;
getList: function(type = 'add') {
//改变搜索条件页码值变为1
if (type === 'refresh') {
this.page.current = 1;
};
// if (this.keywords) {
newMissionAll(this.page.current, this.page.size, this.keywords).then(res => {
this.page.total = res.data.data.total;
if (type === 'refresh') {
this.companyList = res.data.data.records
} else if (res.data.data && res.data.data.records.length) {
this.companyList = this.companyList.concat(res.data.data.records);
}
this.page.current += 1;
})
},
getgwList(type = 'add') {
if (type === 'refresh') {
this.page.current = 1;
};
nearMission(this.page.current, this.page.size).then(res => {
this.page.total = res.data.data.total;
if (type === 'refresh') {
this.newList = res.data.data.records
} else if (res.data.data && res.data.data.records.length) {
this.newList = this.newList.concat(res.data.data.records);
}
this.page.current += 1;
})
},
getPoliyList(type = 'add') {
if (type === 'refresh') {
this.page.current = 1;
};
let params = {
current: this.page.current,
size: this.page.size,
type: 1
}
getPolicyContentList(params).then(res => {
this.page.total = res.data.data.total;
if (type === 'refresh') {
this.recommendList = res.data.data.records
} else if (res.data.data && res.data.data.records.length) {
this.recommendList = this.recommendList.concat(res.data.data.records);
}
this.page.current += 1;
})
},
goPolicyInfo(data) {
if (data) {
uni.navigateTo({
url: `/pages/user/policyContent?id=${data}`
})
} else {
// uni.showToast({
// title:'暂无内容',
// icon:'none'
// })
}
},
//上拉加载
upLoad: function() {
if (this.page.current <= Math.ceil(this.page.total / this.page.size)) {
switch (this.activeTab) {
case 0:
this.getList();
break;
case 1:
this.getgwList();
break;
case 2:
this.getPoliyList()
break;
}
} else {
uni.showToast({
icon: "none",
title: '已经是最后一页',
})
return
}
},
closeBack() {
uni.navigateBack({
delta: 1
})
},
/**
* 指定关键字高亮
* @param {*} str 字符串
* @param {*} key 关键字
*/
getInf(str, key) {
if (str && key) {
let replaceReg = new RegExp(key, 'g') // 匹配关键字正则
let replaceString = "<span style='color: #1b66ff;'>" + key + "</span>" // 高亮替换
return str.replace(replaceReg, replaceString);
}
},
toDetail(item) {
const no = item.id
// 判断是岗位还是任务 0任务1岗位2政策
if (item.type == 0) {
uni.navigateTo({
url: `/pages/projectInfo/projectInfo?missionNo=${encodeURIComponent(no)}&isCan=1`
})
} else if (item.type == 1) {
uni.navigateTo({
url: `/pages/projectInfo/workInfo?workId=${encodeURIComponent(no)}&isCan=1`
})
} else if (item.type == 2) {
uni.navigateTo({
url: `/pages/user/policyContent?id=${no}`
})
}
},
changeTab: function(e) {
this.activeTab = e;
switch (e) {
case 0:
this.getList('refresh');
break;
case 1:
this.getgwList('refresh');
break;
case 2:
this.getPoliyList('refresh')
break;
}
},
// 清空搜索历史
clearKeyWords() {
clearSearchKeyWords().then(res => {
if (res.data.code == 200) {
this.getKeyWordsList()
}
})
}
}
};
</script>
<style scoped>
.mainWrapper {
background-color: #f3f4f8;
min-height: 95vh;
}
.baddd {
background-color: #f6f6f6;
height: 20rpx;
}
.close {
position: absolute;
right: 24rpx;
top: 6rpx;
height: 60rpx;
padding: 5rpx 0;
line-height: 60rpx;
font-family: PingFangSC-Regular;
font-size: 32rpx;
color: #333333;
}
.headSearch .search-view {
border-bottom: 1rpx solid #dddddd;
padding: 14rpx 32rpx;
background: rgba(255, 255, 255, 1);
}
.headSearch .search-item {
display: flex;
padding: 0 10rpx;
height: 60rpx;
line-height: 60rpx;
background: rgba(249, 249, 249, 1);
border-radius: 200px;
align-items: center;
border: 1px solid #0091ff;
}
.headSearch .search-item input {
padding: 0 24rpx;
height: 80rpx;
font-weight: 400;
flex: 1;
text-align: start;
font-size: 28rpx;
font-family: PingFang-SC-Bold, PingFang-SC;
color: rgba(51, 51, 51, 1);
}
.headSearch .search-item .placeholderClass {
color: #CCCCCC;
}
.headSearch .search-item image {
height: 32rpx;
width: 32rpx;
}
.nothing {
width: 400rpx;
height: 200rpx;
display: block;
margin: 0 auto;
margin-top: 50%;
}
.nothingContnt {
font-family: PingFangSC-Regular;
font-size: 28rpx;
color: #333333;
margin-top: 30rpx;
text-align: center;
}
.search-history {
background-color: #fff;
padding: 10rpx 40rpx;
position: relative;
}
.search-history .title {
font-size: 28rpx;
font-weight: bold;
}
.search-history .clear {
position: absolute;
right: 40rpx;
top: 10rpx;
font-size: 24rpx;
display: flex;
align-items: center;
color: #707070;
}
.search-history .empty {
font-size: 24rpx;
text-align: center;
color: #707070;
}
.search-history .wrapper {
display: flex;
flex-wrap: wrap;
margin-top: 10rpx;
}
.search-history .wrapper .item {
font-size: 24rpx;
background-color: #f6f6f6;
padding: 8rpx 12rpx;
border-radius: 20rpx;
margin-right: 10rpx;
}
.search-result {
padding: 20rpx 30rpx;
background-color: #fff;
height: 100vh;
}
.search-result .title {
font-size: 26rpx;
font-weight: bold;
border-bottom: 1rpx solid #ddd;
height: 60rpx;
line-height: 60rpx;
}
.search-result .search-item {
display: flex;
align-items: center;
font-size: 26rpx;
border-bottom: 1rpx solid #ddd;
height: 80rpx;
line-height: 80rpx;
}
.search-result .search-item .type {
font-size: 20rpx;
color: #707070;
background-color: #dddddd;
border-radius: 15rpx;
height: 30rpx;
line-height: 30rpx;
padding: 0 20rpx;
}
</style>