flat: 修改

This commit is contained in:
Apcallover
2024-07-01 14:43:19 +08:00
parent d19b4d502b
commit 7d1904fa2c
19 changed files with 1406 additions and 929 deletions

View File

@@ -1,121 +1,131 @@
import { request } from "@/untils/AxiosUtils.js"; import {
/*我的简历-查看*/ request
export const myResume = () => { } from "@/untils/AxiosUtils.js";
return request({ /*我的简历-查看*/
url: "/api/jobslink-api/user/user/resume/find", export const myResume = () => {
method: "get", return request({
}); url: "/api/jobslink-api/user/user/resume/find",
}; method: "get",
});
/*我的简历-查看-我的技能工种*/ };
export const mySkills = () => {
return request({ /*我的简历-查看-我的技能工种*/
url: "/api/jobslink-api/user/user/skills/find", export const mySkills = () => {
method: "get", return request({
}); url: "/api/jobslink-api/user/user/skills/find",
}; method: "get",
});
/*我的简历-删除-我的技能工种*/ };
export const removeSkills = (id) => {
return request({ /*我的简历-删除-我的技能工种*/
url: "/api/jobslink-api/user/user/skills/remove", export const removeSkills = (id) => {
method: "post", return request({
params: { url: "/api/jobslink-api/user/user/skills/remove",
id, method: "post",
}, params: {
}); id,
}; },
});
/*我的简历-设置我想工作的地点*/ };
export const setCity = (id, cityId) => {
return request({ /*我的简历-设置我想工作的地点*/
url: "/api/jobslink-api/user/user/resume/update", export const setCity = (id, cityId) => {
method: "post", return request({
data: { url: "/api/jobslink-api/user/user/resume/update",
id, method: "post",
workplace: cityId, data: {
}, id,
}); workplace: cityId,
}; },
});
/*我的简历-设置我想学习的技能*/ };
export const setLearn = (id, learnSkill) => {
return request({ /*我的简历-设置我想学习的技能*/
url: "/api/jobslink-api/user/user/resume/update", export const setLearn = (id, learnSkill) => {
method: "post", return request({
data: { url: "/api/jobslink-api/user/user/resume/update",
id, method: "post",
learnSkill, data: {
}, id,
}); learnSkill,
}; },
});
/*保存我的简历信息*/ };
export const setResume = ({id,education,wage,workplace,telephone}) => {
return request({ /*保存我的简历信息*/
url: "/api/jobslink-api/user/user/resume/update", export const setResume = ({
method: "post", id,
data: { education,
id, wage,
education, workplace,
wage, telephone,
workplace, workExperience
telephone }) => {
}, return request({
}); url: "/api/jobslink-api/user/user/resume/update",
}; method: "post",
data: {
/*行业库*/ id,
export const getTrade = () => { education,
return request({ wage,
url: "/api/jobslink-api/tenant/base/config/trade", workplace,
method: "get", telephone,
}); workExperience
}; },
});
/*工种库*/ };
export const getWorktypes = (id) => {
return request({ /*行业库*/
url: "/api/jobslink-api/tenant/base/config/worktypes", export const getTrade = () => {
method: "get", return request({
params: { url: "/api/jobslink-api/tenant/base/config/trade",
id, method: "get",
}, });
}); };
};
/*工种库*/
/*技能库*/ export const getWorktypes = (id) => {
export const getSkills = (id) => { return request({
return request({ url: "/api/jobslink-api/tenant/base/config/worktypes",
url: "/api/jobslink-api/tenant/base/config/skills", method: "get",
method: "get", params: {
params: { id,
id, },
}, });
}); };
};
/*技能库*/
/*新增职业技能*****/ export const getSkills = (id) => {
export const addSkills = (trade, worktypes, skills, type) => { return request({
return request({ url: "/api/jobslink-api/tenant/base/config/skills",
url: "/api/jobslink-api/user/user/skills/save", method: "get",
method: "post", params: {
data: { id,
trade, },
worktypes, });
skills, };
type,
}, /*新增职业技能*****/
}); export const addSkills = (trade, worktypes, skills, type) => {
}; return request({
/*工种/岗位列表*****/ url: "/api/jobslink-api/user/user/skills/save",
export const getWorktypesList = (type) => { method: "post",
console.log(type, "================="); data: {
return request({ trade,
url: "/api/jobslink-api/tenant/worktypes/base/list", worktypes,
method: "get", skills,
params: { type,
type, },
}, });
}); };
}; /*工种/岗位列表*****/
export const getWorktypesList = (type) => {
console.log(type, "=================");
return request({
url: "/api/jobslink-api/tenant/worktypes/base/list",
method: "get",
params: {
type,
},
});
};

View File

@@ -136,7 +136,7 @@ export const cancelUserInvite = (params) => request({
params params
}) })
export const getDeptAllTree = (params) => request({ export const getDeptAllTree = (params) => request({
url: '/api/jobslink-api/system/dept/all-tree', url: '/api/jobslink-api/system/dept/town-tree',
method: 'get', method: 'get',
params params
}) })

View File

@@ -111,7 +111,7 @@
lon, lon,
lat lat
} = item } = item
if (this.position && lon) { if (this.position && lon > 0) {
const { const {
longitude, longitude,
latitude latitude

View File

@@ -115,7 +115,7 @@
lon, lon,
lat lat
} = item } = item
if (this.position && lon) { if (this.position && lon > 0) {
const { const {
longitude, longitude,
latitude latitude

View File

@@ -0,0 +1,128 @@
<template>
<view v-if="visible" class="tianditu-popop"
:style="{ height: (winHeight)+ 'px',width: winWidth+'px',top: winTop+'px'}">
<view class="popup-header" @click="close">
<slot name="header"></slot>
</view>
<view :style="{ minHeight: (contentHeight)+ 'vh'}" class="popup-content fadeInUp animated">
<slot></slot>
</view>
</view>
</template>
<script>
export default {
name: 'custom-popup',
data() {
return {
winWidth: 0,
winHeight: 0,
winTop: 0,
contentHeight: 30,
}
},
props: {
visible: {
type: Boolean,
require: true,
default: false
},
hide: {
type: Number,
default: 0
},
contentH: {
type: Number,
default: 30
}
},
created() {
var that = this
if (this.contentH) {
this.contentHeight = this.contentH
}
uni.getSystemInfo({
success: function(res) {
if (that.hide === 0) {
that.winWidth = res.screenWidth
that.winHeight = res.screenHeight
that.winTop = 0
} else {
that.winWidth = res.windowWidth
that.winHeight = res.windowHeight
that.winTop = res.windowTop
}
}
});
},
methods: {
close(e) {
this.$emit('onClose')
}
}
}
</script>
<style scoped>
.tianditu-popop {
position: fixed;
left: 0;
z-index: 403;
background-color: rgba(0, 0, 0, 0.6);
display: flex;
flex-direction: column;
}
.popup-header {
flex: 1;
}
.popup-content {
background-color: #FFFFFF;
min-height: 300px;
width: 100%;
/* position: absolute;
bottom: 0;
left: 0; */
}
/*base code*/
.animated {
-webkit-animation-duration: 1s;
animation-duration: 1s;
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
}
.animated.infinite {
-webkit-animation-iteration-count: infinite;
animation-iteration-count: infinite;
}
.animated.hinge {
-webkit-animation-duration: 2s;
animation-duration: 2s;
}
@keyframes fadeInUp {
0% {
opacity: 0;
-webkit-transform: translate3d(0, 100%, 0);
-ms-transform: translate3d(0, 100%, 0);
transform: translate3d(0, 100%, 0)
}
100% {
opacity: 1;
-webkit-transform: none;
-ms-transform: none;
transform: none
}
}
.fadeInUp {
-webkit-animation-name: fadeInUp;
animation-name: fadeInUp
}
</style>

View File

@@ -185,7 +185,7 @@
latitude: lat, latitude: lat,
longitude: lon, longitude: lon,
iconPath: mypoint, iconPath: mypoint,
title: '我的位置', title: '',
width: 20, width: 20,
height: 20 height: 20
}]) }])

View File

