flat: 压缩图片,添加消息控制

This commit is contained in:
史典卓
2025-02-17 12:54:18 +08:00
parent 29cb92224b
commit dbefed8524
65 changed files with 4316 additions and 4214 deletions

238
App.vue
View File

@@ -1,143 +1,139 @@
<style lang="scss"> <style lang="scss">
/* 注意要写在第一行同时给style标签加入lang="scss"属性 */ /* 注意要写在第一行同时给style标签加入lang="scss"属性 */
@import "@/uni_modules/uview-ui/index.scss"; @import '@/uni_modules/uview-ui/index.scss';
</style> </style>
<script> <script>
import website from '@/config/website.js' import website from '@/config/website.js';
import { import { mapGetters } from 'vuex';
mapGetters import { GoLogin } from '@/untils/AxiosUtils.js';
} from 'vuex' // #ifdef H5
import { import { setPlatformByHostName } from '@/untils/customized.js';
GoLogin import { reject } from 'lodash';
} from '@/untils/AxiosUtils.js'; // #endif
// #ifdef H5
import {
setPlatformByHostName
} from '@/untils/customized.js'
import {
reject
} from 'lodash';
// #endif
export default { export default {
onLaunch: function(options) { onLaunch: function (options) {
this.$store.dispatch('InitArea') this.$store.dispatch('InitArea');
if (options.query.token) { if (options.query.token) {
this.tokenlogin(options.query.token).then(() => { this.tokenlogin(options.query.token).then(() => {
this.$store.dispatch('getUserLocation') this.$store.dispatch('getUserLocation');
this.$store.dispatch('getMobileIsCms') this.$store.dispatch('getNoticeState');
this.$store.dispatch('getResumeInfo') this.$store.dispatch('getMobileIsCms');
}) this.$store.dispatch('getResumeInfo');
} else { });
this.$store.dispatch('FedLogOut') } else {
} this.$store.dispatch('FedLogOut');
// if (options.query.token) { }
// // uni.reLaunch({ // if (options.query.token) {
// // url: '/pages/login/blank?token=' + options.query.token // // uni.reLaunch({
// // }) // // url: '/pages/login/blank?token=' + options.query.token
// this.tokenlogin(options.query.token) // // })
// } else if (this.$api.haslogin()) { // this.tokenlogin(options.query.token)
// this.$store.dispatch('startRefreshTokenTimer') // } else if (this.$api.haslogin()) {
// this.$store.dispatch('startRefreshNewsTimer') // this.$store.dispatch('startRefreshTokenTimer')
// this.$store.dispatch('refreshAuthState') // this.$store.dispatch('startRefreshNewsTimer')
// this.$store.dispatch('getUserLocation') // this.$store.dispatch('refreshAuthState')
// this.$store.dispatch('getMobileIsCms') // this.$store.dispatch('getUserLocation')
// } // this.$store.dispatch('getMobileIsCms')
// #ifdef H5 // }
// 企业定制 // #ifdef H5
setPlatformByHostName(this.$store) // 企业定制
// #endif setPlatformByHostName(this.$store);
// #endif
},
onShow: function () {},
onHide: function () {},
computed: {
...mapGetters(['news', 'auth']),
allUnread() {
return this.news.allUnread;
}, },
onShow: function() {}, },
onHide: function() {}, mounted() {
computed: { this.$config.showTitle && document.documentElement.style.setProperty('--hide-title', 'block');
...mapGetters(['news', 'auth']), },
allUnread() { methods: {
return this.news.allUnread tokenlogin(token) {
} return new Promise((resolve, reject) => {
}, uni.showLoading({
mounted() { title: '登录中',
this.$config.showTitle && document.documentElement.style.setProperty('--hide-title', 'block'); });
}, if (token) {
methods: { const that = this;
tokenlogin(token) { this.$store
return new Promise((resolve, reject) => { .dispatch('LoginByUsername', {
uni.showLoading({
title: '登录中'
})
if (token) {
const that = this
this.$store.dispatch("LoginByUsername", {
username: 'admin', username: 'admin',
password: "admin", password: 'admin',
key: '', key: '',
code: '1111', code: '1111',
type: "account", type: 'account',
token: token, token: token,
tenantId: website.tenantId tenantId: website.tenantId,
}).then((resp) => { })
.then((resp) => {
this.$store.dispatch('refreshAuthState').then(() => { this.$store.dispatch('refreshAuthState').then(() => {
uni.hideLoading() uni.hideLoading();
resolve() resolve();
}) });
}).catch((err) => { })
uni.hideLoading() .catch((err) => {
uni.hideLoading();
}); });
} else { } else {
GoLogin() GoLogin();
} }
}) });
},
},
watch: {
allUnread(value) {
console.log('allUnread', value);
if (!this.$api.haslogin()) {
} else if (value > 0) {
uni.showTabBarRedDot({
index: 2,
});
uni.$once('newsReadChange', () => {
uni.showTabBarRedDot({
index: 2,
});
});
} else {
uni.hideTabBarRedDot({
index: 2,
});
uni.$once('newsReadChange', () => {
uni.hideTabBarRedDot({
index: 2,
});
});
} }
}, },
watch: { },
allUnread(value) { };
console.log('allUnread', value)
if (!this.$api.haslogin()) {} else if (value > 0) {
uni.showTabBarRedDot({
index: 2
})
uni.$once('newsReadChange', () => {
uni.showTabBarRedDot({
index: 2
})
})
} else {
uni.hideTabBarRedDot({
index: 2
})
uni.$once('newsReadChange', () => {
uni.hideTabBarRedDot({
index: 2
})
})
}
},
}
};
</script> </script>
<style lang="scss"> <style lang="scss">
/*每个页面公共css */ /*每个页面公共css */
/* tabbar 字体大小 */ /* tabbar 字体大小 */
/* .uni-tabbar__label{ /* .uni-tabbar__label{
font-size: 14px !important; font-size: 14px !important;
} */ } */
@font-face { @font-face {
font-family: 'uicon-iconfont'; font-family: 'uicon-iconfont';
font-weight: mormal; font-weight: mormal;
font-style: mormal; font-style: mormal;
src: url('/static/font/font_2225171_8kdcwk4po24.ttf') format('truetype'); src: url('/static/font/font_2225171_8kdcwk4po24.ttf') format('truetype');
} }
:root { :root {
--hide-title: none; --hide-title: none;
} }
/* #ifdef H5 */ /* #ifdef H5 */
uni-page-head { uni-page-head {
display: var(--hide-title); display: var(--hide-title);
} }
/* #endif */ /* #endif */
</style> </style>

View File

