Compare commits
4 Commits
yitiji
...
cb83a3269e
| Author | SHA1 | Date | |
|---|---|---|---|
| cb83a3269e | |||
| f2f802b73a | |||
|
|
4078f2e543 | ||
|
|
94439fddaa |
@@ -78,6 +78,24 @@
|
|||||||
</radio-group>
|
</radio-group>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
<!-- 地区 -->
|
||||||
|
<view v-if="activeTab === 'area'" class="content-section">
|
||||||
|
<radio-group @change="(e) => handleSelect('area', e)">
|
||||||
|
<label
|
||||||
|
v-for="option in areaOptions"
|
||||||
|
:key="option.value"
|
||||||
|
class="radio-item"
|
||||||
|
:class="{ checked: selectedValues['area'] === String(option.value) }"
|
||||||
|
>
|
||||||
|
<radio
|
||||||
|
:value="String(option.value)"
|
||||||
|
:checked="selectedValues['area'] === String(option.value)"
|
||||||
|
/>
|
||||||
|
<text class="option-label">{{ option.label }}</text>
|
||||||
|
</label>
|
||||||
|
</radio-group>
|
||||||
|
</view>
|
||||||
|
|
||||||
<!-- 岗位类型 -->
|
<!-- 岗位类型 -->
|
||||||
<view v-if="activeTab === 'jobType'" class="content-section">
|
<view v-if="activeTab === 'jobType'" class="content-section">
|
||||||
<radio-group @change="(e) => handleSelect('jobType', e)">
|
<radio-group @change="(e) => handleSelect('jobType', e)">
|
||||||
@@ -108,7 +126,8 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { ref, reactive, onBeforeMount } from 'vue';
|
import { ref, reactive, onBeforeMount } from 'vue';
|
||||||
import useDictStore from '@/stores/useDictStore';
|
import useDictStore from '@/stores/useDictStore';
|
||||||
const { getTransformChildren } = useDictStore();
|
const dictStore = useDictStore();
|
||||||
|
const { getTransformChildren } = dictStore;
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
show: Boolean,
|
show: Boolean,
|
||||||
@@ -131,7 +150,8 @@ const tabs = [
|
|||||||
{ key: 'education', label: '学历要求' },
|
{ key: 'education', label: '学历要求' },
|
||||||
{ key: 'experience', label: '工作经验' },
|
{ key: 'experience', label: '工作经验' },
|
||||||
{ key: 'scale', label: '公司规模' },
|
{ key: 'scale', label: '公司规模' },
|
||||||
{ key: 'jobType', label: '岗位类型' }
|
{ key: 'jobType', label: '岗位类型' },
|
||||||
|
{ key: 'area', label: '地区' }
|
||||||
];
|
];
|
||||||
|
|
||||||
// 当前激活的标签
|
// 当前激活的标签
|
||||||
@@ -142,6 +162,7 @@ const selectedValues = reactive({
|
|||||||
education: '',
|
education: '',
|
||||||
experience: '',
|
experience: '',
|
||||||
scale: '',
|
scale: '',
|
||||||
|
area: '',
|
||||||
jobType: ''
|
jobType: ''
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -149,14 +170,28 @@ const selectedValues = reactive({
|
|||||||
const educationOptions = ref([]);
|
const educationOptions = ref([]);
|
||||||
const experienceOptions = ref([]);
|
const experienceOptions = ref([]);
|
||||||
const scaleOptions = ref([]);
|
const scaleOptions = ref([]);
|
||||||
|
const areaOptions = ref([]);
|
||||||
const jobTypeOptions = ref([]);
|
const jobTypeOptions = ref([]);
|
||||||
|
|
||||||
|
// 加载状态
|
||||||
|
const loading = ref(true);
|
||||||
|
|
||||||
// 初始化获取数据
|
// 初始化获取数据
|
||||||
onBeforeMount(() => {
|
onBeforeMount(async () => {
|
||||||
educationOptions.value = getTransformChildren('education', '学历要求').options || [];
|
try {
|
||||||
experienceOptions.value = getTransformChildren('experience', '工作经验').options || [];
|
// 先获取字典数据
|
||||||
scaleOptions.value = getTransformChildren('scale', '公司规模').options || [];
|
await dictStore.getDictData();
|
||||||
jobTypeOptions.value = getJobTypeData();
|
// 再初始化选项数据
|
||||||
|
educationOptions.value = getTransformChildren('education', '学历要求').options || [];
|
||||||
|
experienceOptions.value = getTransformChildren('experience', '工作经验').options || [];
|
||||||
|
scaleOptions.value = getTransformChildren('scale', '公司规模').options || [];
|
||||||
|
areaOptions.value = getTransformChildren('area', '地区').options || [];
|
||||||
|
jobTypeOptions.value = getJobTypeData();
|
||||||
|
} catch (error) {
|
||||||
|
console.error('获取字典数据失败:', error);
|
||||||
|
} finally {
|
||||||
|
loading.value = false;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// 处理选项选择
|
// 处理选项选择
|
||||||
|
|||||||
@@ -87,12 +87,13 @@
|
|||||||
<view class="cards" v-if="fairList.length">
|
<view class="cards" v-if="fairList.length">
|
||||||
<view class="card press-button" v-for="(item, index) in fairList" :key="index"
|
<view class="card press-button" v-for="(item, index) in fairList" :key="index"
|
||||||
@click="goDetail(item.jobFairId)">
|
@click="goDetail(item.jobFairId)">
|
||||||
|
<view class="center-date"
|
||||||
|
:style="{ color: getTimeStatus(item.jobFairStartTime, item.jobFairEndTime).color,borderColor: getTimeStatus(item.jobFairStartTime, item.jobFairEndTime).color }">
|
||||||
|
{{ getTimeStatus(item.jobFairStartTime, item.jobFairEndTime).statusText }}
|
||||||
|
</view>
|
||||||
<view class="card-title">
|
<view class="card-title">
|
||||||
{{ item.jobFairTitle }}
|
{{ item.jobFairTitle }}
|
||||||
<view class="center-date"
|
|
||||||
:style="{ color: getTimeStatus(item.jobFairStartTime, item.jobFairEndTime).color,borderColor: getTimeStatus(item.jobFairStartTime, item.jobFairEndTime).color }">
|
|
||||||
{{ getTimeStatus(item.jobFairStartTime, item.jobFairEndTime).statusText }}
|
|
||||||
</view>
|
|
||||||
</view>
|
</view>
|
||||||
<view class="card-row">
|
<view class="card-row">
|
||||||
<text class="">{{ item.jobFairAddress }}</text>
|
<text class="">{{ item.jobFairAddress }}</text>
|
||||||
@@ -514,7 +515,6 @@
|
|||||||
} else {
|
} else {
|
||||||
$api.msg('请先登录');
|
$api.msg('请先登录');
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getFair(type = "add") {
|
function getFair(type = "add") {
|
||||||
@@ -1012,10 +1012,21 @@
|
|||||||
|
|
||||||
.cards .card {
|
.cards .card {
|
||||||
margin-top: 28rpx;
|
margin-top: 28rpx;
|
||||||
padding: 32rpx;
|
padding: 45rpx 32rpx 32rpx 32rpx;
|
||||||
background: linear-gradient(to bottom, #e3efff 0%, #fbfdff 100%);
|
background: linear-gradient(to bottom, #e3efff 0%, #fbfdff 100%);
|
||||||
box-shadow: 0rpx 0rpx 8rpx 0rpx rgba(0, 0, 0, 0.04);
|
box-shadow: 0rpx 0rpx 8rpx 0rpx rgba(0, 0, 0, 0.04);
|
||||||
border-radius: 20rpx;
|
border-radius: 20rpx;
|
||||||
|
position: relative;
|
||||||
|
.center-date {
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 24rpx;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
border: 1rpx solid;
|
||||||
|
padding: 5rpx 10rpx;
|
||||||
|
margin-left: 10rpx;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.cards .card-title {
|
.cards .card-title {
|
||||||
@@ -1041,16 +1052,7 @@
|
|||||||
transform: translate(-50%, -50%);
|
transform: translate(-50%, -50%);
|
||||||
}
|
}
|
||||||
|
|
||||||
.center-date {
|
|
||||||
font-weight: 400;
|
|
||||||
font-size: 24rpx;
|
|
||||||
// position: absolute;
|
|
||||||
// right: 0;
|
|
||||||
// top: 0;
|
|
||||||
border: 1rpx solid;
|
|
||||||
padding: 5rpx 10rpx;
|
|
||||||
margin-left: 10rpx;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.cards .card-row {
|
.cards .card-row {
|
||||||
|
|||||||
@@ -74,6 +74,17 @@ const useDictStore = defineStore("dict", () => {
|
|||||||
getIndustryDict() // 获取行业
|
getIndustryDict() // 获取行业
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error fetching dictionary data:', error);
|
console.error('Error fetching dictionary data:', error);
|
||||||
|
// 确保即使出错也能返回空数组
|
||||||
|
if (!dictType && !dictName) {
|
||||||
|
state.education = [];
|
||||||
|
state.experience = [];
|
||||||
|
state.area = [];
|
||||||
|
state.scale = [];
|
||||||
|
state.sex = [];
|
||||||
|
state.affiliation = [];
|
||||||
|
state.nature = [];
|
||||||
|
state.noticeType = [];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -129,7 +140,7 @@ const useDictStore = defineStore("dict", () => {
|
|||||||
return {
|
return {
|
||||||
label: title,
|
label: title,
|
||||||
key: key || dictType,
|
key: key || dictType,
|
||||||
options: state[dictType],
|
options: state[dictType] || [],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null
|
return null
|
||||||
|
|||||||
Reference in New Issue
Block a user