@@ -3,7 +3,7 @@ module.exports = {
// 图片地址 // 图片地址
imageUrl: '', imageUrl: '',
// 天地图tk // 天地图tk
apiKey: 'e122b0518f43b32dcc256edbae20a5d1', apiKey: 'e4266a5e84fe6c10f60c559967f0a03f',
// 显示标题 // 显示标题
showTitle: false, showTitle: false,
// map 1、黑色模块 2、白色模块 // map 1、黑色模块 2、白色模块

View File

@@ -1,29 +1,29 @@
{ {
"name": "jobslink-user-clent", "name": "jobslink-user-clent",
"version": "1.0.0", "version": "1.0.0",
"description": "{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**}", "description": "{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**}",
"main": "main.js", "main": "main.js",
"directories": { "directories": {
"lib": "lib" "lib": "lib"
}, },
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1" "test": "echo \"Error: no test specified\" && exit 1"
}, },
"repository": { "repository": {
"type": "git", "type": "git",
"url": "git@192.168.22.101:clent/jobslink-user-clent.git" "url": "git@192.168.22.101:clent/jobslink-user-clent.git"
}, },
"keywords": [], "keywords": [],
"author": "", "author": "",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"@supermap/iclient-ol": "^11.1.1", "@supermap/iclient-ol": "^11.1.1",
"decimal.js": "^10.2.0", "decimal.js": "^10.2.0",
"js-base64": "^2.4.9", "js-base64": "^2.4.9",
"js-md5": "^0.7.3", "js-md5": "^0.7.3",
"vue-jsonp": "^2.0.0" "vue-jsonp": "^2.0.0"
}, },
"devDependencies": { "devDependencies": {
"@supermap/babel-plugin-import": "0.0.1" "@supermap/babel-plugin-import": "0.0.1"
} }
} }

View File