@@ -1,118 +1,124 @@
import { import {
request request
} from '@/untils/AxiosUtils.js'; } from '@/untils/AxiosUtils.js';
import website from "@/config/website"; import website from "@/config/website";
const authUrl = '/api/jobslink-api/user/user/auth/auth' const authUrl = '/api/jobslink-api/user/user/auth/auth'
export const findAuth = () => request({ export const findAuth = () => request({
url: '/api/jobslink-api/user/user/find', url: '/api/jobslink-api/user/user/find',
method: 'get' method: 'get'
}); });
export const cheakValue = () => request({ export const cheakValue = () => request({
url: authUrl, url: authUrl,
method: 'post', method: 'post',
data: { data: {
cheakvalue: 1, cheakvalue: 1,
bakvalue: 0 bakvalue: 0
} }
}); });
export const realName = (realName, idNumber) => request({ export const realName = (realName, idNumber) => request({
url: authUrl, url: authUrl,
method: 'post', method: 'post',
data: { data: {
cheakvalue: 2, cheakvalue: 2,
realName, realName,
idNumber idNumber
} }
}); });
export const bank = (bankName, realName, cardNumber, def, id) => request({ export const bank = (bankName, realName, cardNumber, def, id) => request({
url: authUrl, url: authUrl,
method: 'post', method: 'post',
data: { data: {
cheakvalue: 3, cheakvalue: 3,
bankName, bankName,
cardNumber, cardNumber,
realName, realName,
def, def,
id id
} }
}); });
export const insure = (bakvalue) => request({ export const insure = (bakvalue) => request({
url: authUrl, url: authUrl,
method: 'post', method: 'post',
data: { data: {
cheakvalue: 4, cheakvalue: 4,
bakvalue bakvalue
} }
}); });
// 判断当前用户是否采集签名 // 判断当前用户是否采集签名
export const isGather = () => request({ export const isGather = () => request({
url: "/api/jobslink-api/doc/docUserSeal/isGather", url: "/api/jobslink-api/doc/docUserSeal/isGather",
method: 'get', method: 'get',
}); });
// 个人端签名采集 // 个人端签名采集
export const signGather = (signSrcUrl, password, confirmPassword) => request({ export const signGather = (signSrcUrl, password, confirmPassword) => request({
url: "/api/jobslink-api/doc/docUserSeal/signGather", url: "/api/jobslink-api/doc/docUserSeal/signGather",
method: 'post', method: 'post',
data: { data: {
signSrcUrl, signSrcUrl,
password, password,
confirmPassword confirmPassword
} }
}); });
// 获取短信接口 // 获取短信接口
export const sendValidate = (mobile) => request({ export const sendValidate = (mobile) => request({
url: "/api/jobslink-api/doc/docUserCert/resetPass/sendValidate", url: "/api/jobslink-api/doc/docUserCert/resetPass/sendValidate",
method: 'get', method: 'get',
data: { data: {
mobile mobile
} }
}); });
// 密码重置接口 // 密码重置接口
export const resetPass = (mobile, code, password) => request({ export const resetPass = (mobile, code, password) => request({
url: "/api/jobslink-api/doc/docUserCert/resetPass", url: "/api/jobslink-api/doc/docUserCert/resetPass",
method: 'post', method: 'post',
headers: { headers: {
'SCaptcha-Key': mobile, 'SCaptcha-Key': mobile,
'SCaptcha-Code': code, 'SCaptcha-Code': code,
'password': password 'password': password
} }
}); });
// 我的合同 // 我的合同
export const contractList = (params) => request({ export const contractList = (params) => request({
url: "/api/jobslink-api/doc/contract/personal/contractList", url: "/api/jobslink-api/doc/contract/personal/contractList",
method: 'get', method: 'get',
data: params data: params
}); });
// 签名密码 /jobslink-api/doc/docUserCert/checkPass // 签名密码 /jobslink-api/doc/docUserCert/checkPass
export const checkPass = (params) => request({ export const checkPass = (params) => request({
url: "/api/jobslink-api/doc/docUserCert/checkPass", url: "/api/jobslink-api/doc/docUserCert/checkPass",
method: 'get', method: 'get',
data: params data: params
}); });
// 返回的是base64格式的pdf // 返回的是base64格式的pdf
export const viewContract = (params) => request({ export const viewContract = (params) => request({
url: "/api/jobslink-api/doc/contract/viewContract", url: "/api/jobslink-api/doc/contract/viewContract",
method: 'get', method: 'get',
data: params data: params
}); });
//新实名认证api //新实名认证api
export const newCertification = (bakvalue, realName, idNumber, cardNumber, bankCode,def,bankName) => request({ export const newCertification = (bakvalue, realName, idNumber, cardNumber, bankCode, def, bankName) => request({
url: '/api/jobslink-api/user/user/auth/authNew', url: '/api/jobslink-api/user/user/auth/authNew',
method: 'post', method: 'post',
data: { data: {
bakvalue, bakvalue,
realName, realName,
idNumber, idNumber,
cardNumber, cardNumber,
bankCode, bankCode,
def, def,
bankName bankName
} }
});
// 电话联系
export const getPhoneCountNumber = (params) => request({
url: "/api/jobslink-api/serve/phone",
method: 'get',
data: params
}); });

View File

@@ -1,47 +1,55 @@
import { import {
request request
} from '@/untils/AxiosUtils.js'; } from '@/untils/AxiosUtils.js';
import website from "../config/website.js" import website from "../config/website.js"
import store from '@/store/'; import store from '@/store/';
// 设置民族政治面貌 jobslink-api/user/user/setInfo // 设置民族政治面貌 jobslink-api/user/user/setInfo
export const setInfo = (params) => request({ export const setInfo = (params) => request({
url: "/api/jobslink-api/user/user/setInfo", url: "/api/jobslink-api/user/user/setInfo",
method: 'post', method: 'post',
data: params data: params
}); });
// 获取用户工会状态 /jobslink-api/doc/user/labourUnion/info // 获取用户工会状态 /jobslink-api/doc/user/labourUnion/info
export const labourUnionInfo = () => request({ export const labourUnionInfo = () => request({
url: "/api/jobslink-api/doc/user/labourUnion/info", url: "/api/jobslink-api/doc/user/labourUnion/info",
method: 'get' method: 'get'
}); });
// 申请入会 // 申请入会
export const contract = (params) => request({ export const contract = (params) => request({
url: "/api/jobslink-api/doc/user/labourUnion/apply", url: "/api/jobslink-api/doc/user/labourUnion/apply",
method: 'post', method: 'post',
data: params data: params
}); });
//会员信息--判断用户是否加入工会 //会员信息--判断用户是否加入工会
export const labourUnionDetail = (no) => request({ export const labourUnionDetail = (no) => request({
url: "/api/jobslink-api/doc/jkLabourUnionAppl/list", url: "/api/jobslink-api/doc/jkLabourUnionAppl/list",
method: 'get', method: 'get',
params:{no} params: {
no
}
}); });
//提交会员申请 //提交会员申请
export const saveApplication = (labourunionId,applType,applComment) =>{ export const saveApplication = (labourunionId, applType, applComment) => {
applComment=applComment.substring(0,200) applComment = applComment.substring(0, 200)
return request({ return request({
url: "/api/jobslink-api/doc/jkLabourUnionDetail/save", url: "/api/jobslink-api/doc/jkLabourUnionDetail/save",
method: 'post', method: 'post',
data:{labourunionId,applType,applComment} data: {
}); labourunionId,
applType,
applComment
}
});
} }
//查询提交的申请内容 //查询提交的申请内容
export const applicationInfo = (no) => request({ export const applicationInfo = (no) => request({
url: "/api/jobslink-api/doc/jkLabourUnionDetail/list", url: "/api/jobslink-api/doc/jkLabourUnionDetail/list",
method: 'get', method: 'get',
params:{no} params: {
no
}
}); });

