1 Commits

Author SHA1 Message Date
yangxiao
2c222deb74 flat: 石河子项目重置 2025-12-25 10:12:52 +08:00
18 changed files with 3525 additions and 3866 deletions

View File

@@ -1,13 +1,6 @@
<template> <template>
<view class="v-tabs" :style="{ height: height }"> <view class="v-tabs" :style="{ height: height }">
<scroll-view <scroll-view class="scroll-view" :show-scrollbar="false" scroll-x scroll-with-animation :scroll-left="scrollLeft" style="width: auto; height: 100%; overflow: hidden;">
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"
@@ -17,6 +10,7 @@
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 }"
@@ -62,58 +56,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 {
@@ -121,75 +115,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>
@@ -198,7 +192,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;
@@ -210,13 +204,13 @@ export default {
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;
@@ -241,7 +235,7 @@ export default {
} }
} }
::v-deep ::-webkit-scrollbar { /deep/ ::-webkit-scrollbar {
display: none; display: none;
} }
</style> </style>

View File

@@ -1,22 +1,22 @@
{ {
"name": "招聘", "name" : "招聘",
"appid": "__UNI__BFB9B45", "appid" : "__UNI__120CBFC",
"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
} }
} }
} }

View File

@@ -483,7 +483,7 @@
padding: 24rpx; padding: 24rpx;
.top_log { .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; background-size: cover;
height: 60rpx; height: 60rpx;
width: 450rpx; width: 450rpx;
@@ -518,7 +518,7 @@
} }
.home_logo { .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; background-size: cover;
height: 76rpx; height: 76rpx;
width: 560rpx; width: 560rpx;

View File

@@ -119,10 +119,10 @@
<!-- <view class="btn-out" @click="logout"> <!-- <view class="btn-out" @click="logout">
退出登录 退出登录
</view> --> </view> -->
<view class="bottom" @click="makePhoneCall"> <!-- <view class="bottom" @click="makePhoneCall">
<view>德阳市人社局 电话0838-2505580</view> <view>德阳市人社局 电话0838-2505580</view>
<view>地址德阳市旌阳区天山南路1段-102</view> <view>地址德阳市旌阳区天山南路1段-102</view>
</view> </view> -->
<cs-button></cs-button> <cs-button></cs-button>
</view> </view>
</template> </template>

View File

@@ -3,31 +3,16 @@
<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 <input class="put" type="text" placeholder-class="put-pla" v-model="searchValue"
class="put" placeholder="搜索附近岗位或任务">
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 <super-map ref="uMap" style="width: 100%;height: 100%;" :latitude="latitude" :longitude="longitude"
ref="uMap" :zoom="14" :min-zoom="10" :max-zoom="20" @markertap="clickmark" @regionchange="show = false"
style="width: 100%; height: 100%" :MapUrl="$config.supperMap" :flag-tip="false"></super-map>
: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> -->
@@ -37,22 +22,21 @@
<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>
@@ -65,20 +49,25 @@
</template> </template>
<script> <script>
import { addZeroPrefix, getDistanceFromLatLonInKm } from '@/untils/tools.js'; import {
import testData from '@/common/textdata.js'; addZeroPrefix,
import { geQueryJobsByNearby } from '@/api/map.js'; getDistanceFromLatLonInKm
let taskpoint = require('../../static/img/taskpoint.png'); } from '@/untils/tools.js'
let gwpoint = require('../../static/img/gwpoint.png'); import testData from '@/common/textdata.js';
let mypoint = require('../../static/img/mypoint.png'); import {
export default { 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');
export default {
data() { data() {
return { return {
education: testData.education, education: testData.education,
show: false, show: false,
ID: 1, ID: 1,
searchValue: '', searchValue: '',
latitude: 31.13398, latitude: 31.133980,
longitude: 104.404419, longitude: 104.404419,
covers: [], covers: [],
rateValue: 2, rateValue: 2,
@@ -87,24 +76,33 @@ export default {
}, },
computed: { computed: {
distance() { distance() {
const { lon, lat } = this.productInfo; const {
lon,
lat
} = this.productInfo
if (lon) { if (lon) {
const { m, km } = getDistanceFromLatLonInKm(lat, lon, this.latitude, this.longitude); const {
return m > 1000 ? `${km.toFixed(2)}km` : `${m.toFixed(2)}m`; 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 { latitude, longitude } = this.$store.state.user.userLocation; const {
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() {
@@ -125,28 +123,31 @@ export default {
// 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 { latitude, longitude } = this.$store.state.user.userLocation; const {
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('成功获得周边信息')
@@ -155,25 +156,25 @@ export default {
// }) // })
}, },
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) => {
@@ -181,9 +182,9 @@ export default {
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,
@@ -198,8 +199,8 @@ export default {
fontSize: 10, fontSize: 10,
borderColor: 'blue', borderColor: 'blue',
}, },
info: item, info: item
})); }))
arr.push({ arr.push({
id: 1, id: 1,
latitude: lat, latitude: lat,
@@ -207,51 +208,52 @@ export default {
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;
@@ -272,7 +274,7 @@ export default {
.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;
@@ -302,12 +304,12 @@ export default {
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 {
@@ -319,10 +321,12 @@ export default {
} }
} }
} }
}
}
.app_container {
}
}
.app_container {
position: fixed; position: fixed;
left: 0; left: 0;
top: 0; top: 0;
@@ -350,11 +354,11 @@ export default {
.put { .put {
padding-left: 30rpx; padding-left: 30rpx;
height: 72rpx; height: 72rpx;
background: #ffffff; background: #FFFFFF;
border-radius: 36rpx; border-radius: 36rpx;
} }
::v-deep .put-pla { /deep/ .put-pla {
height: 33rpx; height: 33rpx;
font-size: 24rpx; font-size: 24rpx;
font-weight: 400; font-weight: 400;
@@ -367,12 +371,12 @@ export default {
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;
} }
} }
@@ -382,5 +386,5 @@ export default {
.view-map { .view-map {
flex: 1; flex: 1;
} }
} }
</style> </style>

View File

@@ -7,7 +7,7 @@
</view> </view>
<view class="navPosition" @click="navTo('/pages/project/map')"> <view class="navPosition" @click="navTo('/pages/project/map')">
<u-icon name="map" color="#2979ff" size="16"></u-icon> <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> <u-icon name="arrow-right" color="#666666" size="14"></u-icon>
</view> </view>
<view class="content"> <view class="content">

View File

@@ -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;
} }
::v-deep .uni-checkbox-input { /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,20 +111,21 @@ export default {
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;
@@ -149,24 +150,25 @@ export default {
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>

View File

@@ -54,7 +54,7 @@
</view> </view>
</view> </view>
<!-- 技能标签 end --> <!-- 技能标签 end -->
<view v-if="info.jobSources" style="color: red" class="prolist">来源{{ info.jobSources || '暂无' }}</view> <view v-if="info.jobSources" class="prolist">来源{{ info.jobSources || '暂无' }}</view>
</view> </view>
<view class="head"> <view class="head">
<view style="display: flex; align-items: center"> <view style="display: flex; align-items: center">

View File

@@ -59,7 +59,7 @@
</view> </view>
</view> </view>
<!-- 技能标签 end --> <!-- 技能标签 end -->
<view v-if="info.jobSources" style="color: red" class="prolist">来源{{ info.jobSources || '暂无' }}</view> <view v-if="info.jobSources" class="prolist">来源{{ info.jobSources || '暂无' }}</view>
</view> </view>
<view class="head"> <view class="head">
<!-- <view class="proname proneed"> <!-- <view class="proname proneed">

View File

@@ -13,9 +13,7 @@
行业类型{{ 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"> <view class="prolist">参考工资{{info.wage}}{{info.wageUpper}}{{wageUnit[info.wageUnitCategory]}}</view>
参考工资{{ 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> -->
@@ -51,7 +49,7 @@
</view> </view>
</view> </view>
<!-- 技能标签 end --> <!-- 技能标签 end -->
<view v-if="info.jobSources" style="color: red" class="prolist">来源{{ info.jobSources || '暂无' }}</view> <view v-if="info.jobSources" class="prolist">来源{{ info.jobSources || '暂无' }}</view>
</view> </view>
<view class="head"> <view class="head">
<!-- <view class="proname proneed"> <!-- <view class="proname proneed">
@@ -191,11 +189,7 @@
</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 <span style="color: blue" v-if="info.callNumber" @click="tools.onDialingPhoneNumber(info.callNumber)">
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>

View File

@@ -7,26 +7,42 @@
<!-- <view class="prolist"> <!-- <view class="prolist">
任务编码{{info.missionNo}} 任务编码{{info.missionNo}}
</view> --> </view> -->
<view class="prolist">岗位日期{{ dateFormat(info.stime) }}{{ dateFormat(info.etime) }}</view> <view class="prolist">
岗位日期{{ dateFormat((info.stime)) }}{{ dateFormat((info.etime)) }}
</view>
<!-- <view class="prolist"> <!-- <view class="prolist">
报名截止{{dateFormat((info.etimePub))}} 报名截止{{dateFormat((info.etimePub))}}
</view> --> </view> -->
<view class="prolist">行业类型{{ info.tradeNames }}</view> <view class="prolist">
<view class="prolist">工种类型{{ info.worktypeNames }}</view> 行业类型{{ info.tradeNames }}
</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> <view class="proname proneed">
<view class="prolist"> 岗位要求
<view class="protype">年龄要求{{ age[info.ageDesc] }}</view>
</view> </view>
<view class="prolist"> <view class="prolist">
<view class="protype">学历要求{{ education[info.education] }}</view> <view class="protype">
<view class="protype">经验要求{{ experience[info.experienceDesc] }}</view> 年龄要求{{ age[info.ageDesc] }}
</view>
</view>
<view class="prolist">
<view class="protype">
学历要求{{ education[info.education] }}
</view>
<view class="protype">
经验要求{{ experience[info.experienceDesc] }}
</view>
</view>
<view class="prolist proint" style="font-weight: bold;color:#333;">
任务描述
</view> </view>
<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>
@@ -37,17 +53,25 @@
</view> </view>
</view> </view>
<!-- 技能标签 end --> <!-- 技能标签 end -->
<view v-if="info.jobSources" style="color: red" class="prolist">来源{{ info.jobSources }}</view> <view v-if="info.jobSources" class="prolist">
来源{{ info.jobSources }}
</view>
</view> </view>
<view class="head"> <view class="head">
<view class="proname proneed">用工单位信息</view> <view class="proname proneed">
用工单位信息
</view>
<view class="prolist"> <view class="prolist">
{{ info.companyName }} {{ info.companyName }}
</view> </view>
<view class="prolist">用工单位地址{{ info.companyAddress }}</view> <view class="prolist">
用工单位地址{{ info.companyAddress }}
</view>
</view> </view>
<view class="head"> <view class="head">
<view class="proname proneed">地址</view> <view class="proname proneed">
地址
</view>
<!-- <view class="prolist"> <!-- <view class="prolist">
<view class="protype"> <view class="protype">
联系人{{info.callName}} 联系人{{info.callName}}
@@ -59,62 +83,48 @@
<view class="prolist" v-if="info.callNumber"> <view class="prolist" v-if="info.callNumber">
座机号{{info.callNumber}} 座机号{{info.callNumber}}
</view> --> </view> -->
<view class="prolist">任务地址{{ info.address }}</view> <view class="prolist">
任务地址{{ info.address }}
</view>
<view class="map"> <view class="map">
<super-map <super-map ref="uMap" style="width: 100%;height: 100%;" :latitude="latitude" :longitude="longitude"
ref="uMap" :open="true" :zoom="14" :min-zoom="10" :max-zoom="20" :MapUrl="$config.supperMap"
style="width: 100%; height: 100%" :flag-tip="false"></super-map>
: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
@click="callPhone" <view @click="callPhone" class="bottombtn flexbtn"
class="bottombtn flexbtn" style="margin-right: 10rpx;background-color: #FBAD17;border-radius: 45rpx;">
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 <view class="btnGr" v-if="item.status === 1 ||item.status === 3"
class="btnGr" @click="changeWorkerStatus(item)">录用</view>
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>
@@ -124,7 +134,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>
@@ -134,25 +144,39 @@
<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 { mapGetters } from 'vuex'; import {
import { recruit_missionDetail } from '@/api/mission.js'; mapGetters
import { GoLogin } from '@/untils/AxiosUtils.js'; } from 'vuex'
import { setRead, updataEmployedNew, cancelEmployed } from '@/api/news.js'; import {
import { checkPass } from '@/api/auth.js'; recruit_missionDetail
import dictionary from '@/common/textdata.js'; } from '@/api/mission.js';
import { dateFormat } from '../../../../untils/format.js'; import {
import uniMask from '@/components/uni-mask/mask.vue'; GoLogin
import uniPopup from '@/components/uni-popup/uni-popup.vue'; } from '@/untils/AxiosUtils.js';
import validCode from '@/components/p-valid-code/p-valid-code.vue'; import {
export default { setRead,
updataEmployedNew,
cancelEmployed
} from '@/api/news.js';
import {
checkPass
} from '@/api/auth.js';
import dictionary from '@/common/textdata.js';
import {
dateFormat
} from "../../../../untils/format.js";
import uniMask from '@/components/uni-mask/mask.vue'
import uniPopup from '@/components/uni-popup/uni-popup.vue'
import validCode from '@/components/p-valid-code/p-valid-code.vue'
export default {
data() { data() {
return { return {
...dictionary, ...dictionary,
@@ -165,18 +189,15 @@ export default {
loading: false, loading: false,
latitude: 39.909, //中心点 latitude: 39.909, //中心点
longitude: 116.39742, longitude: 116.39742,
covers: [ covers: [{ //marker标记位置
{
//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: '',
@@ -184,15 +205,14 @@ export default {
maxlength: 6, maxlength: 6,
collectStatus: 0, // 收藏状态 collectStatus: 0, // 收藏状态
showPopUp: false, showPopUp: false,
}; }
}, },
components: { components: {
uniMask, uniMask,
validCode, validCode,
uniPopup, uniPopup
}, },
onLoad: function (option) { onLoad: function(option) { //option为object类型会序列化上个页面传递的参数
//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);
@@ -207,45 +227,46 @@ export default {
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();
} }
}, },
@@ -255,11 +276,10 @@ export default {
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( recruit_missionDetail(self.missionNo, self.type).then(res => {
(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;
@@ -269,79 +289,75 @@ export default {
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 => {
(error) => {
console.log(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) checkPass(obj).then(res => {
.then((res) => { this.closeShowCode()
this.closeShowCode(); }).catch(err => {
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;
} }
@@ -375,14 +391,15 @@ export default {
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;
@@ -392,7 +409,7 @@ export default {
.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;
@@ -408,24 +425,24 @@ export default {
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;
@@ -433,9 +450,9 @@ export default {
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;
@@ -444,19 +461,19 @@ export default {
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;
@@ -464,9 +481,9 @@ export default {
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;
@@ -474,29 +491,31 @@ export default {
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;
@@ -505,9 +524,9 @@ export default {
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;
@@ -515,20 +534,20 @@ export default {
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;
@@ -539,31 +558,32 @@ export default {
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>

View File

@@ -38,7 +38,7 @@
</view> </view>
</view> </view>
<!-- 技能标签 end --> <!-- 技能标签 end -->
<view v-if="info.jobSources" style="color: red" class="prolist">来源{{ info.jobSources }}</view> <view v-if="info.jobSources" class="prolist">来源{{ info.jobSources }}</view>
</view> </view>
<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

BIN
static/img/title-pg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

@@ -10,7 +10,7 @@ export default {
}) !== false, }) !== false,
homeTitle: getStore({ homeTitle: getStore({
name: 'homeTitle' name: 'homeTitle'
}) || '德阳市智慧就业服务平台' }) || '石河子智慧就业服务平台'
}, },
actions: {}, actions: {},
mutations: { mutations: {

View File

@@ -2,7 +2,11 @@
<view <view
class="custom-tree-select-content" class="custom-tree-select-content"
:class="{ :class="{
border: border && node[dataChildren] && node[dataChildren].length && node.showChildren, border:
border &&
node[dataChildren] &&
node[dataChildren].length &&
node.showChildren
}" }"
:style="{ marginLeft: `${level ? 14 : 0}px` }" :style="{ marginLeft: `${level ? 14 : 0}px` }"
> >
@@ -24,10 +28,22 @@
color="#333" color="#333"
></uni-icons> ></uni-icons>
</view> </view>
<view v-if="loadingArr.includes(node[dataValue])" class="loading-icon-box"> <view
<uni-icons class="loading-icon" type="spinner-cycle" size="14" color="#333"></uni-icons> v-if="loadingArr.includes(node[dataValue])"
class="loading-icon-box"
>
<uni-icons
class="loading-icon"
type="spinner-cycle"
size="14"
color="#333"
></uni-icons>
</view> </view>
<view class="name" :style="node.disabled ? 'color: #999' : ''" @click.stop="nameClick(node)"> <view
class="name"
:style="node.disabled ? 'color: #999' : ''"
@click.stop="nameClick(node)"
>
<text>{{ node[dataLabel] }}</text> <text>{{ node[dataLabel] }}</text>
</view> </view>
</view> </view>
@@ -40,7 +56,10 @@
:class="['check-box', { disabled: node.disabled }]" :class="['check-box', { disabled: node.disabled }]"
@click.stop="nodeClick(node)" @click.stop="nodeClick(node)"
> >
<view v-if="!node.checked && node.partChecked && linkage" class="part-checked"></view> <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"
@@ -50,7 +69,11 @@
</view> </view>
</view> </view>
</view> </view>
<view v-if="node.showChildren && node[dataChildren] && node[dataChildren].length"> <view
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]"
@@ -70,143 +93,151 @@
</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 (node.showChildren && node[dataChildren] && node[dataChildren].length) { if (
this.resetClearTimerList(); node.showChildren &&
this.renderTree(node[dataChildren]); 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 (!node.showChildren && node[this.dataChildren] && node[this.dataChildren].length) { if (
!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>
@@ -232,7 +263,7 @@ $border-color: #c8c7cc;
border-left: 1px solid $border-color; border-left: 1px solid $border-color;
} }
::v-deep .uni-checkbox-input { /deep/ .uni-checkbox-input {
margin: 0 !important; margin: 0 !important;
} }

View File

@@ -8,18 +8,17 @@ module.exports = {
'/api': { '/api': {
// target: 'http://10.165.0.173:8000', // target: 'http://10.165.0.173:8000',
// 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',
target: 'http://36.105.163.21:30081',
ws: true, ws: true,
changeOrigin: true,
pathRewrite: { pathRewrite: {
'^/api': '/' '^/api': '/api'
} }
}, },
'/qq/map': { '/qq/map': {
//本地服务接口地址 //本地服务接口地址
target: 'https://apis.map.qq.com', target: 'https://apis.map.qq.com',
ws: true, ws: true,
changeOrigin: true,
pathRewrite: { pathRewrite: {
'^/qq/map': '/' '^/qq/map': '/'
} }