flat: 暂存

This commit is contained in:
Apcallover
2025-09-29 11:53:10 +08:00
parent ee57ac7568
commit 3d7cb0c561
34 changed files with 1617 additions and 236 deletions

View File

@@ -56,6 +56,7 @@
{{ jobInfo.description }}
</view>
</view>
<!-- 公司信息 -->
<view class="content-card">
<view class="card-title">
<text class="title">公司信息</text>
@@ -97,7 +98,7 @@
></map>
</view>
</view>
<view class="content-card">
<view class="content-card" v-if="!userInfo.isCompanyUser">
<view class="card-title">
<text class="title">竞争力分析</text>
</view>
@@ -125,8 +126,52 @@
</view>
</view>
</view>
<view style="height: 24px"></view>
<view class="content-card" v-else>
<view class="card-title">
<view class="title">申请人列表</view>
</view>
<view class="applicant-list">
<view v-for="applicant in applicants" :key="applicant.userId" class="applicant-item">
<view class="item-header">
<view class="name">{{ applicant.name }}</view>
<view class="right-header">
<view class="matching-degree">匹配度{{ applicant.matchingDegree }}</view>
<button class="resume-button" @click="viewResume(applicant.userId)">查看简历</button>
</view>
</view>
<view class="item-details">
<view class="detail-text">
<view class="label">年龄{{ applicant.age }}</view>
</view>
<view class="detail-text">
<view class="label">
学历
<dict-Label dictType="education" :value="applicant.education"></dict-Label>
</view>
</view>
<view class="detail-text">
<view class="label">
经验
<dict-Label dictType="experience" :value="applicant.experience"></dict-Label>
</view>
</view>
<view class="detail-text">
<view class="label">
期望薪资
<Salary-Expectation
style="display: inline-block"
:max-salary="applicant.maxSalary"
:min-salary="applicant.minSalary"
:is-month="true"
></Salary-Expectation>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
<view style="height: 34px"></view>
<template #footer>
<view class="footer">
<view class="btn-wq button-click" @click="jobApply">立即前往</view>
@@ -143,6 +188,9 @@ import { reactive, inject, watch, ref, onMounted, computed } from 'vue';
import { onLoad, onShow, onHide } from '@dcloudio/uni-app';
import dictLabel from '@/components/dict-Label/dict-Label.vue';
import RadarMap from './component/radarMap.vue';
import { storeToRefs } from 'pinia';
import useUserStore from '@/stores/useUserStore';
const { userInfo } = storeToRefs(useUserStore());
const { $api, navTo, getLenPx, parseQueryParams, navBack, isEmptyObject } = inject('globalFunction');
import config from '@/config.js';
const matchingDegree = ref(['一般', '良好', '优秀', '极好']);
@@ -156,6 +204,33 @@ const raderData = ref({});
const videoPalyerRef = ref(null);
const explainUrlRef = ref('');
const applicants = ref([
{
createTime: null,
userId: 1,
name: '青岛测试账号331',
age: '28', // 假设年龄有值
sex: '1',
birthDate: null,
education: '4',
politicalAffiliation: '',
phone: '',
avatar: '',
salaryMin: '10000',
salaryMax: '15000',
area: '3',
status: '0',
loginIp: '',
loginDate: null,
jobTitleId: '157,233,373',
experience: '3',
isRecommend: 1,
jobTitle: ['人力资源专员/助理', 'Java', '运维工程师'],
applyDate: '2025-09-26',
matchingDegree: 1,
},
]);
onLoad((option) => {
if (option.jobId) {
initLoad(option);
@@ -188,11 +263,14 @@ function seeExplain() {
function getDetail(jobId) {
return new Promise((reslove, reject) => {
$api.createRequest(`/app/job/${jobId}`).then((resData) => {
const { latitude, longitude, companyName, companyId } = resData.data;
const { latitude, longitude, companyName, companyId, isCompanyUser } = resData.data;
jobInfo.value = resData.data;
reslove(resData.data);
getCompanyIsAJobs(companyId);
getCompetivetuveness(jobId);
if (isCompanyUser) {
getCompetivetuveness(jobId);
}
// getCompetivetuveness(jobId);
if (latitude && longitude) {
mapCovers.value = [
{
@@ -565,4 +643,100 @@ for i in 0..100
line-height: 90rpx
}
}
.content-card {
background-color: #fff;
border-radius: 8px;
margin: 10px;
padding: 15px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.card-title {
padding-bottom: 10px;
border-bottom: 1px solid #eee;
margin-bottom: 10px;
}
.title {
font-size: 18px;
font-weight: bold;
color: #333;
}
.applicant-list {
display: flex;
flex-direction: column;
gap: 15px;
}
.applicant-item {
padding: 15px;
background-color: #fafafa;
border-radius: 8px;
border: 1px solid #f0f0f0;
}
.item-header {
display: flex;
justify-content: space-between; /* 名字和右侧部分分开 */
align-items: center;
margin-bottom: 10px;
}
.right-header {
display: flex;
align-items: center;
gap: 10px;
}
.name {
font-size: 16px;
font-weight: bold;
max-width: 100px; /* 限制名字的最大宽度,根据你的布局调整 */
overflow: hidden; /* 隐藏超出部分 */
white-space: nowrap; /* 不换行 */
text-overflow: ellipsis; /* 显示省略号 */
}
.matching-degree {
font-size: 14px;
color: #4CAF50;
font-weight: 500;
}
.resume-button {
font-size: 12px;
padding: 5px 10px;
border-radius: 20px;
border: 1px solid #007aff;
color: #007aff;
background-color: transparent;
line-height: 1;
height: auto;
}
.resume-button::after {
border: none;
}
.item-details {
display: flex;
flex-wrap: wrap;
gap: 10px;
}
.detail-text {
font-size: 14px;
color: #666;
/* 确保标签和值在同一行 */
display: flex;
white-space: nowrap;
}
.label {
font-weight: bold;
color: #333;
}
</style>