Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1cd5363723 | ||
|
|
e698f0624f | ||
|
|
23284483c4 | ||
|
|
5e3a853a2a | ||
|
|
7845b6333c | ||
|
|
ba14872e89 | ||
|
|
23aaa5a4ab |
151
App.vue
@@ -1,139 +1,92 @@
|
||||
<style lang="scss">
|
||||
/* 注意要写在第一行,同时给style标签加入lang="scss"属性 */
|
||||
@import '@/uni_modules/uview-ui/index.scss';
|
||||
/* 注意要写在第一行,同时给style标签加入lang="scss"属性 */
|
||||
@import "@/uni_modules/uview-ui/index.scss";
|
||||
</style>
|
||||
<script>
|
||||
import website from '@/config/website.js';
|
||||
import { mapGetters } from 'vuex';
|
||||
import { GoLogin } from '@/untils/AxiosUtils.js';
|
||||
// #ifdef H5
|
||||
import { setPlatformByHostName } from '@/untils/customized.js';
|
||||
import { reject } from 'lodash';
|
||||
// #endif
|
||||
import website from '@/config/website.js'
|
||||
import {
|
||||
mapGetters
|
||||
} from 'vuex'
|
||||
// #ifdef H5
|
||||
import {
|
||||
setPlatformByHostName
|
||||
} from '@/untils/customized.js'
|
||||
// #endif
|
||||
|
||||
export default {
|
||||
onLaunch: function (options) {
|
||||
this.$store.dispatch('InitArea');
|
||||
if (options.query.token) {
|
||||
this.tokenlogin(options.query.token).then(() => {
|
||||
this.$store.dispatch('getUserLocation');
|
||||
this.$store.dispatch('getNoticeState');
|
||||
this.$store.dispatch('getMobileIsCms');
|
||||
this.$store.dispatch('getResumeInfo');
|
||||
});
|
||||
} else {
|
||||
this.$store.dispatch('FedLogOut');
|
||||
export default {
|
||||
onLaunch: function(options) {
|
||||
this.$store.dispatch('InitArea')
|
||||
if (this.$store.state.user.token) {
|
||||
this.$store.dispatch('startRefreshTokenTimer')
|
||||
this.$store.dispatch('startRefreshNewsTimer')
|
||||
this.$store.dispatch('refreshAuthState')
|
||||
this.$store.dispatch('getUserLocation')
|
||||
this.$store.dispatch('getMobileIsCms')
|
||||
}
|
||||
// if (options.query.token) {
|
||||
// // uni.reLaunch({
|
||||
// // url: '/pages/login/blank?token=' + options.query.token
|
||||
// // })
|
||||
// this.tokenlogin(options.query.token)
|
||||
// } else if (this.$api.haslogin()) {
|
||||
// this.$store.dispatch('startRefreshTokenTimer')
|
||||
// this.$store.dispatch('startRefreshNewsTimer')
|
||||
// this.$store.dispatch('refreshAuthState')
|
||||
// this.$store.dispatch('getUserLocation')
|
||||
// this.$store.dispatch('getMobileIsCms')
|
||||
// }
|
||||
// #ifdef H5
|
||||
// 企业定制
|
||||
setPlatformByHostName(this.$store);
|
||||
setPlatformByHostName(this.$store)
|
||||
// #endif
|
||||
},
|
||||
onShow: function () {},
|
||||
onHide: function () {},
|
||||
onShow: function() {},
|
||||
onHide: function() {},
|
||||
computed: {
|
||||
...mapGetters(['news', 'auth']),
|
||||
...mapGetters(['news']),
|
||||
allUnread() {
|
||||
return this.news.allUnread;
|
||||
},
|
||||
return this.news.allUnread
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.$config.showTitle && document.documentElement.style.setProperty('--hide-title', 'block');
|
||||
},
|
||||
methods: {
|
||||
tokenlogin(token) {
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.showLoading({
|
||||
title: '登录中',
|
||||
});
|
||||
if (token) {
|
||||
const that = this;
|
||||
this.$store
|
||||
.dispatch('LoginByUsername', {
|
||||
username: 'admin',
|
||||
password: 'admin',
|
||||
key: '',
|
||||
code: '1111',
|
||||
type: 'account',
|
||||
token: token,
|
||||
tenantId: website.tenantId,
|
||||
})
|
||||
.then((resp) => {
|
||||
this.$store.dispatch('refreshAuthState').then(() => {
|
||||
uni.hideLoading();
|
||||
resolve();
|
||||
});
|
||||
})
|
||||
.catch((err) => {
|
||||
uni.hideLoading();
|
||||
});
|
||||
} else {
|
||||
GoLogin();
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
allUnread(value) {
|
||||
console.log('allUnread', value);
|
||||
if (!this.$api.haslogin()) {
|
||||
} else if (value > 0) {
|
||||
console.log('allUnread', value)
|
||||
if (!this.$store.state.user.token) {} else if (value > 0) {
|
||||
uni.showTabBarRedDot({
|
||||
index: 2,
|
||||
});
|
||||
index: 2
|
||||
})
|
||||
uni.$once('newsReadChange', () => {
|
||||
uni.showTabBarRedDot({
|
||||
index: 2,
|
||||
});
|
||||
});
|
||||
index: 2
|
||||
})
|
||||
})
|
||||
} else {
|
||||
uni.hideTabBarRedDot({
|
||||
index: 2,
|
||||
});
|
||||
index: 2
|
||||
})
|
||||
uni.$once('newsReadChange', () => {
|
||||
uni.hideTabBarRedDot({
|
||||
index: 2,
|
||||
});
|
||||
});
|
||||
index: 2
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
/*每个页面公共css */
|
||||
/* tabbar 字体大小 */
|
||||
/* .uni-tabbar__label{
|
||||
/*每个页面公共css */
|
||||
/* tabbar 字体大小 */
|
||||
/* .uni-tabbar__label{
|
||||
font-size: 14px !important;
|
||||
} */
|
||||
@font-face {
|
||||
@font-face {
|
||||
font-family: 'uicon-iconfont';
|
||||
font-weight: mormal;
|
||||
font-style: mormal;
|
||||
src: url('/static/font/font_2225171_8kdcwk4po24.ttf') format('truetype');
|
||||
}
|
||||
}
|
||||
|
||||
:root {
|
||||
:root {
|
||||
--hide-title: none;
|
||||
}
|
||||
}
|
||||
|
||||
/* #ifdef H5 */
|
||||
uni-page-head {
|
||||
/* #ifdef H5 */
|
||||
uni-page-head {
|
||||
display: var(--hide-title);
|
||||
}
|
||||
}
|
||||
|
||||
/* #endif */
|
||||
/* #endif */
|
||||
</style>
|
||||
34
api/auth.js
@@ -1,34 +1,14 @@
|
||||
import {
|
||||
request
|
||||
} from '@/untils/AxiosUtils.js';
|
||||
import {
|
||||
decryptJson
|
||||
} from '@/untils/authService.js'
|
||||
import website from "@/config/website";
|
||||
|
||||
const authUrl = '/api/jobslink-api/user/user/auth/auth'
|
||||
|
||||
// export const findAuth = () => request({
|
||||
// url: '/api/jobslink-api/user/user/find',
|
||||
// method: 'get'
|
||||
// });
|
||||
|
||||
export const findAuth = async () => {
|
||||
try {
|
||||
const encrypted = await request({
|
||||
export const findAuth = () => request({
|
||||
url: '/api/jobslink-api/user/user/find',
|
||||
method: 'get',
|
||||
responseType: 'text', // 接收纯文本密文
|
||||
});
|
||||
const decryptedStr = decryptJson(encrypted.data);
|
||||
return {
|
||||
data: JSON.parse(decryptedStr),
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('请求或解密过程中出错:', error);
|
||||
return null;
|
||||
}
|
||||
};
|
||||
method: 'get'
|
||||
});
|
||||
|
||||
export const cheakValue = () => request({
|
||||
url: authUrl,
|
||||
@@ -123,7 +103,7 @@ export const viewContract = (params) => request({
|
||||
});
|
||||
|
||||
//新实名认证api
|
||||
export const newCertification = (bakvalue, realName, idNumber, cardNumber, bankCode, def, bankName) => request({
|
||||
export const newCertification = (bakvalue, realName, idNumber, cardNumber, bankCode,def,bankName) => request({
|
||||
url: '/api/jobslink-api/user/user/auth/authNew',
|
||||
method: 'post',
|
||||
data: {
|
||||
@@ -136,9 +116,3 @@ export const newCertification = (bakvalue, realName, idNumber, cardNumber, bankC
|
||||
bankName
|
||||
}
|
||||
});
|
||||
// 电话联系
|
||||
export const getPhoneCountNumber = (params) => request({
|
||||
url: "/api/jobslink-api/serve/phone",
|
||||
method: 'get',
|
||||
data: params
|
||||
});
|
||||
@@ -27,21 +27,15 @@ export const contract = (params) => request({
|
||||
export const labourUnionDetail = (no) => request({
|
||||
url: "/api/jobslink-api/doc/jkLabourUnionAppl/list",
|
||||
method: 'get',
|
||||
params: {
|
||||
no
|
||||
}
|
||||
params:{no}
|
||||
});
|
||||
//提交会员申请
|
||||
export const saveApplication = (labourunionId, applType, applComment) => {
|
||||
applComment = applComment.substring(0, 200)
|
||||
export const saveApplication = (labourunionId,applType,applComment) =>{
|
||||
applComment=applComment.substring(0,200)
|
||||
return request({
|
||||
url: "/api/jobslink-api/doc/jkLabourUnionDetail/save",
|
||||
method: 'post',
|
||||
data: {
|
||||
labourunionId,
|
||||
applType,
|
||||
applComment
|
||||
}
|
||||
data:{labourunionId,applType,applComment}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -49,7 +43,5 @@ export const saveApplication = (labourunionId, applType, applComment) => {
|
||||
export const applicationInfo = (no) => request({
|
||||
url: "/api/jobslink-api/doc/jkLabourUnionDetail/list",
|
||||
method: 'get',
|
||||
params: {
|
||||
no
|
||||
}
|
||||
params:{no}
|
||||
});
|
||||
@@ -307,9 +307,3 @@ export const getPolicyContentList = (params) => request({
|
||||
method: 'get',
|
||||
params
|
||||
})
|
||||
|
||||
export const userWorkSearchListAll = (params) => request({
|
||||
url: '/api/jobslink-api/user/userWork/searchListAll',
|
||||
method: 'get',
|
||||
params
|
||||
})
|
||||
@@ -59,7 +59,6 @@ export const setResume = ({
|
||||
wage,
|
||||
workplace,
|
||||
telephone,
|
||||
wageUpper,
|
||||
workExperience
|
||||
}) => {
|
||||
return request({
|
||||
@@ -71,8 +70,7 @@ export const setResume = ({
|
||||
wage,
|
||||
workplace,
|
||||
telephone,
|
||||
workExperience,
|
||||
wageUpper,
|
||||
workExperience
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
@@ -33,8 +33,13 @@ export async function uploadFile(file) {
|
||||
'Authorization': `Basic ${Base64.encode(`${website.clientId}:${website.clientSecret}`)}`,
|
||||
}
|
||||
header[website.tokenName] = "bearer " + token
|
||||
// 馆陶替换url
|
||||
let url = `/api/jobslink-api/resource/file/save?bussinessType=5`
|
||||
if (url.startsWith('/api')) {
|
||||
url = url.replace(/^\/api/, '/api/gt');
|
||||
}
|
||||
uni.uploadFile({
|
||||
url: `${baseUrl}/api/jobslink-api/resource/file/save?bussinessType=5`,
|
||||
url: baseUrl + url,
|
||||
header,
|
||||
filePath: file.url,
|
||||
// formData: formdata,
|
||||
|
||||
10
api/user.js
@@ -73,13 +73,3 @@ export const mobileIsCms = () => request({
|
||||
url: '/api/jobslink-api/mobile/isCms',
|
||||
method: 'get'
|
||||
})
|
||||
|
||||
export const noticeIsEnable = () => request({
|
||||
url: "/api/jobslink-api/desk/notice/isEnable",
|
||||
method: 'get',
|
||||
});
|
||||
|
||||
export const setNoticeIsEnable = (state) => request({
|
||||
url: "/api/jobslink-api/desk/notice/isEnable/" + state,
|
||||
method: 'PUT',
|
||||
});
|
||||
@@ -367,36 +367,40 @@ const workwageUnitCategoryState = [
|
||||
|
||||
const addressColumn = [
|
||||
[{
|
||||
value: '95',
|
||||
label: "绵竹市"
|
||||
value: '4',
|
||||
label: "馆陶县"
|
||||
},
|
||||
{
|
||||
value: '185',
|
||||
label: "广汉市"
|
||||
value: '5',
|
||||
label: "馆陶镇"
|
||||
},
|
||||
{
|
||||
value: '143',
|
||||
label: "旌阳区"
|
||||
value: '6',
|
||||
label: "房寨镇"
|
||||
},
|
||||
{
|
||||
value: '150',
|
||||
label: "罗江区"
|
||||
value: '7',
|
||||
label: "魏僧寨镇"
|
||||
},
|
||||
{
|
||||
value: '42',
|
||||
label: "什邡市"
|
||||
value: '8',
|
||||
label: "柴堡镇"
|
||||
},
|
||||
{
|
||||
value: '156',
|
||||
label: "中江县"
|
||||
value: '9',
|
||||
label: "寿山寺"
|
||||
},
|
||||
{
|
||||
value: '44139628',
|
||||
label: "经济技术开发区"
|
||||
value: '10',
|
||||
label: " 王桥乡"
|
||||
},
|
||||
{
|
||||
value: '79194151',
|
||||
label: "德阳市开发区"
|
||||
value: '11',
|
||||
label: "路桥乡"
|
||||
},
|
||||
{
|
||||
value: '12',
|
||||
label: "南徐村乡"
|
||||
},
|
||||
]
|
||||
]
|
||||
|
||||
@@ -65,12 +65,6 @@
|
||||
// uni.switchTab({
|
||||
// url: item.path
|
||||
// })
|
||||
if (item.id === 1) {
|
||||
return uni.showToast({
|
||||
icon: "none",
|
||||
title: '系统正在升级完善',
|
||||
})
|
||||
}
|
||||
uni.navigateTo({
|
||||
url: item.path
|
||||
})
|
||||
|
||||
@@ -7,8 +7,7 @@
|
||||
</view>
|
||||
|
||||
<view class="head_right">
|
||||
{{ companyitem.wage }}
|
||||
|
||||
{{ companyitem.wage }}{{ wageUnit[companyitem.wageUnitCategory] }}
|
||||
</view>
|
||||
|
||||
</view>
|
||||
@@ -35,7 +34,7 @@
|
||||
</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>--km</view>
|
||||
<view>{{distance(companyitem)}}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="comment" v-if='comment' @tap.stop="goComment(companyitem.missionNo)">
|
||||
@@ -58,7 +57,10 @@
|
||||
dateFormat
|
||||
} from "../../untils/format.js";
|
||||
import dictionary from '@/common/textdata.js';
|
||||
|
||||
import {
|
||||
addZeroPrefix,
|
||||
getDistanceFromLatLonInKm
|
||||
} from '@/untils/tools.js'
|
||||
export default {
|
||||
beforeCreate: function() {},
|
||||
props: {
|
||||
@@ -79,6 +81,9 @@
|
||||
near: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
position: {
|
||||
default: null
|
||||
}
|
||||
},
|
||||
data() {
|
||||
@@ -95,6 +100,24 @@
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
distance(item) {
|
||||
const {
|
||||
lon,
|
||||
lat
|
||||
} = item
|
||||
if (this.position && lon > 0) {
|
||||
const {
|
||||
longitude,
|
||||
latitude
|
||||
} = this.position
|
||||
const {
|
||||
m,
|
||||
km
|
||||
} = getDistanceFromLatLonInKm(lat, lon, latitude, longitude)
|
||||
return m > 1000 ? `${km.toFixed(2)}km` : `${m.toFixed(2)}m`
|
||||
}
|
||||
return '--km'
|
||||
},
|
||||
goComment: function(no) {
|
||||
uni.navigateTo({
|
||||
url: `../../pageMy/mycomment/mycomment?missionNo=${encodeURIComponent(no)}`
|
||||
|
||||
@@ -57,14 +57,13 @@
|
||||
dateFormat
|
||||
} from "../../untils/format.js";
|
||||
import dictionary from '@/common/textdata.js';
|
||||
import {
|
||||
defaults
|
||||
} from "lodash";
|
||||
import {
|
||||
addZeroPrefix,
|
||||
getDistanceFromLatLonInKm
|
||||
} from '@/untils/tools.js'
|
||||
import {
|
||||
defaults
|
||||
} from "lodash";
|
||||
|
||||
export default {
|
||||
beforeCreate: function() {},
|
||||
props: {
|
||||
@@ -86,7 +85,9 @@
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
location: Object
|
||||
position: {
|
||||
default: null
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
||||
@@ -7,9 +7,7 @@
|
||||
</view>
|
||||
|
||||
<view class="head_right">
|
||||
{{ companyitem.wage }}
|
||||
<!-- 后台处理 单位-->
|
||||
<!-- {{ wageUnit[companyitem.wageUnitCategory] }} -->
|
||||
{{ companyitem.wage }} {{ wageUnit[companyitem.wageUnitCategory] }}
|
||||
</view>
|
||||
</view>
|
||||
<view class="ask">
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
</view>
|
||||
|
||||
<view class="head_right">
|
||||
{{ companyitem.wage }}~{{companyitem.wageUpper}}{{ wageUnit[companyitem.wageUnitCategory] }}
|
||||
{{ companyitem.wage }}{{ wageUnit[companyitem.wageUnitCategory] }}
|
||||
</view>
|
||||
</view>
|
||||
<view class="ask">
|
||||
@@ -90,8 +90,7 @@
|
||||
near: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
position: Object,
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
||||
@@ -130,7 +130,7 @@
|
||||
if (this.option && this.option.apikey) {
|
||||
const script = document.createElement('script')
|
||||
// view 层的页面运行在 www 根目录,其相对路径相对于 www 计算
|
||||
script.src = 'https://api.tianditu.gov.cn/api?v=4.0&tk=' + this.option.apikey
|
||||
script.src = 'http://api.tianditu.gov.cn/api?v=4.0&tk=' + this.option.apikey
|
||||
script.onload = this.initEcharts.bind(this)
|
||||
document.head.appendChild(script)
|
||||
}
|
||||
@@ -145,7 +145,7 @@
|
||||
if (this.option.apikey) {
|
||||
|
||||
const script = document.createElement('script')
|
||||
script.src = 'https://api.tianditu.gov.cn/api?v=4.0&tk=' + this.option.apikey
|
||||
script.src = 'http://api.tianditu.gov.cn/api?v=4.0&tk=' + this.option.apikey
|
||||
|
||||
script.onload = this.initEcharts.bind(this)
|
||||
document.head.appendChild(script)
|
||||
|
||||
@@ -193,7 +193,7 @@
|
||||
if (this.option && this.option.apikey) {
|
||||
const script = document.createElement('script')
|
||||
// view 层的页面运行在 www 根目录,其相对路径相对于 www 计算
|
||||
script.src = 'https://api.tianditu.gov.cn/api?v=4.0&tk=' + this.option.apikey
|
||||
script.src = 'http://api.tianditu.gov.cn/api?v=4.0&tk=' + this.option.apikey
|
||||
|
||||
script.onload = this.initEcharts.bind(this)
|
||||
document.head.appendChild(script)
|
||||
@@ -212,7 +212,7 @@
|
||||
if (this.option.apikey) {
|
||||
|
||||
const script = document.createElement('script')
|
||||
script.src = 'https://api.tianditu.gov.cn/api?v=4.0&tk=' + this.option.apikey
|
||||
script.src = 'http://api.tianditu.gov.cn/api?v=4.0&tk=' + this.option.apikey
|
||||
|
||||
script.onload = this.initEcharts.bind(this)
|
||||
document.head.appendChild(script)
|
||||
|
||||
@@ -133,7 +133,7 @@
|
||||
mask: true
|
||||
})
|
||||
uni.request({
|
||||
url: 'https://api.tianditu.gov.cn/v2/search',
|
||||
url: 'http://api.tianditu.gov.cn/v2/search',
|
||||
method: 'GET',
|
||||
data: params,
|
||||
success: res => {
|
||||
@@ -257,6 +257,7 @@
|
||||
tk: e.apikey
|
||||
},
|
||||
success: res => {
|
||||
//console.log(res);
|
||||
if (res.data.result) {
|
||||
const value = that.formatterAdressLocation(res.data.result, 1)
|
||||
that.arr_list = [value]
|
||||
@@ -268,36 +269,7 @@
|
||||
}
|
||||
},
|
||||
fail: () => {
|
||||
if (window.location.origin.search('localhost') >= 0 || window.location.origin
|
||||
.search('10.165.0.173') >= 0) { // 测试环境
|
||||
const value = that.formatterAdressLocation({
|
||||
"formatted_address": "四川省德阳市广汉市西高镇李家院子东北约95米",
|
||||
"location": {
|
||||
"lon": 104.20046,
|
||||
"lat": 31.0513
|
||||
},
|
||||
"addressComponent": {
|
||||
"address": "李家院子",
|
||||
"town": "高坪镇",
|
||||
"nation": "中国",
|
||||
"city": "德阳市",
|
||||
"county_code": "156510681",
|
||||
"poi_position": "东北",
|
||||
"county": "广汉市",
|
||||
"city_code": "156510600",
|
||||
"address_position": "东北",
|
||||
"poi": "李家院子",
|
||||
"province_code": "156510000",
|
||||
"town_code": "156510681103",
|
||||
"province": "四川省",
|
||||
"road": "洛小路",
|
||||
"road_distance": 126,
|
||||
"address_distance": 95,
|
||||
"poi_distance": 95
|
||||
}
|
||||
}, 1)
|
||||
that.arr_list = [value]
|
||||
}
|
||||
//console.log('获取失败')
|
||||
},
|
||||
complete: () => {
|
||||
uni.hideLoading();
|
||||
|
||||
@@ -5,46 +5,6 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import 'ol/ol.css';
|
||||
import Map from 'ol/Map';
|
||||
import View from 'ol/View';
|
||||
import TileLayer from 'ol/layer/Tile';
|
||||
import SourceVector from 'ol/source/Vector';
|
||||
import LayerVector from 'ol/layer/Vector';
|
||||
import * as control from 'ol/control';
|
||||
import {
|
||||
toLonLat
|
||||
} from 'ol/proj';
|
||||
import Overlay from 'ol/Overlay';
|
||||
import {
|
||||
toStringHDMS
|
||||
} from 'ol/coordinate';
|
||||
import {
|
||||
Select
|
||||
} from 'ol/interaction'
|
||||
import {
|
||||
GeoJSON
|
||||
} from 'ol/format';
|
||||
import {
|
||||
Style,
|
||||
Circle,
|
||||
Fill,
|
||||
Stroke,
|
||||
Icon,
|
||||
Text
|
||||
} from 'ol/style';
|
||||
import Feature from 'ol/Feature';
|
||||
import {
|
||||
Point,
|
||||
Polygon
|
||||
} from 'ol/geom';
|
||||
import {
|
||||
Logo,
|
||||
TileSuperMapRest,
|
||||
FeatureService,
|
||||
GetFeaturesByGeometryParameters
|
||||
} from '@supermap/iclient-ol';
|
||||
const geoJSONParser = new GeoJSON();
|
||||
let mypoint = require('@/static/img/mypoint.png');
|
||||
export default {
|
||||
name: "uMapView",
|
||||
@@ -114,297 +74,12 @@
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
if (this.init) {
|
||||
this.initMap()
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
initMap(options) {
|
||||
let lat, lon;
|
||||
if (options) {
|
||||
lat = options.lat
|
||||
lon = options.lon
|
||||
} else {
|
||||
lat = this.latitude
|
||||
lon = this.longitude
|
||||
}
|
||||
this.map = new Map({
|
||||
target: 'map',
|
||||
controls: control.defaults({
|
||||
attribution: false,
|
||||
zoom: this.ScaleZoom,
|
||||
}),
|
||||
layers: [
|
||||
new TileLayer({ // 使用瓦片
|
||||
source: new TileSuperMapRest({
|
||||
url: this.MapUrl,
|
||||
wrapX: true,
|
||||
}),
|
||||
projection: 'EPSG:4326',
|
||||
}),
|
||||
],
|
||||
view: new View({
|
||||
center: [lon, lat],
|
||||
maxZoom: this.maxZoom,
|
||||
minZoom: this.minZoom,
|
||||
zoom: this.zoom,
|
||||
projection: 'EPSG:4326',
|
||||
})
|
||||
});
|
||||
//添加查询结果图层
|
||||
this.vectorSource = new SourceVector({
|
||||
wrapX: false
|
||||
});
|
||||
const resultLayer = new LayerVector({
|
||||
source: this.vectorSource,
|
||||
});
|
||||
|
||||
//添加点图层
|
||||
this.addPointsSource = new SourceVector({
|
||||
wrapX: false
|
||||
});
|
||||
const addPointsLayer = new LayerVector({
|
||||
source: this.addPointsSource,
|
||||
});
|
||||
this.map.addLayer(addPointsLayer);
|
||||
this.map.addLayer(resultLayer);
|
||||
this.map.on('pointermove', (e) => {
|
||||
if (this.isShowToolTip) {
|
||||
this.helpTooltip.setPosition(undefined);
|
||||
this.helpTooltipElement.classList.add('hidden');
|
||||
}
|
||||
this.$emit('regionchange', e.pixel)
|
||||
});
|
||||
this.map.on('singleclick', (e) => {
|
||||
this.$emit('clickMap', e.coordinate)
|
||||
});
|
||||
|
||||
if (this.open) {
|
||||
this.addFeature([{
|
||||
id: 1,
|
||||
latitude: lat,
|
||||
longitude: lon,
|
||||
iconPath: mypoint,
|
||||
title: '',
|
||||
width: 20,
|
||||
height: 20
|
||||
}])
|
||||
}
|
||||
|
||||
if (this.flagTip) {
|
||||
this.createHelpTooltip()
|
||||
}
|
||||
|
||||
},
|
||||
addMarker(point) {
|
||||
console.log('point', point)
|
||||
// this.ceateMarker([104.404419, 31.133980])
|
||||
},
|
||||
addFeature(covers) {
|
||||
console.log(covers)
|
||||
const features = covers.map((item) => ({
|
||||
type: 'Feature',
|
||||
geometry: {
|
||||
type: 'Point',
|
||||
coordinates: [item.longitude, item.latitude],
|
||||
},
|
||||
properties: {
|
||||
iconPath: item.iconPath,
|
||||
text: item.title,
|
||||
value: JSON.stringify(item),
|
||||
scale: item.id === 1 ? [0.15, 0.15] : [0.1, 0.1]
|
||||
}
|
||||
}))
|
||||
this.careateFeature(features)
|
||||
|
||||
},
|
||||
ceateMarker(point) {
|
||||
// 创建一个坐标点
|
||||
const pointed = new Point(point); // 这里的[0, 0]应该替换为您的经度和纬度
|
||||
|
||||
// 创建一个特征
|
||||
const pointFeature = new Feature({
|
||||
geometry: pointed,
|
||||
name: 'My Point'
|
||||
});
|
||||
|
||||
pointFeature.setStyle(new Style({
|
||||
image: new Circle({
|
||||
fill: new Fill({
|
||||
color: [255, 0, 0, 0.5]
|
||||
}),
|
||||
stroke: new Stroke({
|
||||
color: 'red',
|
||||
width: 2
|
||||
}),
|
||||
radius: 8
|
||||
})
|
||||
}));
|
||||
|
||||
pointFeature.setProperties({
|
||||
POP: 1,
|
||||
CAPITAL: 'test'
|
||||
});
|
||||
this.addPointsSource.clear()
|
||||
// 将特征添加到矢量图层
|
||||
this.addPointsSource.addFeature(pointFeature);
|
||||
// 确保更新地图视图以显示新的标点
|
||||
this.map.getView().fit(this.addPointsSource.getExtent());
|
||||
// // 或者移动视图
|
||||
// _this.map.getView().animate({
|
||||
// duration: 850,
|
||||
// zoom: 5,
|
||||
// center: point,
|
||||
// });
|
||||
|
||||
},
|
||||
careateFeature(result) {
|
||||
if (this.vectorSourceIcon) {
|
||||
this.vectorSourceIcon.clear()
|
||||
const geojsonObject = {
|
||||
type: 'FeatureCollection',
|
||||
features: result,
|
||||
};
|
||||
this.vectorSourceIcon.addFeatures(geoJSONParser.readFeatures(geojsonObject))
|
||||
this.vectorSourceIcon.changed()
|
||||
return
|
||||
}
|
||||
|
||||
const geojsonObject = {
|
||||
type: 'FeatureCollection',
|
||||
features: result,
|
||||
};
|
||||
// 创建一个图层作为点位
|
||||
this.vectorSourceIcon = new SourceVector({
|
||||
features: geoJSONParser.readFeatures(geojsonObject)
|
||||
});
|
||||
this.vectorLayerIcon = new LayerVector({
|
||||
source: this.vectorSourceIcon,
|
||||
style: feature => {
|
||||
return new Style({
|
||||
image: new Icon({
|
||||
anchor: [0.5, 0.9],
|
||||
scale: feature.get('scale'),
|
||||
src: feature.get('iconPath'),
|
||||
}),
|
||||
text: new Text({
|
||||
text: feature.get('text'),
|
||||
fill: new Fill({
|
||||
color: '#000'
|
||||
}),
|
||||
stroke: new Stroke({
|
||||
color: '#fff',
|
||||
width: 3
|
||||
}),
|
||||
font: 'normal 12px Calibri, sans-serif',
|
||||
textAlign: 'center', // 文本对齐
|
||||
offsetX: 0,
|
||||
offsetY: 15,
|
||||
rotation: 0, // 文本旋转
|
||||
}),
|
||||
});
|
||||
}
|
||||
});
|
||||
this.map.addLayer(this.vectorLayerIcon);
|
||||
// 添加事件
|
||||
this.selectInteraction = new Select({
|
||||
layers: [this.vectorLayerIcon]
|
||||
});
|
||||
this.selectInteraction.on('select', (event) => {
|
||||
const selectedFeatures = event.selected;
|
||||
if (selectedFeatures.length) {
|
||||
const select = selectedFeatures[0].values_
|
||||
this.$emit('markertap', JSON.parse(select.value))
|
||||
// tooltip
|
||||
if (this.flagTip) {
|
||||
const coordinate = selectedFeatures[0].values_.geometry.flatCoordinates;
|
||||
this.helpTooltipElement.innerHTML = select.text;
|
||||
console.log(this.helpTooltip)
|
||||
this.helpTooltip.setPosition(coordinate);
|
||||
this.helpTooltipElement.classList.remove('hidden');
|
||||
this.map.addOverlay(this.helpTooltip);
|
||||
this.isShowToolTip = true
|
||||
}
|
||||
}
|
||||
});
|
||||
this.map.addInteraction(this.selectInteraction);
|
||||
},
|
||||
createHelpTooltip() {
|
||||
this.helpTooltipElement
|
||||
if (this.helpTooltipElement) {
|
||||
this.helpTooltipElement.parentNode.removeChild(this.helpTooltipElement);
|
||||
}
|
||||
this.helpTooltipElement = document.createElement('div');
|
||||
this.helpTooltipElement.className = 'tooltip hidden';
|
||||
this.helpTooltip = new Overlay({
|
||||
element: this.helpTooltipElement,
|
||||
offset: [-30, 20],
|
||||
positioning: 'center-left'
|
||||
});
|
||||
}
|
||||
}
|
||||
methods: {}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.app-content {}
|
||||
|
||||
.editPane {
|
||||
position: absolute;
|
||||
right: 65px;
|
||||
top: 8px;
|
||||
text-align: center;
|
||||
background: #FFF;
|
||||
z-index: 1000;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.ol-popup {
|
||||
position: absolute;
|
||||
background-color: white;
|
||||
-webkit-filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.2));
|
||||
filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.2));
|
||||
padding: 15px;
|
||||
border-radius: 10px;
|
||||
border: 1px solid #cccccc;
|
||||
bottom: 12px;
|
||||
left: -50px;
|
||||
min-width: 120px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.ol-popup:after,
|
||||
.ol-popup:before {
|
||||
top: 100%;
|
||||
border: solid transparent;
|
||||
content: " ";
|
||||
height: 0;
|
||||
width: 0;
|
||||
position: absolute;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.ol-popup:after {
|
||||
border-top-color: white;
|
||||
border-width: 10px;
|
||||
left: 48px;
|
||||
margin-left: -10px;
|
||||
}
|
||||
|
||||
.ol-popup:before {
|
||||
border-top-color: #cccccc;
|
||||
border-width: 11px;
|
||||
left: 48px;
|
||||
margin-left: -11px;
|
||||
}
|
||||
|
||||
.tooltip {
|
||||
position: relative;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
border-radius: 4px;
|
||||
color: white;
|
||||
padding: 4px 8px;
|
||||
opacity: 0.7;
|
||||
white-space: nowrap;
|
||||
}
|
||||
</style>
|
||||
410
components/uMapView/uMapViewcopy.vue
Normal file
@@ -0,0 +1,410 @@
|
||||
<template>
|
||||
<view class="app-content">
|
||||
<view id="map" style="width: 100%;height: 100%;"></view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import 'ol/ol.css';
|
||||
import Map from 'ol/Map';
|
||||
import View from 'ol/View';
|
||||
import TileLayer from 'ol/layer/Tile';
|
||||
import SourceVector from 'ol/source/Vector';
|
||||
import LayerVector from 'ol/layer/Vector';
|
||||
import * as control from 'ol/control';
|
||||
import {
|
||||
toLonLat
|
||||
} from 'ol/proj';
|
||||
import Overlay from 'ol/Overlay';
|
||||
import {
|
||||
toStringHDMS
|
||||
} from 'ol/coordinate';
|
||||
import {
|
||||
Select
|
||||
} from 'ol/interaction'
|
||||
import {
|
||||
GeoJSON
|
||||
} from 'ol/format';
|
||||
import {
|
||||
Style,
|
||||
Circle,
|
||||
Fill,
|
||||
Stroke,
|
||||
Icon,
|
||||
Text
|
||||
} from 'ol/style';
|
||||
import Feature from 'ol/Feature';
|
||||
import {
|
||||
Point,
|
||||
Polygon
|
||||
} from 'ol/geom';
|
||||
import {
|
||||
Logo,
|
||||
TileSuperMapRest,
|
||||
FeatureService,
|
||||
GetFeaturesByGeometryParameters
|
||||
} from '@supermap/iclient-ol';
|
||||
const geoJSONParser = new GeoJSON();
|
||||
let mypoint = require('@/static/img/mypoint.png');
|
||||
export default {
|
||||
name: "uMapView",
|
||||
props: {
|
||||
latitude: {
|
||||
required: true,
|
||||
},
|
||||
longitude: {
|
||||
required: true,
|
||||
},
|
||||
zoom: {
|
||||
type: Number,
|
||||
required: false,
|
||||
default: 10,
|
||||
},
|
||||
maxZoom: {
|
||||
type: Number,
|
||||
required: false,
|
||||
default: 20,
|
||||
},
|
||||
minZoom: {
|
||||
type: Number,
|
||||
required: false,
|
||||
default: 0,
|
||||
},
|
||||
ScaleZoom: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false,
|
||||
},
|
||||
MapUrl: { // 瓦片地图URL
|
||||
type: String,
|
||||
required: true,
|
||||
default: '',
|
||||
},
|
||||
flagTip: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false,
|
||||
},
|
||||
open: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false,
|
||||
},
|
||||
init: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: true,
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
// 实例化对象
|
||||
map: null,
|
||||
addPointsSource: null,
|
||||
vectorSource: null,
|
||||
vectorSourceIcon: null,
|
||||
vectorLayerIcon: null,
|
||||
selectInteraction: null,
|
||||
helpTooltipElement: null,
|
||||
helpTooltip: null,
|
||||
isclearPoint: null,
|
||||
overlay: null,
|
||||
// 控制参数
|
||||
isShowToolTip: false,
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
if (this.init) {
|
||||
this.initMap()
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
initMap(options) {
|
||||
let lat, lon;
|
||||
if (options) {
|
||||
lat = options.lat
|
||||
lon = options.lon
|
||||
} else {
|
||||
lat = this.latitude
|
||||
lon = this.longitude
|
||||
}
|
||||
this.map = new Map({
|
||||
target: 'map',
|
||||
controls: control.defaults({
|
||||
attribution: false,
|
||||
zoom: this.ScaleZoom,
|
||||
}),
|
||||
layers: [
|
||||
new TileLayer({ // 使用瓦片
|
||||
source: new TileSuperMapRest({
|
||||
url: this.MapUrl,
|
||||
wrapX: true,
|
||||
}),
|
||||
projection: 'EPSG:4326',
|
||||
}),
|
||||
],
|
||||
view: new View({
|
||||
center: [lon, lat],
|
||||
maxZoom: this.maxZoom,
|
||||
minZoom: this.minZoom,
|
||||
zoom: this.zoom,
|
||||
projection: 'EPSG:4326',
|
||||
})
|
||||
});
|
||||
//添加查询结果图层
|
||||
this.vectorSource = new SourceVector({
|
||||
wrapX: false
|
||||
});
|
||||
const resultLayer = new LayerVector({
|
||||
source: this.vectorSource,
|
||||
});
|
||||
|
||||
//添加点图层
|
||||
this.addPointsSource = new SourceVector({
|
||||
wrapX: false
|
||||
});
|
||||
const addPointsLayer = new LayerVector({
|
||||
source: this.addPointsSource,
|
||||
});
|
||||
this.map.addLayer(addPointsLayer);
|
||||
this.map.addLayer(resultLayer);
|
||||
this.map.on('pointermove', (e) => {
|
||||
if (this.isShowToolTip) {
|
||||
this.helpTooltip.setPosition(undefined);
|
||||
this.helpTooltipElement.classList.add('hidden');
|
||||
}
|
||||
this.$emit('regionchange', e.pixel)
|
||||
});
|
||||
this.map.on('singleclick', (e) => {
|
||||
this.$emit('clickMap', e.coordinate)
|
||||
});
|
||||
|
||||
if (this.open) {
|
||||
this.addFeature([{
|
||||
id: 1,
|
||||
latitude: lat,
|
||||
longitude: lon,
|
||||
iconPath: mypoint,
|
||||
title: '',
|
||||
width: 20,
|
||||
height: 20
|
||||
}])
|
||||
}
|
||||
|
||||
if (this.flagTip) {
|
||||
this.createHelpTooltip()
|
||||
}
|
||||
|
||||
},
|
||||
addMarker(point) {
|
||||
console.log('point', point)
|
||||
// this.ceateMarker([104.404419, 31.133980])
|
||||
},
|
||||
addFeature(covers) {
|
||||
console.log(covers)
|
||||
const features = covers.map((item) => ({
|
||||
type: 'Feature',
|
||||
geometry: {
|
||||
type: 'Point',
|
||||
coordinates: [item.longitude, item.latitude],
|
||||
},
|
||||
properties: {
|
||||
iconPath: item.iconPath,
|
||||
text: item.title,
|
||||
value: JSON.stringify(item),
|
||||
scale: item.id === 1 ? [0.15, 0.15] : [0.1, 0.1]
|
||||
}
|
||||
}))
|
||||
this.careateFeature(features)
|
||||
|
||||
},
|
||||
ceateMarker(point) {
|
||||
// 创建一个坐标点
|
||||
const pointed = new Point(point); // 这里的[0, 0]应该替换为您的经度和纬度
|
||||
|
||||
// 创建一个特征
|
||||
const pointFeature = new Feature({
|
||||
geometry: pointed,
|
||||
name: 'My Point'
|
||||
});
|
||||
|
||||
pointFeature.setStyle(new Style({
|
||||
image: new Circle({
|
||||
fill: new Fill({
|
||||
color: [255, 0, 0, 0.5]
|
||||
}),
|
||||
stroke: new Stroke({
|
||||
color: 'red',
|
||||
width: 2
|
||||
}),
|
||||
radius: 8
|
||||
})
|
||||
}));
|
||||
|
||||
pointFeature.setProperties({
|
||||
POP: 1,
|
||||
CAPITAL: 'test'
|
||||
});
|
||||
this.addPointsSource.clear()
|
||||
// 将特征添加到矢量图层
|
||||
this.addPointsSource.addFeature(pointFeature);
|
||||
// 确保更新地图视图以显示新的标点
|
||||
this.map.getView().fit(this.addPointsSource.getExtent());
|
||||
// // 或者移动视图
|
||||
// _this.map.getView().animate({
|
||||
// duration: 850,
|
||||
// zoom: 5,
|
||||
// center: point,
|
||||
// });
|
||||
|
||||
},
|
||||
careateFeature(result) {
|
||||
if (this.vectorSourceIcon) {
|
||||
this.vectorSourceIcon.clear()
|
||||
const geojsonObject = {
|
||||
type: 'FeatureCollection',
|
||||
features: result,
|
||||
};
|
||||
this.vectorSourceIcon.addFeatures(geoJSONParser.readFeatures(geojsonObject))
|
||||
this.vectorSourceIcon.changed()
|
||||
return
|
||||
}
|
||||
|
||||
const geojsonObject = {
|
||||
type: 'FeatureCollection',
|
||||
features: result,
|
||||
};
|
||||
// 创建一个图层作为点位
|
||||
this.vectorSourceIcon = new SourceVector({
|
||||
features: geoJSONParser.readFeatures(geojsonObject)
|
||||
});
|
||||
this.vectorLayerIcon = new LayerVector({
|
||||
source: this.vectorSourceIcon,
|
||||
style: feature => {
|
||||
return new Style({
|
||||
image: new Icon({
|
||||
anchor: [0.5, 0.9],
|
||||
scale: feature.get('scale'),
|
||||
src: feature.get('iconPath'),
|
||||
}),
|
||||
text: new Text({
|
||||
text: feature.get('text'),
|
||||
fill: new Fill({
|
||||
color: '#000'
|
||||
}),
|
||||
stroke: new Stroke({
|
||||
color: '#fff',
|
||||
width: 3
|
||||
}),
|
||||
font: 'normal 12px Calibri, sans-serif',
|
||||
textAlign: 'center', // 文本对齐
|
||||
offsetX: 0,
|
||||
offsetY: 15,
|
||||
rotation: 0, // 文本旋转
|
||||
}),
|
||||
});
|
||||
}
|
||||
});
|
||||
this.map.addLayer(this.vectorLayerIcon);
|
||||
// 添加事件
|
||||
this.selectInteraction = new Select({
|
||||
layers: [this.vectorLayerIcon]
|
||||
});
|
||||
this.selectInteraction.on('select', (event) => {
|
||||
const selectedFeatures = event.selected;
|
||||
if (selectedFeatures.length) {
|
||||
const select = selectedFeatures[0].values_
|
||||
this.$emit('markertap', JSON.parse(select.value))
|
||||
// tooltip
|
||||
if (this.flagTip) {
|
||||
const coordinate = selectedFeatures[0].values_.geometry.flatCoordinates;
|
||||
this.helpTooltipElement.innerHTML = select.text;
|
||||
console.log(this.helpTooltip)
|
||||
this.helpTooltip.setPosition(coordinate);
|
||||
this.helpTooltipElement.classList.remove('hidden');
|
||||
this.map.addOverlay(this.helpTooltip);
|
||||
this.isShowToolTip = true
|
||||
}
|
||||
}
|
||||
});
|
||||
this.map.addInteraction(this.selectInteraction);
|
||||
},
|
||||
createHelpTooltip() {
|
||||
this.helpTooltipElement
|
||||
if (this.helpTooltipElement) {
|
||||
this.helpTooltipElement.parentNode.removeChild(this.helpTooltipElement);
|
||||
}
|
||||
this.helpTooltipElement = document.createElement('div');
|
||||
this.helpTooltipElement.className = 'tooltip hidden';
|
||||
this.helpTooltip = new Overlay({
|
||||
element: this.helpTooltipElement,
|
||||
offset: [-30, 20],
|
||||
positioning: 'center-left'
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.app-content {}
|
||||
|
||||
.editPane {
|
||||
position: absolute;
|
||||
right: 65px;
|
||||
top: 8px;
|
||||
text-align: center;
|
||||
background: #FFF;
|
||||
z-index: 1000;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.ol-popup {
|
||||
position: absolute;
|
||||
background-color: white;
|
||||
-webkit-filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.2));
|
||||
filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.2));
|
||||
padding: 15px;
|
||||
border-radius: 10px;
|
||||
border: 1px solid #cccccc;
|
||||
bottom: 12px;
|
||||
left: -50px;
|
||||
min-width: 120px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.ol-popup:after,
|
||||
.ol-popup:before {
|
||||
top: 100%;
|
||||
border: solid transparent;
|
||||
content: " ";
|
||||
height: 0;
|
||||
width: 0;
|
||||
position: absolute;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.ol-popup:after {
|
||||
border-top-color: white;
|
||||
border-width: 10px;
|
||||
left: 48px;
|
||||
margin-left: -10px;
|
||||
}
|
||||
|
||||
.ol-popup:before {
|
||||
border-top-color: #cccccc;
|
||||
border-width: 11px;
|
||||
left: 48px;
|
||||
margin-left: -11px;
|
||||
}
|
||||
|
||||
.tooltip {
|
||||
position: relative;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
border-radius: 4px;
|
||||
color: white;
|
||||
padding: 4px 8px;
|
||||
opacity: 0.7;
|
||||
white-space: nowrap;
|
||||
}
|
||||
</style>
|
||||
@@ -1,13 +1,6 @@
|
||||
<template>
|
||||
<view class="v-tabs" :style="{ height: height }">
|
||||
<scroll-view
|
||||
class="scroll-view"
|
||||
:show-scrollbar="false"
|
||||
scroll-x
|
||||
scroll-with-animation
|
||||
:scroll-left="scrollLeft"
|
||||
style="width: auto; height: 100%; overflow: hidden"
|
||||
>
|
||||
<scroll-view class="scroll-view" :show-scrollbar="false" scroll-x scroll-with-animation :scroll-left="scrollLeft" style="width: auto; height: 100%; overflow: hidden;">
|
||||
<view class="v-tabs__inner">
|
||||
<view
|
||||
class="v-tabs__item"
|
||||
@@ -17,6 +10,7 @@
|
||||
backgroundColor: activeTab == i ? backgroundColor : '',
|
||||
borderRadius,
|
||||
padding,
|
||||
|
||||
}"
|
||||
:data-index="i"
|
||||
:class="{ active: activeTab == i }"
|
||||
@@ -62,58 +56,58 @@ export default {
|
||||
props: {
|
||||
value: {
|
||||
type: [String, Number],
|
||||
default: 0,
|
||||
default: 0
|
||||
},
|
||||
height: {
|
||||
type: String,
|
||||
default: '45px',
|
||||
default: '45px'
|
||||
},
|
||||
tabs: {
|
||||
type: Array,
|
||||
default() {
|
||||
return [];
|
||||
},
|
||||
return []
|
||||
}
|
||||
},
|
||||
backgroundColor: {
|
||||
type: String,
|
||||
default: 'transparent',
|
||||
default: 'transparent'
|
||||
},
|
||||
borderRadius: {
|
||||
type: String,
|
||||
default: '5px',
|
||||
default: '5px'
|
||||
},
|
||||
color: {
|
||||
type: String,
|
||||
default: '#333333',
|
||||
default: '#333333'
|
||||
},
|
||||
activeColor: {
|
||||
type: String,
|
||||
default: '#007AFF',
|
||||
default: '#007AFF'
|
||||
},
|
||||
fontSize: {
|
||||
type: String,
|
||||
default: '14px',
|
||||
default: '14px'
|
||||
},
|
||||
activeFontSize: {
|
||||
type: String,
|
||||
default: '14px',
|
||||
default: '14px'
|
||||
},
|
||||
padding: {
|
||||
type: String,
|
||||
default: '10rpx 20rpx',
|
||||
default: '10rpx 20rpx'
|
||||
},
|
||||
lineScale: {
|
||||
type: Number,
|
||||
default: 0.6,
|
||||
default: 0.6
|
||||
},
|
||||
lineHeight: {
|
||||
type: String,
|
||||
default: '3px',
|
||||
default: '3px'
|
||||
},
|
||||
lineColor: {
|
||||
type: String,
|
||||
default: '#007AFF',
|
||||
},
|
||||
default: '#007AFF'
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@@ -121,75 +115,75 @@ export default {
|
||||
activeTab: 0,
|
||||
width: 0,
|
||||
lineLeft: 0,
|
||||
lineWidth: 0,
|
||||
};
|
||||
lineWidth: 0
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
activeTab(newVal) {
|
||||
this.$emit('input', newVal * 1);
|
||||
this.$emit('input', newVal * 1)
|
||||
},
|
||||
value(newVal) {
|
||||
this.activeTab = newVal;
|
||||
this.getTabsWidth(0);
|
||||
},
|
||||
this.activeTab = newVal
|
||||
this.getTabsWidth(0)
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleTapItem(e) {
|
||||
const index = e.currentTarget.dataset.index;
|
||||
const index = e.currentTarget.dataset.index
|
||||
if (this.activeTab != index) {
|
||||
this.activeTab = index;
|
||||
this.getTabsWidth(e.currentTarget.offsetLeft);
|
||||
this.$emit('change', this.activeTab);
|
||||
this.activeTab = index
|
||||
this.getTabsWidth(e.currentTarget.offsetLeft)
|
||||
this.$emit('change', this.activeTab)
|
||||
}
|
||||
},
|
||||
getTabsWidth(offsetLeft) {
|
||||
const query = uni.createSelectorQuery().in(this);
|
||||
const query = uni.createSelectorQuery().in(this)
|
||||
query
|
||||
.select('.v-tabs')
|
||||
.boundingClientRect((data) => {
|
||||
this.width = data.width;
|
||||
.boundingClientRect(data => {
|
||||
this.width = data.width
|
||||
})
|
||||
.exec();
|
||||
.exec()
|
||||
setTimeout(() => {
|
||||
let i = 0;
|
||||
let width = 0;
|
||||
let i = 0
|
||||
let width = 0
|
||||
query
|
||||
.selectAll('.v-tabs__item')
|
||||
.boundingClientRect((data) => {
|
||||
.boundingClientRect(data => {
|
||||
width = data.reduce((total, currentValue, currentIndex, arr) => {
|
||||
if (currentIndex < this.activeTab) {
|
||||
total = total + currentValue.width;
|
||||
total = total + currentValue.width
|
||||
}
|
||||
return total;
|
||||
}, 0);
|
||||
const padding = this.padding.split(' ')[0];
|
||||
const res = /(\d+)(upx|rpx|px)/.exec(padding);
|
||||
return total
|
||||
}, 0)
|
||||
const padding = this.padding.split(' ')[0]
|
||||
const res = /(\d+)(upx|rpx|px)/.exec(padding)
|
||||
if (res && (res[2] == 'upx' || res[2] == 'rpx')) {
|
||||
width += uni.upx2px(res[1]) * 2 * this.activeTab;
|
||||
width += uni.upx2px(res[1]) * 2 * this.activeTab
|
||||
} else {
|
||||
width += res[1] * this.activeTab;
|
||||
width += res[1] * this.activeTab
|
||||
}
|
||||
})
|
||||
.exec();
|
||||
.exec()
|
||||
query
|
||||
.select('.v-tabs__item.active')
|
||||
.boundingClientRect((data) => {
|
||||
const ol = offsetLeft ? offsetLeft : width;
|
||||
.boundingClientRect(data => {
|
||||
const ol = offsetLeft ? offsetLeft : width
|
||||
if (data.width) {
|
||||
this.lineLeft = ol + (data.width * (1 - this.lineScale)) / 2;
|
||||
this.lineWidth = data.width * this.lineScale;
|
||||
this.scrollLeft = ol - (this.width - data.width) / 2;
|
||||
this.lineLeft = ol + (data.width * (1 - this.lineScale)) / 2
|
||||
this.lineWidth = data.width * this.lineScale
|
||||
this.scrollLeft = ol - (this.width - data.width) / 2
|
||||
}
|
||||
})
|
||||
.exec();
|
||||
}, 10);
|
||||
},
|
||||
.exec()
|
||||
}, 10)
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.activeTab = this.value;
|
||||
this.getTabsWidth(0);
|
||||
},
|
||||
};
|
||||
this.activeTab = this.value
|
||||
this.getTabsWidth(0)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@@ -198,7 +192,7 @@ export default {
|
||||
width: 100%;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
border-bottom: 1rpx solid #dddddd;
|
||||
border-bottom: 1rpx solid #dddddd;
|
||||
.v-tabs__inner {
|
||||
position: relative;
|
||||
display: flex;
|
||||
@@ -210,13 +204,13 @@ export default {
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.active {
|
||||
.active{
|
||||
border-radius: 0 !important;
|
||||
.bottomborder {
|
||||
.bottomborder{
|
||||
width: 42rpx;
|
||||
height: 6rpx;
|
||||
margin: 0 auto;
|
||||
background-color: #1b66ff;
|
||||
background-color: #1B66FF;
|
||||
border-radius: 20rpx;
|
||||
overflow: hidden;
|
||||
display: block !important;
|
||||
@@ -241,7 +235,7 @@ export default {
|
||||
}
|
||||
}
|
||||
|
||||
::v-deep ::-webkit-scrollbar {
|
||||
/deep/ ::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -3,11 +3,9 @@ module.exports = {
|
||||
// 图片地址
|
||||
imageUrl: '',
|
||||
// 天地图tk
|
||||
apiKey: 'e4266a5e84fe6c10f60c559967f0a03f',
|
||||
apiKey: 'aa9b92683ff22363aa17baa16599cff8',
|
||||
// 显示标题
|
||||
showTitle: false,
|
||||
loginURl: 'https://dy12333.org.cn/h5/#/pages/qyPackge/user/login/login',
|
||||
AESKey: 'mL8na90u+5hoa/HKiMinvA==',
|
||||
// map 1、黑色模块 2、白色模块
|
||||
// supperMap: 'http://10.165.0.44:1205/proxy/rest/maps/f346b6c59dc64d5793713cf384fab78d/33cbaa14370449a08588f1074ecfec67',
|
||||
// supperMap: 'http://10.165.0.44:1205/proxy/rest/maps/c02c6f51f3ab4190bffd5e3e54cf5ac4/111013e9067749488d44841208771768',
|
||||
|
||||
|
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 79 KiB |
21
main.js
@@ -8,9 +8,6 @@ import tools from '@/untils/tools.js'
|
||||
import {
|
||||
VueJsonp
|
||||
} from 'vue-jsonp'
|
||||
import {
|
||||
GoLogin
|
||||
} from '@/untils/AxiosUtils.js';
|
||||
// 注册全局组件
|
||||
// import MescrollBody from "@/components/mescroll-uni/mescroll-body.vue"
|
||||
// import MescrollUni from "@/components/mescroll-uni/mescroll-uni.vue"
|
||||
@@ -23,17 +20,9 @@ function haslogin() {
|
||||
return !!store.state.user.token
|
||||
}
|
||||
|
||||
function hasResume() { // 是否填写简历
|
||||
const data = store.state.user.resumeInfo
|
||||
if (!(data.education && data.telephone && data.wage && data.workplace)) {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
function navTo(url, needLogin) {
|
||||
if (needLogin && !haslogin()) {
|
||||
GoLogin()
|
||||
console.log(url)
|
||||
if (needLogin) {
|
||||
return
|
||||
}
|
||||
uni.navigateTo({
|
||||
@@ -41,7 +30,6 @@ function navTo(url, needLogin) {
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
const msg = (title, duration = 1500, mask = false, icon = 'none') => {
|
||||
uni.showToast({
|
||||
title,
|
||||
@@ -62,13 +50,12 @@ Vue.component('jl-button', JlButton)
|
||||
Vue.component('jl-form', JlForm)
|
||||
Vue.component('jl-form-item', JlFormItem)
|
||||
Vue.component('cs-button', CSButton)
|
||||
Vue.component('super-map', superMapView)
|
||||
// Vue.component('super-map', superMapView)
|
||||
Vue.component('empty', empty)
|
||||
Vue.prototype.$api = {
|
||||
msg,
|
||||
sleep,
|
||||
haslogin,
|
||||
hasResume
|
||||
haslogin
|
||||
}
|
||||
Vue.prototype.tools = tools
|
||||
Vue.prototype.$config = config
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "招聘",
|
||||
"appid": "__UNI__BFB9B45",
|
||||
"appid": "__UNI__2BC0F87",
|
||||
"description": "",
|
||||
"versionName": "1.0.0",
|
||||
"versionCode": "100",
|
||||
|
||||
5
package-lock.json
generated
@@ -1805,11 +1805,6 @@
|
||||
"resolved": "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz",
|
||||
"integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ=="
|
||||
},
|
||||
"crypto-js": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.2.0.tgz",
|
||||
"integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q=="
|
||||
},
|
||||
"csscolorparser": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmmirror.com/csscolorparser/-/csscolorparser-1.0.3.tgz",
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@supermap/iclient-ol": "^11.1.1",
|
||||
"crypto-js": "^4.2.0",
|
||||
"decimal.js": "^10.2.0",
|
||||
"js-base64": "^2.4.9",
|
||||
"js-md5": "^0.7.3",
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
if (!this.$api.haslogin()){
|
||||
if (!this.$store.state.user.token){
|
||||
//modalTitle, content, whetherCancel, confirmText, pageUrl, cancelUrl
|
||||
showUniModal('提示','您还未登录,点击确认去登录',true,'确定','/pages/login/login','/pages/index/index')
|
||||
}else{
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
}) => {
|
||||
console.log('detail,', detail)
|
||||
// this.skillsId = id
|
||||
this.skillsName = `${detail.parentLabel}-${detail.label}`
|
||||
this.skillsName = `${detail.parentLabel}-${detail.parentTwoLabel}-${detail.label}`
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
@@ -113,12 +113,10 @@
|
||||
// }
|
||||
},
|
||||
skillLevel: function() {
|
||||
|
||||
uni.navigateTo({
|
||||
url: `./skill?id=${this.worktypesId}&tradeId=${this.tradeId}&maxLayer=2&type=2`
|
||||
url: `./skillLevel?id=${this.skillsId}&worktypesId=${this.worktypesId}&maxLayer=3&type=2`
|
||||
})
|
||||
// uni.navigateTo({
|
||||
// url: `./skillLevel?id=${this.skillsId}&worktypesId=${this.worktypesId}&maxLayer=3&type=2`
|
||||
// })
|
||||
},
|
||||
submit: async function() {
|
||||
// console.log(this.tradeName, this.worktypesName, this.skillsName);
|
||||
|
||||
@@ -31,10 +31,8 @@
|
||||
<view class="list_text">
|
||||
{{ item.worktypes }}、{{ item.skills }}
|
||||
</view>
|
||||
<view class="delt" @click="removeSkills(item.id, index)">
|
||||
删除
|
||||
<!-- 向右滑动删除 -->
|
||||
<!-- <image src="../../../static/img/left_right.png" mode=""></image> -->
|
||||
<view>
|
||||
<image src="../../../static/img/left_right.png" mode=""></image>
|
||||
</view>
|
||||
</view>
|
||||
</m-slide-list>
|
||||
@@ -77,20 +75,16 @@
|
||||
</view>
|
||||
<image src="../../../static/img/right.svg" mode=""></image>
|
||||
</view>
|
||||
<!-- @click="showPickerFunc('wage')" -->
|
||||
<view class="jobcontent" >
|
||||
<view class="jobcontent" @click="showPickerFunc('wage')">
|
||||
<view class="jobinfo">
|
||||
<view v-bind:class="['jobAddress', { 'input-error': !myResume.wage && isShowBorder }]">
|
||||
我的期望薪资
|
||||
</view>
|
||||
<view v-bind:class="['jobText', 'jobDis']">
|
||||
<!-- {{ myResume.wage ? myResume.wage : '请选择' }} -->
|
||||
|
||||
<u--input type="number" border="none" @focus="change1" @change="change($event, 'wage')" :value="myResume.wage" placeholder="请输入期望薪资范围" class="jobNumber" /><span>~</span>
|
||||
<u--input type="number" border="none" @focus="change1" @change="change($event, 'wageUpper')" :value="myResume.wageUpper" placeholder="请输入期望薪资范围" class="jobNumber" /><span>元/月</span>
|
||||
<view v-bind:class="['jobText']">
|
||||
{{ myResume.wage ? myResume.wage : '请选择' }}
|
||||
</view>
|
||||
</view>
|
||||
<!-- <image src="../../../static/img/right.svg" mode=""></image> -->
|
||||
<image src="../../../static/img/right.svg" mode=""></image>
|
||||
</view>
|
||||
<view class="jobcontent">
|
||||
<view class="jobinfo">
|
||||
@@ -171,15 +165,12 @@
|
||||
<!-- 省市 -->
|
||||
<data-picker :show="areaModal.addressShow" @confirm='confirmAddress' @cancel='areaModal.addressShow = false'
|
||||
@close='areaModal.addressShow = false' :defaultNames="areaModal.defaultNames" :indexs="areaModal.indexs"
|
||||
:defaultIds="areaModal.defaultIds" :showToolbar="false" :showBottombar="true" :sourceData=areaData
|
||||
:defaultIds="areaModal.defaultIds" :showToolbar="false" :showBottombar="true"
|
||||
:labelName="areaModal.labelName"></data-picker>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
GoLogin
|
||||
} from '@/untils/AxiosUtils.js';
|
||||
import {
|
||||
mapGetters
|
||||
} from 'vuex'
|
||||
@@ -198,8 +189,6 @@
|
||||
cloneDeep,
|
||||
forIn
|
||||
} from 'lodash';
|
||||
import area from "./province-city-county.json"
|
||||
|
||||
const validateForm = {
|
||||
name: '请输入企业名称',
|
||||
work: '请输入工作岗位',
|
||||
@@ -226,7 +215,6 @@
|
||||
education: {},
|
||||
wage: "",
|
||||
phone: "",
|
||||
wageUpper: ''
|
||||
},
|
||||
mySkills: [],
|
||||
id: undefined,
|
||||
@@ -250,26 +238,16 @@
|
||||
address: '',
|
||||
addressShow: false,
|
||||
title: 'Hello',
|
||||
indexs: [0,0],
|
||||
// indexs: [0, 0, 8],
|
||||
// defaultIds: [1, 110000, 110106],
|
||||
// defaultNames: ['北京市', '北京市', '东城区'],
|
||||
// defaultNames: ['德阳市', '旌阳区'],
|
||||
defaultNames: ['北京市', '北京市', '东城区'],
|
||||
labelName: "areaName"
|
||||
|
||||
},
|
||||
areaData: []
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
if (!this.$api.haslogin()) {
|
||||
GoLogin()
|
||||
return
|
||||
}
|
||||
this.getSkill()
|
||||
// this.areaData = area.find(i => i.id === 510000).children
|
||||
const areaObj = area.find(i => i.id === 510000).children
|
||||
const areaObj1 = areaObj.find(i => i.id === 510600)
|
||||
this.areaData = [areaObj1]
|
||||
},
|
||||
created() {
|
||||
this.getResume()
|
||||
@@ -280,7 +258,7 @@
|
||||
watch: {
|
||||
myResume: {
|
||||
handler: function(newVal, oldVal) {
|
||||
if (newVal.city && newVal.education && newVal.wage && newVal.phone && newVal.wageUpper) {
|
||||
if (newVal.city && newVal.education && newVal.wage && newVal.phone) {
|
||||
this.canSubMit = true;
|
||||
} else {
|
||||
this.canSubMit = false;
|
||||
@@ -362,7 +340,6 @@
|
||||
label: data.education
|
||||
},
|
||||
wage: data.wage,
|
||||
wageUpper: data.wageUpper,
|
||||
phone: data.telephone
|
||||
}
|
||||
this.isShowButton = false;
|
||||
@@ -501,14 +478,6 @@
|
||||
this.isShowButton = true;
|
||||
this.showPicker = true;
|
||||
},
|
||||
change(e, type) {
|
||||
console.log(type, e, '----')
|
||||
this.myResume[type] = e
|
||||
|
||||
},
|
||||
change1(){
|
||||
this.isShowButton = true;
|
||||
},
|
||||
pickerButtonFunc(e) {
|
||||
console.log(e, this.myResume, this.myResume[this.showType]);
|
||||
this.myResume[this.showType] = e.value[0];
|
||||
@@ -538,8 +507,7 @@
|
||||
city,
|
||||
education,
|
||||
phone,
|
||||
wage,
|
||||
wageUpper,
|
||||
wage
|
||||
} = this.myResume
|
||||
// 中国大陆手机号码正则表达式
|
||||
const mobileRegex = /\b(1[3-9]\d{9})\b/;
|
||||
@@ -547,7 +515,7 @@
|
||||
const landlineRegex = /\b(0\d{2,3}-\d{7,8}(-\d{1,4})?)\b/;
|
||||
|
||||
const workList = JSON.stringify(this.gzList)
|
||||
if (!wage || !wageUpper) return this.showToast("请正确填写薪资范围");
|
||||
|
||||
if (mobileRegex.test(phone) || landlineRegex.test(phone)) {
|
||||
// 电话号码格式正确
|
||||
console.log(phone, "电话号码格式正确");
|
||||
@@ -557,12 +525,10 @@
|
||||
workplace: city.workplace ? city.workplace : city.parentLabel + '-' + city.label,
|
||||
telephone: phone,
|
||||
wage,
|
||||
wageUpper,
|
||||
workExperience: workList
|
||||
}).then(res => {
|
||||
this.isShowButton = false;
|
||||
this.getResume()
|
||||
this.$store.dispatch('getResumeInfo')
|
||||
this.$api.msg('保存成功')
|
||||
})
|
||||
} else {
|
||||
@@ -843,48 +809,4 @@
|
||||
.input-error {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.delt {
|
||||
color: red;
|
||||
font-size: 26rpx;
|
||||
}
|
||||
|
||||
.jobDis {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
height: 60rpx;
|
||||
border: 1rpx solid #999999;
|
||||
border-radius: 40rpx;
|
||||
|
||||
span:nth-of-type(1) {
|
||||
padding: 0 20rpx;
|
||||
border: 1rpx solid #999999;
|
||||
border-top: none;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
span:nth-of-type(2) {
|
||||
padding: 0 10rpx;
|
||||
width: 80rpx;
|
||||
font-size: 20rpx;
|
||||
border-left: 1rpx solid #999999;
|
||||
}
|
||||
}
|
||||
.jobNumber {
|
||||
height: 60rpx;
|
||||
padding-left: 16rpx;
|
||||
/* border: 1rpx solid #999999; */
|
||||
/* border-top: none;
|
||||
border-bottom: none; */
|
||||
}
|
||||
|
||||
.uni-input-placeholder {
|
||||
padding-left: 16rpx !important;
|
||||
}
|
||||
.uni-input-input, .uni-input-placeholder {
|
||||
padding-left: 16rpx !important;
|
||||
}
|
||||
.u-input__content__field-wrapper__field {
|
||||
padding-left: 16rpx !important;
|
||||
}
|
||||
</style>
|
||||
@@ -1,27 +1,15 @@
|
||||
<template>
|
||||
<view>
|
||||
<view class="search">
|
||||
<input
|
||||
v-model="searchKeyword"
|
||||
type="text"
|
||||
class="search-input"
|
||||
placeholder="请输入关键词搜索"
|
||||
@input="handleSearch"
|
||||
@focus="isSearchFocused = true"
|
||||
@blur="handleSearchBlur"
|
||||
/>
|
||||
</view>
|
||||
<view class="title">
|
||||
全部
|
||||
</view>
|
||||
<block v-for="(item, index) in filteredResults" :key="index">
|
||||
<block v-for="(item, index) in city" :key="index">
|
||||
<view class="cityList" @click="cityClick(item)">
|
||||
{{ item.name }}
|
||||
<image src="../../../static/img/correct.svg" v-if="id === item.id" mode=""></image>
|
||||
<image v-else-if="layer !== maxLayer" src="../../../static/img/right.svg" mode=""></image>
|
||||
</view>
|
||||
</block>
|
||||
|
||||
<view class="" v-if="layer === maxLayer" style="height: 230rpx;background-color: #f6f6f6;"></view>
|
||||
<view class="btn" v-if="layer === maxLayer" @click="comfirm">
|
||||
<view class="bottombtn">
|
||||
@@ -50,10 +38,6 @@
|
||||
label: '',
|
||||
|
||||
tradeId: '',
|
||||
searchKeyword: '', // 模糊关键字搜索
|
||||
isSearchFocused: true,
|
||||
searchFields: ['name'],
|
||||
type: 1
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
@@ -67,19 +51,6 @@
|
||||
} else {
|
||||
return this.workTypeList;
|
||||
}
|
||||
},
|
||||
filteredResults() {
|
||||
if (!this.searchKeyword) {
|
||||
return this.city
|
||||
}
|
||||
|
||||
const keyword = this.searchKeyword.toLowerCase()
|
||||
return this.city.filter(item => {
|
||||
return this.searchFields.some(field => {
|
||||
const value = this.getObjectValue(item, field)
|
||||
return value && value.toLowerCase().includes(keyword)
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
@@ -93,15 +64,12 @@
|
||||
tradeId,
|
||||
parentId,
|
||||
layer,
|
||||
maxLayer,
|
||||
type
|
||||
maxLayer
|
||||
}) {
|
||||
this.parentId = parentId
|
||||
this.tradeId = tradeId || 0
|
||||
this.layer = parseInt(layer || 1)
|
||||
this.maxLayer = parseInt(maxLayer || 2)
|
||||
console.log(type, 'type')
|
||||
this.type = type
|
||||
},
|
||||
onShow: function() {},
|
||||
methods: {
|
||||
@@ -120,14 +88,11 @@
|
||||
},
|
||||
goCityInfo(item) {
|
||||
uni.navigateTo({
|
||||
url: `./skill?layer=${this.layer + 1}&maxLayer=${this.maxLayer}&parentId=${item.id}&parentLabel=${item.name}&type=${this.type}`
|
||||
url: `./skill?layer=${this.layer + 1}&maxLayer=${this.maxLayer}&parentId=${item.id}&parentLabel=${item.name}`
|
||||
})
|
||||
},
|
||||
comfirm: function() {
|
||||
if (this.id) {
|
||||
console.log(this.type)
|
||||
if (this.type == '1') {
|
||||
console.log('00000000')
|
||||
uni.$emit('setworkTypes', {
|
||||
detail: {
|
||||
id: this.id,
|
||||
@@ -135,17 +100,6 @@
|
||||
parentLabel: this.$route.query.parentLabel
|
||||
}
|
||||
})
|
||||
} else {
|
||||
console.log('1111111')
|
||||
uni.$emit('setSkill', {
|
||||
detail: {
|
||||
id: this.id,
|
||||
label: this.label,
|
||||
parentLabel: this.$route.query.parentLabel,
|
||||
parentTwoLabel: this.$route.query.parentTwoLabel
|
||||
},
|
||||
})
|
||||
}
|
||||
uni.navigateBack({
|
||||
delta: this.layer
|
||||
})
|
||||
@@ -157,22 +111,6 @@
|
||||
}
|
||||
},
|
||||
|
||||
// 模糊搜索
|
||||
handleSearch() {
|
||||
|
||||
console.log(this.searchKeyword)
|
||||
},
|
||||
// 失去焦点
|
||||
handleSearchBlur() {
|
||||
|
||||
},
|
||||
// 获取对象深层值
|
||||
getObjectValue(obj, path) {
|
||||
return path.split('.').reduce((current, key) => {
|
||||
return current && current[key] !== undefined ? current[key] : ''
|
||||
}, obj)
|
||||
},
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -248,17 +186,4 @@
|
||||
page {
|
||||
background-color: #fefefe;
|
||||
}
|
||||
|
||||
.search {
|
||||
width: 80%;
|
||||
height: 60rpx;
|
||||
margin: 10rpx auto;
|
||||
border: 1rpx solid #dddddd;
|
||||
border-radius: 40rpx;
|
||||
padding-left: 30rpx;
|
||||
}
|
||||
.search-input {
|
||||
width: 80%;
|
||||
height: 60rpx;
|
||||
}
|
||||
</style>
|
||||
@@ -7,7 +7,7 @@
|
||||
<block v-for="(page, pIndex) in data" :key="pIndex">
|
||||
<block v-for="(item, index) in page" :key="item.id">
|
||||
<view class="probody">
|
||||
<company-list :companyitem="item" :noApply="false" :location="userLocation"></company-list>
|
||||
<company-list :companyitem="item" :position="userLocation" :noApply="false"></company-list>
|
||||
<view class="baddd"></view>
|
||||
<!-- <block>
|
||||
<image src="/static/img/tab.orange.svg" mode="" v-if="item.status === 1"></image>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<block v-for="(page, pIndex) in data" :key="pIndex">
|
||||
<block v-for="(item, index) in page" :key="item.id">
|
||||
<view class="probody">
|
||||
<company-list :companyitem="item" :noApply="false"></company-list>
|
||||
<company-list :companyitem="item" :position="userLocation" :noApply="false"></company-list>
|
||||
<view class="baddd"></view>
|
||||
<!-- <block>
|
||||
<image src="/static/img/tab.orange.svg" mode="" v-if="item.status === 1"></image>
|
||||
@@ -33,7 +33,9 @@
|
||||
import {
|
||||
myMission
|
||||
} from '@/api/mission.js';
|
||||
|
||||
import {
|
||||
mapGetters
|
||||
} from 'vuex'
|
||||
export default {
|
||||
components: {
|
||||
vTabs,
|
||||
@@ -63,11 +65,14 @@
|
||||
}
|
||||
},
|
||||
/*下拉刷新*/
|
||||
onPullDownRefresh:function(){
|
||||
onPullDownRefresh: function() {
|
||||
this.init()
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['userLocation']),
|
||||
},
|
||||
methods: {
|
||||
init(){
|
||||
init() {
|
||||
this.current = 1
|
||||
this.data = []
|
||||
this.getData()
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
{
|
||||
"path": "pages/project/newProject",
|
||||
"style": {
|
||||
"navigationBarTitleText": "德阳市灵活就业平台",
|
||||
"navigationBarTitleText": "宜昌市灵活就业平台",
|
||||
"navigationBarBackgroundColor": "#FFFFFF",
|
||||
"enablePullDownRefresh": true
|
||||
}
|
||||
|
||||
@@ -7,9 +7,6 @@
|
||||
import {
|
||||
mapGetters
|
||||
} from 'vuex'
|
||||
import {
|
||||
GoLogin
|
||||
} from '@/untils/AxiosUtils.js';
|
||||
import website from '@/config/website.js'
|
||||
export default {
|
||||
data() {
|
||||
@@ -20,7 +17,7 @@
|
||||
},
|
||||
onLoad(options) {
|
||||
uni.showLoading({
|
||||
title: '登录中'
|
||||
title: ''
|
||||
})
|
||||
if (options.token) {
|
||||
const that = this
|
||||
@@ -42,6 +39,7 @@
|
||||
if (!auth.bankCardState) {
|
||||
that.goSign(0)
|
||||
} else {
|
||||
|
||||
uni.switchTab({
|
||||
url: '/pages/index/index'
|
||||
})
|
||||
@@ -52,10 +50,9 @@
|
||||
// this.$refs.code.refushCode()
|
||||
});
|
||||
} else {
|
||||
// uni.reLaunch({
|
||||
// url: '/pages/login/login'
|
||||
// })
|
||||
GoLogin()
|
||||
uni.reLaunch({
|
||||
url: '/pages/login/login'
|
||||
})
|
||||
}
|
||||
},
|
||||
method: {
|
||||
|
||||
@@ -12,10 +12,10 @@
|
||||
<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="changeLogintype">
|
||||
<view class="" @click="goReg">手机注册</view>
|
||||
<view class="" @click="goForget">忘记密码</view>
|
||||
</view> -->
|
||||
</view>
|
||||
</login-template>
|
||||
</template>
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
wx.hideHomeButton();
|
||||
//#endif
|
||||
this.password = ''
|
||||
if (this.$api.haslogin()) {
|
||||
if (this.$store.state.user.token) {
|
||||
this.$store.dispatch('LogOut').then(() => {
|
||||
this.$store.dispatch('clearAuthState')
|
||||
this.$store.dispatch('endRefreshNewsTimer')
|
||||
@@ -74,8 +74,8 @@
|
||||
},
|
||||
login(e) {
|
||||
if (this.validate) {
|
||||
this.userChecked = true;
|
||||
console.log(this.userChecked)
|
||||
// this.userChecked = true;
|
||||
// console.log(this.userChecked)
|
||||
// if (!this.userChecked) {
|
||||
// uni.showToast({
|
||||
// title:'请先阅读并同意《服务及隐私协议》',
|
||||
@@ -106,7 +106,8 @@
|
||||
}).catch((err) => {
|
||||
this.loading = false
|
||||
// this.$refs.code.refushCode()
|
||||
location.href = "https://dy12333.org.cn/h5/"
|
||||
// location.href = "https://dy12333.org.cn/h5/"
|
||||
this.$api.msg('登录失败')
|
||||
});
|
||||
// }
|
||||
}
|
||||
@@ -168,4 +169,15 @@
|
||||
}
|
||||
|
||||
/* #endif */
|
||||
.changeLogintype {
|
||||
margin: 0 auto;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 14px;
|
||||
color: #1B66FF;
|
||||
margin-top: 15px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
|
||||
}
|
||||
</style>
|
||||
@@ -5,11 +5,12 @@
|
||||
<slot></slot>
|
||||
<view v-if="!hideBottom" class="bottomt">
|
||||
<view class="bottomt-box">
|
||||
<!-- <view class="check-icon" @click="checkChanged">
|
||||
<image v-if="userChecked" src="../../static/img/checkOk.png" style="width: 30rpx;height:30rpx;"></image>
|
||||
<view class="check-icon" @click="checkChanged">
|
||||
<image v-if="userChecked" :src="checked" style="width: 30rpx;height:30rpx;">
|
||||
</image>
|
||||
<view class="noneCheck" v-else></view>
|
||||
</view>
|
||||
已阅读并同意<text class="bottomtText" @click="goMent">《服务及隐私协议》</text> -->
|
||||
已阅读并同意<text class="bottomtText" @click="goMent">《服务及隐私协议》</text>
|
||||
|
||||
</view>
|
||||
|
||||
@@ -18,12 +19,15 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {mapGetters} from 'vuex'
|
||||
import checked from '../../static/img/checkOk.png'
|
||||
import {
|
||||
mapGetters
|
||||
} from 'vuex'
|
||||
export default {
|
||||
|
||||
data(){
|
||||
return{
|
||||
|
||||
data() {
|
||||
return {
|
||||
checked
|
||||
}
|
||||
},
|
||||
props: {
|
||||
@@ -36,13 +40,13 @@
|
||||
url: '/pages/user/agreement'
|
||||
})
|
||||
},
|
||||
checkChanged(){
|
||||
let checkedValue=!this.userChecked;
|
||||
this.$store.dispatch('UserCheckedBtn',checkedValue)
|
||||
checkChanged() {
|
||||
let checkedValue = !this.userChecked;
|
||||
this.$store.dispatch('UserCheckedBtn', checkedValue)
|
||||
|
||||
}
|
||||
},
|
||||
computed:{
|
||||
computed: {
|
||||
...mapGetters(['userChecked'])
|
||||
},
|
||||
mounted() {
|
||||
@@ -81,13 +85,15 @@
|
||||
left: 0;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
.bottomt-box{
|
||||
|
||||
.bottomt-box {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
.check-icon{
|
||||
|
||||
.check-icon {
|
||||
font-size: 28rpx;
|
||||
font-weight: 400;
|
||||
color: #999999;
|
||||
@@ -95,12 +101,13 @@
|
||||
width: 30rpx;
|
||||
height: 30rpx;
|
||||
margin-right: 12rpx;
|
||||
.noneCheck{
|
||||
|
||||
.noneCheck {
|
||||
width: 26rpx;
|
||||
height: 26rpx;
|
||||
border-radius: 50%;
|
||||
border: 2rpx solid #999999;
|
||||
margin-right:12rpx;
|
||||
margin-right: 12rpx;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -4,8 +4,7 @@
|
||||
<!-- 这里是状态栏 -->
|
||||
</view>
|
||||
<view class="head">
|
||||
<map id='midMap' ref='midMap' :latitude="latitude" :markers="markList" :longitude="longitude"
|
||||
@tap="changeMap" scale="10">
|
||||
<map id='midMap' ref='midMap' :latitude="latitude" :markers="markList" :longitude="longitude" @tap="changeMap" scale="10">
|
||||
</map>
|
||||
<view class="search">
|
||||
<view class="head_border">
|
||||
@@ -26,8 +25,7 @@
|
||||
附近零工岗位
|
||||
</view>
|
||||
<view class="borderbom"></view>
|
||||
<scroll-view scroll-y lower-threshold="0" style="height: 92%;" @scrolltolower="upLoad"
|
||||
v-if="companyList.length>0">
|
||||
<scroll-view scroll-y lower-threshold="0" style="height: 92%;" @scrolltolower="upLoad" v-if="companyList.length>0">
|
||||
<block v-for="(item, index) in companyList" :key="item.id">
|
||||
<companyList :companyitem="item" :near="true"></companyList>
|
||||
<view class="baddd"></view>
|
||||
@@ -188,8 +186,7 @@
|
||||
var location = point.latitude + ',' + point.longitude
|
||||
that.setCurrentMarker(point); //设置当前marker
|
||||
getcoder(location, encodeURI(that.key), 0).then(res => {
|
||||
var address = res.data.result.address_component.city + res.data.result
|
||||
.formatted_addresses.recommend;
|
||||
var address = res.data.result.address_component.city + res.data.result.formatted_addresses.recommend;
|
||||
this.markList.forEach(ele => { //给当前marker添加label
|
||||
if (ele.id === 0) {
|
||||
ele.title = address;
|
||||
|
||||
@@ -31,13 +31,14 @@
|
||||
</view>
|
||||
|
||||
<view class="conatiner_card">
|
||||
<view class="row blod fs_34">德阳市智慧就业市场</view>
|
||||
<view class="row blod fs_34">宜昌市智慧就业市场</view>
|
||||
<view class="row color_666 fs_30 marT_30">
|
||||
<u-icon style="margin-right: 10rpx;" name="calendar" color="#666666" size="16"></u-icon>营业时间
|
||||
<u-icon style="margin-right: 10rpx" name="calendar" color="#666666" size="16"></u-icon>
|
||||
营业时间
|
||||
</view>
|
||||
<view class="row color_666 fs_30">上午9:00-12:00 下午14:00-18:00</view>
|
||||
<view class="row color_666 fs_30 marT_30">
|
||||
<u-icon style="margin-right: 10rpx;" name="map" color="#666666" size="16"></u-icon>
|
||||
<u-icon style="margin-right: 10rpx" name="map" color="#666666" size="16"></u-icon>
|
||||
四川省德阳市旌阳区天山南路1段108号
|
||||
<!-- <u-icon style="margin-left: 10rpx;" name="arrow-right" color="#666666" size="16"></u-icon> -->
|
||||
</view>
|
||||
@@ -64,56 +65,52 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
|
||||
}
|
||||
return {};
|
||||
},
|
||||
methods: {
|
||||
|
||||
}
|
||||
}
|
||||
methods: {},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@function designTo($num) {
|
||||
@return ($num / 620rpx) * 750rpx
|
||||
}
|
||||
@function designTo($num) {
|
||||
@return ($num / 620rpx) * 750rpx;
|
||||
}
|
||||
|
||||
@for $i from 10 to 60 {
|
||||
@for $i from 10 to 60 {
|
||||
.fs_#{$i} {
|
||||
font-size : #{$i}rpx;
|
||||
}
|
||||
font-size: #{$i}rpx;
|
||||
}
|
||||
}
|
||||
|
||||
@for $i from 1 to 60 {
|
||||
@for $i from 1 to 60 {
|
||||
.marT_#{$i} {
|
||||
margin-top : #{$i}rpx;
|
||||
}
|
||||
margin-top: #{$i}rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.color_666 {
|
||||
.color_666 {
|
||||
color: #666666;
|
||||
}
|
||||
}
|
||||
|
||||
.bold {
|
||||
.bold {
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
image {
|
||||
image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.app_container {
|
||||
.app_container {
|
||||
background-color: #f3f4f8;
|
||||
min-height: calc(100vh - var(--window-top) - var(--status-bar-height) - var(--window-bottom));
|
||||
|
||||
.container_head {
|
||||
min-height: 300rpx;
|
||||
padding: 28rpx;
|
||||
background: linear-gradient(to bottom, rgba(69, 112, 250, 1), rgba(69, 112, 250, .0));
|
||||
background: linear-gradient(to bottom, rgba(69, 112, 250, 1), rgba(69, 112, 250, 0));
|
||||
|
||||
.row {
|
||||
display: flex;
|
||||
@@ -121,12 +118,13 @@
|
||||
justify-content: space-between;
|
||||
|
||||
.head_left {
|
||||
color: #FFFFFF;
|
||||
color: #ffffff;
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
flex-direction: column;
|
||||
|
||||
.left_title {}
|
||||
.left_title {
|
||||
}
|
||||
|
||||
.left_content {
|
||||
height: designTo(87rpx);
|
||||
@@ -173,7 +171,7 @@
|
||||
|
||||
.conatiner_card {
|
||||
margin: 28rpx;
|
||||
background-color: #FFFFFF;
|
||||
background-color: #ffffff;
|
||||
height: fit-content;
|
||||
border-radius: 20rpx;
|
||||
padding: designTo(28rpx);
|
||||
@@ -198,7 +196,7 @@
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
align-items: center;
|
||||
background-color: #FFFFFF;
|
||||
background-color: #ffffff;
|
||||
height: designTo(108rpx);
|
||||
padding: 0 28rpx designTo(30rpx) 28rpx;
|
||||
|
||||
@@ -210,7 +208,7 @@
|
||||
}
|
||||
|
||||
.chioe_btn {
|
||||
color: #FFFFFF;
|
||||
color: #ffffff;
|
||||
background: linear-gradient(to right, #fbaf1a, #fbaf1a);
|
||||
height: designTo(66rpx);
|
||||
width: designTo(228rpx);
|
||||
@@ -223,5 +221,5 @@
|
||||
background: linear-gradient(to right, #95aefb, #4b74f7);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
190
pages/my/my.vue
@@ -6,13 +6,12 @@
|
||||
<image v-else src="../../static/img/head.svg" mode=""></image>
|
||||
<view class="userRight">
|
||||
<view class="userTel" v-if="userInfo.user_name">
|
||||
{{ auth.authInfo.realName ? auth.authInfo.realName : phoneFilter(userInfo.user_name) }}
|
||||
{{ auth.authInfo.realName ? auth.authInfo.realName :
|
||||
phoneFilter(userInfo.user_name) }}
|
||||
</view>
|
||||
<view class="userTel" v-else></view>
|
||||
<view class="userTel" v-else> </view>
|
||||
<view class="userContent">
|
||||
<view style="margin-right: 40rpx">
|
||||
实名认证:{{ auth.realNameState ? '已认证' : '未认证' }}
|
||||
</view>
|
||||
<view style="margin-right: 40rpx;">实名认证:{{ auth.realNameState ? '已认证' : '未认证' }}</view>
|
||||
<!-- <view>银行卡核验:{{auth.bankCardState?'已认证':'未认证'}}</view> -->
|
||||
</view>
|
||||
</view>
|
||||
@@ -40,7 +39,7 @@
|
||||
</view> -->
|
||||
</view>
|
||||
</view>
|
||||
<view style="height: 104rpx"></view>
|
||||
<view style="height: 104rpx;"></view>
|
||||
<!-- <view class="federation">
|
||||
<view>新业态职工工会联合会</view>
|
||||
<view v-if="!federationStatus" class="forMembership" @click="go('/pageMy/federation/forMembership/Notice')">申请入会</view>
|
||||
@@ -78,11 +77,6 @@
|
||||
投诉建议
|
||||
<image src="../../static/img/right.svg" mode=""></image>
|
||||
</view>
|
||||
<view class="btnList">
|
||||
<image src="../../static/img/vip.svg" mode=""></image>
|
||||
消息提醒
|
||||
<switch class="imgswitch" :checked="user.isEnbleNotice" @change="switch1Change" />
|
||||
</view>
|
||||
<template v-if="user.userIsCms">
|
||||
<view class="btnList" @click="navTo('/pageMy/admin/check')">
|
||||
<image src="../../static/img/check1.png" mode=""></image>
|
||||
@@ -119,63 +113,54 @@
|
||||
<!-- <view class="btn-out" @click="logout">
|
||||
退出登录
|
||||
</view> -->
|
||||
<view class="bottom" @click="makePhoneCall">
|
||||
<!-- <view class="bottom" @click="makePhoneCall">
|
||||
<view>德阳市人社局 电话:0838-2505580</view>
|
||||
<view>地址:德阳市旌阳区天山南路1段-102号</view>
|
||||
</view>
|
||||
</view> -->
|
||||
<cs-button></cs-button>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { GoLogin } from '@/untils/AxiosUtils.js';
|
||||
import { mapState, mapGetters } from 'vuex';
|
||||
import { phoneFilter, stringFilterNum } from '@/untils/format.js';
|
||||
import { labourUnionInfo } from '@/api/federation.js';
|
||||
export default {
|
||||
import {
|
||||
mapState,
|
||||
mapGetters
|
||||
} from 'vuex'
|
||||
import {
|
||||
phoneFilter,
|
||||
stringFilterNum
|
||||
} from '@/untils/format.js'
|
||||
import {
|
||||
labourUnionInfo
|
||||
} from '@/api/federation.js'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
federationStatus: false,
|
||||
};
|
||||
federationStatus: false
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
// this.$store.dispatch('getMobileIsCms')
|
||||
// if (this.$api.haslogin() && this.authPass) {
|
||||
this.$store.dispatch('getMobileIsCms')
|
||||
// if (this.$store.state.user.token && this.authPass) {
|
||||
// this.$store.dispatch('getVipCode')
|
||||
// }
|
||||
},
|
||||
onShow() {
|
||||
if (/token/g.test(location.href)) {
|
||||
this.$api.sleep(2000).then(() => {
|
||||
if (!this.$api.haslogin()) {
|
||||
GoLogin();
|
||||
if (!this.$store.state.user.token) {
|
||||
uni.redirectTo({
|
||||
url: '/pages/login/login'
|
||||
})
|
||||
} else {
|
||||
uni.$emit('newsReadChange');
|
||||
this.$store.dispatch('refreshAuthState');
|
||||
}
|
||||
});
|
||||
} else {
|
||||
if (!this.$api.haslogin()) {
|
||||
GoLogin();
|
||||
} else {
|
||||
uni.$emit('newsReadChange');
|
||||
this.$store.dispatch('refreshAuthState');
|
||||
}
|
||||
uni.$emit('newsReadChange')
|
||||
this.$store.dispatch('refreshAuthState')
|
||||
}
|
||||
// this.labourUnionInfoInit()
|
||||
},
|
||||
methods: {
|
||||
switch1Change(e) {
|
||||
if (e.detail.value) {
|
||||
this.$store.dispatch('setNoticeOpen');
|
||||
} else {
|
||||
this.$store.dispatch('setNoticeClose');
|
||||
}
|
||||
},
|
||||
labourUnionInfoInit() {
|
||||
labourUnionInfo().then((e) => {
|
||||
this.federationStatus = e.data.data.joined;
|
||||
});
|
||||
labourUnionInfo().then(e => {
|
||||
this.federationStatus = e.data.data.joined
|
||||
})
|
||||
},
|
||||
// logout() {
|
||||
// this.$store.dispatch('LogOut').then(() => {
|
||||
@@ -189,59 +174,59 @@ export default {
|
||||
// },
|
||||
go(url) {
|
||||
uni.navigateTo({
|
||||
url,
|
||||
});
|
||||
url
|
||||
})
|
||||
},
|
||||
makePhoneCall: function () {
|
||||
makePhoneCall: function() {
|
||||
uni.makePhoneCall({
|
||||
phoneNumber: '18500206848',
|
||||
});
|
||||
phoneNumber: "18500206848"
|
||||
})
|
||||
},
|
||||
phoneFilter,
|
||||
stringFilterNum,
|
||||
stringFilterNum
|
||||
},
|
||||
computed: {
|
||||
...mapState(['user']),
|
||||
...mapGetters(['userInfo', 'auth', 'authPass']),
|
||||
},
|
||||
};
|
||||
...mapGetters(['userInfo', 'auth', 'authPass'])
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
page {
|
||||
page {
|
||||
height: 100%;
|
||||
background: #f6f6f6;
|
||||
}
|
||||
}
|
||||
|
||||
.federation {
|
||||
.federation {
|
||||
height: 48rpx;
|
||||
border-radius: 10rpx;
|
||||
padding: 28rpx 30rpx;
|
||||
margin: 30rpx;
|
||||
font-size: 32rpx;
|
||||
font-weight: 400;
|
||||
color: #6f5931;
|
||||
color: #6F5931;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
background: url(../../static/img/my/mybanner.png) no-repeat;
|
||||
background-size: cover;
|
||||
}
|
||||
}
|
||||
|
||||
.forMembership {
|
||||
.forMembership {
|
||||
width: 140rpx;
|
||||
height: 50rpx;
|
||||
background: linear-gradient(112deg, #efe0bc 0%, #d29a5a 100%, #ddba88 100%);
|
||||
background: linear-gradient(112deg, #EFE0BC 0%, #D29A5A 100%, #DDBA88 100%);
|
||||
box-shadow: 0px 0px 2px 1px rgba(231, 174, 85, 0.39);
|
||||
border-radius: 25rpx;
|
||||
font-size: 26rpx;
|
||||
font-weight: 400;
|
||||
color: #6f5931;
|
||||
color: #6F5931;
|
||||
line-height: 48rpx;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
.bottom {
|
||||
.bottom {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 24rpx;
|
||||
color: #999999;
|
||||
@@ -250,27 +235,22 @@ page {
|
||||
/* width: 100%; */
|
||||
margin: 120rpx 0;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
.btnList image:last-child {
|
||||
.btnList image:last-child {
|
||||
width: 19rpx;
|
||||
height: 32rpx;
|
||||
margin-left: auto;
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.imgswitch {
|
||||
margin-left: auto;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.btnList image {
|
||||
.btnList image {
|
||||
width: 52rpx;
|
||||
height: 52rpx;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.btnList {
|
||||
.btnList {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 32rpx;
|
||||
color: #333333;
|
||||
@@ -278,16 +258,16 @@ page {
|
||||
align-items: center;
|
||||
justify-content: flex-start;
|
||||
padding: 30rpx 20rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.btn {
|
||||
.btn {
|
||||
width: 690rpx;
|
||||
margin: 0 auto;
|
||||
border-radius: 15rpx;
|
||||
background: #fefefe;
|
||||
}
|
||||
}
|
||||
|
||||
.BarList {
|
||||
.BarList {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 28rpx;
|
||||
color: #666666;
|
||||
@@ -295,16 +275,16 @@ page {
|
||||
width: 25%;
|
||||
text-align: center;
|
||||
padding: 30rpx 0rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.BarList image {
|
||||
.BarList image {
|
||||
width: 52rpx;
|
||||
height: 52rpx;
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
}
|
||||
}
|
||||
|
||||
.centerBar {
|
||||
.centerBar {
|
||||
width: 690rpx;
|
||||
background-color: #fefefe;
|
||||
border-radius: 15rpx;
|
||||
@@ -312,56 +292,56 @@ page {
|
||||
position: absolute;
|
||||
bottom: -70rpx;
|
||||
left: 30rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.userContent {
|
||||
.userContent {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 26rpx;
|
||||
color: #ffffff;
|
||||
color: #FFFFFF;
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
|
||||
.userTel {
|
||||
.userTel {
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 36rpx;
|
||||
color: #ffffff;
|
||||
}
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
.userRight {
|
||||
.userRight {
|
||||
float: left;
|
||||
height: 50rpx;
|
||||
line-height: 50rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.userTitle image {
|
||||
.userTitle image {
|
||||
width: 100rpx;
|
||||
height: 100rpx;
|
||||
margin-right: 20rpx;
|
||||
float: left;
|
||||
border-radius: 200rpx;
|
||||
background-color: rgba(255, 255, 255, 0.3);
|
||||
}
|
||||
background-color: rgba(255, 255, 255, .3);
|
||||
}
|
||||
|
||||
.userTitle {
|
||||
.userTitle {
|
||||
padding: 0 30rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.head {
|
||||
background-color: #1b66ff;
|
||||
.head {
|
||||
background-color: #1B66FF;
|
||||
width: 100%;
|
||||
height: 200rpx;
|
||||
padding-top: 200rpx;
|
||||
position: relative;
|
||||
}
|
||||
}
|
||||
|
||||
.body {
|
||||
.body {
|
||||
background: #f6f6f6;
|
||||
height: 100%;
|
||||
position: relative;
|
||||
overflow: auto;
|
||||
}
|
||||
}
|
||||
|
||||
/* .btn-out {
|
||||
/* .btn-out {
|
||||
background-color: #fefefe;
|
||||
margin-top: 20rpx;
|
||||
padding: 20rpx 0;
|
||||
|
||||
@@ -27,9 +27,7 @@
|
||||
import {
|
||||
mapGetters
|
||||
} from 'vuex'
|
||||
import {
|
||||
GoLogin
|
||||
} from '@/untils/AxiosUtils.js';
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
@@ -38,23 +36,14 @@
|
||||
},
|
||||
onLoad() {},
|
||||
onShow() {
|
||||
if (/token/g.test(location.href)) {
|
||||
this.$api.sleep(2000).then(() => {
|
||||
if (!this.$api.haslogin()) {
|
||||
GoLogin()
|
||||
console.log('300')
|
||||
} else {
|
||||
uni.$emit('newsReadChange')
|
||||
console.log('000')
|
||||
}
|
||||
if (!this.$store.state.user.token) {
|
||||
uni.redirectTo({
|
||||
url: "/pages/login/login"
|
||||
})
|
||||
} else {
|
||||
if (!this.$api.haslogin()) {
|
||||
GoLogin()
|
||||
} else {
|
||||
uni.$emit('newsReadChange')
|
||||
}
|
||||
}
|
||||
console.log(this.news)
|
||||
},
|
||||
onPullDownRefresh() {
|
||||
this.loading = true
|
||||
|
||||
@@ -15,19 +15,15 @@
|
||||
</view>
|
||||
</view>
|
||||
<view class="view-map">
|
||||
<super-map
|
||||
ref="uMap"
|
||||
style="width: 100%; height: 100%"
|
||||
:latitude="latitude"
|
||||
:longitude="longitude"
|
||||
:zoom="14"
|
||||
:min-zoom="10"
|
||||
:max-zoom="20"
|
||||
@markertap="clickmark"
|
||||
@regionchange="show = false"
|
||||
:MapUrl="$config.supperMap"
|
||||
:flag-tip="false"
|
||||
></super-map>
|
||||
<!-- <super-map ref="uMap" style="width: 100%;height: 100%;" :latitude="latitude" :longitude="longitude"
|
||||
:zoom="14" :min-zoom="10" :max-zoom="20" @markertap="clickmark" @regionchange="show = false"
|
||||
:MapUrl="$config.supperMap" :flag-tip="false"></super-map> -->
|
||||
<zhuo-tianditu-MultiPoint-Mapper
|
||||
ref="tMap"
|
||||
@onSelect="clickmark"
|
||||
:api-key="$config.apiKey"
|
||||
></zhuo-tianditu-MultiPoint-Mapper>
|
||||
|
||||
<!-- <view id="map" ></view> -->
|
||||
<!-- <map style="width: 100%;height: 100%;" scale="16" :latitude="latitude" :longitude="longitude"
|
||||
:markers="covers" @markertap="clickmark" @regionchange="show = false"></map> -->
|
||||
@@ -68,6 +64,7 @@
|
||||
import { addZeroPrefix, getDistanceFromLatLonInKm } from '@/untils/tools.js';
|
||||
import testData from '@/common/textdata.js';
|
||||
import { geQueryJobsByNearby } from '@/api/map.js';
|
||||
import { mapGetters } from 'vuex';
|
||||
let taskpoint = require('../../static/img/taskpoint.png');
|
||||
let gwpoint = require('../../static/img/gwpoint.png');
|
||||
let mypoint = require('../../static/img/mypoint.png');
|
||||
@@ -86,6 +83,7 @@ export default {
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['userLocation']),
|
||||
distance() {
|
||||
const { lon, lat } = this.productInfo;
|
||||
if (lon) {
|
||||
@@ -97,14 +95,32 @@ export default {
|
||||
},
|
||||
mounted() {
|
||||
const _this = this;
|
||||
console.log(this.$store.state.user.userLocation);
|
||||
if (this.$store.state.user.userLocation) {
|
||||
const { latitude, longitude } = this.$store.state.user.userLocation;
|
||||
uni.getLocation({
|
||||
type: 'wgs84',
|
||||
success: function (res) {
|
||||
console.log(res, '成功获得周边信息');
|
||||
const { longitude, latitude } = res;
|
||||
_this.latitude = latitude;
|
||||
_this.longitude = longitude;
|
||||
_this.getList(longitude, latitude).then((covers) => {
|
||||
_this.$refs.uMap.addFeature(covers);
|
||||
_this.covers = covers;
|
||||
_this.$nextTick(() => {
|
||||
_this.$refs.tMap.addFeature(covers);
|
||||
});
|
||||
} else {
|
||||
});
|
||||
},
|
||||
fail: function (err) {
|
||||
console.log(err, '无法获得周边信息');
|
||||
_this.$api.msg('无法获得周边信息');
|
||||
},
|
||||
complete: function (e) {},
|
||||
});
|
||||
console.log('userLocation', this.userLocation);
|
||||
if (this.userLocation) {
|
||||
const { longitude, latitude } = this.userLocation;
|
||||
this.$refs.tMap.open(longitude, latitude);
|
||||
} else {
|
||||
this.$store.dispatch('getUserLocation');
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
@@ -120,12 +136,13 @@ export default {
|
||||
// })
|
||||
},
|
||||
methods: {
|
||||
onSelect(item) {},
|
||||
openMap(lon, lat) {
|
||||
//打开地图,并将门店位置传入
|
||||
// type: post 岗位 mission 任务
|
||||
switch (this.productInfo.type) {
|
||||
case 'post':
|
||||
const no = encodeURIComponent(1);
|
||||
const no = encodeURIComponent(this.productInfo.id);
|
||||
uni.navigateTo({
|
||||
url: `/pages/projectInfo/workInfo?workId=${encodeURIComponent(no)}&isCan=${1}`,
|
||||
});
|
||||
@@ -140,14 +157,22 @@ export default {
|
||||
},
|
||||
search() {
|
||||
const _this = this;
|
||||
if (this.$store.state.user.userLocation) {
|
||||
const { latitude, longitude } = this.$store.state.user.userLocation;
|
||||
uni.getLocation({
|
||||
type: 'wgs84',
|
||||
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);
|
||||
});
|
||||
} else {
|
||||
},
|
||||
fail: function (err) {
|
||||
_this.$api.msg('无法获得周边信息');
|
||||
}
|
||||
},
|
||||
complete: function (e) {},
|
||||
});
|
||||
// this.getList(this.longitude, this.latitude).then((covers) => {
|
||||
// this.$api.msg('成功获得周边信息')
|
||||
// console.log(covers)
|
||||
@@ -189,6 +214,9 @@ export default {
|
||||
id: item.id,
|
||||
longitude: item.lon,
|
||||
latitude: item.lat,
|
||||
lon: item.lon,
|
||||
lat: item.lat,
|
||||
label: item.missionTitle,
|
||||
iconPath: item.type === 'post' ? gwpoint : taskpoint,
|
||||
width: 20,
|
||||
height: 20,
|
||||
@@ -208,6 +236,9 @@ export default {
|
||||
title: '我的位置',
|
||||
width: 20,
|
||||
height: 20,
|
||||
lon: lat,
|
||||
lat: lon,
|
||||
label: '我的位置',
|
||||
});
|
||||
resolve(arr);
|
||||
}
|
||||
@@ -354,7 +385,7 @@ export default {
|
||||
border-radius: 36rpx;
|
||||
}
|
||||
|
||||
::v-deep .put-pla {
|
||||
/deep/ .put-pla {
|
||||
height: 33rpx;
|
||||
font-size: 24rpx;
|
||||
font-weight: 400;
|
||||
|
||||
@@ -181,7 +181,7 @@
|
||||
this.getPolicy()
|
||||
},
|
||||
onShow: function() {
|
||||
if (this.$api.haslogin()) {
|
||||
if (this.$store.state.user.token) {
|
||||
this.$store.dispatch('refreshAuthState').then((e) => {
|
||||
var auth = this.$store.state.auth
|
||||
if (!auth.bankCardState) {
|
||||
@@ -202,7 +202,7 @@
|
||||
},
|
||||
/*下拉刷新*/
|
||||
onPullDownRefresh: function() {
|
||||
if (!this.$api.haslogin()) {
|
||||
if (!this.$store.state.user.token) {
|
||||
uni.redirectTo({
|
||||
url: "/pages/login/login"
|
||||
});
|
||||
@@ -455,7 +455,7 @@
|
||||
}
|
||||
},
|
||||
getData: function() {
|
||||
if (!this.$api.haslogin()) {
|
||||
if (!this.$store.state.user.token) {
|
||||
uni.redirectTo({
|
||||
url: "/pages/login/login"
|
||||
});
|
||||
@@ -610,8 +610,7 @@
|
||||
.content {
|
||||
background-color: #f3f4f8;
|
||||
padding-top: 20rpx;
|
||||
/* min-height: 80vh; */
|
||||
min-height: calc(100vh - var(--window-top) - var(--status-bar-height) - var(--window-bottom));
|
||||
min-height: 80vh;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -3,29 +3,34 @@
|
||||
<view class="titleSearch">
|
||||
<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 class="navPosition" @click="navTo('/pages/project/map')">
|
||||
<u-icon name="map" color="#2979ff" size="16"></u-icon>
|
||||
<view class="positionText">德阳市地图服务</view>
|
||||
<view class="positionText">宜昌市地图服务</view>
|
||||
<u-icon name="arrow-right" color="#666666" size="14"></u-icon>
|
||||
</view>
|
||||
<view class="content">
|
||||
<view class="typeButtonWrapper">
|
||||
<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 class="typeButtonLeft">
|
||||
<view
|
||||
v-for="(item, index) in nonReactiveArray"
|
||||
:key="index"
|
||||
:class="['typeButton', index == activeTab ? 'activeButton' : '']"
|
||||
@click="changeTab(index)"
|
||||
>
|
||||
{{ item }}
|
||||
</view>
|
||||
</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">
|
||||
筛选
|
||||
<view class="arrow-up-right"> </view>
|
||||
<view class="arrow-up-right"></view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
@@ -35,8 +40,8 @@
|
||||
</view>
|
||||
</u-popup>
|
||||
|
||||
<block v-if="activeTab == 0|| this.activeTab === 2">
|
||||
<view v-if="newList.length > 0" style="padding-bottom: 20rpx;">
|
||||
<block v-if="activeTab == 0 || this.activeTab === 2">
|
||||
<view v-if="newList.length > 0" style="padding-bottom: 20rpx">
|
||||
<block v-for="(item, index) in newList" :key="index">
|
||||
<companyList :companyitem="item" :position="userLocation"></companyList>
|
||||
</block>
|
||||
@@ -47,7 +52,7 @@
|
||||
</view>
|
||||
</block>
|
||||
|
||||
<block v-if="activeTab == 1|| this.activeTab === 3">
|
||||
<block v-if="activeTab == 1 || this.activeTab === 3">
|
||||
<view>
|
||||
<!-- <view class="location" @click="gomap">
|
||||
<image src="../../static/img/location.svg" mode=""></image>
|
||||
@@ -56,16 +61,14 @@
|
||||
</view> -->
|
||||
</view>
|
||||
|
||||
<view v-if="companyList.length > 0" style="padding-bottom: 20rpx;">
|
||||
<view v-if="companyList.length > 0" style="padding-bottom: 20rpx">
|
||||
<block v-for="(item, index) in companyList" :key="item.id">
|
||||
<workList :companyitem="item" :position="userLocation" :near="activeTab === 0"></workList>
|
||||
<workList :companyitem="item" :near="activeTab === 0"></workList>
|
||||
</block>
|
||||
</view>
|
||||
<view v-else>
|
||||
<image src="../../static/img/pic_notask.svg" mode="" class="nothing"></image>
|
||||
<view class="nothingContnt">
|
||||
暂无信息
|
||||
</view>
|
||||
<view class="nothingContnt">暂无信息</view>
|
||||
</view>
|
||||
</block>
|
||||
<!-- <block v-if="activeTab == 2 ">
|
||||
@@ -96,47 +99,35 @@
|
||||
|
||||
<cs-button></cs-button>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import vTabs from '@/components/v-tabs/v-tabs.vue';
|
||||
import testData from '@/common/textdata.js';
|
||||
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 {
|
||||
import vTabs from '@/components/v-tabs/v-tabs.vue';
|
||||
import testData from '@/common/textdata.js';
|
||||
import companyList from '@/components/companyList/companyList.vue';
|
||||
import workList from '@/components/companyList/workList.vue';
|
||||
import userrecruitList from './userrecruitList.vue';
|
||||
import {
|
||||
newMissionAll,
|
||||
recommendMission,
|
||||
nearMission,
|
||||
newMissionAllSearch,
|
||||
recommendMissionSearch,
|
||||
nearMissionSearch,
|
||||
} from '@/api/mission.js';
|
||||
import {
|
||||
getPolicyContent
|
||||
} from '@/api/newIndex.js'
|
||||
import {
|
||||
getPushListByUserId
|
||||
} from '@/api/userrecruit.js'
|
||||
import {
|
||||
getcoder
|
||||
} from "@/api/map.js";
|
||||
import verticalMenu from '@/components/vertical-menu/vertical-menu.vue';
|
||||
import {
|
||||
mapGetters
|
||||
} from 'vuex'
|
||||
export default {
|
||||
} from '@/api/mission.js';
|
||||
import { getPolicyContent } from '@/api/newIndex.js';
|
||||
import { getPushListByUserId } from '@/api/userrecruit.js';
|
||||
import { getcoder } from '@/api/map.js';
|
||||
import verticalMenu from '@/components/vertical-menu/vertical-menu.vue';
|
||||
import { mapGetters } from 'vuex';
|
||||
export default {
|
||||
components: {
|
||||
vTabs,
|
||||
companyList,
|
||||
verticalMenu,
|
||||
workList,
|
||||
userrecruitList
|
||||
userrecruitList,
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['userLocation']),
|
||||
@@ -152,129 +143,141 @@
|
||||
nearPage: {
|
||||
current: 1,
|
||||
size: 10,
|
||||
total: 0
|
||||
total: 0,
|
||||
},
|
||||
recommendPage: {
|
||||
current: 1,
|
||||
size: 10,
|
||||
total: 0
|
||||
total: 0,
|
||||
},
|
||||
newPage: {
|
||||
current: 1,
|
||||
size: 10,
|
||||
total: 0
|
||||
total: 0,
|
||||
},
|
||||
policyPage: {
|
||||
current: 1,
|
||||
size: 10,
|
||||
total: 0
|
||||
total: 0,
|
||||
},
|
||||
currentAddress: '',
|
||||
currentPoint: {
|
||||
latitude: 0,
|
||||
longitude: 0,
|
||||
},
|
||||
key: 'FW3BZ-6JTK6-GCUS5-MZCRR-3GPR5-HJFEI',
|
||||
open: false,
|
||||
showPopUp: false,
|
||||
isSearch: false,
|
||||
searchData: {},
|
||||
|
||||
// nonReactiveArray: ["推荐任务", "推荐岗位", "个体户招工"],
|
||||
nonReactiveArray: ["推荐零工岗位", "推荐全职岗位", "全部零工岗位", "全部全职岗位"],
|
||||
nonReactiveArray: ['推荐零工岗位', '推荐全职岗位', '全部零工岗位', '全部全职岗位'],
|
||||
};
|
||||
},
|
||||
onLoad: function () {
|
||||
this.getData();
|
||||
console.log('userLocation', this.userLocation);
|
||||
// this.getPolicy()
|
||||
},
|
||||
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();
|
||||
}
|
||||
},
|
||||
onLoad: function() {
|
||||
this.$store.dispatch('getUserLocation')
|
||||
},
|
||||
onShow: function() {
|
||||
if (/token/g.test(location.href)) {
|
||||
this.$api.sleep(2000).then(() => {
|
||||
this.showInit()
|
||||
})
|
||||
} else {
|
||||
this.showInit()
|
||||
});
|
||||
}
|
||||
|
||||
const value = uni.getStorageSync('active');
|
||||
if (value) {
|
||||
this.activeTab = value;
|
||||
uni.removeStorageSync('active');
|
||||
}
|
||||
},
|
||||
/*页面滚动到底部 换页*/
|
||||
onReachBottom: function() {
|
||||
this.upLoad()
|
||||
onReachBottom: function () {
|
||||
this.upLoad();
|
||||
},
|
||||
/*下拉刷新*/
|
||||
onPullDownRefresh: function() {
|
||||
if (!this.$api.haslogin()) {
|
||||
onPullDownRefresh: function () {
|
||||
if (!this.$store.state.user.token) {
|
||||
uni.redirectTo({
|
||||
url: "/pages/login/login"
|
||||
url: '/pages/login/login',
|
||||
});
|
||||
} else {
|
||||
this.download();
|
||||
}
|
||||
},
|
||||
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
|
||||
var that = this;
|
||||
that.open = true;
|
||||
uni.showModal({
|
||||
title: '实名认证',
|
||||
content: `检查到您还未实名认证,实名认证之后才可进行操作哦`,
|
||||
showCancel: false,
|
||||
confirmText: '立即认证',
|
||||
success: function(res) {
|
||||
success: function (res) {
|
||||
if (res.confirm) {
|
||||
that.goSign(0)
|
||||
that.goSign(0);
|
||||
} else if (res.cancel) {
|
||||
that.step()
|
||||
}
|
||||
that.open = false
|
||||
that.step();
|
||||
}
|
||||
that.open = false;
|
||||
},
|
||||
});
|
||||
},
|
||||
// 步骤
|
||||
goSign(active) {
|
||||
uni.navigateTo({
|
||||
url: `/pages/projectInfo/signContract?active=${active}`
|
||||
})
|
||||
},
|
||||
goResume: function() {
|
||||
uni.navigateTo({
|
||||
url: '/pageMy/my/resume/addSkill'
|
||||
})
|
||||
},
|
||||
/*逆地址解析*/
|
||||
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
|
||||
url: `/pages/projectInfo/signContract?active=${active}`,
|
||||
});
|
||||
},
|
||||
goSeach: function() {
|
||||
goResume: function () {
|
||||
uni.navigateTo({
|
||||
url: '../seach/seach'
|
||||
})
|
||||
url: '/pageMy/my/resume/addSkill',
|
||||
});
|
||||
},
|
||||
gomap: function() {
|
||||
/*定位*/
|
||||
getLocation: function () {
|
||||
var that = this;
|
||||
uni.getLocation({
|
||||
type: 'wgs84',
|
||||
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;
|
||||
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: '../mapSeach/mapSeach'
|
||||
})
|
||||
url: '../seach/seach',
|
||||
});
|
||||
},
|
||||
changeTab: function(e) {
|
||||
gomap: function () {
|
||||
uni.navigateTo({
|
||||
url: '../mapSeach/mapSeach',
|
||||
});
|
||||
},
|
||||
changeTab: function (e) {
|
||||
this.isSearch = false;
|
||||
this.activeTab = e;
|
||||
this.nearPage.current = 1;
|
||||
@@ -286,9 +289,8 @@
|
||||
// var val=encodeURIComponent(data)
|
||||
|
||||
uni.navigateTo({
|
||||
url: `/pages/user/policyContent?id=${data}`
|
||||
})
|
||||
|
||||
url: `/pages/user/policyContent?id=${data}`,
|
||||
});
|
||||
} else {
|
||||
// uni.showToast({
|
||||
// title:'暂无内容',
|
||||
@@ -301,39 +303,34 @@
|
||||
let params = {
|
||||
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)
|
||||
const { records, current, total, size } = res.data.data;
|
||||
console.log('个体招工', records, current, total, size);
|
||||
if (!records.length) {
|
||||
return uni.showToast({
|
||||
icon: "none",
|
||||
icon: 'none',
|
||||
title: '没有更多了',
|
||||
})
|
||||
});
|
||||
}
|
||||
if (current === 1) {
|
||||
this.policyContentList = records
|
||||
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
|
||||
// })
|
||||
},
|
||||
//推荐岗位;
|
||||
getNearList: function() {
|
||||
const isAll = this.activeTab === 3 ? 1 : 0
|
||||
nearMission(this.nearPage.current, this.nearPage.size, isAll).then(res => {
|
||||
getNearList: function () {
|
||||
const isAll = this.activeTab === 3 ? 1 : 0;
|
||||
nearMission(this.nearPage.current, this.nearPage.size, isAll).then((res) => {
|
||||
if (this.nearPage.current === 1) {
|
||||
this.companyList = [];
|
||||
}
|
||||
@@ -342,12 +339,12 @@
|
||||
if (res.data.data && res.data.data.records.length) {
|
||||
this.companyList = this.companyList.concat(res.data.data.records);
|
||||
}
|
||||
})
|
||||
});
|
||||
},
|
||||
//推荐任务;
|
||||
getNewList: function() {
|
||||
const isAll = this.activeTab === 2 ? 1 : 0
|
||||
newMissionAll(this.newPage.current, this.newPage.size, '', isAll).then(res => {
|
||||
getNewList: function () {
|
||||
const isAll = this.activeTab === 2 ? 1 : 0;
|
||||
newMissionAll(this.newPage.current, this.newPage.size, '', isAll).then((res) => {
|
||||
if (this.newPage.current === 1) {
|
||||
this.newList = [];
|
||||
}
|
||||
@@ -356,30 +353,28 @@
|
||||
this.newList = this.newList.concat(res.data.data.records);
|
||||
this.newPage.current += 1;
|
||||
}
|
||||
})
|
||||
});
|
||||
},
|
||||
//上拉加载
|
||||
upLoad: function() {
|
||||
upLoad: function () {
|
||||
if (this.activeTab === 0 || this.activeTab === 2) {
|
||||
console.log(this.newPage)
|
||||
console.log(this.newPage);
|
||||
if (this.newPage.current <= Math.ceil(this.newPage.total / this.newPage.size)) {
|
||||
|
||||
if (this.isSearch) {
|
||||
this.getNewListSearch()
|
||||
this.getNewListSearch();
|
||||
} else {
|
||||
this.getNewList();
|
||||
}
|
||||
} else {
|
||||
uni.showToast({
|
||||
icon: "none",
|
||||
icon: 'none',
|
||||
title: '已经是最后一页',
|
||||
})
|
||||
});
|
||||
}
|
||||
return
|
||||
return;
|
||||
}
|
||||
if (this.activeTab === 1 || this.activeTab === 3) {
|
||||
if (this.nearPage.current <= Math.ceil(this.nearPage.total / this.nearPage.size)) {
|
||||
|
||||
if (this.isSearch) {
|
||||
this.getNearListSearch();
|
||||
} else {
|
||||
@@ -387,11 +382,11 @@
|
||||
}
|
||||
} else {
|
||||
uni.showToast({
|
||||
icon: "none",
|
||||
icon: 'none',
|
||||
title: '已经是最后一页',
|
||||
})
|
||||
});
|
||||
}
|
||||
return
|
||||
return;
|
||||
}
|
||||
// if (this.activeTab === 2) {
|
||||
// if (this.policyPage.current <= Math.ceil(this.policyPage.total / this.policyPage
|
||||
@@ -411,26 +406,25 @@
|
||||
// }
|
||||
},
|
||||
//下拉刷新
|
||||
download: function() {
|
||||
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.getNewList()
|
||||
setTimeout(function() {
|
||||
this.getLocation();
|
||||
this.getNewList();
|
||||
setTimeout(function () {
|
||||
uni.stopPullDownRefresh();
|
||||
}, 1000);
|
||||
return
|
||||
return;
|
||||
}
|
||||
if (this.activeTab === 1 || this.activeTab === 3) {
|
||||
this.nearPage.current = 1;
|
||||
this.newPage.current = 1;
|
||||
this.getNearList()
|
||||
setTimeout(function() {
|
||||
this.nearPage.current === 1;
|
||||
this.getNearList();
|
||||
setTimeout(function () {
|
||||
uni.stopPullDownRefresh();
|
||||
}, 1000);
|
||||
return
|
||||
return;
|
||||
}
|
||||
// if (this.activeTab === 2) {
|
||||
// this.policyPage.current = 1;
|
||||
@@ -441,112 +435,99 @@
|
||||
// return
|
||||
// }
|
||||
},
|
||||
getData: function() {
|
||||
// if (!this.$api.haslogin()) {
|
||||
// uni.redirectTo({
|
||||
// url: "/pages/login/login"
|
||||
// });
|
||||
// } else {
|
||||
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()
|
||||
// }
|
||||
}
|
||||
},
|
||||
closePopUp() {
|
||||
this.showPopUp = false
|
||||
this.showPopUp = false;
|
||||
},
|
||||
subMitPopUp({
|
||||
submitData,
|
||||
areaModal,
|
||||
industryModal
|
||||
}) {
|
||||
subMitPopUp({ submitData, areaModal, industryModal }) {
|
||||
this.searchData = {
|
||||
submitData,
|
||||
areaModal,
|
||||
industryModal
|
||||
}
|
||||
industryModal,
|
||||
};
|
||||
console.log(this.searchData, this.activeTab, '------');
|
||||
if (submitData || areaModal || industryModal) {
|
||||
this.isSearch = true;
|
||||
}
|
||||
this.newPage.current = 1;
|
||||
this.nearPage.current = 1
|
||||
this.policyPage.current = 1
|
||||
this.nearPage.current = 1;
|
||||
this.policyPage.current = 1;
|
||||
switch (this.activeTab) {
|
||||
case 0:
|
||||
this.getNewListSearch()
|
||||
this.getNewListSearch();
|
||||
break;
|
||||
case 1:
|
||||
this.getNearListSearch()
|
||||
this.getNearListSearch();
|
||||
break;
|
||||
case 2:
|
||||
this.getPolicySearch()
|
||||
this.getPolicySearch();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
this.showPopUp = false
|
||||
this.showPopUp = false;
|
||||
},
|
||||
//个体户招工搜索;
|
||||
getPolicySearch: function() {
|
||||
const {
|
||||
submitData,
|
||||
areaModal,
|
||||
industryModal
|
||||
} = this.searchData;
|
||||
getPolicySearch: function () {
|
||||
const { submitData, areaModal, industryModal } = this.searchData;
|
||||
let params = {
|
||||
current: this.policyPage.current,
|
||||
size: this.policyPage.size,
|
||||
education: submitData["学历"],
|
||||
salary: submitData["工资"],
|
||||
education: submitData['学历'],
|
||||
salary: submitData['工资'],
|
||||
industry: industryModal?.industry,
|
||||
// province: areaModal?.address1[0],
|
||||
// city: areaModal?.address1[1],
|
||||
cityId: areaModal?.info.map((v) => v.areaName).join('-')
|
||||
}
|
||||
cityId: areaModal?.info.map((v) => v.areaName).join('-'),
|
||||
};
|
||||
if (params.cityId === '') {
|
||||
delete params.cityId
|
||||
delete params.cityId;
|
||||
}
|
||||
nearMissionSearch(params).then(res => {
|
||||
nearMissionSearch(params).then((res) => {
|
||||
if (this.policyPage.current === 1) {
|
||||
this.policyContentList = [];
|
||||
}
|
||||
this.policyPage.current += 1;
|
||||
this.policyPage.total = res.data.data.total;
|
||||
if (res.data.data && res.data.data.records.length) {
|
||||
this.policyContentList = this.policyContentList.concat(res.data.data
|
||||
.records);
|
||||
this.policyContentList = this.policyContentList.concat(res.data.data.records);
|
||||
}
|
||||
|
||||
})
|
||||
});
|
||||
},
|
||||
//推荐岗位搜索;
|
||||
getNearListSearch: function() {
|
||||
const {
|
||||
submitData,
|
||||
areaModal,
|
||||
industryModal
|
||||
} = this.searchData;
|
||||
console.log(this.searchData)
|
||||
getNearListSearch: function () {
|
||||
const { submitData, areaModal, industryModal } = this.searchData;
|
||||
console.log(this.searchData);
|
||||
let params = {
|
||||
current: this.nearPage.current,
|
||||
size: this.nearPage.size,
|
||||
education: submitData["学历"],
|
||||
salary: submitData["工资"],
|
||||
education: submitData['学历'],
|
||||
salary: submitData['工资'],
|
||||
industry: industryModal?.industry,
|
||||
// province: areaModal?.address1[0],
|
||||
// city: areaModal?.address1[1],
|
||||
cityId: areaModal?.info.map((v) => v.areaName).join('-')
|
||||
}
|
||||
cityId: areaModal?.info.map((v) => v.areaName).join('-'),
|
||||
};
|
||||
if (params.cityId === '') {
|
||||
delete params.cityId
|
||||
delete params.cityId;
|
||||
}
|
||||
newMissionAllSearch(params).then(res => {
|
||||
newMissionAllSearch(params).then((res) => {
|
||||
if (this.nearPage.current === 1) {
|
||||
this.companyList = [];
|
||||
}
|
||||
@@ -555,30 +536,26 @@
|
||||
if (res.data.data && res.data.data.records.length) {
|
||||
this.companyList = this.companyList.concat(res.data.data.records);
|
||||
}
|
||||
})
|
||||
});
|
||||
},
|
||||
//推荐任务搜索;
|
||||
getNewListSearch: function() {
|
||||
const {
|
||||
submitData,
|
||||
areaModal,
|
||||
industryModal
|
||||
} = this.searchData;
|
||||
getNewListSearch: function () {
|
||||
const { submitData, areaModal, industryModal } = this.searchData;
|
||||
let params = {
|
||||
current: this.policyPage.current,
|
||||
size: this.policyPage.size,
|
||||
education: submitData["学历"],
|
||||
salary: submitData["工资"],
|
||||
education: submitData['学历'],
|
||||
salary: submitData['工资'],
|
||||
industry: industryModal?.industry,
|
||||
// province: areaModal?.address1[0],
|
||||
// city: areaModal?.address1[1],
|
||||
wageUnitCategory: submitData["wageUnitCategory"],
|
||||
cityId: areaModal?.info.map((v) => v.areaName).join('-')
|
||||
}
|
||||
wageUnitCategory: submitData['wageUnitCategory'],
|
||||
cityId: areaModal?.info.map((v) => v.areaName).join('-'),
|
||||
};
|
||||
if (params.cityId === '') {
|
||||
delete params.cityId
|
||||
delete params.cityId;
|
||||
}
|
||||
recommendMissionSearch(params).then(res => {
|
||||
recommendMissionSearch(params).then((res) => {
|
||||
if (this.newPage.current === 1) {
|
||||
this.newList = [];
|
||||
}
|
||||
@@ -588,14 +565,14 @@
|
||||
this.newList = this.newList.concat(res.data.data.records);
|
||||
this.newPage.current += 1;
|
||||
}
|
||||
})
|
||||
});
|
||||
},
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.navPosition {
|
||||
.navPosition {
|
||||
padding: 0 24rpx 20rpx 30rpx;
|
||||
display: flex;
|
||||
align-item: center;
|
||||
@@ -605,32 +582,28 @@
|
||||
margin: 0 10rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.titleSearch {
|
||||
.titleSearch {
|
||||
display: flex;
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
font-size: 22px;
|
||||
font-weight: bold;
|
||||
padding: 20rpx;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
.searchName {
|
||||
.searchName {
|
||||
margin-right: 28rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.content {
|
||||
.content {
|
||||
background-color: #f3f4f8;
|
||||
/* min-height: 80vh; */
|
||||
min-height: calc(100vh - var(--window-top) - var(--status-bar-height) - var(--window-bottom));
|
||||
}
|
||||
padding-top: 20rpx;
|
||||
min-height: 80vh;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.screenButton {
|
||||
.screenButton {
|
||||
/* position: absolute;
|
||||
top: 10px;
|
||||
z-index: 1;
|
||||
@@ -641,39 +614,37 @@
|
||||
line-height: 30px;
|
||||
font-size: 14px;
|
||||
background-color: #fff;
|
||||
margin: 20rpx 0;
|
||||
}
|
||||
}
|
||||
|
||||
.typeButtonWrapper {
|
||||
.typeButtonWrapper {
|
||||
width: 92%;
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
/* margin-bottom: 10rpx; */
|
||||
}
|
||||
}
|
||||
|
||||
.typeButtonLeft {
|
||||
.typeButtonLeft {
|
||||
display: flex;
|
||||
width: 80%;
|
||||
white-space: nowrap;
|
||||
}
|
||||
overflow-x: scroll;
|
||||
}
|
||||
|
||||
.typeButton {
|
||||
.typeButton {
|
||||
font-size: 14px;
|
||||
padding: 10rpx 30rpx;
|
||||
background: #fff;
|
||||
border-radius: 50px;
|
||||
margin-right: 10rpx;
|
||||
white-space: nowrap;
|
||||
margin: 20rpx 10rpx 20rpx 0;
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
|
||||
.activeButton {
|
||||
.activeButton {
|
||||
color: #4171f9;
|
||||
background-color: #cfdaf8;
|
||||
}
|
||||
}
|
||||
|
||||
.arrow-up-right {
|
||||
.arrow-up-right {
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-left: 10px solid transparent;
|
||||
@@ -683,29 +654,27 @@
|
||||
position: absolute;
|
||||
top: 3px;
|
||||
right: 3px;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
.topseach {
|
||||
.topseach {
|
||||
width: 25px;
|
||||
height: 25px;
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
right: 30rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.location image:last-child {
|
||||
.location image:last-child {
|
||||
margin-left: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.location image {
|
||||
.location image {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.location {
|
||||
.location {
|
||||
padding: 20rpx 30rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@@ -713,9 +682,9 @@
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 28rpx;
|
||||
color: #333333;
|
||||
}
|
||||
}
|
||||
|
||||
.btn {
|
||||
.btn {
|
||||
margin: 0 auto;
|
||||
color: #999;
|
||||
border: 1rpx solid #999;
|
||||
@@ -726,34 +695,32 @@
|
||||
width: 180rpx;
|
||||
border-radius: 5rpx;
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.nothing_text {
|
||||
.nothing_text {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 28rpx;
|
||||
color: #666666;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
.nothingContnt {
|
||||
.nothingContnt {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 28rpx;
|
||||
color: #333333;
|
||||
margin-top: 30rpx;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
.nothing {
|
||||
.nothing {
|
||||
width: 400rpx;
|
||||
height: 200rpx;
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
margin-top: 300rpx;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
.popUpWrapper {
|
||||
.popUpWrapper {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -2,63 +2,72 @@
|
||||
<view v-if="showDetail">
|
||||
<view class="head">
|
||||
<view class="proname">
|
||||
{{ info.missionTitle || '暂无' }}
|
||||
{{info.missionTitle || '暂无'}}
|
||||
</view>
|
||||
<!-- <view class="prolist">
|
||||
任务编码:{{info.missionNo}}
|
||||
</view> -->
|
||||
<view class="prolist">
|
||||
<!-- 开始时间:{{dateFormat((info.stime))}}至{{dateFormat((info.etime))}} -->
|
||||
开始时间:{{ dateFormat(info.stime) || '暂无' }}
|
||||
开始时间:{{dateFormat((info.stime)) || '暂无'}}
|
||||
</view>
|
||||
<!-- <view class="prolist">
|
||||
报名截止:{{dateFormat((info.etimePub))}}
|
||||
</view> -->
|
||||
<view class="prolist">招聘人数:{{ info.peopleNum || '暂无' }}</view>
|
||||
<view class="prolist">行业类型:{{ info.tradeNames || '暂无' }}</view>
|
||||
<view class="prolist">零工工种:{{ info.worktypeNames || '暂无' }}</view>
|
||||
<!-- <view class="prolist">
|
||||
参考工资:
|
||||
{{info.wageUnitCategory === 4 ? wageUnitdata[info.wage] : (info.wage || '暂无') }}
|
||||
{{info.wageUnitCategory === 4 ? '' :wageUnit[info.wageUnitCategory]}}
|
||||
</view> -->
|
||||
<view class="prolist">
|
||||
参考工资:
|
||||
{{info.wage}}
|
||||
招聘人数:{{info.peopleNum || '暂无'}}
|
||||
</view>
|
||||
<view class="prolist">
|
||||
行业类型:{{info.tradeNames || '暂无'}}
|
||||
</view>
|
||||
<view class="prolist">
|
||||
零工工种:{{info.worktypeNames || '暂无'}}
|
||||
</view>
|
||||
<!-- <view class="fee">
|
||||
{{info.wage || '暂无'}}
|
||||
</view> -->
|
||||
</view>
|
||||
<view class="head">
|
||||
<view class="proname proneed">岗位要求</view>
|
||||
<view class="prolist">
|
||||
<view class="protype">年龄要求:{{ age[info.ageDesc] || '暂无' }}</view>
|
||||
<view class="proname proneed">
|
||||
岗位要求
|
||||
</view>
|
||||
<view class="prolist">
|
||||
<view class="protype">学历要求:{{ education[info.education] || '暂无' }}</view>
|
||||
<view class="protype">
|
||||
年龄要求:{{age[info.ageDesc] || '暂无'}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="prolist">
|
||||
<view class="protype">经验要求:{{ experience[info.experienceDesc] || '暂无' }}</view>
|
||||
<view class="protype">
|
||||
学历要求:{{education[info.education] || '暂无'}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="prolist">
|
||||
<view class="protype">
|
||||
经验要求:{{experience[info.experienceDesc] || '暂无'}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="prolist proint" style="font-weight: bold;color:#333;">
|
||||
岗位描述
|
||||
</view>
|
||||
<view class="prolist proint" style="font-weight: bold; color: #333">岗位描述</view>
|
||||
<view class="prolist description">
|
||||
{{ info.missionDesc || '暂无' }}
|
||||
{{info.missionDesc || '暂无'}}
|
||||
</view>
|
||||
<!-- 技能标签 start -->
|
||||
<view class="ask">
|
||||
<view class="askList" v-for="(item, index) in skillNames" :key="index">
|
||||
{{ item }}
|
||||
<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 v-if="info.jobSources" class="prolist">
|
||||
来源:{{info.jobSources || '暂无'}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="head">
|
||||
<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.missionCompanyName || '暂无' }}</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.missionCompanyName || '暂无'}}</view>
|
||||
</view>
|
||||
<!-- <view class="proname proneed">
|
||||
企业信息
|
||||
@@ -68,7 +77,9 @@
|
||||
</view> -->
|
||||
</view>
|
||||
<view class="head">
|
||||
<view class="proname proneed">地址</view>
|
||||
<view class="proname proneed">
|
||||
地址
|
||||
</view>
|
||||
<!-- <view class="prolist">
|
||||
<view class="protype">
|
||||
联系人:{{info.callName}}
|
||||
@@ -83,116 +94,78 @@
|
||||
<!-- <view class="prolist">
|
||||
用工单位地址:{{info.companyAddress || '暂无'}}
|
||||
</view> -->
|
||||
<view class="prolist">注册地址:{{ info.cityId || '暂无' }}</view>
|
||||
<view class="prolist">工作地址:{{ info.address || '暂无' }}</view>
|
||||
<view class="prolist">
|
||||
注册地址:{{info.cityId || '暂无'}}
|
||||
</view>
|
||||
<view class="prolist">
|
||||
工作地址:{{info.address || '暂无'}}
|
||||
</view>
|
||||
<view class="map">
|
||||
<super-map
|
||||
ref="uMap"
|
||||
style="width: 100%; height: 100%"
|
||||
:latitude="latitude"
|
||||
:longitude="longitude"
|
||||
:open="true"
|
||||
:zoom="14"
|
||||
:min-zoom="10"
|
||||
:max-zoom="20"
|
||||
:MapUrl="$config.supperMap"
|
||||
:init="false"
|
||||
:flag-tip="false"
|
||||
></super-map>
|
||||
<!-- <super-map ref="uMap" style="width: 100%;height: 100%;" :latitude="latitude" :longitude="longitude"
|
||||
:open="true" :zoom="14" :min-zoom="10" :max-zoom="20" :MapUrl="$config.supperMap" :init="false"
|
||||
:flag-tip="false"></super-map> -->
|
||||
<zhuo-tianditu-MultiPoint-Mapper ref="tMap" :api-key="$config.apiKey"></zhuo-tianditu-MultiPoint-Mapper>
|
||||
</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 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 @click="callPhone" class="bottombtn flexbtn"
|
||||
style="margin-right: 10rpx;background-color: #FBAD17;border-radius: 45rpx;">
|
||||
电话联系
|
||||
</view>
|
||||
<view @click="submit" class="bottombtn flexbtn">申请</view>
|
||||
<view @click="submit" class="bottombtn flexbtn" style="border-radius: 45rpx;">
|
||||
申请
|
||||
</view>
|
||||
<view class="btn" v-if="isShow !== '0' && status !== 0">
|
||||
</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 @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 @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 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>
|
||||
<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 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 || '联系人' }} :
|
||||
<span style="color: blue" v-if="info.callTel" @click="tools.onDialingPhoneNumber(info.callTel)">
|
||||
{{ info.callTel }}
|
||||
</span>
|
||||
<span style="color: #333333" v-else>无联系方式</span>
|
||||
<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"
|
||||
@click="tools.onDialingPhoneNumber(info.callTel)">{{ info.callTel }}</span>
|
||||
</view>
|
||||
</view>
|
||||
</u-popup>
|
||||
@@ -200,7 +173,7 @@
|
||||
|
||||
<view v-else-if="showCode" class="codeSealBox">
|
||||
<!-- #ifdef H5 || APP-PLUS -->
|
||||
<view class="closeCode" @click="closeShowCode" style="top: 124rpx">+</view>
|
||||
<view class="closeCode" @click="closeShowCode" style="top: 124rpx;">+</view>
|
||||
<!-- #endif -->
|
||||
<!-- #ifdef MP-WEIXIN -->
|
||||
<view class="closeCode" @click="closeShowCode">+</view>
|
||||
@@ -210,28 +183,47 @@
|
||||
<view class="name">签名密码</view>
|
||||
<view class="tip">6位数字签名密码</view>
|
||||
</view>
|
||||
<view style="height: 36px"></view>
|
||||
<view style="height: 36px;"></view>
|
||||
<valid-code ref="validCode" @finish="getInpCode" :maxlength="maxlength"></valid-code>
|
||||
<view style="height: 36px"></view>
|
||||
<view style="height: 36px;"></view>
|
||||
<view class="forget" @click="forget">忘记密码?</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapGetters } from 'vuex';
|
||||
import { missionDetail, missionDetailById, submit, getCollectState, updateCollectStatus } from '@/api/mission.js';
|
||||
import { GoLogin } from '@/untils/AxiosUtils.js';
|
||||
import dic from '@/common/dic.js'
|
||||
import { setRead } from '@/api/news.js';
|
||||
import { checkPass, getPhoneCountNumber } from '@/api/auth.js';
|
||||
import dictionary from '@/common/textdata.js';
|
||||
import { dateFormat } from '../../untils/format.js';
|
||||
import uniMask from '@/components/uni-mask/mask.vue';
|
||||
import uniPopup from '@/components/uni-popup/uni-popup.vue';
|
||||
import validCode from '@/components/p-valid-code/p-valid-code.vue';
|
||||
import { AddressToLocation } from '@/untils/addressToLocation.js';
|
||||
import { add } from 'lodash';
|
||||
export default {
|
||||
import {
|
||||
mapGetters
|
||||
} from 'vuex'
|
||||
import {
|
||||
missionDetail,
|
||||
missionDetailById,
|
||||
submit,
|
||||
getCollectState,
|
||||
updateCollectStatus
|
||||
} 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 uniMask from '@/components/uni-mask/mask.vue'
|
||||
import uniPopup from '@/components/uni-popup/uni-popup.vue'
|
||||
import validCode from '@/components/p-valid-code/p-valid-code.vue'
|
||||
import {
|
||||
AddressToLocation
|
||||
} from '@/untils/addressToLocation.js'
|
||||
import {
|
||||
add
|
||||
} from 'lodash';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
...dictionary,
|
||||
@@ -244,18 +236,15 @@ export default {
|
||||
loading: false,
|
||||
latitude: 31.126855, //中心点
|
||||
longitude: 104.397894,
|
||||
covers: [
|
||||
{
|
||||
//marker标记位置
|
||||
covers: [{ //marker标记位置
|
||||
id: 0,
|
||||
latitude: 31.126855,
|
||||
longitude: 104.397894,
|
||||
// width:30,
|
||||
// height:30,
|
||||
iconPath: '../../static/img/location.png',
|
||||
},
|
||||
],
|
||||
missionNo: '',
|
||||
iconPath: '../../static/img/location.png'
|
||||
}],
|
||||
missionNo: "",
|
||||
isShow: '',
|
||||
type: '',
|
||||
id: '',
|
||||
@@ -263,20 +252,15 @@ export default {
|
||||
maxlength: 6,
|
||||
collectStatus: 0, // 收藏状态
|
||||
showPopUp: false,
|
||||
isInvite: false,
|
||||
wageUnitdata: {
|
||||
1:'计件',
|
||||
2:'面议'
|
||||
isInvite: false
|
||||
}
|
||||
};
|
||||
},
|
||||
components: {
|
||||
uniMask,
|
||||
validCode,
|
||||
uniPopup,
|
||||
uniPopup
|
||||
},
|
||||
onLoad: function (option) {
|
||||
//option为object类型,会序列化上个页面传递的参数
|
||||
onLoad: function(option) { //option为object类型,会序列化上个页面传递的参数
|
||||
// this.$store.dispatch('setAutograph')
|
||||
if (option.missionNo) {
|
||||
this.missionNo = decodeURIComponent(option.missionNo);
|
||||
@@ -291,50 +275,32 @@ export default {
|
||||
this.id = option.id; //消息id
|
||||
}
|
||||
if (option.isInvite) {
|
||||
this.isInvite = true;
|
||||
this.isInvite = true
|
||||
}
|
||||
},
|
||||
onShow: function () {
|
||||
this.showDetail = true;
|
||||
onShow: function() {
|
||||
this.showDetail = true
|
||||
this.getData();
|
||||
|
||||
|
||||
},
|
||||
onShareAppMessage(obj) {
|
||||
return {
|
||||
title: this.info.missionTitle,
|
||||
path: `/pages/projectInfo/projectInfo?missionNo=${this.info.missionNo}`,
|
||||
};
|
||||
path: `/pages/projectInfo/projectInfo?missionNo=${this.info.missionNo}`
|
||||
}
|
||||
},
|
||||
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) => {
|
||||
updateCollectStatus(this.info.id, status, 0).then(res => {
|
||||
if (res.data.code == 200) {
|
||||
this.getCollectStatus();
|
||||
this.getCollectStatus()
|
||||
}
|
||||
});
|
||||
})
|
||||
},
|
||||
async callPhone() {
|
||||
getPhoneCountNumber();
|
||||
if (!this.$api.haslogin()) {
|
||||
GoLogin();
|
||||
return;
|
||||
}
|
||||
if (!this.$api.hasResume()) {
|
||||
this.navTo('/pageMy/my/resume/index', true);
|
||||
return;
|
||||
}
|
||||
callPhone() {
|
||||
this.showPopUp = true;
|
||||
},
|
||||
closePopUp() {
|
||||
@@ -342,24 +308,25 @@ export default {
|
||||
},
|
||||
// 获取收藏状态
|
||||
getCollectStatus() {
|
||||
getCollectState(this.info.id, 0).then((res) => {
|
||||
getCollectState(this.info.id, 0).then(res => {
|
||||
// 0 未收藏,1 已收藏
|
||||
// console.log(res)
|
||||
this.collectStatus = res.data.data;
|
||||
});
|
||||
})
|
||||
},
|
||||
getData: function () {
|
||||
getData: function() {
|
||||
const self = this;
|
||||
let detail = null;
|
||||
let detail = null
|
||||
if (this.isInvite) {
|
||||
detail = missionDetailById;
|
||||
detail = missionDetailById
|
||||
} else {
|
||||
detail = missionDetail;
|
||||
detail = missionDetail
|
||||
}
|
||||
detail(self.missionNo).then(
|
||||
(res) => {
|
||||
detail(self.missionNo).then(res => {
|
||||
self.info = res.data.data;
|
||||
self.status = res.data.data.detailStatus;
|
||||
this.$refs.tMap.open(self.info.lon, self.info.lat)
|
||||
|
||||
// AddressToLocation({
|
||||
// smart_address: res.data.data.address
|
||||
// }).then((result) => {
|
||||
@@ -373,47 +340,46 @@ export default {
|
||||
// self.longitude = self.info.lon;
|
||||
// self.covers[0].latitude = self.info.lat;
|
||||
// self.covers[0].longitude = self.info.lon;
|
||||
if (!(self.info.lat && self.info.lat === -1)) {
|
||||
self.$refs.uMap.initMap({
|
||||
if (self.info.lon > 1 && self.info.lat > 1) {
|
||||
self.$nextTick(() => {
|
||||
self.$api.sleep(500).then(() => {
|
||||
this.$refs.tMap.addFeature([{
|
||||
id: self.info.id,
|
||||
label: self.info.missionTitle,
|
||||
lat: self.info.lat,
|
||||
lon: self.info.lon,
|
||||
});
|
||||
}])
|
||||
})
|
||||
})
|
||||
}
|
||||
self.showDetail = true;
|
||||
self.getCollectStatus();
|
||||
if (self.type === 1) {
|
||||
// 设置已读
|
||||
setRead(self.id).then((res) => {
|
||||
self.$store.commit('SET_READ');
|
||||
});
|
||||
setRead(self.id).then(res => {
|
||||
self.$store.commit("SET_READ");
|
||||
})
|
||||
}
|
||||
},
|
||||
(error) => {
|
||||
}, error => {
|
||||
console.log(error);
|
||||
}
|
||||
);
|
||||
});
|
||||
},
|
||||
submit: function () {
|
||||
if (!this.$api.haslogin()) {
|
||||
GoLogin();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this.$api.hasResume()) {
|
||||
this.navTo('/pageMy/my/resume/index', true);
|
||||
return;
|
||||
}
|
||||
|
||||
const _that = this;
|
||||
submit: function() {
|
||||
const _that = this
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '请确认申请,申请后不能撤销',
|
||||
success: function (res) {
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
if (_that.loading) return;
|
||||
const auth = _that.auth;
|
||||
const contractOn = _that.info.contractOn;
|
||||
const sealOk = _that.autograph && _that.autograph.data && _that.autograph.data.signSrcUrl;
|
||||
if (!_that.$store.state.user.token) {
|
||||
GoLogin()
|
||||
return
|
||||
}
|
||||
if (_that.loading) return
|
||||
const auth = _that.auth
|
||||
const contractOn = _that.info.contractOn
|
||||
const sealOk = _that.autograph && _that.autograph.data && _that.autograph
|
||||
.data.signSrcUrl
|
||||
// if (sealOk) {
|
||||
// console.log('直接抢任务')
|
||||
// this.submitTask()
|
||||
@@ -424,109 +390,88 @@ export default {
|
||||
// this.goSign(1)
|
||||
// } else
|
||||
if (contractOn && !sealOk) {
|
||||
_that.goSign(2);
|
||||
_that.goSign(2)
|
||||
} else if (sealOk && contractOn) {
|
||||
_that.nextBtn = true;
|
||||
_that.lookMask();
|
||||
_that.nextBtn = true
|
||||
_that.lookMask()
|
||||
} else {
|
||||
_that.submitTask();
|
||||
_that.submitTask()
|
||||
}
|
||||
} else if (res.cancel) {
|
||||
_that.$api.msg('取消申请');
|
||||
_that.$api.msg('取消申请')
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
},
|
||||
// 查看合同
|
||||
lookMask() {
|
||||
this.maskShow = true;
|
||||
this.maskShow = true
|
||||
},
|
||||
// 抢任务
|
||||
submitTask() {
|
||||
submit(this.missionNo, 0).then(
|
||||
(res) => {
|
||||
uni.hideLoading();
|
||||
submit(this.missionNo, 0).then(res => {
|
||||
uni.hideLoading()
|
||||
uni.showToast({
|
||||
title: '操作成功',
|
||||
icon: 'none',
|
||||
icon: 'none'
|
||||
});
|
||||
this.status = null;
|
||||
this.loading = false;
|
||||
},
|
||||
(error) => {
|
||||
this.loading = false;
|
||||
}
|
||||
);
|
||||
this.loading = false
|
||||
}, error => {
|
||||
this.loading = false
|
||||
});
|
||||
},
|
||||
// 步骤
|
||||
goSign(active) {
|
||||
uni.navigateTo({
|
||||
url: `/pages/projectInfo/signContract?active=${active}`,
|
||||
});
|
||||
url: `/pages/projectInfo/signContract?active=${active}`
|
||||
})
|
||||
},
|
||||
// 关闭弹窗
|
||||
close() {
|
||||
this.maskShow = false;
|
||||
this.maskShow = false
|
||||
},
|
||||
// 合同下一步
|
||||
next() {
|
||||
this.maskShow = false;
|
||||
this.showDetail = false;
|
||||
this.showCode = true;
|
||||
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();
|
||||
title: "请求中..."
|
||||
})
|
||||
this.loading = true
|
||||
var obj = {
|
||||
pass: password
|
||||
}
|
||||
checkPass(obj).then(res => {
|
||||
this.submitTask()
|
||||
this.closeShowCode()
|
||||
}).catch(err => {
|
||||
this.loading = false
|
||||
})
|
||||
.catch((err) => {
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
// 关闭签名密码弹窗
|
||||
closeShowCode() {
|
||||
this.showCode = false;
|
||||
this.showDetail = true;
|
||||
this.showCode = false
|
||||
this.showDetail = true
|
||||
},
|
||||
// 忘记密码
|
||||
forget() {
|
||||
uni.navigateTo({
|
||||
url: `/pageMy/setUserBase/seal/forget?forget=true`,
|
||||
});
|
||||
},
|
||||
|
||||
// wageUnit(data) {
|
||||
// let rel = {};
|
||||
// data.forEach((element) => {
|
||||
// rel[element.value] = element.label;
|
||||
// });
|
||||
// // return rel;
|
||||
// }
|
||||
url: `/pageMy/setUserBase/seal/forget?forget=true`
|
||||
})
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['auth', 'autograph', 'area']),
|
||||
skillNames() {
|
||||
if (this.info.skillNames) {
|
||||
return this.info.skillNames.split(',');
|
||||
return this.info.skillNames.split(',')
|
||||
}
|
||||
},
|
||||
wageUnit() {
|
||||
const data = dic.wageUnitCategoryState[0]
|
||||
let rel = {};
|
||||
data.forEach((element) => {
|
||||
rel[element.value] = element.label;
|
||||
});
|
||||
return rel;
|
||||
}
|
||||
// cityNamed() {
|
||||
// if (this.info && typeof this.info.cityId !== 'undefined' && this.info.cityId !== -1 && this.area
|
||||
// .dic) {
|
||||
@@ -535,19 +480,19 @@ export default {
|
||||
// return '无'
|
||||
// }
|
||||
// }
|
||||
},
|
||||
};
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.codeSealBox {
|
||||
.codeSealBox {
|
||||
padding: 285rpx 72rpx 0 72rpx;
|
||||
|
||||
.closeCode {
|
||||
position: absolute;
|
||||
right: 36rpx;
|
||||
top: 120rpx;
|
||||
color: #1b66ff;
|
||||
color: #1B66FF;
|
||||
transform: rotate(45deg);
|
||||
font-size: 40px;
|
||||
}
|
||||
@@ -581,14 +526,15 @@ export default {
|
||||
font-size: 28rpx;
|
||||
font-family: PingFangSC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #5aa0fa;
|
||||
color: #5AA0FA;
|
||||
line-height: 38rpx;
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
|
||||
.contractMask {
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
.contractMask {
|
||||
background-color: #FFFFFF;
|
||||
margin: 30rpx;
|
||||
position: relative;
|
||||
border-radius: 4px;
|
||||
@@ -598,7 +544,7 @@ export default {
|
||||
.close {
|
||||
width: 23px;
|
||||
height: 23px;
|
||||
color: #1b66ff;
|
||||
color: #1B66FF;
|
||||
position: fixed;
|
||||
right: 60rpx;
|
||||
top: 60rpx;
|
||||
@@ -614,34 +560,34 @@ export default {
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
text-align: center;
|
||||
background: #1b66ff;
|
||||
background: #1B66FF;
|
||||
font-size: 36rpx;
|
||||
font-weight: 400;
|
||||
color: #ffffff;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.lookContract {
|
||||
.lookContract {
|
||||
width: 30%;
|
||||
margin-right: 30rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.flexbtn {
|
||||
.flexbtn {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.bottombtn {
|
||||
background-color: #1b66ff;
|
||||
.bottombtn {
|
||||
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 {
|
||||
.btn {
|
||||
background-color: #fefefe;
|
||||
width: 690rpx;
|
||||
padding: 30rpx;
|
||||
@@ -650,19 +596,19 @@ export default {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
|
||||
.disabledBtn {
|
||||
.disabledBtn {
|
||||
background-color: #c8c9cc;
|
||||
}
|
||||
}
|
||||
|
||||
.map {
|
||||
.map {
|
||||
width: 100%;
|
||||
height: 350rpx;
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.askList {
|
||||
.askList {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 24rpx;
|
||||
color: #666666;
|
||||
@@ -670,9 +616,9 @@ export default {
|
||||
padding: 5rpx 15rpx;
|
||||
margin-right: 10rpx;
|
||||
margin-top: 15rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.ask {
|
||||
.ask {
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
@@ -680,29 +626,31 @@ export default {
|
||||
flex-wrap: wrap;
|
||||
justify-content: flex-start;
|
||||
margin: 20rpx 0;
|
||||
}
|
||||
|
||||
.proint {
|
||||
}
|
||||
|
||||
.proint {
|
||||
margin-top: 30rpx;
|
||||
font-size: 30rpx !important;
|
||||
}
|
||||
}
|
||||
|
||||
.proneed {
|
||||
.proneed {
|
||||
font-size: 32rpx !important;
|
||||
}
|
||||
|
||||
.fee {
|
||||
}
|
||||
|
||||
.fee {
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 32rpx;
|
||||
color: #f46161;
|
||||
color: #F46161;
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.protype {
|
||||
.protype {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
.prolist {
|
||||
.prolist {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 28rpx;
|
||||
color: #666666;
|
||||
@@ -711,9 +659,9 @@ export default {
|
||||
justify-content: space-between;
|
||||
text-align: left;
|
||||
padding: 5rpx 0;
|
||||
}
|
||||
}
|
||||
|
||||
.proname {
|
||||
.proname {
|
||||
font-weight: bold;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 40rpx;
|
||||
@@ -721,16 +669,16 @@ export default {
|
||||
width: 90%;
|
||||
overflow: hidden;
|
||||
padding-bottom: 20rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.head {
|
||||
.head {
|
||||
padding: 30rpx;
|
||||
background: #fefefe;
|
||||
border-bottom: 20rpx solid #f6f6f6;
|
||||
}
|
||||
}
|
||||
|
||||
.description {
|
||||
.description {
|
||||
word-break: break-all;
|
||||
white-space: pre-line;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<view>
|
||||
<view class="sealBox">
|
||||
<view style="height: 70rpx"></view>
|
||||
<view style="height: 70rpx;"></view>
|
||||
<view class="name">签名</view>
|
||||
<view v-if="src" class="sealContent">
|
||||
<image class="img" mode="aspectFit" :src="src"></image>
|
||||
@@ -23,7 +23,7 @@
|
||||
</view>
|
||||
</view>
|
||||
<view v-if="!src" class="sealAgreement">
|
||||
<checkbox :checked="status" @click="checkClick" />
|
||||
<checkbox :checked="status" @click="checkClick"/>
|
||||
<view>我已阅读并同意</view>
|
||||
<view class="agreement" @click="goAgreement('/pages/user/sealAgreement')">《申请证书协议》</view>
|
||||
</view>
|
||||
@@ -35,75 +35,75 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapGetters } from 'vuex';
|
||||
export default {
|
||||
import {mapGetters} from 'vuex'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
status: false,
|
||||
};
|
||||
status:false
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
// this.$store.dispatch('setAutograph')
|
||||
},
|
||||
methods: {
|
||||
goAgreement(url) {
|
||||
goAgreement (url) {
|
||||
uni.navigateTo({
|
||||
url,
|
||||
});
|
||||
url
|
||||
})
|
||||
},
|
||||
checkClick() {
|
||||
this.status = !this.status;
|
||||
checkClick(){
|
||||
this.status = !this.status
|
||||
},
|
||||
next() {
|
||||
uni.navigateBack();
|
||||
next () {
|
||||
uni.navigateBack()
|
||||
// uni.switchTab({
|
||||
// url: '/pages/index/index'
|
||||
// })
|
||||
},
|
||||
go(url) {
|
||||
if (!this.status) {
|
||||
go(url){
|
||||
if (!this.status){
|
||||
uni.showToast({
|
||||
title: '请先阅读并同意《申请证书协议》',
|
||||
icon: 'none',
|
||||
});
|
||||
return;
|
||||
icon: 'none'
|
||||
})
|
||||
return
|
||||
}
|
||||
uni.navigateTo({
|
||||
url: `/pageMy/setUserBase/seal/sealCanvas?path=/pageMy/setUserBase/seal/sealCanvas`,
|
||||
});
|
||||
},
|
||||
getInpCode: function (e) {
|
||||
console.log(e);
|
||||
url: `/pageMy/setUserBase/seal/sealCanvas?path=/pageMy/setUserBase/seal/sealCanvas`
|
||||
})
|
||||
},
|
||||
getInpCode: function(e) {
|
||||
console.log(e)
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['autograph']),
|
||||
src() {
|
||||
if (this.autograph.data && this.autograph.data.signSrcUrl) {
|
||||
return this.autograph.data.signSrcUrl;
|
||||
src(){
|
||||
if (this.autograph.data && this.autograph.data.signSrcUrl){
|
||||
return this.autograph.data.signSrcUrl
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.sealAgreement {
|
||||
.sealAgreement{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin: 30rpx;
|
||||
font-size: 32rpx;
|
||||
.agreement {
|
||||
color: #007aff;
|
||||
.agreement{
|
||||
color: #007AFF;
|
||||
}
|
||||
::v-deep .uni-checkbox-input {
|
||||
border-radius: 22px !important;
|
||||
/deep/ .uni-checkbox-input{
|
||||
border-radius: 22px!important;
|
||||
}
|
||||
}
|
||||
.nocheck {
|
||||
}
|
||||
.nocheck {
|
||||
opacity: 0.3;
|
||||
}
|
||||
.bottombtn {
|
||||
background-color: #1b66ff;
|
||||
}
|
||||
.bottombtn {
|
||||
background-color: #1B66FF;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
border-radius: 10rpx;
|
||||
@@ -111,20 +111,21 @@ export default {
|
||||
font-size: 32rpx;
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.btn {
|
||||
.btn {
|
||||
background-color: #fefefe;
|
||||
padding: 70rpx 80rpx;
|
||||
}
|
||||
.sealBox {
|
||||
background-color: #ffffff;
|
||||
}
|
||||
.sealBox{
|
||||
background-color: #FFFFFF;
|
||||
padding: 0 15px 0 15px;
|
||||
.name {
|
||||
.name{
|
||||
font-size: 32rpx;
|
||||
font-weight: 400;
|
||||
color: #333333;
|
||||
line-height: 45rpx;
|
||||
|
||||
}
|
||||
.listRight {
|
||||
display: flex;
|
||||
@@ -149,24 +150,25 @@ export default {
|
||||
color: #333333;
|
||||
height: 88rpx;
|
||||
}
|
||||
.sealContent {
|
||||
background: #f6f6f6;
|
||||
.sealContent{
|
||||
background: #F6F6F6;
|
||||
padding: 16rpx;
|
||||
margin-top: 14rpx;
|
||||
position: relative;
|
||||
.img {
|
||||
position:relative;
|
||||
.img{
|
||||
width: 100%;
|
||||
height: 312rpx;
|
||||
background-color: #ffffff;
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
.contentFont {
|
||||
.contentFont{
|
||||
height: 312rpx;
|
||||
line-height: 312rpx;
|
||||
font-size: 30rpx;
|
||||
color: #999999;
|
||||
background: #ffffff;
|
||||
background: #FFFFFF;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
@@ -2,68 +2,75 @@
|
||||
<view v-if="showDetail">
|
||||
<view class="head">
|
||||
<view class="proname">
|
||||
{{ info.jobName || '暂无' }}
|
||||
{{info.jobName || '暂无'}}
|
||||
</view>
|
||||
<!-- <view class="prolist">
|
||||
任务编码:{{info.missionNo}}
|
||||
</view> -->
|
||||
<view class="prolist">
|
||||
<!-- 开始时间:{{dateFormat((info.stime))}}至{{dateFormat((info.etime))}} -->
|
||||
开始时间:{{ dateFormat(info.stime) || '暂无' }}
|
||||
开始时间:{{dateFormat((info.stime)) || '暂无'}}
|
||||
</view>
|
||||
<!-- <view class="prolist">
|
||||
报名截止:{{dateFormat((info.etimePub))}}
|
||||
</view> -->
|
||||
<view class="prolist">招聘人数:{{ info.peopleNum || '暂无' }}</view>
|
||||
<view class="prolist">行业类型:{{ info.tradeNames || '暂无' }}</view>
|
||||
<view class="prolist">零工工种:{{ info.worktypeNames || '暂无' }}</view>
|
||||
<view class="prolist">
|
||||
招聘人数:{{info.peopleNum || '暂无'}}
|
||||
</view>
|
||||
<view class="prolist">
|
||||
行业类型:{{info.tradeNames || '暂无'}}
|
||||
</view>
|
||||
<view class="prolist">
|
||||
零工工种:{{info.worktypeNames || '暂无'}}
|
||||
</view>
|
||||
<!-- <view class="fee">
|
||||
{{info.wage || '暂无'}}
|
||||
</view> -->
|
||||
<view
|
||||
class="position_right"
|
||||
v-if="info.reviewState === 1"
|
||||
@click="
|
||||
navTo(
|
||||
`/pages/projectInfo/sub/inviteList?jobType=${info.jobType}&id=${info.id}&createUserId=${info.createUserId}`
|
||||
)
|
||||
"
|
||||
>
|
||||
邀请用户
|
||||
</view>
|
||||
<view class="position_right" v-if="info.reviewState === 1"
|
||||
@click="navTo(`/pages/projectInfo/sub/inviteList?jobType=${info.jobType}&id=${info.id}&createUserId=${info.createUserId}`)">
|
||||
邀请用户</view>
|
||||
</view>
|
||||
<view class="head">
|
||||
<view class="proname proneed">岗位要求</view>
|
||||
<view class="prolist">
|
||||
<view class="protype">年龄要求:{{ age[info.ageDesc] || '暂无' }}</view>
|
||||
<view class="proname proneed">
|
||||
岗位要求
|
||||
</view>
|
||||
<view class="prolist">
|
||||
<view class="protype">学历要求:{{ education[info.education] || '暂无' }}</view>
|
||||
<view class="protype">
|
||||
年龄要求:{{age[info.ageDesc] || '暂无'}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="prolist">
|
||||
<view class="protype">经验要求:{{ experience[info.experienceDesc] || '暂无' }}</view>
|
||||
<view class="protype">
|
||||
学历要求:{{education[info.education] || '暂无'}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="prolist">
|
||||
<view class="protype">
|
||||
经验要求:{{experience[info.experienceDesc] || '暂无'}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="prolist proint" style="font-weight: bold;color:#333;">
|
||||
岗位描述
|
||||
</view>
|
||||
<view class="prolist proint" style="font-weight: bold; color: #333">岗位描述</view>
|
||||
<view class="prolist description">
|
||||
{{ info.jobDescription || '暂无' }}
|
||||
{{info.jobDescription || '暂无'}}
|
||||
</view>
|
||||
<!-- 技能标签 start -->
|
||||
<view class="ask">
|
||||
<view class="askList" v-for="(item, index) in skillNames" :key="index">
|
||||
{{ item }}
|
||||
<view class="askList" v-for="(item,index) in skillNames" :key="index">
|
||||
{{item}}
|
||||
</view>
|
||||
</view>
|
||||
<!-- 技能标签 end -->
|
||||
<view v-if="info.jobSources" style="color: red" class="prolist">来源:{{ info.jobSources || '暂无' }}</view>
|
||||
<view v-if="info.jobSources" class="prolist">
|
||||
来源:{{info.jobSources || '暂无'}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="head">
|
||||
<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 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 class="proname proneed">
|
||||
企业信息
|
||||
@@ -73,7 +80,9 @@
|
||||
</view> -->
|
||||
</view>
|
||||
<view class="head">
|
||||
<view class="proname proneed">地址</view>
|
||||
<view class="proname proneed">
|
||||
地址
|
||||
</view>
|
||||
<!-- <view class="prolist">
|
||||
<view class="protype">
|
||||
联系人:{{info.callName}}
|
||||
@@ -88,117 +97,79 @@
|
||||
<!-- <view class="prolist">
|
||||
公司地址:{{info.companyAddress || '暂无'}}
|
||||
</view> -->
|
||||
<view class="prolist">注册地址:{{ info.cityId || '暂无' }}</view>
|
||||
<view class="prolist">工作地址:{{ info.address || '暂无' }}</view>
|
||||
<view class="prolist">
|
||||
注册地址:{{info.cityId || '暂无'}}
|
||||
</view>
|
||||
<view class="prolist">
|
||||
工作地址:{{info.address || '暂无'}}
|
||||
</view>
|
||||
<view class="map">
|
||||
<!-- <seeLocation ref="cMap" :apikey="$config.apiKey"></seeLocation> -->
|
||||
<super-map
|
||||
ref="uMap"
|
||||
style="width: 100%; height: 100%"
|
||||
:latitude="latitude"
|
||||
:longitude="longitude"
|
||||
:open="true"
|
||||
:zoom="14"
|
||||
:min-zoom="10"
|
||||
:max-zoom="20"
|
||||
:MapUrl="$config.supperMap"
|
||||
:init="false"
|
||||
:flag-tip="false"
|
||||
></super-map>
|
||||
<!-- <super-map ref="uMap" style="width: 100%;height: 100%;" :latitude="latitude" :longitude="longitude"
|
||||
:open="true" :zoom="14" :min-zoom="10" :max-zoom="20" :MapUrl="$config.supperMap" :init="false"
|
||||
:flag-tip="false"></super-map> -->
|
||||
<zhuo-tianditu-MultiPoint-Mapper ref="tMap" :api-key="$config.apiKey"></zhuo-tianditu-MultiPoint-Mapper>
|
||||
</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 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 @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 @click="submit" class="bottombtn flexbtn" style="border-radius: 45rpx;">
|
||||
申请
|
||||
</view>
|
||||
<view class="btn" v-if="!jobType && isShow !== '0' && status !== 0">
|
||||
</view>
|
||||
<view class="btn" v-if="!jobType && 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 @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 @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 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>
|
||||
<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 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 || '联系人' }} :
|
||||
<span style="color: blue" v-if="info.callTel" @click="tools.onDialingPhoneNumber(info.callTel)">
|
||||
{{ info.callTel }}
|
||||
</span>
|
||||
<span style="color: #333333" v-else>无联系方式</span>
|
||||
<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"
|
||||
@click="tools.onDialingPhoneNumber(info.callTel)">{{ info.callTel }}</span>
|
||||
</view>
|
||||
</view>
|
||||
</u-popup>
|
||||
@@ -206,7 +177,7 @@
|
||||
|
||||
<view v-else-if="showCode" class="codeSealBox">
|
||||
<!-- #ifdef H5 || APP-PLUS -->
|
||||
<view class="closeCode" @click="closeShowCode" style="top: 124rpx">+</view>
|
||||
<view class="closeCode" @click="closeShowCode" style="top: 124rpx;">+</view>
|
||||
<!-- #endif -->
|
||||
<!-- #ifdef MP-WEIXIN -->
|
||||
<view class="closeCode" @click="closeShowCode">+</view>
|
||||
@@ -216,27 +187,47 @@
|
||||
<view class="name">签名密码</view>
|
||||
<view class="tip">6位数字签名密码</view>
|
||||
</view>
|
||||
<view style="height: 36px"></view>
|
||||
<view style="height: 36px;"></view>
|
||||
<valid-code ref="validCode" @finish="getInpCode" :maxlength="maxlength"></valid-code>
|
||||
<view style="height: 36px"></view>
|
||||
<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, getPhoneCountNumber } 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';
|
||||
import seeLocation from '@/components/sylj-selectLocation/seeLocation.vue';
|
||||
import { getuserrecruitDetailApp } from '@/api/userrecruit.js';
|
||||
export default {
|
||||
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'
|
||||
import seeLocation from '@/components/sylj-selectLocation/seeLocation.vue';
|
||||
import {
|
||||
getuserrecruitDetailApp
|
||||
} from '@/api/userrecruit.js'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
...dictionary,
|
||||
@@ -249,18 +240,15 @@ export default {
|
||||
loading: false,
|
||||
latitude: 30.70032, //中心点
|
||||
longitude: 104.05235,
|
||||
covers: [
|
||||
{
|
||||
//marker标记位置
|
||||
covers: [{ //marker标记位置
|
||||
id: 0,
|
||||
latitude: 0,
|
||||
longitude: 0,
|
||||
// width:30,
|
||||
// height:30,
|
||||
iconPath: '../../static/img/location.png',
|
||||
},
|
||||
],
|
||||
missionNo: '',
|
||||
iconPath: '../../static/img/location.png'
|
||||
}],
|
||||
missionNo: "",
|
||||
isShow: '',
|
||||
type: '',
|
||||
id: '',
|
||||
@@ -268,16 +256,15 @@ export default {
|
||||
maxlength: 6,
|
||||
collectStatus: 0, // 收藏状态
|
||||
showPopUp: false,
|
||||
jobType: null,
|
||||
};
|
||||
jobType: null
|
||||
}
|
||||
},
|
||||
components: {
|
||||
uniMask,
|
||||
validCode,
|
||||
seeLocation,
|
||||
seeLocation
|
||||
},
|
||||
onLoad: function (option) {
|
||||
//option为object类型,会序列化上个页面传递的参数
|
||||
onLoad: function(option) { //option为object类型,会序列化上个页面传递的参数
|
||||
// this.$store.dispatch('setAutograph')
|
||||
if (option.workId) {
|
||||
this.workId = decodeURIComponent(option.workId);
|
||||
@@ -292,49 +279,32 @@ export default {
|
||||
this.id = option.id; //消息id
|
||||
}
|
||||
if (option.jobType) {
|
||||
this.jobType = option.jobType;
|
||||
this.jobType = option.jobType
|
||||
}
|
||||
},
|
||||
onShow: function () {
|
||||
this.showDetail = true;
|
||||
onShow: function() {
|
||||
this.showDetail = true
|
||||
this.getData();
|
||||
|
||||
},
|
||||
onShareAppMessage(obj) {
|
||||
return {
|
||||
title: this.info.missionTitle,
|
||||
path: `/pages/projectInfo/projectInfo?missionNo=${this.info.missionNo}`,
|
||||
};
|
||||
path: `/pages/projectInfo/projectInfo?missionNo=${this.info.missionNo}`
|
||||
}
|
||||
},
|
||||
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) => {
|
||||
updateCollectStatus(this.info.id, status, 2).then(res => {
|
||||
if (res.data.code == 200) {
|
||||
this.getCollectStatus();
|
||||
this.getCollectStatus()
|
||||
}
|
||||
});
|
||||
})
|
||||
},
|
||||
async callPhone() {
|
||||
getPhoneCountNumber();
|
||||
if (!this.$api.haslogin()) {
|
||||
GoLogin();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this.$api.hasResume()) {
|
||||
this.navTo('/pageMy/my/resume/index', true);
|
||||
return;
|
||||
}
|
||||
callPhone() {
|
||||
this.showPopUp = true;
|
||||
},
|
||||
closePopUp() {
|
||||
@@ -342,36 +312,43 @@ export default {
|
||||
},
|
||||
// 获取收藏状态
|
||||
getCollectStatus() {
|
||||
getCollectState(this.info.id, 2).then((res) => {
|
||||
getCollectState(this.info.id, 2).then(res => {
|
||||
// 0 未收藏,1 已收藏
|
||||
// console.log(res)
|
||||
this.collectStatus = res.data.data;
|
||||
});
|
||||
})
|
||||
},
|
||||
async getData() {
|
||||
const self = this;
|
||||
let resData = null;
|
||||
let resData = null
|
||||
if (this.jobType) {
|
||||
resData = await getuserrecruitDetailApp({
|
||||
id: this.id,
|
||||
jobType: this.jobType,
|
||||
});
|
||||
jobType: this.jobType
|
||||
})
|
||||
} else {
|
||||
resData = await userrecruitDetail(self.workId);
|
||||
resData = await userrecruitDetail(self.workId)
|
||||
}
|
||||
if (resData.data?.code === 200) {
|
||||
self.info = resData.data.data;
|
||||
self.status = resData.data.data.status;
|
||||
self.missionNo = resData.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;
|
||||
if (!(self.info.lat && self.info.lat === -1)) {
|
||||
self.$refs.uMap.initMap({
|
||||
// self.latitude = self.info.lat;
|
||||
// self.longitude = self.info.lon;
|
||||
// self.covers[0].latitude = self.info.lat;
|
||||
// self.covers[0].longitude = self.info.lon;
|
||||
this.$refs.tMap.open(self.info.lon, self.info.lat)
|
||||
if (self.info.lon > 1 && self.info.lat > 1) {
|
||||
this.$nextTick(() => {
|
||||
self.$api.sleep(1000).then(() => {
|
||||
this.$refs.tMap.addFeature([{
|
||||
id: self.info.id,
|
||||
label: self.info.jobName,
|
||||
lat: self.info.lat,
|
||||
lon: self.info.lon,
|
||||
});
|
||||
}])
|
||||
})
|
||||
})
|
||||
}
|
||||
// this.$refs.cMap.open()
|
||||
self.showDetail = true;
|
||||
@@ -379,33 +356,29 @@ export default {
|
||||
self.getCollectStatus();
|
||||
if (self.type === 1) {
|
||||
// 设置已读
|
||||
setRead(self.id).then((res) => {
|
||||
self.$store.commit('SET_READ');
|
||||
});
|
||||
setRead(self.id).then(res => {
|
||||
self.$store.commit("SET_READ");
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
submit: function () {
|
||||
if (!this.$api.haslogin()) {
|
||||
GoLogin();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this.$api.hasResume()) {
|
||||
this.navTo('/pageMy/my/resume/index', true);
|
||||
return;
|
||||
}
|
||||
const _that = this;
|
||||
submit: function() {
|
||||
const _that = this
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '请确认申请,申请后不能撤销',
|
||||
success: function (res) {
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
if (_that.loading) return;
|
||||
const auth = _that.auth;
|
||||
const contractOn = _that.info.contractOn;
|
||||
const sealOk = _that.autograph && _that.autograph.data && _that.autograph.data.signSrcUrl;
|
||||
if (!_that.$store.state.user.token) {
|
||||
GoLogin()
|
||||
return
|
||||
}
|
||||
if (_that.loading) return
|
||||
const auth = _that.auth
|
||||
const contractOn = _that.info.contractOn
|
||||
const sealOk = _that.autograph && _that.autograph.data && _that.autograph
|
||||
.data.signSrcUrl
|
||||
// if (sealOk) {
|
||||
// console.log('直接抢任务')
|
||||
// this.submitTask()
|
||||
@@ -416,91 +389,86 @@ export default {
|
||||
// this.goSign(1)
|
||||
// } else
|
||||
if (contractOn && !sealOk) {
|
||||
_that.goSign(2);
|
||||
_that.goSign(2)
|
||||
} else if (sealOk && contractOn) {
|
||||
_that.nextBtn = true;
|
||||
_that.lookMask();
|
||||
_that.nextBtn = true
|
||||
_that.lookMask()
|
||||
} else {
|
||||
_that.submitTask();
|
||||
_that.submitTask()
|
||||
}
|
||||
} else if (res.cancel) {
|
||||
_that.$api.msg('取消申请');
|
||||
_that.$api.msg('取消申请')
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
},
|
||||
// 查看合同
|
||||
lookMask() {
|
||||
this.maskShow = true;
|
||||
this.maskShow = true
|
||||
},
|
||||
// 岗位申请
|
||||
submitTask() {
|
||||
submit(this.missionNo, 2).then(
|
||||
(res) => {
|
||||
uni.hideLoading();
|
||||
submit(this.missionNo, 2).then(res => {
|
||||
uni.hideLoading()
|
||||
uni.showToast({
|
||||
title: '操作成功',
|
||||
icon: 'none',
|
||||
icon: 'none'
|
||||
});
|
||||
this.status = null;
|
||||
this.loading = false;
|
||||
},
|
||||
(error) => {
|
||||
this.loading = false;
|
||||
}
|
||||
);
|
||||
this.loading = false
|
||||
}, error => {
|
||||
this.loading = false
|
||||
});
|
||||
},
|
||||
// 步骤
|
||||
goSign(active) {
|
||||
uni.navigateTo({
|
||||
url: `/pages/projectInfo/signContract?active=${active}`,
|
||||
});
|
||||
url: `/pages/projectInfo/signContract?active=${active}`
|
||||
})
|
||||
},
|
||||
// 关闭弹窗
|
||||
close() {
|
||||
this.maskShow = false;
|
||||
this.maskShow = false
|
||||
},
|
||||
// 合同下一步
|
||||
next() {
|
||||
this.maskShow = false;
|
||||
this.showDetail = false;
|
||||
this.showCode = true;
|
||||
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();
|
||||
title: "请求中..."
|
||||
})
|
||||
this.loading = true
|
||||
var obj = {
|
||||
pass: password
|
||||
}
|
||||
checkPass(obj).then(res => {
|
||||
this.submitTask()
|
||||
this.closeShowCode()
|
||||
}).catch(err => {
|
||||
this.loading = false
|
||||
})
|
||||
.catch((err) => {
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
// 关闭签名密码弹窗
|
||||
closeShowCode() {
|
||||
this.showCode = false;
|
||||
this.showDetail = true;
|
||||
this.showCode = false
|
||||
this.showDetail = true
|
||||
},
|
||||
// 忘记密码
|
||||
forget() {
|
||||
uni.navigateTo({
|
||||
url: `/pageMy/setUserBase/seal/forget?forget=true`,
|
||||
});
|
||||
},
|
||||
url: `/pageMy/setUserBase/seal/forget?forget=true`
|
||||
})
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['auth', 'autograph', 'area']),
|
||||
skillNames() {
|
||||
if (this.info.skillNames) {
|
||||
return this.info.skillNames.split(',');
|
||||
return this.info.skillNames.split(',')
|
||||
}
|
||||
},
|
||||
// cityNamed() {
|
||||
@@ -512,21 +480,21 @@ export default {
|
||||
// return '无'
|
||||
// }
|
||||
// }
|
||||
},
|
||||
};
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.head {
|
||||
.head {
|
||||
position: relative;
|
||||
|
||||
.position_right {
|
||||
position: absolute;
|
||||
right: 24rpx;
|
||||
top: 30rpx;
|
||||
color: #ffffff;
|
||||
color: #FFFFFF;
|
||||
font-size: 24rpx;
|
||||
background-color: #1b66ff;
|
||||
background-color: #1B66FF;
|
||||
border-radius: 12rpx;
|
||||
padding: 10rpx 20rpx;
|
||||
}
|
||||
@@ -535,16 +503,16 @@ export default {
|
||||
background-color: #e8e8e8;
|
||||
color: #333333;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.codeSealBox {
|
||||
.codeSealBox {
|
||||
padding: 285rpx 72rpx 0 72rpx;
|
||||
|
||||
.closeCode {
|
||||
position: absolute;
|
||||
right: 36rpx;
|
||||
top: 120rpx;
|
||||
color: #1b66ff;
|
||||
color: #1B66FF;
|
||||
transform: rotate(45deg);
|
||||
font-size: 40px;
|
||||
}
|
||||
@@ -578,14 +546,15 @@ export default {
|
||||
font-size: 28rpx;
|
||||
font-family: PingFangSC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #5aa0fa;
|
||||
color: #5AA0FA;
|
||||
line-height: 38rpx;
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
|
||||
.contractMask {
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
.contractMask {
|
||||
background-color: #FFFFFF;
|
||||
margin: 30rpx;
|
||||
position: relative;
|
||||
border-radius: 4px;
|
||||
@@ -595,7 +564,7 @@ export default {
|
||||
.close {
|
||||
width: 23px;
|
||||
height: 23px;
|
||||
color: #1b66ff;
|
||||
color: #1B66FF;
|
||||
position: fixed;
|
||||
right: 60rpx;
|
||||
top: 60rpx;
|
||||
@@ -611,24 +580,24 @@ export default {
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
text-align: center;
|
||||
background: #1b66ff;
|
||||
background: #1B66FF;
|
||||
font-size: 36rpx;
|
||||
font-weight: 400;
|
||||
color: #ffffff;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.lookContract {
|
||||
.lookContract {
|
||||
width: 30%;
|
||||
margin-right: 30rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.flexbtn {
|
||||
.flexbtn {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.bottombtn {
|
||||
background-color: #1b66ff;
|
||||
.bottombtn {
|
||||
background-color: #1B66FF;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
border-radius: 10rpx;
|
||||
@@ -636,9 +605,9 @@ export default {
|
||||
font-size: 32rpx;
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.btn {
|
||||
.btn {
|
||||
background-color: #fefefe;
|
||||
width: 690rpx;
|
||||
padding: 30rpx;
|
||||
@@ -647,19 +616,19 @@ export default {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
|
||||
.disabledBtn {
|
||||
.disabledBtn {
|
||||
background-color: #c8c9cc;
|
||||
}
|
||||
}
|
||||
|
||||
.map {
|
||||
.map {
|
||||
width: 100%;
|
||||
height: 350rpx;
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.askList {
|
||||
.askList {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 24rpx;
|
||||
color: #666666;
|
||||
@@ -667,9 +636,9 @@ export default {
|
||||
padding: 5rpx 15rpx;
|
||||
margin-right: 10rpx;
|
||||
margin-top: 15rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.ask {
|
||||
.ask {
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
@@ -677,29 +646,31 @@ export default {
|
||||
flex-wrap: wrap;
|
||||
justify-content: flex-start;
|
||||
margin: 20rpx 0;
|
||||
}
|
||||
|
||||
.proint {
|
||||
}
|
||||
|
||||
.proint {
|
||||
margin-top: 30rpx;
|
||||
font-size: 30rpx !important;
|
||||
}
|
||||
}
|
||||
|
||||
.proneed {
|
||||
.proneed {
|
||||
font-size: 32rpx !important;
|
||||
}
|
||||
|
||||
.fee {
|
||||
}
|
||||
|
||||
.fee {
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 32rpx;
|
||||
color: #f46161;
|
||||
color: #F46161;
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.protype {
|
||||
.protype {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
.prolist {
|
||||
.prolist {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 28rpx;
|
||||
color: #666666;
|
||||
@@ -708,9 +679,9 @@ export default {
|
||||
justify-content: space-between;
|
||||
text-align: left;
|
||||
padding: 5rpx 0;
|
||||
}
|
||||
}
|
||||
|
||||
.proname {
|
||||
.proname {
|
||||
font-weight: bold;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 40rpx;
|
||||
@@ -718,16 +689,16 @@ export default {
|
||||
width: 90%;
|
||||
overflow: hidden;
|
||||
padding-bottom: 20rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.head {
|
||||
.head {
|
||||
padding: 30rpx;
|
||||
background: #fefefe;
|
||||
border-bottom: 20rpx solid #f6f6f6;
|
||||
}
|
||||
}
|
||||
|
||||
.description {
|
||||
.description {
|
||||
word-break: break-all;
|
||||
white-space: pre-line;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -2,64 +2,74 @@
|
||||
<view v-if="showDetail">
|
||||
<view class="head">
|
||||
<view class="proname">
|
||||
{{ info.jobName || '暂无' }}
|
||||
{{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 || '暂无' }}
|
||||
发布日期:{{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="prolist">岗位工种:{{ info.skillNames || '暂无' }}</view>
|
||||
<!-- <view class="fee">
|
||||
{{info.wage}}{{wageUnit[info.wageUnitCategory]}}
|
||||
</view> -->
|
||||
<view
|
||||
class="position_right"
|
||||
v-if="info.reviewState === 1"
|
||||
@click="
|
||||
navTo(
|
||||
`/pages/projectInfo/sub/inviteList?jobType=${info.jobType}&id=${info.id}&createUserId=${info.createUserId}`
|
||||
)
|
||||
"
|
||||
>
|
||||
邀请用户
|
||||
</view>
|
||||
<view class="position_right" v-if="info.reviewState === 1"
|
||||
@click="navTo(`/pages/projectInfo/sub/inviteList?jobType=${info.jobType}&id=${info.id}&createUserId=${info.createUserId}`)">
|
||||
邀请用户</view>
|
||||
</view>
|
||||
<view class="head">
|
||||
<view class="proname proneed">岗位要求</view>
|
||||
<view class="proname proneed">
|
||||
岗位要求
|
||||
</view>
|
||||
<!-- <view class="prolist">
|
||||
<view class="protype">
|
||||
年龄要求:{{age[info.ageDesc]}}
|
||||
</view>
|
||||
</view> -->
|
||||
<view class="prolist">
|
||||
<view class="protype">年龄要求:{{ age[info.ageDesc] || '暂无' }}</view>
|
||||
<view class="protype">
|
||||
年龄要求:{{age[info.ageDesc] || '暂无'}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="prolist">
|
||||
<view class="protype">学历要求:{{ education[info.education] || '暂无' }}</view>
|
||||
<view class="protype">
|
||||
学历要求:{{education[info.education] || '暂无'}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="prolist">
|
||||
<view class="protype">经验要求:{{ info.experienceDesc || '暂无' }}</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 proint" style="font-weight: bold;color:#333;">
|
||||
岗位描述
|
||||
</view>
|
||||
<view class="prolist description">
|
||||
{{ info.jobDescription }}
|
||||
{{info.jobDescription}}
|
||||
</view>
|
||||
<!-- 技能标签 start -->
|
||||
<view class="ask">
|
||||
<view class="askList" v-for="(item, index) in skillNames" :key="index">
|
||||
{{ item }}
|
||||
<view class="askList" v-for="(item,index) in skillNames" :key="index">
|
||||
{{item}}
|
||||
</view>
|
||||
</view>
|
||||
<!-- 技能标签 end -->
|
||||
<view v-if="info.jobSources" style="color: red" class="prolist">来源:{{ info.jobSources || '暂无' }}</view>
|
||||
<view v-if="info.jobSources" class="prolist">
|
||||
来源:{{info.jobSources || '暂无'}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="head">
|
||||
<!-- <view class="proname proneed">
|
||||
@@ -71,17 +81,16 @@
|
||||
<!-- <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 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="proname proneed">
|
||||
地址
|
||||
</view>
|
||||
<!-- <view class="prolist">
|
||||
<view class="protype">
|
||||
联系人:{{info.callName}}
|
||||
@@ -93,117 +102,78 @@
|
||||
<!-- <view class="prolist" v-if="info.callNumber">
|
||||
座机号:{{info.callNumber}}
|
||||
</view> -->
|
||||
<view class="prolist">注册地址:{{ info.cityId || '暂无' }}</view>
|
||||
<view class="prolist">工作地址:{{ info.address || '暂无' }}</view>
|
||||
<view class="prolist">
|
||||
注册地址:{{ info.cityId || '暂无'}}
|
||||
</view>
|
||||
<view class="prolist">
|
||||
工作地址:{{info.address || '暂无'}}
|
||||
</view>
|
||||
<view class="map">
|
||||
<super-map
|
||||
ref="uMap"
|
||||
style="width: 100%; height: 100%"
|
||||
:latitude="latitude"
|
||||
:longitude="longitude"
|
||||
:open="true"
|
||||
:zoom="14"
|
||||
:min-zoom="10"
|
||||
:max-zoom="20"
|
||||
@regionchange="show = false"
|
||||
:init="false"
|
||||
:MapUrl="$config.supperMap"
|
||||
:flag-tip="false"
|
||||
></super-map>
|
||||
<!-- <super-map ref="uMap" style="width: 100%;height: 100%;" :latitude="latitude" :longitude="longitude"
|
||||
:open="true" :zoom="14" :min-zoom="10" :max-zoom="20" @regionchange="show = false" :init="false"
|
||||
:MapUrl="$config.supperMap" :flag-tip="false"></super-map> -->
|
||||
<zhuo-tianditu-MultiPoint-Mapper ref="tMap" :api-key="$config.apiKey"></zhuo-tianditu-MultiPoint-Mapper>
|
||||
</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 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 @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 @click="submit" class="bottombtn flexbtn" style="border-radius: 45rpx;">
|
||||
申请
|
||||
</view>
|
||||
<view class="btn" v-if="!jobType && isShow !== '0' && status !== 0">
|
||||
</view>
|
||||
<view class="btn" v-if="!jobType && 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 @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 @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 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>
|
||||
<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 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 || '联系人' }} :
|
||||
<span style="color: blue" v-if="info.callTel" @click="tools.onDialingPhoneNumber(info.callTel)">
|
||||
{{ info.callTel }}
|
||||
</span>
|
||||
<span style="color: #333333" v-else>无联系方式</span>
|
||||
<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"
|
||||
@click="tools.onDialingPhoneNumber(info.callTel)">{{ info.callTel }}</span>
|
||||
</view>
|
||||
</view>
|
||||
</u-popup>
|
||||
@@ -211,7 +181,7 @@
|
||||
|
||||
<view v-else-if="showCode" class="codeSealBox">
|
||||
<!-- #ifdef H5 || APP-PLUS -->
|
||||
<view class="closeCode" @click="closeShowCode" style="top: 124rpx">+</view>
|
||||
<view class="closeCode" @click="closeShowCode" style="top: 124rpx;">+</view>
|
||||
<!-- #endif -->
|
||||
<!-- #ifdef MP-WEIXIN -->
|
||||
<view class="closeCode" @click="closeShowCode">+</view>
|
||||
@@ -221,26 +191,46 @@
|
||||
<view class="name">签名密码</view>
|
||||
<view class="tip">6位数字签名密码</view>
|
||||
</view>
|
||||
<view style="height: 36px"></view>
|
||||
<view style="height: 36px;"></view>
|
||||
<valid-code ref="validCode" @finish="getInpCode" :maxlength="maxlength"></valid-code>
|
||||
<view style="height: 36px"></view>
|
||||
<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, getPhoneCountNumber } 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';
|
||||
import { getuserrecruitDetailApp } from '@/api/userrecruit.js';
|
||||
export default {
|
||||
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'
|
||||
import {
|
||||
getuserrecruitDetailApp
|
||||
} from '@/api/userrecruit.js'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
...dictionary,
|
||||
@@ -253,18 +243,15 @@ export default {
|
||||
loading: false,
|
||||
latitude: 31.126855, //中心点
|
||||
longitude: 104.397894,
|
||||
covers: [
|
||||
{
|
||||
//marker标记位置
|
||||
covers: [{ //marker标记位置
|
||||
id: 0,
|
||||
latitude: 0,
|
||||
longitude: 0,
|
||||
// width:30,
|
||||
// height:30,
|
||||
iconPath: '../../static/img/location.png',
|
||||
},
|
||||
],
|
||||
missionNo: '',
|
||||
iconPath: '../../static/img/location.png'
|
||||
}],
|
||||
missionNo: "",
|
||||
isShow: '',
|
||||
type: '',
|
||||
id: '',
|
||||
@@ -272,15 +259,14 @@ export default {
|
||||
maxlength: 6,
|
||||
collectStatus: 0, // 收藏状态
|
||||
showPopUp: false,
|
||||
jobType: null,
|
||||
};
|
||||
jobType: null
|
||||
}
|
||||
},
|
||||
components: {
|
||||
uniMask,
|
||||
validCode,
|
||||
validCode
|
||||
},
|
||||
onLoad: function (option) {
|
||||
//option为object类型,会序列化上个页面传递的参数
|
||||
onLoad: function(option) { //option为object类型,会序列化上个页面传递的参数
|
||||
// this.$store.dispatch('setAutograph')
|
||||
if (option.workId) {
|
||||
this.workId = decodeURIComponent(option.workId);
|
||||
@@ -295,49 +281,32 @@ export default {
|
||||
this.id = option.id; //消息id
|
||||
}
|
||||
if (option.jobType) {
|
||||
this.jobType = option.jobType;
|
||||
this.jobType = option.jobType
|
||||
}
|
||||
},
|
||||
onShow: function () {
|
||||
this.showDetail = true;
|
||||
onShow: function() {
|
||||
this.showDetail = true
|
||||
this.getData();
|
||||
|
||||
},
|
||||
onShareAppMessage(obj) {
|
||||
return {
|
||||
title: this.info.missionTitle,
|
||||
path: `/pages/projectInfo/projectInfo?missionNo=${this.info.missionNo}`,
|
||||
};
|
||||
path: `/pages/projectInfo/projectInfo?missionNo=${this.info.missionNo}`
|
||||
}
|
||||
},
|
||||
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) => {
|
||||
updateCollectStatus(this.info.id, status, 2).then(res => {
|
||||
if (res.data.code == 200) {
|
||||
this.getCollectStatus();
|
||||
this.getCollectStatus()
|
||||
}
|
||||
});
|
||||
})
|
||||
},
|
||||
async callPhone() {
|
||||
getPhoneCountNumber();
|
||||
if (!this.$api.haslogin()) {
|
||||
GoLogin();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this.$api.hasResume()) {
|
||||
this.navTo('/pageMy/my/resume/index', true);
|
||||
return;
|
||||
}
|
||||
callPhone() {
|
||||
this.showPopUp = true;
|
||||
},
|
||||
closePopUp() {
|
||||
@@ -345,22 +314,22 @@ export default {
|
||||
},
|
||||
// 获取收藏状态
|
||||
getCollectStatus() {
|
||||
getCollectState(this.info.id, 2).then((res) => {
|
||||
getCollectState(this.info.id, 2).then(res => {
|
||||
// 0 未收藏,1 已收藏
|
||||
// console.log(res)
|
||||
this.collectStatus = res.data.data;
|
||||
});
|
||||
})
|
||||
},
|
||||
async getData() {
|
||||
const self = this;
|
||||
let resData = null;
|
||||
let resData = null
|
||||
if (this.jobType) {
|
||||
resData = await getuserrecruitDetailApp({
|
||||
id: this.id,
|
||||
jobType: this.jobType,
|
||||
});
|
||||
jobType: this.jobType
|
||||
})
|
||||
} else {
|
||||
resData = await userrecruitDetail(self.workId);
|
||||
resData = await userrecruitDetail(self.workId)
|
||||
}
|
||||
if (resData.data?.code === 200) {
|
||||
self.info = resData.data.data;
|
||||
@@ -370,44 +339,47 @@ export default {
|
||||
self.longitude = self.info.lon;
|
||||
self.covers[0].latitude = self.info.lat;
|
||||
self.covers[0].longitude = self.info.lon;
|
||||
if (!(self.info.lat && self.info.lat === -1)) {
|
||||
self.$refs.uMap.initMap({
|
||||
this.$refs.tMap.open(self.info.lon, self.info.lat)
|
||||
if (self.info.lon > 1 && self.info.lat > 1) {
|
||||
self.$nextTick(() => {
|
||||
self.$api.sleep(1000).then(() => {
|
||||
this.$refs.tMap.addFeature([{
|
||||
id: self.info.id,
|
||||
label: self.info.jobName,
|
||||
lat: self.info.lat,
|
||||
lon: self.info.lon,
|
||||
});
|
||||
}])
|
||||
})
|
||||
})
|
||||
}
|
||||
self.showDetail = true;
|
||||
if (!this.seeDeatil) {
|
||||
self.getCollectStatus();
|
||||
if (self.type === 1) {
|
||||
// 设置已读
|
||||
setRead(self.id).then((res) => {
|
||||
self.$store.commit('SET_READ');
|
||||
});
|
||||
setRead(self.id).then(res => {
|
||||
self.$store.commit("SET_READ");
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
submit: function () {
|
||||
if (!this.$api.haslogin()) {
|
||||
GoLogin();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this.$api.hasResume()) {
|
||||
this.navTo('/pageMy/my/resume/index', true);
|
||||
return;
|
||||
}
|
||||
const _that = this;
|
||||
submit: function() {
|
||||
const _that = this
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '请确认申请,申请后不能撤销',
|
||||
success: function (res) {
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
if (_that.loading) return;
|
||||
const auth = _that.auth;
|
||||
const contractOn = _that.info.contractOn;
|
||||
const sealOk = _that.autograph && _that.autograph.data && _that.autograph.data.signSrcUrl;
|
||||
if (!_that.$store.state.user.token) {
|
||||
GoLogin()
|
||||
return
|
||||
}
|
||||
if (_that.loading) return
|
||||
const auth = _that.auth
|
||||
const contractOn = _that.info.contractOn
|
||||
const sealOk = _that.autograph && _that.autograph.data && _that.autograph
|
||||
.data.signSrcUrl
|
||||
// if (sealOk) {
|
||||
// console.log('直接抢任务')
|
||||
// this.submitTask()
|
||||
@@ -418,91 +390,86 @@ export default {
|
||||
// this.goSign(1)
|
||||
// } else
|
||||
if (contractOn && !sealOk) {
|
||||
_that.goSign(2);
|
||||
_that.goSign(2)
|
||||
} else if (sealOk && contractOn) {
|
||||
_that.nextBtn = true;
|
||||
_that.lookMask();
|
||||
_that.nextBtn = true
|
||||
_that.lookMask()
|
||||
} else {
|
||||
_that.submitTask();
|
||||
_that.submitTask()
|
||||
}
|
||||
} else if (res.cancel) {
|
||||
_that.$api.msg('取消申请');
|
||||
_that.$api.msg('取消申请')
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
},
|
||||
// 查看合同
|
||||
lookMask() {
|
||||
this.maskShow = true;
|
||||
this.maskShow = true
|
||||
},
|
||||
// 岗位申请
|
||||
submitTask() {
|
||||
submit(this.missionNo, 2).then(
|
||||
(res) => {
|
||||
uni.hideLoading();
|
||||
submit(this.missionNo, 2).then(res => {
|
||||
uni.hideLoading()
|
||||
uni.showToast({
|
||||
title: '操作成功',
|
||||
icon: 'none',
|
||||
icon: 'none'
|
||||
});
|
||||
this.status = null;
|
||||
this.loading = false;
|
||||
},
|
||||
(error) => {
|
||||
this.loading = false;
|
||||
}
|
||||
);
|
||||
this.loading = false
|
||||
}, error => {
|
||||
this.loading = false
|
||||
});
|
||||
},
|
||||
// 步骤
|
||||
goSign(active) {
|
||||
uni.navigateTo({
|
||||
url: `/pages/projectInfo/signContract?active=${active}`,
|
||||
});
|
||||
url: `/pages/projectInfo/signContract?active=${active}`
|
||||
})
|
||||
},
|
||||
// 关闭弹窗
|
||||
close() {
|
||||
this.maskShow = false;
|
||||
this.maskShow = false
|
||||
},
|
||||
// 合同下一步
|
||||
next() {
|
||||
this.maskShow = false;
|
||||
this.showDetail = false;
|
||||
this.showCode = true;
|
||||
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();
|
||||
title: "请求中..."
|
||||
})
|
||||
this.loading = true
|
||||
var obj = {
|
||||
pass: password
|
||||
}
|
||||
checkPass(obj).then(res => {
|
||||
this.submitTask()
|
||||
this.closeShowCode()
|
||||
}).catch(err => {
|
||||
this.loading = false
|
||||
})
|
||||
.catch((err) => {
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
// 关闭签名密码弹窗
|
||||
closeShowCode() {
|
||||
this.showCode = false;
|
||||
this.showDetail = true;
|
||||
this.showCode = false
|
||||
this.showDetail = true
|
||||
},
|
||||
// 忘记密码
|
||||
forget() {
|
||||
uni.navigateTo({
|
||||
url: `/pageMy/setUserBase/seal/forget?forget=true`,
|
||||
});
|
||||
},
|
||||
url: `/pageMy/setUserBase/seal/forget?forget=true`
|
||||
})
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['auth', 'autograph', 'area']),
|
||||
skillNames() {
|
||||
if (this.info.skillNames) {
|
||||
return this.info.skillNames.split(',');
|
||||
return this.info.skillNames.split(',')
|
||||
}
|
||||
},
|
||||
// cityNamed() {
|
||||
@@ -513,19 +480,19 @@ export default {
|
||||
// return '无'
|
||||
// }
|
||||
// }
|
||||
},
|
||||
};
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.codeSealBox {
|
||||
.codeSealBox {
|
||||
padding: 285rpx 72rpx 0 72rpx;
|
||||
|
||||
.closeCode {
|
||||
position: absolute;
|
||||
right: 36rpx;
|
||||
top: 120rpx;
|
||||
color: #1b66ff;
|
||||
color: #1B66FF;
|
||||
transform: rotate(45deg);
|
||||
font-size: 40px;
|
||||
}
|
||||
@@ -559,14 +526,15 @@ export default {
|
||||
font-size: 28rpx;
|
||||
font-family: PingFangSC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #5aa0fa;
|
||||
color: #5AA0FA;
|
||||
line-height: 38rpx;
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
|
||||
.contractMask {
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
.contractMask {
|
||||
background-color: #FFFFFF;
|
||||
margin: 30rpx;
|
||||
position: relative;
|
||||
border-radius: 4px;
|
||||
@@ -576,7 +544,7 @@ export default {
|
||||
.close {
|
||||
width: 23px;
|
||||
height: 23px;
|
||||
color: #1b66ff;
|
||||
color: #1B66FF;
|
||||
position: fixed;
|
||||
right: 60rpx;
|
||||
top: 60rpx;
|
||||
@@ -592,24 +560,24 @@ export default {
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
text-align: center;
|
||||
background: #1b66ff;
|
||||
background: #1B66FF;
|
||||
font-size: 36rpx;
|
||||
font-weight: 400;
|
||||
color: #ffffff;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.lookContract {
|
||||
.lookContract {
|
||||
width: 30%;
|
||||
margin-right: 30rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.flexbtn {
|
||||
.flexbtn {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.bottombtn {
|
||||
background-color: #1b66ff;
|
||||
.bottombtn {
|
||||
background-color: #1B66FF;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
border-radius: 10rpx;
|
||||
@@ -617,9 +585,9 @@ export default {
|
||||
font-size: 32rpx;
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.btn {
|
||||
.btn {
|
||||
background-color: #fefefe;
|
||||
width: 690rpx;
|
||||
padding: 30rpx;
|
||||
@@ -628,19 +596,19 @@ export default {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
|
||||
.disabledBtn {
|
||||
.disabledBtn {
|
||||
background-color: #c8c9cc;
|
||||
}
|
||||
}
|
||||
|
||||
.map {
|
||||
.map {
|
||||
width: 100%;
|
||||
height: 350rpx;
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.askList {
|
||||
.askList {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 24rpx;
|
||||
color: #666666;
|
||||
@@ -648,9 +616,9 @@ export default {
|
||||
padding: 5rpx 15rpx;
|
||||
margin-right: 10rpx;
|
||||
margin-top: 15rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.ask {
|
||||
.ask {
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
@@ -658,29 +626,31 @@ export default {
|
||||
flex-wrap: wrap;
|
||||
justify-content: flex-start;
|
||||
margin: 20rpx 0;
|
||||
}
|
||||
|
||||
.proint {
|
||||
}
|
||||
|
||||
.proint {
|
||||
margin-top: 30rpx;
|
||||
font-size: 30rpx !important;
|
||||
}
|
||||
}
|
||||
|
||||
.proneed {
|
||||
.proneed {
|
||||
font-size: 32rpx !important;
|
||||
}
|
||||
|
||||
.fee {
|
||||
}
|
||||
|
||||
.fee {
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 32rpx;
|
||||
color: #f46161;
|
||||
color: #F46161;
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.protype {
|
||||
.protype {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
.prolist {
|
||||
.prolist {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 28rpx;
|
||||
color: #666666;
|
||||
@@ -689,9 +659,9 @@ export default {
|
||||
justify-content: space-between;
|
||||
text-align: left;
|
||||
padding: 5rpx 0;
|
||||
}
|
||||
}
|
||||
|
||||
.proname {
|
||||
.proname {
|
||||
font-weight: bold;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 40rpx;
|
||||
@@ -699,29 +669,29 @@ export default {
|
||||
width: 90%;
|
||||
overflow: hidden;
|
||||
padding-bottom: 20rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.head {
|
||||
.head {
|
||||
padding: 30rpx;
|
||||
background: #fefefe;
|
||||
border-bottom: 20rpx solid #f6f6f6;
|
||||
}
|
||||
}
|
||||
|
||||
.description {
|
||||
.description {
|
||||
word-break: break-all;
|
||||
white-space: pre-line;
|
||||
}
|
||||
}
|
||||
|
||||
.head {
|
||||
.head {
|
||||
position: relative;
|
||||
|
||||
.position_right {
|
||||
position: absolute;
|
||||
right: 24rpx;
|
||||
top: 30rpx;
|
||||
color: #ffffff;
|
||||
color: #FFFFFF;
|
||||
font-size: 24rpx;
|
||||
background-color: #1b66ff;
|
||||
background-color: #1B66FF;
|
||||
border-radius: 12rpx;
|
||||
padding: 10rpx 20rpx;
|
||||
}
|
||||
@@ -730,5 +700,5 @@ export default {
|
||||
background-color: #e8e8e8;
|
||||
color: #333333;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -2,56 +2,71 @@
|
||||
<view v-if="showDetail">
|
||||
<view class="head">
|
||||
<view class="proname">
|
||||
{{ info.jobName || '暂无' }}
|
||||
{{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 || '暂无' }}
|
||||
发布日期:{{dateFormat((info.stime)) || '暂无'}}
|
||||
</view>
|
||||
<view class="prolist">岗位工种:{{ info.skillNames || '暂无' }}</view>
|
||||
<view class="prolist">
|
||||
参考工资:{{ info.wage }}~{{ info.wageUpper }}{{ wageUnit[info.wageUnitCategory] }}
|
||||
招聘人数:{{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="proname proneed">
|
||||
岗位要求
|
||||
</view>
|
||||
<!-- <view class="prolist">
|
||||
<view class="protype">
|
||||
年龄要求:{{age[info.ageDesc]}}
|
||||
</view>
|
||||
</view> -->
|
||||
<view class="prolist">
|
||||
<view class="protype">年龄要求:{{ age[info.ageDesc] || '暂无' }}</view>
|
||||
<view class="protype">
|
||||
年龄要求:{{age[info.ageDesc] || '暂无'}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="prolist">
|
||||
<view class="protype">学历要求:{{ education[info.education] || '暂无' }}</view>
|
||||
<view class="protype">
|
||||
学历要求:{{education[info.education] || '暂无'}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="prolist">
|
||||
<view class="protype">经验要求:{{ info.experienceDesc || '暂无' }}</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 proint" style="font-weight: bold;color:#333;">
|
||||
岗位描述
|
||||
</view>
|
||||
<view class="prolist description">
|
||||
{{ info.jobDescription }}
|
||||
{{info.jobDescription}}
|
||||
</view>
|
||||
<!-- 技能标签 start -->
|
||||
<view class="ask">
|
||||
<view class="askList" v-for="(item, index) in skillNames" :key="index">
|
||||
{{ item }}
|
||||
<view class="askList" v-for="(item,index) in skillNames" :key="index">
|
||||
{{item}}
|
||||
</view>
|
||||
</view>
|
||||
<!-- 技能标签 end -->
|
||||
<view v-if="info.jobSources" style="color: red" class="prolist">来源:{{ info.jobSources || '暂无' }}</view>
|
||||
<view v-if="info.jobSources" class="prolist">
|
||||
来源:{{info.jobSources || '暂无'}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="head">
|
||||
<!-- <view class="proname proneed">
|
||||
@@ -63,17 +78,16 @@
|
||||
<!-- <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 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="proname proneed">
|
||||
地址
|
||||
</view>
|
||||
<!-- <view class="prolist">
|
||||
<view class="protype">
|
||||
联系人:{{info.callName}}
|
||||
@@ -85,120 +99,77 @@
|
||||
<!-- <view class="prolist" v-if="info.callNumber">
|
||||
座机号:{{info.callNumber}}
|
||||
</view> -->
|
||||
<view class="prolist">注册地址:{{ info.cityId || '暂无' }}</view>
|
||||
<view class="prolist">工作地址:{{ info.address || '暂无' }}</view>
|
||||
<view class="prolist">
|
||||
注册地址:{{ info.cityId || '暂无'}}
|
||||
</view>
|
||||
<view class="prolist">
|
||||
工作地址:{{info.address || '暂无'}}
|
||||
</view>
|
||||
<view class="map">
|
||||
<super-map
|
||||
ref="uMap"
|
||||
style="width: 100%; height: 100%"
|
||||
:latitude="latitude"
|
||||
:longitude="longitude"
|
||||
:open="true"
|
||||
:zoom="14"
|
||||
:min-zoom="10"
|
||||
:max-zoom="20"
|
||||
@regionchange="show = false"
|
||||
:init="false"
|
||||
:MapUrl="$config.supperMap"
|
||||
:flag-tip="false"
|
||||
></super-map>
|
||||
<!-- <super-map ref="uMap" style="width: 100%;height: 100%;" :latitude="latitude" :longitude="longitude"
|
||||
:open="true" :zoom="14" :min-zoom="10" :max-zoom="20" @regionchange="show = false" :init="false"
|
||||
:MapUrl="$config.supperMap" :flag-tip="false"></super-map> -->
|
||||
<zhuo-tianditu-MultiPoint-Mapper ref="tMap" :api-key="$config.apiKey"></zhuo-tianditu-MultiPoint-Mapper>
|
||||
</view>
|
||||
</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 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 @click="callPhone" class="bottombtn flexbtn"
|
||||
style="margin-right: 10rpx;background-color: #FBAD17;border-radius: 45rpx;">
|
||||
电话联系
|
||||
</view>
|
||||
<view @click="submit" class="bottombtn flexbtn">申请</view>
|
||||
<view @click="submit" class="bottombtn flexbtn" style="border-radius: 45rpx;">
|
||||
申请
|
||||
</view>
|
||||
<view class="btn" v-if="isShow !== '0' && status !== 0">
|
||||
</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 @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 @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 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>
|
||||
<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 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 || '联系人 ' }} :
|
||||
<span
|
||||
style="color: blue"
|
||||
v-if="info.callNumber"
|
||||
@click="tools.onDialingPhoneNumber(info.callNumber)"
|
||||
>
|
||||
{{ info.callNumber }}
|
||||
</span>
|
||||
<span style="color: #333333" v-else>无联系方式</span>
|
||||
<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"
|
||||
@click="tools.onDialingPhoneNumber(info.callTel)">{{ info.callTel }}</span>
|
||||
</view>
|
||||
</view>
|
||||
</u-popup>
|
||||
@@ -206,7 +177,7 @@
|
||||
|
||||
<view v-else-if="showCode" class="codeSealBox">
|
||||
<!-- #ifdef H5 || APP-PLUS -->
|
||||
<view class="closeCode" @click="closeShowCode" style="top: 124rpx">+</view>
|
||||
<view class="closeCode" @click="closeShowCode" style="top: 124rpx;">+</view>
|
||||
<!-- #endif -->
|
||||
<!-- #ifdef MP-WEIXIN -->
|
||||
<view class="closeCode" @click="closeShowCode">+</view>
|
||||
@@ -216,25 +187,43 @@
|
||||
<view class="name">签名密码</view>
|
||||
<view class="tip">6位数字签名密码</view>
|
||||
</view>
|
||||
<view style="height: 36px"></view>
|
||||
<view style="height: 36px;"></view>
|
||||
<valid-code ref="validCode" @finish="getInpCode" :maxlength="maxlength"></valid-code>
|
||||
<view style="height: 36px"></view>
|
||||
<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, getPhoneCountNumber } 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 {
|
||||
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,
|
||||
@@ -247,18 +236,15 @@ export default {
|
||||
loading: false,
|
||||
latitude: 31.126855, //中心点
|
||||
longitude: 104.397894,
|
||||
covers: [
|
||||
{
|
||||
//marker标记位置
|
||||
covers: [{ //marker标记位置
|
||||
id: 0,
|
||||
latitude: 0,
|
||||
longitude: 0,
|
||||
// width:30,
|
||||
// height:30,
|
||||
iconPath: '../../static/img/location.png',
|
||||
},
|
||||
],
|
||||
missionNo: '',
|
||||
iconPath: '../../static/img/location.png'
|
||||
}],
|
||||
missionNo: "",
|
||||
isShow: '',
|
||||
type: '',
|
||||
id: '',
|
||||
@@ -266,14 +252,13 @@ export default {
|
||||
maxlength: 6,
|
||||
collectStatus: 0, // 收藏状态
|
||||
showPopUp: false,
|
||||
};
|
||||
}
|
||||
},
|
||||
components: {
|
||||
uniMask,
|
||||
validCode,
|
||||
validCode
|
||||
},
|
||||
onLoad: function (option) {
|
||||
//option为object类型,会序列化上个页面传递的参数
|
||||
onLoad: function(option) { //option为object类型,会序列化上个页面传递的参数
|
||||
// this.$store.dispatch('setAutograph')
|
||||
if (option.workId) {
|
||||
this.workId = decodeURIComponent(option.workId);
|
||||
@@ -288,49 +273,32 @@ export default {
|
||||
this.id = option.id; //消息id
|
||||
}
|
||||
},
|
||||
onShow: function () {
|
||||
this.showDetail = true;
|
||||
mounted() {},
|
||||
onShow: function() {
|
||||
this.showDetail = true
|
||||
this.getData();
|
||||
setTimeout(() => {
|
||||
console.log(this.area.dic, this.info);
|
||||
}, 1000);
|
||||
console.log(this.area.dic, this.info)
|
||||
}, 1000)
|
||||
},
|
||||
onShareAppMessage(obj) {
|
||||
return {
|
||||
title: this.info.missionTitle,
|
||||
path: `/pages/projectInfo/projectInfo?missionNo=${this.info.missionNo}`,
|
||||
};
|
||||
path: `/pages/projectInfo/projectInfo?missionNo=${this.info.missionNo}`
|
||||
}
|
||||
},
|
||||
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) => {
|
||||
updateCollectStatus(this.info.id, status, 1).then(res => {
|
||||
if (res.data.code == 200) {
|
||||
this.getCollectStatus();
|
||||
this.getCollectStatus()
|
||||
}
|
||||
});
|
||||
})
|
||||
},
|
||||
async callPhone() {
|
||||
getPhoneCountNumber();
|
||||
if (!this.$api.haslogin()) {
|
||||
GoLogin();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this.$api.hasResume()) {
|
||||
this.navTo('/pageMy/my/resume/index', true);
|
||||
return;
|
||||
}
|
||||
callPhone() {
|
||||
this.showPopUp = true;
|
||||
},
|
||||
closePopUp() {
|
||||
@@ -338,64 +306,64 @@ export default {
|
||||
},
|
||||
// 获取收藏状态
|
||||
getCollectStatus() {
|
||||
if (!this.$api.haslogin()) return;
|
||||
getCollectState(this.info.id, 1).then((res) => {
|
||||
getCollectState(this.info.id, 1).then(res => {
|
||||
// 0 未收藏,1 已收藏
|
||||
// console.log(res)
|
||||
this.collectStatus = res.data.data;
|
||||
});
|
||||
})
|
||||
},
|
||||
getData: function () {
|
||||
getData: function() {
|
||||
const self = this;
|
||||
workDetail(self.workId).then(
|
||||
(res) => {
|
||||
workDetail(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;
|
||||
if (!(self.info.lat && self.info.lat === -1)) {
|
||||
self.$refs.uMap.initMap({
|
||||
this.$refs.tMap.open(self.info.lon, self.info.lat)
|
||||
|
||||
// self.latitude = self.info.lat;
|
||||
// self.longitude = self.info.lon;
|
||||
// self.covers[0].latitude = self.info.lat;
|
||||
// self.covers[0].longitude = self.info.lon;
|
||||
if (self.info.lon > 1 && self.info.lat > 1) {
|
||||
self.$nextTick(() => {
|
||||
self.$api.sleep(1000).then(() => {
|
||||
this.$refs.tMap.addFeature([{
|
||||
id: self.info.id,
|
||||
label: self.info.jobName,
|
||||
lat: self.info.lat,
|
||||
lon: self.info.lon,
|
||||
});
|
||||
}])
|
||||
})
|
||||
})
|
||||
}
|
||||
self.showDetail = true;
|
||||
self.getCollectStatus();
|
||||
if (self.type === 1) {
|
||||
// 设置已读
|
||||
setRead(self.id).then((res) => {
|
||||
self.$store.commit('SET_READ');
|
||||
});
|
||||
setRead(self.id).then(res => {
|
||||
self.$store.commit("SET_READ");
|
||||
})
|
||||
}
|
||||
},
|
||||
(error) => {
|
||||
}, error => {
|
||||
console.log(error);
|
||||
}
|
||||
);
|
||||
});
|
||||
},
|
||||
submit: function () {
|
||||
if (!this.$api.haslogin()) {
|
||||
GoLogin();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this.$api.hasResume()) {
|
||||
this.navTo('/pageMy/my/resume/index', true);
|
||||
return;
|
||||
}
|
||||
const _that = this;
|
||||
submit: function() {
|
||||
const _that = this
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '请确认申请,申请后不能撤销',
|
||||
success: function (res) {
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
if (_that.loading) return;
|
||||
const auth = _that.auth;
|
||||
const contractOn = _that.info.contractOn;
|
||||
const sealOk = _that.autograph && _that.autograph.data && _that.autograph.data.signSrcUrl;
|
||||
if (!_that.$store.state.user.token) {
|
||||
GoLogin()
|
||||
return
|
||||
}
|
||||
if (_that.loading) return
|
||||
const auth = _that.auth
|
||||
const contractOn = _that.info.contractOn
|
||||
const sealOk = _that.autograph && _that.autograph.data && _that.autograph
|
||||
.data.signSrcUrl
|
||||
// if (sealOk) {
|
||||
// console.log('直接抢任务')
|
||||
// this.submitTask()
|
||||
@@ -406,91 +374,86 @@ export default {
|
||||
// this.goSign(1)
|
||||
// } else
|
||||
if (contractOn && !sealOk) {
|
||||
_that.goSign(2);
|
||||
_that.goSign(2)
|
||||
} else if (sealOk && contractOn) {
|
||||
_that.nextBtn = true;
|
||||
_that.lookMask();
|
||||
_that.nextBtn = true
|
||||
_that.lookMask()
|
||||
} else {
|
||||
_that.submitTask();
|
||||
_that.submitTask()
|
||||
}
|
||||
} else if (res.cancel) {
|
||||
_that.$api.msg('取消申请');
|
||||
_that.$api.msg('取消申请')
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
},
|
||||
// 查看合同
|
||||
lookMask() {
|
||||
this.maskShow = true;
|
||||
this.maskShow = true
|
||||
},
|
||||
// 岗位申请
|
||||
submitTask() {
|
||||
submit(this.missionNo, 1).then(
|
||||
(res) => {
|
||||
uni.hideLoading();
|
||||
submit(this.missionNo, 1).then(res => {
|
||||
uni.hideLoading()
|
||||
uni.showToast({
|
||||
title: '操作成功',
|
||||
icon: 'none',
|
||||
icon: 'none'
|
||||
});
|
||||
this.status = null;
|
||||
this.loading = false;
|
||||
},
|
||||
(error) => {
|
||||
this.loading = false;
|
||||
}
|
||||
);
|
||||
this.loading = false
|
||||
}, error => {
|
||||
this.loading = false
|
||||
});
|
||||
},
|
||||
// 步骤
|
||||
goSign(active) {
|
||||
uni.navigateTo({
|
||||
url: `/pages/projectInfo/signContract?active=${active}`,
|
||||
});
|
||||
url: `/pages/projectInfo/signContract?active=${active}`
|
||||
})
|
||||
},
|
||||
// 关闭弹窗
|
||||
close() {
|
||||
this.maskShow = false;
|
||||
this.maskShow = false
|
||||
},
|
||||
// 合同下一步
|
||||
next() {
|
||||
this.maskShow = false;
|
||||
this.showDetail = false;
|
||||
this.showCode = true;
|
||||
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();
|
||||
title: "请求中..."
|
||||
})
|
||||
this.loading = true
|
||||
var obj = {
|
||||
pass: password
|
||||
}
|
||||
checkPass(obj).then(res => {
|
||||
this.submitTask()
|
||||
this.closeShowCode()
|
||||
}).catch(err => {
|
||||
this.loading = false
|
||||
})
|
||||
.catch((err) => {
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
// 关闭签名密码弹窗
|
||||
closeShowCode() {
|
||||
this.showCode = false;
|
||||
this.showDetail = true;
|
||||
this.showCode = false
|
||||
this.showDetail = true
|
||||
},
|
||||
// 忘记密码
|
||||
forget() {
|
||||
uni.navigateTo({
|
||||
url: `/pageMy/setUserBase/seal/forget?forget=true`,
|
||||
});
|
||||
},
|
||||
url: `/pageMy/setUserBase/seal/forget?forget=true`
|
||||
})
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['auth', 'autograph', 'area']),
|
||||
skillNames() {
|
||||
if (this.info.skillNames) {
|
||||
return this.info.skillNames.split(',');
|
||||
return this.info.skillNames.split(',')
|
||||
}
|
||||
},
|
||||
// cityNamed() {
|
||||
@@ -501,19 +464,19 @@ export default {
|
||||
// return '无'
|
||||
// }
|
||||
// }
|
||||
},
|
||||
};
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.codeSealBox {
|
||||
.codeSealBox {
|
||||
padding: 285rpx 72rpx 0 72rpx;
|
||||
|
||||
.closeCode {
|
||||
position: absolute;
|
||||
right: 36rpx;
|
||||
top: 120rpx;
|
||||
color: #1b66ff;
|
||||
color: #1B66FF;
|
||||
transform: rotate(45deg);
|
||||
font-size: 40px;
|
||||
}
|
||||
@@ -547,14 +510,15 @@ export default {
|
||||
font-size: 28rpx;
|
||||
font-family: PingFangSC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #5aa0fa;
|
||||
color: #5AA0FA;
|
||||
line-height: 38rpx;
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
|
||||
.contractMask {
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
.contractMask {
|
||||
background-color: #FFFFFF;
|
||||
margin: 30rpx;
|
||||
position: relative;
|
||||
border-radius: 4px;
|
||||
@@ -564,7 +528,7 @@ export default {
|
||||
.close {
|
||||
width: 23px;
|
||||
height: 23px;
|
||||
color: #1b66ff;
|
||||
color: #1B66FF;
|
||||
position: fixed;
|
||||
right: 60rpx;
|
||||
top: 60rpx;
|
||||
@@ -580,34 +544,34 @@ export default {
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
text-align: center;
|
||||
background: #1b66ff;
|
||||
background: #1B66FF;
|
||||
font-size: 36rpx;
|
||||
font-weight: 400;
|
||||
color: #ffffff;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.lookContract {
|
||||
.lookContract {
|
||||
width: 30%;
|
||||
margin-right: 30rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.flexbtn {
|
||||
.flexbtn {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.bottombtn {
|
||||
background-color: #1b66ff;
|
||||
.bottombtn {
|
||||
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 {
|
||||
.btn {
|
||||
background-color: #fefefe;
|
||||
width: 690rpx;
|
||||
padding: 30rpx;
|
||||
@@ -616,19 +580,19 @@ export default {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
|
||||
.disabledBtn {
|
||||
.disabledBtn {
|
||||
background-color: #c8c9cc;
|
||||
}
|
||||
}
|
||||
|
||||
.map {
|
||||
.map {
|
||||
width: 100%;
|
||||
height: 350rpx;
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.askList {
|
||||
.askList {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 24rpx;
|
||||
color: #666666;
|
||||
@@ -636,9 +600,9 @@ export default {
|
||||
padding: 5rpx 15rpx;
|
||||
margin-right: 10rpx;
|
||||
margin-top: 15rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.ask {
|
||||
.ask {
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
@@ -646,29 +610,31 @@ export default {
|
||||
flex-wrap: wrap;
|
||||
justify-content: flex-start;
|
||||
margin: 20rpx 0;
|
||||
}
|
||||
|
||||
.proint {
|
||||
}
|
||||
|
||||
.proint {
|
||||
margin-top: 30rpx;
|
||||
font-size: 30rpx !important;
|
||||
}
|
||||
}
|
||||
|
||||
.proneed {
|
||||
.proneed {
|
||||
font-size: 32rpx !important;
|
||||
}
|
||||
|
||||
.fee {
|
||||
}
|
||||
|
||||
.fee {
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 32rpx;
|
||||
color: #f46161;
|
||||
color: #F46161;
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.protype {
|
||||
.protype {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
.prolist {
|
||||
.prolist {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 28rpx;
|
||||
color: #666666;
|
||||
@@ -677,9 +643,9 @@ export default {
|
||||
justify-content: space-between;
|
||||
text-align: left;
|
||||
padding: 5rpx 0;
|
||||
}
|
||||
}
|
||||
|
||||
.proname {
|
||||
.proname {
|
||||
font-weight: bold;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 40rpx;
|
||||
@@ -687,16 +653,16 @@ export default {
|
||||
width: 90%;
|
||||
overflow: hidden;
|
||||
padding-bottom: 20rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.head {
|
||||
.head {
|
||||
padding: 30rpx;
|
||||
background: #fefefe;
|
||||
border-bottom: 20rpx solid #f6f6f6;
|
||||
}
|
||||
}
|
||||
|
||||
.description {
|
||||
.description {
|
||||
word-break: break-all;
|
||||
white-space: pre-line;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -31,15 +31,11 @@
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
idNumber: (state) => {
|
||||
console.log(state.auth.authInfo, 'auth.authInfo')
|
||||
return state.auth.authInfo.idNumber
|
||||
}
|
||||
idNumber: (state) => state.auth.authInfo.idNumber
|
||||
}),
|
||||
},
|
||||
methods: {
|
||||
next(type) {
|
||||
// return this.$api.msg('该功能正在完善中')
|
||||
switch (type) {
|
||||
case 0:
|
||||
this.isHaveCode(this.idNumber).then(() => {
|
||||
@@ -68,9 +64,6 @@
|
||||
if (resData.data.data.haveCode) {
|
||||
resolve()
|
||||
} else {
|
||||
|
||||
return this.$api.msg('系统正在建设中')
|
||||
|
||||
switch (resData.data.data.reviewStatus) {
|
||||
case 0:
|
||||
this.$api.msg('您提交的认证信息正在审核中')
|
||||
|
||||
@@ -26,14 +26,11 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import CustomTabbar from '@/components/CustomTabbar/custom_tabbar.vue'
|
||||
import CustomNavbar from '@/components/CustomNavbar/navbar.vue';
|
||||
import CustomTabbar from '@/components/CustomTabbar/custom_tabbar.vue'
|
||||
import CustomNavbar from '@/components/CustomNavbar/navbar.vue';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
CustomTabbar,
|
||||
CustomNavbar
|
||||
},
|
||||
export default {
|
||||
components: { CustomTabbar, CustomNavbar },
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
@@ -163,9 +160,9 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
onLoad() {},
|
||||
onLoad() { },
|
||||
onShow() {
|
||||
if (!this.$api.haslogin()) {
|
||||
if (!this.$store.state.user.token) {
|
||||
uni.redirectTo({
|
||||
url: "/pages/login/login"
|
||||
})
|
||||
@@ -215,16 +212,14 @@
|
||||
}
|
||||
},
|
||||
back() {
|
||||
uni.reLaunch({
|
||||
url: '/pages/my/my'
|
||||
})
|
||||
uni.reLaunch({ url: '/pages/my/my' })
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.content {
|
||||
.content {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 28rpx;
|
||||
color: #666666;
|
||||
@@ -234,49 +229,49 @@
|
||||
/*不换行*/
|
||||
text-overflow: ellipsis;
|
||||
/*超出部分文字以...显示*/
|
||||
}
|
||||
}
|
||||
|
||||
.head_right {
|
||||
.head_right {
|
||||
float: right;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 24rpx;
|
||||
color: #CCCCCC;
|
||||
}
|
||||
}
|
||||
|
||||
.head_left {
|
||||
.head_left {
|
||||
float: left;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 36rpx;
|
||||
color: #333333;
|
||||
}
|
||||
}
|
||||
|
||||
.head {
|
||||
.head {
|
||||
overflow: hidden;
|
||||
width: 560rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.newsListRight {
|
||||
.newsListRight {
|
||||
float: left;
|
||||
width: 560rpx;
|
||||
height: 50rpx;
|
||||
line-height: 50rpx;
|
||||
padding-left: 30rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.newsList .newsIcon {
|
||||
.newsList .newsIcon {
|
||||
position: relative;
|
||||
width: 100rpx;
|
||||
height: 100rpx;
|
||||
display: inline-block;
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
|
||||
.newsList image {
|
||||
.newsList image {
|
||||
width: 100rpx;
|
||||
height: 100rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.newsList .point {
|
||||
.newsList .point {
|
||||
position: absolute;
|
||||
top: 5rpx;
|
||||
right: 10rpx;
|
||||
@@ -284,9 +279,9 @@
|
||||
height: 20rpx;
|
||||
background: red;
|
||||
border-radius: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
.newsList {
|
||||
.newsList {
|
||||
border-bottom: 1rpx solid #dddddd;
|
||||
padding-bottom: 30rpx;
|
||||
padding-right: 30rpx;
|
||||
@@ -295,18 +290,18 @@
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
|
||||
.body {
|
||||
.body {
|
||||
background-color: #fefefe;
|
||||
/* padding-left: 30rpx;
|
||||
|
||||
width: 720rpx; */
|
||||
}
|
||||
}
|
||||
|
||||
page {
|
||||
page {
|
||||
background: #f6f6f6;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
@@ -16,33 +16,84 @@
|
||||
<u-form-item label="法人身份证号" labelWidth="100" prop="masterIdentity" borderBottom ref="item1">
|
||||
<u--input v-model="formData.masterIdentity" placeholder="请输入法人身份证号"></u--input>
|
||||
</u-form-item>
|
||||
<u-form-item label="所在地区" labelWidth="100" prop="cityId" borderBottom ref="item1"
|
||||
@click="showAddress = true; hideKeyboard()">
|
||||
<PickerList placeholder="请选择所在地区" :columns="dic.addressColumn" :visibel="showAddress"
|
||||
v-model="formData.cityId" @cancel="showAddress = false">
|
||||
</PickerList>
|
||||
<u-form-item
|
||||
label="所属机构"
|
||||
labelWidth="100"
|
||||
prop="cityId"
|
||||
borderBottom
|
||||
ref="item1"
|
||||
@click="
|
||||
showAddress = true;
|
||||
hideKeyboard();
|
||||
"
|
||||
>
|
||||
<PickerList
|
||||
placeholder="请选择所属机构"
|
||||
:columns="dic.addressColumn"
|
||||
:visibel="showAddress"
|
||||
v-model="formData.cityId"
|
||||
@cancel="showAddress = false"
|
||||
></PickerList>
|
||||
</u-form-item>
|
||||
<u-form-item label="详细地址" labelWidth="100" prop="companyAddress" borderBottom ref="item1">
|
||||
<u--input v-model="formData.companyAddress" placeholder="请输入详细地址"></u--input>
|
||||
</u-form-item>
|
||||
<u-form-item label="用工单位性质" labelWidth="100" prop="nature" borderBottom ref="item1"
|
||||
@click="showJobCompanyNature = true; hideKeyboard()">
|
||||
<PickerList placeholder="请选择企业性质" :columns="[xzDic]" :visibel="showJobCompanyNature"
|
||||
labelName="dictValue" valueName="dictKey" v-model="formData.nature"
|
||||
@cancel="showJobCompanyNature = false">
|
||||
</PickerList>
|
||||
<u-form-item
|
||||
label="用工单位性质"
|
||||
labelWidth="100"
|
||||
prop="nature"
|
||||
borderBottom
|
||||
ref="item1"
|
||||
@click="
|
||||
showJobCompanyNature = true;
|
||||
hideKeyboard();
|
||||
"
|
||||
>
|
||||
<PickerList
|
||||
placeholder="请选择企业性质"
|
||||
:columns="[xzDic]"
|
||||
:visibel="showJobCompanyNature"
|
||||
labelName="dictValue"
|
||||
valueName="dictKey"
|
||||
v-model="formData.nature"
|
||||
@cancel="showJobCompanyNature = false"
|
||||
></PickerList>
|
||||
</u-form-item>
|
||||
<u-form-item label="所属行业" labelWidth="100" prop="tradeId" borderBottom ref="item1"
|
||||
@click="showjobCompanyIndustry = true; hideKeyboard()">
|
||||
<PickerList placeholder="请选择所属行业" :columns="dic.tradeArr" labelName="name" valueName="id"
|
||||
:visibel="showjobCompanyIndustry" v-model="formData.tradeId"
|
||||
@cancel="showjobCompanyIndustry = false">
|
||||
</PickerList>
|
||||
<u-form-item
|
||||
label="所属行业"
|
||||
labelWidth="100"
|
||||
prop="tradeId"
|
||||
borderBottom
|
||||
ref="item1"
|
||||
@click="
|
||||
showjobCompanyIndustry = true;
|
||||
hideKeyboard();
|
||||
"
|
||||
>
|
||||
<PickerList
|
||||
placeholder="请选择所属行业"
|
||||
:columns="dic.tradeArr"
|
||||
labelName="name"
|
||||
valueName="id"
|
||||
:visibel="showjobCompanyIndustry"
|
||||
v-model="formData.tradeId"
|
||||
@cancel="showjobCompanyIndustry = false"
|
||||
></PickerList>
|
||||
</u-form-item>
|
||||
<u-form-item label="用工单位介绍" labelWidth="100" labelPosition="top" prop="companyDesc" borderBottom
|
||||
ref="item1">
|
||||
<u--textarea v-model="formData.companyDesc" placeholder="请输入用工单位介绍" count
|
||||
maxlength="200"></u--textarea>
|
||||
<u-form-item
|
||||
label="用工单位介绍"
|
||||
labelWidth="100"
|
||||
labelPosition="top"
|
||||
prop="companyDesc"
|
||||
borderBottom
|
||||
ref="item1"
|
||||
>
|
||||
<u--textarea
|
||||
v-model="formData.companyDesc"
|
||||
placeholder="请输入用工单位介绍"
|
||||
count
|
||||
maxlength="200"
|
||||
></u--textarea>
|
||||
</u-form-item>
|
||||
</view>
|
||||
<view class="card">
|
||||
@@ -59,17 +110,23 @@
|
||||
<view class="card_title">证件资料</view>
|
||||
<view class="card_content">
|
||||
<u-form-item labelWidth="100" prop="identityUrl4Id">
|
||||
<UploadIdNumber v-model="formData.identityUrl4Id" contentStyle="marginTop: 30rpx"
|
||||
backImg="/static/img/idcard.png">
|
||||
</UploadIdNumber>
|
||||
<UploadIdNumber
|
||||
v-model="formData.identityUrl4Id"
|
||||
contentStyle="marginTop: 30rpx"
|
||||
backImg="/static/img/idcard.png"
|
||||
></UploadIdNumber>
|
||||
</u-form-item>
|
||||
<u-form-item labelWidth="100" prop="identityUrl5Id">
|
||||
<UploadIdNumber v-model="formData.identityUrl5Id" backImg="/static/img/backidcard1.png">
|
||||
</UploadIdNumber>
|
||||
<UploadIdNumber
|
||||
v-model="formData.identityUrl5Id"
|
||||
backImg="/static/img/backidcard1.png"
|
||||
></UploadIdNumber>
|
||||
</u-form-item>
|
||||
<u-form-item labelWidth="100" prop="authUrlId">
|
||||
<UploadIdNumber v-model="formData.authUrlId" backImg="/static/img/businessLicense.jpg">
|
||||
</UploadIdNumber>
|
||||
<UploadIdNumber
|
||||
v-model="formData.authUrlId"
|
||||
backImg="/static/img/businessLicense.jpg"
|
||||
></UploadIdNumber>
|
||||
</u-form-item>
|
||||
</view>
|
||||
</view>
|
||||
@@ -84,23 +141,17 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import UploadIdNumber from './uploadIdNumber.vue';
|
||||
import dic from '@/common/dic.js'
|
||||
import PickerList from './pickerList.vue';
|
||||
import {
|
||||
addInviteCompanyAuth,
|
||||
getInviteCompanyAuthInfo,
|
||||
getDictionary2
|
||||
} from '@/api/userrecruit.js'
|
||||
import {
|
||||
mapState
|
||||
} from 'vuex'
|
||||
const rules = {
|
||||
import UploadIdNumber from './uploadIdNumber.vue';
|
||||
import dic from '@/common/dic.js';
|
||||
import PickerList from './pickerList.vue';
|
||||
import { addInviteCompanyAuth, getInviteCompanyAuthInfo, getDictionary2 } from '@/api/userrecruit.js';
|
||||
import { mapState } from 'vuex';
|
||||
const rules = {
|
||||
comname: {
|
||||
type: 'string',
|
||||
required: true,
|
||||
message: '请输入用工单位',
|
||||
trigger: ['change']
|
||||
trigger: ['change'],
|
||||
},
|
||||
companyTid: {
|
||||
type: 'string',
|
||||
@@ -108,88 +159,88 @@
|
||||
max: 18,
|
||||
min: 18,
|
||||
message: '请输入18位统一信用代码',
|
||||
trigger: ['change']
|
||||
trigger: ['change'],
|
||||
},
|
||||
masterName: {
|
||||
type: 'string',
|
||||
required: true,
|
||||
message: '请输入法人姓名',
|
||||
trigger: ['change']
|
||||
trigger: ['change'],
|
||||
},
|
||||
masterIdentity: {
|
||||
type: 'string',
|
||||
required: true,
|
||||
pattern: /^[1-9]\d{5}(19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[Xx\d]$/,
|
||||
message: '请输入法人身份证号',
|
||||
trigger: ['change']
|
||||
trigger: ['change'],
|
||||
},
|
||||
cityId: {
|
||||
type: 'string',
|
||||
required: true,
|
||||
message: '请选择所在地区',
|
||||
trigger: ['change']
|
||||
trigger: ['change'],
|
||||
},
|
||||
companyAddress: {
|
||||
type: 'string',
|
||||
required: true,
|
||||
message: '请输入详细地址',
|
||||
trigger: ['change']
|
||||
trigger: ['change'],
|
||||
},
|
||||
nature: {
|
||||
type: 'string',
|
||||
required: true,
|
||||
message: '请选择企业性质',
|
||||
trigger: ['change']
|
||||
trigger: ['change'],
|
||||
},
|
||||
tradeId: {
|
||||
type: 'string',
|
||||
required: true,
|
||||
message: '请选择行业',
|
||||
trigger: ['change']
|
||||
trigger: ['change'],
|
||||
},
|
||||
companyDesc: {
|
||||
type: 'string',
|
||||
min: 20,
|
||||
required: true,
|
||||
message: '请输入企业介绍(最少20个字符)',
|
||||
trigger: ['change']
|
||||
trigger: ['change'],
|
||||
},
|
||||
manager: {
|
||||
type: 'string',
|
||||
required: true,
|
||||
message: '请输入联系人',
|
||||
trigger: ['change']
|
||||
trigger: ['change'],
|
||||
},
|
||||
telphone: {
|
||||
type: 'string',
|
||||
required: true,
|
||||
pattern: /^1[3-9]{1}[0-9]{9}$/,
|
||||
message: '请输入手机号码',
|
||||
trigger: ['change']
|
||||
trigger: ['change'],
|
||||
},
|
||||
identityUrl4Id: {
|
||||
type: 'string',
|
||||
required: true,
|
||||
message: '请上传法人身份证(人像)',
|
||||
trigger: ['change']
|
||||
trigger: ['change'],
|
||||
},
|
||||
identityUrl5Id: {
|
||||
type: 'string',
|
||||
required: true,
|
||||
message: '请上传法人身份证(国徽)',
|
||||
trigger: ['change']
|
||||
trigger: ['change'],
|
||||
},
|
||||
authUrlId: {
|
||||
type: 'string',
|
||||
required: true,
|
||||
message: '请上传企业营业执照',
|
||||
trigger: ['change']
|
||||
trigger: ['change'],
|
||||
},
|
||||
}
|
||||
export default {
|
||||
};
|
||||
export default {
|
||||
components: {
|
||||
UploadIdNumber,
|
||||
PickerList
|
||||
PickerList,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@@ -199,28 +250,28 @@
|
||||
dic,
|
||||
xzDic: [],
|
||||
formData: {},
|
||||
rules
|
||||
rules,
|
||||
};
|
||||
},
|
||||
onLoad(options) {
|
||||
if (options.reviewStatus === '9') {
|
||||
this.getInfo()
|
||||
this.getInfo();
|
||||
}
|
||||
this.getDictInfo()
|
||||
this.getDictInfo();
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
authInfo: (state) => state.auth.authInfo,
|
||||
userInfo: (state) => state.user.userInfo
|
||||
userInfo: (state) => state.user.userInfo,
|
||||
}),
|
||||
},
|
||||
created() {
|
||||
this.formData.manager = this.authInfo.realName
|
||||
this.formData.idNumber = this.authInfo.idNumber
|
||||
this.formData.manager = this.authInfo.realName;
|
||||
this.formData.idNumber = this.authInfo.idNumber;
|
||||
},
|
||||
methods: {
|
||||
hideKeyboard() {
|
||||
uni.hideKeyboard()
|
||||
uni.hideKeyboard();
|
||||
},
|
||||
async submit() {
|
||||
let params = {
|
||||
@@ -228,9 +279,11 @@
|
||||
nature: Number(this.formData.nature),
|
||||
cityId: Number(this.formData.cityId),
|
||||
tradeId: Number(this.formData.tradeId),
|
||||
}
|
||||
const _this = this
|
||||
this.$refs.formOne.validate().then(async (res) => {
|
||||
};
|
||||
const _this = this;
|
||||
this.$refs.formOne
|
||||
.validate()
|
||||
.then(async (res) => {
|
||||
let params = {
|
||||
..._this.formData,
|
||||
nature: Number(_this.formData.nature),
|
||||
@@ -238,59 +291,60 @@
|
||||
tradeId: Number(_this.formData.tradeId),
|
||||
manager: _this.authInfo.realName,
|
||||
idNumber: _this.authInfo.idNumber,
|
||||
companyName: dic.addressColumn[0].filter((item) => item.value == _this
|
||||
.formData.cityId)[0].label
|
||||
}
|
||||
console.log(params)
|
||||
let resData = await addInviteCompanyAuth(params)
|
||||
companyName: dic.addressColumn[0].filter((item) => item.value == _this.formData.cityId)[0]
|
||||
.label,
|
||||
};
|
||||
console.log(params);
|
||||
let resData = await addInviteCompanyAuth(params);
|
||||
if (resData.data.code === 200) {
|
||||
uni.navigateBack(1)
|
||||
uni.navigateBack(1);
|
||||
_this.$api.sleep(1000).then(() => {
|
||||
_this.$api.msg('已完成企业信息认证')
|
||||
})
|
||||
_this.$api.msg('已完成企业信息认证');
|
||||
});
|
||||
}
|
||||
}).catch(errors => {
|
||||
})
|
||||
.catch((errors) => {
|
||||
if (/[\u4e00-\u9fff]/.test(errors.message)) {
|
||||
_this.$api.msg(errors.message)
|
||||
_this.$api.msg(errors.message);
|
||||
}
|
||||
})
|
||||
});
|
||||
},
|
||||
async getInfo() {
|
||||
let params = {
|
||||
idNumber: this.authInfo.idNumber
|
||||
}
|
||||
let resData = await getInviteCompanyAuthInfo(params)
|
||||
idNumber: this.authInfo.idNumber,
|
||||
};
|
||||
let resData = await getInviteCompanyAuthInfo(params);
|
||||
if (resData.data.code === 200) {
|
||||
console.log(resData.data.data)
|
||||
console.log(resData.data.data);
|
||||
this.formData = {
|
||||
...resData.data.data,
|
||||
nature: String(resData.data.data.nature),
|
||||
cityId: String(resData.data.data.cityId),
|
||||
tradeId: String(resData.data.data.tradeId),
|
||||
}
|
||||
};
|
||||
}
|
||||
},
|
||||
reset() {
|
||||
const _this = this
|
||||
const _this = this;
|
||||
uni.showModal({
|
||||
content: '重置将清空表单,确定重置吗?',
|
||||
success() {
|
||||
_this.formData = {}
|
||||
_this.formData = {};
|
||||
},
|
||||
})
|
||||
});
|
||||
},
|
||||
async getDictInfo() {
|
||||
let resData = await getDictionary2()
|
||||
let resData = await getDictionary2();
|
||||
if (resData.data.code === 200) {
|
||||
this.xzDic = resData.data.data
|
||||
}
|
||||
this.xzDic = resData.data.data;
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.content {
|
||||
.content {
|
||||
padding: 24rpx;
|
||||
|
||||
.card {
|
||||
@@ -306,5 +360,5 @@
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -1,19 +1,28 @@
|
||||
<template>
|
||||
<view class="content_upload" :style="contentStyle">
|
||||
<u-upload :fileList="ImgUrl" @afterRead="afterRead" :deletable="true" @delete="deletePic" name="6" :maxCount="1"
|
||||
:width="width" :height="height">
|
||||
<image :src="backImg" :style="`width: ${width}px;height: ${height}px;`"></image>
|
||||
<image class="iconimg" src="/static/img/Takingpictures.png"
|
||||
:style="`width: ${width/4}px;height: ${width/4}px;`"></image>
|
||||
<u-upload
|
||||
:fileList="ImgUrl"
|
||||
@afterRead="afterRead"
|
||||
:deletable="true"
|
||||
@delete="deletePic"
|
||||
name="6"
|
||||
:maxCount="1"
|
||||
:width="width"
|
||||
:height="height"
|
||||
>
|
||||
<image :src="backImg" :style="{ width: width + 'px', height: height + 'px' }"></image>
|
||||
<image
|
||||
class="iconimg"
|
||||
src="/static/img/Takingpictures.png"
|
||||
:style="{ width: width / 4 + 'px', height: height / 4 + 'px' }"
|
||||
></image>
|
||||
</u-upload>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
uploadFile
|
||||
} from '@/api/upload.js'
|
||||
export default {
|
||||
import { uploadFile } from '@/api/upload.js';
|
||||
export default {
|
||||
name: 'UploadIdNumber',
|
||||
props: {
|
||||
backImg: {
|
||||
@@ -22,56 +31,56 @@
|
||||
},
|
||||
value: {
|
||||
type: String,
|
||||
default: null
|
||||
default: null,
|
||||
},
|
||||
width: {
|
||||
type: Number,
|
||||
default: 280
|
||||
default: 280,
|
||||
},
|
||||
height: {
|
||||
type: Number,
|
||||
default: 150
|
||||
default: 150,
|
||||
},
|
||||
contentStyle: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
default: '',
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
ImgUrl(val) {
|
||||
return this.value ? [{
|
||||
return this.value
|
||||
? [
|
||||
{
|
||||
name: 'img.jpg',
|
||||
url: this.value
|
||||
}] : []
|
||||
}
|
||||
url: this.value,
|
||||
},
|
||||
]
|
||||
: [];
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
afterRead({
|
||||
file,
|
||||
index,
|
||||
name
|
||||
}) {
|
||||
afterRead({ file, index, name }) {
|
||||
// this.$emit("input", file);
|
||||
uploadFile(file).then((url) => {
|
||||
this.$emit("input", url);
|
||||
})
|
||||
this.$emit('input', url);
|
||||
});
|
||||
},
|
||||
deletePic() {
|
||||
this.$emit("input", null);
|
||||
this.$emit('input', null);
|
||||
},
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.content_upload {
|
||||
.content_upload {
|
||||
position: relative;
|
||||
}
|
||||
}
|
||||
|
||||
.iconimg {
|
||||
.iconimg {
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -10,7 +10,7 @@
|
||||
<view class="condition">
|
||||
<view class="cond_list" v-if="pageType === 'enterprise'">
|
||||
<view v-for="(item, index) in arrTitle" :key="index"
|
||||
:class="['cond_item', item.id === currentArrTitleID ? 'activeButton' : '']" @click="changeTab(item)">
|
||||
:class="['cond_item', index === currentArrTitleID ? 'activeButton' : '']" @click="changeTab(item)">
|
||||
{{ item.text }}
|
||||
</view>
|
||||
</view>
|
||||
@@ -39,12 +39,10 @@
|
||||
} from '@/api/userrecruit.js'
|
||||
import userrecruitList from '../components/userrecruitList.vue'
|
||||
let arrGuide = ['在线填写招工需求', '后台审核沟通发布', '平台展示招工信息'];
|
||||
let arrTitle = [
|
||||
// {
|
||||
// text: "发布零工岗位",
|
||||
// id: 0
|
||||
// },
|
||||
{
|
||||
let arrTitle = [{
|
||||
text: "发布零工岗位",
|
||||
id: 0
|
||||
}, {
|
||||
text: "发布全职岗位",
|
||||
id: 1
|
||||
}
|
||||
@@ -78,7 +76,7 @@
|
||||
reviewStatus,
|
||||
pickerColumns,
|
||||
openPicker: false,
|
||||
currentArrTitleID: 1,
|
||||
currentArrTitleID: 2,
|
||||
currentReviewStatusID: '-1',
|
||||
pageNumber: 1,
|
||||
dataSource: [],
|
||||
@@ -89,7 +87,7 @@
|
||||
}) {
|
||||
if (this.enterprise) {
|
||||
this.pageType = 'enterprise'
|
||||
this.currentArrTitleID = 1
|
||||
this.currentArrTitleID = 0
|
||||
}
|
||||
this.getList('refresh')
|
||||
},
|
||||
|
||||
@@ -7,26 +7,42 @@
|
||||
<!-- <view class="prolist">
|
||||
任务编码:{{info.missionNo}}
|
||||
</view> -->
|
||||
<view class="prolist">岗位日期:{{ dateFormat(info.stime) }}至{{ dateFormat(info.etime) }}</view>
|
||||
<view class="prolist">
|
||||
岗位日期:{{ dateFormat((info.stime)) }}至{{ dateFormat((info.etime)) }}
|
||||
</view>
|
||||
<!-- <view class="prolist">
|
||||
报名截止:{{dateFormat((info.etimePub))}}
|
||||
</view> -->
|
||||
<view class="prolist">行业类型:{{ info.tradeNames }}</view>
|
||||
<view class="prolist">工种类型:{{ info.worktypeNames }}</view>
|
||||
<view class="prolist">
|
||||
行业类型:{{ info.tradeNames }}
|
||||
</view>
|
||||
<view class="prolist">
|
||||
工种类型:{{ info.worktypeNames }}
|
||||
</view>
|
||||
<view class="fee">
|
||||
{{ info.wage }}
|
||||
</view>
|
||||
</view>
|
||||
<view class="head">
|
||||
<view class="proname proneed">岗位要求</view>
|
||||
<view class="prolist">
|
||||
<view class="protype">年龄要求:{{ age[info.ageDesc] }}</view>
|
||||
<view class="proname proneed">
|
||||
岗位要求
|
||||
</view>
|
||||
<view class="prolist">
|
||||
<view class="protype">学历要求:{{ education[info.education] }}</view>
|
||||
<view class="protype">经验要求:{{ experience[info.experienceDesc] }}</view>
|
||||
<view class="protype">
|
||||
年龄要求:{{ age[info.ageDesc] }}
|
||||
</view>
|
||||
</view>
|
||||
<view class="prolist">
|
||||
<view class="protype">
|
||||
学历要求:{{ education[info.education] }}
|
||||
</view>
|
||||
<view class="protype">
|
||||
经验要求:{{ experience[info.experienceDesc] }}
|
||||
</view>
|
||||
</view>
|
||||
<view class="prolist proint" style="font-weight: bold;color:#333;">
|
||||
任务描述
|
||||
</view>
|
||||
<view class="prolist proint" style="font-weight: bold; color: #333">任务描述</view>
|
||||
<view class="prolist description">
|
||||
{{ info.missionDesc }}
|
||||
</view>
|
||||
@@ -37,17 +53,25 @@
|
||||
</view>
|
||||
</view>
|
||||
<!-- 技能标签 end -->
|
||||
<view v-if="info.jobSources" style="color: red" class="prolist">来源:{{ info.jobSources }}</view>
|
||||
<view v-if="info.jobSources" class="prolist">
|
||||
来源:{{ info.jobSources }}
|
||||
</view>
|
||||
</view>
|
||||
<view class="head">
|
||||
<view class="proname proneed">用工单位信息</view>
|
||||
<view class="proname proneed">
|
||||
用工单位信息
|
||||
</view>
|
||||
<view class="prolist">
|
||||
{{ info.companyName }}
|
||||
</view>
|
||||
<view class="prolist">用工单位地址:{{ info.companyAddress }}</view>
|
||||
<view class="prolist">
|
||||
用工单位地址:{{ info.companyAddress }}
|
||||
</view>
|
||||
</view>
|
||||
<view class="head">
|
||||
<view class="proname proneed">地址</view>
|
||||
<view class="proname proneed">
|
||||
地址
|
||||
</view>
|
||||
<!-- <view class="prolist">
|
||||
<view class="protype">
|
||||
联系人:{{info.callName}}
|
||||
@@ -59,62 +83,49 @@
|
||||
<view class="prolist" v-if="info.callNumber">
|
||||
座机号:{{info.callNumber}}
|
||||
</view> -->
|
||||
<view class="prolist">任务地址:{{ info.address }}</view>
|
||||
<view class="prolist">
|
||||
任务地址:{{ info.address }}
|
||||
</view>
|
||||
<view class="map">
|
||||
<super-map
|
||||
ref="uMap"
|
||||
style="width: 100%; height: 100%"
|
||||
:latitude="latitude"
|
||||
:longitude="longitude"
|
||||
:open="true"
|
||||
:zoom="14"
|
||||
:min-zoom="10"
|
||||
:max-zoom="20"
|
||||
:MapUrl="$config.supperMap"
|
||||
:flag-tip="false"
|
||||
></super-map>
|
||||
<!-- <super-map ref="uMap" style="width: 100%;height: 100%;" :latitude="latitude" :longitude="longitude"
|
||||
:open="true" :zoom="14" :min-zoom="10" :max-zoom="20" :MapUrl="$config.supperMap"
|
||||
:flag-tip="false"></super-map> -->
|
||||
<zhuo-tianditu-MultiPoint-Mapper ref="tMap" :api-key="$config.apiKey"></zhuo-tianditu-MultiPoint-Mapper>
|
||||
</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="" style="height:200rpx;background-color: #f6f6f6;" v-if="isShow !== '0'"></view>
|
||||
<view class="btn">
|
||||
<view
|
||||
@click="callPhone"
|
||||
class="bottombtn flexbtn"
|
||||
style="margin-right: 10rpx; background-color: #fbad17; border-radius: 45rpx"
|
||||
>
|
||||
|
||||
<view @click="callPhone" class="bottombtn flexbtn"
|
||||
style="margin-right: 10rpx;background-color: #FBAD17;border-radius: 45rpx;">
|
||||
查看申请列表
|
||||
</view>
|
||||
</view>
|
||||
<uniMask :maskShow="maskShow">
|
||||
<view class="contractMask">
|
||||
<!-- #ifdef H5 || APP-PLUS -->
|
||||
<view class="close" @click="close" style="top: 124rpx">+</view>
|
||||
<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 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="min-height: 100rpx; padding: 60rpx 40rpx">
|
||||
<view style="min-height: 100rpx;padding: 60rpx 40rpx;">
|
||||
<view class="contactWrapper" v-for="(item, index) in info.applyList" :key="index">
|
||||
<view class="wrapperLeft">
|
||||
<view>{{ item.realName }} : {{ item.telphone }}</view>
|
||||
<view>申请时间:{{ item.applyTime }}</view>
|
||||
<view> {{ item.realName }} : {{ item.telphone }} </view>
|
||||
<view> 申请时间:{{ item.applyTime }} </view>
|
||||
</view>
|
||||
<view class="applyTime">
|
||||
<!-- // 1:申请中;2:申请通过;3:申请未通过;-->
|
||||
<view
|
||||
class="btnGr"
|
||||
v-if="item.status === 1 || item.status === 3"
|
||||
@click="changeWorkerStatus(item)"
|
||||
>
|
||||
录用
|
||||
</view>
|
||||
<view class="btnGr" v-if="item.status === 1 ||item.status === 3"
|
||||
@click="changeWorkerStatus(item)">录用</view>
|
||||
<view class="btnHuy" v-if="item.status === 2" @click="cancelWorkerStatus(item)">取消</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -124,7 +135,7 @@
|
||||
|
||||
<view v-else-if="showCode" class="codeSealBox">
|
||||
<!-- #ifdef H5 || APP-PLUS -->
|
||||
<view class="closeCode" @click="closeShowCode" style="top: 124rpx">+</view>
|
||||
<view class="closeCode" @click="closeShowCode" style="top: 124rpx;">+</view>
|
||||
<!-- #endif -->
|
||||
<!-- #ifdef MP-WEIXIN -->
|
||||
<view class="closeCode" @click="closeShowCode">+</view>
|
||||
@@ -134,25 +145,39 @@
|
||||
<view class="name">签名密码</view>
|
||||
<view class="tip">6位数字签名密码</view>
|
||||
</view>
|
||||
<view style="height: 36px"></view>
|
||||
<view style="height: 36px;"></view>
|
||||
<valid-code ref="validCode" @finish="getInpCode" :maxlength="maxlength"></valid-code>
|
||||
<view style="height: 36px"></view>
|
||||
<view style="height: 36px;"></view>
|
||||
<view class="forget" @click="forget">忘记密码?</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapGetters } from 'vuex';
|
||||
import { recruit_missionDetail } from '@/api/mission.js';
|
||||
import { GoLogin } from '@/untils/AxiosUtils.js';
|
||||
import { setRead, updataEmployedNew, cancelEmployed } from '@/api/news.js';
|
||||
import { checkPass } from '@/api/auth.js';
|
||||
import dictionary from '@/common/textdata.js';
|
||||
import { dateFormat } from '../../../../untils/format.js';
|
||||
import uniMask from '@/components/uni-mask/mask.vue';
|
||||
import uniPopup from '@/components/uni-popup/uni-popup.vue';
|
||||
import validCode from '@/components/p-valid-code/p-valid-code.vue';
|
||||
export default {
|
||||
import {
|
||||
mapGetters
|
||||
} from 'vuex'
|
||||
import {
|
||||
recruit_missionDetail
|
||||
} from '@/api/mission.js';
|
||||
import {
|
||||
GoLogin
|
||||
} from '@/untils/AxiosUtils.js';
|
||||
import {
|
||||
setRead,
|
||||
updataEmployedNew,
|
||||
cancelEmployed
|
||||
} from '@/api/news.js';
|
||||
import {
|
||||
checkPass
|
||||
} from '@/api/auth.js';
|
||||
import dictionary from '@/common/textdata.js';
|
||||
import {
|
||||
dateFormat
|
||||
} from "../../../../untils/format.js";
|
||||
import uniMask from '@/components/uni-mask/mask.vue'
|
||||
import uniPopup from '@/components/uni-popup/uni-popup.vue'
|
||||
import validCode from '@/components/p-valid-code/p-valid-code.vue'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
...dictionary,
|
||||
@@ -165,18 +190,15 @@ export default {
|
||||
loading: false,
|
||||
latitude: 39.909, //中心点
|
||||
longitude: 116.39742,
|
||||
covers: [
|
||||
{
|
||||
//marker标记位置
|
||||
covers: [{ //marker标记位置
|
||||
id: 0,
|
||||
latitude: 0,
|
||||
longitude: 0,
|
||||
// width:30,
|
||||
// height:30,
|
||||
iconPath: '../../../../static/img/location.png',
|
||||
},
|
||||
],
|
||||
missionNo: '',
|
||||
iconPath: '../../../../static/img/location.png'
|
||||
}],
|
||||
missionNo: "",
|
||||
isShow: '',
|
||||
type: '',
|
||||
id: '',
|
||||
@@ -184,15 +206,14 @@ export default {
|
||||
maxlength: 6,
|
||||
collectStatus: 0, // 收藏状态
|
||||
showPopUp: false,
|
||||
};
|
||||
}
|
||||
},
|
||||
components: {
|
||||
uniMask,
|
||||
validCode,
|
||||
uniPopup,
|
||||
uniPopup
|
||||
},
|
||||
onLoad: function (option) {
|
||||
//option为object类型,会序列化上个页面传递的参数
|
||||
onLoad: function(option) { //option为object类型,会序列化上个页面传递的参数
|
||||
// this.$store.dispatch('setAutograph')
|
||||
if (option.missionNo) {
|
||||
this.missionNo = decodeURIComponent(option.missionNo);
|
||||
@@ -207,45 +228,46 @@ export default {
|
||||
this.id = option.id; //消息id
|
||||
}
|
||||
},
|
||||
onShow: function () {
|
||||
this.showDetail = true;
|
||||
onShow: function() {
|
||||
this.showDetail = true
|
||||
this.getData();
|
||||
|
||||
},
|
||||
onShareAppMessage(obj) {
|
||||
return {
|
||||
title: this.info.missionTitle,
|
||||
path: `/pages/projectInfo/projectInfo?missionNo=${this.info.missionNo}`,
|
||||
};
|
||||
path: `/pages/projectInfo/projectInfo?missionNo=${this.info.missionNo}`
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
dateFormat,
|
||||
async cancelWorkerStatus(item) {
|
||||
let params = {
|
||||
missionNo: this.info.missionNo,
|
||||
ids: item.id,
|
||||
};
|
||||
ids: item.id
|
||||
}
|
||||
uni.showLoading({
|
||||
title: '请稍后',
|
||||
});
|
||||
let resData = await cancelEmployed(params);
|
||||
uni.hideLoading();
|
||||
title: '请稍后'
|
||||
})
|
||||
let resData = await cancelEmployed(params)
|
||||
uni.hideLoading()
|
||||
if (resData.data.code === 200) {
|
||||
this.$api.msg('操作成功');
|
||||
this.$api.msg('操作成功')
|
||||
this.getData();
|
||||
}
|
||||
},
|
||||
async changeWorkerStatus(item) {
|
||||
let params = {
|
||||
missionNo: this.info.missionNo,
|
||||
ids: item.id,
|
||||
};
|
||||
ids: item.id
|
||||
}
|
||||
uni.showLoading({
|
||||
title: '请稍后',
|
||||
});
|
||||
let resData = await updataEmployedNew(params);
|
||||
uni.hideLoading();
|
||||
title: '请稍后'
|
||||
})
|
||||
let resData = await updataEmployedNew(params)
|
||||
uni.hideLoading()
|
||||
if (resData.data.code === 200) {
|
||||
this.$api.msg('操作成功');
|
||||
this.$api.msg('操作成功')
|
||||
this.getData();
|
||||
}
|
||||
},
|
||||
@@ -255,93 +277,101 @@ export default {
|
||||
closePopUp() {
|
||||
this.showPopUp = false;
|
||||
},
|
||||
getData: function () {
|
||||
getData: function() {
|
||||
const self = this;
|
||||
// missionDetail(self.missionNo).then(res => {
|
||||
recruit_missionDetail(self.missionNo, self.type).then(
|
||||
(res) => {
|
||||
recruit_missionDetail(self.missionNo, self.type).then(res => {
|
||||
self.info = res.data.data;
|
||||
self.status = res.data.data.detailStatus;
|
||||
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.latitude = self.info.lat;
|
||||
// self.longitude = self.info.lon;
|
||||
// self.covers[0].latitude = self.info.lat;
|
||||
// self.covers[0].longitude = self.info.lon;
|
||||
this.$refs.tMap.open(self.info.lon, self.info.lat)
|
||||
if (self.info.lon > 1 && self.info.lat > 1) {
|
||||
self.$nextTick(() => {
|
||||
self.$api.sleep(1000).then(() => {
|
||||
this.$refs.tMap.addFeature([{
|
||||
id: self.info.id,
|
||||
label: self.info.missionTitle,
|
||||
lat: self.info.lat,
|
||||
lon: self.info.lon,
|
||||
}])
|
||||
})
|
||||
})
|
||||
}
|
||||
self.showDetail = true;
|
||||
if (self.type === 1) {
|
||||
// 设置已读
|
||||
setRead(self.id).then((res) => {
|
||||
self.$store.commit('SET_READ');
|
||||
});
|
||||
setRead(self.id).then(res => {
|
||||
self.$store.commit("SET_READ");
|
||||
})
|
||||
}
|
||||
},
|
||||
(error) => {
|
||||
}, error => {
|
||||
console.log(error);
|
||||
}
|
||||
);
|
||||
});
|
||||
},
|
||||
// 查看合同
|
||||
lookMask() {
|
||||
this.maskShow = true;
|
||||
this.maskShow = true
|
||||
},
|
||||
// 关闭弹窗
|
||||
close() {
|
||||
this.maskShow = false;
|
||||
this.maskShow = false
|
||||
},
|
||||
// 合同下一步
|
||||
next() {
|
||||
this.maskShow = false;
|
||||
this.showDetail = false;
|
||||
this.showCode = true;
|
||||
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.closeShowCode();
|
||||
title: "请求中..."
|
||||
})
|
||||
this.loading = true
|
||||
var obj = {
|
||||
pass: password
|
||||
}
|
||||
checkPass(obj).then(res => {
|
||||
this.closeShowCode()
|
||||
}).catch(err => {
|
||||
this.loading = false
|
||||
})
|
||||
.catch((err) => {
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
// 关闭签名密码弹窗
|
||||
closeShowCode() {
|
||||
this.showCode = false;
|
||||
this.showDetail = true;
|
||||
this.showCode = false
|
||||
this.showDetail = true
|
||||
},
|
||||
// 忘记密码
|
||||
forget() {
|
||||
uni.navigateTo({
|
||||
url: `/pageMy/setUserBase/seal/forget?forget=true`,
|
||||
});
|
||||
},
|
||||
url: `/pageMy/setUserBase/seal/forget?forget=true`
|
||||
})
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['auth', 'autograph']),
|
||||
skillNames() {
|
||||
if (this.info.skillNames) {
|
||||
return this.info.skillNames.split(',');
|
||||
return this.info.skillNames.split(',')
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.codeSealBox {
|
||||
.codeSealBox {
|
||||
padding: 285rpx 72rpx 0 72rpx;
|
||||
|
||||
.closeCode {
|
||||
position: absolute;
|
||||
right: 36rpx;
|
||||
top: 120rpx;
|
||||
color: #1b66ff;
|
||||
color: #1B66FF;
|
||||
transform: rotate(45deg);
|
||||
font-size: 40px;
|
||||
}
|
||||
@@ -375,14 +405,15 @@ export default {
|
||||
font-size: 28rpx;
|
||||
font-family: PingFangSC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #5aa0fa;
|
||||
color: #5AA0FA;
|
||||
line-height: 38rpx;
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
|
||||
.contractMask {
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
.contractMask {
|
||||
background-color: #FFFFFF;
|
||||
margin: 30rpx;
|
||||
position: relative;
|
||||
border-radius: 4px;
|
||||
@@ -392,7 +423,7 @@ export default {
|
||||
.close {
|
||||
width: 23px;
|
||||
height: 23px;
|
||||
color: #1b66ff;
|
||||
color: #1B66FF;
|
||||
position: fixed;
|
||||
right: 60rpx;
|
||||
top: 60rpx;
|
||||
@@ -408,24 +439,24 @@ export default {
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
text-align: center;
|
||||
background: #1b66ff;
|
||||
background: #1B66FF;
|
||||
font-size: 36rpx;
|
||||
font-weight: 400;
|
||||
color: #ffffff;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.lookContract {
|
||||
.lookContract {
|
||||
width: 30%;
|
||||
margin-right: 30rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.flexbtn {
|
||||
.flexbtn {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.bottombtn {
|
||||
background-color: #1b66ff;
|
||||
.bottombtn {
|
||||
background-color: #1B66FF;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
border-radius: 10rpx;
|
||||
@@ -433,9 +464,9 @@ export default {
|
||||
font-size: 32rpx;
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.btn {
|
||||
.btn {
|
||||
background-color: #fefefe;
|
||||
width: 690rpx;
|
||||
padding: 30rpx;
|
||||
@@ -444,19 +475,19 @@ export default {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
|
||||
.disabledBtn {
|
||||
.disabledBtn {
|
||||
background-color: #c8c9cc;
|
||||
}
|
||||
}
|
||||
|
||||
.map {
|
||||
.map {
|
||||
width: 100%;
|
||||
height: 350rpx;
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.askList {
|
||||
.askList {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 24rpx;
|
||||
color: #666666;
|
||||
@@ -464,9 +495,9 @@ export default {
|
||||
padding: 5rpx 15rpx;
|
||||
margin-right: 10rpx;
|
||||
margin-top: 15rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.ask {
|
||||
.ask {
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
@@ -474,29 +505,31 @@ export default {
|
||||
flex-wrap: wrap;
|
||||
justify-content: flex-start;
|
||||
margin: 20rpx 0;
|
||||
}
|
||||
|
||||
.proint {
|
||||
}
|
||||
|
||||
.proint {
|
||||
margin-top: 30rpx;
|
||||
font-size: 30rpx !important;
|
||||
}
|
||||
}
|
||||
|
||||
.proneed {
|
||||
.proneed {
|
||||
font-size: 32rpx !important;
|
||||
}
|
||||
|
||||
.fee {
|
||||
}
|
||||
|
||||
.fee {
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 32rpx;
|
||||
color: #f46161;
|
||||
color: #F46161;
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.protype {
|
||||
.protype {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
.prolist {
|
||||
.prolist {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 28rpx;
|
||||
color: #666666;
|
||||
@@ -505,9 +538,9 @@ export default {
|
||||
justify-content: space-between;
|
||||
text-align: left;
|
||||
padding: 5rpx 0;
|
||||
}
|
||||
}
|
||||
|
||||
.proname {
|
||||
.proname {
|
||||
font-weight: bold;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 40rpx;
|
||||
@@ -515,20 +548,20 @@ export default {
|
||||
width: 90%;
|
||||
overflow: hidden;
|
||||
padding-bottom: 20rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.head {
|
||||
.head {
|
||||
padding: 30rpx;
|
||||
background: #fefefe;
|
||||
border-bottom: 20rpx solid #f6f6f6;
|
||||
}
|
||||
}
|
||||
|
||||
.description {
|
||||
.description {
|
||||
word-break: break-all;
|
||||
white-space: pre-line;
|
||||
}
|
||||
}
|
||||
|
||||
.contactWrapper {
|
||||
.contactWrapper {
|
||||
box-sizing: border-box;
|
||||
text-align: center;
|
||||
font-size: 28rpx;
|
||||
@@ -539,31 +572,32 @@ export default {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.applyTime {
|
||||
}
|
||||
|
||||
.applyTime {
|
||||
font-size: 24rpx;
|
||||
color: #666666;
|
||||
}
|
||||
}
|
||||
|
||||
.wrapperLeft {
|
||||
.wrapperLeft {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
|
||||
.btnGr {
|
||||
.btnGr {
|
||||
background-color: green;
|
||||
color: #ffffff;
|
||||
color: #FFFFFF;
|
||||
padding: 10rpx 20rpx;
|
||||
border-radius: 5rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.btnHuy {
|
||||
.btnHuy {
|
||||
background-color: #e8e8e8;
|
||||
color: #ffffff;
|
||||
color: #FFFFFF;
|
||||
padding: 10rpx 20rpx;
|
||||
border-radius: 5rpx;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -7,27 +7,45 @@
|
||||
<!-- <view class="prolist">
|
||||
任务编码:{{info.missionNo}}
|
||||
</view> -->
|
||||
<view class="prolist">发布日期:{{ info.stime ? dateFormat(info.stime) : null }}</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="prolist">
|
||||
发布日期:{{ info.stime ? dateFormat((info.stime)) : null }}
|
||||
</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="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 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">招工地址:{{ info.jobAddress }}</view>
|
||||
<view class="prolist proint" style="font-weight: bold; color: #333">招工描述</view>
|
||||
<view class="prolist description">
|
||||
{{ info.jobDescription }}
|
||||
</view>
|
||||
@@ -52,17 +70,16 @@
|
||||
<!-- <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 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="proname proneed">
|
||||
地址
|
||||
</view>
|
||||
<!-- <view class="prolist">
|
||||
<view class="protype">
|
||||
联系人:{{info.callName}}
|
||||
@@ -74,48 +91,39 @@
|
||||
<!-- <view class="prolist" v-if="info.callNumber">
|
||||
座机号:{{info.callNumber}}
|
||||
</view> -->
|
||||
<view class="prolist">岗位地址:{{ info.address }}</view>
|
||||
<view class="prolist">
|
||||
岗位地址:{{ info.address }}
|
||||
</view>
|
||||
<view class="map">
|
||||
<super-map
|
||||
ref="uMap"
|
||||
style="width: 100%; height: 100%"
|
||||
:latitude="latitude"
|
||||
:longitude="longitude"
|
||||
:open="true"
|
||||
:zoom="14"
|
||||
:min-zoom="10"
|
||||
:max-zoom="20"
|
||||
:MapUrl="$config.supperMap"
|
||||
:flag-tip="false"
|
||||
></super-map>
|
||||
<!-- <super-map ref="uMap" style="width: 100%;height: 100%;" :latitude="latitude" :longitude="longitude"
|
||||
:open="true" :zoom="14" :min-zoom="10" :max-zoom="20" :MapUrl="$config.supperMap"
|
||||
:flag-tip="false"></super-map> -->
|
||||
<zhuo-tianditu-MultiPoint-Mapper ref="tMap" :api-key="$config.apiKey"></zhuo-tianditu-MultiPoint-Mapper>
|
||||
</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="" style="height:200rpx;background-color: #f6f6f6;" v-if="isShow !== '0'"></view>
|
||||
<view class="btn">
|
||||
<view
|
||||
@click="callPhone"
|
||||
class="bottombtn flexbtn"
|
||||
style="margin-right: 10rpx; background-color: #fbad17; border-radius: 45rpx"
|
||||
>
|
||||
<view @click="callPhone" class="bottombtn flexbtn"
|
||||
style="margin-right: 10rpx;background-color: #FBAD17;border-radius: 45rpx;">
|
||||
电话联系
|
||||
</view>
|
||||
</view>
|
||||
<uniMask :maskShow="maskShow">
|
||||
<view class="contractMask">
|
||||
<!-- #ifdef H5 || APP-PLUS -->
|
||||
<view class="close" @click="close" style="top: 124rpx">+</view>
|
||||
<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 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="min-height: 100rpx; padding: 60rpx 40rpx">
|
||||
<view style="min-height: 100rpx;padding: 60rpx 40rpx;">
|
||||
<view class="contactWrapper" v-for="(item, index) in info.applyList" :key="index">
|
||||
<view>{{ item.realName }} : {{ item.telphone }}</view>
|
||||
<view class="applyTime">申请时间:{{ item.applyTime }}</view>
|
||||
@@ -126,7 +134,7 @@
|
||||
|
||||
<view v-else-if="showCode" class="codeSealBox">
|
||||
<!-- #ifdef H5 || APP-PLUS -->
|
||||
<view class="closeCode" @click="closeShowCode" style="top: 124rpx">+</view>
|
||||
<view class="closeCode" @click="closeShowCode" style="top: 124rpx;">+</view>
|
||||
<!-- #endif -->
|
||||
<!-- #ifdef MP-WEIXIN -->
|
||||
<view class="closeCode" @click="closeShowCode">+</view>
|
||||
@@ -136,25 +144,39 @@
|
||||
<view class="name">签名密码</view>
|
||||
<view class="tip">6位数字签名密码</view>
|
||||
</view>
|
||||
<view style="height: 36px"></view>
|
||||
<view style="height: 36px;"></view>
|
||||
<valid-code ref="validCode" @finish="getInpCode" :maxlength="maxlength"></valid-code>
|
||||
<view style="height: 36px"></view>
|
||||
<view style="height: 36px;"></view>
|
||||
<view class="forget" @click="forget">忘记密码?</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapGetters } from 'vuex';
|
||||
import { recruit_missionDetail } from '@/api/mission.js';
|
||||
import { GoLogin } from '@/untils/AxiosUtils.js';
|
||||
import { setRead } from '@/api/news.js';
|
||||
import { checkPass, getPhoneCountNumber } from '@/api/auth.js';
|
||||
import dictionary from '@/common/textdata.js';
|
||||
import { dateFormat } from '../../../../untils/format.js';
|
||||
import uniMask from '@/components/uni-mask/mask.vue';
|
||||
import validCode from '@/components/p-valid-code/p-valid-code.vue';
|
||||
import { getuserrecruitDetailApp } from '@/api/userrecruit.js';
|
||||
export default {
|
||||
import {
|
||||
mapGetters
|
||||
} from 'vuex'
|
||||
import {
|
||||
recruit_missionDetail,
|
||||
} 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 uniMask from '@/components/uni-mask/mask.vue'
|
||||
import validCode from '@/components/p-valid-code/p-valid-code.vue'
|
||||
import {
|
||||
getuserrecruitDetailApp
|
||||
} from '@/api/userrecruit.js'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
...dictionary,
|
||||
@@ -167,18 +189,15 @@ export default {
|
||||
loading: false,
|
||||
latitude: 39.909, //中心点
|
||||
longitude: 116.39742,
|
||||
covers: [
|
||||
{
|
||||
//marker标记位置
|
||||
covers: [{ //marker标记位置
|
||||
id: 0,
|
||||
latitude: 0,
|
||||
longitude: 0,
|
||||
// width:30,
|
||||
// height:30,
|
||||
iconPath: '../../../../static/img/location.png',
|
||||
},
|
||||
],
|
||||
missionNo: '',
|
||||
iconPath: '../../../../static/img/location.png'
|
||||
}],
|
||||
missionNo: "",
|
||||
isShow: '',
|
||||
type: '',
|
||||
id: '',
|
||||
@@ -186,15 +205,14 @@ export default {
|
||||
maxlength: 6,
|
||||
collectStatus: 0, // 收藏状态
|
||||
showPopUp: false,
|
||||
jobType: null,
|
||||
};
|
||||
jobType: null
|
||||
}
|
||||
},
|
||||
components: {
|
||||
uniMask,
|
||||
validCode,
|
||||
validCode
|
||||
},
|
||||
onLoad: function (option) {
|
||||
//option为object类型,会序列化上个页面传递的参数
|
||||
onLoad: function(option) { //option为object类型,会序列化上个页面传递的参数
|
||||
// this.$store.dispatch('setAutograph')
|
||||
if (option.workId) {
|
||||
this.workId = decodeURIComponent(option.workId);
|
||||
@@ -209,25 +227,23 @@ export default {
|
||||
this.id = option.id; //消息id
|
||||
}
|
||||
if (option.jobType) {
|
||||
this.jobType = option.jobType;
|
||||
this.jobType = option.jobType
|
||||
}
|
||||
},
|
||||
onShow: function () {
|
||||
this.showDetail = true;
|
||||
onShow: function() {
|
||||
this.showDetail = true
|
||||
this.getData();
|
||||
|
||||
},
|
||||
onShareAppMessage(obj) {
|
||||
return {
|
||||
title: this.info.missionTitle,
|
||||
path: `/pages/projectInfo/projectInfo?missionNo=${this.info.missionNo}`,
|
||||
};
|
||||
path: `/pages/projectInfo/projectInfo?missionNo=${this.info.missionNo}`
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
dateFormat,
|
||||
async callPhone() {
|
||||
this.showPopUp = true;
|
||||
await getPhoneCountNumber();
|
||||
|
||||
callPhone() {
|
||||
this.showPopUp = true;
|
||||
},
|
||||
closePopUp() {
|
||||
@@ -235,90 +251,101 @@ export default {
|
||||
},
|
||||
async getData() {
|
||||
const self = this;
|
||||
let resData = null;
|
||||
let resData = null
|
||||
if (this.jobType) {
|
||||
resData = await getuserrecruitDetailApp({
|
||||
id: this.id,
|
||||
jobType: this.jobType,
|
||||
});
|
||||
jobType: this.jobType
|
||||
})
|
||||
} else {
|
||||
resData = await recruit_missionDetail(self.workId, self.type);
|
||||
resData = await recruit_missionDetail(self.workId, self.type)
|
||||
}
|
||||
if (resData.data?.code === 200) {
|
||||
self.info = resData.data.data;
|
||||
self.status = resData.data.data.status;
|
||||
self.missionNo = resData.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.latitude = self.info.lat;
|
||||
// self.longitude = self.info.lon;
|
||||
// self.covers[0].latitude = self.info.lat;
|
||||
// self.covers[0].longitude = self.info.lon;
|
||||
this.$refs.tMap.open(self.info.lon, self.info.lat)
|
||||
if (self.info.lon > 1 && self.info.lat > 1) {
|
||||
self.$nextTick(() => {
|
||||
self.$api.sleep(1000).then(() => {
|
||||
this.$refs.tMap.addFeature([{
|
||||
id: self.info.id,
|
||||
label: self.info.jobName,
|
||||
lat: self.info.lat,
|
||||
lon: self.info.lon,
|
||||
}])
|
||||
})
|
||||
})
|
||||
}
|
||||
self.showDetail = true;
|
||||
}
|
||||
},
|
||||
// 查看合同
|
||||
lookMask() {
|
||||
this.maskShow = true;
|
||||
this.maskShow = true
|
||||
},
|
||||
// 关闭弹窗
|
||||
close() {
|
||||
this.maskShow = false;
|
||||
this.maskShow = false
|
||||
},
|
||||
// 合同下一步
|
||||
next() {
|
||||
this.maskShow = false;
|
||||
this.showDetail = false;
|
||||
this.showCode = true;
|
||||
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();
|
||||
title: "请求中..."
|
||||
})
|
||||
this.loading = true
|
||||
var obj = {
|
||||
pass: password
|
||||
}
|
||||
checkPass(obj).then(res => {
|
||||
this.submitTask()
|
||||
this.closeShowCode()
|
||||
}).catch(err => {
|
||||
this.loading = false
|
||||
})
|
||||
.catch((err) => {
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
// 关闭签名密码弹窗
|
||||
closeShowCode() {
|
||||
this.showCode = false;
|
||||
this.showDetail = true;
|
||||
this.showCode = false
|
||||
this.showDetail = true
|
||||
},
|
||||
// 忘记密码
|
||||
forget() {
|
||||
uni.navigateTo({
|
||||
url: `/pageMy/setUserBase/seal/forget?forget=true`,
|
||||
});
|
||||
},
|
||||
url: `/pageMy/setUserBase/seal/forget?forget=true`
|
||||
})
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['auth', 'autograph']),
|
||||
skillNames() {
|
||||
if (this.info.skillNames) {
|
||||
return this.info.skillNames.split(',');
|
||||
return this.info.skillNames.split(',')
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.codeSealBox {
|
||||
.codeSealBox {
|
||||
padding: 285rpx 72rpx 0 72rpx;
|
||||
|
||||
.closeCode {
|
||||
position: absolute;
|
||||
right: 36rpx;
|
||||
top: 120rpx;
|
||||
color: #1b66ff;
|
||||
color: #1B66FF;
|
||||
transform: rotate(45deg);
|
||||
font-size: 40px;
|
||||
}
|
||||
@@ -352,14 +379,15 @@ export default {
|
||||
font-size: 28rpx;
|
||||
font-family: PingFangSC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #5aa0fa;
|
||||
color: #5AA0FA;
|
||||
line-height: 38rpx;
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
|
||||
.contractMask {
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
.contractMask {
|
||||
background-color: #FFFFFF;
|
||||
margin: 30rpx;
|
||||
position: relative;
|
||||
border-radius: 4px;
|
||||
@@ -369,7 +397,7 @@ export default {
|
||||
.close {
|
||||
width: 23px;
|
||||
height: 23px;
|
||||
color: #1b66ff;
|
||||
color: #1B66FF;
|
||||
position: fixed;
|
||||
right: 60rpx;
|
||||
top: 60rpx;
|
||||
@@ -385,24 +413,24 @@ export default {
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
text-align: center;
|
||||
background: #1b66ff;
|
||||
background: #1B66FF;
|
||||
font-size: 36rpx;
|
||||
font-weight: 400;
|
||||
color: #ffffff;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.lookContract {
|
||||
.lookContract {
|
||||
width: 30%;
|
||||
margin-right: 30rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.flexbtn {
|
||||
.flexbtn {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.bottombtn {
|
||||
background-color: #1b66ff;
|
||||
.bottombtn {
|
||||
background-color: #1B66FF;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
border-radius: 10rpx;
|
||||
@@ -410,9 +438,9 @@ export default {
|
||||
font-size: 32rpx;
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.btn {
|
||||
.btn {
|
||||
background-color: #fefefe;
|
||||
width: 690rpx;
|
||||
padding: 30rpx;
|
||||
@@ -421,19 +449,19 @@ export default {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
|
||||
.disabledBtn {
|
||||
.disabledBtn {
|
||||
background-color: #c8c9cc;
|
||||
}
|
||||
}
|
||||
|
||||
.map {
|
||||
.map {
|
||||
width: 100%;
|
||||
height: 350rpx;
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.askList {
|
||||
.askList {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 24rpx;
|
||||
color: #666666;
|
||||
@@ -441,9 +469,9 @@ export default {
|
||||
padding: 5rpx 15rpx;
|
||||
margin-right: 10rpx;
|
||||
margin-top: 15rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.ask {
|
||||
.ask {
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
@@ -451,29 +479,31 @@ export default {
|
||||
flex-wrap: wrap;
|
||||
justify-content: flex-start;
|
||||
margin: 20rpx 0;
|
||||
}
|
||||
|
||||
.proint {
|
||||
}
|
||||
|
||||
.proint {
|
||||
margin-top: 30rpx;
|
||||
font-size: 30rpx !important;
|
||||
}
|
||||
}
|
||||
|
||||
.proneed {
|
||||
.proneed {
|
||||
font-size: 32rpx !important;
|
||||
}
|
||||
|
||||
.fee {
|
||||
}
|
||||
|
||||
.fee {
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 32rpx;
|
||||
color: #f46161;
|
||||
color: #F46161;
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.protype {
|
||||
.protype {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
.prolist {
|
||||
.prolist {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 28rpx;
|
||||
color: #666666;
|
||||
@@ -482,9 +512,9 @@ export default {
|
||||
justify-content: space-between;
|
||||
text-align: left;
|
||||
padding: 5rpx 0;
|
||||
}
|
||||
}
|
||||
|
||||
.proname {
|
||||
.proname {
|
||||
font-weight: bold;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 40rpx;
|
||||
@@ -492,20 +522,20 @@ export default {
|
||||
width: 90%;
|
||||
overflow: hidden;
|
||||
padding-bottom: 20rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.head {
|
||||
.head {
|
||||
padding: 30rpx;
|
||||
background: #fefefe;
|
||||
border-bottom: 20rpx solid #f6f6f6;
|
||||
}
|
||||
}
|
||||
|
||||
.description {
|
||||
.description {
|
||||
word-break: break-all;
|
||||
white-space: pre-line;
|
||||
}
|
||||
}
|
||||
|
||||
.contactWrapper {
|
||||
.contactWrapper {
|
||||
box-sizing: border-box;
|
||||
text-align: center;
|
||||
font-size: 28rpx;
|
||||
@@ -516,10 +546,11 @@ export default {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.applyTime {
|
||||
}
|
||||
|
||||
.applyTime {
|
||||
font-size: 24rpx;
|
||||
color: #666666;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -7,27 +7,45 @@
|
||||
<!-- <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="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="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 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">岗位地址:{{ info.jobAddress }}</view>
|
||||
<view class="prolist proint" style="font-weight: bold; color: #333">任务描述</view>
|
||||
<view class="prolist description">
|
||||
{{ info.jobDescription }}
|
||||
</view>
|
||||
@@ -38,7 +56,9 @@
|
||||
</view>
|
||||
</view>
|
||||
<!-- 技能标签 end -->
|
||||
<view v-if="info.jobSources" style="color: red" class="prolist">来源:{{ info.jobSources }}</view>
|
||||
<view v-if="info.jobSources" class="prolist">
|
||||
来源:{{ info.jobSources }}
|
||||
</view>
|
||||
</view>
|
||||
<view class="head">
|
||||
<!-- <view class="proname proneed">
|
||||
@@ -50,17 +70,16 @@
|
||||
<!-- <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 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="proname proneed">
|
||||
地址
|
||||
</view>
|
||||
<!-- <view class="prolist">
|
||||
<view class="protype">
|
||||
联系人:{{info.callName}}
|
||||
@@ -72,48 +91,39 @@
|
||||
<!-- <view class="prolist" v-if="info.callNumber">
|
||||
座机号:{{info.callNumber}}
|
||||
</view> -->
|
||||
<view class="prolist">岗位地址:{{ info.address }}</view>
|
||||
<view class="prolist">
|
||||
岗位地址:{{ info.address }}
|
||||
</view>
|
||||
<view class="map">
|
||||
<super-map
|
||||
ref="uMap"
|
||||
style="width: 100%; height: 100%"
|
||||
:latitude="latitude"
|
||||
:longitude="longitude"
|
||||
:open="true"
|
||||
:zoom="14"
|
||||
:min-zoom="10"
|
||||
:max-zoom="20"
|
||||
:MapUrl="$config.supperMap"
|
||||
:flag-tip="false"
|
||||
></super-map>
|
||||
<!-- <super-map ref="uMap" style="width: 100%;height: 100%;" :latitude="latitude" :longitude="longitude"
|
||||
:open="true" :zoom="14" :min-zoom="10" :max-zoom="20" :MapUrl="$config.supperMap"
|
||||
:flag-tip="false"></super-map> -->
|
||||
<zhuo-tianditu-MultiPoint-Mapper ref="tMap" :api-key="$config.apiKey"></zhuo-tianditu-MultiPoint-Mapper>
|
||||
</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="" style="height:200rpx;background-color: #f6f6f6;" v-if="isShow !== '0'"></view>
|
||||
<view class="btn">
|
||||
<view
|
||||
@click="callPhone"
|
||||
class="bottombtn flexbtn"
|
||||
style="margin-right: 10rpx; background-color: #fbad17; border-radius: 45rpx"
|
||||
>
|
||||
<view @click="callPhone" class="bottombtn flexbtn"
|
||||
style="margin-right: 10rpx;background-color: #FBAD17;border-radius: 45rpx;">
|
||||
电话联系
|
||||
</view>
|
||||
</view>
|
||||
<uniMask :maskShow="maskShow">
|
||||
<view class="contractMask">
|
||||
<!-- #ifdef H5 || APP-PLUS -->
|
||||
<view class="close" @click="close" style="top: 124rpx">+</view>
|
||||
<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 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="min-height: 100rpx; padding: 60rpx 40rpx">
|
||||
<view style="min-height: 100rpx;padding: 60rpx 40rpx;">
|
||||
<view class="contactWrapper" v-for="(item, index) in info.applyList" :key="index">
|
||||
<view>{{ item.realName }} : {{ item.telphone }}</view>
|
||||
<view class="applyTime">申请时间:{{ item.applyTime }}</view>
|
||||
@@ -124,7 +134,7 @@
|
||||
|
||||
<view v-else-if="showCode" class="codeSealBox">
|
||||
<!-- #ifdef H5 || APP-PLUS -->
|
||||
<view class="closeCode" @click="closeShowCode" style="top: 124rpx">+</view>
|
||||
<view class="closeCode" @click="closeShowCode" style="top: 124rpx;">+</view>
|
||||
<!-- #endif -->
|
||||
<!-- #ifdef MP-WEIXIN -->
|
||||
<view class="closeCode" @click="closeShowCode">+</view>
|
||||
@@ -134,25 +144,39 @@
|
||||
<view class="name">签名密码</view>
|
||||
<view class="tip">6位数字签名密码</view>
|
||||
</view>
|
||||
<view style="height: 36px"></view>
|
||||
<view style="height: 36px;"></view>
|
||||
<valid-code ref="validCode" @finish="getInpCode" :maxlength="maxlength"></valid-code>
|
||||
<view style="height: 36px"></view>
|
||||
<view style="height: 36px;"></view>
|
||||
<view class="forget" @click="forget">忘记密码?</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapGetters } from 'vuex';
|
||||
import { recruit_missionDetail } from '@/api/mission.js';
|
||||
import { GoLogin } from '@/untils/AxiosUtils.js';
|
||||
import { setRead } from '@/api/news.js';
|
||||
import { checkPass, getPhoneCountNumber } 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 {
|
||||
import {
|
||||
mapGetters
|
||||
} from 'vuex'
|
||||
import {
|
||||
recruit_missionDetail
|
||||
} 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,
|
||||
@@ -165,18 +189,15 @@ export default {
|
||||
loading: false,
|
||||
latitude: 39.909, //中心点
|
||||
longitude: 116.39742,
|
||||
covers: [
|
||||
{
|
||||
//marker标记位置
|
||||
covers: [{ //marker标记位置
|
||||
id: 0,
|
||||
latitude: 0,
|
||||
longitude: 0,
|
||||
// width:30,
|
||||
// height:30,
|
||||
iconPath: '../../../../static/img/location.png',
|
||||
},
|
||||
],
|
||||
missionNo: '',
|
||||
iconPath: '../../../../static/img/location.png'
|
||||
}],
|
||||
missionNo: "",
|
||||
isShow: '',
|
||||
type: '',
|
||||
id: '',
|
||||
@@ -184,14 +205,13 @@ export default {
|
||||
maxlength: 6,
|
||||
collectStatus: 0, // 收藏状态
|
||||
showPopUp: false,
|
||||
};
|
||||
}
|
||||
},
|
||||
components: {
|
||||
uniMask,
|
||||
validCode,
|
||||
validCode
|
||||
},
|
||||
onLoad: function (option) {
|
||||
//option为object类型,会序列化上个页面传递的参数
|
||||
onLoad: function(option) { //option为object类型,会序列化上个页面传递的参数
|
||||
// this.$store.dispatch('setAutograph')
|
||||
if (option.workId) {
|
||||
this.workId = decodeURIComponent(option.workId);
|
||||
@@ -206,107 +226,115 @@ export default {
|
||||
this.id = option.id; //消息id
|
||||
}
|
||||
},
|
||||
onShow: function () {
|
||||
this.showDetail = true;
|
||||
onShow: function() {
|
||||
this.showDetail = true
|
||||
this.getData();
|
||||
|
||||
},
|
||||
onShareAppMessage(obj) {
|
||||
return {
|
||||
title: this.info.missionTitle,
|
||||
path: `/pages/projectInfo/projectInfo?missionNo=${this.info.missionNo}`,
|
||||
};
|
||||
path: `/pages/projectInfo/projectInfo?missionNo=${this.info.missionNo}`
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
dateFormat,
|
||||
async callPhone() {
|
||||
callPhone() {
|
||||
this.showPopUp = true;
|
||||
await getPhoneCountNumber();
|
||||
},
|
||||
closePopUp() {
|
||||
this.showPopUp = false;
|
||||
},
|
||||
getData: function () {
|
||||
getData: function() {
|
||||
const self = this;
|
||||
recruit_missionDetail(self.workId, self.type).then(
|
||||
(res) => {
|
||||
recruit_missionDetail(self.workId, self.type).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;
|
||||
},
|
||||
(error) => {
|
||||
console.log(error);
|
||||
// self.latitude = self.info.lat;
|
||||
// self.longitude = self.info.lon;
|
||||
// self.covers[0].latitude = self.info.lat;
|
||||
// self.covers[0].longitude = self.info.lon;
|
||||
this.$refs.tMap.open(self.info.lon, self.info.lat)
|
||||
if (self.info.lon > 1 && self.info.lat > 1) {
|
||||
self.$nextTick(() => {
|
||||
self.$api.sleep(1000).then(() => {
|
||||
this.$refs.tMap.addFeature([{
|
||||
id: self.info.id,
|
||||
label: self.info.jobName,
|
||||
lat: self.info.lat,
|
||||
lon: self.info.lon,
|
||||
}])
|
||||
})
|
||||
})
|
||||
}
|
||||
);
|
||||
self.showDetail = true;
|
||||
}, error => {
|
||||
console.log(error);
|
||||
});
|
||||
},
|
||||
// 查看合同
|
||||
lookMask() {
|
||||
this.maskShow = true;
|
||||
this.maskShow = true
|
||||
},
|
||||
// 关闭弹窗
|
||||
close() {
|
||||
this.maskShow = false;
|
||||
this.maskShow = false
|
||||
},
|
||||
// 合同下一步
|
||||
next() {
|
||||
this.maskShow = false;
|
||||
this.showDetail = false;
|
||||
this.showCode = true;
|
||||
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();
|
||||
title: "请求中..."
|
||||
})
|
||||
this.loading = true
|
||||
var obj = {
|
||||
pass: password
|
||||
}
|
||||
checkPass(obj).then(res => {
|
||||
this.submitTask()
|
||||
this.closeShowCode()
|
||||
}).catch(err => {
|
||||
this.loading = false
|
||||
})
|
||||
.catch((err) => {
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
// 关闭签名密码弹窗
|
||||
closeShowCode() {
|
||||
this.showCode = false;
|
||||
this.showDetail = true;
|
||||
this.showCode = false
|
||||
this.showDetail = true
|
||||
},
|
||||
// 忘记密码
|
||||
forget() {
|
||||
uni.navigateTo({
|
||||
url: `/pageMy/setUserBase/seal/forget?forget=true`,
|
||||
});
|
||||
},
|
||||
url: `/pageMy/setUserBase/seal/forget?forget=true`
|
||||
})
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['auth', 'autograph']),
|
||||
skillNames() {
|
||||
if (this.info.skillNames) {
|
||||
return this.info.skillNames.split(',');
|
||||
return this.info.skillNames.split(',')
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.codeSealBox {
|
||||
.codeSealBox {
|
||||
padding: 285rpx 72rpx 0 72rpx;
|
||||
|
||||
.closeCode {
|
||||
position: absolute;
|
||||
right: 36rpx;
|
||||
top: 120rpx;
|
||||
color: #1b66ff;
|
||||
color: #1B66FF;
|
||||
transform: rotate(45deg);
|
||||
font-size: 40px;
|
||||
}
|
||||
@@ -340,14 +368,15 @@ export default {
|
||||
font-size: 28rpx;
|
||||
font-family: PingFangSC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #5aa0fa;
|
||||
color: #5AA0FA;
|
||||
line-height: 38rpx;
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
|
||||
.contractMask {
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
.contractMask {
|
||||
background-color: #FFFFFF;
|
||||
margin: 30rpx;
|
||||
position: relative;
|
||||
border-radius: 4px;
|
||||
@@ -357,7 +386,7 @@ export default {
|
||||
.close {
|
||||
width: 23px;
|
||||
height: 23px;
|
||||
color: #1b66ff;
|
||||
color: #1B66FF;
|
||||
position: fixed;
|
||||
right: 60rpx;
|
||||
top: 60rpx;
|
||||
@@ -373,24 +402,24 @@ export default {
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
text-align: center;
|
||||
background: #1b66ff;
|
||||
background: #1B66FF;
|
||||
font-size: 36rpx;
|
||||
font-weight: 400;
|
||||
color: #ffffff;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.lookContract {
|
||||
.lookContract {
|
||||
width: 30%;
|
||||
margin-right: 30rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.flexbtn {
|
||||
.flexbtn {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.bottombtn {
|
||||
background-color: #1b66ff;
|
||||
.bottombtn {
|
||||
background-color: #1B66FF;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
border-radius: 10rpx;
|
||||
@@ -398,9 +427,9 @@ export default {
|
||||
font-size: 32rpx;
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.btn {
|
||||
.btn {
|
||||
background-color: #fefefe;
|
||||
width: 690rpx;
|
||||
padding: 30rpx;
|
||||
@@ -409,19 +438,19 @@ export default {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
|
||||
.disabledBtn {
|
||||
.disabledBtn {
|
||||
background-color: #c8c9cc;
|
||||
}
|
||||
}
|
||||
|
||||
.map {
|
||||
.map {
|
||||
width: 100%;
|
||||
height: 350rpx;
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.askList {
|
||||
.askList {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 24rpx;
|
||||
color: #666666;
|
||||
@@ -429,9 +458,9 @@ export default {
|
||||
padding: 5rpx 15rpx;
|
||||
margin-right: 10rpx;
|
||||
margin-top: 15rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.ask {
|
||||
.ask {
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
@@ -439,29 +468,31 @@ export default {
|
||||
flex-wrap: wrap;
|
||||
justify-content: flex-start;
|
||||
margin: 20rpx 0;
|
||||
}
|
||||
|
||||
.proint {
|
||||
}
|
||||
|
||||
.proint {
|
||||
margin-top: 30rpx;
|
||||
font-size: 30rpx !important;
|
||||
}
|
||||
}
|
||||
|
||||
.proneed {
|
||||
.proneed {
|
||||
font-size: 32rpx !important;
|
||||
}
|
||||
|
||||
.fee {
|
||||
}
|
||||
|
||||
.fee {
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 32rpx;
|
||||
color: #f46161;
|
||||
color: #F46161;
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.protype {
|
||||
.protype {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
.prolist {
|
||||
.prolist {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 28rpx;
|
||||
color: #666666;
|
||||
@@ -470,9 +501,9 @@ export default {
|
||||
justify-content: space-between;
|
||||
text-align: left;
|
||||
padding: 5rpx 0;
|
||||
}
|
||||
}
|
||||
|
||||
.proname {
|
||||
.proname {
|
||||
font-weight: bold;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 40rpx;
|
||||
@@ -480,20 +511,20 @@ export default {
|
||||
width: 90%;
|
||||
overflow: hidden;
|
||||
padding-bottom: 20rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.head {
|
||||
.head {
|
||||
padding: 30rpx;
|
||||
background: #fefefe;
|
||||
border-bottom: 20rpx solid #f6f6f6;
|
||||
}
|
||||
}
|
||||
|
||||
.description {
|
||||
.description {
|
||||
word-break: break-all;
|
||||
white-space: pre-line;
|
||||
}
|
||||
}
|
||||
|
||||
.contactWrapper {
|
||||
.contactWrapper {
|
||||
box-sizing: border-box;
|
||||
text-align: center;
|
||||
font-size: 28rpx;
|
||||
@@ -504,10 +535,11 @@ export default {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.applyTime {
|
||||
}
|
||||
|
||||
.applyTime {
|
||||
font-size: 24rpx;
|
||||
color: #666666;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -305,7 +305,7 @@
|
||||
<view
|
||||
class="addressinfo"
|
||||
@click="selectMap"
|
||||
:style="`fontSize: 15px;color: ${info.address ? '#333333' : '#c0c4cc'}`"
|
||||
:style="{ fontSize: '15px', color: info.address ? '#333333' : '#c0c4cc' }"
|
||||
>
|
||||
{{ info.address || '请选择' }}
|
||||
</view>
|
||||
@@ -1046,7 +1046,7 @@ export default {
|
||||
padding-left: 20rpx;
|
||||
}
|
||||
|
||||
::v-deep .wageunitLeft .u-form-item__body {
|
||||
/deep/.wageunitLeft .u-form-item__body {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -308,7 +308,7 @@
|
||||
<view
|
||||
class="addressinfo"
|
||||
@click="selectMap"
|
||||
:style="`fontSize: 15px;color: ${info.address ? '#333333' : '#c0c4cc'}`"
|
||||
:style="{ fontSize: '15px', color: info.address ? '#333333' : '#c0c4cc' }"
|
||||
>
|
||||
{{ info.address || '请选择' }}
|
||||
</view>
|
||||
@@ -1036,7 +1036,7 @@ export default {
|
||||
padding-left: 20rpx;
|
||||
}
|
||||
|
||||
::v-deep .wageunitLeft .u-form-item__body {
|
||||
/deep/.wageunitLeft .u-form-item__body {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,18 +1,54 @@
|
||||
<template>
|
||||
<view class="mainWrapper">
|
||||
<view class="headSearch">
|
||||
<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="getList"
|
||||
<input type="text" confirm-type="搜索" v-model="keywords" @confirm="getNewList('search')"
|
||||
placeholder="搜零工岗位/搜全职岗位/搜政策" />
|
||||
<view @click="getList"
|
||||
<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 class="search-history">
|
||||
<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="title">搜索记录</view>
|
||||
<view class="clear" @click="clearKeyWords">
|
||||
<image src="../../static/img/delete.png" style="width: 24rpx;height: 24rpx;" mode=""></image>
|
||||
@@ -24,14 +60,15 @@
|
||||
</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>
|
||||
<block v-if="activeTab === 0">
|
||||
<view v-if="companyList.length ">
|
||||
<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" :location="userLocation"></companyList>
|
||||
<companyList :companyitem="item"></companyList>
|
||||
</block>
|
||||
</view>
|
||||
<view v-else>
|
||||
@@ -41,10 +78,10 @@
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<block v-if="activeTab === 1">
|
||||
<view v-if="newList.length">
|
||||
<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" :location="userLocation"></workList>
|
||||
<workList :companyitem="item" :near="activeTab === 0"></workList>
|
||||
</block>
|
||||
</view>
|
||||
<view v-else>
|
||||
@@ -55,8 +92,8 @@
|
||||
|
||||
|
||||
|
||||
<block v-if="activeTab == 2">
|
||||
<view v-if="recommendList.length">
|
||||
<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> -->
|
||||
@@ -72,7 +109,7 @@
|
||||
<view v-else>
|
||||
<image src="../../static/img/pic_notask.svg" mode="" class="nothing"></image>
|
||||
<view class="nothingContnt">
|
||||
暂无信息
|
||||
完善技能,获取精推荐
|
||||
</view>
|
||||
<!-- <view class="btn" @click="goResume">
|
||||
完善技能
|
||||
@@ -80,78 +117,86 @@
|
||||
</view>
|
||||
</block>
|
||||
|
||||
<block v-if="activeTab == -1">
|
||||
<view>
|
||||
<!-- <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>
|
||||
</view> -->
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
cloneDeep
|
||||
} from 'lodash';
|
||||
import {
|
||||
newMissionAll,
|
||||
getSearchKeyWordsList,
|
||||
clearSearchKeyWords,
|
||||
getListByKeyWords,
|
||||
nearMission,
|
||||
getPolicyContentList,
|
||||
userWorkSearchListAll
|
||||
getPolicyContentList
|
||||
} 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,
|
||||
keywords: '',
|
||||
searchHistoryList: [],
|
||||
companyList: [],
|
||||
newList: [],
|
||||
recommendList: [],
|
||||
tabList: ['零工岗位', '全职岗位', '政策']
|
||||
}
|
||||
newList: [],
|
||||
keywords: '',
|
||||
page: {
|
||||
current: 1,
|
||||
size: 10,
|
||||
total: 0
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['userLocation']),
|
||||
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: {
|
||||
goPolicyInfo(data) {
|
||||
if (data) {
|
||||
uni.navigateTo({
|
||||
url: `/pages/user/policyContent?id=${data}`
|
||||
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() {
|
||||
@@ -166,6 +211,142 @@
|
||||
// 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() {
|
||||
@@ -174,55 +355,15 @@
|
||||
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: calc(100vh - var(--window-top) - var(--status-bar-height) - var(--window-bottom));
|
||||
min-height: 95vh;
|
||||
}
|
||||
|
||||
.baddd {
|
||||
@@ -334,7 +475,6 @@
|
||||
padding: 8rpx 12rpx;
|
||||
border-radius: 20rpx;
|
||||
margin-right: 10rpx;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.search-result {
|
||||
|
||||
@@ -1,517 +0,0 @@
|
||||
<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>
|
||||
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 269 B After Width: | Height: | Size: 563 B |
|
Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 7.5 KiB |
|
Before Width: | Height: | Size: 9.5 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 401 B After Width: | Height: | Size: 809 B |
|
Before Width: | Height: | Size: 389 B After Width: | Height: | Size: 888 B |
|
Before Width: | Height: | Size: 766 B After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 679 B After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 560 B After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 489 B After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 508 B After Width: | Height: | Size: 531 B |
|
Before Width: | Height: | Size: 538 B After Width: | Height: | Size: 565 B |
|
Before Width: | Height: | Size: 628 B After Width: | Height: | Size: 637 B |
|
Before Width: | Height: | Size: 766 B After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 856 B After Width: | Height: | Size: 881 B |
|
Before Width: | Height: | Size: 864 B After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 843 B After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 55 KiB |
BIN
static/img/index/inLogo22.png
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
static/img/index/inLogo3.png
Normal file
|
After Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 962 B After Width: | Height: | Size: 975 B |
|
Before Width: | Height: | Size: 808 B After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 857 B After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 865 B After Width: | Height: | Size: 875 B |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1007 B After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 462 B After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 798 B After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 142 B After Width: | Height: | Size: 538 B |