@@ -95,18 +95,73 @@
placeholder="请输入您的电话" border="none" clearable></u--input> placeholder="请输入您的电话" border="none" clearable></u--input>
</view> </view>
</view> </view>
<view class="workexperience">
工作经历
<view class="workexperience-right" @click="cardaddshow = true; gzInfo = {}">+</view>
</view>
<view class="border"></view>
<view class="card" v-for="(item, index) in gzList" :key="index" @click="updataGz(item)"
@longtap="removeGz(item)">
<view class="card-title">
{{item.name}}
<view class="card-right">{{item.stime}}-{{item.etime}}</view>
</view>
<view class="card-subTitle">
<view class="card-sub1">{{item.work}}</view>
<view class="card-sub1">{{item.department}}</view>
</view>
<view class="card-content">
{{item.content}}
</view>
</view>
<custom-popup :content-h="100" :visible="cardaddshow" :hide="0" @onClose="cardaddshow = false; gzInfo = {}">
<view class="s-header">
<view class="heade-lf" @click="cardaddshow = false; gzInfo = {}">取消</view>
<view class="heade-ri" @click="confimPopup1">确认</view>
</view>
<u--form style="padding: 6px 14px;" labelPosition="left" :model="gzInfo" ref="form1">
<u-form-item label="企业名称:" labelWidth="80" prop="name" borderBottom>
<u--input v-model="gzInfo.name" placeholder="请输入企业名称"></u--input>
</u-form-item>
<u-form-item label="工作岗位:" labelWidth="80" prop="work" borderBottom>
<u--input v-model="gzInfo.work" placeholder="请输入工作岗位"></u--input>
</u-form-item>
<u-form-item label="开始时间" labelWidth="80" prop="stime" borderBottom
@click="showStime = true; hideKeyboard()" ref="item1">
<u--input v-model="gzInfo.stime" disabledColor="#ffffff" placeholder="请选择开始时间"
border="none"></u--input>
<u-icon slot="right" name="arrow-right"></u-icon>
</u-form-item>
<u-form-item label="结束时间" labelWidth="80" prop="etime" borderBottom
@click="showEtime = true; hideKeyboard()" ref="item2">
<u--input v-model="gzInfo.etime" disabledColor="#ffffff" placeholder="请选择结束时间"
border="none"></u--input>
<u-icon slot="right" name="arrow-right"></u-icon>
</u-form-item>
<u-form-item label="部门:" labelWidth="80" prop="department" borderBottom>
<u--input v-model="gzInfo.department" placeholder="请输入部门"></u--input>
</u-form-item>
<u-form-item label="工作内容:" labelWidth="70" prop="content" borderBottom>
<u--textarea v-model="gzInfo.content" placeholder="请输入工作内容"></u--textarea>
</u-form-item>
</u--form>
</custom-popup>
<view v-if="isShowButton" class="saveWrapper"> <view v-if="isShowButton" class="saveWrapper">
<u-button @click="subMitResume" type="primary" shape="circle" text="保存"></u-button> <u-button @click="subMitResume" type="primary" shape="circle" text="保存"></u-button>
</view> </view>
<view class="border"></view>
<u-picker @confirm="pickerButtonFunc" @cancel="showPicker = false" :show="showPicker" :columns="columns" <u-picker @confirm="pickerButtonFunc" @cancel="showPicker = false" :show="showPicker" :columns="columns"
keyName="label"></u-picker> keyName="label"></u-picker>
<u-toast ref="uToast"></u-toast> <u-toast ref="uToast"></u-toast>
<u-datetime-picker :show="showStime" :value="birthday" mode="date" closeOnClickOverlay @confirm="stimeConfirm"
@cancel="stimeClose" @close="stimeClose"></u-datetime-picker>
<u-datetime-picker :show="showEtime" :value="birthday" mode="date" closeOnClickOverlay @confirm="etimeConfirm"
@cancel="etimeClose" @close="etimeClose"></u-datetime-picker>
<!-- 省市 --> <!-- 省市 -->
<data-picker :show="areaModal.addressShow" @confirm='confirmAddress' @cancel='areaModal.addressShow = false' <data-picker :show="areaModal.addressShow" @confirm='confirmAddress' @cancel='areaModal.addressShow = false'
@close='areaModal.addressShow = false' :defaultNames="areaModal.defaultNames" :indexs="areaModal.indexs" @close='areaModal.addressShow = false' :defaultNames="areaModal.defaultNames" :indexs="areaModal.indexs"
@@ -129,14 +184,32 @@
} from '@/api/resume.js'; } from '@/api/resume.js';
import mSlideList from '@/components/mark-slide-list/mark-slide-list.vue'; import mSlideList from '@/components/mark-slide-list/mark-slide-list.vue';
import controller from '@/components/mark-slide-list/controller'; import controller from '@/components/mark-slide-list/controller';
import customPopup from '@/components/custom-popup/custom-popup.vue'
import {
cloneDeep,
forIn
} from 'lodash';
const validateForm = {
name: '请输入企业名称',
work: '请输入工作岗位',
stime: '请输入开始时间',
etime: '请选择结束时间',
department: '请输入部门',
content: '请输入工作内容',
}
export default { export default {
components: { components: {
mSlideList mSlideList,
customPopup
}, },
data() { data() {
return { return {
controller: new controller(), controller: new controller(),
cardaddshow: false,
showStime: false,
showEtime: false,
gzInfo: {},
gzList: [],
myResume: { myResume: {
city: {}, city: {},
education: {}, education: {},
@@ -156,12 +229,11 @@
columns: [ columns: [
[] []
], ],
canSubMit: false, canSubMit: false,
isShowButton: false, isShowButton: false,
isShowBorder: false, isShowBorder: false,
isShowAddSkill: true, isShowAddSkill: true,
birthday: Number(new Date()),
areaModal: { areaModal: {
address: '', address: '',
addressShow: false, addressShow: false,
@@ -196,9 +268,70 @@
} }
}, },
methods: { methods: {
removeGz(item) {
const that = this
uni.showModal({
content: '删除该条工作经历?',
success(res) {
if (res.confirm) {
that.isShowButton = true
that.gzList = that.gzList.filter((vItem) => item.id !== vItem.id)
}
},
})
},
updataGz(item) {
this.cardaddshow = true
this.gzInfo = item
},
confimPopup1() {
const copy = cloneDeep(this.gzInfo)
const keys = Object.keys(validateForm)
console.log(keys, copy)
for (let i = 0; i < keys.length; i++) {
if (!copy[keys[i]]) {
return this.$api.msg(validateForm[keys[i]])
}
}
if (copy.id) {
this.gzList = this.gzList.map((item) => {
if (item.id === copy.id) {
return copy
} else {
return item
}
})
} else {
copy.id = Date.now()
this.gzList.push(copy)
}
this.isShowButton = true
this.cardaddshow = false
},
stimeClose() {
this.showStime = false
},
stimeConfirm(e) {
this.showStime = false
this.gzInfo.stime = uni.$u.timeFormat(e.value, 'yyyy.mm.dd')
},
etimeClose() {
this.showStime = false
},
etimeConfirm(e) {
this.showEtime = false
this.gzInfo.etime = uni.$u.timeFormat(e.value, 'yyyy.mm.dd')
},
hideKeyboard() {
uni.hideKeyboard()
},
getResume() { getResume() {
myResume().then(res => { myResume().then(res => {
const data = res.data.data const data = res.data.data
if (data.workExperience) {
this.gzList = JSON.parse(data.workExperience)
}
this.myResume = { this.myResume = {
city: { city: {
workplace: data.workplace workplace: data.workplace
@@ -381,6 +514,7 @@
// 中国大陆座机号码正则表达式 // 中国大陆座机号码正则表达式
const landlineRegex = /\b(0\d{2,3}-\d{7,8}(-\d{1,4})?)\b/; const landlineRegex = /\b(0\d{2,3}-\d{7,8}(-\d{1,4})?)\b/;
const workList = JSON.stringify(this.gzList)
if (mobileRegex.test(phone) || landlineRegex.test(phone)) { if (mobileRegex.test(phone) || landlineRegex.test(phone)) {
// 电话号码格式正确 // 电话号码格式正确
@@ -390,7 +524,8 @@
education: education.label, education: education.label,
workplace: city.workplace ? city.workplace : city.parentLabel + '-' + city.label, workplace: city.workplace ? city.workplace : city.parentLabel + '-' + city.label,
telephone: phone, telephone: phone,
wage wage,
workExperience: workList
}).then(res => { }).then(res => {
this.isShowButton = false; this.isShowButton = false;
this.getResume() this.getResume()
@@ -421,6 +556,121 @@
} }
</script> </script>
<style lang="scss" scoped>
.s-header {
display: flex;
justify-content: space-between;
text-align: center;
font-size: 13px;
padding: 10px 14px 0 14px;
.heade-lf {
line-height: 24px;
width: 38px;
height: 24px;
border-radius: 4px;
border: 1px solid #666666;
color: #666666;
}
.heade-ri {
line-height: 24px;
width: 38px;
height: 24px;
border-radius: 4px;
border: 1px solid #57ff36;
background-color: #57ff36;
color: #FFFFFF;
}
}
.workexperience {
font-weight: bold;
padding: 14px;
display: flex;
align-items: center;
justify-content: space-between;
.workexperience-right {
border-radius: 50%;
width: 16px;
height: 16px;
line-height: 13px;
text-align: center;
font-size: 20px;
color: #666666;
border: 1px solid #666666;
}
}
.card {
display: flex;
flex-direction: column;
padding: 14px;
.card-title {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 16px;
.card-right {
font-size: 12px;
color: #666666;
position: relative;
padding: 0 10px;
text-wrap: nowrap;
}
.card-right::after {
position: absolute;
content: '';
right: 0;
top: 5px;
width: 6px;
height: 6px;
border-top: 1px solid #666666;
border-right: 1px solid #666666;
transform: rotate(45deg);
}
.card-right:active {
color: #e8e8e8;
}
}
.card-subTitle {
margin-top: 6px;
display: flex;
justify-content: flex-start;
font-size: 12px;
color: #666666;
.card-sub1 {
margin-right: 10px;
}
}
.card-content {
margin-top: 4px;
font-size: 13px;
text-overflow: ellipsis;
overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
color: #666666;
text-indent: 2em;
border-bottom: 1rpx solid #f2f2f2;
}
}
.card:active {
background-color: #f2f2f2;
}
</style>
<style> <style>
.border { .border {
margin-left: 30rpx; margin-left: 30rpx;

View File

@@ -1,234 +1,252 @@
<template> <template>
<view class="body" @click="goInfo(companyitem.id)"> <view class="body" @click="goInfo(companyitem.id)">
<view class="heads"> <view class="heads">
<view class="head_left"> <view class="head_left">
<rich-text :nodes="string"> <rich-text :nodes="string">
</rich-text> </rich-text>
</view> </view>
<view class="head_right"> <view class="head_right">
{{ companyitem.wage }}{{ wageUnit[companyitem.wageUnitCategory] }} {{ companyitem.wage }}{{ wageUnit[companyitem.wageUnitCategory] }}
</view> </view>
</view> </view>
<view class="ask"> <view class="ask">
<view class="askList"> <view class="askList">
{{ companyitem.tradeNames }} {{ companyitem.tradeNames }}
</view> </view>
<view class="askList" v-for="(item, index) in skillNames" :key="index"> <view class="askList" v-for="(item, index) in skillNames" :key="index">
{{ item }} {{ item }}
</view> </view>
</view> </view>
<!-- <view class="allName"> <!-- <view class="allName">
{{ companyitem.jobCompanyName }} {{ companyitem.jobCompanyName }}
</view> --> </view> -->
<view style="width: 100%;height: 1rpx;background-color: #999;margin: 0 auto;opacity: .5;"></view> <view style="width: 100%;height: 1rpx;background-color: #999;margin: 0 auto;opacity: .5;"></view>
<view class="timeAddress" style="position: relative;"> <view class="timeAddress" style="position: relative;">
<!-- <view v-if="companyitem.missionCompanyName"> <!-- <view v-if="companyitem.missionCompanyName">
{{ companyitem.missionCompanyName }} {{ companyitem.missionCompanyName }}
</view> --> </view> -->
<!-- <view> <!-- <view>
<image src="../../static/img/city.png" style="width: 40rpx;height: 40rpx;" mode=""></image> <image src="../../static/img/city.png" style="width: 40rpx;height: 40rpx;" mode=""></image>
{{ companyitem.jobCompanyName }} {{ companyitem.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: 10rpx;" mode=""> <image src="../../static/img/city.png" style="width: 40rpx;height: 40rpx;margin-right: 10rpx;" mode="">
</image> </image>
<view style="font-size: 26rpx;color:#333;">{{ companyitem.jobAddress }}</view> <view style="font-size: 26rpx;color:#333;">{{ companyitem.jobAddress }}</view>
</view> </view>
<!-- <view v-if="near"> <!-- <view v-if="near">
{{ companyitem.distanceStr }}km {{ companyitem.distanceStr }}km
</view> </view>
<view v-else> <view v-else>
{{ getCity(companyitem.cityId) }} {{ getCity(companyitem.cityId) }}
</view> --> </view> -->
<view style="display: flex;align-items: center;position:absolute;right:0;"> <view style="display: flex;align-items: center;position:absolute;right:0;">
<image src="../../static/img/location_new.png" style="width: 30rpx;height: 30rpx;" mode=""></image> <image src="../../static/img/location_new.png" style="width: 30rpx;height: 30rpx;" mode=""></image>
<view>--km</view> <view>--km</view>
</view> </view>
</view> </view>
<view class="comment" v-if='comment' @tap.stop="goComment(companyitem.missionNo)"> <view class="comment" v-if='comment' @tap.stop="goComment(companyitem.missionNo)">
<view class="comment_content commentimg" v-if='companyitem.scoreAll > 0'> <view class="comment_content commentimg" v-if='companyitem.scoreAll > 0'>
<image class="commentimg_image" src="../../static/img/star.full.svg" <image class="commentimg_image" src="../../static/img/star.full.svg"
v-for="index1 in companyitem.scoreAll" mode="" :key="index1"></image> v-for="index1 in companyitem.scoreAll" mode="" :key="index1"></image>
<image class="commentimg_image" src="../../static/img/star.empty.svg" <image class="commentimg_image" src="../../static/img/star.empty.svg"
v-for="index2 in (5 - companyitem.scoreAll)" mode="" :key="index2"></image> v-for="index2 in (5 - companyitem.scoreAll)" mode="" :key="index2"></image>
</view> </view>
<view class="comment_content allName gocomment" v-else> <view class="comment_content allName gocomment" v-else>
评价 评价
</view> </view>
</view> </view>
</view> </view>
</template> </template>
<script> <script>
import { import {
toDoller, toDoller,
dateFormat dateFormat
} from "../../untils/format.js"; } from "../../untils/format.js";
import dictionary from '@/common/textdata.js'; import dictionary from '@/common/textdata.js';
export default { export default {
beforeCreate: function() {}, beforeCreate: function() {},
props: { props: {
companyitem: { companyitem: {
type: Object, type: Object,
default () { default () {
return [] return []
} }
}, },
comment: { comment: {
type: Boolean, type: Boolean,
default: false default: false
}, },
noApply: { noApply: {
type: Boolean, type: Boolean,
default: true default: true
}, },
near: { near: {
type: Boolean, type: Boolean,
default: false default: false
} }
}, },
data() { data() {
return { return {
...dictionary, ...dictionary,
string: "<div style='overflow: hidden;white-space: nowrap;text-overflow: ellipsis;'>" + this.companyitem string: "<div style='overflow: hidden;white-space: nowrap;text-overflow: ellipsis;'>" + this.companyitem
.jobName + .jobName +
"</div>" "</div>"
}; };
}, },
computed: { computed: {
skillNames() { skillNames() {
return this.companyitem.skillNames.split(',') return this.companyitem.skillNames.split(',')
} }
}, },
methods: { methods: {
goComment: function(no) { distance(item) {
uni.navigateTo({ const {
url: `../../pageMy/mycomment/mycomment?missionNo=${encodeURIComponent(no)}` lon,
}) lat
}, } = item
goInfo: function(no) { if (this.position && lon > 0) {
console.log('11111') const {
const isCan = this.noApply === false ? '0' : '1' longitude,
uni.navigateTo({ latitude
url: `/pages/projectInfo/userrecruitInfo?workId=${encodeURIComponent(no)}&isCan=${isCan}` } = this.position
}) const {
}, m,
getCity: function(val) { km
if (val) { } = getDistanceFromLatLonInKm(lat, lon, latitude, longitude)
let areas = this.$store.getters.getAreaParents(val) return m > 1000 ? `${km.toFixed(2)}km` : `${m.toFixed(2)}m`
if (areas.length === 3) { }
return areas[0].label + '-' + areas[1].label + '-' + areas[2].label return '--km'
} },
} goComment: function(no) {
}, uni.navigateTo({
toDoller, url: `../../pageMy/mycomment/mycomment?missionNo=${encodeURIComponent(no)}`
dateFormat })
} },
} goInfo: function(no) {
</script> console.log('11111')
const isCan = this.noApply === false ? '0' : '1'
<style> uni.navigateTo({
.commentimg_image { url: `/pages/projectInfo/userrecruitInfo?workId=${encodeURIComponent(no)}&isCan=${isCan}`
width: 40rpx; })
height: 40rpx; },
} getCity: function(val) {
if (val) {
.commentimg { let areas = this.$store.getters.getAreaParents(val)
display: flex; if (areas.length === 3) {
align-items: center; return areas[0].label + '-' + areas[1].label + '-' + areas[2].label
justify-content: flex-end; }
} }
},
.gocomment { toDoller,
font-size: 26rpx !important; dateFormat
border-radius: 5rpx; }
border: 1rpx solid #c3c3c3; }
width: 160rpx; </script>
text-align: center;
float: right; <style>
height: 50rpx; .commentimg_image {
line-height: 50rpx; width: 40rpx;
} height: 40rpx;
}
.timeAddress {
display: flex; .commentimg {
align-items: center; display: flex;
justify-content: space-between; align-items: center;
font-family: PingFangSC-Regular; justify-content: flex-end;
font-size: 24rpx; }
color: #999999;
margin: 10rpx 0; .gocomment {
padding: 10rpx 0; font-size: 26rpx !important;
} border-radius: 5rpx;
border: 1rpx solid #c3c3c3;
.allName { width: 160rpx;
font-family: PingFangSC-Regular; text-align: center;
font-size: 28rpx; float: right;
color: #666666; height: 50rpx;
} line-height: 50rpx;
}
.askList {
/* width: 14%; */ .timeAddress {
font-family: PingFangSC-Regular; display: flex;
font-size: 24rpx; align-items: center;
color: #666666; justify-content: space-between;
background-color: #f6f6f6; font-family: PingFangSC-Regular;
padding: 5rpx 15rpx; font-size: 24rpx;
margin-right: 10rpx; color: #999999;
margin-bottom: 10rpx; margin: 10rpx 0;
} padding: 10rpx 0;
}
.ask {
overflow: hidden; .allName {
width: 100%; font-family: PingFangSC-Regular;
display: flex; font-size: 28rpx;
align-items: center; color: #666666;
flex-wrap: wrap; }
justify-content: flex-start;
margin: 20rpx 0; .askList {
} /* width: 14%; */
font-family: PingFangSC-Regular;
.head_right { font-size: 24rpx;
font-family: PingFangSC-Medium; color: #666666;
font-size: 28rpx; background-color: #f6f6f6;
color: #F46161; padding: 5rpx 15rpx;
font-weight: bold; margin-right: 10rpx;
} margin-bottom: 10rpx;
}
.head_left {
font-family: PingFangSC-Medium; .ask {
font-size: 32rpx; overflow: hidden;
font-weight: bold; width: 100%;
color: #333333; display: flex;
width: 350rpx; align-items: center;
overflow: hidden; flex-wrap: wrap;
white-space: nowrap; justify-content: flex-start;
/*不换行*/ margin: 20rpx 0;
text-overflow: ellipsis; }
/*超出部分文字以...显示*/
} .head_right {
font-family: PingFangSC-Medium;
.highlight { font-size: 28rpx;
color: #F46161; color: #F46161;
} font-weight: bold;
}
.body {
width: 690rpx; .head_left {
margin: 0rpx auto; font-family: PingFangSC-Medium;
background-color: #fefefe; font-size: 32rpx;
overflow: hidden; font-weight: bold;
box-sizing: border-box; color: #333333;
padding: 20rpx; width: 350rpx;
padding-bottom: 0; overflow: hidden;
border-radius: 20rpx; white-space: nowrap;
margin-top: 20rpx; /*不换行*/
} text-overflow: ellipsis;
/*超出部分文字以...显示*/
.heads { }
display: flex;
align-items: center; .highlight {
justify-content: space-between; color: #F46161;
} }
.body {
width: 690rpx;
margin: 0rpx auto;
background-color: #fefefe;
overflow: hidden;
box-sizing: border-box;
padding: 20rpx;
padding-bottom: 0;
border-radius: 20rpx;
margin-top: 20rpx;
}
.heads {
display: flex;
align-items: center;
justify-content: space-between;
}
</style> </style>

View File

@@ -95,10 +95,10 @@
用工单位地址{{info.companyAddress || '暂无'}} 用工单位地址{{info.companyAddress || '暂无'}}
</view> --> </view> -->
<view class="prolist"> <view class="prolist">
工作地址{{info.cityId || '暂无'}} 注册地址{{info.cityId || '暂无'}}
</view> </view>
<view class="prolist"> <view class="prolist">
详细地址{{info.address || '暂无'}} 工作地址{{info.address || '暂无'}}
</view> </view>
<view class="map"> <view class="map">
<super-map ref="uMap" style="width: 100%;height: 100%;" :latitude="latitude" :longitude="longitude" <super-map ref="uMap" style="width: 100%;height: 100%;" :latitude="latitude" :longitude="longitude"
@@ -337,10 +337,13 @@
// self.longitude = self.info.lon; // self.longitude = self.info.lon;
// 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.$refs.uMap.initMap({ if (!(self.info.lat && self.info.lat === -1)) {
lat: self.info.lat, self.$refs.uMap.initMap({
lon: self.info.lon, lat: self.info.lat,
}) lon: self.info.lon,
})
}
self.showDetail = true; self.showDetail = true;
self.getCollectStatus(); self.getCollectStatus();
if (self.type === 1) { if (self.type === 1) {

View File

@@ -98,10 +98,10 @@
公司地址{{info.companyAddress || '暂无'}} 公司地址{{info.companyAddress || '暂无'}}
</view> --> </view> -->
<view class="prolist"> <view class="prolist">
工作地址{{info.cityId || '暂无'}} 注册地址{{info.cityId || '暂无'}}
</view> </view>
<view class="prolist"> <view class="prolist">
详细地址{{info.address || '暂无'}} 工作地址{{info.address || '暂无'}}
</view> </view>
<view class="map"> <view class="map">
<!-- <seeLocation ref="cMap" :apikey="$config.apiKey"></seeLocation> --> <!-- <seeLocation ref="cMap" :apikey="$config.apiKey"></seeLocation> -->
@@ -336,10 +336,12 @@
self.longitude = self.info.lon; self.longitude = self.info.lon;
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.$refs.uMap.initMap({ if (!(self.info.lat && self.info.lat === -1)) {
lat: self.info.lat, self.$refs.uMap.initMap({
lon: self.info.lon, lat: self.info.lat,
}) lon: self.info.lon,
})
}
// this.$refs.cMap.open() // this.$refs.cMap.open()
self.showDetail = true; self.showDetail = true;
if (!this.seeDeatil) { if (!this.seeDeatil) {

View File

@@ -103,10 +103,10 @@
座机号{{info.callNumber}} 座机号{{info.callNumber}}
</view> --> </view> -->
<view class="prolist"> <view class="prolist">
工作地址{{ info.cityId || '暂无'}} 注册地址{{ info.cityId || '暂无'}}
</view> </view>
<view class="prolist"> <view class="prolist">
详细地址{{info.address || '暂无'}} 工作地址{{info.address || '暂无'}}
</view> </view>
<view class="map"> <view class="map">
<super-map ref="uMap" style="width: 100%;height: 100%;" :latitude="latitude" :longitude="longitude" <super-map ref="uMap" style="width: 100%;height: 100%;" :latitude="latitude" :longitude="longitude"
@@ -338,10 +338,12 @@
self.longitude = self.info.lon; self.longitude = self.info.lon;
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.$refs.uMap.initMap({ if (!(self.info.lat && self.info.lat === -1)) {
lat: self.info.lat, self.$refs.uMap.initMap({
lon: self.info.lon, lat: self.info.lat,
}) lon: self.info.lon,
})
}
self.showDetail = true; self.showDetail = true;
if (!this.seeDeatil) { if (!this.seeDeatil) {
self.getCollectStatus(); self.getCollectStatus();

View File

@@ -100,10 +100,10 @@
座机号{{info.callNumber}} 座机号{{info.callNumber}}
</view> --> </view> -->
<view class="prolist"> <view class="prolist">
工作地址{{ info.cityId || '暂无'}} 注册地址{{ info.cityId || '暂无'}}
</view> </view>
<view class="prolist"> <view class="prolist">
详细地址{{info.address || '暂无'}} 工作地址{{info.address || '暂无'}}
</view> </view>
<view class="map"> <view class="map">
<super-map ref="uMap" style="width: 100%;height: 100%;" :latitude="latitude" :longitude="longitude" <super-map ref="uMap" style="width: 100%;height: 100%;" :latitude="latitude" :longitude="longitude"
@@ -320,10 +320,12 @@
self.longitude = self.info.lon; self.longitude = self.info.lon;
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.$refs.uMap.initMap({ if (!(self.info.lat && self.info.lat === -1)) {
lat: self.info.lat, self.$refs.uMap.initMap({
lon: self.info.lon, lat: self.info.lat,
}) lon: self.info.lon,
})
}
self.showDetail = true; self.showDetail = true;
self.getCollectStatus(); self.getCollectStatus();
if (self.type === 1) { if (self.type === 1) {

View File

@@ -1,290 +1,313 @@
<template> <template>
<view class="body" @click="goInfo(companyitem)"> <view class="body" @click="goInfo(companyitem)">
<view class="heads"> <view class="heads">
<view class="head_left"> <view class="head_left">
<rich-text :nodes="string"> <rich-text :nodes="string">
</rich-text> </rich-text>
</view> </view>
<view class="head_right"> <view class="head_right">
{{ companyitem.wage }}{{ wageUnit[companyitem.wageUnitCategory] }} {{ companyitem.wage }}{{ wageUnit[companyitem.wageUnitCategory] }}
</view> </view>
</view> </view>
<view class="ask"> <view class="ask">
<view class="asj_content"> <view class="asj_content">
<view class="askList"> <view class="askList">
{{ companyitem.tradeNames }} {{ companyitem.tradeNames }}
</view> </view>
<view class="askList" v-for="(item, index) in skillNames" :key="index"> <view class="askList" v-for="(item, index) in skillNames" :key="index">
{{ item }} {{ item }}
</view> </view>
</view> </view>
<view class="ask_right"> <view class="ask_right">
<u-tag v-if="companyitem.reviewState == 1" :text="getReviewState(companyitem.reviewState)" <u-tag v-if="companyitem.reviewState == 1" :text="getReviewState(companyitem.reviewState)"
type="success" plain shape="circle"></u-tag> type="success" plain shape="circle"></u-tag>
<u-tag v-if="companyitem.reviewState == 9" :text="getReviewState(companyitem.reviewState)" type="error" <u-tag v-if="companyitem.reviewState == 9" :text="getReviewState(companyitem.reviewState)" type="error"
plain shape="circle"></u-tag> plain shape="circle"></u-tag>
<u-tag v-if="companyitem.reviewState == 0" :text="getReviewState(companyitem.reviewState)" plain <u-tag v-if="companyitem.reviewState == 0" :text="getReviewState(companyitem.reviewState)" plain
shape="circle"></u-tag> shape="circle"></u-tag>
</view> </view>
</view> </view>
<!-- <view class="allName"> <!-- <view class="allName">
{{ companyitem.jobCompanyName }} {{ companyitem.jobCompanyName }}
</view> --> </view> -->
<view style="width: 100%;height: 1rpx;background-color: #999;margin: 0 auto;opacity: .5;"></view> <view style="width: 100%;height: 1rpx;background-color: #999;margin: 0 auto;opacity: .5;"></view>
<view class="timeAddress" style="position: relative;"> <view class="timeAddress" style="position: relative;">
<!-- <view v-if="companyitem.missionCompanyName"> <!-- <view v-if="companyitem.missionCompanyName">
{{ companyitem.missionCompanyName }} {{ companyitem.missionCompanyName }}
</view> --> </view> -->
<!-- <view> <!-- <view>
<image src="../../static/img/city.png" style="width: 40rpx;height: 40rpx;" mode=""></image> <image src="../../static/img/city.png" style="width: 40rpx;height: 40rpx;" mode=""></image>
{{ companyitem.jobCompanyName }} {{ companyitem.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: 10rpx;" <image src="../../../static/img/city.png" style="width: 40rpx;height: 40rpx;margin-right: 10rpx;"
mode=""></image> mode=""></image>
<view style="font-size: 26rpx;color:#333;">{{ companyitem.jobCompanyName }}</view> <view style="font-size: 26rpx;color:#333;">{{ companyitem.jobCompanyName }}</view>
</view> </view>
<!-- <view v-if="near"> <!-- <view v-if="near">
{{ companyitem.distanceStr }}km {{ companyitem.distanceStr }}km
</view> </view>
<view v-else> <view v-else>
{{ getCity(companyitem.cityId) }} {{ getCity(companyitem.cityId) }}
</view> --> </view> -->
<view style="display: flex;align-items: center;position:absolute;right:0;"> <view style="display: flex;align-items: center;position:absolute;right:0;">
<image src="../../../static/img/location_new.png" style="width: 30rpx;height: 30rpx;" mode=""></image> <image src="../../../static/img/location_new.png" style="width: 30rpx;height: 30rpx;" mode=""></image>
<view>--km</view> <view>{{distance(companyitem)}}</view>
</view> </view>
</view> </view>
<view class="comment" v-if='comment' @tap.stop="goComment(companyitem.missionNo)"> <view class="comment" v-if='comment' @tap.stop="goComment(companyitem.missionNo)">
<view class="comment_content commentimg" v-if='companyitem.scoreAll > 0'> <view class="comment_content commentimg" v-if='companyitem.scoreAll > 0'>
<image class="commentimg_image" src="../../../static/img/star.full.svg" <image class="commentimg_image" src="../../../static/img/star.full.svg"
v-for="index1 in companyitem.scoreAll" mode="" :key="index1"></image> v-for="index1 in companyitem.scoreAll" mode="" :key="index1"></image>
<image class="commentimg_image" src="../../../static/img/star.empty.svg" <image class="commentimg_image" src="../../../static/img/star.empty.svg"
v-for="index2 in (5 - companyitem.scoreAll)" mode="" :key="index2"></image> v-for="index2 in (5 - companyitem.scoreAll)" mode="" :key="index2"></image>
</view> </view>
<view class="comment_content allName gocomment" v-else> <view class="comment_content allName gocomment" v-else>
评价 评价
</view> </view>
</view> </view>
</view> </view>
</template> </template>
<script> <script>
import { import {
toDoller, toDoller,
dateFormat dateFormat
} from "../../../untils/format.js"; } from "../../../untils/format.js";
import dictionary from '@/common/textdata.js'; import dictionary from '@/common/textdata.js';
import {
export default { getDistanceFromLatLonInKm
beforeCreate: function() {}, } from '@/untils/tools.js'
props: { export default {
companyitem: { beforeCreate: function() {},
type: Object, props: {
default () { companyitem: {
return [] type: Object,
} default () {
}, return []
comment: { }
type: Boolean, },
default: false comment: {
}, type: Boolean,
noApply: { default: false
type: Boolean, },
default: true noApply: {
}, type: Boolean,
near: { default: true
type: Boolean, },
default: false near: {
} type: Boolean,
}, default: false
data() { },
return { position: {
...dictionary, default: null
string: "<div style='overflow: hidden;white-space: nowrap;text-overflow: ellipsis;'>" + this.companyitem }
.jobName + },
"</div>" data() {
}; return {
}, ...dictionary,
computed: { string: "<div style='overflow: hidden;white-space: nowrap;text-overflow: ellipsis;'>" + this.companyitem
skillNames() { .jobName +
return this.companyitem.skillNames.split(',') "</div>"
} };
}, },
methods: { computed: {
getReviewState(type) { skillNames() {
switch (type) { return this.companyitem.skillNames.split(',')
case 1: }
return '已审核' },
case 0: methods: {
return '待审核' distance(item) {
case 9: const {
return '已驳回' lon,
} lat
}, } = item
goComment: function(no) { if (this.position && lon > 0) {
uni.navigateTo({ const {
url: `../../pageMy/mycomment/mycomment?missionNo=${encodeURIComponent(no)}` longitude,
}) latitude
}, } = this.position
goInfo: function({ const {
id, m,
reviewState, km
jobType } = getDistanceFromLatLonInKm(lat, lon, latitude, longitude)
}) { return m > 1000 ? `${km.toFixed(2)}km` : `${m.toFixed(2)}m`
if (reviewState === 9) { }
this.navTo( return '--km'
`/pages/recruit/subPage/updataTaskorWork/updataTaskorWork?workId=${encodeURIComponent(id)}&isCan=${isCan}&jobType=${this.companyitem.jobType}&id=${this.companyitem.id}` },
) getReviewState(type) {
return switch (type) {
} case 1:
const isCan = this.noApply === false ? '0' : '1' return '已审核'
switch (jobType) { case 0:
case 0: return '待审核'
this.navTo(`/pages/projectInfo/userrecruitInfo?workId=${encodeURIComponent(id)}&isCan=${isCan}&jobType=${ case 9:
this.companyitem.jobType}&id=${this.companyitem.id}`) return '已驳回'
break }
case 1: },
this.navTo(`/pages/projectInfo/userrecruitWorkInfo?workId=${encodeURIComponent(id)}&isCan=${isCan}&jobType=${ goComment: function(no) {
this.companyitem.jobType}&id=${this.companyitem.id}`) uni.navigateTo({
break url: `../../pageMy/mycomment/mycomment?missionNo=${encodeURIComponent(no)}`
} })
}, },
getCity: function(val) { goInfo: function({
if (val) { id,
let areas = this.$store.getters.getAreaParents(val) reviewState,
if (areas.length === 3) { jobType
return areas[0].label + '-' + areas[1].label + '-' + areas[2].label }) {
} if (reviewState === 9) {
} this.navTo(
}, `/pages/recruit/subPage/updataTaskorWork/updataTaskorWork?workId=${encodeURIComponent(id)}&isCan=${isCan}&jobType=${this.companyitem.jobType}&id=${this.companyitem.id}`
toDoller, )
dateFormat return
} }
} const isCan = this.noApply === false ? '0' : '1'
</script> switch (jobType) {
case 0:
<style> this.navTo(`/pages/projectInfo/userrecruitInfo?workId=${encodeURIComponent(id)}&isCan=${isCan}&jobType=${
.commentimg_image { this.companyitem.jobType}&id=${this.companyitem.id}`)
width: 40rpx; break
height: 40rpx; case 1:
} this.navTo(`/pages/projectInfo/userrecruitWorkInfo?workId=${encodeURIComponent(id)}&isCan=${isCan}&jobType=${
this.companyitem.jobType}&id=${this.companyitem.id}`)
.commentimg { break
display: flex; }
align-items: center; },
justify-content: flex-end; getCity: function(val) {
} if (val) {
let areas = this.$store.getters.getAreaParents(val)
.gocomment { if (areas.length === 3) {
font-size: 26rpx !important; return areas[0].label + '-' + areas[1].label + '-' + areas[2].label
border-radius: 5rpx; }
border: 1rpx solid #c3c3c3; }
width: 160rpx; },
text-align: center; toDoller,
float: right; dateFormat
height: 50rpx; }
line-height: 50rpx; }
} </script>
.timeAddress { <style>
display: flex; .commentimg_image {
align-items: center; width: 40rpx;
justify-content: space-between; height: 40rpx;
font-family: PingFangSC-Regular; }
font-size: 24rpx;
color: #999999; .commentimg {
margin: 10rpx 0; display: flex;
padding: 10rpx 0; align-items: center;
} justify-content: flex-end;
}
.allName {
font-family: PingFangSC-Regular; .gocomment {
font-size: 28rpx; font-size: 26rpx !important;
color: #666666; border-radius: 5rpx;
} border: 1rpx solid #c3c3c3;
width: 160rpx;
.askList { text-align: center;
/* width: 14%; */ float: right;
font-family: PingFangSC-Regular; height: 50rpx;
font-size: 24rpx; line-height: 50rpx;
color: #666666; }
background-color: #f6f6f6;
padding: 5rpx 15rpx; .timeAddress {
margin-right: 10rpx; display: flex;
margin-bottom: 10rpx; align-items: center;
} justify-content: space-between;
font-family: PingFangSC-Regular;
.ask { font-size: 24rpx;
overflow: hidden; color: #999999;
width: 100%; margin: 10rpx 0;
display: flex; padding: 10rpx 0;
align-items: center; }
flex-wrap: wrap;
justify-content: space-between; .allName {
margin: 20rpx 0; font-family: PingFangSC-Regular;
} font-size: 28rpx;
color: #666666;
.asj_content { }
display: flex;
align-items: center; .askList {
flex-wrap: wrap; /* width: 14%; */
justify-content: flex-start; font-family: PingFangSC-Regular;
flex: 1; font-size: 24rpx;
} color: #666666;
background-color: #f6f6f6;
.ask_right { padding: 5rpx 15rpx;
font-family: PingFangSC-Regular; margin-right: 10rpx;
font-size: 24rpx; margin-bottom: 10rpx;
color: blue; }
background-color: #FFFFFF;
/* border: 2rpx solid blue; */ .ask {
border-radius: 6px; overflow: hidden;
/* padding: 2rpx 10rpx; */ width: 100%;
margin-right: 10rpx; display: flex;
margin-bottom: 10rpx; align-items: center;
} flex-wrap: wrap;
justify-content: space-between;
.head_right { margin: 20rpx 0;
font-family: PingFangSC-Medium; }
font-size: 28rpx;
color: #F46161; .asj_content {
font-weight: bold; display: flex;
} align-items: center;
flex-wrap: wrap;
.head_left { justify-content: flex-start;
font-family: PingFangSC-Medium; flex: 1;
font-size: 32rpx; }
font-weight: bold;
color: #333333; .ask_right {
width: 350rpx; font-family: PingFangSC-Regular;
overflow: hidden; font-size: 24rpx;
white-space: nowrap; color: blue;
/*不换行*/ background-color: #FFFFFF;
text-overflow: ellipsis; /* border: 2rpx solid blue; */
/*超出部分文字以...显示*/ border-radius: 6px;
} /* padding: 2rpx 10rpx; */
margin-right: 10rpx;
.highlight { margin-bottom: 10rpx;
color: #F46161; }
}
.head_right {
.body { font-family: PingFangSC-Medium;
width: 690rpx; font-size: 28rpx;
margin: 0rpx auto; color: #F46161;
background-color: #fefefe; font-weight: bold;
overflow: hidden; }
box-sizing: border-box;
padding: 20rpx; .head_left {
padding-bottom: 0; font-family: PingFangSC-Medium;
border-radius: 20rpx; font-size: 32rpx;
margin-bottom: 20rpx; font-weight: bold;
} color: #333333;
width: 350rpx;
.heads { overflow: hidden;
display: flex; white-space: nowrap;
align-items: center; /*不换行*/
justify-content: space-between; text-overflow: ellipsis;
} /*超出部分文字以...显示*/
}
.highlight {
color: #F46161;
}
.body {
width: 690rpx;
margin: 0rpx auto;
background-color: #fefefe;
overflow: hidden;
box-sizing: border-box;
padding: 20rpx;
padding-bottom: 0;
border-radius: 20rpx;
margin-bottom: 20rpx;
}
.heads {
display: flex;
align-items: center;
justify-content: space-between;
}
</style> </style>

View File

@@ -1,212 +1,243 @@
<template> <template>
<view class="app_container"> <view class="app_container">
<CustomNavbar @back="back" :titke="'招工列表'"></CustomNavbar> <CustomNavbar @back="back" :titke="'招工列表'"></CustomNavbar>
<view class="guide"> <view class="guide">
<view class="guide_content" v-for="(item, index) in arrGuide" :key="index"> <view class="guide_content" v-for="(item, index) in arrGuide" :key="index">
<view class="guide_item"> {{item}} </view> <view class="guide_item"> {{item}} </view>
<view class="guide_arrow" v-if="index !== arrGuide.length - 1"></view> <view class="guide_arrow" v-if="index !== arrGuide.length - 1"></view>
</view> </view>
</view> </view>
<view class="condition"> <view class="condition">
<view class="cond_list" v-if="pageType === 'enterprise'"> <view class="cond_list" v-if="pageType === 'enterprise'">
<view v-for="(item, index) in arrTitle" :key="index" <view v-for="(item, index) in arrTitle" :key="index"
:class="['cond_item', index === currentArrTitleID ? 'activeButton' : '']" :class="['cond_item', index === currentArrTitleID ? 'activeButton' : '']" @click="changeTab(item)">
@click="changeTab(item)"> {{ item.text }}
{{ item.text }} </view>
</view> </view>
</view> <view class="cond_list" v-else>
<view class="cond_list" v-else> <view style="font-weight: 700;">个体户招工</view>
<view style="font-weight: 700;">个体户招工</view> </view>
</view> <view class="cond_item item_com" @click="openPicker = true">{{ reviewStatus[currentReviewStatusID] }}</view>
<view </view>
class="cond_item item_com" <view class="container" v-if="dataSource.length">
@click="openPicker = true" <block v-for="(item, index) in dataSource" :key="item.id">
>{{ reviewStatus[currentReviewStatusID] }}</view> <userrecruitList :companyitem="item" :position="userLocation"></userrecruitList>
</view> </block>
<view class="container" v-if="dataSource.length"> </view>
<block v-for="(item, index) in dataSource" :key="item.id"> <empty v-else content="暂无数据" mr-top="200"></empty>
<userrecruitList :companyitem="item"></userrecruitList> <CustomTabbar :currentpage="0"></CustomTabbar>
</block> <u-picker :show="openPicker" :columns="pickerColumns" @cancel="openPicker = false"
</view> @confirm="changeReviewStatus"></u-picker>
<empty v-else content="暂无数据" mr-top="200"></empty> </view>
<CustomTabbar :currentpage="0"></CustomTabbar> </template>
<u-picker :show="openPicker" :columns="pickerColumns" @cancel="openPicker = false" @confirm="changeReviewStatus"></u-picker>
</view> <script>
</template> import CustomNavbar from '@/components/CustomNavbar/navbar.vue';
import CustomTabbar from '@/components/CustomTabbar/custom_tabbar.vue';
<script> import {
import CustomNavbar from '@/components/CustomNavbar/navbar.vue'; getuserrecruitListApp
import CustomTabbar from '@/components/CustomTabbar/custom_tabbar.vue'; } from '@/api/userrecruit.js'
import { getuserrecruitListApp } from '@/api/userrecruit.js' import userrecruitList from '../components/userrecruitList.vue'
import userrecruitList from '../components/userrecruitList.vue' let arrGuide = ['在线填写招工需求', '后台审核沟通发布', '平台展示招工信息'];
let arrGuide = ['在线填写招工需求', '后台审核沟通发布', '平台展示招工信息']; let arrTitle = [{
let arrTitle = [ text: "发布零工岗位",
{ id: 0
text: "发布零工岗位", }, {
id: 0 text: "发布全职岗位",
}, { id: 1
text: "发布全职岗位", }
id: 1 // , {
} // text: "个体户招工",
// , { // id: 2
// text: "个体户招工", // }
// id: 2 ];
// } let reviewStatus = {
]; '-1': "全部",
let reviewStatus = { '0': "待审核",
'-1': "全选择", '1': "已审核",
'0': "待审核", '9': "已驳回",
'1': "已审核", };
'9': "已驳回", let pickerColumns = [Object.values(reviewStatus)]
}; import {
let pickerColumns = [Object.values(reviewStatus)] mapState,
import { mapState } from 'vuex' mapGetters
export default { } from 'vuex'
components: {CustomTabbar, CustomNavbar, userrecruitList}, export default {
data() { components: {
return { CustomTabbar,
pageType: null, // null 个人 enterprise 企业 CustomNavbar,
arrGuide, userrecruitList
arrTitle, },
reviewStatus, data() {
pickerColumns, return {
openPicker: false, pageType: null, // null 个人 enterprise 企业
currentArrTitleID: 2, arrGuide,
currentReviewStatusID: '-1', arrTitle,
pageNumber: 1, reviewStatus,
dataSource: [], pickerColumns,
} openPicker: false,
}, currentArrTitleID: 2,
onLoad({type}) { currentReviewStatusID: '-1',
if(this.enterprise){ pageNumber: 1,
this.pageType = 'enterprise' dataSource: [],
this.currentArrTitleID = 0 }
} },
this.getList('refresh') onLoad({
}, type
onReachBottom() { }) {
this.getList('add') if (this.enterprise) {
}, this.pageType = 'enterprise'
computed: { this.currentArrTitleID = 0
...mapState({enterprise: (state) => state.user.seeEnterprise}), }
}, this.getList('refresh')
methods: { },
changeReviewStatus({value, index, values}) { onReachBottom() {
const val = Object.keys(reviewStatus).filter((item) => reviewStatus[item] === value[0])[0] this.getList('add')
this.currentReviewStatusID = val },
this.openPicker = false computed: {
this.getList('refresh') ...mapState({
}, enterprise: (state) => state.user.seeEnterprise
changeTab(item) { }),
this.currentArrTitleID = item.id ...mapGetters(['userLocation']),
this.getList('refresh') },
}, methods: {
back() { changeReviewStatus({
uni.reLaunch({ url: '/pages/my/my' }) value,
}, index,
async getList(type = "add") { values
if (type === "refresh") { }) {
this.dataSource = []; const val = Object.keys(reviewStatus).filter((item) => reviewStatus[item] === value[0])[0]
this.pageNumber = 1; this.currentReviewStatusID = val
} this.openPicker = false
let params = { this.getList('refresh')
current: this.pageNumber, },
size: 10, changeTab(item) {
jobType: this.currentArrTitleID, this.currentArrTitleID = item.id
} this.getList('refresh')
if(this.currentReviewStatusID !== '-1') { },
params.reviewState = this.currentReviewStatusID back() {
} uni.reLaunch({
uni.showLoading({title: '加载中...' }) url: '/pages/my/my'
let resData = await getuserrecruitListApp(params); })
uni.hideLoading() },
if (resData.data?.code === 200) { async getList(type = "add") {
const { records, total, page, size } = resData.data.data; if (type === "refresh") {
if (!records.length) { this.dataSource = [];
return this.$api.msg("没有更多数据"); this.pageNumber = 1;
} }
switch (type) { let params = {
case "add": current: this.pageNumber,
this.dataSource = [...this.dataSource, ...records]; size: 10,
break; jobType: this.currentArrTitleID,
case "refresh": }
this.dataSource = records; if (this.currentReviewStatusID !== '-1') {
break; params.reviewState = this.currentReviewStatusID
} }
this.pageNumber += 1; uni.showLoading({
} title: '加载中...'
} })
} let resData = await getuserrecruitListApp(params);
uni.hideLoading()
} if (resData.data?.code === 200) {
</script> const {
records,
<style lang="scss" scoped> total,
page,
.app_container{ size
background-color: #f3f4f8; } = resData.data.data;
min-height: calc(100vh - var(--window-top) - var(--status-bar-height) - var(--window-bottom)); if (!records.length) {
.container{ return this.$api.msg("没有更多数据");
padding: 0 23rpx; }
padding-bottom: calc(env(safe-area-inset-bottom) + 123rpx) switch (type) {
} case "add":
.condition{ this.dataSource = [...this.dataSource, ...records];
display: flex; break;
flex-wrap: nowrap; case "refresh":
padding: 20rpx; this.dataSource = records;
justify-content: space-between; break;
position: sticky; }
top: 78rpx; this.pageNumber += 1;
z-index: 999; }
background-color: #f3f4f8; }
.cond_list{ }
display: flex;
flex-wrap: nowrap; }
flex: 1; </script>
// justify-content: space-between;
} <style lang="scss" scoped>
.cond_item{ .app_container {
font-size: 14px; background-color: #f3f4f8;
padding: 10rpx 40rpx; min-height: calc(100vh - var(--window-top) - var(--status-bar-height) - var(--window-bottom));
background: #fff;
border-radius: 50px; .container {
margin-right: 10rpx; padding: 0 23rpx;
white-space: nowrap; padding-bottom: calc(env(safe-area-inset-bottom) + 123rpx)
} }
.activeButton {
color: #4171f9; .condition {
background-color: #cfdaf8; display: flex;
} flex-wrap: nowrap;
.item_com{ padding: 20rpx;
margin-right: 0; justify-content: space-between;
padding: 10rpx 20rpx; position: sticky;
} top: 78rpx;
} z-index: 999;
.guide{ background-color: #f3f4f8;
padding: 20rpx;
display: flex; .cond_list {
align-items: center; display: flex;
justify-content: space-between; flex-wrap: nowrap;
height: 200rpx; flex: 1;
color: #FFFFFF; // justify-content: space-between;
font-size: 28rpx; }
background-color: #4071f8;
.guide_content{ .cond_item {
display: flex; font-size: 14px;
align-items: center; padding: 10rpx 40rpx;
.guide_item{ background: #fff;
width: 160rpx; border-radius: 50px;
text-align: center; margin-right: 10rpx;
background-color: rgba(76, 120, 249, 1); white-space: nowrap;
border-radius: 10rpx; }
padding: 10rpx;
} .activeButton {
.guide_arrow{ color: #4171f9;
margin-left: 40rpx; background-color: #cfdaf8;
} }
}
.item_com {
} margin-right: 0;
} padding: 10rpx 20rpx;
}
}
.guide {
padding: 20rpx;
display: flex;
align-items: center;
justify-content: space-between;
height: 200rpx;
color: #FFFFFF;
font-size: 28rpx;
background-color: #4071f8;
.guide_content {
display: flex;
align-items: center;
.guide_item {
width: 160rpx;
text-align: center;
background-color: rgba(76, 120, 249, 1);
border-radius: 10rpx;
padding: 10rpx;
}
.guide_arrow {
margin-left: 40rpx;
}
}
}
}
</style> </style>

View File

@@ -125,14 +125,17 @@
<u-form-item label="座机" prop="callNumber" borderBottom labelWidth="80" ref="item1"> <u-form-item label="座机" prop="callNumber" borderBottom labelWidth="80" ref="item1">
<u--input v-model="info.callNumber" border="none" placeholder="请输入座机"></u--input> <u--input v-model="info.callNumber" border="none" placeholder="请输入座机"></u--input>
</u-form-item> </u-form-item>
<u-form-item label="工作地址" labelWidth="70" prop="cityId" borderBottom ref="item1" <u-form-item label="注册地址" labelWidth="70" prop="cityId" borderBottom ref="item1"
@click="showCityId = true; hideKeyboard()"> @click="showCityId = true; hideKeyboard()">
<PickerTree placeholder="请选择工作地址" :tree="area.data" valueName="value" :visibel="showCityId" <PickerTree placeholder="请选择注册地址" :tree="area.data" valueName="value" :visibel="showCityId"
v-model="info.cityId" @cancel="showCityId = false" border="none" returnValue="label" :deep="3"> v-model="info.cityId" @cancel="showCityId = false" border="none" returnValue="label" :deep="3">
</PickerTree> </PickerTree>
</u-form-item> </u-form-item>
<u-form-item label="详细地址" prop="address" borderBottom labelWidth="80" ref="item1"> <u-form-item label="工作地址" prop="address" borderBottom labelWidth="80" ref="item1">
<view class="addressinfo" @click="selectMap">{{info.address}}</view> <view class="addressinfo" @click="selectMap"
:style="`fontSize: 15px;color: ${info.address ? '#333333' : '#c0c4cc'}`">
{{info.address || '请选择'}}
</view>
<!-- <textarea placeholder-style="color: rgb(192, 196, 204); fontSize: 15px" @focus="selectMap" <!-- <textarea placeholder-style="color: rgb(192, 196, 204); fontSize: 15px" @focus="selectMap"
v-model="info.address" placeholder="请输入详细地址" style="width: 100%;" /> --> v-model="info.address" placeholder="请输入详细地址" style="width: 100%;" /> -->
<!-- <lin-select :list="addressOptions" value-key="location" name-key="title" max-height="180" <!-- <lin-select :list="addressOptions" value-key="location" name-key="title" max-height="180"
@@ -354,7 +357,7 @@
cityId: { cityId: {
type: 'string', type: 'string',
required: true, required: true,
message: '请选择工作地址', message: '请选择注册地址',
trigger: ['change'] trigger: ['change']
}, },
jobCompanyName: { jobCompanyName: {
@@ -402,7 +405,7 @@
address: { address: {
type: 'string', type: 'string',
required: true, required: true,
message: '请输入详细地址', message: '请输入工作地址',
trigger: ['change'] trigger: ['change']
}, },
createDept: { createDept: {

View File

@@ -131,12 +131,15 @@
</u-form-item> </u-form-item>
<u-form-item label="工作地址" labelWidth="70" prop="cityId" borderBottom ref="item1" <u-form-item label="工作地址" labelWidth="70" prop="cityId" borderBottom ref="item1"
@click="showCityId = true; hideKeyboard()"> @click="showCityId = true; hideKeyboard()">
<PickerTree placeholder="请选择工作地址" :tree="area.data" valueName="value" :visibel="showCityId" <PickerTree placeholder="请选择注册地址" :tree="area.data" valueName="value" :visibel="showCityId"
v-model="info.cityId" @cancel="showCityId = false" border="none" returnValue="label" :deep="3"> v-model="info.cityId" @cancel="showCityId = false" border="none" returnValue="label" :deep="3">
</PickerTree> </PickerTree>
</u-form-item> </u-form-item>
<u-form-item label="详细地址" prop="address" borderBottom labelWidth="80" ref="item1"> <u-form-item label="详细地址" prop="address" borderBottom labelWidth="80" ref="item1">
<view class="addressinfo" @click="selectMap">{{info.address}}</view> <view class="addressinfo" @click="selectMap"
:style="`fontSize: 15px;color: ${info.address ? '#333333' : '#c0c4cc'}`">
{{info.address || '请选择'}}
</view>
<!-- <u--input v-model="info.address" border="none" placeholder="请输入详细地址"></u--input> --> <!-- <u--input v-model="info.address" border="none" placeholder="请输入详细地址"></u--input> -->
</u-form-item> </u-form-item>
<!-- <view class="map"> <!-- <view class="map">
@@ -343,7 +346,7 @@
cityId: { cityId: {
type: 'string', type: 'string',
required: true, required: true,
message: '请选择工作地址', message: '请选择注册地址',
trigger: ['change'] trigger: ['change']
}, },
jobCompanyName: { jobCompanyName: {
@@ -391,7 +394,7 @@
address: { address: {
type: 'string', type: 'string',
required: true, required: true,
message: '请输入详细地址', message: '请输入工作地址',
trigger: ['change'] trigger: ['change']
}, },
createDept: { createDept: {

View File

@@ -23,7 +23,9 @@
// #endif // #endif
// this.strings=decodeURIComponent(option.val) ; // this.strings=decodeURIComponent(option.val) ;
getPolicyContent(1, option.id).then(res => { getPolicyContent(1, option.id).then(res => {
this.strings = res.data.data.records[0].note if (res.data.data.records.length) {
this.strings = res.data.data.records[0].note
}
}) })
} }
}, },