vear:地区改为多选

This commit is contained in:
2026-07-15 20:36:23 +08:00
parent c7be2d1dcb
commit de94f2d998

View File

@@ -98,22 +98,21 @@
</radio-group>
</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>
<label
v-for="option in areaOptions"
:key="option.value"
class="radio-item"
:class="{ checked: selectedAreaValues.includes(String(option.value)) }"
@click="toggleArea(String(option.value))"
>
<checkbox
:value="String(option.value)"
:checked="selectedAreaValues.includes(String(option.value))"
/>
<text class="option-label">{{ option.label }}</text>
</label>
</view>
<!-- 底部按钮 -->
<view class="filter-footer">
@@ -169,6 +168,9 @@ const selectedValues = reactive({
area: ''
});
// 地区多选值(数组)
const selectedAreaValues = ref([]);
// 从字典获取的选项数据
const educationOptions = ref([]);
const experienceOptions = ref([]);
@@ -202,17 +204,30 @@ const handleSelect = (key, e) => {
selectedValues[key] = e.detail.value;
};
// 切换地区多选
const toggleArea = (value) => {
const index = selectedAreaValues.value.indexOf(value);
if (index === -1) {
selectedAreaValues.value.push(value);
} else {
selectedAreaValues.value.splice(index, 1);
}
};
// 清除所有选择
const handleClear = () => {
Object.keys(selectedValues).forEach((key) => {
selectedValues[key] = '';
});
selectedAreaValues.value = [];
};
// 确认筛选
const handleConfirm = () => {
console.log('selectedValues:', selectedValues);
emit('confirm', selectedValues);
const result = { ...selectedValues };
result.area = selectedAreaValues.value.join(',');
console.log('selectedValues:', result);
emit('confirm', result);
handleClose();
};