View File

@@ -73,3 +73,13 @@ export const mobileIsCms = () => request({
url: '/api/jobslink-api/mobile/isCms', url: '/api/jobslink-api/mobile/isCms',
method: 'get' method: 'get'
}) })
export const noticeIsEnable = () => request({
url: "/api/jobslink-api/desk/notice/isEnable",
method: 'get',
});
export const setNoticeIsEnable = (state) => request({
url: "/api/jobslink-api/desk/notice/isEnable/" + state,
method: 'PUT',
});

View File

@@ -78,6 +78,11 @@
投诉建议 投诉建议
<image src="../../static/img/right.svg" mode=""></image> <image src="../../static/img/right.svg" mode=""></image>
</view> </view>
<view class="btnList">
<image src="../../static/img/vip.svg" mode=""></image>
消息提醒
<switch class="imgswitch" :checked="user.isEnbleNotice" @change="switch1Change" />
</view>
<template v-if="user.userIsCms"> <template v-if="user.userIsCms">
<view class="btnList" @click="navTo('/pageMy/admin/check')"> <view class="btnList" @click="navTo('/pageMy/admin/check')">
<image src="../../static/img/check1.png" mode=""></image> <image src="../../static/img/check1.png" mode=""></image>
@@ -160,6 +165,13 @@ export default {
// this.labourUnionInfoInit() // this.labourUnionInfoInit()
}, },
methods: { methods: {
switch1Change(e) {
if (e.detail.value) {
this.$store.dispatch('setNoticeOpen');
} else {
this.$store.dispatch('setNoticeClose');
}
},
labourUnionInfoInit() { labourUnionInfoInit() {
labourUnionInfo().then((e) => { labourUnionInfo().then((e) => {
this.federationStatus = e.data.data.joined; this.federationStatus = e.data.data.joined;
@@ -247,6 +259,11 @@ page {
margin-right: 0; margin-right: 0;
} }
.imgswitch {
margin-left: auto;
margin-right: 0;
}
.btnList image { .btnList image {
width: 52rpx; width: 52rpx;
height: 52rpx; height: 52rpx;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -7,45 +7,27 @@
<!-- <view class="prolist"> <!-- <view class="prolist">
任务编码{{info.missionNo}} 任务编码{{info.missionNo}}
</view> --> </view> -->
<view class="prolist"> <view class="prolist">发布日期{{ info.stime ? dateFormat(info.stime) : null }}</view>
发布日期{{ info.stime ? dateFormat((info.stime)) : null }} <view class="prolist">招聘人数{{ info.peopleNum }}</view>
</view> <view class="prolist">行业类型{{ info.tradeNames ? info.tradeNames : info.jobCompanyIndustry }}</view>
<view class="prolist"> <view class="prolist">工种类型{{ info.skillNames }}</view>
招聘人数{{ info.peopleNum }}
</view>
<view class="prolist">
行业类型{{ info.tradeNames ? info.tradeNames : info.jobCompanyIndustry }}
</view>
<view class="prolist">
工种类型{{ info.skillNames }}
</view>
<!-- <view class="fee"> <!-- <view class="fee">
{{info.wage}}{{wageUnit[info.wageUnitCategory]}} {{info.wage}}{{wageUnit[info.wageUnitCategory]}}
</view> --> </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">
年龄要求{{age[info.ageDesc]}} 年龄要求{{age[info.ageDesc]}}
</view> </view>
</view> --> </view> -->
<view class="prolist"> <view class="prolist">
<view class="protype"> <view class="protype">学历要求{{ info.education }}</view>
学历要求{{ info.education }} <view class="protype">经验要求{{ info.experienceDesc }}</view>
</view>
<view class="protype">
经验要求{{ info.experienceDesc }}
</view>
</view>
<view class="prolist">
招工地址{{ info.jobAddress }}
</view>
<view class="prolist proint" style="font-weight: bold;color:#333;">
招工描述
</view> </view>
<view class="prolist">招工地址{{ info.jobAddress }}</view>
<view class="prolist proint" style="font-weight: bold; color: #333">招工描述</view>
<view class="prolist description"> <view class="prolist description">
{{ info.jobDescription }} {{ info.jobDescription }}
</view> </view>
@@ -70,16 +52,17 @@
<!-- <view class="prolist"> <!-- <view class="prolist">
用工单位{{info.jobCompanyName}} 用工单位{{info.jobCompanyName}}
</view> --> </view> -->
<view style="display: flex;align-items: center;"> <view style="display: flex; align-items: center">
<image src="../../../../static/img/city.png" style="width: 40rpx;height: 40rpx;margin-right: 20rpx;" <image
mode=""></image> src="../../../../static/img/city.png"
<view style="font-size: 30rpx;">{{ info.jobCompanyName }}</view> style="width: 40rpx; height: 40rpx; margin-right: 20rpx"
mode=""
></image>
<view style="font-size: 30rpx">{{ info.jobCompanyName }}</view>
</view> </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}}
@@ -91,38 +74,48 @@
<!-- <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 @click="callPhone" class="bottombtn flexbtn" <view
style="margin-right: 10rpx;background-color: #FBAD17;border-radius: 45rpx;"> @click="callPhone"
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>{{ item.realName }} : {{ item.telphone }}</view> <view>{{ item.realName }} : {{ item.telphone }}</view>
<view class="applyTime">申请时间{{ item.applyTime }}</view> <view class="applyTime">申请时间{{ item.applyTime }}</view>
@@ -133,7 +126,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>
@@ -143,400 +136,390 @@
<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 } from '@/api/news.js';
recruit_missionDetail, import { checkPass, getPhoneCountNumber } 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 validCode from '@/components/p-valid-code/p-valid-code.vue';
import { import { getuserrecruitDetailApp } from '@/api/userrecruit.js';
setRead export default {
} from '@/api/news.js'; data() {
import { return {
checkPass ...dictionary,
} from '@/api/auth.js'; info: {},
import dictionary from '@/common/textdata.js'; status: null,
import { showDetail: false,
dateFormat showCode: false,
} from "../../../../untils/format.js"; maskShow: false,
import uniMask from '@/components/uni-mask/mask.vue' nextBtn: false,
import validCode from '@/components/p-valid-code/p-valid-code.vue' loading: false,
import { latitude: 39.909, //中心点
getuserrecruitDetailApp longitude: 116.39742,
} from '@/api/userrecruit.js' covers: [
export default { {
data() { //marker标记位置
return {
...dictionary,
info: {},
status: null,
showDetail: false,
showCode: false,
maskShow: false,
nextBtn: false,
loading: false,
latitude: 39.909, //中心点
longitude: 116.39742,
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: "", ],
isShow: '', missionNo: '',
type: '', isShow: '',
id: '', type: '',
src: 'https://jlfiles.oss-cn-zhangjiakou.aliyuncs.com/jobslink-api/doc/%E7%94%B5%E5%AD%90%E5%90%88%E5%90%8C%E9%A2%84%E8%A7%88%E5%9B%BE%E7%89%87.png', id: '',
maxlength: 6, src: 'https://jlfiles.oss-cn-zhangjiakou.aliyuncs.com/jobslink-api/doc/%E7%94%B5%E5%AD%90%E5%90%88%E5%90%8C%E9%A2%84%E8%A7%88%E5%9B%BE%E7%89%87.png',
collectStatus: 0, // 收藏状态 maxlength: 6,
showPopUp: false, collectStatus: 0, // 收藏状态
jobType: null showPopUp: false,
} jobType: null,
}, };
components: { },
uniMask, components: {
validCode uniMask,
}, validCode,
onLoad: function(option) { //option为object类型会序列化上个页面传递的参数 },
// this.$store.dispatch('setAutograph') onLoad: function (option) {
if (option.workId) { //option为object类型会序列化上个页面传递的参数
this.workId = decodeURIComponent(option.workId); // this.$store.dispatch('setAutograph')
} if (option.workId) {
if (option.isCan) { this.workId = decodeURIComponent(option.workId);
this.isShow = option.isCan; //isShow为'0'则为我的任务、我的评价过来的,需要隐藏抢任务按钮
}
if (option.type) {
this.type = option.type; //type为1则为消息邀请过来的,需要设置消息已读;
}
if (option.id) {
this.id = option.id; //消息id
}
if (option.jobType) {
this.jobType = option.jobType
}
},
onShow: function() {
this.showDetail = true
this.getData();
},
onShareAppMessage(obj) {
return {
title: this.info.missionTitle,
path: `/pages/projectInfo/projectInfo?missionNo=${this.info.missionNo}`
}
},
methods: {
dateFormat,
callPhone() {
this.showPopUp = true;
},
closePopUp() {
this.showPopUp = false;
},
async getData() {
const self = this;
let resData = null
if (this.jobType) {
resData = await getuserrecruitDetailApp({
id: this.id,
jobType: this.jobType
})
} else {
resData = await recruit_missionDetail(self.workId, self.type)
}
if (resData.data?.code === 200) {
self.info = resData.data.data;
self.status = resData.data.data.status;
self.missionNo = resData.data.data.missionNo;
self.latitude = self.info.lat;
self.longitude = self.info.lon;
self.covers[0].latitude = self.info.lat;
self.covers[0].longitude = self.info.lon;
self.showDetail = true;
}
},
// 查看合同
lookMask() {
this.maskShow = true
},
// 关闭弹窗
close() {
this.maskShow = false
},
// 合同下一步
next() {
this.maskShow = false
this.showDetail = false
this.showCode = true
},
// 输入签名密码
getInpCode(password) {
uni.showLoading({
title: "请求中..."
})
this.loading = true
var obj = {
pass: password
}
checkPass(obj).then(res => {
this.submitTask()
this.closeShowCode()
}).catch(err => {
this.loading = false
})
},
// 关闭签名密码弹窗
closeShowCode() {
this.showCode = false
this.showDetail = true
},
// 忘记密码
forget() {
uni.navigateTo({
url: `/pageMy/setUserBase/seal/forget?forget=true`
})
}
},
computed: {
...mapGetters(['auth', 'autograph']),
skillNames() {
if (this.info.skillNames) {
return this.info.skillNames.split(',')
}
}
} }
} if (option.isCan) {
this.isShow = option.isCan; //isShow为'0'则为我的任务、我的评价过来的,需要隐藏抢任务按钮
}
if (option.type) {
this.type = option.type; //type为1则为消息邀请过来的,需要设置消息已读;
}
if (option.id) {
this.id = option.id; //消息id
}
if (option.jobType) {
this.jobType = option.jobType;
}
},
onShow: function () {
this.showDetail = true;
this.getData();
},
onShareAppMessage(obj) {
return {
title: this.info.missionTitle,
path: `/pages/projectInfo/projectInfo?missionNo=${this.info.missionNo}`,
};
},
methods: {
dateFormat,
async callPhone() {
this.showPopUp = true;
await getPhoneCountNumber();
this.showPopUp = true;
},
closePopUp() {
this.showPopUp = false;
},
async getData() {
const self = this;
let resData = null;
if (this.jobType) {
resData = await getuserrecruitDetailApp({
id: this.id,
jobType: this.jobType,
});
} else {
resData = await recruit_missionDetail(self.workId, self.type);
}
if (resData.data?.code === 200) {
self.info = resData.data.data;
self.status = resData.data.data.status;
self.missionNo = resData.data.data.missionNo;
self.latitude = self.info.lat;
self.longitude = self.info.lon;
self.covers[0].latitude = self.info.lat;
self.covers[0].longitude = self.info.lon;
self.showDetail = true;
}
},
// 查看合同
lookMask() {
this.maskShow = true;
},
// 关闭弹窗
close() {
this.maskShow = false;
},
// 合同下一步
next() {
this.maskShow = false;
this.showDetail = false;
this.showCode = true;
},
// 输入签名密码
getInpCode(password) {
uni.showLoading({
title: '请求中...',
});
this.loading = true;
var obj = {
pass: password,
};
checkPass(obj)
.then((res) => {
this.submitTask();
this.closeShowCode();
})
.catch((err) => {
this.loading = false;
});
},
// 关闭签名密码弹窗
closeShowCode() {
this.showCode = false;
this.showDetail = true;
},
// 忘记密码
forget() {
uni.navigateTo({
url: `/pageMy/setUserBase/seal/forget?forget=true`,
});
},
},
computed: {
...mapGetters(['auth', 'autograph']),
skillNames() {
if (this.info.skillNames) {
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 {
position: absolute;
right: 36rpx;
top: 120rpx;
color: #1B66FF;
transform: rotate(45deg);
font-size: 40px;
}
.title {
display: flex;
align-items: center;
}
.name {
height: 46rpx;
font-size: 46rpx;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #333333;
line-height: 46rpx;
margin-right: 28rpx;
}
.tip {
height: 38rpx;
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #999999;
line-height: 38rpx;
}
.forget {
height: 38rpx;
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #5AA0FA;
line-height: 38rpx;
text-align: right;
}
.closeCode {
position: absolute;
right: 36rpx;
top: 120rpx;
color: #1b66ff;
transform: rotate(45deg);
font-size: 40px;
} }
.contractMask { .title {
background-color: #FFFFFF; display: flex;
margin: 30rpx; align-items: center;
position: relative;
border-radius: 4px;
height: 96%;
overflow: auto;
.close {
width: 23px;
height: 23px;
color: #1B66FF;
position: fixed;
right: 60rpx;
top: 60rpx;
transform: rotate(45deg);
font-size: 40px;
}
.down {
position: fixed;
bottom: 30px;
left: 14%;
width: 545rpx;
height: 90rpx;
line-height: 90rpx;
text-align: center;
background: #1B66FF;
font-size: 36rpx;
font-weight: 400;
color: #FFFFFF;
}
} }
.lookContract { .name {
width: 30%; height: 46rpx;
margin-right: 30rpx; font-size: 46rpx;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #333333;
line-height: 46rpx;
margin-right: 28rpx;
} }
.flexbtn { .tip {
flex: 1; height: 38rpx;
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #999999;
line-height: 38rpx;
} }
.bottombtn { .forget {
background-color: #1B66FF; height: 38rpx;
color: #fff; font-size: 28rpx;
text-align: center; font-family: PingFangSC-Regular, PingFang SC;
border-radius: 10rpx; font-weight: 400;
font-family: PingFangSC-Medium; color: #5aa0fa;
font-size: 32rpx; line-height: 38rpx;
text-align: right;
}
}
.contractMask {
background-color: #ffffff;
margin: 30rpx;
position: relative;
border-radius: 4px;
height: 96%;
overflow: auto;
.close {
width: 23px;
height: 23px;
color: #1b66ff;
position: fixed;
right: 60rpx;
top: 60rpx;
transform: rotate(45deg);
font-size: 40px;
}
.down {
position: fixed;
bottom: 30px;
left: 14%;
width: 545rpx;
height: 90rpx; height: 90rpx;
line-height: 90rpx; line-height: 90rpx;
}
.btn {
background-color: #fefefe;
width: 690rpx;
padding: 30rpx;
padding-bottom: 80rpx;
position: fixed;
bottom: 0;
left: 0;
display: flex;
}
.disabledBtn {
background-color: #c8c9cc;
}
.map {
width: 100%;
height: 350rpx;
margin-top: 30rpx;
}
.askList {
font-family: PingFangSC-Regular;
font-size: 24rpx;
color: #666666;
background-color: #f6f6f6;
padding: 5rpx 15rpx;
margin-right: 10rpx;
margin-top: 15rpx;
}
.ask {
overflow: hidden;
width: 100%;
display: flex;
align-items: center;
flex-wrap: wrap;
justify-content: flex-start;
margin: 20rpx 0;
}
.proint {
margin-top: 30rpx;
font-size: 30rpx !important;
}
.proneed {
font-size: 32rpx !important;
}
.fee {
font-family: PingFangSC-Medium;
font-size: 32rpx;
color: #F46161;
margin-top: 30rpx;
}
.protype {
width: 50%;
}
.prolist {
font-family: PingFangSC-Regular;
font-size: 28rpx;
color: #666666;
display: flex;
align-items: center;
justify-content: space-between;
text-align: left;
padding: 5rpx 0;
}
.proname {
font-weight: bold;
font-family: PingFangSC-Medium;
font-size: 40rpx;
color: #333333;
width: 90%;
overflow: hidden;
padding-bottom: 20rpx;
}
.head {
padding: 30rpx;
background: #fefefe;
border-bottom: 20rpx solid #f6f6f6;
}
.description {
word-break: break-all;
white-space: pre-line;
}
.contactWrapper {
box-sizing: border-box;
text-align: center; text-align: center;
font-size: 28rpx; background: #1b66ff;
margin-top: 10rpx; font-size: 36rpx;
border: 1px solid #e0e0e0; font-weight: 400;
border-radius: 5px; color: #ffffff;
padding: 20rpx;
display: flex;
justify-content: space-between;
align-items: center;
} }
}
.applyTime { .lookContract {
font-size: 24rpx; width: 30%;
color: #666666; margin-right: 30rpx;
} }
.flexbtn {
flex: 1;
}
.bottombtn {
background-color: #1b66ff;
color: #fff;
text-align: center;
border-radius: 10rpx;
font-family: PingFangSC-Medium;
font-size: 32rpx;
height: 90rpx;
line-height: 90rpx;
}
.btn {
background-color: #fefefe;
width: 690rpx;
padding: 30rpx;
padding-bottom: 80rpx;
position: fixed;
bottom: 0;
left: 0;
display: flex;
}
.disabledBtn {
background-color: #c8c9cc;
}
.map {
width: 100%;
height: 350rpx;
margin-top: 30rpx;
}
.askList {
font-family: PingFangSC-Regular;
font-size: 24rpx;
color: #666666;
background-color: #f6f6f6;
padding: 5rpx 15rpx;
margin-right: 10rpx;
margin-top: 15rpx;
}
.ask {
overflow: hidden;
width: 100%;
display: flex;
align-items: center;
flex-wrap: wrap;
justify-content: flex-start;
margin: 20rpx 0;
}
.proint {
margin-top: 30rpx;
font-size: 30rpx !important;
}
.proneed {
font-size: 32rpx !important;
}
.fee {
font-family: PingFangSC-Medium;
font-size: 32rpx;
color: #f46161;
margin-top: 30rpx;
}
.protype {
width: 50%;
}
.prolist {
font-family: PingFangSC-Regular;
font-size: 28rpx;
color: #666666;
display: flex;
align-items: center;
justify-content: space-between;
text-align: left;
padding: 5rpx 0;
}
.proname {
font-weight: bold;
font-family: PingFangSC-Medium;
font-size: 40rpx;
color: #333333;
width: 90%;
overflow: hidden;
padding-bottom: 20rpx;
}
.head {
padding: 30rpx;
background: #fefefe;
border-bottom: 20rpx solid #f6f6f6;
}
.description {
word-break: break-all;
white-space: pre-line;
}
.contactWrapper {
box-sizing: border-box;
text-align: center;
font-size: 28rpx;
margin-top: 10rpx;
border: 1px solid #e0e0e0;
border-radius: 5px;
padding: 20rpx;
display: flex;
justify-content: space-between;
align-items: center;
}
.applyTime {
font-size: 24rpx;
color: #666666;
}
</style> </style>

View File

@@ -7,45 +7,27 @@
<!-- <view class="prolist"> <!-- <view class="prolist">
任务编码{{info.missionNo}} 任务编码{{info.missionNo}}
</view> --> </view> -->
<view class="prolist"> <view class="prolist">发布日期{{ dateFormat(info.stime) }}</view>
发布日期{{ dateFormat((info.stime)) }} <view class="prolist">招聘人数{{ info.peopleNum }}</view>
</view> <view class="prolist">行业类型{{ info.tradeNames ? info.tradeNames : info.jobCompanyIndustry }}</view>
<view class="prolist"> <view class="prolist">工种类型{{ info.skillNames }}</view>
招聘人数{{ info.peopleNum }}
</view>
<view class="prolist">
行业类型{{ info.tradeNames ? info.tradeNames : info.jobCompanyIndustry }}
</view>
<view class="prolist">
工种类型{{ info.skillNames }}
</view>
<!-- <view class="fee"> <!-- <view class="fee">
{{info.wage}}{{wageUnit[info.wageUnitCategory]}} {{info.wage}}{{wageUnit[info.wageUnitCategory]}}
</view> --> </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">
年龄要求{{age[info.ageDesc]}} 年龄要求{{age[info.ageDesc]}}
</view> </view>
</view> --> </view> -->
<view class="prolist"> <view class="prolist">
<view class="protype"> <view class="protype">学历要求{{ info.education }}</view>
学历要求{{ info.education }} <view class="protype">经验要求{{ info.experienceDesc }}</view>
</view>
<view class="protype">
经验要求{{ info.experienceDesc }}
</view>
</view>
<view class="prolist">
岗位地址{{ info.jobAddress }}
</view>
<view class="prolist proint" style="font-weight: bold;color:#333;">
任务描述
</view> </view>
<view class="prolist">岗位地址{{ info.jobAddress }}</view>
<view class="prolist proint" style="font-weight: bold; color: #333">任务描述</view>
<view class="prolist description"> <view class="prolist description">
{{ info.jobDescription }} {{ info.jobDescription }}
</view> </view>
@@ -56,9 +38,7 @@
</view> </view>
</view> </view>
<!-- 技能标签 end --> <!-- 技能标签 end -->
<view v-if="info.jobSources" class="prolist"> <view v-if="info.jobSources" class="prolist">来源{{ info.jobSources }}</view>
来源{{ info.jobSources }}
</view>
</view> </view>
<view class="head"> <view class="head">
<!-- <view class="proname proneed"> <!-- <view class="proname proneed">
@@ -70,16 +50,17 @@
<!-- <view class="prolist"> <!-- <view class="prolist">
用工单位{{info.jobCompanyName}} 用工单位{{info.jobCompanyName}}
</view> --> </view> -->
<view style="display: flex;align-items: center;"> <view style="display: flex; align-items: center">
<image src="../../../../static/img/city.png" style="width: 40rpx;height: 40rpx;margin-right: 20rpx;" <image
mode=""></image> src="../../../../static/img/city.png"
<view style="font-size: 30rpx;">{{ info.jobCompanyName }}</view> style="width: 40rpx; height: 40rpx; margin-right: 20rpx"
mode=""
></image>
<view style="font-size: 30rpx">{{ info.jobCompanyName }}</view>
</view> </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}}
@@ -91,38 +72,48 @@
<!-- <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 @click="callPhone" class="bottombtn flexbtn" <view
style="margin-right: 10rpx;background-color: #FBAD17;border-radius: 45rpx;"> @click="callPhone"
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>{{ item.realName }} : {{ item.telphone }}</view> <view>{{ item.realName }} : {{ item.telphone }}</view>
<view class="applyTime">申请时间{{ item.applyTime }}</view> <view class="applyTime">申请时间{{ item.applyTime }}</view>
@@ -133,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>
@@ -143,110 +134,101 @@
<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 } from '@/api/news.js';
recruit_missionDetail import { checkPass, getPhoneCountNumber } from '@/api/auth.js';
} from '@/api/mission.js'; import dictionary from '@/common/textdata.js';
import { import { dateFormat } from '../../../../untils/format.js';
GoLogin import { userrecruitDetail } from '@/api/userrecruit.js';
} from '@/untils/AxiosUtils.js'; import uniMask from '@/components/uni-mask/mask.vue';
import { import validCode from '@/components/p-valid-code/p-valid-code.vue';
setRead export default {
} from '@/api/news.js'; data() {
import { return {
checkPass ...dictionary,
} from '@/api/auth.js'; info: {},
import dictionary from '@/common/textdata.js'; status: null,
import { showDetail: false,
dateFormat showCode: false,
} from "../../../../untils/format.js"; maskShow: false,
import { nextBtn: false,
userrecruitDetail loading: false,
} from '@/api/userrecruit.js' latitude: 39.909, //中心点
import uniMask from '@/components/uni-mask/mask.vue' longitude: 116.39742,
import validCode from '@/components/p-valid-code/p-valid-code.vue' covers: [
export default { {
data() { //marker标记位置
return {
...dictionary,
info: {},
status: null,
showDetail: false,
showCode: false,
maskShow: false,
nextBtn: false,
loading: false,
latitude: 39.909, //中心点
longitude: 116.39742,
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: "", ],
isShow: '', missionNo: '',
type: '', isShow: '',
id: '', type: '',
src: 'https://jlfiles.oss-cn-zhangjiakou.aliyuncs.com/jobslink-api/doc/%E7%94%B5%E5%AD%90%E5%90%88%E5%90%8C%E9%A2%84%E8%A7%88%E5%9B%BE%E7%89%87.png', id: '',
maxlength: 6, src: 'https://jlfiles.oss-cn-zhangjiakou.aliyuncs.com/jobslink-api/doc/%E7%94%B5%E5%AD%90%E5%90%88%E5%90%8C%E9%A2%84%E8%A7%88%E5%9B%BE%E7%89%87.png',
collectStatus: 0, // 收藏状态 maxlength: 6,
showPopUp: false, collectStatus: 0, // 收藏状态
} showPopUp: false,
};
},
components: {
uniMask,
validCode,
},
onLoad: function (option) {
//option为object类型会序列化上个页面传递的参数
// this.$store.dispatch('setAutograph')
if (option.workId) {
this.workId = decodeURIComponent(option.workId);
}
if (option.isCan) {
this.isShow = option.isCan; //isShow为'0'则为我的任务、我的评价过来的,需要隐藏抢任务按钮
}
if (option.type) {
this.type = option.type; //type为1则为消息邀请过来的,需要设置消息已读;
}
if (option.id) {
this.id = option.id; //消息id
}
},
onShow: function () {
this.showDetail = true;
this.getData();
},
onShareAppMessage(obj) {
return {
title: this.info.missionTitle,
path: `/pages/projectInfo/projectInfo?missionNo=${this.info.missionNo}`,
};
},
methods: {
dateFormat,
async callPhone() {
this.showPopUp = true;
await getPhoneCountNumber();
}, },
components: { closePopUp() {
uniMask, this.showPopUp = false;
validCode
}, },
onLoad: function(option) { //option为object类型会序列化上个页面传递的参数 getData: function () {
// this.$store.dispatch('setAutograph') const self = this;
if (option.workId) { recruit_missionDetail(self.workId, self.type).then(
this.workId = decodeURIComponent(option.workId); (res) => {
}
if (option.isCan) {
this.isShow = option.isCan; //isShow为'0'则为我的任务、我的评价过来的,需要隐藏抢任务按钮
}
if (option.type) {
this.type = option.type; //type为1则为消息邀请过来的,需要设置消息已读;
}
if (option.id) {
this.id = option.id; //消息id
}
},
onShow: function() {
this.showDetail = true
this.getData();
},
onShareAppMessage(obj) {
return {
title: this.info.missionTitle,
path: `/pages/projectInfo/projectInfo?missionNo=${this.info.missionNo}`
}
},
methods: {
dateFormat,
callPhone() {
this.showPopUp = true;
},
closePopUp() {
this.showPopUp = false;
},
getData: function() {
const self = this;
recruit_missionDetail(self.workId, self.type).then(res => {
self.info = res.data.data; self.info = res.data.data;
self.status = res.data.data.status; self.status = res.data.data.status;
self.missionNo = res.data.data.missionNo; self.missionNo = res.data.data.missionNo;
@@ -255,277 +237,277 @@
self.covers[0].latitude = self.info.lat; self.covers[0].latitude = self.info.lat;
self.covers[0].longitude = self.info.lon; self.covers[0].longitude = self.info.lon;
self.showDetail = true; self.showDetail = true;
}, error => { },
(error) => {
console.log(error); console.log(error);
});
},
// 查看合同
lookMask() {
this.maskShow = true
},
// 关闭弹窗
close() {
this.maskShow = false
},
// 合同下一步
next() {
this.maskShow = false
this.showDetail = false
this.showCode = true
},
// 输入签名密码
getInpCode(password) {
uni.showLoading({
title: "请求中..."
})
this.loading = true
var obj = {
pass: password
} }
checkPass(obj).then(res => { );
this.submitTask() },
this.closeShowCode() // 查看合同
}).catch(err => { lookMask() {
this.loading = false this.maskShow = true;
}) },
}, // 关闭弹窗
// 关闭签名密码弹窗 close() {
closeShowCode() { this.maskShow = false;
this.showCode = false },
this.showDetail = true // 合同下一步
}, next() {
// 忘记密码 this.maskShow = false;
forget() { this.showDetail = false;
uni.navigateTo({ this.showCode = true;
url: `/pageMy/setUserBase/seal/forget?forget=true` },
// 输入签名密码
getInpCode(password) {
uni.showLoading({
title: '请求中...',
});
this.loading = true;
var obj = {
pass: password,
};
checkPass(obj)
.then((res) => {
this.submitTask();
this.closeShowCode();
}) })
.catch((err) => {
this.loading = false;
});
},
// 关闭签名密码弹窗
closeShowCode() {
this.showCode = false;
this.showDetail = true;
},
// 忘记密码
forget() {
uni.navigateTo({
url: `/pageMy/setUserBase/seal/forget?forget=true`,
});
},
},
computed: {
...mapGetters(['auth', 'autograph']),
skillNames() {
if (this.info.skillNames) {
return this.info.skillNames.split(',');
} }
}, },
computed: { },
...mapGetters(['auth', 'autograph']), };
skillNames() {
if (this.info.skillNames) {
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 {
position: absolute;
right: 36rpx;
top: 120rpx;
color: #1B66FF;
transform: rotate(45deg);
font-size: 40px;
}
.title {
display: flex;
align-items: center;
}
.name {
height: 46rpx;
font-size: 46rpx;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #333333;
line-height: 46rpx;
margin-right: 28rpx;
}
.tip {
height: 38rpx;
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #999999;
line-height: 38rpx;
}
.forget {
height: 38rpx;
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #5AA0FA;
line-height: 38rpx;
text-align: right;
}
.closeCode {
position: absolute;
right: 36rpx;
top: 120rpx;
color: #1b66ff;
transform: rotate(45deg);
font-size: 40px;
} }
.contractMask { .title {
background-color: #FFFFFF; display: flex;
margin: 30rpx; align-items: center;
position: relative;
border-radius: 4px;
height: 96%;
overflow: auto;
.close {
width: 23px;
height: 23px;
color: #1B66FF;
position: fixed;
right: 60rpx;
top: 60rpx;
transform: rotate(45deg);
font-size: 40px;
}
.down {
position: fixed;
bottom: 30px;
left: 14%;
width: 545rpx;
height: 90rpx;
line-height: 90rpx;
text-align: center;
background: #1B66FF;
font-size: 36rpx;
font-weight: 400;
color: #FFFFFF;
}
} }
.lookContract { .name {
width: 30%; height: 46rpx;
margin-right: 30rpx; font-size: 46rpx;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #333333;
line-height: 46rpx;
margin-right: 28rpx;
} }
.flexbtn { .tip {
flex: 1; height: 38rpx;
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #999999;
line-height: 38rpx;
} }
.bottombtn { .forget {
background-color: #1B66FF; height: 38rpx;
color: #fff; font-size: 28rpx;
text-align: center; font-family: PingFangSC-Regular, PingFang SC;
border-radius: 10rpx; font-weight: 400;
font-family: PingFangSC-Medium; color: #5aa0fa;
font-size: 32rpx; line-height: 38rpx;
text-align: right;
}
}
.contractMask {
background-color: #ffffff;
margin: 30rpx;
position: relative;
border-radius: 4px;
height: 96%;
overflow: auto;
.close {
width: 23px;
height: 23px;
color: #1b66ff;
position: fixed;
right: 60rpx;
top: 60rpx;
transform: rotate(45deg);
font-size: 40px;
}
.down {
position: fixed;
bottom: 30px;
left: 14%;
width: 545rpx;
height: 90rpx; height: 90rpx;
line-height: 90rpx; line-height: 90rpx;
}
.btn {
background-color: #fefefe;
width: 690rpx;
padding: 30rpx;
padding-bottom: 80rpx;
position: fixed;
bottom: 0;
left: 0;
display: flex;
}
.disabledBtn {
background-color: #c8c9cc;
}
.map {
width: 100%;
height: 350rpx;
margin-top: 30rpx;
}
.askList {
font-family: PingFangSC-Regular;
font-size: 24rpx;
color: #666666;
background-color: #f6f6f6;
padding: 5rpx 15rpx;
margin-right: 10rpx;
margin-top: 15rpx;
}
.ask {
overflow: hidden;
width: 100%;
display: flex;
align-items: center;
flex-wrap: wrap;
justify-content: flex-start;
margin: 20rpx 0;
}
.proint {
margin-top: 30rpx;
font-size: 30rpx !important;
}
.proneed {
font-size: 32rpx !important;
}
.fee {
font-family: PingFangSC-Medium;
font-size: 32rpx;
color: #F46161;
margin-top: 30rpx;
}
.protype {
width: 50%;
}
.prolist {
font-family: PingFangSC-Regular;
font-size: 28rpx;
color: #666666;
display: flex;
align-items: center;
justify-content: space-between;
text-align: left;
padding: 5rpx 0;
}
.proname {
font-weight: bold;
font-family: PingFangSC-Medium;
font-size: 40rpx;
color: #333333;
width: 90%;
overflow: hidden;
padding-bottom: 20rpx;
}
.head {
padding: 30rpx;
background: #fefefe;
border-bottom: 20rpx solid #f6f6f6;
}
.description {
word-break: break-all;
white-space: pre-line;
}
.contactWrapper {
box-sizing: border-box;
text-align: center; text-align: center;
font-size: 28rpx; background: #1b66ff;
margin-top: 10rpx; font-size: 36rpx;
border: 1px solid #e0e0e0; font-weight: 400;
border-radius: 5px; color: #ffffff;
padding: 20rpx;
display: flex;
justify-content: space-between;
align-items: center;
} }
}
.applyTime { .lookContract {
font-size: 24rpx; width: 30%;
color: #666666; margin-right: 30rpx;
} }
.flexbtn {
flex: 1;
}
.bottombtn {
background-color: #1b66ff;
color: #fff;
text-align: center;
border-radius: 10rpx;
font-family: PingFangSC-Medium;
font-size: 32rpx;
height: 90rpx;
line-height: 90rpx;
}
.btn {
background-color: #fefefe;
width: 690rpx;
padding: 30rpx;
padding-bottom: 80rpx;
position: fixed;
bottom: 0;
left: 0;
display: flex;
}
.disabledBtn {
background-color: #c8c9cc;
}
.map {
width: 100%;
height: 350rpx;
margin-top: 30rpx;
}
.askList {
font-family: PingFangSC-Regular;
font-size: 24rpx;
color: #666666;
background-color: #f6f6f6;
padding: 5rpx 15rpx;
margin-right: 10rpx;
margin-top: 15rpx;
}
.ask {
overflow: hidden;
width: 100%;
display: flex;
align-items: center;
flex-wrap: wrap;
justify-content: flex-start;
margin: 20rpx 0;
}
.proint {
margin-top: 30rpx;
font-size: 30rpx !important;
}
.proneed {
font-size: 32rpx !important;
}
.fee {
font-family: PingFangSC-Medium;
font-size: 32rpx;
color: #f46161;
margin-top: 30rpx;
}
.protype {
width: 50%;
}
.prolist {
font-family: PingFangSC-Regular;
font-size: 28rpx;
color: #666666;
display: flex;
align-items: center;
justify-content: space-between;
text-align: left;
padding: 5rpx 0;
}
.proname {
font-weight: bold;
font-family: PingFangSC-Medium;
font-size: 40rpx;
color: #333333;
width: 90%;
overflow: hidden;
padding-bottom: 20rpx;
}
.head {
padding: 30rpx;
background: #fefefe;
border-bottom: 20rpx solid #f6f6f6;
}
.description {
word-break: break-all;
white-space: pre-line;
}
.contactWrapper {
box-sizing: border-box;
text-align: center;
font-size: 28rpx;
margin-top: 10rpx;
border: 1px solid #e0e0e0;
border-radius: 5px;
padding: 20rpx;
display: flex;
justify-content: space-between;
align-items: center;
}
.applyTime {
font-size: 24rpx;
color: #666666;
}
</style> </style>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 563 B

After

Width:  |  Height:  |  Size: 269 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 809 B

After

Width:  |  Height:  |  Size: 401 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 888 B

After

Width:  |  Height:  |  Size: 389 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 766 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 679 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 560 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 489 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 531 B

After

Width:  |  Height:  |  Size: 508 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 565 B

After

Width:  |  Height:  |  Size: 538 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 637 B

After

Width:  |  Height:  |  Size: 628 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 766 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 881 B

After

Width:  |  Height:  |  Size: 856 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 864 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 843 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 975 B

After

Width:  |  Height:  |  Size: 962 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 808 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 857 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 875 B

After

Width:  |  Height:  |  Size: 865 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 1007 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 462 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 798 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 538 B

After

Width:  |  Height:  |  Size: 142 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 478 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 636 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 481 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 463 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 417 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 660 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 522 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 783 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 895 B

View File

@@ -8,7 +8,9 @@ import {
getUserInfo, getUserInfo,
logout, logout,
refreshToken, refreshToken,
mobileIsCms mobileIsCms,
noticeIsEnable,
setNoticeIsEnable
} from '@/api/user' } from '@/api/user'
import md5 from 'js-md5' import md5 from 'js-md5'
import { import {
@@ -71,8 +73,42 @@ const user = {
userLocation: null, userLocation: null,
userIsCms: false, userIsCms: false,
resumeInfo: {}, resumeInfo: {},
isEnbleNotice: false,
}, },
actions: { actions: {
getNoticeState({
commit,
dispatch
}) {
noticeIsEnable().then(res => {
if (res.data.code === 200) {
const data = res.data.data ? true : false
commit('upDateNoticeState', data)
}
})
},
setNoticeOpen({
commit,
dispatch
}) {
setNoticeIsEnable(1).then(res => {
if (res.code === 200) {
const data = res.data
commit('upDateNoticeState', true)
}
})
},
setNoticeClose({
commit,
dispatch
}) {
setNoticeIsEnable(0).then(res => {
if (res.code === 200) {
const data = res.data
commit('upDateNoticeState', false)
}
})
},
getResumeInfo({ getResumeInfo({
commit, commit,
dispatch dispatch
@@ -242,6 +278,9 @@ const user = {
} }
}, },
mutations: { mutations: {
upDateNoticeState(state, payload) {
state.isEnbleNotice = payload
},
upDataResumeInfo(state, payload) { upDataResumeInfo(state, payload) {
state.resumeInfo = payload state.resumeInfo = payload
}, },