1

parent 1606855d
import instance from "@/utils/request"; import instance from "@/utils/request";
// 获取消息分页 // 获取消息分页
export const getMessagePageList = params => instance.post("/message/getPageList", params); export const getMessagePageList = params => instance.post("/message/business/getPageList", params);
...@@ -9,7 +9,11 @@ ...@@ -9,7 +9,11 @@
<image v-if="data.avatarPath" :src="evn.APP_IMAGE_BASE_API + data.avatarPath" mode="" /> <image v-if="data.avatarPath" :src="evn.APP_IMAGE_BASE_API + data.avatarPath" mode="" />
<image v-else src="@/static/image/user/default-avatar.png" mode="" /> <image v-else src="@/static/image/user/default-avatar.png" mode="" />
</view> </view>
<view class="education"> {{ educationExperience.schoolName }}·{{ educationExperience.major }} </view> <view class="education" v-if="educationExperience">
{{ educationExperience ? educationExperience.schoolName : null }}·{{
educationExperience ? educationExperience.major : null
}}
</view>
<view class="introduce"> <view class="introduce">
{{ data.personalAdvantage }} {{ data.personalAdvantage }}
</view> </view>
...@@ -22,20 +26,40 @@ import { defineProps, computed } from "vue"; ...@@ -22,20 +26,40 @@ import { defineProps, computed } from "vue";
import evn from "@/utils/config"; import evn from "@/utils/config";
import { getEnumText } from "@/utils/utils"; import { getEnumText } from "@/utils/utils";
import { useAsync } from "@/hooks/useAsync"; import { useAsync } from "@/hooks/useAsync";
const { data } = defineProps({ let { data, jobId, type } = defineProps({
data: { data: {
type: Object, type: Object,
default: () => ({}) default: () => ({})
},
jobId: {
type: String,
default: () => ""
},
type: {
type: String,
default: () => "recommend"
} }
}); });
const { data: educationLevelText } = useAsync(getEnumText("EnumEducation", data.educationLevel)); const { data: educationLevelText } = useAsync(getEnumText("EnumEducation", data.educationLevel));
console.log("data", data);
const educationExperience = computed(() => { const educationExperience = computed(() => {
if (data.educationLevel) {
return JSON.parse(data?.educationExperience)[0] || {}; return JSON.parse(data?.educationExperience)[0] || {};
} else {
return null;
}
}); });
const jumpResumeDetail = () => { const jumpResumeDetail = () => {
console.log("data", data);
if (type == "recommend") {
jobId = data.jobId;
}
uni.navigateTo({ uni.navigateTo({
url: `/pages/user/resume/index?jobId=${data.jobId}&userId=${data.userId}&applicationId=${data.applicationId}` url: `/pages/user/resume/index?jobId=${jobId}&userId=${data.userId}&applicationId=${data.applicationId}&type=${type}`
}); });
}; };
</script> </script>
......
...@@ -233,6 +233,7 @@ ...@@ -233,6 +233,7 @@
"borderStyle": "black", "borderStyle": "black",
"backgroundColor": "#FFFFFF", "backgroundColor": "#FFFFFF",
"position": "bottom", "position": "bottom",
"iconWidth":"52rpx",
"list": [ "list": [
{ {
"pagePath": "pages/recommend/index", "pagePath": "pages/recommend/index",
......
...@@ -13,8 +13,7 @@ ...@@ -13,8 +13,7 @@
<view class="message flex-between"> <view class="message flex-between">
<text>{{ v.content }}</text> <text>{{ v.content }}</text>
<view class="flex-align-center"> <view class="flex-align-center">
<text class="link" v-if="[2, 3, 4, 7].includes(v.type)">立即前往</text> <text class="link" v-if="[2, 3, 4, 7].includes(v.type)">立即前往></text>
<view class="arrow"></view>
</view> </view>
</view> </view>
</view> </view>
...@@ -98,6 +97,7 @@ getList(); ...@@ -98,6 +97,7 @@ getList();
display: flex; display: flex;
flex-direction: column; flex-direction: column;
height: 100%; height: 100%;
padding-bottom: 100rpx;
} }
.tabs { .tabs {
display: flex; display: flex;
......
<template> <template>
<NavBar :showIcon="true" :showTitle="true" title="投递管理" backgroundBox="#FFFFFF"></NavBar>
<div class="page"> <div class="page">
<NavBar :showIcon="true" :showTitle="true" title="投递管理" backgroundBox="#FFFFFF"></NavBar>
<div class="filter-bar flex-between"> <div class="filter-bar flex-between">
<p <p
:class="{ active: apiParams.status == item.code }" :class="{ active: apiParams.status == item.code }"
...@@ -13,8 +13,9 @@ ...@@ -13,8 +13,9 @@
</div> </div>
<scroll-view @scrolltolower="getApplicationList()" scroll-y> <scroll-view @scrolltolower="getApplicationList()" scroll-y>
<div class="item" v-for="(item, index) in list" :key="index"> <div class="item" v-for="(item, index) in list" :key="index">
<jobSeekersCard :data="item" /> <jobSeekersCard :data="item" :type="'recommend'" />
</div> </div>
<wd-status-tip v-if="list.length == 0" image="../../../static/image/enmpty-dt.png" tip="暂无记录" />
</scroll-view> </scroll-view>
</div> </div>
</template> </template>
...@@ -105,7 +106,7 @@ const getApplicationList = () => { ...@@ -105,7 +106,7 @@ const getApplicationList = () => {
} }
scroll-view { scroll-view {
flex-grow: 1; flex-grow: 1;
height: 200rpx; height: 100vh;
.item { .item {
padding: 16rpx 32rpx; padding: 16rpx 32rpx;
border-bottom: 16rpx solid #f3f4f8; border-bottom: 16rpx solid #f3f4f8;
......
...@@ -40,7 +40,14 @@ ...@@ -40,7 +40,14 @@
<view class="item" @click="showOtherFilter = true">筛选<view class="arrow"></view> </view> <view class="item" @click="showOtherFilter = true">筛选<view class="arrow"></view> </view>
</view> </view>
</view> </view>
<scroll-view class="recommend-list" scroll-y="{{true}}"> <scroll-view
class="recommend-list"
:refresher-triggered="refresherEnabled"
@refresherrefresh="fresherrefresh"
refresher-enabled="true"
scroll-y="true"
@scrolltolower="getResumeRecommendList"
>
<div class="other-view" v-if="showOtherFilter" @click="showOtherFilter = false"> <div class="other-view" v-if="showOtherFilter" @click="showOtherFilter = false">
<div class="wrapper" @click.stop> <div class="wrapper" @click.stop>
<div class="other-view-item"> <div class="other-view-item">
...@@ -53,8 +60,9 @@ ...@@ -53,8 +60,9 @@
<p <p
class="select-item" class="select-item"
:class="{ active: v.code == activeEducation }" :class="{ active: v.code == activeEducation }"
@click="activeEducation = v.code" @click="changeType(v)"
v-for="v in EnumEducationRequirement" v-for="v in EnumEducationRequirement"
:key="v.code"
> >
{{ v.text }} {{ v.text }}
</p> </p>
...@@ -72,9 +80,9 @@ ...@@ -72,9 +80,9 @@
</div> </div>
<view class="item" v-for="v in applicationList" :key="v.applicationId"> <view class="item" v-for="v in applicationList" :key="v.applicationId">
<jobSeekersCard :data="v" /> <jobSeekersCard :data="v" :jobId="myJobId" :type="'application'" />
</view> </view>
<wd-status-tip v-if="!applicationList.length" image="content" tip="暂无内容" /> <wd-status-tip v-if="!applicationList || !applicationList.length" image="content" tip="暂无内容" />
</scroll-view> </scroll-view>
</view> </view>
<view class="management" v-if="activeTab == '职位管理'"> <view class="management" v-if="activeTab == '职位管理'">
...@@ -183,14 +191,30 @@ const changeActiveTab = tab => { ...@@ -183,14 +191,30 @@ const changeActiveTab = tab => {
getTopFilter(); getTopFilter();
getJobList(activeTopFilter.value); getJobList(activeTopFilter.value);
}; };
let refresherEnabled = ref(true);
/* 获取职位列表 */ /* 获取职位列表 */
const jobListColumns = ref([]); const jobListColumns = ref([]);
const jobTypeText = ref(""); const jobTypeText = ref("");
const handleConfirm = ({ selectedItems }) => { const handleConfirm = ({ selectedItems, value }) => {
myJobId.value = selectedItems.id;
jobTypeText.value = selectedItems.jobTypeText; jobTypeText.value = selectedItems.jobTypeText;
refresh().then(() => {
getResumeRecommendList(); getResumeRecommendList();
});
}; };
const myJobId = ref("");
function changeType(v) {
activeEducation0value = v.code;
myJobId.value = v.id;
getResumeRecommendList();
}
function fresherrefresh() {
refresherEnabled.value = true;
refresh().then(() => {
getResumeRecommendList();
});
}
getJobListApi().then(res => { getJobListApi().then(res => {
if (res.code == 200) { if (res.code == 200) {
jobListColumns.value = res.data; jobListColumns.value = res.data;
...@@ -228,12 +252,43 @@ const getApplicationListParams = ref({ ...@@ -228,12 +252,43 @@ const getApplicationListParams = ref({
maxWorkYear: "", maxWorkYear: "",
education: "", education: "",
minAge: "", minAge: "",
isEnd: false,
maxAge: "", maxAge: "",
pageNo: 1, pageNo: 1,
pageSize: 10 pageSize: 10
}); });
const careerList = ref([]);
const refresh = () => {
return new Promise((resolve, reject) => {
applicationList.value = [];
getApplicationListParams.value.pageNo = 1;
getApplicationListParams.value.isEnd = false;
resolve();
});
};
const getResumeRecommendList = () => { const getResumeRecommendList = () => {
getResumeRecommendListApi(getApplicationListParams.value).then(res => {}); if (getApplicationListParams.value.isEnd === true)
return new Promise(resolve => {
resolve();
});
xma.showLoading({
title: "加载中...",
mask: true
});
return getResumeRecommendListApi(getApplicationListParams.value).then(res => {
xma.hideLoading();
refresherEnabled.value = false;
if (!res.data) {
res.data = [];
}
if (res.data.length < getApplicationListParams.value.pageSize) {
getApplicationListParams.value.isEnd = true;
}
getApplicationListParams.value.pageNo += 1;
applicationList.value = applicationList.value.concat(res.data);
});
}; };
// 城市筛选 // 城市筛选
const valueCity = ref([]); const valueCity = ref([]);
...@@ -350,7 +405,6 @@ const getJobList = (status = "") => { ...@@ -350,7 +405,6 @@ const getJobList = (status = "") => {
title: "加载中..." title: "加载中..."
}); });
getListStatisticsApi({ status }).then(res => { getListStatisticsApi({ status }).then(res => {
console.log("resresres", res);
xma.hideLoading(); xma.hideLoading();
res.data.forEach(v => { res.data.forEach(v => {
const { data: workModeText } = useAsync(getEnumText("EnumWorkMode", v.workMode)); const { data: workModeText } = useAsync(getEnumText("EnumWorkMode", v.workMode));
...@@ -359,6 +413,10 @@ const getJobList = (status = "") => { ...@@ -359,6 +413,10 @@ const getJobList = (status = "") => {
v.statusText = statusText; v.statusText = statusText;
}); });
jobList.value = [...res.data]; jobList.value = [...res.data];
if (!status) {
myJobId.value = jobList.value[0].id;
}
}); });
}; };
onLoad(() => { onLoad(() => {
......
...@@ -98,7 +98,13 @@ if (pinias.formData.settlementType == 1) { ...@@ -98,7 +98,13 @@ if (pinias.formData.settlementType == 1) {
const initSalaryColumns = () => { const initSalaryColumns = () => {
const temp = []; const temp = [];
const maxSalary = pinias.formData.settlementType === 1 ? 1000 : 50 * multiple; const maxSalary = pinias.formData.settlementType === 1 ? 1000 : 50 * multiple;
if (pinias.formData.settlementType === 1) {
temp.push({
value: 10,
label: "10",
next: true
});
}
// 生成序列 // 生成序列
for (let i = 1; i * multiple <= maxSalary; i++) { for (let i = 1; i * multiple <= maxSalary; i++) {
const currentValue = i * multiple; const currentValue = i * multiple;
...@@ -268,6 +274,13 @@ initViewData(); ...@@ -268,6 +274,13 @@ initViewData();
:deep(.uni-checkbox-input) { :deep(.uni-checkbox-input) {
border-radius: 50% !important; border-radius: 50% !important;
} }
.title-box {
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 32rpx;
box-sizing: border-box;
}
.welfare { .welfare {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
......
...@@ -75,29 +75,29 @@ const next = () => { ...@@ -75,29 +75,29 @@ const next = () => {
<style lang="scss" scoped> <style lang="scss" scoped>
@import "./common.scss"; @import "./common.scss";
image { image {
width: 12px; width: 24rpx;
height: 13px; height: 26rpx;
} }
:deep(#u-a-c .uni-system-choose-location .nav) { :deep(#u-a-c .uni-system-choose-location .nav) {
top: 20px !important; top: 40rpx !important;
background-image: none; background-image: none;
} }
:deep(#u-a-c .uni-system-choose-location .nav-btn) { :deep(#u-a-c .uni-system-choose-location .nav-btn) {
background-color: #007aff; background-color: #007aff;
border-radius: 10px; border-radius: 20rpx;
} }
:deep(#u-a-c .uni-system-choose-location .nav-btn.back) { :deep(#u-a-c .uni-system-choose-location .nav-btn.back) {
background-color: #007aff; background-color: #007aff;
border-radius: 10px; border-radius: 20rpx;
top: 50px; top: 140rpx;
left: 10px; left: 20rpx;
} }
:deep(#u-a-c .uni-system-choose-location .nav-btn.confirm) { :deep(#u-a-c .uni-system-choose-location .nav-btn.confirm) {
background-color: #007aff; background-color: #007aff;
border-radius: 10px; border-radius: 20rpx;
top: 50px; top: 140rpx;
right: 10px; right: 20rpx;
} }
.foot-btn { .foot-btn {
position: fixed; position: fixed;
......
...@@ -158,12 +158,12 @@ const next = () => { ...@@ -158,12 +158,12 @@ const next = () => {
/* 初始化页面数据 */ /* 初始化页面数据 */
const initViewData = async () => { const initViewData = async () => {
if (pinias.formData.id) { if (pinias.formData.id) {
console.log(pinias.formData);
identityText.value = await getEnumText("EnumIdentityRequirement", pinias.formData.identityRequirement); identityText.value = await getEnumText("EnumIdentityRequirement", pinias.formData.identityRequirement);
educationText.value = await getEnumText("EnumEducationRequirement", pinias.formData.educationRequirement); educationText.value = await getEnumText("EnumEducationRequirement", pinias.formData.educationRequirement);
if (pinias.formData.maxAgeRequirement) { if (pinias.formData.maxAgeRequirement) {
ageText.value = `${pinias.formData.minAgeRequirement}~${pinias.formData.maxAgeRequirement}`; ageText.value = `${pinias.formData.minAgeRequirement}~${pinias.formData.maxAgeRequirement}`;
} else {
ageText.value = "不限";
} }
} }
}; };
......
...@@ -86,7 +86,6 @@ const submit = () => { ...@@ -86,7 +86,6 @@ const submit = () => {
// 提交 // 提交
createJobApi(pinias.formData).then(res => { createJobApi(pinias.formData).then(res => {
if (res.code == 200) { if (res.code == 200) {
pinias.resetForm();
setTimeout(() => { setTimeout(() => {
wx.hideLoading({ wx.hideLoading({
complete: complete => { complete: complete => {
...@@ -103,6 +102,8 @@ const submit = () => { ...@@ -103,6 +102,8 @@ const submit = () => {
uni.switchTab({ uni.switchTab({
url: "/pages/recommend/index" url: "/pages/recommend/index"
}); });
pinias.resetForm();
}, 3000); }, 3000);
} else { } else {
uni.showToast({ uni.showToast({
......
<template> <template>
<div class="page"> <div class="page">
<NavBar :showIcon="false" :showTitle="false" title="" backgroundBox="#FFFFFF"></NavBar>
<div class="form"> <div class="form">
<div class="from-item" v-for="(item, index) in postItem" :key="index + Math.random()"> <div class="from-item" v-for="(item, index) in postItem" :key="index + Math.random()">
<div class="title"> <div class="title">
......
...@@ -29,10 +29,16 @@ ...@@ -29,10 +29,16 @@
<view class="t1"> 请上传企业营业执照和法人身份证正面照片 </view> <view class="t1"> 请上传企业营业执照和法人身份证正面照片 </view>
<view class="t1"> (注:图片大小不超过10M) </view> <view class="t1"> (注:图片大小不超过10M) </view>
</view> </view>
<wd-tabbar
<view class="btn-wrap" v-if="status == 2"> @tap="next"
<button class="bottom-btn" @tap="submit">提交</button> v-if="status == 2"
</view> custom-style="display: flex;justify-content: center !important;"
fixed
placeholder
safeAreaInsetBottom
>
<view class="foot-btn" @tap="submit">提交</view>
</wd-tabbar>
</div> </div>
</template> </template>
...@@ -135,6 +141,17 @@ const submit = () => { ...@@ -135,6 +141,17 @@ const submit = () => {
margin-top: 32rpx; margin-top: 32rpx;
} }
} }
.foot-btn {
position: fixed;
display: flex;
align-items: center;
justify-content: center;
width: 622rpx;
height: 80rpx;
color: #ffffff;
background: #1f86ff;
border-radius: 12rpx;
}
.appealing-content { .appealing-content {
padding: 32rpx; padding: 32rpx;
view { view {
......
...@@ -47,7 +47,9 @@ ...@@ -47,7 +47,9 @@
<view class="nav"> <view class="nav">
<view class="item flex-between" v-for="(v, i) in navList" :key="i" @click="navigateTo(v.url, v.fn)"> <view class="item flex-between" v-for="(v, i) in navList" :key="i" @click="navigateTo(v.url, v.fn)">
<view class="flex-between" style="flex: 1"> <view class="flex-between" style="flex: 1">
<div class="flex align-center"><img :src="v.icon" alt="" />{{ v.text }}</div> <div style="display: flex; align-items: center">
<img :src="v.icon" alt="" /><view>{{ v.text }}</view>
</div>
<div v-if="v.subText" :class="{ orange: v.auditStatus === 0 || v.auditStatus === 2 }" class="sub-text"> <div v-if="v.subText" :class="{ orange: v.auditStatus === 0 || v.auditStatus === 2 }" class="sub-text">
{{ v.subText }} {{ v.subText }}
</div> </div>
...@@ -112,7 +114,6 @@ const navList = reactive([ ...@@ -112,7 +114,6 @@ const navList = reactive([
// url: "/pages/user/businessLicense/fillIn", // url: "/pages/user/businessLicense/fillIn",
// text: "企业认证" // text: "企业认证"
// } // }
//
]); ]);
/* 个人信息 */ /* 个人信息 */
const userInfo = ref({}); const userInfo = ref({});
...@@ -155,6 +156,7 @@ const getUserInfo = async () => { ...@@ -155,6 +156,7 @@ const getUserInfo = async () => {
let type = companyRes.data.companyAudit.status; let type = companyRes.data.companyAudit.status;
if (type != 1) { if (type != 1) {
navList[0].subText = await getEnumText("EnumAuditStatus", type); navList[0].subText = await getEnumText("EnumAuditStatus", type);
navList[0].url = "/pages/user/myCompany/index";
navList[0].auditStatus = type; navList[0].auditStatus = type;
uni.hideTabBar(); uni.hideTabBar();
} else { } else {
...@@ -162,28 +164,6 @@ const getUserInfo = async () => { ...@@ -162,28 +164,6 @@ const getUserInfo = async () => {
} }
} }
} }
// const companyRes = await getCompanyInfoApi();
// if (companyRes.code == 200) {
// let status = companyRes.data.companyAudit.status;
// if (status != 1) {
// navList[0].subText = await getEnumText("EnumAuditStatus", status);
// navList[0].auditStatus = status;
// uni.hideTabBar();
// } else {
// uni.showTabBar();
// }
// }
// if (companyRes.data.companyAppeal && companyRes.data.companyAppeal.status == 1) {
// } else if (companyRes.data.companyAppeal.status == 0) {
// navList[0].subText = "申诉中";
// navList[0].url = "/pages/user/businessLicense/appeal";
// uni.hideTabBar();
// } else {
// uni.showTabBar();
// navList[0].url = "/pages/user/businessLicense/appeal";
// navList[0].subText = "申诉不通过";
// }
}; };
onShow(() => { onShow(() => {
getUserInfo(); getUserInfo();
......
...@@ -140,6 +140,21 @@ const chooseImage = sourceType => { ...@@ -140,6 +140,21 @@ const chooseImage = sourceType => {
/* 提交 */ /* 提交 */
const submit = () => { const submit = () => {
console.log(params); console.log(params);
if (
validateForm(params, [
"address",
"cityCode",
"cityName",
"companyIntro",
"districtCode",
"districtName",
"id",
"logoPath",
"nameAbbreviation",
"provinceCode",
"provinceName"
])
) {
saveCompanyInfoApi(params).then(res => { saveCompanyInfoApi(params).then(res => {
if (res.code == 200) { if (res.code == 200) {
uni.showToast({ uni.showToast({
...@@ -160,6 +175,23 @@ const submit = () => { ...@@ -160,6 +175,23 @@ const submit = () => {
}); });
} }
}); });
}
};
const validateForm = (formData, requiredFields) => {
for (const field of requiredFields) {
const value = formData[field];
// 排除 0 和 "0" 的值,不作为空值校验
if (value === undefined || value === null || value === "") {
uni.showToast({
title: `请填写完整表单`,
icon: "none",
duration: 2000
});
return false;
}
}
return true;
}; };
</script> </script>
......
<template> <template>
<NavBar :showIcon="true" :showTitle="true" title="简历详情" backgroundBox="transparent"></NavBar> <NavBar :showIcon="true" :showTitle="true" title="简历详情" backgroundBox="#fff"></NavBar>
<div class="resume-page"> <div class="resume-page">
<!-- 个人信息 --> <!-- 个人信息 -->
<view class="user-info flex-between"> <view class="user-info flex-between">
...@@ -74,12 +74,15 @@ ...@@ -74,12 +74,15 @@
</view> </view>
<!-- {{ status }} --> <!-- {{ status }} -->
<div class="footer flex-center"> <div class="footer" v-if="pageType !== 'application'">
<template v-if="status == 0 || status == 1"> <template v-if="status == 0 || status == 1">
<div class="f-btn-box">
<button class="b1" @click="refuse">不合适</button> <button class="b1" @click="refuse">不合适</button>
<button class="b2" @click="invitation">邀请面试</button> <button class="b2" @click="invitation">邀请面试</button>
</div>
</template> </template>
<template v-else> <template v-else>
<div class="f-btn-box">
<button class="b3" :class="`style${status}`">{{ btnText }}</button> <button class="b3" :class="`style${status}`">{{ btnText }}</button>
<div class="b4"> <div class="b4">
<a :href="`tel:${userPhone}`"> <a :href="`tel:${userPhone}`">
...@@ -87,6 +90,26 @@ ...@@ -87,6 +90,26 @@
<p>立即联系</p> <p>立即联系</p>
</a> </a>
</div> </div>
</div>
</template>
</div>
<div class="footer" v-else>
<template v-if="applicationData.status == 0 || applicationData.status == 1">
<div class="f-btn-box">
<button class="b1" @click="refuse">不合适</button>
<button class="b2" @click="invitation">邀请面试</button>
</div>
</template>
<template v-else>
<div class="f-btn-box">
<button class="b3" :class="`style${applicationData.status}`">{{ applicationText }}</button>
<div class="b4">
<a :href="`tel:${applicationData.userPhone}`">
<img src="@/static/image/icon/telephone.png" alt="" />
<p>立即联系</p>
</a>
</div>
</div>
</template> </template>
</div> </div>
<!-- 确认拒绝 --> <!-- 确认拒绝 -->
...@@ -124,8 +147,12 @@ const resumeData = reactive({ ...@@ -124,8 +147,12 @@ const resumeData = reactive({
major: "", major: "",
userPhone: "" userPhone: ""
}); });
const applicationData = ref({});
// 数据回显 // 数据回显
const getUserResume = ({ userId, jobId }) => { const getUserResume = ({ userId, jobId }) => {
console.log("jobId", jobId);
jobId = !jobId || jobId == "undefined" ? null : jobId;
getUserResumeApi({ userId, jobId }).then(async res => { getUserResumeApi({ userId, jobId }).then(async res => {
const { const {
personalAdvantage, personalAdvantage,
...@@ -136,6 +163,8 @@ const getUserResume = ({ userId, jobId }) => { ...@@ -136,6 +163,8 @@ const getUserResume = ({ userId, jobId }) => {
workExperience, workExperience,
educationExperience educationExperience
} = res.data.resume; } = res.data.resume;
applicationData.value = res.data.jobApplication;
const { realName, workExperience: workExperienceYear, educationLevel, avatarPath } = res.data.user; const { realName, workExperience: workExperienceYear, educationLevel, avatarPath } = res.data.user;
resumeData.preferredCityName = preferredCityName; resumeData.preferredCityName = preferredCityName;
resumeData.personalAdvantage = personalAdvantage; // 求职状态回 resumeData.personalAdvantage = personalAdvantage; // 求职状态回
...@@ -155,7 +184,9 @@ const getUserResume = ({ userId, jobId }) => { ...@@ -155,7 +184,9 @@ const getUserResume = ({ userId, jobId }) => {
resumeData.educationExperience = educationExperienceJson; resumeData.educationExperience = educationExperienceJson;
}); });
}; };
onLoad(({ userId, jobId, applicationId }) => { const pageType = ref(null);
onLoad(({ userId, jobId, applicationId, type }) => {
pageType.value = type;
id = applicationId; id = applicationId;
getUserResume({ userId, jobId }); getUserResume({ userId, jobId });
}); });
...@@ -180,6 +211,18 @@ const btnText = computed(() => { ...@@ -180,6 +211,18 @@ const btnText = computed(() => {
return ""; return "";
} }
}); });
const applicationText = computed(() => {
switch (applicationData.value.status) {
case 2:
return "已邀请面试";
case 3:
return "已面试";
case 4:
return "已拒绝";
default:
return "";
}
});
onShow(() => { onShow(() => {
/* "code": "0", /* "code": "0",
"text": "已投递", "text": "已投递",
...@@ -191,15 +234,21 @@ onShow(() => { ...@@ -191,15 +234,21 @@ onShow(() => {
"text": "已面试", "text": "已面试",
"code": "4", "code": "4",
"text": "已拒绝", */ "text": "已拒绝", */
id = id == "undefined" ? null : id;
if (pageType.value == "application") {
} else {
getApplicationByIdApi(id).then(res => { getApplicationByIdApi(id).then(res => {
status.value = res.data.status; status.value = res.data.status;
userPhone.value = res.data.userPhone; userPhone.value = res.data.userPhone;
}); });
}
}); });
/* 拒绝 */ /* 拒绝 */
const message = useMessage(); const message = useMessage();
const refuse = () => { const refuse = () => {
if (pageType.value == "application") {
id = applicationData.value.id;
}
message message
.confirm({ .confirm({
msg: "您确认拒绝该简历吗?", msg: "您确认拒绝该简历吗?",
...@@ -221,6 +270,9 @@ const refuse = () => { ...@@ -221,6 +270,9 @@ const refuse = () => {
}; };
/* 邀请 */ /* 邀请 */
const invitation = () => { const invitation = () => {
if (pageType.value == "application") {
id = applicationData.value.id;
}
uni.navigateTo({ uni.navigateTo({
url: "/pages/recommend/invitation/index?id=" + id url: "/pages/recommend/invitation/index?id=" + id
}); });
...@@ -230,6 +282,7 @@ const invitation = () => { ...@@ -230,6 +282,7 @@ const invitation = () => {
<style lang="scss" scoped> <style lang="scss" scoped>
.resume-page { .resume-page {
padding-top: 50rpx; padding-top: 50rpx;
padding-bottom: 100rpx;
} }
.user-info { .user-info {
padding-bottom: 30rpx; padding-bottom: 30rpx;
...@@ -332,8 +385,16 @@ const invitation = () => { ...@@ -332,8 +385,16 @@ const invitation = () => {
left: 0; left: 0;
gap: 32rpx; gap: 32rpx;
width: 100%; width: 100%;
padding: 16rpx 0;
border-top: 2rpx solid #1f23290f; border-top: 2rpx solid #1f23290f;
z-index: 99;
.f-btn-box {
display: flex;
justify-content: space-around;
align-items: center;
background: #fff;
z-index: 99;
padding: 16rpx 0;
}
button { button {
width: 294rpx; width: 294rpx;
height: 80rpx; height: 80rpx;
......
src/static/image/tabBar/community.png

1.72 KB | W: | H:

src/static/image/tabBar/community.png

1.72 KB | W: | H:

src/static/image/tabBar/community.png
src/static/image/tabBar/community.png
src/static/image/tabBar/community.png
src/static/image/tabBar/community.png
  • 2-up
  • Swipe
  • Onion skin
src/static/image/tabBar/home.png

824 Bytes | W: | H:

src/static/image/tabBar/home.png

897 Bytes | W: | H:

src/static/image/tabBar/home.png
src/static/image/tabBar/home.png
src/static/image/tabBar/home.png
src/static/image/tabBar/home.png
  • 2-up
  • Swipe
  • Onion skin
src/static/image/tabBar/homeActive.png

890 Bytes | W: | H:

src/static/image/tabBar/homeActive.png

992 Bytes | W: | H:

src/static/image/tabBar/homeActive.png
src/static/image/tabBar/homeActive.png
src/static/image/tabBar/homeActive.png
src/static/image/tabBar/homeActive.png
  • 2-up
  • Swipe
  • Onion skin
src/static/image/tabBar/msg.png

668 Bytes | W: | H:

src/static/image/tabBar/msg.png

763 Bytes | W: | H:

src/static/image/tabBar/msg.png
src/static/image/tabBar/msg.png
src/static/image/tabBar/msg.png
src/static/image/tabBar/msg.png
  • 2-up
  • Swipe
  • Onion skin
src/static/image/tabBar/msgActive.png

693 Bytes | W: | H:

src/static/image/tabBar/msgActive.png

803 Bytes | W: | H:

src/static/image/tabBar/msgActive.png
src/static/image/tabBar/msgActive.png
src/static/image/tabBar/msgActive.png
src/static/image/tabBar/msgActive.png
  • 2-up
  • Swipe
  • Onion skin
src/static/image/tabBar/policy.png

1.55 KB | W: | H:

src/static/image/tabBar/policy.png

1.24 KB | W: | H:

src/static/image/tabBar/policy.png
src/static/image/tabBar/policy.png
src/static/image/tabBar/policy.png
src/static/image/tabBar/policy.png
  • 2-up
  • Swipe
  • Onion skin
src/static/image/tabBar/user.png

1.09 KB | W: | H:

src/static/image/tabBar/user.png

1.17 KB | W: | H:

src/static/image/tabBar/user.png
src/static/image/tabBar/user.png
src/static/image/tabBar/user.png
src/static/image/tabBar/user.png
  • 2-up
  • Swipe
  • Onion skin
src/static/image/tabBar/userActive.png

1.15 KB | W: | H:

src/static/image/tabBar/userActive.png

1.26 KB | W: | H:

src/static/image/tabBar/userActive.png
src/static/image/tabBar/userActive.png
src/static/image/tabBar/userActive.png
src/static/image/tabBar/userActive.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -53,12 +53,10 @@ function handleError(message) { ...@@ -53,12 +53,10 @@ function handleError(message) {
}, 2000); }, 2000);
} }
let { code } = response.data; let { code } = response.data;
console.log('response.data', response.data);
if (code == 200) { if (code == 200) {
return response.data; return response.data;
} else if (code == 9) { } else if (code == 9) {
// handleError("登录已过期"); handleError("登录已过期");
} else if (code == 2) { } else if (code == 2) {
handleError("登录超时"); handleError("登录超时");
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment