9 Commits

Author SHA1 Message Date
yangxiao
2c222deb74 flat: 石河子项目重置 2025-12-25 10:12:52 +08:00
yangxiao
adc762f676 flat: 修改全职岗位和零工岗位问题 2025-12-23 13:06:28 +08:00
史典卓
6ad80f08e9 flat: ZKRD可以申请了 2025-08-05 18:33:09 +08:00
史典卓
233706e8d2 flat: 全部暂存 2025-05-16 21:04:01 +08:00
史典卓
dbefed8524 flat: 压缩图片,添加消息控制 2025-02-17 12:54:18 +08:00
史典卓
29cb92224b flat: 123 2024-10-24 16:28:13 +08:00
史典卓
a4ffe68ec2 flat: 国庆节暂存 2024-10-09 10:14:51 +08:00
Apcallover
6504a558ac flat:无 2024-07-25 11:22:05 +08:00
Apcallover
9fe5c37292 flat: 修改天地图 2024-07-22 15:12:17 +08:00
125 changed files with 33806 additions and 11661 deletions

113
App.vue
View File

@@ -1,68 +1,115 @@
<style lang="scss">
/* 注意要写在第一行同时给style标签加入lang="scss"属性 */
@import "@/uni_modules/uview-ui/index.scss";
@import '@/uni_modules/uview-ui/index.scss';
</style>
<script>
import website from '@/config/website.js'
import {
mapGetters
} from 'vuex'
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 { setPlatformByHostName } from '@/untils/customized.js';
import { reject } from 'lodash';
// #endif
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')
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');
}
// 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 () {},
computed: {
...mapGetters(['news']),
...mapGetters(['news', 'auth']),
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.$store.state.user.token) {} else if (value > 0) {
console.log('allUnread', value);
if (!this.$api.haslogin()) {
} 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>

View File

@@ -1,14 +1,34 @@
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({
// export const findAuth = () => request({
// url: '/api/jobslink-api/user/user/find',
// method: 'get'
// });
export const findAuth = async () => {
try {
const encrypted = await request({
url: '/api/jobslink-api/user/user/find',
method: 'get'
method: 'get',
responseType: 'text', // 接收纯文本密文
});
const decryptedStr = decryptJson(encrypted.data);
return {
data: JSON.parse(decryptedStr),
};
} catch (error) {
console.error('请求或解密过程中出错:', error);
return null;
}
};
export const cheakValue = () => request({
url: authUrl,
@@ -116,3 +136,9 @@ export const newCertification = (bakvalue, realName, idNumber, cardNumber, bankC
bankName
}
});
// 电话联系
export const getPhoneCountNumber = (params) => request({
url: "/api/jobslink-api/serve/phone",
method: 'get',
data: params
});

View File

@@ -27,7 +27,9 @@ 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) => {
@@ -35,7 +37,11 @@ export const saveApplication = (labourunionId,applType,applComment) =>{
return request({
url: "/api/jobslink-api/doc/jkLabourUnionDetail/save",
method: 'post',
data:{labourunionId,applType,applComment}
data: {
labourunionId,
applType,
applComment
}
});
}
@@ -43,5 +49,7 @@ export const saveApplication = (labourunionId,applType,applComment) =>{
export const applicationInfo = (no) => request({
url: "/api/jobslink-api/doc/jkLabourUnionDetail/list",
method: 'get',
params:{no}
params: {
no
}
});

View File

@@ -307,3 +307,9 @@ export const getPolicyContentList = (params) => request({
method: 'get',
params
})
export const userWorkSearchListAll = (params) => request({
url: '/api/jobslink-api/user/userWork/searchListAll',
method: 'get',
params
})

View File

@@ -59,6 +59,7 @@ export const setResume = ({
wage,
workplace,
telephone,
wageUpper,
workExperience
}) => {
return request({
@@ -70,7 +71,8 @@ export const setResume = ({
wage,
workplace,
telephone,
workExperience
workExperience,
wageUpper,
},
});
};

View File

@@ -73,3 +73,13 @@ 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',
});

View File

@@ -367,40 +367,36 @@ const workwageUnitCategoryState = [
const addressColumn = [
[{
value: '4',
label: "馆陶县"
value: '95',
label: "绵竹市"
},
{
value: '5',
label: "馆陶镇"
value: '185',
label: "广汉市"
},
{
value: '6',
label: "房寨镇"
value: '143',
label: "旌阳区"
},
{
value: '7',
label: "魏僧寨镇"
value: '150',
label: "罗江区"
},
{
value: '8',
label: "柴堡镇"
value: '42',
label: "什邡市"
},
{
value: '9',
label: "寿山寺"
value: '156',
label: "中江县"
},
{
value: '10',
label: " 王桥乡"
value: '44139628',
label: "经济技术开发区"
},
{
value: '11',
label: "路桥乡"
},
{
value: '12',
label: "南徐村乡"
value: '79194151',
label: "德阳市开发区"
},
]
]

View File

@@ -65,6 +65,12 @@
// uni.switchTab({
// url: item.path
// })
if (item.id === 1) {
return uni.showToast({
icon: "none",
title: '系统正在升级完善',
})
}
uni.navigateTo({
url: item.path
})

View File

@@ -7,7 +7,8 @@
</view>
<view class="head_right">
{{ companyitem.wage }}{{ wageUnit[companyitem.wageUnitCategory] }}
{{ companyitem.wage }}
</view>
</view>
@@ -34,7 +35,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>{{distance(companyitem)}}</view>
<view>--km</view>
</view>
</view>
<view class="comment" v-if='comment' @tap.stop="goComment(companyitem.missionNo)">
@@ -57,10 +58,7 @@
dateFormat
} from "../../untils/format.js";
import dictionary from '@/common/textdata.js';
import {
addZeroPrefix,
getDistanceFromLatLonInKm
} from '@/untils/tools.js'
export default {
beforeCreate: function() {},
props: {
@@ -81,9 +79,6 @@
near: {
type: Boolean,
default: false
},
position: {
default: null
}
},
data() {
@@ -100,24 +95,6 @@
}
},
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)}`

View File

@@ -57,13 +57,14 @@
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: {
@@ -85,9 +86,7 @@
type: Boolean,
default: false
},
position: {
default: null
}
location: Object
},
data() {
return {

View File

@@ -7,7 +7,9 @@
</view>
<view class="head_right">
{{ companyitem.wage }} {{ wageUnit[companyitem.wageUnitCategory] }}
{{ companyitem.wage }}
<!-- 后台处理 单位-->
<!-- {{ wageUnit[companyitem.wageUnitCategory] }} -->
</view>
</view>
<view class="ask">

View File

@@ -7,7 +7,7 @@
</view>
<view class="head_right">
{{ companyitem.wage }}{{ wageUnit[companyitem.wageUnitCategory] }}
{{ companyitem.wage }}~{{companyitem.wageUpper}}{{ wageUnit[companyitem.wageUnitCategory] }}
</view>
</view>
<view class="ask">
@@ -90,7 +90,8 @@
near: {
type: Boolean,
default: false
}
},
position: Object,
},
data() {
return {

View File

@@ -130,7 +130,7 @@
if (this.option && this.option.apikey) {
const script = document.createElement('script')
// view 层的页面运行在 www 根目录,其相对路径相对于 www 计算
script.src = 'http://api.tianditu.gov.cn/api?v=4.0&tk=' + this.option.apikey
script.src = 'https://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 = 'http://api.tianditu.gov.cn/api?v=4.0&tk=' + this.option.apikey
script.src = 'https://api.tianditu.gov.cn/api?v=4.0&tk=' + this.option.apikey
script.onload = this.initEcharts.bind(this)
document.head.appendChild(script)

View File

@@ -193,7 +193,7 @@
if (this.option && this.option.apikey) {
const script = document.createElement('script')
// view 层的页面运行在 www 根目录,其相对路径相对于 www 计算
script.src = 'http://api.tianditu.gov.cn/api?v=4.0&tk=' + this.option.apikey
script.src = 'https://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 = 'http://api.tianditu.gov.cn/api?v=4.0&tk=' + this.option.apikey
script.src = 'https://api.tianditu.gov.cn/api?v=4.0&tk=' + this.option.apikey
script.onload = this.initEcharts.bind(this)
document.head.appendChild(script)

View File

@@ -133,7 +133,7 @@
mask: true
})
uni.request({
url: 'http://api.tianditu.gov.cn/v2/search',
url: 'https://api.tianditu.gov.cn/v2/search',
method: 'GET',
data: params,
success: res => {
@@ -257,7 +257,6 @@
tk: e.apikey
},
success: res => {
//console.log(res);
if (res.data.result) {
const value = that.formatterAdressLocation(res.data.result, 1)
that.arr_list = [value]
@@ -269,7 +268,36 @@
}
},
fail: () => {
//console.log('获取失败')
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]
}
},
complete: () => {
uni.hideLoading();

View File

@@ -5,6 +5,46 @@
</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",
@@ -74,12 +114,297 @@
};
},
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()
}
},
methods: {}
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>

View File

@@ -1,410 +0,0 @@
<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>

View File

@@ -3,9 +3,11 @@ module.exports = {
// 图片地址
imageUrl: '',
// 天地图tk
apiKey: 'aa9b92683ff22363aa17baa16599cff8',
apiKey: 'e4266a5e84fe6c10f60c559967f0a03f',
// 显示标题
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',

View File

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 79 KiB

21
main.js
View File

@@ -8,6 +8,9 @@ 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"
@@ -20,9 +23,17 @@ 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) {
console.log(url)
if (needLogin) {
if (needLogin && !haslogin()) {
GoLogin()
return
}
uni.navigateTo({
@@ -30,6 +41,7 @@ function navTo(url, needLogin) {
})
}
const msg = (title, duration = 1500, mask = false, icon = 'none') => {
uni.showToast({
title,
@@ -50,12 +62,13 @@ 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
haslogin,
hasResume
}
Vue.prototype.tools = tools
Vue.prototype.$config = config

View File

@@ -1,6 +1,6 @@
{
"name" : "招聘",
"appid": "__UNI__2BC0F87",
"appid" : "__UNI__120CBFC",
"description" : "",
"versionName" : "1.0.0",
"versionCode" : "100",

5
package-lock.json generated
View File

@@ -1805,6 +1805,11 @@
"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",

View File

@@ -18,6 +18,7 @@
"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",

View File

@@ -36,7 +36,7 @@
}
},
onShow() {
if (!this.$store.state.user.token){
if (!this.$api.haslogin()){
//modalTitle, content, whetherCancel, confirmText, pageUrl, cancelUrl
showUniModal('提示','您还未登录,点击确认去登录',true,'确定','/pages/login/login','/pages/index/index')
}else{

View File

@@ -91,7 +91,7 @@
}) => {
console.log('detail,', detail)
// this.skillsId = id
this.skillsName = `${detail.parentLabel}-${detail.parentTwoLabel}-${detail.label}`
this.skillsName = `${detail.parentLabel}-${detail.label}`
})
},
methods: {
@@ -113,10 +113,12 @@
// }
},
skillLevel: function() {
uni.navigateTo({
url: `./skillLevel?id=${this.skillsId}&worktypesId=${this.worktypesId}&maxLayer=3&type=2`
url: `./skill?id=${this.worktypesId}&tradeId=${this.tradeId}&maxLayer=2&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);

