flat:来源标红
This commit is contained in:
@@ -1,6 +1,13 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="v-tabs" :style="{ height: height }">
|
<view class="v-tabs" :style="{ height: height }">
|
||||||
<scroll-view class="scroll-view" :show-scrollbar="false" scroll-x scroll-with-animation :scroll-left="scrollLeft" style="width: auto; height: 100%; overflow: hidden;">
|
<scroll-view
|
||||||
|
class="scroll-view"
|
||||||
|
:show-scrollbar="false"
|
||||||
|
scroll-x
|
||||||
|
scroll-with-animation
|
||||||
|
:scroll-left="scrollLeft"
|
||||||
|
style="width: auto; height: 100%; overflow: hidden"
|
||||||
|
>
|
||||||
<view class="v-tabs__inner">
|
<view class="v-tabs__inner">
|
||||||
<view
|
<view
|
||||||
class="v-tabs__item"
|
class="v-tabs__item"
|
||||||
@@ -10,7 +17,6 @@
|
|||||||
backgroundColor: activeTab == i ? backgroundColor : '',
|
backgroundColor: activeTab == i ? backgroundColor : '',
|
||||||
borderRadius,
|
borderRadius,
|
||||||
padding,
|
padding,
|
||||||
|
|
||||||
}"
|
}"
|
||||||
:data-index="i"
|
:data-index="i"
|
||||||
:class="{ active: activeTab == i }"
|
:class="{ active: activeTab == i }"
|
||||||
@@ -56,58 +62,58 @@ export default {
|
|||||||
props: {
|
props: {
|
||||||
value: {
|
value: {
|
||||||
type: [String, Number],
|
type: [String, Number],
|
||||||
default: 0
|
default: 0,
|
||||||
},
|
},
|
||||||
height: {
|
height: {
|
||||||
type: String,
|
type: String,
|
||||||
default: '45px'
|
default: '45px',
|
||||||
},
|
},
|
||||||
tabs: {
|
tabs: {
|
||||||
type: Array,
|
type: Array,
|
||||||
default() {
|
default() {
|
||||||
return []
|
return [];
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
backgroundColor: {
|
backgroundColor: {
|
||||||
type: String,
|
type: String,
|
||||||
default: 'transparent'
|
default: 'transparent',
|
||||||
},
|
},
|
||||||
borderRadius: {
|
borderRadius: {
|
||||||
type: String,
|
type: String,
|
||||||
default: '5px'
|
default: '5px',
|
||||||
},
|
},
|
||||||
color: {
|
color: {
|
||||||
type: String,
|
type: String,
|
||||||
default: '#333333'
|
default: '#333333',
|
||||||
},
|
},
|
||||||
activeColor: {
|
activeColor: {
|
||||||
type: String,
|
type: String,
|
||||||
default: '#007AFF'
|
default: '#007AFF',
|
||||||
},
|
},
|
||||||
fontSize: {
|
fontSize: {
|
||||||
type: String,
|
type: String,
|
||||||
default: '14px'
|
default: '14px',
|
||||||
},
|
},
|
||||||
activeFontSize: {
|
activeFontSize: {
|
||||||
type: String,
|
type: String,
|
||||||
default: '14px'
|
default: '14px',
|
||||||
},
|
},
|
||||||
padding: {
|
padding: {
|
||||||
type: String,
|
type: String,
|
||||||
default: '10rpx 20rpx'
|
default: '10rpx 20rpx',
|
||||||
},
|
},
|
||||||
lineScale: {
|
lineScale: {
|
||||||
type: Number,
|
type: Number,
|
||||||
default: 0.6
|
default: 0.6,
|
||||||
},
|
},
|
||||||
lineHeight: {
|
lineHeight: {
|
||||||
type: String,
|
type: String,
|
||||||
default: '3px'
|
default: '3px',
|
||||||
},
|
},
|
||||||
lineColor: {
|
lineColor: {
|
||||||
type: String,
|
type: String,
|
||||||
default: '#007AFF'
|
default: '#007AFF',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@@ -115,75 +121,75 @@ export default {
|
|||||||
activeTab: 0,
|
activeTab: 0,
|
||||||
width: 0,
|
width: 0,
|
||||||
lineLeft: 0,
|
lineLeft: 0,
|
||||||
lineWidth: 0
|
lineWidth: 0,
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
activeTab(newVal) {
|
activeTab(newVal) {
|
||||||
this.$emit('input', newVal * 1)
|
this.$emit('input', newVal * 1);
|
||||||
},
|
},
|
||||||
value(newVal) {
|
value(newVal) {
|
||||||
this.activeTab = newVal
|
this.activeTab = newVal;
|
||||||
this.getTabsWidth(0)
|
this.getTabsWidth(0);
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handleTapItem(e) {
|
handleTapItem(e) {
|
||||||
const index = e.currentTarget.dataset.index
|
const index = e.currentTarget.dataset.index;
|
||||||
if (this.activeTab != index) {
|
if (this.activeTab != index) {
|
||||||
this.activeTab = index
|
this.activeTab = index;
|
||||||
this.getTabsWidth(e.currentTarget.offsetLeft)
|
this.getTabsWidth(e.currentTarget.offsetLeft);
|
||||||
this.$emit('change', this.activeTab)
|
this.$emit('change', this.activeTab);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
getTabsWidth(offsetLeft) {
|
getTabsWidth(offsetLeft) {
|
||||||
const query = uni.createSelectorQuery().in(this)
|
const query = uni.createSelectorQuery().in(this);
|
||||||
query
|
query
|
||||||
.select('.v-tabs')
|
.select('.v-tabs')
|
||||||
.boundingClientRect(data => {
|
.boundingClientRect((data) => {
|
||||||
this.width = data.width
|
this.width = data.width;
|
||||||
})
|
})
|
||||||
.exec()
|
.exec();
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
let i = 0
|
let i = 0;
|
||||||
let width = 0
|
let width = 0;
|
||||||
query
|
query
|
||||||
.selectAll('.v-tabs__item')
|
.selectAll('.v-tabs__item')
|
||||||
.boundingClientRect(data => {
|
.boundingClientRect((data) => {
|
||||||
width = data.reduce((total, currentValue, currentIndex, arr) => {
|
width = data.reduce((total, currentValue, currentIndex, arr) => {
|
||||||
if (currentIndex < this.activeTab) {
|
if (currentIndex < this.activeTab) {
|
||||||
total = total + currentValue.width
|
total = total + currentValue.width;
|
||||||
}
|
}
|
||||||
return total
|
return total;
|
||||||
}, 0)
|
}, 0);
|
||||||
const padding = this.padding.split(' ')[0]
|
const padding = this.padding.split(' ')[0];
|
||||||
const res = /(\d+)(upx|rpx|px)/.exec(padding)
|
const res = /(\d+)(upx|rpx|px)/.exec(padding);
|
||||||
if (res && (res[2] == 'upx' || res[2] == 'rpx')) {
|
if (res && (res[2] == 'upx' || res[2] == 'rpx')) {
|
||||||
width += uni.upx2px(res[1]) * 2 * this.activeTab
|
width += uni.upx2px(res[1]) * 2 * this.activeTab;
|
||||||
} else {
|
} else {
|
||||||
width += res[1] * this.activeTab
|
width += res[1] * this.activeTab;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.exec()
|
.exec();
|
||||||
query
|
query
|
||||||
.select('.v-tabs__item.active')
|
.select('.v-tabs__item.active')
|
||||||
.boundingClientRect(data => {
|
.boundingClientRect((data) => {
|
||||||
const ol = offsetLeft ? offsetLeft : width
|
const ol = offsetLeft ? offsetLeft : width;
|
||||||
if (data.width) {
|
if (data.width) {
|
||||||
this.lineLeft = ol + (data.width * (1 - this.lineScale)) / 2
|
this.lineLeft = ol + (data.width * (1 - this.lineScale)) / 2;
|
||||||
this.lineWidth = data.width * this.lineScale
|
this.lineWidth = data.width * this.lineScale;
|
||||||
this.scrollLeft = ol - (this.width - data.width) / 2
|
this.scrollLeft = ol - (this.width - data.width) / 2;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.exec()
|
.exec();
|
||||||
}, 10)
|
}, 10);
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.activeTab = this.value
|
this.activeTab = this.value;
|
||||||
this.getTabsWidth(0)
|
this.getTabsWidth(0);
|
||||||
}
|
},
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@@ -192,7 +198,7 @@ export default {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
border-bottom: 1rpx solid #dddddd;
|
border-bottom: 1rpx solid #dddddd;
|
||||||
.v-tabs__inner {
|
.v-tabs__inner {
|
||||||
position: relative;
|
position: relative;
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -204,13 +210,13 @@ border-bottom: 1rpx solid #dddddd;
|
|||||||
border-bottom: 0;
|
border-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.active{
|
.active {
|
||||||
border-radius: 0 !important;
|
border-radius: 0 !important;
|
||||||
.bottomborder{
|
.bottomborder {
|
||||||
width: 42rpx;
|
width: 42rpx;
|
||||||
height: 6rpx;
|
height: 6rpx;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
background-color: #1B66FF;
|
background-color: #1b66ff;
|
||||||
border-radius: 20rpx;
|
border-radius: 20rpx;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
display: block !important;
|
display: block !important;
|
||||||
@@ -235,7 +241,7 @@ border-bottom: 1rpx solid #dddddd;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/deep/ ::-webkit-scrollbar {
|
::v-deep ::-webkit-scrollbar {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -1,22 +1,22 @@
|
|||||||
{
|
{
|
||||||
"name" : "招聘",
|
"name": "招聘",
|
||||||
"appid" : "__UNI__120CBFC",
|
"appid": "__UNI__BFB9B45",
|
||||||
"description" : "",
|
"description": "",
|
||||||
"versionName" : "1.0.0",
|
"versionName": "1.0.0",
|
||||||
"versionCode" : "100",
|
"versionCode": "100",
|
||||||
"transformPx" : false,
|
"transformPx": false,
|
||||||
"sassImplementationName" : "node-sass",
|
"sassImplementationName": "node-sass",
|
||||||
"app-plus" : {
|
"app-plus": {
|
||||||
"usingComponents" : true,
|
"usingComponents": true,
|
||||||
"compilerVersion" : 3,
|
"compilerVersion": 3,
|
||||||
/* 5+App特有相关 */
|
/* 5+App特有相关 */
|
||||||
"modules" : {},
|
"modules": {},
|
||||||
/* 模块配置 */
|
/* 模块配置 */
|
||||||
"distribute" : {
|
"distribute": {
|
||||||
/* 应用发布信息 */
|
/* 应用发布信息 */
|
||||||
"android" : {
|
"android": {
|
||||||
/* android打包配置 */
|
/* android打包配置 */
|
||||||
"permissions" : [
|
"permissions": [
|
||||||
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
||||||
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
|
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
|
||||||
"<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>",
|
"<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>",
|
||||||
@@ -41,41 +41,41 @@
|
|||||||
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
|
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"ios" : {},
|
"ios": {},
|
||||||
/* ios打包配置 */
|
/* ios打包配置 */
|
||||||
"sdkConfigs" : {}
|
"sdkConfigs": {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
/* SDK配置 */
|
/* SDK配置 */
|
||||||
"quickapp" : {},
|
"quickapp": {},
|
||||||
/* 快应用特有相关 */
|
/* 快应用特有相关 */
|
||||||
"mp-weixin" : {
|
"mp-weixin": {
|
||||||
/* 小程序特有相关 */
|
/* 小程序特有相关 */
|
||||||
"appid" : "wx77580889aaf15eb4",
|
"appid": "wx77580889aaf15eb4",
|
||||||
"setting" : {
|
"setting": {
|
||||||
"urlCheck" : false,
|
"urlCheck": false,
|
||||||
"minified" : true,
|
"minified": true,
|
||||||
"es6" : true
|
"es6": true
|
||||||
},
|
},
|
||||||
"usingComponents" : true,
|
"usingComponents": true,
|
||||||
"permission" : {
|
"permission": {
|
||||||
"scope.userLocation" : {
|
"scope.userLocation": {
|
||||||
"desc" : "获取您的位置,以便给您推荐合适工作信息"
|
"desc": "获取您的位置,以便给您推荐合适工作信息"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"h5" : {
|
"h5": {
|
||||||
"sdkConfigs" : {
|
"sdkConfigs": {
|
||||||
"maps" : {}
|
"maps": {}
|
||||||
},
|
},
|
||||||
"template" : "index.html",
|
"template": "index.html",
|
||||||
"router" : {
|
"router": {
|
||||||
"base" : "./",
|
"base": "./",
|
||||||
"mode" : "hash"
|
"mode": "hash"
|
||||||
},
|
},
|
||||||
"optimization" : {
|
"optimization": {
|
||||||
"treeShaking" : {
|
"treeShaking": {
|
||||||
"enable" : true
|
"enable": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,16 +3,31 @@
|
|||||||
<view class="app-top">
|
<view class="app-top">
|
||||||
<view class="top-search">
|
<view class="top-search">
|
||||||
<view class="top-input">
|
<view class="top-input">
|
||||||
<input class="put" type="text" placeholder-class="put-pla" v-model="searchValue"
|
<input
|
||||||
placeholder="搜索附近岗位或任务">
|
class="put"
|
||||||
|
type="text"
|
||||||
|
placeholder-class="put-pla"
|
||||||
|
v-model="searchValue"
|
||||||
|
placeholder="搜索附近岗位或任务"
|
||||||
|
/>
|
||||||
<button class="input-btn" @tap="search">搜索</button>
|
<button class="input-btn" @tap="search">搜索</button>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="view-map">
|
<view class="view-map">
|
||||||
<super-map ref="uMap" style="width: 100%;height: 100%;" :latitude="latitude" :longitude="longitude"
|
<super-map
|
||||||
:zoom="14" :min-zoom="10" :max-zoom="20" @markertap="clickmark" @regionchange="show = false"
|
ref="uMap"
|
||||||
:MapUrl="$config.supperMap" :flag-tip="false"></super-map>
|
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>
|
||||||
<!-- <view id="map" ></view> -->
|
<!-- <view id="map" ></view> -->
|
||||||
<!-- <map style="width: 100%;height: 100%;" scale="16" :latitude="latitude" :longitude="longitude"
|
<!-- <map style="width: 100%;height: 100%;" scale="16" :latitude="latitude" :longitude="longitude"
|
||||||
:markers="covers" @markertap="clickmark" @regionchange="show = false"></map> -->
|
:markers="covers" @markertap="clickmark" @regionchange="show = false"></map> -->
|
||||||
@@ -22,21 +37,22 @@
|
|||||||
<swiper-item class="wiperItem">
|
<swiper-item class="wiperItem">
|
||||||
<view class="swiper-item uni-bg-red">
|
<view class="swiper-item uni-bg-red">
|
||||||
<view class="item-content">
|
<view class="item-content">
|
||||||
<view class="content-title"> {{productInfo.missionTitle}} </view>
|
<view class="content-title">{{ productInfo.missionTitle }}</view>
|
||||||
<view class="color_999999 fs_12 mar_top5">
|
<view class="color_999999 fs_12 mar_top5">
|
||||||
<uni-icons type="location" color="#999999" size="12"></uni-icons>
|
<uni-icons type="location" color="#999999" size="12"></uni-icons>
|
||||||
{{ productInfo.cityId }} | {{productInfo.address}} | 距离:{{distance}}
|
{{ productInfo.cityId }} | {{ productInfo.address }} | 距离:{{ distance }}
|
||||||
</view>
|
</view>
|
||||||
<view class="color_999999 fs_12 mar_top5">
|
<view class="color_999999 fs_12 mar_top5">
|
||||||
<uni-icons type="map-pin-ellipse" color="#999999" size="12"></uni-icons>
|
<uni-icons type="map-pin-ellipse" color="#999999" size="12"></uni-icons>
|
||||||
招聘时间: {{productInfo.stime}}-{{productInfo.etime}}
|
招聘时间: {{ productInfo.stime }}-{{ productInfo.etime }}
|
||||||
</view>
|
</view>
|
||||||
<view class="color_999999 fs_12 mar_top5">
|
<view class="color_999999 fs_12 mar_top5">
|
||||||
<uni-icons type="map-pin-ellipse" color="#999999" size="12"></uni-icons>
|
<uni-icons type="map-pin-ellipse" color="#999999" size="12"></uni-icons>
|
||||||
{{productInfo.experienceDesc}} | {{education[productInfo.education]}}
|
{{ productInfo.experienceDesc }} | {{ education[productInfo.education] }}
|
||||||
</view>
|
</view>
|
||||||
<button class="btns" hover-class="active" @tap="openMap">
|
<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>
|
</button>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -49,25 +65,20 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import {
|
import { addZeroPrefix, getDistanceFromLatLonInKm } from '@/untils/tools.js';
|
||||||
addZeroPrefix,
|
import testData from '@/common/textdata.js';
|
||||||
getDistanceFromLatLonInKm
|
import { geQueryJobsByNearby } from '@/api/map.js';
|
||||||
} from '@/untils/tools.js'
|
let taskpoint = require('../../static/img/taskpoint.png');
|
||||||
import testData from '@/common/textdata.js';
|
let gwpoint = require('../../static/img/gwpoint.png');
|
||||||
import {
|
let mypoint = require('../../static/img/mypoint.png');
|
||||||
geQueryJobsByNearby
|
export default {
|
||||||
} 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');
|
|
||||||
export default {
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
education: testData.education,
|
education: testData.education,
|
||||||
show: false,
|
show: false,
|
||||||
ID: 1,
|
ID: 1,
|
||||||
searchValue: '',
|
searchValue: '',
|
||||||
latitude: 31.133980,
|
latitude: 31.13398,
|
||||||
longitude: 104.404419,
|
longitude: 104.404419,
|
||||||
covers: [],
|
covers: [],
|
||||||
rateValue: 2,
|
rateValue: 2,
|
||||||
@@ -76,33 +87,24 @@
|
|||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
distance() {
|
distance() {
|
||||||
const {
|
const { lon, lat } = this.productInfo;
|
||||||
lon,
|
|
||||||
lat
|
|
||||||
} = this.productInfo
|
|
||||||
if (lon) {
|
if (lon) {
|
||||||
const {
|
const { m, km } = getDistanceFromLatLonInKm(lat, lon, this.latitude, this.longitude);
|
||||||
m,
|
return m > 1000 ? `${km.toFixed(2)}km` : `${m.toFixed(2)}m`;
|
||||||
km
|
|
||||||
} = getDistanceFromLatLonInKm(lat, lon, this.latitude, this.longitude)
|
|
||||||
return m > 1000 ? `${km.toFixed(2)}km` : `${m.toFixed(2)}m`
|
|
||||||
}
|
|
||||||
return '无'
|
|
||||||
}
|
}
|
||||||
|
return '无';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
const _this = this
|
const _this = this;
|
||||||
console.log(this.$store.state.user.userLocation)
|
console.log(this.$store.state.user.userLocation);
|
||||||
if (this.$store.state.user.userLocation) {
|
if (this.$store.state.user.userLocation) {
|
||||||
const {
|
const { latitude, longitude } = this.$store.state.user.userLocation;
|
||||||
latitude,
|
|
||||||
longitude
|
|
||||||
} = this.$store.state.user.userLocation
|
|
||||||
_this.getList(longitude, latitude).then((covers) => {
|
_this.getList(longitude, latitude).then((covers) => {
|
||||||
_this.$refs.uMap.addFeature(covers)
|
_this.$refs.uMap.addFeature(covers);
|
||||||
})
|
});
|
||||||
} else {
|
} else {
|
||||||
_this.$api.msg('无法获得周边信息')
|
_this.$api.msg('无法获得周边信息');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onShow() {
|
onShow() {
|
||||||
@@ -123,31 +125,28 @@
|
|||||||
// type: post 岗位 mission 任务
|
// type: post 岗位 mission 任务
|
||||||
switch (this.productInfo.type) {
|
switch (this.productInfo.type) {
|
||||||
case 'post':
|
case 'post':
|
||||||
const no = encodeURIComponent(1)
|
const no = encodeURIComponent(1);
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url: `/pages/projectInfo/workInfo?workId=${encodeURIComponent(no)}&isCan=${1}`
|
url: `/pages/projectInfo/workInfo?workId=${encodeURIComponent(no)}&isCan=${1}`,
|
||||||
})
|
});
|
||||||
break
|
break;
|
||||||
case 'mission':
|
case 'mission':
|
||||||
const no1 = encodeURIComponent(this.productInfo.missionNo)
|
const no1 = encodeURIComponent(this.productInfo.missionNo);
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url: `/pages/projectInfo/projectInfo?missionNo=${no1}&isCan=${1}`
|
url: `/pages/projectInfo/projectInfo?missionNo=${no1}&isCan=${1}`,
|
||||||
})
|
});
|
||||||
break
|
break;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
search() {
|
search() {
|
||||||
const _this = this
|
const _this = this;
|
||||||
if (this.$store.state.user.userLocation) {
|
if (this.$store.state.user.userLocation) {
|
||||||
const {
|
const { latitude, longitude } = this.$store.state.user.userLocation;
|
||||||
latitude,
|
|
||||||
longitude
|
|
||||||
} = this.$store.state.user.userLocation
|
|
||||||
_this.getList(longitude, latitude).then((covers) => {
|
_this.getList(longitude, latitude).then((covers) => {
|
||||||
_this.$refs.uMap.addFeature(covers)
|
_this.$refs.uMap.addFeature(covers);
|
||||||
})
|
});
|
||||||
} else {
|
} else {
|
||||||
_this.$api.msg('无法获得周边信息')
|
_this.$api.msg('无法获得周边信息');
|
||||||
}
|
}
|
||||||
// this.getList(this.longitude, this.latitude).then((covers) => {
|
// this.getList(this.longitude, this.latitude).then((covers) => {
|
||||||
// this.$api.msg('成功获得周边信息')
|
// this.$api.msg('成功获得周边信息')
|
||||||
@@ -156,25 +155,25 @@
|
|||||||
// })
|
// })
|
||||||
},
|
},
|
||||||
clickmark(cover) {
|
clickmark(cover) {
|
||||||
if (cover.markerId === 1) return
|
if (cover.markerId === 1) return;
|
||||||
this.show = true;
|
this.show = true;
|
||||||
this.productInfo = cover.info
|
this.productInfo = cover.info;
|
||||||
},
|
},
|
||||||
mockGetLocation() {
|
mockGetLocation() {
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
resolve({
|
resolve({
|
||||||
"longitude": 104.40632,
|
longitude: 104.40632,
|
||||||
"latitude": 31.122989,
|
latitude: 31.122989,
|
||||||
"altitude": null,
|
altitude: null,
|
||||||
"accuracy": 25.998,
|
accuracy: 25.998,
|
||||||
"altitudeAccuracy": null,
|
altitudeAccuracy: null,
|
||||||
"heading": null,
|
heading: null,
|
||||||
"speed": null,
|
speed: null,
|
||||||
"errMsg": "getLocation:ok",
|
errMsg: 'getLocation:ok',
|
||||||
"verticalAccuracy": 0,
|
verticalAccuracy: 0,
|
||||||
"horizontalAccuracy": 25.998
|
horizontalAccuracy: 25.998,
|
||||||
})
|
});
|
||||||
})
|
});
|
||||||
},
|
},
|
||||||
async getList(lon, lat) {
|
async getList(lon, lat) {
|
||||||
return new Promise(async (resolve) => {
|
return new Promise(async (resolve) => {
|
||||||
@@ -182,9 +181,9 @@
|
|||||||
lon,
|
lon,
|
||||||
lat,
|
lat,
|
||||||
distanceRange: 20,
|
distanceRange: 20,
|
||||||
taskTitle: this.searchValue
|
taskTitle: this.searchValue,
|
||||||
}
|
};
|
||||||
let resData = await geQueryJobsByNearby(params)
|
let resData = await geQueryJobsByNearby(params);
|
||||||
if (resData.data.code === 200) {
|
if (resData.data.code === 200) {
|
||||||
const arr = resData.data.data.map((item) => ({
|
const arr = resData.data.data.map((item) => ({
|
||||||
id: item.id,
|
id: item.id,
|
||||||
@@ -199,8 +198,8 @@
|
|||||||
fontSize: 10,
|
fontSize: 10,
|
||||||
borderColor: 'blue',
|
borderColor: 'blue',
|
||||||
},
|
},
|
||||||
info: item
|
info: item,
|
||||||
}))
|
}));
|
||||||
arr.push({
|
arr.push({
|
||||||
id: 1,
|
id: 1,
|
||||||
latitude: lat,
|
latitude: lat,
|
||||||
@@ -208,52 +207,51 @@
|
|||||||
iconPath: mypoint,
|
iconPath: mypoint,
|
||||||
title: '我的位置',
|
title: '我的位置',
|
||||||
width: 20,
|
width: 20,
|
||||||
height: 20
|
height: 20,
|
||||||
})
|
});
|
||||||
resolve(arr)
|
resolve(arr);
|
||||||
}
|
|
||||||
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.color_999999 {
|
.color_999999 {
|
||||||
color: #999999;
|
color: #999999;
|
||||||
}
|
}
|
||||||
|
|
||||||
.fs_12 {
|
.fs_12 {
|
||||||
font-size: 24rpx;
|
font-size: 24rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mar_top5 {
|
.mar_top5 {
|
||||||
margin-top: 10rpx;
|
margin-top: 10rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.active {
|
.active {
|
||||||
background: #EAEAEA !important;
|
background: #eaeaea !important;
|
||||||
color: #AFAFAF;
|
color: #afafaf;
|
||||||
}
|
}
|
||||||
|
|
||||||
.card_mark {
|
.card_mark {
|
||||||
.mark_l {
|
.mark_l {
|
||||||
width: 56rpx;
|
width: 56rpx;
|
||||||
height: 28rpx;
|
height: 28rpx;
|
||||||
border-radius: 12rpx 0 12rpx 12rpx;
|
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-size: 28rpx;
|
||||||
font-family: PingFang-SC-Bold, PingFang-SC;
|
font-family: PingFang-SC-Bold, PingFang-SC;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
color: #FFFFFF;
|
color: #ffffff;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.position-bottom {
|
.position-bottom {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 0;
|
left: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
@@ -274,7 +272,7 @@
|
|||||||
.swiper-item {
|
.swiper-item {
|
||||||
width: 660rpx;
|
width: 660rpx;
|
||||||
height: 406rpx;
|
height: 406rpx;
|
||||||
background: #FFFFFF;
|
background: #ffffff;
|
||||||
box-shadow: 0rpx 2rpx 4rpx 0rpx rgba(0, 0, 0, 0.5);
|
box-shadow: 0rpx 2rpx 4rpx 0rpx rgba(0, 0, 0, 0.5);
|
||||||
border-radius: 27rpx;
|
border-radius: 27rpx;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
@@ -304,12 +302,12 @@
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
width: 223rpx;
|
width: 223rpx;
|
||||||
height: 64rpx;
|
height: 64rpx;
|
||||||
background: linear-gradient(to right, #A043C1 0%, #4133A2 100%);
|
background: linear-gradient(to right, #a043c1 0%, #4133a2 100%);
|
||||||
border-radius: 15rpx;
|
border-radius: 15rpx;
|
||||||
color: #FFFFFF;
|
color: #ffffff;
|
||||||
font-size: 26rpx;
|
font-size: 26rpx;
|
||||||
font-weight: 800;
|
font-weight: 800;
|
||||||
color: #FFFFFF;
|
color: #ffffff;
|
||||||
line-height: 64rpx;
|
line-height: 64rpx;
|
||||||
|
|
||||||
.btn-img {
|
.btn-img {
|
||||||
@@ -321,12 +319,10 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.app_container {
|
.app_container {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
left: 0;
|
left: 0;
|
||||||
top: 0;
|
top: 0;
|
||||||
@@ -354,11 +350,11 @@
|
|||||||
.put {
|
.put {
|
||||||
padding-left: 30rpx;
|
padding-left: 30rpx;
|
||||||
height: 72rpx;
|
height: 72rpx;
|
||||||
background: #FFFFFF;
|
background: #ffffff;
|
||||||
border-radius: 36rpx;
|
border-radius: 36rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
/deep/ .put-pla {
|
::v-deep .put-pla {
|
||||||
height: 33rpx;
|
height: 33rpx;
|
||||||
font-size: 24rpx;
|
font-size: 24rpx;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
@@ -371,12 +367,12 @@
|
|||||||
right: 30rpx;
|
right: 30rpx;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
transform: translate(0, -50%);
|
transform: translate(0, -50%);
|
||||||
color: #FFFFFF;
|
color: #ffffff;
|
||||||
width: 120rpx;
|
width: 120rpx;
|
||||||
height: 56rpx;
|
height: 56rpx;
|
||||||
line-height: 56rpx;
|
line-height: 56rpx;
|
||||||
font-size: 28rpx;
|
font-size: 28rpx;
|
||||||
background: linear-gradient(157deg, #A043C1 0%, #4133A2 100%);
|
background: linear-gradient(157deg, #a043c1 0%, #4133a2 100%);
|
||||||
border-radius: 29rpx;
|
border-radius: 29rpx;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -386,5 +382,5 @@
|
|||||||
.view-map {
|
.view-map {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<view>
|
<view>
|
||||||
<view class="sealBox">
|
<view class="sealBox">
|
||||||
<view style="height: 70rpx;"></view>
|
<view style="height: 70rpx"></view>
|
||||||
<view class="name">签名</view>
|
<view class="name">签名</view>
|
||||||
<view v-if="src" class="sealContent">
|
<view v-if="src" class="sealContent">
|
||||||
<image class="img" mode="aspectFit" :src="src"></image>
|
<image class="img" mode="aspectFit" :src="src"></image>
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view v-if="!src" class="sealAgreement">
|
<view v-if="!src" class="sealAgreement">
|
||||||
<checkbox :checked="status" @click="checkClick"/>
|
<checkbox :checked="status" @click="checkClick" />
|
||||||
<view>我已阅读并同意</view>
|
<view>我已阅读并同意</view>
|
||||||
<view class="agreement" @click="goAgreement('/pages/user/sealAgreement')">《申请证书协议》</view>
|
<view class="agreement" @click="goAgreement('/pages/user/sealAgreement')">《申请证书协议》</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -35,75 +35,75 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import {mapGetters} from 'vuex'
|
import { mapGetters } from 'vuex';
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
status:false
|
status: false,
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
// this.$store.dispatch('setAutograph')
|
// this.$store.dispatch('setAutograph')
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
goAgreement (url) {
|
goAgreement(url) {
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url
|
url,
|
||||||
})
|
});
|
||||||
},
|
},
|
||||||
checkClick(){
|
checkClick() {
|
||||||
this.status = !this.status
|
this.status = !this.status;
|
||||||
},
|
},
|
||||||
next () {
|
next() {
|
||||||
uni.navigateBack()
|
uni.navigateBack();
|
||||||
// uni.switchTab({
|
// uni.switchTab({
|
||||||
// url: '/pages/index/index'
|
// url: '/pages/index/index'
|
||||||
// })
|
// })
|
||||||
},
|
},
|
||||||
go(url){
|
go(url) {
|
||||||
if (!this.status){
|
if (!this.status) {
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: '请先阅读并同意《申请证书协议》',
|
title: '请先阅读并同意《申请证书协议》',
|
||||||
icon: 'none'
|
icon: 'none',
|
||||||
})
|
});
|
||||||
return
|
return;
|
||||||
}
|
}
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url: `/pageMy/setUserBase/seal/sealCanvas?path=/pageMy/setUserBase/seal/sealCanvas`
|
url: `/pageMy/setUserBase/seal/sealCanvas?path=/pageMy/setUserBase/seal/sealCanvas`,
|
||||||
})
|
});
|
||||||
|
},
|
||||||
|
getInpCode: function (e) {
|
||||||
|
console.log(e);
|
||||||
},
|
},
|
||||||
getInpCode: function(e) {
|
|
||||||
console.log(e)
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapGetters(['autograph']),
|
...mapGetters(['autograph']),
|
||||||
src(){
|
src() {
|
||||||
if (this.autograph.data && this.autograph.data.signSrcUrl){
|
if (this.autograph.data && this.autograph.data.signSrcUrl) {
|
||||||
return this.autograph.data.signSrcUrl
|
return this.autograph.data.signSrcUrl;
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.sealAgreement{
|
.sealAgreement {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
margin: 30rpx;
|
margin: 30rpx;
|
||||||
font-size: 32rpx;
|
font-size: 32rpx;
|
||||||
.agreement{
|
.agreement {
|
||||||
color: #007AFF;
|
color: #007aff;
|
||||||
}
|
}
|
||||||
/deep/ .uni-checkbox-input{
|
::v-deep .uni-checkbox-input {
|
||||||
border-radius: 22px!important;
|
border-radius: 22px !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.nocheck {
|
.nocheck {
|
||||||
opacity: 0.3;
|
opacity: 0.3;
|
||||||
}
|
}
|
||||||
.bottombtn {
|
.bottombtn {
|
||||||
background-color: #1B66FF;
|
background-color: #1b66ff;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
border-radius: 10rpx;
|
border-radius: 10rpx;
|
||||||
@@ -111,21 +111,20 @@
|
|||||||
font-size: 32rpx;
|
font-size: 32rpx;
|
||||||
height: 90rpx;
|
height: 90rpx;
|
||||||
line-height: 90rpx;
|
line-height: 90rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn {
|
.btn {
|
||||||
background-color: #fefefe;
|
background-color: #fefefe;
|
||||||
padding: 70rpx 80rpx;
|
padding: 70rpx 80rpx;
|
||||||
}
|
}
|
||||||
.sealBox{
|
.sealBox {
|
||||||
background-color: #FFFFFF;
|
background-color: #ffffff;
|
||||||
padding: 0 15px 0 15px;
|
padding: 0 15px 0 15px;
|
||||||
.name{
|
.name {
|
||||||
font-size: 32rpx;
|
font-size: 32rpx;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
color: #333333;
|
color: #333333;
|
||||||
line-height: 45rpx;
|
line-height: 45rpx;
|
||||||
|
|
||||||
}
|
}
|
||||||
.listRight {
|
.listRight {
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -150,25 +149,24 @@
|
|||||||
color: #333333;
|
color: #333333;
|
||||||
height: 88rpx;
|
height: 88rpx;
|
||||||
}
|
}
|
||||||
.sealContent{
|
.sealContent {
|
||||||
background: #F6F6F6;
|
background: #f6f6f6;
|
||||||
padding: 16rpx;
|
padding: 16rpx;
|
||||||
margin-top: 14rpx;
|
margin-top: 14rpx;
|
||||||
position:relative;
|
position: relative;
|
||||||
.img{
|
.img {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 312rpx;
|
height: 312rpx;
|
||||||
background-color: #FFFFFF;
|
background-color: #ffffff;
|
||||||
}
|
}
|
||||||
.contentFont{
|
.contentFont {
|
||||||
height: 312rpx;
|
height: 312rpx;
|
||||||
line-height: 312rpx;
|
line-height: 312rpx;
|
||||||
font-size: 30rpx;
|
font-size: 30rpx;
|
||||||
color: #999999;
|
color: #999999;
|
||||||
background: #FFFFFF;
|
background: #ffffff;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -54,7 +54,7 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<!-- 技能标签 end -->
|
<!-- 技能标签 end -->
|
||||||
<view v-if="info.jobSources" class="prolist">来源:{{ info.jobSources || '暂无' }}</view>
|
<view v-if="info.jobSources" style="color: red" class="prolist">来源:{{ info.jobSources || '暂无' }}</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="head">
|
<view class="head">
|
||||||
<view style="display: flex; align-items: center">
|
<view style="display: flex; align-items: center">
|
||||||
|
|||||||
@@ -59,7 +59,7 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<!-- 技能标签 end -->
|
<!-- 技能标签 end -->
|
||||||
<view v-if="info.jobSources" class="prolist">来源:{{ info.jobSources || '暂无' }}</view>
|
<view v-if="info.jobSources" style="color: red" class="prolist">来源:{{ info.jobSources || '暂无' }}</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="head">
|
<view class="head">
|
||||||
<!-- <view class="proname proneed">
|
<!-- <view class="proname proneed">
|
||||||
|
|||||||
@@ -13,7 +13,9 @@
|
|||||||
行业类型:{{ info.tradeNames ? info.tradeNames : info.jobCompanyIndustry || '暂无' }}
|
行业类型:{{ info.tradeNames ? info.tradeNames : info.jobCompanyIndustry || '暂无' }}
|
||||||
</view>
|
</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="prolist">
|
||||||
|
参考工资:{{ info.wage }}~{{ info.wageUpper }}{{ wageUnit[info.wageUnitCategory] }}
|
||||||
|
</view>
|
||||||
<!-- <view class="fee">
|
<!-- <view class="fee">
|
||||||
{{info.wage}}{{wageUnit[info.wageUnitCategory]}}
|
{{info.wage}}{{wageUnit[info.wageUnitCategory]}}
|
||||||
</view> -->
|
</view> -->
|
||||||
@@ -49,7 +51,7 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<!-- 技能标签 end -->
|
<!-- 技能标签 end -->
|
||||||
<view v-if="info.jobSources" class="prolist">来源:{{ info.jobSources || '暂无' }}</view>
|
<view v-if="info.jobSources" style="color: red" class="prolist">来源:{{ info.jobSources || '暂无' }}</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="head">
|
<view class="head">
|
||||||
<!-- <view class="proname proneed">
|
<!-- <view class="proname proneed">
|
||||||
@@ -189,7 +191,11 @@
|
|||||||
</view>
|
</view>
|
||||||
<view style="text-align: center; font-size: 28rpx; margin-top: 30rpx">
|
<view style="text-align: center; font-size: 28rpx; margin-top: 30rpx">
|
||||||
{{ info.callName || '联系人 ' }} :
|
{{ info.callName || '联系人 ' }} :
|
||||||
<span style="color: blue" v-if="info.callNumber" @click="tools.onDialingPhoneNumber(info.callNumber)">
|
<span
|
||||||
|
style="color: blue"
|
||||||
|
v-if="info.callNumber"
|
||||||
|
@click="tools.onDialingPhoneNumber(info.callNumber)"
|
||||||
|
>
|
||||||
{{ info.callNumber }}
|
{{ info.callNumber }}
|
||||||
</span>
|
</span>
|
||||||
<span style="color: #333333" v-else>无联系方式</span>
|
<span style="color: #333333" v-else>无联系方式</span>
|
||||||
|
|||||||
@@ -7,42 +7,26 @@
|
|||||||
<!-- <view class="prolist">
|
<!-- <view class="prolist">
|
||||||
任务编码:{{info.missionNo}}
|
任务编码:{{info.missionNo}}
|
||||||
</view> -->
|
</view> -->
|
||||||
<view class="prolist">
|
<view class="prolist">岗位日期:{{ dateFormat(info.stime) }}至{{ dateFormat(info.etime) }}</view>
|
||||||
岗位日期:{{ dateFormat((info.stime)) }}至{{ dateFormat((info.etime)) }}
|
|
||||||
</view>
|
|
||||||
<!-- <view class="prolist">
|
<!-- <view class="prolist">
|
||||||
报名截止:{{dateFormat((info.etimePub))}}
|
报名截止:{{dateFormat((info.etimePub))}}
|
||||||
</view> -->
|
</view> -->
|
||||||
<view class="prolist">
|
<view class="prolist">行业类型:{{ info.tradeNames }}</view>
|
||||||
行业类型:{{ info.tradeNames }}
|
<view class="prolist">工种类型:{{ info.worktypeNames }}</view>
|
||||||
</view>
|
|
||||||
<view class="prolist">
|
|
||||||
工种类型:{{ info.worktypeNames }}
|
|
||||||
</view>
|
|
||||||
<view class="fee">
|
<view class="fee">
|
||||||
{{ info.wage }}
|
{{ info.wage }}
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="head">
|
<view class="head">
|
||||||
<view class="proname proneed">
|
<view class="proname proneed">岗位要求</view>
|
||||||
岗位要求
|
<view class="prolist">
|
||||||
|
<view class="protype">年龄要求:{{ age[info.ageDesc] }}</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="prolist">
|
<view class="prolist">
|
||||||
<view class="protype">
|
<view class="protype">学历要求:{{ education[info.education] }}</view>
|
||||||
年龄要求:{{ age[info.ageDesc] }}
|
<view class="protype">经验要求:{{ experience[info.experienceDesc] }}</view>
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view class="prolist">
|
|
||||||
<view class="protype">
|
|
||||||
学历要求:{{ education[info.education] }}
|
|
||||||
</view>
|
|
||||||
<view class="protype">
|
|
||||||
经验要求:{{ experience[info.experienceDesc] }}
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view class="prolist proint" style="font-weight: bold;color:#333;">
|
|
||||||
任务描述
|
|
||||||
</view>
|
</view>
|
||||||
|
<view class="prolist proint" style="font-weight: bold; color: #333">任务描述</view>
|
||||||
<view class="prolist description">
|
<view class="prolist description">
|
||||||
{{ info.missionDesc }}
|
{{ info.missionDesc }}
|
||||||
</view>
|
</view>
|
||||||
@@ -53,25 +37,17 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<!-- 技能标签 end -->
|
<!-- 技能标签 end -->
|
||||||
<view v-if="info.jobSources" class="prolist">
|
<view v-if="info.jobSources" style="color: red" class="prolist">来源:{{ info.jobSources }}</view>
|
||||||
来源:{{ info.jobSources }}
|
|
||||||
</view>
|
|
||||||
</view>
|
</view>
|
||||||
<view class="head">
|
<view class="head">
|
||||||
<view class="proname proneed">
|
<view class="proname proneed">用工单位信息</view>
|
||||||
用工单位信息
|
|
||||||
</view>
|
|
||||||
<view class="prolist">
|
<view class="prolist">
|
||||||
{{ info.companyName }}
|
{{ info.companyName }}
|
||||||
</view>
|
</view>
|
||||||
<view class="prolist">
|
<view class="prolist">用工单位地址:{{ info.companyAddress }}</view>
|
||||||
用工单位地址:{{ info.companyAddress }}
|
|
||||||
</view>
|
|
||||||
</view>
|
</view>
|
||||||
<view class="head">
|
<view class="head">
|
||||||
<view class="proname proneed">
|
<view class="proname proneed">地址</view>
|
||||||
地址
|
|
||||||
</view>
|
|
||||||
<!-- <view class="prolist">
|
<!-- <view class="prolist">
|
||||||
<view class="protype">
|
<view class="protype">
|
||||||
联系人:{{info.callName}}
|
联系人:{{info.callName}}
|
||||||
@@ -83,48 +59,62 @@
|
|||||||
<view class="prolist" v-if="info.callNumber">
|
<view class="prolist" v-if="info.callNumber">
|
||||||
座机号:{{info.callNumber}}
|
座机号:{{info.callNumber}}
|
||||||
</view> -->
|
</view> -->
|
||||||
<view class="prolist">
|
<view class="prolist">任务地址:{{ info.address }}</view>
|
||||||
任务地址:{{ info.address }}
|
|
||||||
</view>
|
|
||||||
<view class="map">
|
<view class="map">
|
||||||
<super-map ref="uMap" style="width: 100%;height: 100%;" :latitude="latitude" :longitude="longitude"
|
<super-map
|
||||||
:open="true" :zoom="14" :min-zoom="10" :max-zoom="20" :MapUrl="$config.supperMap"
|
ref="uMap"
|
||||||
:flag-tip="false"></super-map>
|
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>
|
</view>
|
||||||
<!-- <map class="map" :latitude="latitude" :longitude="longitude" :markers="covers"></map> -->
|
<!-- <map class="map" :latitude="latitude" :longitude="longitude" :markers="covers"></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">
|
<view class="btn">
|
||||||
|
<view
|
||||||
<view @click="callPhone" class="bottombtn flexbtn"
|
@click="callPhone"
|
||||||
style="margin-right: 10rpx;background-color: #FBAD17;border-radius: 45rpx;">
|
class="bottombtn flexbtn"
|
||||||
|
style="margin-right: 10rpx; background-color: #fbad17; border-radius: 45rpx"
|
||||||
|
>
|
||||||
查看申请列表
|
查看申请列表
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<uniMask :maskShow="maskShow">
|
<uniMask :maskShow="maskShow">
|
||||||
<view class="contractMask">
|
<view class="contractMask">
|
||||||
<!-- #ifdef H5 || APP-PLUS -->
|
<!-- #ifdef H5 || APP-PLUS -->
|
||||||
<view class="close" @click="close" style="top: 124rpx;">+</view>
|
<view class="close" @click="close" style="top: 124rpx">+</view>
|
||||||
<!-- #endif -->
|
<!-- #endif -->
|
||||||
<!-- #ifdef MP-WEIXIN -->
|
<!-- #ifdef MP-WEIXIN -->
|
||||||
<view class="close" @click="close">+</view>
|
<view class="close" @click="close">+</view>
|
||||||
<!-- #endif -->
|
<!-- #endif -->
|
||||||
<view style="height: 30px;"></view>
|
<view style="height: 30px"></view>
|
||||||
<img :src="src" alt="" style="width:100%;height: 1000px;">
|
<img :src="src" alt="" style="width: 100%; height: 1000px" />
|
||||||
<view v-if="nextBtn" class="down" @click="next">下一步</view>
|
<view v-if="nextBtn" class="down" @click="next">下一步</view>
|
||||||
</view>
|
</view>
|
||||||
</uniMask>
|
</uniMask>
|
||||||
<u-popup closeable :show="showPopUp" mode="bottom" @close="closePopUp">
|
<u-popup closeable :show="showPopUp" mode="bottom" @close="closePopUp">
|
||||||
<view style="min-height: 100rpx;padding: 60rpx 40rpx;">
|
<view style="min-height: 100rpx; padding: 60rpx 40rpx">
|
||||||
<view class="contactWrapper" v-for="(item, index) in info.applyList" :key="index">
|
<view class="contactWrapper" v-for="(item, index) in info.applyList" :key="index">
|
||||||
<view class="wrapperLeft">
|
<view class="wrapperLeft">
|
||||||
<view> {{ item.realName }} : {{ item.telphone }} </view>
|
<view>{{ item.realName }} : {{ item.telphone }}</view>
|
||||||
<view> 申请时间:{{ item.applyTime }} </view>
|
<view>申请时间:{{ item.applyTime }}</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="applyTime">
|
<view class="applyTime">
|
||||||
<!-- // 1:申请中;2:申请通过;3:申请未通过;-->
|
<!-- // 1:申请中;2:申请通过;3:申请未通过;-->
|
||||||
<view class="btnGr" v-if="item.status === 1 ||item.status === 3"
|
<view
|
||||||
@click="changeWorkerStatus(item)">录用</view>
|
class="btnGr"
|
||||||
|
v-if="item.status === 1 || item.status === 3"
|
||||||
|
@click="changeWorkerStatus(item)"
|
||||||
|
>
|
||||||
|
录用
|
||||||
|
</view>
|
||||||
<view class="btnHuy" v-if="item.status === 2" @click="cancelWorkerStatus(item)">取消</view>
|
<view class="btnHuy" v-if="item.status === 2" @click="cancelWorkerStatus(item)">取消</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -134,7 +124,7 @@
|
|||||||
|
|
||||||
<view v-else-if="showCode" class="codeSealBox">
|
<view v-else-if="showCode" class="codeSealBox">
|
||||||
<!-- #ifdef H5 || APP-PLUS -->
|
<!-- #ifdef H5 || APP-PLUS -->
|
||||||
<view class="closeCode" @click="closeShowCode" style="top: 124rpx;">+</view>
|
<view class="closeCode" @click="closeShowCode" style="top: 124rpx">+</view>
|
||||||
<!-- #endif -->
|
<!-- #endif -->
|
||||||
<!-- #ifdef MP-WEIXIN -->
|
<!-- #ifdef MP-WEIXIN -->
|
||||||
<view class="closeCode" @click="closeShowCode">+</view>
|
<view class="closeCode" @click="closeShowCode">+</view>
|
||||||
@@ -144,39 +134,25 @@
|
|||||||
<view class="name">签名密码</view>
|
<view class="name">签名密码</view>
|
||||||
<view class="tip">6位数字签名密码</view>
|
<view class="tip">6位数字签名密码</view>
|
||||||
</view>
|
</view>
|
||||||
<view style="height: 36px;"></view>
|
<view style="height: 36px"></view>
|
||||||
<valid-code ref="validCode" @finish="getInpCode" :maxlength="maxlength"></valid-code>
|
<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 class="forget" @click="forget">忘记密码?</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import {
|
import { mapGetters } from 'vuex';
|
||||||
mapGetters
|
import { recruit_missionDetail } from '@/api/mission.js';
|
||||||
} from 'vuex'
|
import { GoLogin } from '@/untils/AxiosUtils.js';
|
||||||
import {
|
import { setRead, updataEmployedNew, cancelEmployed } from '@/api/news.js';
|
||||||
recruit_missionDetail
|
import { checkPass } from '@/api/auth.js';
|
||||||
} from '@/api/mission.js';
|
import dictionary from '@/common/textdata.js';
|
||||||
import {
|
import { dateFormat } from '../../../../untils/format.js';
|
||||||
GoLogin
|
import uniMask from '@/components/uni-mask/mask.vue';
|
||||||
} from '@/untils/AxiosUtils.js';
|
import uniPopup from '@/components/uni-popup/uni-popup.vue';
|
||||||
import {
|
import validCode from '@/components/p-valid-code/p-valid-code.vue';
|
||||||
setRead,
|
export default {
|
||||||
updataEmployedNew,
|
|
||||||
cancelEmployed
|
|
||||||
} from '@/api/news.js';
|
|
||||||
import {
|
|
||||||
checkPass
|
|
||||||
} from '@/api/auth.js';
|
|
||||||
import dictionary from '@/common/textdata.js';
|
|
||||||
import {
|
|
||||||
dateFormat
|
|
||||||
} from "../../../../untils/format.js";
|
|
||||||
import uniMask from '@/components/uni-mask/mask.vue'
|
|
||||||
import uniPopup from '@/components/uni-popup/uni-popup.vue'
|
|
||||||
import validCode from '@/components/p-valid-code/p-valid-code.vue'
|
|
||||||
export default {
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
...dictionary,
|
...dictionary,
|
||||||
@@ -189,15 +165,18 @@
|
|||||||
loading: false,
|
loading: false,
|
||||||
latitude: 39.909, //中心点
|
latitude: 39.909, //中心点
|
||||||
longitude: 116.39742,
|
longitude: 116.39742,
|
||||||
covers: [{ //marker标记位置
|
covers: [
|
||||||
|
{
|
||||||
|
//marker标记位置
|
||||||
id: 0,
|
id: 0,
|
||||||
latitude: 0,
|
latitude: 0,
|
||||||
longitude: 0,
|
longitude: 0,
|
||||||
// width:30,
|
// width:30,
|
||||||
// height:30,
|
// height:30,
|
||||||
iconPath: '../../../../static/img/location.png'
|
iconPath: '../../../../static/img/location.png',
|
||||||
}],
|
},
|
||||||
missionNo: "",
|
],
|
||||||
|
missionNo: '',
|
||||||
isShow: '',
|
isShow: '',
|
||||||
type: '',
|
type: '',
|
||||||
id: '',
|
id: '',
|
||||||
@@ -205,14 +184,15 @@
|
|||||||
maxlength: 6,
|
maxlength: 6,
|
||||||
collectStatus: 0, // 收藏状态
|
collectStatus: 0, // 收藏状态
|
||||||
showPopUp: false,
|
showPopUp: false,
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
uniMask,
|
uniMask,
|
||||||
validCode,
|
validCode,
|
||||||
uniPopup
|
uniPopup,
|
||||||
},
|
},
|
||||||
onLoad: function(option) { //option为object类型,会序列化上个页面传递的参数
|
onLoad: function (option) {
|
||||||
|
//option为object类型,会序列化上个页面传递的参数
|
||||||
// this.$store.dispatch('setAutograph')
|
// this.$store.dispatch('setAutograph')
|
||||||
if (option.missionNo) {
|
if (option.missionNo) {
|
||||||
this.missionNo = decodeURIComponent(option.missionNo);
|
this.missionNo = decodeURIComponent(option.missionNo);
|
||||||
@@ -227,46 +207,45 @@
|
|||||||
this.id = option.id; //消息id
|
this.id = option.id; //消息id
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onShow: function() {
|
onShow: function () {
|
||||||
this.showDetail = true
|
this.showDetail = true;
|
||||||
this.getData();
|
this.getData();
|
||||||
|
|
||||||
},
|
},
|
||||||
onShareAppMessage(obj) {
|
onShareAppMessage(obj) {
|
||||||
return {
|
return {
|
||||||
title: this.info.missionTitle,
|
title: this.info.missionTitle,
|
||||||
path: `/pages/projectInfo/projectInfo?missionNo=${this.info.missionNo}`
|
path: `/pages/projectInfo/projectInfo?missionNo=${this.info.missionNo}`,
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
dateFormat,
|
dateFormat,
|
||||||
async cancelWorkerStatus(item) {
|
async cancelWorkerStatus(item) {
|
||||||
let params = {
|
let params = {
|
||||||
missionNo: this.info.missionNo,
|
missionNo: this.info.missionNo,
|
||||||
ids: item.id
|
ids: item.id,
|
||||||
}
|
};
|
||||||
uni.showLoading({
|
uni.showLoading({
|
||||||
title: '请稍后'
|
title: '请稍后',
|
||||||
})
|
});
|
||||||
let resData = await cancelEmployed(params)
|
let resData = await cancelEmployed(params);
|
||||||
uni.hideLoading()
|
uni.hideLoading();
|
||||||
if (resData.data.code === 200) {
|
if (resData.data.code === 200) {
|
||||||
this.$api.msg('操作成功')
|
this.$api.msg('操作成功');
|
||||||
this.getData();
|
this.getData();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async changeWorkerStatus(item) {
|
async changeWorkerStatus(item) {
|
||||||
let params = {
|
let params = {
|
||||||
missionNo: this.info.missionNo,
|
missionNo: this.info.missionNo,
|
||||||
ids: item.id
|
ids: item.id,
|
||||||
}
|
};
|
||||||
uni.showLoading({
|
uni.showLoading({
|
||||||
title: '请稍后'
|
title: '请稍后',
|
||||||
})
|
});
|
||||||
let resData = await updataEmployedNew(params)
|
let resData = await updataEmployedNew(params);
|
||||||
uni.hideLoading()
|
uni.hideLoading();
|
||||||
if (resData.data.code === 200) {
|
if (resData.data.code === 200) {
|
||||||
this.$api.msg('操作成功')
|
this.$api.msg('操作成功');
|
||||||
this.getData();
|
this.getData();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -276,10 +255,11 @@
|
|||||||
closePopUp() {
|
closePopUp() {
|
||||||
this.showPopUp = false;
|
this.showPopUp = false;
|
||||||
},
|
},
|
||||||
getData: function() {
|
getData: function () {
|
||||||
const self = this;
|
const self = this;
|
||||||
// missionDetail(self.missionNo).then(res => {
|
// missionDetail(self.missionNo).then(res => {
|
||||||
recruit_missionDetail(self.missionNo, self.type).then(res => {
|
recruit_missionDetail(self.missionNo, self.type).then(
|
||||||
|
(res) => {
|
||||||
self.info = res.data.data;
|
self.info = res.data.data;
|
||||||
self.status = res.data.data.detailStatus;
|
self.status = res.data.data.detailStatus;
|
||||||
self.latitude = self.info.lat;
|
self.latitude = self.info.lat;
|
||||||
@@ -289,75 +269,79 @@
|
|||||||
self.showDetail = true;
|
self.showDetail = true;
|
||||||
if (self.type === 1) {
|
if (self.type === 1) {
|
||||||
// 设置已读
|
// 设置已读
|
||||||
setRead(self.id).then(res => {
|
setRead(self.id).then((res) => {
|
||||||
self.$store.commit("SET_READ");
|
self.$store.commit('SET_READ');
|
||||||
})
|
|
||||||
}
|
|
||||||
}, error => {
|
|
||||||
console.log(error);
|
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
(error) => {
|
||||||
|
console.log(error);
|
||||||
|
}
|
||||||
|
);
|
||||||
},
|
},
|
||||||
// 查看合同
|
// 查看合同
|
||||||
lookMask() {
|
lookMask() {
|
||||||
this.maskShow = true
|
this.maskShow = true;
|
||||||
},
|
},
|
||||||
// 关闭弹窗
|
// 关闭弹窗
|
||||||
close() {
|
close() {
|
||||||
this.maskShow = false
|
this.maskShow = false;
|
||||||
},
|
},
|
||||||
// 合同下一步
|
// 合同下一步
|
||||||
next() {
|
next() {
|
||||||
this.maskShow = false
|
this.maskShow = false;
|
||||||
this.showDetail = false
|
this.showDetail = false;
|
||||||
this.showCode = true
|
this.showCode = true;
|
||||||
},
|
},
|
||||||
// 输入签名密码
|
// 输入签名密码
|
||||||
getInpCode(password) {
|
getInpCode(password) {
|
||||||
uni.showLoading({
|
uni.showLoading({
|
||||||
title: "请求中..."
|
title: '请求中...',
|
||||||
})
|
});
|
||||||
this.loading = true
|
this.loading = true;
|
||||||
var obj = {
|
var obj = {
|
||||||
pass: password
|
pass: password,
|
||||||
}
|
};
|
||||||
checkPass(obj).then(res => {
|
checkPass(obj)
|
||||||
this.closeShowCode()
|
.then((res) => {
|
||||||
}).catch(err => {
|
this.closeShowCode();
|
||||||
this.loading = false
|
|
||||||
})
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
this.loading = false;
|
||||||
|
});
|
||||||
},
|
},
|
||||||
// 关闭签名密码弹窗
|
// 关闭签名密码弹窗
|
||||||
closeShowCode() {
|
closeShowCode() {
|
||||||
this.showCode = false
|
this.showCode = false;
|
||||||
this.showDetail = true
|
this.showDetail = true;
|
||||||
},
|
},
|
||||||
// 忘记密码
|
// 忘记密码
|
||||||
forget() {
|
forget() {
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url: `/pageMy/setUserBase/seal/forget?forget=true`
|
url: `/pageMy/setUserBase/seal/forget?forget=true`,
|
||||||
})
|
});
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapGetters(['auth', 'autograph']),
|
...mapGetters(['auth', 'autograph']),
|
||||||
skillNames() {
|
skillNames() {
|
||||||
if (this.info.skillNames) {
|
if (this.info.skillNames) {
|
||||||
return this.info.skillNames.split(',')
|
return this.info.skillNames.split(',');
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.codeSealBox {
|
.codeSealBox {
|
||||||
padding: 285rpx 72rpx 0 72rpx;
|
padding: 285rpx 72rpx 0 72rpx;
|
||||||
|
|
||||||
.closeCode {
|
.closeCode {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 36rpx;
|
right: 36rpx;
|
||||||
top: 120rpx;
|
top: 120rpx;
|
||||||
color: #1B66FF;
|
color: #1b66ff;
|
||||||
transform: rotate(45deg);
|
transform: rotate(45deg);
|
||||||
font-size: 40px;
|
font-size: 40px;
|
||||||
}
|
}
|
||||||
@@ -391,15 +375,14 @@
|
|||||||
font-size: 28rpx;
|
font-size: 28rpx;
|
||||||
font-family: PingFangSC-Regular, PingFang SC;
|
font-family: PingFangSC-Regular, PingFang SC;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
color: #5AA0FA;
|
color: #5aa0fa;
|
||||||
line-height: 38rpx;
|
line-height: 38rpx;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
.contractMask {
|
||||||
|
background-color: #ffffff;
|
||||||
.contractMask {
|
|
||||||
background-color: #FFFFFF;
|
|
||||||
margin: 30rpx;
|
margin: 30rpx;
|
||||||
position: relative;
|
position: relative;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
@@ -409,7 +392,7 @@
|
|||||||
.close {
|
.close {
|
||||||
width: 23px;
|
width: 23px;
|
||||||
height: 23px;
|
height: 23px;
|
||||||
color: #1B66FF;
|
color: #1b66ff;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
right: 60rpx;
|
right: 60rpx;
|
||||||
top: 60rpx;
|
top: 60rpx;
|
||||||
@@ -425,24 +408,24 @@
|
|||||||
height: 90rpx;
|
height: 90rpx;
|
||||||
line-height: 90rpx;
|
line-height: 90rpx;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
background: #1B66FF;
|
background: #1b66ff;
|
||||||
font-size: 36rpx;
|
font-size: 36rpx;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
color: #FFFFFF;
|
color: #ffffff;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.lookContract {
|
.lookContract {
|
||||||
width: 30%;
|
width: 30%;
|
||||||
margin-right: 30rpx;
|
margin-right: 30rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.flexbtn {
|
.flexbtn {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bottombtn {
|
.bottombtn {
|
||||||
background-color: #1B66FF;
|
background-color: #1b66ff;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
border-radius: 10rpx;
|
border-radius: 10rpx;
|
||||||
@@ -450,9 +433,9 @@
|
|||||||
font-size: 32rpx;
|
font-size: 32rpx;
|
||||||
height: 90rpx;
|
height: 90rpx;
|
||||||
line-height: 90rpx;
|
line-height: 90rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn {
|
.btn {
|
||||||
background-color: #fefefe;
|
background-color: #fefefe;
|
||||||
width: 690rpx;
|
width: 690rpx;
|
||||||
padding: 30rpx;
|
padding: 30rpx;
|
||||||
@@ -461,19 +444,19 @@
|
|||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
.disabledBtn {
|
.disabledBtn {
|
||||||
background-color: #c8c9cc;
|
background-color: #c8c9cc;
|
||||||
}
|
}
|
||||||
|
|
||||||
.map {
|
.map {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 350rpx;
|
height: 350rpx;
|
||||||
margin-top: 30rpx;
|
margin-top: 30rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.askList {
|
.askList {
|
||||||
font-family: PingFangSC-Regular;
|
font-family: PingFangSC-Regular;
|
||||||
font-size: 24rpx;
|
font-size: 24rpx;
|
||||||
color: #666666;
|
color: #666666;
|
||||||
@@ -481,9 +464,9 @@
|
|||||||
padding: 5rpx 15rpx;
|
padding: 5rpx 15rpx;
|
||||||
margin-right: 10rpx;
|
margin-right: 10rpx;
|
||||||
margin-top: 15rpx;
|
margin-top: 15rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ask {
|
.ask {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -491,31 +474,29 @@
|
|||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
margin: 20rpx 0;
|
margin: 20rpx 0;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
.proint {
|
||||||
|
|
||||||
.proint {
|
|
||||||
margin-top: 30rpx;
|
margin-top: 30rpx;
|
||||||
font-size: 30rpx !important;
|
font-size: 30rpx !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.proneed {
|
.proneed {
|
||||||
font-size: 32rpx !important;
|
font-size: 32rpx !important;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
.fee {
|
||||||
|
|
||||||
.fee {
|
|
||||||
font-family: PingFangSC-Medium;
|
font-family: PingFangSC-Medium;
|
||||||
font-size: 32rpx;
|
font-size: 32rpx;
|
||||||
color: #F46161;
|
color: #f46161;
|
||||||
margin-top: 30rpx;
|
margin-top: 30rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.protype {
|
.protype {
|
||||||
width: 50%;
|
width: 50%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.prolist {
|
.prolist {
|
||||||
font-family: PingFangSC-Regular;
|
font-family: PingFangSC-Regular;
|
||||||
font-size: 28rpx;
|
font-size: 28rpx;
|
||||||
color: #666666;
|
color: #666666;
|
||||||
@@ -524,9 +505,9 @@
|
|||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
padding: 5rpx 0;
|
padding: 5rpx 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.proname {
|
.proname {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
font-family: PingFangSC-Medium;
|
font-family: PingFangSC-Medium;
|
||||||
font-size: 40rpx;
|
font-size: 40rpx;
|
||||||
@@ -534,20 +515,20 @@
|
|||||||
width: 90%;
|
width: 90%;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
padding-bottom: 20rpx;
|
padding-bottom: 20rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.head {
|
.head {
|
||||||
padding: 30rpx;
|
padding: 30rpx;
|
||||||
background: #fefefe;
|
background: #fefefe;
|
||||||
border-bottom: 20rpx solid #f6f6f6;
|
border-bottom: 20rpx solid #f6f6f6;
|
||||||
}
|
}
|
||||||
|
|
||||||
.description {
|
.description {
|
||||||
word-break: break-all;
|
word-break: break-all;
|
||||||
white-space: pre-line;
|
white-space: pre-line;
|
||||||
}
|
}
|
||||||
|
|
||||||
.contactWrapper {
|
.contactWrapper {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-size: 28rpx;
|
font-size: 28rpx;
|
||||||
@@ -558,32 +539,31 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
.applyTime {
|
||||||
|
|
||||||
.applyTime {
|
|
||||||
font-size: 24rpx;
|
font-size: 24rpx;
|
||||||
color: #666666;
|
color: #666666;
|
||||||
}
|
}
|
||||||
|
|
||||||
.wrapperLeft {
|
.wrapperLeft {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btnGr {
|
.btnGr {
|
||||||
background-color: green;
|
background-color: green;
|
||||||
color: #FFFFFF;
|
color: #ffffff;
|
||||||
padding: 10rpx 20rpx;
|
padding: 10rpx 20rpx;
|
||||||
border-radius: 5rpx;
|
border-radius: 5rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btnHuy {
|
.btnHuy {
|
||||||
background-color: #e8e8e8;
|
background-color: #e8e8e8;
|
||||||
color: #FFFFFF;
|
color: #ffffff;
|
||||||
padding: 10rpx 20rpx;
|
padding: 10rpx 20rpx;
|
||||||
border-radius: 5rpx;
|
border-radius: 5rpx;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<!-- 技能标签 end -->
|
<!-- 技能标签 end -->
|
||||||
<view v-if="info.jobSources" class="prolist">来源:{{ info.jobSources }}</view>
|
<view v-if="info.jobSources" style="color: red" class="prolist">来源:{{ info.jobSources }}</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="head">
|
<view class="head">
|
||||||
<!-- <view class="proname proneed">
|
<!-- <view class="proname proneed">
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -2,11 +2,7 @@
|
|||||||
<view
|
<view
|
||||||
class="custom-tree-select-content"
|
class="custom-tree-select-content"
|
||||||
:class="{
|
:class="{
|
||||||
border:
|
border: border && node[dataChildren] && node[dataChildren].length && node.showChildren,
|
||||||
border &&
|
|
||||||
node[dataChildren] &&
|
|
||||||
node[dataChildren].length &&
|
|
||||||
node.showChildren
|
|
||||||
}"
|
}"
|
||||||
:style="{ marginLeft: `${level ? 14 : 0}px` }"
|
:style="{ marginLeft: `${level ? 14 : 0}px` }"
|
||||||
>
|
>
|
||||||
@@ -28,22 +24,10 @@
|
|||||||
color="#333"
|
color="#333"
|
||||||
></uni-icons>
|
></uni-icons>
|
||||||
</view>
|
</view>
|
||||||
<view
|
<view v-if="loadingArr.includes(node[dataValue])" class="loading-icon-box">
|
||||||
v-if="loadingArr.includes(node[dataValue])"
|
<uni-icons class="loading-icon" type="spinner-cycle" size="14" color="#333"></uni-icons>
|
||||||
class="loading-icon-box"
|
|
||||||
>
|
|
||||||
<uni-icons
|
|
||||||
class="loading-icon"
|
|
||||||
type="spinner-cycle"
|
|
||||||
size="14"
|
|
||||||
color="#333"
|
|
||||||
></uni-icons>
|
|
||||||
</view>
|
</view>
|
||||||
<view
|
<view class="name" :style="node.disabled ? 'color: #999' : ''" @click.stop="nameClick(node)">
|
||||||
class="name"
|
|
||||||
:style="node.disabled ? 'color: #999' : ''"
|
|
||||||
@click.stop="nameClick(node)"
|
|
||||||
>
|
|
||||||
<text>{{ node[dataLabel] }}</text>
|
<text>{{ node[dataLabel] }}</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -56,10 +40,7 @@
|
|||||||
:class="['check-box', { disabled: node.disabled }]"
|
:class="['check-box', { disabled: node.disabled }]"
|
||||||
@click.stop="nodeClick(node)"
|
@click.stop="nodeClick(node)"
|
||||||
>
|
>
|
||||||
<view
|
<view v-if="!node.checked && node.partChecked && linkage" class="part-checked"></view>
|
||||||
v-if="!node.checked && node.partChecked && linkage"
|
|
||||||
class="part-checked"
|
|
||||||
></view>
|
|
||||||
<uni-icons
|
<uni-icons
|
||||||
v-if="node.checked"
|
v-if="node.checked"
|
||||||
type="checkmarkempty"
|
type="checkmarkempty"
|
||||||
@@ -69,11 +50,7 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view
|
<view v-if="node.showChildren && node[dataChildren] && node[dataChildren].length">
|
||||||
v-if="
|
|
||||||
node.showChildren && node[dataChildren] && node[dataChildren].length
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<data-select-item
|
<data-select-item
|
||||||
v-for="item in listData"
|
v-for="item in listData"
|
||||||
:key="item[dataValue]"
|
:key="item[dataValue]"
|
||||||
@@ -93,151 +70,143 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import dataSelectItem from './data-select-item.vue'
|
import dataSelectItem from './data-select-item.vue';
|
||||||
import { paging } from './utils'
|
import { paging } from './utils';
|
||||||
export default {
|
export default {
|
||||||
name: 'data-select-item',
|
name: 'data-select-item',
|
||||||
components: {
|
components: {
|
||||||
'data-select-item': dataSelectItem
|
'data-select-item': dataSelectItem,
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
node: {
|
node: {
|
||||||
type: Object,
|
type: Object,
|
||||||
default: () => ({})
|
default: () => ({}),
|
||||||
},
|
},
|
||||||
choseParent: {
|
choseParent: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: true
|
default: true,
|
||||||
},
|
},
|
||||||
dataLabel: {
|
dataLabel: {
|
||||||
type: String,
|
type: String,
|
||||||
default: 'name'
|
default: 'name',
|
||||||
},
|
},
|
||||||
dataValue: {
|
dataValue: {
|
||||||
type: String,
|
type: String,
|
||||||
default: 'value'
|
default: 'value',
|
||||||
},
|
},
|
||||||
dataChildren: {
|
dataChildren: {
|
||||||
type: String,
|
type: String,
|
||||||
default: 'children'
|
default: 'children',
|
||||||
},
|
},
|
||||||
border: {
|
border: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false,
|
||||||
},
|
},
|
||||||
linkage: {
|
linkage: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false,
|
||||||
},
|
},
|
||||||
level: {
|
level: {
|
||||||
type: Number,
|
type: Number,
|
||||||
default: 0
|
default: 0,
|
||||||
},
|
},
|
||||||
load: {
|
load: {
|
||||||
type: Function,
|
type: Function,
|
||||||
default: function () {}
|
default: function () {},
|
||||||
},
|
},
|
||||||
lazyLoadChildren: {
|
lazyLoadChildren: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false,
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
listData: [],
|
listData: [],
|
||||||
clearTimerList: [],
|
clearTimerList: [],
|
||||||
loadingArr: []
|
loadingArr: [],
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
watchData() {
|
watchData() {
|
||||||
const { node, dataChildren } = this
|
const { node, dataChildren } = this;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
node,
|
node,
|
||||||
dataChildren
|
dataChildren,
|
||||||
}
|
};
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
watchData: {
|
watchData: {
|
||||||
immediate: true,
|
immediate: true,
|
||||||
handler(newVal) {
|
handler(newVal) {
|
||||||
const { node, dataChildren } = newVal
|
const { node, dataChildren } = newVal;
|
||||||
if (
|
if (node.showChildren && node[dataChildren] && node[dataChildren].length) {
|
||||||
node.showChildren &&
|
this.resetClearTimerList();
|
||||||
node[dataChildren] &&
|
this.renderTree(node[dataChildren]);
|
||||||
node[dataChildren].length
|
|
||||||
) {
|
|
||||||
this.resetClearTimerList()
|
|
||||||
this.renderTree(node[dataChildren])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
// 懒加载
|
// 懒加载
|
||||||
renderTree(arr) {
|
renderTree(arr) {
|
||||||
const pagingArr = paging(arr)
|
const pagingArr = paging(arr);
|
||||||
this.listData.splice(0, this.listData.length, ...(pagingArr?.[0] || []))
|
this.listData.splice(0, this.listData.length, ...(pagingArr?.[0] || []));
|
||||||
this.lazyRenderList(pagingArr, 1)
|
this.lazyRenderList(pagingArr, 1);
|
||||||
},
|
},
|
||||||
// 懒加载具体逻辑
|
// 懒加载具体逻辑
|
||||||
lazyRenderList(arr, startIndex) {
|
lazyRenderList(arr, startIndex) {
|
||||||
for (let i = startIndex; i < arr.length; i++) {
|
for (let i = startIndex; i < arr.length; i++) {
|
||||||
let timer = null
|
let timer = null;
|
||||||
timer = setTimeout(() => {
|
timer = setTimeout(() => {
|
||||||
this.listData.push(...arr[i])
|
this.listData.push(...arr[i]);
|
||||||
}, i * 500)
|
}, i * 500);
|
||||||
this.clearTimerList.push(() => clearTimeout(timer))
|
this.clearTimerList.push(() => clearTimeout(timer));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 中断懒加载
|
// 中断懒加载
|
||||||
resetClearTimerList() {
|
resetClearTimerList() {
|
||||||
const list = [...this.clearTimerList]
|
const list = [...this.clearTimerList];
|
||||||
this.clearTimerList.splice(0, this.clearTimerList.length)
|
this.clearTimerList.splice(0, this.clearTimerList.length);
|
||||||
list.forEach((item) => item())
|
list.forEach((item) => item());
|
||||||
},
|
},
|
||||||
async nameClick(node) {
|
async nameClick(node) {
|
||||||
if (!node[this.dataChildren]?.length && this.lazyLoadChildren) {
|
if (!node[this.dataChildren]?.length && this.lazyLoadChildren) {
|
||||||
this.loadingArr.push(node[this.dataValue])
|
this.loadingArr.push(node[this.dataValue]);
|
||||||
try {
|
try {
|
||||||
const res = await this.load(node)
|
const res = await this.load(node);
|
||||||
if (Array.isArray(res)) {
|
if (Array.isArray(res)) {
|
||||||
uni.$emit('custom-tree-select-load', {
|
uni.$emit('custom-tree-select-load', {
|
||||||
source: node,
|
source: node,
|
||||||
target: res
|
target: res,
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
this.loadingArr = []
|
this.loadingArr = [];
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (
|
if (!node.showChildren && node[this.dataChildren] && node[this.dataChildren].length) {
|
||||||
!node.showChildren &&
|
|
||||||
node[this.dataChildren] &&
|
|
||||||
node[this.dataChildren].length
|
|
||||||
) {
|
|
||||||
// 打开
|
// 打开
|
||||||
this.renderTree(node[this.dataChildren])
|
this.renderTree(node[this.dataChildren]);
|
||||||
} else {
|
} else {
|
||||||
// 关闭
|
// 关闭
|
||||||
this.resetClearTimerList()
|
this.resetClearTimerList();
|
||||||
this.listData.splice(0, this.listData.length)
|
this.listData.splice(0, this.listData.length);
|
||||||
}
|
}
|
||||||
uni.$emit('custom-tree-select-name-click', node)
|
uni.$emit('custom-tree-select-name-click', node);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
nodeClick(node) {
|
nodeClick(node) {
|
||||||
if (!node.disabled) {
|
if (!node.disabled) {
|
||||||
uni.$emit('custom-tree-select-node-click', node)
|
uni.$emit('custom-tree-select-node-click', node);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
},
|
||||||
options: {
|
options: {
|
||||||
styleIsolation: 'shared'
|
styleIsolation: 'shared',
|
||||||
}
|
},
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@@ -263,7 +232,7 @@ $border-color: #c8c7cc;
|
|||||||
border-left: 1px solid $border-color;
|
border-left: 1px solid $border-color;
|
||||||
}
|
}
|
||||||
|
|
||||||
/deep/ .uni-checkbox-input {
|
::v-deep .uni-checkbox-input {
|
||||||
margin: 0 !important;
|
margin: 0 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ module.exports = {
|
|||||||
// target: 'http://192.168.1.115:8000',
|
// target: 'http://192.168.1.115:8000',
|
||||||
target: 'http://39.98.44.136:6013',
|
target: 'http://39.98.44.136:6013',
|
||||||
ws: true,
|
ws: true,
|
||||||
|
changeOrigin: true,
|
||||||
pathRewrite: {
|
pathRewrite: {
|
||||||
'^/api': '/'
|
'^/api': '/'
|
||||||
}
|
}
|
||||||
@@ -18,6 +19,7 @@ module.exports = {
|
|||||||
//本地服务接口地址
|
//本地服务接口地址
|
||||||
target: 'https://apis.map.qq.com',
|
target: 'https://apis.map.qq.com',
|
||||||
ws: true,
|
ws: true,
|
||||||
|
changeOrigin: true,
|
||||||
pathRewrite: {
|
pathRewrite: {
|
||||||
'^/qq/map': '/'
|
'^/qq/map': '/'
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user