=【首页】岗位筛选 - 新增按薪资筛选条件(minSalary/maxSalary)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -53,6 +53,24 @@
|
||||
</radio-group>
|
||||
</view>
|
||||
|
||||
<!-- 薪资 -->
|
||||
<view v-if="activeTab === 'salary'" class="content-section">
|
||||
<radio-group @change="(e) => handleSelect('salary', e)">
|
||||
<label
|
||||
v-for="option in salaryOptions"
|
||||
:key="option.value"
|
||||
class="radio-item"
|
||||
:class="{ checked: selectedValues['salary'] === String(option.value) }"
|
||||
>
|
||||
<radio
|
||||
:value="String(option.value)"
|
||||
:checked="selectedValues['salary'] === String(option.value)"
|
||||
/>
|
||||
<text class="option-label">{{ option.label }}</text>
|
||||
</label>
|
||||
</radio-group>
|
||||
</view>
|
||||
|
||||
<!-- 公司规模 -->
|
||||
<view v-if="activeTab === 'scale'" class="content-section">
|
||||
<radio-group @change="(e) => handleSelect('scale', e)">
|
||||
@@ -143,6 +161,7 @@ const getJobTypeData = () => {
|
||||
const tabs = [
|
||||
{ key: 'education', label: '学历要求' },
|
||||
{ key: 'experience', label: '工作经验' },
|
||||
{ key: 'salary', label: '薪资' },
|
||||
{ key: 'scale', label: '公司规模' },
|
||||
{ key: 'jobType', label: '岗位类型' },
|
||||
{ key: 'area', label: '地区' }
|
||||
@@ -155,6 +174,7 @@ const activeTab = ref('education');
|
||||
const selectedValues = reactive({
|
||||
education: '',
|
||||
experience: '',
|
||||
salary: '',
|
||||
scale: '',
|
||||
area: '',
|
||||
jobType: ''
|
||||
@@ -167,6 +187,16 @@ const scaleOptions = ref([]);
|
||||
const areaOptions = ref([]);
|
||||
const jobTypeOptions = ref([]);
|
||||
|
||||
// 薪资区间数据(单位:元/月),min/max 为空表示该侧不设限
|
||||
const salaryOptions = ref([
|
||||
{ label: '3K以下', value: '0-3000', min: '', max: 3000 },
|
||||
{ label: '3-5K', value: '3000-5000', min: 3000, max: 5000 },
|
||||
{ label: '5-10K', value: '5000-10000', min: 5000, max: 10000 },
|
||||
{ label: '10-20K', value: '10000-20000', min: 10000, max: 20000 },
|
||||
{ label: '20-50K', value: '20000-50000', min: 20000, max: 50000 },
|
||||
{ label: '50K以上', value: '50000-0', min: 50000, max: '' },
|
||||
]);
|
||||
|
||||
// 加载状态
|
||||
const loading = ref(true);
|
||||
|
||||
@@ -202,8 +232,23 @@ const handleClear = () => {
|
||||
|
||||
// 确认筛选
|
||||
const handleConfirm = () => {
|
||||
console.log('selectedValues:', selectedValues);
|
||||
emit('confirm', selectedValues);
|
||||
const payload = { ...selectedValues };
|
||||
// 将选中的薪资区间转换为 minSalary / maxSalary 参数
|
||||
// 始终带上 minSalary / maxSalary(含空值),便于父组件在清除时移除旧值
|
||||
let minSalary = '';
|
||||
let maxSalary = '';
|
||||
if (payload.salary) {
|
||||
const selected = salaryOptions.value.find((item) => item.value === payload.salary);
|
||||
if (selected) {
|
||||
minSalary = selected.min;
|
||||
maxSalary = selected.max;
|
||||
}
|
||||
}
|
||||
payload.minSalary = minSalary;
|
||||
payload.maxSalary = maxSalary;
|
||||
delete payload.salary;
|
||||
console.log('selectedValues:', payload);
|
||||
emit('confirm', payload);
|
||||
handleClose();
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user