首页/ mobileweb/ 小草租房优选/ 代码预览

💻 代码预览 · 小草租房优选

mw_house · 上传者 小草网络
← 返回详情
xiaocao-rent/app.js · 约 6034 字符
1// 小草租房优选 · 交互逻辑
2let currentId = parseInt(location.search.match(/id=(\d+)/)?.[1] || '1');
3let favs = JSON.parse(localStorage.getItem('xc_favs') || '[]');
4
5function toggleFav(id){
6  const i = favs.indexOf(id);
7  if(i>=0) favs.splice(i,1); else favs.push(id);
8  localStorage.setItem('xc_favs', JSON.stringify(favs));
9  renderIndex(); renderList(); renderFav();
10}
11function houseCard(h){
12  const isFav = favs.includes(h.id);
13  return `<div class="house-card" onclick="location.href='detail.html?id=${h.id}'">
14    <div class="hc-img">${h.emoji}</div>
15    <div class="hc-info">
16      <div class="hc-title">${h.title}</div>
17      <div class="hc-price">¥${h.price}<small>/月</small></div>
18      <div class="hc-desc">${h.type} · ${h.area} · ${h.orientation}向</div>
19      <div class="hc-tags">${h.tags.map(t=>`<span class="tag">${t}</span>`).join('')}</div>
20      <div class="hc-meta"><span>${h.city} · ${h.floor}</span><span class="hc-fav" onclick="event.stopPropagation();toggleFav(${h.id})">${isFav?'❤️':'🤍'}</span></div>
21    </div>
22  </div>`;
23}
24
25// 首页
26function renderIndex(){
27  document.getElementById('city-bar').innerHTML=CITIES.map((c,i)=>`<a class="${i===0?'active':''}" onclick="alert('切换到${c}')">${c}</a>`).join('');
28  document.getElementById('house-list').innerHTML=HOUSES.slice(0,4).map(houseCard).join('');
29}
30
31// 列表
32let filter='全部';
33function renderList(){
34  let houses=HOUSES;
35  if(filter==='整租') houses=houses.filter(h=>h.type.includes('整租'));
36  else if(filter==='合租') houses=houses.filter(h=>h.type.includes('合租'));
37  else if(filter==='1000以下') houses=houses.filter(h=>h.price<1000);
38  else if(filter==='1000-3000') houses=houses.filter(h=>h.price>=1000&&h.price<=3000);
39  document.getElementById('house-list').innerHTML=houses.map(houseCard).join('');
40}
41function setFilter(el,f){ filter=f;
42  document.querySelectorAll('.fb-item').forEach(x=>x.classList.remove('active'));
43  el.classList.add('active'); renderList();
44}
45
46// 详情
47function renderDetail(){
48  const h=HOUSES.find(x=>x.id===currentId);
49  if(!h) return;
50  currentId=h.id;
51  document.getElementById('fav-icon').textContent=favs.includes(h.id)?'❤️':'🤍';
52  document.getElementById('detail-body').innerHTML=`
53    <div class="detail-img"><span class="di-badge badge ${h.hot?'badge-hot':h.new?'badge-new':'badge-rec'}">${h.hot?'🔥热销':h.new?'🆕新房':'⭐精选'}</span>${h.emoji}</div>
54    <div class="detail-price">
55      <div class="dp-price">¥${h.price}<small>/月</small></div>
56      <div class="dp-desc">${h.title}</div>
57      <div class="dp-meta"><span>${h.type}</span><span>${h.area}</span><span>${h.orientation}向</span><span>${h.floor}</span></div>
58    </div>
59    <div class="section-title">📍 小区位置</div>
60    <div class="card" style="font-size:13px;color:#666;line-height:1.8">${h.city} · ${h.desc}</div>
61    <div class="section-title">🛋️ 房屋配套</div>
62    <div class="facility-grid">${FACILITIES.map(f=>`<div class="facility-item"><div class="fi-icon">${f.icon}</div><div class="fi-name">${f.name}</div></div>`).join('')}</div>
63    <div class="section-title">📋 房源信息</div>
64    <div class="card" style="font-size:13px;line-height:2">
65      <div style="display:flex;justify-content:space-between"><span style="color:#999">付款方式</span><span>押一付三</span></div>
66      <div style="display:flex;justify-content:space-between"><span style="color:#999">看房时间</span><span>随时可看</span></div>
67      <div style="display:flex;justify-content:space-between"><span style="color:#999">入住时间</span><span>随时入住</span></div>
68      <div style="display:flex;justify-content:space-between"><span style="color:#999">中介费</span><span style="color:var(--primary)">会员免收</span></div>
69    </div>`;
70}
71function toggleFavDetail(){ toggleFav(currentId); document.getElementById('fav-icon').textContent=favs.includes(currentId)?'❤️':'🤍'; }
72
73// 预约
74function renderBook(){
75  const h=HOUSES.find(x=>x.id===currentId)||HOUSES[0];
76  currentId=h.id;
77  document.getElementById('book-house').innerHTML=`<div class="house-card"><div class="hc-img">${h.emoji}</div><div class="hc-info"><div class="hc-title">${h.title}</div><div class="hc-price">¥${h.price}<small>/月</small></div><div class="hc-desc">${h.type} · ${h.area} · ${h.city}</div></div></div>`;
78}
79function selectTime(el){
80  document.querySelectorAll('#time-chips .chip').forEach(c=>c.classList.remove('active'));
81  el.classList.add('active');
82}
83function submitBook(){
84  alert('✅ 预约成功!\n\n经纪人将在30分钟内与您电话确认\n请保持电话畅通~');
85  location.href='fav.html';
86}
87
88// 收藏
89function renderFav(){
90  const favHouses=HOUSES.filter(h=>favs.includes(h.id));
91  document.getElementById('fav-count').textContent=favHouses.length+'套';
92  document.getElementById('fav-list').innerHTML=favHouses.length
93    ? favHouses.map(houseCard).join('')
94    : '<div class="fav-empty"><div class="eicon">⭐</div><div>还没有收藏房源,去<a href="list.html" style="color:var(--primary)">找房</a>看看吧~</div></div>';
95  document.getElementById('appoint-list').innerHTML=APPOINTMENTS.map(a=>`
96    <div class="record-item">
97      <div class="ri-img">${a.emoji}</div>
98      <div class="ri-info"><div class="ri-title">${a.title}</div><div class="ri-time">${a.time}</div></div>
99      <div class="ri-status" style="color:${a.status==='已完成'?'var(--green)':a.status==='待确认'?'var(--gold)':'var(--blue)'}">${a.status}</div>
100    </div>`).join('');
101}
102
103// 我的
104function renderMine(){
105  document.getElementById('p-name').textContent=USER.name;
106  document.getElementById('p-level').textContent=USER.level;
107  document.getElementById('p-favs').textContent=favs.length||USER.favs;
108  document.getElementById('p-appointments').textContent=USER.appointments;
109  document.getElementById('p-orders').textContent=USER.orders;
110}
111