Files
PC-Light-Forum/component/item-tenement/item-tenement.js
DESKTOP-RQ919RC\Pc 003b5992a5 refactor(components): 使用defineAsyncComponent优化异步组件加载
fix(public.js): 添加getScriptParameter函数并处理请求参数
style(index.html): 移除多余空行和注释
perf(bi.js): 移除冗余ajax方法并优化请求参数处理
docs(sign-in.txt): 调整样式和响应式布局
2025-12-05 19:07:33 +08:00

94 lines
5.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// my-component.js
// 引入全局 Vue 对象(因在 HTML 中通过 script 引入Vue 已挂载到 window
const { defineComponent, ref, defineAsyncComponent } = Vue;
const itemBottom = defineAsyncComponent(() => import(withVer("../item-bottom/item-bottom.js")).then((m) => m.itemBottom));
const itemHead = defineAsyncComponent(() => import(withVer("../item-head/item-head.js")).then((m) => m.itemHead));
// 定义组件(直接使用模板)
export const itemTenement = defineComponent({
name: "item-tenement",
props: {
itemdata: {
type: Object,
default: () => {},
},
page: {
type: String,
default: "",
},
},
setup(props) {
const handleHousing = (ele) => {
const langs = lang;
console.log("langs", langs);
if (ele["distance"]) ele["distance"] = Math.round(ele["distance"] * 10) / 10;
// 这个是将 详情键 替换语言包里的值
let list = ["tenementtype", "rentalduration", "intermediary", "property", "elevator", "sunshinearea", "gender"];
// let list = ["rentalduration", "intermediary", "property", "elevator", "sunshinearea", "gender"];
if (Array.isArray(ele["floor"])) list.push("floor"); // 判断 楼层是否需要 替换值, 因为在求房源里是多个值
let differentNames = {
// 需要替换的 键名
intermediary: "intermediary_text",
};
list.forEach((element) => {
if (ele[element] == -1) {
} else if (ele[element] == 0) ele[differentNames[element] ? differentNames[element] : element] = "不限";
// 当 值为 [0] 时为不限
else ele[differentNames[element] ? differentNames[element] : element] = langs[element][ele[element]];
});
let tabArr = ["gptype", "tenementtype", "elevator", "sunshinearea", "gender"];
let tabList = [];
tabArr.forEach((el) => {
if (ele[el] && ele[el] != -1) tabList.push(ele[el]);
});
ele["tabList"] = tabList;
let location = langs.location; // 遍历替换区域的值 所有房源
if (ele.intermediary == 6) {
if (Array.isArray(ele.rent)) ele.rent = `${ele.rent[0]} ~ ${ele.rent[1]}`;
if (Array.isArray(ele["location"])) {
let arr = [];
ele["location"].forEach((element) => {
arr.push(`${location[Math.trunc(element)]} > ${location[element]}`);
});
ele["location"] = arr;
}
} else {
let pendingData = ele["location"];
ele["location"] = `${location[Math.trunc(pendingData)]} > ${location[pendingData]}`;
}
return ele;
};
let item = ref({ ...props.itemdata });
// console.log("item", item.value);
item.value = handleHousing(item.value);
item.value["url"] = "https://fang.gter.net/detail?id=" + item.value.uniqid;
let sectionn = ref([]);
let tags = ref([]);
if (item.value.type == "tenement") {
const tabList = item.value?.tabList || [];
sectionn.value = ["香港租房", tabList[0]];
tags.value = tabList.slice(1) || [];
}
if (item.value.images?.length > 4) item.value.images = item.value.images.slice(0, 4);
console.log("item.value", item.value);
return { sectionn, tags, item };
},
components: {
itemBottom,
itemHead,
},
template: `<div class="item-box item-tenement"> <item-head :itemdata="item" :page="page"></item-head> <div class="label flexflex" v-if="sectionn?.length || tags?.length"> <img class="item icon" v-if="item.isintermediary == 1" style="width: 94px; cursor: auto;" src="/img/intermediary-icon.png" /> <img class="item icon" v-if="item.verified == 1" style="width: 94px; cursor: auto;" src="/img/attestation-icon.png" /> <div class="item blue" v-for="(item, index) in sectionn" :key="item" style="cursor: auto;">{{ item }}</div> <div class="item" v-for="(item, index) in tags" :key="item" style="cursor: auto;">{{ item }}</div> </div> <a class="title" :href="item.url" target="_blank">{{ item.subject }}</a> <a class="site-box flexacenter" :href="item.url" target="_blank"> <template v-if="item.intermediary == 6"> <div class="site-item flexacenter" v-for="(item, index) in item.location" :key="index"> <img class="site-icon" src="/img/orientation.png"> {{ item }} </div> </template> <div v-else class="site-item flexacenter"> <img class="site-icon" src="/img/orientation.png"> {{ item.location || '' }} </div> </a> <a class="price-section flexacenter" :href="item.url" target="_blank"> <div class="unit">HK$</div> <div class="price">{{ item.rent }}</div> <span class="text">/月</span> <div class="rentalduration">[ 租期{{ item.rentalduration }} ]</div> </a> <a class="picture flexacenter" :href="item.url" target="_blank" v-if="item.images?.length != 0"> <img class="picture-item" v-for="(item, index) in item.images" :key="index" :src="item" alt=""> </a> <item-bottom :itemdata="item" :page="page"></item-bottom></div>`,
});