2 Commits

Author SHA1 Message Date
冯辉
4078f2e543 增加地区选项添加 2026-03-13 11:45:01 +08:00
冯辉
94439fddaa 11 2026-03-12 23:23:18 +08:00
2 changed files with 78 additions and 32 deletions

View File

@@ -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 () => {
try {
// 先获取字典数据
await dictStore.getDictData();
// 再初始化选项数据
educationOptions.value = getTransformChildren('education', '学历要求').options || []; educationOptions.value = getTransformChildren('education', '学历要求').options || [];
experienceOptions.value = getTransformChildren('experience', '工作经验').options || []; experienceOptions.value = getTransformChildren('experience', '工作经验').options || [];
scaleOptions.value = getTransformChildren('scale', '公司规模').options || []; scaleOptions.value = getTransformChildren('scale', '公司规模').options || [];
areaOptions.value = getTransformChildren('area', '地区').options || [];
jobTypeOptions.value = getJobTypeData(); jobTypeOptions.value = getJobTypeData();
} catch (error) {
console.error('获取字典数据失败:', error);
} finally {
loading.value = false;
}
}); });
// 处理选项选择 // 处理选项选择

View File

@@ -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