首页跳转个人房源设置

This commit is contained in:
2023-07-20 12:21:39 +08:00
parent 7d2ac77df4
commit daf15376e9
6 changed files with 116 additions and 50 deletions

View File

@@ -24,7 +24,7 @@
</template> </template>
<script setup> <script setup>
import { reactive ,ref,watchEffect,watch} from 'vue'; import { reactive ,ref,watchEffect,watch,defineExpose} from 'vue';
//props //props
const props = defineProps({ const props = defineProps({
list: { list: {
@@ -84,6 +84,16 @@ let closeBtn=()=>{
closeSeach() closeSeach()
} }
//设置参数
let setCheckData=(data)=>{
console.log(checkList.list)
checkList.list=data
}
defineExpose({
setCheckData
})
</script> </script>
<style scoped> <style scoped>
.seach-history-h { .seach-history-h {

View File

@@ -66,19 +66,22 @@ watchEffect(()=>{
// //
let selectType = ref('') let selectType = ref('')
let selectData = reactive({data:[]}) let selectData = reactive({data:[]})
let nowSelectArea=reactive({data:{}})
//点击选项 //点击选项
let setSelectType = (num,data,item) => { let setSelectType = (num,data,item) => {
if (seachType == 3) { if (seachType == 3) {
if (num === selectType.value) { if (num === selectType.value) {
selectType.value = '' selectType.value = ''
nowSelectArea.data={}
} else { } else {
selectType.value = num selectType.value = num
selectData.data=data selectData.data=data
nowSelectArea.data={id:item.id,name:item.name}
} }
}else if(seachType == 2){ }else if(seachType == 2){
props.checkBtn(item.id,'types') props.checkBtn(item,'types')
}else if(seachType == 1){ }else if(seachType == 1){
props.checkBtn(item.id,'school') props.checkBtn(item,'school')
} }
} }
//取消按钮 //取消按钮
@@ -88,7 +91,7 @@ let closeSeach = () => {
//确认按钮 //确认按钮
let selectSeach = (data) => { let selectSeach = (data) => {
props.checkBtn(data,'location') props.checkBtn(data,'location',JSON.stringify(nowSelectArea.data))
// console.log(data) // console.log(data)
} }

View File

@@ -198,9 +198,9 @@ let setHotSeach=(item)=>{
} }
//点击选项 //点击选项
let checkBtn=(data,type)=>{ let checkBtn=(data,type,areaItem)=>{
console.log(data,type) console.log(data,type,areaItem)
getDataList(type,data) getDataList(type,data,areaItem)
} }

View File

@@ -1,5 +1,5 @@
<template> <template>
<div class="dis-f s-w-100" :style="[routePath === '/seachPage'?'':'border-bottom:1px solid #ebebeb;']"> <div class="dis-f s-w-100" :style="[routePath === '/seachPage' ? '' : 'border-bottom:1px solid #ebebeb;']">
<div class="select-box s-w-50 bor-r"> <div class="select-box s-w-50 bor-r">
<div class="dis-f bor-b-das" :class="{ 'al-item housing-pd': routePath === '/needHousing' }"> <div class="dis-f bor-b-das" :class="{ 'al-item housing-pd': routePath === '/needHousing' }">
<div class="tab-title">{{ routePath === '/needHousing' ? '目标区域' : '地理位置' }}</div> <div class="tab-title">{{ routePath === '/needHousing' ? '目标区域' : '地理位置' }}</div>
@@ -34,7 +34,8 @@
</div> </div>
<div class="hid-box"> <div class="hid-box">
<checkBoxGroup :show="showSelect && selectTabCheck.id !== ''" :selectSeach="selectSeach" <checkBoxGroup :show="showSelect && selectTabCheck.id !== ''" :selectSeach="selectSeach"
:closeSeach="closeSeach" :clearList="clearSelectTabCheck" :list="selectTabCheck.data"> :closeSeach="closeSeach" :clearList="clearSelectTabCheck" :list="selectTabCheck.data"
ref="checkBoxGroupInfo">
</checkBoxGroup> </checkBoxGroup>
</div> </div>
</div> </div>
@@ -127,7 +128,7 @@
</div> </div>
</div> </div>
<div class="dis-f al-item" style="padding:30px 0;"> <div class="dis-f al-item" style="padding:30px 0;">
<div class="tab-title" >{{ routePath === '/needHousing' ? '租金预算' : '租金' }}</div> <div class="tab-title">{{ routePath === '/needHousing' ? '租金预算' : '租金' }}</div>
<div class="dis-f al-item rent-box jus-bet"> <div class="dis-f al-item rent-box jus-bet">
<div class="dis-f al-item"> <div class="dis-f al-item">
<input type="text" class="input" v-model="rentObj.min" @blur="setRent"> <input type="text" class="input" v-model="rentObj.min" @blur="setRent">
@@ -194,10 +195,10 @@
<div class="btm-list" v-if="routePath !== '/seachPage'"> <div class="btm-list" v-if="routePath !== '/seachPage'">
<div class="dis-f al-item"> <div class="dis-f al-item">
<span class="count">{{ count || 0 }}</span> <span class="count">{{ count || 0 }}</span>
{{routePath === '/personHousing'? {{ routePath === '/personHousing' ?
'个人房源':routePath === '/intermediaryHousing'? '个人房源' : routePath === '/intermediaryHousing' ?
'中介房源':routePath === '/needHousing'? '中介房源' : routePath === '/needHousing' ?
'求房源':''}} <span v-show="selectTabCheck.title && selectTabCheck.id"> '求房源' : '' }} <span v-show="selectTabCheck.title && selectTabCheck.id">
&nbsp &nbsp
| |
&nbsp</span> &nbsp</span>
@@ -232,8 +233,8 @@
</template> </template>
<script setup> <script setup>
import { reactive, ref, getCurrentInstance, defineProps, watchEffect, inject, shallowReactive,defineExpose } from 'vue'; import { reactive, ref, getCurrentInstance, defineProps, watchEffect, inject, shallowReactive, defineExpose, nextTick } from 'vue';
import { useRoute } from 'vue-router'; import { useRouter } from 'vue-router';
import checkBoxGroup from "../../components/checkGroup/checkBoxGroup.vue"; import checkBoxGroup from "../../components/checkGroup/checkBoxGroup.vue";
import store from '../../store/index'; import store from '../../store/index';
@@ -242,9 +243,11 @@ import store from '../../store/index';
let configData = reactive({ data: {} }) let configData = reactive({ data: {} })
//监听路由 //监听路由
const route = useRoute() const route = useRouter()
let routePath = ref('') let routePath = ref('')
routePath.value = route.path let routeQuery = reactive({ data: {} })
routePath.value = route.currentRoute.value.path
routeQuery.data = route.currentRoute.value.query
const { proxy } = getCurrentInstance() const { proxy } = getCurrentInstance()
@@ -262,14 +265,14 @@ let listSort = shallowReactive({
{ title: '最新发布', type: 'timestamp' }, { title: '最新发布', type: 'timestamp' },
{ title: '热门', type: 'hotnum' }, { title: '热门', type: 'hotnum' },
{ title: '价格从低到高', type: 'rentasc' }, { title: '价格从低到高', type: 'rentasc' },
{ title: '价格从高到低',type:'rentdesc'} { title: '价格从高到低', type: 'rentdesc' }
], ],
checkType: 'timestamp', checkType: 'timestamp',
check: '最新发布' check: '最新发布'
}) })
//列表总数 //列表总数
const count=inject('count') const count = inject('count')
let list = shallowReactive([{ let list = shallowReactive([{
@@ -294,7 +297,9 @@ let setRegionList = () => {
name: '不限', name: '不限',
id: '' id: ''
}) })
console.log(store.state.seachTypeData) console.log('arr', JSON.stringify(list))
routerQuerySet()
// console.log(store.state.seachTypeData)
} }
//按区域/学校选择的地区 //按区域/学校选择的地区
@@ -393,8 +398,8 @@ let closeSeach = () => {
showSelect.value = false showSelect.value = false
clearSelectTabCheck.value = false clearSelectTabCheck.value = false
} }
//确认按钮 //根据地区id查找地区
let selectSeach = (data = []) => { let seachAreaId = (data) => {
let arr = [] let arr = []
data.map(res => { data.map(res => {
selectTabCheck.data.map(item => { selectTabCheck.data.map(item => {
@@ -403,7 +408,18 @@ let selectSeach = (data = []) => {
} }
}) })
}) })
selectData.data = arr return arr
}
//设置当前地区选项
let checkBoxGroupInfo = ref(null)
let setCheckBoxData = (data) => {
checkBoxGroupInfo.value && checkBoxGroupInfo.value.setCheckData(data)
}
//确认按钮
let selectSeach = (data = []) => {
selectData.data = seachAreaId(data)
showSelect.value = false showSelect.value = false
schoolSelectObj.id = '' schoolSelectObj.id = ''
schoolSelectObj.title = '' schoolSelectObj.title = ''
@@ -513,29 +529,59 @@ let otherCheck = reactive({ list: [] })
//设置其他 //设置其他
let setOtherCheck = (data) => { let setOtherCheck = (data) => {
// data.indexOf('isverified')!==-1?setSeachCondition('isverified',1):setSeachCondition('isverified',0)
// data.indexOf('iselevator')!==-1?setSeachCondition('iselevator',1):setSeachCondition('iselevator',0)
// data.indexOf('issunshinearea')!==-1?setSeachCondition('issunshinearea',1):setSeachCondition('issunshinearea',0)
setSeachCondition('', data) setSeachCondition('', data)
} }
//清除筛选 //清除筛选
let cleanSelect=()=>{ let cleanSelect = () => {
cleanRent() cleanRent()
otherCheck['list']=[] otherCheck['list'] = []
releaseObj.id=0 releaseObj.id = 0
gender.id=0 gender.id = 0
hireDate.id=0 hireDate.id = 0
hireDate.title='' hireDate.title = ''
hireTypeObj.id=0 hireTypeObj.id = 0
hireTypeObj.title='' hireTypeObj.title = ''
hireTypeObj.hireId='不限' hireTypeObj.hireId = '不限'
selectTabCheck.id = ''; selectTabCheck.id = '';
selectTabCheck.title = '不限' selectTabCheck.title = '不限'
selectTabCheck.data = []; selectTabCheck.data = [];
selectData.data = [] selectData.data = []
schoolSelectObj.id = '' schoolSelectObj.id = ''
schoolSelectObj.title = '不限' schoolSelectObj.title = '不限'
// setCheckData([])
}
//根据路由设置参数
let setRouterQuerySet = ref(true)
let routerQuerySet = () => {
console.log(setRouterQuerySet.value)
if (!setRouterQuerySet.value) return
//路由参数设置
if (Object.keys(routeQuery.data).length > 0) {
if (!routeQuery.data || routeQuery.data && !routeQuery.data.data) return
let data = JSON.parse(routeQuery.data.data)
if (routeQuery.data.type === 'school') {
selectPosition.value = 'school'
schoolSelectObj.id = data.id
schoolSelectObj.title = data.title
} else if (routeQuery.data.type === 'types') {
let type = data.id.toString().substring(0, 1)
hireTypeObj.id = data.id
hireTypeObj.title = data.name
hireTypeObj.hireId = type == 1 ? '合租' : type == 2 ? '整租' : '不限'
} else if (routeQuery.data.type === 'location') {
let areaItem = JSON.parse(routeQuery.data.areaItem)
console.log(areaItem)
selectTabCheck.id = areaItem.id;
selectTabCheck.title = areaItem.name
selectTabCheck.data = list[areaItem.id].data;
selectData.data = seachAreaId(data)
console.log(selectData.data)
setCheckBoxData(data)//设置地区选项
}
}
setRouterQuerySet.value = false
} }
watchEffect(() => { watchEffect(() => {
@@ -543,13 +589,10 @@ watchEffect(() => {
if (configData.data) { if (configData.data) {
hireTypeArr[1].hireType = setHireTypeArr(store.state.seachTypeData[2] ? store.state.seachTypeData[2].where[0].data : [], 1) hireTypeArr[1].hireType = setHireTypeArr(store.state.seachTypeData[2] ? store.state.seachTypeData[2].where[0].data : [], 1)
hireTypeArr[2].hireType = setHireTypeArr(store.state.seachTypeData[2] ? store.state.seachTypeData[2].where[1].data : [], 2) hireTypeArr[2].hireType = setHireTypeArr(store.state.seachTypeData[2] ? store.state.seachTypeData[2].where[1].data : [], 2)
setRegionList()//设置地区数据 if (setRouterQuerySet.value) {
setSchoolData()//设置学校数据 setRegionList()//设置地区数据
// list setSchoolData()//设置学校数据
// seachSchoolBtn.data = store.state.seachTypeData[0] ? store.state.seachTypeData[0].where : [] }
// hireType.data = store.state.seachTypeData[2] ? store.state.seachTypeData[2].where[0].data : []
// allHireType.data = store.state.seachTypeData[2] ? store.state.seachTypeData[2].where[1].data : []
// seachArea.data = store.state.seachTypeData[1] ? store.state.seachTypeData[1].where : []
} }
}) })

View File

@@ -356,12 +356,18 @@ let indexWaterfallBoxCheck = (res) => {
} }
//跳转个人房源 //跳转个人房源
let personHouseingInfo = (type, data) => { let personHouseingInfo = (type, data,areaItem) => {
router.push({ router.push({
path: '/personHousing', path: `/personHousing`,
query: { query: {
[type]: data type,
data:JSON.stringify(data),
areaItem
}, },
// params:{
// type,
// data:JSON.stringify(data)
// }
}) })
} }

View File

@@ -136,10 +136,14 @@ let downLoadMore = () => {
//listImg //listImg
onMounted(() => { onMounted(() => {
console.log(router.params) let {type,data}=router.currentRoute.value.query
console.log(router.currentRoute.value.query) let typeData=JSON.parse(data)
if(Object.keys(router.currentRoute.value.query).length>0){ if(Object.keys(data).length>0){
seachSelectData.data={...router.currentRoute.value.query} if(type!=='location'){
seachSelectData.data={[type]:typeData.id}
}else{
seachSelectData.data={[type]:typeData}
}
} }
getDataList(seachSelectData.data) getDataList(seachSelectData.data)
window.addEventListener('scroll', downLoadMore, true); window.addEventListener('scroll', downLoadMore, true);