View File

@@ -31,8 +31,10 @@
<view class="list_text">
{{ item.worktypes }}{{ item.skills }}
</view>
<view>
<image src="../../../static/img/left_right.png" mode=""></image>
<view class="delt" @click="removeSkills(item.id, index)">
删除
<!-- 向右滑动删除 -->
<!-- <image src="../../../static/img/left_right.png" mode=""></image> -->
</view>
</view>
</m-slide-list>
@@ -75,16 +77,20 @@
</view>
<image src="../../../static/img/right.svg" mode=""></image>
</view>
<view class="jobcontent" @click="showPickerFunc('wage')">
<!-- @click="showPickerFunc('wage')" -->
<view class="jobcontent" >
<view class="jobinfo">
<view v-bind:class="['jobAddress', { 'input-error': !myResume.wage && isShowBorder }]">
我的期望薪资
</view>
<view v-bind:class="['jobText']">
{{ myResume.wage ? myResume.wage : '请选择' }}
<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>
</view>
<image src="../../../static/img/right.svg" mode=""></image>
<!-- <image src="../../../static/img/right.svg" mode=""></image> -->
</view>
<view class="jobcontent">
<view class="jobinfo">
@@ -165,12 +171,15 @@
<!-- 省市 -->
<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"
:defaultIds="areaModal.defaultIds" :showToolbar="false" :showBottombar="true" :sourceData=areaData
:labelName="areaModal.labelName"></data-picker>
</view>
</template>
<script>
import {
GoLogin
} from '@/untils/AxiosUtils.js';
import {
mapGetters
} from 'vuex'
@@ -189,6 +198,8 @@
cloneDeep,
forIn
} from 'lodash';
import area from "./province-city-county.json"
const validateForm = {
name: '请输入企业名称',
work: '请输入工作岗位',
@@ -215,6 +226,7 @@
education: {},
wage: "",
phone: "",
wageUpper: ''
},
mySkills: [],
id: undefined,
@@ -238,16 +250,26 @@
address: '',
addressShow: false,
title: 'Hello',
// indexs: [0, 0, 8],
indexs: [0,0],
// 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()
@@ -258,7 +280,7 @@
watch: {
myResume: {
handler: function(newVal, oldVal) {
if (newVal.city && newVal.education && newVal.wage && newVal.phone) {
if (newVal.city && newVal.education && newVal.wage && newVal.phone && newVal.wageUpper) {
this.canSubMit = true;
} else {
this.canSubMit = false;
@@ -340,6 +362,7 @@
label: data.education
},
wage: data.wage,
wageUpper: data.wageUpper,
phone: data.telephone
}
this.isShowButton = false;
@@ -478,6 +501,14 @@
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];
@@ -507,7 +538,8 @@
city,
education,
phone,
wage
wage,
wageUpper,
} = this.myResume
// 中国大陆手机号码正则表达式
const mobileRegex = /\b(1[3-9]\d{9})\b/;
@@ -515,7 +547,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, "电话号码格式正确");
@@ -525,10 +557,12 @@
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 {
@@ -809,4 +843,48 @@
.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>

File diff suppressed because it is too large Load Diff

View File

@@ -1,15 +1,27 @@
<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 city" :key="index">
<block v-for="(item, index) in filteredResults" :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">
@@ -38,6 +50,10 @@
label: '',
tradeId: '',
searchKeyword: '', // 模糊关键字搜索
isSearchFocused: true,
searchFields: ['name'],
type: 1
}
},
computed: {
@@ -51,6 +67,19 @@
} 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() {
@@ -64,12 +93,15 @@
tradeId,
parentId,
layer,
maxLayer
maxLayer,
type
}) {
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: {
@@ -88,11 +120,14 @@
},
goCityInfo(item) {
uni.navigateTo({
url: `./skill?layer=${this.layer + 1}&maxLayer=${this.maxLayer}&parentId=${item.id}&parentLabel=${item.name}`
url: `./skill?layer=${this.layer + 1}&maxLayer=${this.maxLayer}&parentId=${item.id}&parentLabel=${item.name}&type=${this.type}`
})
},
comfirm: function() {
if (this.id) {
console.log(this.type)
if (this.type == '1') {
console.log('00000000')
uni.$emit('setworkTypes', {
detail: {
id: this.id,
@@ -100,6 +135,17 @@
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
})
@@ -111,6 +157,22 @@
}
},
// 模糊搜索
handleSearch() {
console.log(this.searchKeyword)
},
// 失去焦点
handleSearchBlur() {
},
// 获取对象深层值
getObjectValue(obj, path) {
return path.split('.').reduce((current, key) => {
return current && current[key] !== undefined ? current[key] : ''
}, obj)
},
}
}
</script>
@@ -186,4 +248,17 @@
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>

View File

@@ -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" :position="userLocation" :noApply="false"></company-list>
<company-list :companyitem="item" :noApply="false" :location="userLocation"></company-list>
<view class="baddd"></view>
<!-- <block>
<image src="/static/img/tab.orange.svg" mode="" v-if="item.status === 1"></image>

View File

@@ -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" :position="userLocation" :noApply="false"></company-list>
<company-list :companyitem="item" :noApply="false"></company-list>
<view class="baddd"></view>
<!-- <block>
<image src="/static/img/tab.orange.svg" mode="" v-if="item.status === 1"></image>
@@ -33,9 +33,7 @@
import {
myMission
} from '@/api/mission.js';
import {
mapGetters
} from 'vuex'
export default {
components: {
vTabs,
@@ -68,9 +66,6 @@
onPullDownRefresh:function(){
this.init()
},
computed: {
...mapGetters(['userLocation']),
},
methods: {
init(){
this.current = 1

View File

@@ -79,7 +79,7 @@
{
"path": "pages/project/newProject",
"style": {
"navigationBarTitleText": "馆陶县灵活就业平台",
"navigationBarTitleText": "德阳市灵活就业平台",
"navigationBarBackgroundColor": "#FFFFFF",
"enablePullDownRefresh": true
}

View File

@@ -235,7 +235,7 @@
</view>
<view class="homeFooter">
<view class="atBottom">馆陶县人力资源和社会保障局主办</view>
<view class="atBottom">德阳市人力资源和社会保障局主办</view>
<!-- <image src="../../static/img/index/seeMore.png" mode="" @click="goMore()"></image> -->
</view>
<policy-content ref="pContent"></policy-content>
@@ -289,40 +289,25 @@
policyContentList: [],
policyType: 1,
swiperType: 1,
isResume: true,
IsResume: true,
};
},
onLoad: function(options) {
if (this.$api.haslogin()) {
this.$store.dispatch('getResumeInfo')
}
},
onShow: function() {
if (!this.$store.state.user.token) {
uni.reLaunch({
url: '/pages/login/login'
})
return
}
this.download()
this.getSwiperList()
this.getPolicy()
if (this.$api.haslogin()) {
this.$store.dispatch('refreshAuthState').then((e) => {
var auth = this.$store.state.auth
if (!auth.bankCardState) {
this.step()
}
})
this.download()
this.getSwiperList()
this.getPolicy()
if (this.isResume) {
this.isResume = false
myResume().then(res => {
const data = res.data.data
if (!(data.education && data.telephone && data.wage && data.workplace)) {
this.goures()
this.$api.sleep(1000).then(() => {
this.$api.msg('请输入基本信息')
})
}
})
}
},
onReady() {
@@ -399,11 +384,11 @@
})
},
download: function() {
this.isLogin = this.$store.state.user.token ? true : false;
this.isLogin = this.$api.haslogin() ? true : false;
newMission().then(res => {
this.companyList = res.data.data;
});
if (this.$store.state.user.token) {
if (this.$api.haslogin()) {
uni.$emit('newsReadChange')
this.$store.dispatch("getUnreadNum");
recMission().then(res => {
@@ -412,25 +397,7 @@
};
},
goLocation: function() {
if (!this.$store.state.user.token) {
uni.showModal({
title: '提示',
content: '您还未登录,点击确认去登录',
success: function(res) {
if (res.confirm) {
uni.redirectTo({
url: "/pages/login/login"
});
} else if (res.cancel) {
return
}
}
});
} else {
uni.navigateTo({
url: '../mapSeach/mapSeach'
});
}
this.navTo('../mapSeach/mapSeach', true)
},
goResume: function() {
uni.navigateTo({
@@ -444,40 +411,16 @@
});
},
goures: function() {
if (!this.$store.state.user.token) {
uni.showModal({
title: '提示',
content: '您还未登录,点击确认去登录',
success: function(res) {
if (res.confirm) {
uni.redirectTo({
url: "/pages/login/login"
});
} else if (res.cancel) {
return
}
}
});
} else {
uni.navigateTo({
url: '/pageMy/my/resume/index'
});
}
this.navTo('/pageMy/my/resume/index', true)
},
toNewTask() {
uni.navigateTo({
url: `/pages/project/newProject?tabIndex=${0}`
});
this.navTo(`/pages/project/newProject?tabIndex=${0}`, false)
},
toNewWork() {
uni.navigateTo({
url: `/pages/project/newProject?tabIndex=${1}`
});
this.navTo(`/pages/project/newProject?tabIndex=${1}`, false)
},
toNewProject() {
uni.navigateTo({
url: `/pages/project/newProject?tabIndex=${2}`
});
this.navTo(`/pages/project/newProject?tabIndex=${2}`, false)
},
toArticleDetail(id) {
if (id) {
@@ -487,49 +430,11 @@
}
},
gouserSet: function() {
if (!this.$store.state.user.token) {
uni.showModal({
title: '提示',
content: '您还未登录,点击确认去登录',
success: function(res) {
if (res.confirm) {
uni.redirectTo({
url: "/pages/login/login"
});
} else if (res.cancel) {
return
}
}
});
} else {
uni.navigateTo({
url: '/pageMy/setUserBase/index'
});
}
this.navTo('/pageMy/setUserBase/index', true)
},
goSeach: function() {
if (!this.$store.state.user.token) {
uni.showModal({
title: '提示',
content: '您还未登录,点击确认去登录',
success: function(res) {
if (res.confirm) {
uni.redirectTo({
url: '/pages/login/login'
})
} else if (res.cancel) {
return
}
}
});
} else {
// if (this.keywords) {
uni.navigateTo({
url: '../seach/seach?keywords=' + this.keywords
});
this.navTo('../seach/seach?keywords=' + this.keywords, true)
this.keywords = ''
// }
}
},
getSwiperList() {
getSwiperList(this.swiperType).then(res => {
@@ -578,7 +483,7 @@
padding: 24rpx;
.top_log {
background: url(@/static/img/index/inLogo.png) no-repeat center center;
background: url(@/static/img/title-pg.png) no-repeat center center;
background-size: cover;
height: 60rpx;
width: 450rpx;
@@ -613,7 +518,7 @@
}
.home_logo {
background: url(@/static/img/index/inLogo.png) no-repeat center center;
background: url(@/static/img/title-pg.png) no-repeat center center;
background-size: cover;
height: 76rpx;
width: 560rpx;

View File

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

View File

@@ -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.$store.state.user.token) {
if (this.$api.haslogin()) {
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,8 +106,7 @@
}).catch((err) => {
this.loading = false
// this.$refs.code.refushCode()
// location.href = "https://dy12333.org.cn/h5/"
this.$api.msg('登录失败')
location.href = "https://dy12333.org.cn/h5/"
});
// }
}
@@ -169,15 +168,4 @@
}
/* #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>

View File

@@ -5,12 +5,11 @@
<slot></slot>
<view v-if="!hideBottom" class="bottomt">
<view class="bottomt-box">
<view class="check-icon" @click="checkChanged">
<image v-if="userChecked" :src="checked" style="width: 30rpx;height:30rpx;">
</image>
<!-- <view class="check-icon" @click="checkChanged">
<image v-if="userChecked" src="../../static/img/checkOk.png" 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>
@@ -19,15 +18,12 @@
</template>
<script>
import checked from '../../static/img/checkOk.png'
import {
mapGetters
} from 'vuex'
import {mapGetters} from 'vuex'
export default {
data(){
return{
checked
}
},
props: {
@@ -85,14 +81,12 @@
left: 0;
width: 100%;
text-align: center;
.bottomt-box{
display: flex;
justify-content: center;
align-items: center;
}
}
.check-icon{
font-size: 28rpx;
font-weight: 400;
@@ -101,7 +95,6 @@
width: 30rpx;
height: 30rpx;
margin-right: 12rpx;
.noneCheck{
width: 26rpx;
height: 26rpx;

View File

@@ -4,7 +4,8 @@
<!-- 这里是状态栏 -->
</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">
@@ -25,7 +26,8 @@
附近零工岗位
</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>
@@ -186,7 +188,8 @@
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;

View File

@@ -31,7 +31,7 @@
</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>营业时间
</view>

View File

@@ -6,12 +6,13 @@
<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="userContent">
<view style="margin-right: 40rpx;">实名认证{{ auth.realNameState ? '已认证' : '未认证' }}</view>
<view style="margin-right: 40rpx">
实名认证{{ auth.realNameState ? '已认证' : '未认证' }}
</view>
<!-- <view>银行卡核验{{auth.bankCardState?'已认证':'未认证'}}</view> -->
</view>
</view>
@@ -39,7 +40,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>
@@ -77,6 +78,11 @@
投诉建议
<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>
@@ -122,45 +128,54 @@
</template>
<script>
import {
mapState,
mapGetters
} from 'vuex'
import {
phoneFilter,
stringFilterNum
} from '@/untils/format.js'
import {
labourUnionInfo
} from '@/api/federation.js'
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 {
data() {
return {
federationStatus: false
}
federationStatus: false,
};
},
onLoad() {
this.$store.dispatch('getMobileIsCms')
// if (this.$store.state.user.token && this.authPass) {
// this.$store.dispatch('getMobileIsCms')
// if (this.$api.haslogin() && this.authPass) {
// this.$store.dispatch('getVipCode')
// }
},
onShow() {
if (!this.$store.state.user.token) {
uni.redirectTo({
url: '/pages/login/login'
})
if (/token/g.test(location.href)) {
this.$api.sleep(2000).then(() => {
if (!this.$api.haslogin()) {
GoLogin();
} else {
uni.$emit('newsReadChange')
this.$store.dispatch('refreshAuthState')
uni.$emit('newsReadChange');
this.$store.dispatch('refreshAuthState');
}
});
} else {
if (!this.$api.haslogin()) {
GoLogin();
} else {
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(() => {
@@ -174,22 +189,22 @@
// },
go(url) {
uni.navigateTo({
url
})
url,
});
},
makePhoneCall: function () {
uni.makePhoneCall({
phoneNumber: "18500206848"
})
phoneNumber: '18500206848',
});
},
phoneFilter,
stringFilterNum
stringFilterNum,
},
computed: {
...mapState(['user']),
...mapGetters(['userInfo', 'auth', 'authPass'])
}
}
...mapGetters(['userInfo', 'auth', 'authPass']),
},
};
</script>
<style>
@@ -205,7 +220,7 @@
margin: 30rpx;
font-size: 32rpx;
font-weight: 400;
color: #6F5931;
color: #6f5931;
display: flex;
justify-content: space-between;
align-items: center;
@@ -216,12 +231,12 @@
.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;
}
@@ -244,6 +259,11 @@
margin-right: 0;
}
.imgswitch {
margin-left: auto;
margin-right: 0;
}
.btnList image {
width: 52rpx;
height: 52rpx;
@@ -297,14 +317,14 @@
.userContent {
font-family: PingFangSC-Regular;
font-size: 26rpx;
color: #FFFFFF;
color: #ffffff;
display: flex;
}
.userTel {
font-family: PingFangSC-Medium;
font-size: 36rpx;
color: #FFFFFF;
color: #ffffff;
}
.userRight {
@@ -319,7 +339,7 @@
margin-right: 20rpx;
float: left;
border-radius: 200rpx;
background-color: rgba(255, 255, 255, .3);
background-color: rgba(255, 255, 255, 0.3);
}
.userTitle {
@@ -327,7 +347,7 @@
}
.head {
background-color: #1B66FF;
background-color: #1b66ff;
width: 100%;
height: 200rpx;
padding-top: 200rpx;

View File

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

View File

@@ -3,27 +3,16 @@
<view class="app-top">
<view class="top-search">
<view class="top-input">
<input
class="put"
type="text"
placeholder-class="put-pla"
v-model="searchValue"
placeholder="搜索附近岗位或任务"
/>
<input class="put" type="text" placeholder-class="put-pla" v-model="searchValue"
placeholder="搜索附近岗位或任务">
<button class="input-btn" @tap="search">搜索</button>
</view>
</view>
</view>
<view class="view-map">
<!-- <super-map ref="uMap" style="width: 100%;height: 100%;" :latitude="latitude" :longitude="longitude"
<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>
:MapUrl="$config.supperMap" :flag-tip="false"></super-map>
<!-- <view id="map" ></view> -->
<!-- <map style="width: 100%;height: 100%;" scale="16" :latitude="latitude" :longitude="longitude"
:markers="covers" @markertap="clickmark" @regionchange="show = false"></map> -->
@@ -47,8 +36,7 @@
{{productInfo.experienceDesc}} | {{education[productInfo.education]}}
</view>
<button class="btns" hover-class="active" @tap="openMap">
<image class="btn-img" src="../../static/img/direction2.png" />
查看详情
<image class="btn-img" src="../../static/img/direction2.png" />查看详情
</button>
</view>
</view>
@@ -61,10 +49,14 @@
</template>
<script>
import { addZeroPrefix, getDistanceFromLatLonInKm } from '@/untils/tools.js';
import {
addZeroPrefix,
getDistanceFromLatLonInKm
} from '@/untils/tools.js'
import testData from '@/common/textdata.js';
import { geQueryJobsByNearby } from '@/api/map.js';
import { mapGetters } from 'vuex';
import {
geQueryJobsByNearby
} from '@/api/map.js'
let taskpoint = require('../../static/img/taskpoint.png');
let gwpoint = require('../../static/img/gwpoint.png');
let mypoint = require('../../static/img/mypoint.png');
@@ -75,7 +67,7 @@ export default {
show: false,
ID: 1,
searchValue: '',
latitude: 31.13398,
latitude: 31.133980,
longitude: 104.404419,
covers: [],
rateValue: 2,
@@ -83,44 +75,34 @@ export default {
};
},
computed: {
...mapGetters(['userLocation']),
distance() {
const { lon, lat } = this.productInfo;
const {
lon,
lat
} = this.productInfo
if (lon) {
const { m, km } = getDistanceFromLatLonInKm(lat, lon, this.latitude, this.longitude);
return m > 1000 ? `${km.toFixed(2)}km` : `${m.toFixed(2)}m`;
const {
m,
km
} = getDistanceFromLatLonInKm(lat, lon, this.latitude, this.longitude)
return m > 1000 ? `${km.toFixed(2)}km` : `${m.toFixed(2)}m`
}
return '无'
}
return '无';
},
},
mounted() {
const _this = this;
uni.getLocation({
type: 'wgs84',
success: function (res) {
console.log(res, '成功获得周边信息');
const { longitude, latitude } = res;
_this.latitude = latitude;
_this.longitude = longitude;
const _this = this
console.log(this.$store.state.user.userLocation)
if (this.$store.state.user.userLocation) {
const {
latitude,
longitude
} = this.$store.state.user.userLocation
_this.getList(longitude, latitude).then((covers) => {
_this.covers = covers;
_this.$nextTick(() => {
_this.$refs.tMap.addFeature(covers);
});
});
},
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);
_this.$refs.uMap.addFeature(covers)
})
} else {
this.$store.dispatch('getUserLocation');
_this.$api.msg('无法获得周边信息')
}
},
onShow() {
@@ -136,43 +118,37 @@ export default {
// })
},
methods: {
onSelect(item) {},
openMap(lon, lat) {
//打开地图,并将门店位置传入
// type: post 岗位 mission 任务
switch (this.productInfo.type) {
case 'post':
const no = encodeURIComponent(this.productInfo.id);
const no = encodeURIComponent(1)
uni.navigateTo({
url: `/pages/projectInfo/workInfo?workId=${encodeURIComponent(no)}&isCan=${1}`,
});
break;
url: `/pages/projectInfo/workInfo?workId=${encodeURIComponent(no)}&isCan=${1}`
})
break
case 'mission':
const no1 = encodeURIComponent(this.productInfo.missionNo);
const no1 = encodeURIComponent(this.productInfo.missionNo)
uni.navigateTo({
url: `/pages/projectInfo/projectInfo?missionNo=${no1}&isCan=${1}`,
});
break;
url: `/pages/projectInfo/projectInfo?missionNo=${no1}&isCan=${1}`
})
break
}
},
search() {
const _this = this;
uni.getLocation({
type: 'wgs84',
success: function (res) {
const { longitude, latitude } = res;
_this.latitude = latitude;
_this.longitude = longitude;
const _this = this
if (this.$store.state.user.userLocation) {
const {
latitude,
longitude
} = this.$store.state.user.userLocation
_this.getList(longitude, latitude).then((covers) => {
_this.$api.msg('成功获得周边信息');
_this.$refs.uMap.addFeature(covers);
});
},
fail: function (err) {
_this.$api.msg('无法获得周边信息');
},
complete: function (e) {},
});
_this.$refs.uMap.addFeature(covers)
})
} else {
_this.$api.msg('无法获得周边信息')
}
// this.getList(this.longitude, this.latitude).then((covers) => {
// this.$api.msg('成功获得周边信息')
// console.log(covers)
@@ -180,25 +156,25 @@ export default {
// })
},
clickmark(cover) {
if (cover.markerId === 1) return;
if (cover.markerId === 1) return
this.show = true;
this.productInfo = cover.info;
this.productInfo = cover.info
},
mockGetLocation() {
return new Promise((resolve) => {
resolve({
longitude: 104.40632,
latitude: 31.122989,
altitude: null,
accuracy: 25.998,
altitudeAccuracy: null,
heading: null,
speed: null,
errMsg: 'getLocation:ok',
verticalAccuracy: 0,
horizontalAccuracy: 25.998,
});
});
"longitude": 104.40632,
"latitude": 31.122989,
"altitude": null,
"accuracy": 25.998,
"altitudeAccuracy": null,
"heading": null,
"speed": null,
"errMsg": "getLocation:ok",
"verticalAccuracy": 0,
"horizontalAccuracy": 25.998
})
})
},
async getList(lon, lat) {
return new Promise(async (resolve) => {
@@ -206,17 +182,14 @@ export default {
lon,
lat,
distanceRange: 20,
taskTitle: this.searchValue,
};
let resData = await geQueryJobsByNearby(params);
taskTitle: this.searchValue
}
let resData = await geQueryJobsByNearby(params)
if (resData.data.code === 200) {
const arr = resData.data.data.map((item) => ({
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,
@@ -226,8 +199,8 @@ export default {
fontSize: 10,
borderColor: 'blue',
},
info: item,
}));
info: item
}))
arr.push({
id: 1,
latitude: lat,
@@ -235,17 +208,15 @@ export default {
iconPath: mypoint,
title: '我的位置',
width: 20,
height: 20,
lon: lat,
lat: lon,
label: '我的位置',
});
resolve(arr);
height: 20
})
resolve(arr)
}
})
}
}
}
});
},
},
};
</script>
<style lang="scss" scoped>
@@ -262,8 +233,8 @@ export default {
}
.active {
background: #eaeaea !important;
color: #afafaf;
background: #EAEAEA !important;
color: #AFAFAF;
}
.card_mark {
@@ -271,11 +242,11 @@ export default {
width: 56rpx;
height: 28rpx;
border-radius: 12rpx 0 12rpx 12rpx;
background: linear-gradient(157deg, #a043c1 0%, #4133a2 100%);
background: linear-gradient(157deg, #A043C1 0%, #4133A2 100%);
font-size: 28rpx;
font-family: PingFang-SC-Bold, PingFang-SC;
font-weight: bold;
color: #ffffff;
color: #FFFFFF;
display: flex;
align-items: center;
justify-content: center;
@@ -303,7 +274,7 @@ export default {
.swiper-item {
width: 660rpx;
height: 406rpx;
background: #ffffff;
background: #FFFFFF;
box-shadow: 0rpx 2rpx 4rpx 0rpx rgba(0, 0, 0, 0.5);
border-radius: 27rpx;
overflow: hidden;
@@ -333,12 +304,12 @@ export default {
justify-content: center;
width: 223rpx;
height: 64rpx;
background: linear-gradient(to right, #a043c1 0%, #4133a2 100%);
background: linear-gradient(to right, #A043C1 0%, #4133A2 100%);
border-radius: 15rpx;
color: #ffffff;
color: #FFFFFF;
font-size: 26rpx;
font-weight: 800;
color: #ffffff;
color: #FFFFFF;
line-height: 64rpx;
.btn-img {
@@ -350,6 +321,8 @@ export default {
}
}
}
}
}
@@ -381,7 +354,7 @@ export default {
.put {
padding-left: 30rpx;
height: 72rpx;
background: #ffffff;
background: #FFFFFF;
border-radius: 36rpx;
}
@@ -398,12 +371,12 @@ export default {
right: 30rpx;
top: 50%;
transform: translate(0, -50%);
color: #ffffff;
color: #FFFFFF;
width: 120rpx;
height: 56rpx;
line-height: 56rpx;
font-size: 28rpx;
background: linear-gradient(157deg, #a043c1 0%, #4133a2 100%);
background: linear-gradient(157deg, #A043C1 0%, #4133A2 100%);
border-radius: 29rpx;
}
}

View File

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

View File

@@ -3,30 +3,25 @@
<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">
<view class="typeButtonLeft">
<view
v-for="(item, index) in nonReactiveArray"
:key="index"
:class="['typeButton', index == activeTab ? 'activeButton' : '']"
@click="changeTab(index)"
>
<scroll-view class="typeButtonLeft" scroll-x="true" scroll-left="0">
<view v-for="(item, index) in nonReactiveArray" :key="index"
:class="['typeButton', index == activeTab ? 'activeButton' : '']" @click="changeTab(index)">
{{item}}
</view>
</view>
</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">
筛选
@@ -41,7 +36,7 @@
</u-popup>
<block v-if="activeTab == 0|| this.activeTab === 2">
<view v-if="newList.length > 0" style="padding-bottom: 20rpx">
<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>
@@ -61,14 +56,16 @@
</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" :near="activeTab === 0"></workList>
<workList :companyitem="item" :position="userLocation" :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 ">
@@ -99,6 +96,7 @@
<cs-button></cs-button>
</view>
</view>
</template>
@@ -106,8 +104,11 @@
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 workList from '@/components/companyList/workList.vue'
import userrecruitList from './userrecruitList.vue'
import {
GoLogin
} from '@/untils/AxiosUtils.js';
import {
newMissionAll,
recommendMission,
@@ -116,18 +117,26 @@ import {
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 {
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';
import {
mapGetters
} from 'vuex'
export default {
components: {
vTabs,
companyList,
verticalMenu,
workList,
userrecruitList,
userrecruitList
},
computed: {
...mapGetters(['userLocation']),
@@ -143,79 +152,84 @@ export default {
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()
this.$store.dispatch('getUserLocation')
},
onShow: function() {
this.download();
if (this.$store.state.user.token) {
this.$store.dispatch('refreshAuthState').then((e) => {
var auth = this.$store.state.auth;
if (!auth.bankCardState) {
this.step();
}
});
}
const value = uni.getStorageSync('active');
if (value) {
this.activeTab = value;
uni.removeStorageSync('active');
if (/token/g.test(location.href)) {
this.$api.sleep(2000).then(() => {
this.showInit()
})
} else {
this.showInit()
}
},
/*页面滚动到底部 换页*/
onReachBottom: function() {
this.upLoad();
this.upLoad()
},
/*下拉刷新*/
onPullDownRefresh: function() {
if (!this.$store.state.user.token) {
if (!this.$api.haslogin()) {
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: `检查到您还未实名认证,实名认证之后才可进行操作哦`,
@@ -223,59 +237,42 @@ export default {
confirmText: '立即认证',
success: function(res) {
if (res.confirm) {
that.goSign(0);
that.goSign(0)
} else if (res.cancel) {
that.step();
that.step()
}
that.open = false
}
that.open = false;
},
});
},
// 步骤
goSign(active) {
uni.navigateTo({
url: `/pages/projectInfo/signContract?active=${active}`,
});
url: `/pages/projectInfo/signContract?active=${active}`
})
},
goResume: function() {
uni.navigateTo({
url: '/pageMy/my/resume/addSkill',
});
},
/*定位*/
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) {},
});
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;
var location = point.latitude + ',' + point.longitude
getcoder(location, encodeURI(that.key), 0).then(res => {
that.currentAddress = res.data.result.address
});
},
goSeach: function() {
uni.navigateTo({
url: '../seach/seach',
});
url: '../seach/seach'
})
},
gomap: function() {
uni.navigateTo({
url: '../mapSeach/mapSeach',
});
url: '../mapSeach/mapSeach'
})
},
changeTab: function(e) {
this.isSearch = false;
@@ -289,8 +286,9 @@ export default {
// var val=encodeURIComponent(data)
uni.navigateTo({
url: `/pages/user/policyContent?id=${data}`,
});
url: `/pages/user/policyContent?id=${data}`
})
} else {
// uni.showToast({
// title:'暂无内容',
@@ -303,34 +301,39 @@ export default {
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) => {
const isAll = this.activeTab === 3 ? 1 : 0
nearMission(this.nearPage.current, this.nearPage.size, isAll).then(res => {
if (this.nearPage.current === 1) {
this.companyList = [];
}
@@ -339,12 +342,12 @@ export default {
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) => {
const isAll = this.activeTab === 2 ? 1 : 0
newMissionAll(this.newPage.current, this.newPage.size, '', isAll).then(res => {
if (this.newPage.current === 1) {
this.newList = [];
}
@@ -353,28 +356,30 @@ export default {
this.newList = this.newList.concat(res.data.data.records);
this.newPage.current += 1;
}
});
})
},
//上拉加载
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 {
@@ -382,11 +387,11 @@ export default {
}
} 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
@@ -408,23 +413,24 @@ export default {
//下拉刷新
download: function() {
this.isSearch = false;
this.$store.dispatch('getUserLocation')
if (this.activeTab === 0 || this.activeTab === 2) {
this.nearPage.current = 1;
this.newPage.current = 1;
this.getLocation();
this.getNewList();
this.getNewList()
setTimeout(function() {
uni.stopPullDownRefresh();
}, 1000);
return;
return
}
if (this.activeTab === 1 || this.activeTab === 3) {
this.nearPage.current === 1;
this.getNearList();
this.nearPage.current = 1;
this.newPage.current = 1;
this.getNearList()
setTimeout(function() {
uni.stopPullDownRefresh();
}, 1000);
return;
return
}
// if (this.activeTab === 2) {
// this.policyPage.current = 1;
@@ -436,98 +442,111 @@ export default {
// }
},
getData: function() {
if (!this.$store.state.user.token) {
uni.redirectTo({
url: '/pages/login/login',
});
} else {
// if (!this.$api.haslogin()) {
// uni.redirectTo({
// url: "/pages/login/login"
// });
// } else {
uni.$emit('newsReadChange');
this.nearPage.current = 1;
this.policyPage.current = 1;
this.newPage.current = 1;
this.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;
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('-'),
};
if (params.cityId === '') {
delete params.cityId;
cityId: areaModal?.info.map((v) => v.areaName).join('-')
}
nearMissionSearch(params).then((res) => {
if (params.cityId === '') {
delete params.cityId
}
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);
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('-'),
};
if (params.cityId === '') {
delete params.cityId;
cityId: areaModal?.info.map((v) => v.areaName).join('-')
}
newMissionAllSearch(params).then((res) => {
if (params.cityId === '') {
delete params.cityId
}
newMissionAllSearch(params).then(res => {
if (this.nearPage.current === 1) {
this.companyList = [];
}
@@ -536,26 +555,30 @@ export default {
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;
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('-'),
};
if (params.cityId === '') {
delete params.cityId;
wageUnitCategory: submitData["wageUnitCategory"],
cityId: areaModal?.info.map((v) => v.areaName).join('-')
}
recommendMissionSearch(params).then((res) => {
if (params.cityId === '') {
delete params.cityId
}
recommendMissionSearch(params).then(res => {
if (this.newPage.current === 1) {
this.newList = [];
}
@@ -565,10 +588,10 @@ export default {
this.newList = this.newList.concat(res.data.data.records);
this.newPage.current += 1;
}
});
})
},
},
};
}
}
</script>
<style scoped>
@@ -593,16 +616,20 @@ export default {
padding: 20rpx;
}
.searchName {
margin-right: 28rpx;
}
.content {
background-color: #f3f4f8;
padding-top: 20rpx;
min-height: 80vh;
/* min-height: 80vh; */
min-height: calc(100vh - var(--window-top) - var(--status-bar-height) - var(--window-bottom));
}
.screenButton {
/* position: absolute;
top: 10px;
@@ -614,6 +641,7 @@ export default {
line-height: 30px;
font-size: 14px;
background-color: #fff;
margin: 20rpx 0;
}
.typeButtonWrapper {
@@ -625,9 +653,8 @@ export default {
}
.typeButtonLeft {
display: flex;
width: 80%;
overflow-x: scroll;
white-space: nowrap;
}
.typeButton {
@@ -637,6 +664,8 @@ export default {
border-radius: 50px;
margin-right: 10rpx;
white-space: nowrap;
margin: 20rpx 10rpx 20rpx 0;
display: inline-block;
}
.activeButton {
@@ -654,8 +683,10 @@ export default {
position: absolute;
top: 3px;
right: 3px;
}
.topseach {
width: 25px;
height: 25px;
@@ -720,6 +751,8 @@ export default {
margin-top: 300rpx;
}
.popUpWrapper {
width: 100%;
}

View File

@@ -9,46 +9,36 @@
</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="fee">
{{info.wage || '暂无'}}
<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}}
</view>
</view>
<view class="head">
<view class="proname proneed">
岗位要求
<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">学历要求{{ education[info.education] || '暂无' }}</view>
</view>
<view class="prolist">
<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 class="protype">经验要求{{ experience[info.experienceDesc] || '暂无' }}</view>
</view>
<view class="prolist proint" style="font-weight: bold; color: #333">岗位描述</view>
<view class="prolist description">
{{ info.missionDesc || '暂无' }}
</view>
@@ -59,15 +49,16 @@
</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">
企业信息
@@ -77,9 +68,7 @@
</view> -->
</view>
<view class="head">
<view class="proname proneed">
地址
</view>
<view class="proname proneed">地址</view>
<!-- <view class="prolist">
<view class="protype">
联系人{{info.callName}}
@@ -94,78 +83,116 @@
<!-- <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> -->
<zhuo-tianditu-MultiPoint-Mapper ref="tMap" :api-key="$config.apiKey"></zhuo-tianditu-MultiPoint-Mapper>
<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>
</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" 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
@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">申请</view>
</view>
<view class="btn" v-if="isShow !== '0' && status !== 0">
<!-- <view class="bottombtn lookContract" @click="lookMask">查看合同</view> -->
<view @click="collect"
style="display: flex;align-items: center;margin-right: 10rpx;flex-direction: column;">
<image v-if="collectStatus == 0" src="../../static/img/collect.png" style="width: 36rpx;height: 36rpx;"
mode=""></image>
<image v-if="collectStatus == 1" src="../../static/img/collect_yes.png"
style="width: 36rpx;height: 36rpx;" mode=""></image>
<view v-if="collectStatus == 0" style="font-size: 26rpx;color:#707070;margin-top:10rpx;">收藏</view>
<view v-if="collectStatus == 1" style="font-size: 20rpx;color:#707070;margin-top:10rpx;">已收藏</view>
<view
@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"
@click="tools.onDialingPhoneNumber(info.callTel)">{{ info.callTel }}</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" v-if="info.callTel" @click="tools.onDialingPhoneNumber(info.callTel)">
{{ info.callTel }}
</span>
<span style="color: #333333" v-else>无联系方式</span>
</view>
</view>
</u-popup>
@@ -173,7 +200,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>
@@ -183,46 +210,27 @@
<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 {
setRead
} from '@/api/news.js';
import {
checkPass
} from '@/api/auth.js';
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';
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 {
@@ -236,15 +244,18 @@
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: '',
@@ -252,15 +263,20 @@
maxlength: 6,
collectStatus: 0, // 收藏状态
showPopUp: false,
isInvite: false
isInvite: false,
wageUnitdata: {
1:'计件',
2:'面议'
}
};
},
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);
@@ -275,32 +291,50 @@
this.id = option.id; //消息id
}
if (option.isInvite) {
this.isInvite = true
this.isInvite = true;
}
},
onShow: function () {
this.showDetail = true
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();
}
})
});
},
callPhone() {
async callPhone() {
getPhoneCountNumber();
if (!this.$api.haslogin()) {
GoLogin();
return;
}
if (!this.$api.hasResume()) {
this.navTo('/pageMy/my/resume/index', true);
return;
}
this.showPopUp = true;
},
closePopUp() {
@@ -308,25 +342,24 @@
},
// 获取收藏状态
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 () {
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) => {
@@ -340,46 +373,47 @@
// 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(500).then(() => {
this.$refs.tMap.addFeature([{
id: self.info.id,
label: self.info.missionTitle,
if (!(self.info.lat && self.info.lat === -1)) {
self.$refs.uMap.initMap({
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");
})
}
}, error => {
console.log(error);
setRead(self.id).then((res) => {
self.$store.commit('SET_READ');
});
}
},
(error) => {
console.log(error);
}
);
},
submit: function () {
const _that = this
if (!this.$api.haslogin()) {
GoLogin();
return;
}
if (!this.$api.hasResume()) {
this.navTo('/pageMy/my/resume/index', true);
return;
}
const _that = this;
uni.showModal({
title: '提示',
content: '请确认申请,申请后不能撤销',
success: function (res) {
if (res.confirm) {
if (!_that.$store.state.user.token) {
GoLogin()
return
}
if (_that.loading) return
const auth = _that.auth
const contractOn = _that.info.contractOn
const sealOk = _that.autograph && _that.autograph.data && _that.autograph
.data.signSrcUrl
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()
@@ -390,88 +424,109 @@
// 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
title: '请求中...',
});
this.loading = true;
var obj = {
pass: password
}
checkPass(obj).then(res => {
this.submitTask()
this.closeShowCode()
}).catch(err => {
this.loading = false
pass: password,
};
checkPass(obj)
.then((res) => {
this.submitTask();
this.closeShowCode();
})
.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`,
});
},
// wageUnit(data) {
// let rel = {};
// data.forEach((element) => {
// rel[element.value] = element.label;
// });
// // return rel;
// }
},
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) {
@@ -480,8 +535,8 @@
// return '无'
// }
// }
}
}
},
};
</script>
<style lang="scss">
@@ -492,7 +547,7 @@
position: absolute;
right: 36rpx;
top: 120rpx;
color: #1B66FF;
color: #1b66ff;
transform: rotate(45deg);
font-size: 40px;
}
@@ -526,15 +581,14 @@
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;
background-color: #ffffff;
margin: 30rpx;
position: relative;
border-radius: 4px;
@@ -544,7 +598,7 @@
.close {
width: 23px;
height: 23px;
color: #1B66FF;
color: #1b66ff;
position: fixed;
right: 60rpx;
top: 60rpx;
@@ -560,10 +614,10 @@
height: 90rpx;
line-height: 90rpx;
text-align: center;
background: #1B66FF;
background: #1b66ff;
font-size: 36rpx;
font-weight: 400;
color: #FFFFFF;
color: #ffffff;
}
}
@@ -577,14 +631,14 @@
}
.bottombtn {
background-color: #1B66FF;
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 {
@@ -626,7 +680,6 @@
flex-wrap: wrap;
justify-content: flex-start;
margin: 20rpx 0;
}
.proint {
@@ -636,13 +689,12 @@
.proneed {
font-size: 32rpx !important;
}
.fee {
font-family: PingFangSC-Medium;
font-size: 32rpx;
color: #F46161;
color: #f46161;
margin-top: 30rpx;
}

View File

@@ -9,49 +9,41 @@
</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 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">学历要求{{ education[info.education] || '暂无' }}</view>
</view>
<view class="prolist">
<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 class="protype">经验要求{{ experience[info.experienceDesc] || '暂无' }}</view>
</view>
<view class="prolist proint" style="font-weight: bold; color: #333">岗位描述</view>
<view class="prolist description">
{{ info.jobDescription || '暂无' }}
</view>
@@ -62,15 +54,16 @@
</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.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">
企业信息
@@ -80,9 +73,7 @@
</view> -->
</view>
<view class="head">
<view class="proname proneed">
地址
</view>
<view class="proname proneed">地址</view>
<!-- <view class="prolist">
<view class="protype">
联系人{{info.callName}}
@@ -97,79 +88,117 @@
<!-- <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> -->
<zhuo-tianditu-MultiPoint-Mapper ref="tMap" :api-key="$config.apiKey"></zhuo-tianditu-MultiPoint-Mapper>
<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>
</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" 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
@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>
<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"
@click="tools.onDialingPhoneNumber(info.callTel)">{{ info.callTel }}</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" v-if="info.callTel" @click="tools.onDialingPhoneNumber(info.callTel)">
{{ info.callTel }}
</span>
<span style="color: #333333" v-else>无联系方式</span>
</view>
</view>
</u-popup>
@@ -177,7 +206,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>
@@ -187,46 +216,26 @@
<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
} from '@/api/auth.js';
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 { 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'
import { getuserrecruitDetailApp } from '@/api/userrecruit.js';
export default {
data() {
return {
@@ -240,15 +249,18 @@
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: '',
@@ -256,15 +268,16 @@
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);
@@ -279,32 +292,49 @@
this.id = option.id; //消息id
}
if (option.jobType) {
this.jobType = option.jobType
this.jobType = option.jobType;
}
},
onShow: function () {
this.showDetail = true
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();
}
})
});
},
callPhone() {
async callPhone() {
getPhoneCountNumber();
if (!this.$api.haslogin()) {
GoLogin();
return;
}
if (!this.$api.hasResume()) {
this.navTo('/pageMy/my/resume/index', true);
return;
}
this.showPopUp = true;
},
closePopUp() {
@@ -312,43 +342,36 @@
},
// 获取收藏状态
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;
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,
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({
lat: self.info.lat,
lon: self.info.lon,
}])
})
})
});
}
// this.$refs.cMap.open()
self.showDetail = true;
@@ -356,29 +379,33 @@
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 () {
const _that = this
if (!this.$api.haslogin()) {
GoLogin();
return;
}
if (!this.$api.hasResume()) {
this.navTo('/pageMy/my/resume/index', true);
return;
}
const _that = this;
uni.showModal({
title: '提示',
content: '请确认申请,申请后不能撤销',
success: function (res) {
if (res.confirm) {
if (!_that.$store.state.user.token) {
GoLogin()
return
}
if (_that.loading) return
const auth = _that.auth
const contractOn = _that.info.contractOn
const sealOk = _that.autograph && _that.autograph.data && _that.autograph
.data.signSrcUrl
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()
@@ -389,86 +416,91 @@
// 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
title: '请求中...',
});
this.loading = true;
var obj = {
pass: password
}
checkPass(obj).then(res => {
this.submitTask()
this.closeShowCode()
}).catch(err => {
this.loading = false
pass: password,
};
checkPass(obj)
.then((res) => {
this.submitTask();
this.closeShowCode();
})
.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() {
@@ -480,8 +512,8 @@
// return '无'
// }
// }
}
}
},
};
</script>
<style lang="scss">
@@ -492,9 +524,9 @@
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;
}
@@ -512,7 +544,7 @@
position: absolute;
right: 36rpx;
top: 120rpx;
color: #1B66FF;
color: #1b66ff;
transform: rotate(45deg);
font-size: 40px;
}
@@ -546,15 +578,14 @@
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;
background-color: #ffffff;
margin: 30rpx;
position: relative;
border-radius: 4px;
@@ -564,7 +595,7 @@
.close {
width: 23px;
height: 23px;
color: #1B66FF;
color: #1b66ff;
position: fixed;
right: 60rpx;
top: 60rpx;
@@ -580,10 +611,10 @@
height: 90rpx;
line-height: 90rpx;
text-align: center;
background: #1B66FF;
background: #1b66ff;
font-size: 36rpx;
font-weight: 400;
color: #FFFFFF;
color: #ffffff;
}
}
@@ -597,7 +628,7 @@
}
.bottombtn {
background-color: #1B66FF;
background-color: #1b66ff;
color: #fff;
text-align: center;
border-radius: 10rpx;
@@ -646,7 +677,6 @@
flex-wrap: wrap;
justify-content: flex-start;
margin: 20rpx 0;
}
.proint {
@@ -656,13 +686,12 @@
.proneed {
font-size: 32rpx !important;
}
.fee {
font-family: PingFangSC-Medium;
font-size: 32rpx;
color: #F46161;
color: #f46161;
margin-top: 30rpx;
}

View File

@@ -7,56 +7,48 @@
<!-- <view class="prolist">
任务编码{{info.missionNo}}
</view> -->
<view class="prolist">
发布日期{{dateFormat((info.stime)) || '暂无'}}
</view>
<view class="prolist">
招聘人数{{info.peopleNum || '暂无'}}
</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">岗位工种{{ 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 }}
</view>
@@ -67,9 +59,7 @@
</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 class="proname proneed">
@@ -81,16 +71,17 @@
<!-- <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}}
@@ -102,78 +93,117 @@
<!-- <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> -->
<zhuo-tianditu-MultiPoint-Mapper ref="tMap" :api-key="$config.apiKey"></zhuo-tianditu-MultiPoint-Mapper>
<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>
</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" 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
@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>
<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"
@click="tools.onDialingPhoneNumber(info.callTel)">{{ info.callTel }}</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" v-if="info.callTel" @click="tools.onDialingPhoneNumber(info.callTel)">
{{ info.callTel }}
</span>
<span style="color: #333333" v-else>无联系方式</span>
</view>
</view>
</u-popup>
@@ -181,7 +211,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>
@@ -191,45 +221,25 @@
<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
} from '@/api/auth.js';
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'
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 {
@@ -243,15 +253,18 @@
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: '',
@@ -259,14 +272,15 @@
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);
@@ -281,32 +295,49 @@
this.id = option.id; //消息id
}
if (option.jobType) {
this.jobType = option.jobType
this.jobType = option.jobType;
}
},
onShow: function () {
this.showDetail = true
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();
}
})
});
},
callPhone() {
async callPhone() {
getPhoneCountNumber();
if (!this.$api.haslogin()) {
GoLogin();
return;
}
if (!this.$api.hasResume()) {
this.navTo('/pageMy/my/resume/index', true);
return;
}
this.showPopUp = true;
},
closePopUp() {
@@ -314,22 +345,22 @@
},
// 获取收藏状态
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;
@@ -339,47 +370,44 @@
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,
if (!(self.info.lat && self.info.lat === -1)) {
self.$refs.uMap.initMap({
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 () {
const _that = this
if (!this.$api.haslogin()) {
GoLogin();
return;
}
if (!this.$api.hasResume()) {
this.navTo('/pageMy/my/resume/index', true);
return;
}
const _that = this;
uni.showModal({
title: '提示',
content: '请确认申请,申请后不能撤销',
success: function (res) {
if (res.confirm) {
if (!_that.$store.state.user.token) {
GoLogin()
return
}
if (_that.loading) return
const auth = _that.auth
const contractOn = _that.info.contractOn
const sealOk = _that.autograph && _that.autograph.data && _that.autograph
.data.signSrcUrl
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()
@@ -390,86 +418,91 @@
// 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
title: '请求中...',
});
this.loading = true;
var obj = {
pass: password
}
checkPass(obj).then(res => {
this.submitTask()
this.closeShowCode()
}).catch(err => {
this.loading = false
pass: password,
};
checkPass(obj)
.then((res) => {
this.submitTask();
this.closeShowCode();
})
.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() {
@@ -480,8 +513,8 @@
// return '无'
// }
// }
}
}
},
};
</script>
<style lang="scss">
@@ -492,7 +525,7 @@
position: absolute;
right: 36rpx;
top: 120rpx;
color: #1B66FF;
color: #1b66ff;
transform: rotate(45deg);
font-size: 40px;
}
@@ -526,15 +559,14 @@
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;
background-color: #ffffff;
margin: 30rpx;
position: relative;
border-radius: 4px;
@@ -544,7 +576,7 @@
.close {
width: 23px;
height: 23px;
color: #1B66FF;
color: #1b66ff;
position: fixed;
right: 60rpx;
top: 60rpx;
@@ -560,10 +592,10 @@
height: 90rpx;
line-height: 90rpx;
text-align: center;
background: #1B66FF;
background: #1b66ff;
font-size: 36rpx;
font-weight: 400;
color: #FFFFFF;
color: #ffffff;
}
}
@@ -577,7 +609,7 @@
}
.bottombtn {
background-color: #1B66FF;
background-color: #1b66ff;
color: #fff;
text-align: center;
border-radius: 10rpx;
@@ -626,7 +658,6 @@
flex-wrap: wrap;
justify-content: flex-start;
margin: 20rpx 0;
}
.proint {
@@ -636,13 +667,12 @@
.proneed {
font-size: 32rpx !important;
}
.fee {
font-family: PingFangSC-Medium;
font-size: 32rpx;
color: #F46161;
color: #f46161;
margin-top: 30rpx;
}
@@ -689,9 +719,9 @@
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;
}

View File

@@ -7,53 +7,38 @@
<!-- <view class="prolist">
任务编码{{info.missionNo}}
</view> -->
<view class="prolist">
发布日期{{dateFormat((info.stime)) || '暂无'}}
</view>
<view class="prolist">
招聘人数{{info.peopleNum || '暂无'}}
</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">岗位工种{{ info.skillNames || '暂无' }}</view>
<view class="prolist">参考工资{{info.wage}}{{info.wageUpper}}{{wageUnit[info.wageUnitCategory]}}</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 }}
</view>
@@ -64,9 +49,7 @@
</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 class="proname proneed">
@@ -78,16 +61,17 @@
<!-- <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}}
@@ -99,77 +83,116 @@
<!-- <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> -->
<zhuo-tianditu-MultiPoint-Mapper ref="tMap" :api-key="$config.apiKey"></zhuo-tianditu-MultiPoint-Mapper>
<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>
</view>
</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" 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
@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">申请</view>
</view>
<view class="btn" v-if="isShow !== '0' && status !== 0">
<!-- <view class="bottombtn lookContract" @click="lookMask">查看合同</view> -->
<view @click="collect"
style="display: flex;align-items: center;margin-right: 10rpx;flex-direction: column;">
<image v-if="collectStatus == 0" src="../../static/img/collect.png" style="width: 36rpx;height: 36rpx;"
mode=""></image>
<image v-if="collectStatus == 1" src="../../static/img/collect_yes.png"
style="width: 36rpx;height: 36rpx;" mode=""></image>
<view v-if="collectStatus == 0" style="font-size: 26rpx;color:#707070;margin-top:10rpx;">收藏</view>
<view v-if="collectStatus == 1" style="font-size: 20rpx;color:#707070;margin-top:10rpx;">已收藏</view>
<view
@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"
@click="tools.onDialingPhoneNumber(info.callTel)">{{ info.callTel }}</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" v-if="info.callNumber" @click="tools.onDialingPhoneNumber(info.callNumber)">
{{ info.callNumber }}
</span>
<span style="color: #333333" v-else>无联系方式</span>
</view>
</view>
</u-popup>
@@ -177,7 +200,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>
@@ -187,42 +210,24 @@
<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
} from '@/api/auth.js';
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 { 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 {
@@ -236,15 +241,18 @@
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: '',
@@ -252,13 +260,14 @@
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);
@@ -273,32 +282,49 @@
this.id = option.id; //消息id
}
},
mounted() {},
onShow: function () {
this.showDetail = true
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();
}
})
});
},
callPhone() {
async callPhone() {
getPhoneCountNumber();
if (!this.$api.haslogin()) {
GoLogin();
return;
}
if (!this.$api.hasResume()) {
this.navTo('/pageMy/my/resume/index', true);
return;
}
this.showPopUp = true;
},
closePopUp() {
@@ -306,64 +332,64 @@
},
// 获取收藏状态
getCollectStatus() {
getCollectState(this.info.id, 1).then(res => {
if (!this.$api.haslogin()) return;
getCollectState(this.info.id, 1).then((res) => {
// 0 未收藏1 已收藏
// console.log(res)
this.collectStatus = res.data.data;
})
});
},
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;
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,
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({
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");
})
}
}, error => {
console.log(error);
setRead(self.id).then((res) => {
self.$store.commit('SET_READ');
});
}
},
(error) => {
console.log(error);
}
);
},
submit: function () {
const _that = this
if (!this.$api.haslogin()) {
GoLogin();
return;
}
if (!this.$api.hasResume()) {
this.navTo('/pageMy/my/resume/index', true);
return;
}
const _that = this;
uni.showModal({
title: '提示',
content: '请确认申请,申请后不能撤销',
success: function (res) {
if (res.confirm) {
if (!_that.$store.state.user.token) {
GoLogin()
return
}
if (_that.loading) return
const auth = _that.auth
const contractOn = _that.info.contractOn
const sealOk = _that.autograph && _that.autograph.data && _that.autograph
.data.signSrcUrl
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()
@@ -374,86 +400,91 @@
// 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
title: '请求中...',
});
this.loading = true;
var obj = {
pass: password
}
checkPass(obj).then(res => {
this.submitTask()
this.closeShowCode()
}).catch(err => {
this.loading = false
pass: password,
};
checkPass(obj)
.then((res) => {
this.submitTask();
this.closeShowCode();
})
.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() {
@@ -464,8 +495,8 @@
// return '无'
// }
// }
}
}
},
};
</script>
<style lang="scss">
@@ -476,7 +507,7 @@
position: absolute;
right: 36rpx;
top: 120rpx;
color: #1B66FF;
color: #1b66ff;
transform: rotate(45deg);
font-size: 40px;
}
@@ -510,15 +541,14 @@
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;
background-color: #ffffff;
margin: 30rpx;
position: relative;
border-radius: 4px;
@@ -528,7 +558,7 @@
.close {
width: 23px;
height: 23px;
color: #1B66FF;
color: #1b66ff;
position: fixed;
right: 60rpx;
top: 60rpx;
@@ -544,10 +574,10 @@
height: 90rpx;
line-height: 90rpx;
text-align: center;
background: #1B66FF;
background: #1b66ff;
font-size: 36rpx;
font-weight: 400;
color: #FFFFFF;
color: #ffffff;
}
}
@@ -561,14 +591,14 @@
}
.bottombtn {
background-color: #1B66FF;
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 {
@@ -610,7 +640,6 @@
flex-wrap: wrap;
justify-content: flex-start;
margin: 20rpx 0;
}
.proint {
@@ -620,13 +649,12 @@
.proneed {
font-size: 32rpx !important;
}
.fee {
font-family: PingFangSC-Medium;
font-size: 32rpx;
color: #F46161;
color: #f46161;
margin-top: 30rpx;
}

View File

@@ -31,11 +31,15 @@
},
computed: {
...mapState({
idNumber: (state) => state.auth.authInfo.idNumber
idNumber: (state) => {
console.log(state.auth.authInfo, 'auth.authInfo')
return state.auth.authInfo.idNumber
}
}),
},
methods: {
next(type) {
// return this.$api.msg('该功能正在完善中')
switch (type) {
case 0:
this.isHaveCode(this.idNumber).then(() => {
@@ -64,6 +68,9 @@
if (resData.data.data.haveCode) {
resolve()
} else {
return this.$api.msg('系统正在建设中')
switch (resData.data.data.reviewStatus) {
case 0:
this.$api.msg('您提交的认证信息正在审核中')

View File

@@ -30,7 +30,10 @@ import CustomTabbar from '@/components/CustomTabbar/custom_tabbar.vue'
import CustomNavbar from '@/components/CustomNavbar/navbar.vue';
export default {
components: { CustomTabbar, CustomNavbar },
components: {
CustomTabbar,
CustomNavbar
},
data() {
return {
loading: false,
@@ -162,7 +165,7 @@ export default {
},
onLoad() {},
onShow() {
if (!this.$store.state.user.token) {
if (!this.$api.haslogin()) {
uni.redirectTo({
url: "/pages/login/login"
})
@@ -212,7 +215,9 @@ export default {
}
},
back() {
uni.reLaunch({ url: '/pages/my/my' })
uni.reLaunch({
url: '/pages/my/my'
})
},
},
}

View File

@@ -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', index === currentArrTitleID ? 'activeButton' : '']" @click="changeTab(item)">
:class="['cond_item', item.id === currentArrTitleID ? 'activeButton' : '']" @click="changeTab(item)">
{{ item.text }}
</view>
</view>
@@ -39,10 +39,12 @@
} 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
}
@@ -76,7 +78,7 @@
reviewStatus,
pickerColumns,
openPicker: false,
currentArrTitleID: 2,
currentArrTitleID: 1,
currentReviewStatusID: '-1',
pageNumber: 1,
dataSource: [],
@@ -87,7 +89,7 @@
}) {
if (this.enterprise) {
this.pageType = 'enterprise'
this.currentArrTitleID = 0
this.currentArrTitleID = 1
}
this.getList('refresh')
},

View File

@@ -87,10 +87,9 @@
任务地址{{ info.address }}
</view>
<view class="map">
<!-- <super-map ref="uMap" style="width: 100%;height: 100%;" :latitude="latitude" :longitude="longitude"
<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>
:flag-tip="false"></super-map>
</view>
<!-- <map class="map" :latitude="latitude" :longitude="longitude" :markers="covers"></map> -->
</view>
@@ -283,23 +282,10 @@
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;
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.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;
if (self.type === 1) {
// 设置已读

View File

@@ -7,45 +7,27 @@
<!-- <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>
<view class="prolist">
招工地址{{ info.jobAddress }}
</view>
<view class="prolist proint" style="font-weight: bold;color:#333;">
招工描述
<view class="protype">学历要求{{ info.education }}</view>
<view class="protype">经验要求{{ info.experienceDesc }}</view>
</view>
<view class="prolist">招工地址{{ info.jobAddress }}</view>
<view class="prolist proint" style="font-weight: bold; color: #333">招工描述</view>
<view class="prolist description">
{{ info.jobDescription }}
</view>
@@ -70,16 +52,17 @@
<!-- <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}}
@@ -91,39 +74,48 @@
<!-- <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> -->
<zhuo-tianditu-MultiPoint-Mapper ref="tMap" :api-key="$config.apiKey"></zhuo-tianditu-MultiPoint-Mapper>
<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>
</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>
@@ -134,7 +126,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>
@@ -144,38 +136,24 @@
<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
} from '@/api/auth.js';
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'
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 {
@@ -189,15 +167,18 @@
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: '',
@@ -205,14 +186,15 @@
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);
@@ -227,23 +209,25 @@
this.id = option.id; //消息id
}
if (option.jobType) {
this.jobType = option.jobType
this.jobType = option.jobType;
}
},
onShow: function () {
this.showDetail = true
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,
callPhone() {
async callPhone() {
this.showPopUp = true;
await getPhoneCountNumber();
this.showPopUp = true;
},
closePopUp() {
@@ -251,90 +235,79 @@
},
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;
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.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;
}
},
// 查看合同
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
title: '请求中...',
});
this.loading = true;
var obj = {
pass: password
}
checkPass(obj).then(res => {
this.submitTask()
this.closeShowCode()
}).catch(err => {
this.loading = false
pass: password,
};
checkPass(obj)
.then((res) => {
this.submitTask();
this.closeShowCode();
})
.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">
@@ -345,7 +318,7 @@
position: absolute;
right: 36rpx;
top: 120rpx;
color: #1B66FF;
color: #1b66ff;
transform: rotate(45deg);
font-size: 40px;
}
@@ -379,15 +352,14 @@
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;
background-color: #ffffff;
margin: 30rpx;
position: relative;
border-radius: 4px;
@@ -397,7 +369,7 @@
.close {
width: 23px;
height: 23px;
color: #1B66FF;
color: #1b66ff;
position: fixed;
right: 60rpx;
top: 60rpx;
@@ -413,10 +385,10 @@
height: 90rpx;
line-height: 90rpx;
text-align: center;
background: #1B66FF;
background: #1b66ff;
font-size: 36rpx;
font-weight: 400;
color: #FFFFFF;
color: #ffffff;
}
}
@@ -430,7 +402,7 @@
}
.bottombtn {
background-color: #1B66FF;
background-color: #1b66ff;
color: #fff;
text-align: center;
border-radius: 10rpx;
@@ -479,7 +451,6 @@
flex-wrap: wrap;
justify-content: flex-start;
margin: 20rpx 0;
}
.proint {
@@ -489,13 +460,12 @@
.proneed {
font-size: 32rpx !important;
}
.fee {
font-family: PingFangSC-Medium;
font-size: 32rpx;
color: #F46161;
color: #f46161;
margin-top: 30rpx;
}
@@ -546,7 +516,6 @@
display: flex;
justify-content: space-between;
align-items: center;
}
.applyTime {

View File

@@ -7,45 +7,27 @@
<!-- <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>
<view class="prolist">
岗位地址{{ info.jobAddress }}
</view>
<view class="prolist proint" style="font-weight: bold;color:#333;">
任务描述
<view class="protype">学历要求{{ info.education }}</view>
<view class="protype">经验要求{{ info.experienceDesc }}</view>
</view>
<view class="prolist">岗位地址{{ info.jobAddress }}</view>
<view class="prolist proint" style="font-weight: bold; color: #333">任务描述</view>
<view class="prolist description">
{{ info.jobDescription }}
</view>
@@ -56,9 +38,7 @@
</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 class="proname proneed">
@@ -70,16 +50,17 @@
<!-- <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}}
@@ -91,39 +72,48 @@
<!-- <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> -->
<zhuo-tianditu-MultiPoint-Mapper ref="tMap" :api-key="$config.apiKey"></zhuo-tianditu-MultiPoint-Mapper>
<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>
</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>
@@ -134,7 +124,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>
@@ -144,38 +134,24 @@
<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
} from '@/api/auth.js';
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'
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 {
@@ -189,15 +165,18 @@
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: '',
@@ -205,13 +184,14 @@
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);
@@ -227,103 +207,95 @@
}
},
onShow: function () {
this.showDetail = true
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,
callPhone() {
async callPhone() {
this.showPopUp = true;
await getPhoneCountNumber();
},
closePopUp() {
this.showPopUp = false;
},
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;
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.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 => {
},
(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
title: '请求中...',
});
this.loading = true;
var obj = {
pass: password
}
checkPass(obj).then(res => {
this.submitTask()
this.closeShowCode()
}).catch(err => {
this.loading = false
pass: password,
};
checkPass(obj)
.then((res) => {
this.submitTask();
this.closeShowCode();
})
.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">
@@ -334,7 +306,7 @@
position: absolute;
right: 36rpx;
top: 120rpx;
color: #1B66FF;
color: #1b66ff;
transform: rotate(45deg);
font-size: 40px;
}
@@ -368,15 +340,14 @@
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;
background-color: #ffffff;
margin: 30rpx;
position: relative;
border-radius: 4px;
@@ -386,7 +357,7 @@
.close {
width: 23px;
height: 23px;
color: #1B66FF;
color: #1b66ff;
position: fixed;
right: 60rpx;
top: 60rpx;
@@ -402,10 +373,10 @@
height: 90rpx;
line-height: 90rpx;
text-align: center;
background: #1B66FF;
background: #1b66ff;
font-size: 36rpx;
font-weight: 400;
color: #FFFFFF;
color: #ffffff;
}
}
@@ -419,7 +390,7 @@
}
.bottombtn {
background-color: #1B66FF;
background-color: #1b66ff;
color: #fff;
text-align: center;
border-radius: 10rpx;
@@ -468,7 +439,6 @@
flex-wrap: wrap;
justify-content: flex-start;
margin: 20rpx 0;
}
.proint {
@@ -478,13 +448,12 @@
.proneed {
font-size: 32rpx !important;
}
.fee {
font-family: PingFangSC-Medium;
font-size: 32rpx;
color: #F46161;
color: #f46161;
margin-top: 30rpx;
}
@@ -535,7 +504,6 @@
display: flex;
justify-content: space-between;
align-items: center;
}
.applyTime {

File diff suppressed because it is too large Load Diff

View File

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

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

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 563 B

After

Width:  |  Height:  |  Size: 269 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 809 B

After

Width:  |  Height:  |  Size: 401 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 888 B

After

Width:  |  Height:  |  Size: 389 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 766 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 679 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 560 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 489 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 531 B

After

Width:  |  Height:  |  Size: 508 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 565 B

After

Width:  |  Height:  |  Size: 538 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 637 B

After

Width:  |  Height:  |  Size: 628 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 766 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 881 B

After

Width:  |  Height:  |  Size: 856 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 864 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 843 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 975 B

After

Width:  |  Height:  |  Size: 962 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 808 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 857 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 875 B

After

Width:  |  Height:  |  Size: 865 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 1007 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 462 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 798 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 538 B

After

Width:  |  Height:  |  Size: 142 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 478 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 636 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 481 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 463 B

Some files were not shown because too many files have changed in this diff Show More