311 lines
11 KiB
JavaScript
311 lines
11 KiB
JavaScript
"use strict";
|
|
const common_vendor = require("../../common/vendor.js");
|
|
const api_index = require("../../api/index.js");
|
|
const utils_config = require("../../utils/config.js");
|
|
if (!Array) {
|
|
const _easycom_nav_bar_1 = common_vendor.resolveComponent("nav-bar");
|
|
const _easycom_service_card_1 = common_vendor.resolveComponent("service-card");
|
|
const _easycom_section_header_1 = common_vendor.resolveComponent("section-header");
|
|
const _easycom_case_card_1 = common_vendor.resolveComponent("case-card");
|
|
(_easycom_nav_bar_1 + _easycom_service_card_1 + _easycom_section_header_1 + _easycom_case_card_1)();
|
|
}
|
|
const _easycom_nav_bar = () => "../../components/nav-bar/nav-bar.js";
|
|
const _easycom_service_card = () => "../../components/service-card/service-card.js";
|
|
const _easycom_section_header = () => "../../components/section-header/section-header.js";
|
|
const _easycom_case_card = () => "../../components/case-card/case-card.js";
|
|
if (!Math) {
|
|
(_easycom_nav_bar + _easycom_service_card + _easycom_section_header + _easycom_case_card)();
|
|
}
|
|
class BannerItem extends UTS.UTSType {
|
|
static get$UTSMetadata$() {
|
|
return {
|
|
kind: 2,
|
|
get fields() {
|
|
return {
|
|
id: { type: String, optional: false },
|
|
image: { type: String, optional: false },
|
|
title: { type: String, optional: false },
|
|
link: { type: String, optional: false }
|
|
};
|
|
},
|
|
name: "BannerItem"
|
|
};
|
|
}
|
|
constructor(options, metadata = BannerItem.get$UTSMetadata$(), isJSONParse = false) {
|
|
super();
|
|
this.__props__ = UTS.UTSType.initProps(options, metadata, isJSONParse);
|
|
this.id = this.__props__.id;
|
|
this.image = this.__props__.image;
|
|
this.title = this.__props__.title;
|
|
this.link = this.__props__.link;
|
|
delete this.__props__;
|
|
}
|
|
}
|
|
class CaseItem extends UTS.UTSType {
|
|
static get$UTSMetadata$() {
|
|
return {
|
|
kind: 2,
|
|
get fields() {
|
|
return {
|
|
id: { type: String, optional: false },
|
|
title: { type: String, optional: false },
|
|
category: { type: String, optional: false },
|
|
categoryName: { type: String, optional: false },
|
|
coverImage: { type: String, optional: false },
|
|
material: { type: String, optional: false },
|
|
duration: { type: String, optional: false },
|
|
price: { type: String, optional: false },
|
|
views: { type: Number, optional: false },
|
|
likes: { type: Number, optional: false }
|
|
};
|
|
},
|
|
name: "CaseItem"
|
|
};
|
|
}
|
|
constructor(options, metadata = CaseItem.get$UTSMetadata$(), isJSONParse = false) {
|
|
super();
|
|
this.__props__ = UTS.UTSType.initProps(options, metadata, isJSONParse);
|
|
this.id = this.__props__.id;
|
|
this.title = this.__props__.title;
|
|
this.category = this.__props__.category;
|
|
this.categoryName = this.__props__.categoryName;
|
|
this.coverImage = this.__props__.coverImage;
|
|
this.material = this.__props__.material;
|
|
this.duration = this.__props__.duration;
|
|
this.price = this.__props__.price;
|
|
this.views = this.__props__.views;
|
|
this.likes = this.__props__.likes;
|
|
delete this.__props__;
|
|
}
|
|
}
|
|
class ServiceType extends UTS.UTSType {
|
|
static get$UTSMetadata$() {
|
|
return {
|
|
kind: 2,
|
|
get fields() {
|
|
return {
|
|
id: { type: String, optional: false },
|
|
name: { type: String, optional: false },
|
|
icon: { type: String, optional: false }
|
|
};
|
|
},
|
|
name: "ServiceType"
|
|
};
|
|
}
|
|
constructor(options, metadata = ServiceType.get$UTSMetadata$(), isJSONParse = false) {
|
|
super();
|
|
this.__props__ = UTS.UTSType.initProps(options, metadata, isJSONParse);
|
|
this.id = this.__props__.id;
|
|
this.name = this.__props__.name;
|
|
this.icon = this.__props__.icon;
|
|
delete this.__props__;
|
|
}
|
|
}
|
|
class AdvantageItem extends UTS.UTSType {
|
|
static get$UTSMetadata$() {
|
|
return {
|
|
kind: 2,
|
|
get fields() {
|
|
return {
|
|
icon: { type: String, optional: false },
|
|
title: { type: String, optional: false },
|
|
desc: { type: String, optional: false }
|
|
};
|
|
},
|
|
name: "AdvantageItem"
|
|
};
|
|
}
|
|
constructor(options, metadata = AdvantageItem.get$UTSMetadata$(), isJSONParse = false) {
|
|
super();
|
|
this.__props__ = UTS.UTSType.initProps(options, metadata, isJSONParse);
|
|
this.icon = this.__props__.icon;
|
|
this.title = this.__props__.title;
|
|
this.desc = this.__props__.desc;
|
|
delete this.__props__;
|
|
}
|
|
}
|
|
const _sfc_main = /* @__PURE__ */ common_vendor.defineComponent({
|
|
__name: "index",
|
|
setup(__props) {
|
|
const bannerList = common_vendor.ref([]);
|
|
const serviceTypes = common_vendor.ref([]);
|
|
const hotCases = common_vendor.ref([]);
|
|
const advantages = common_vendor.ref([
|
|
new AdvantageItem({ icon: "👨🔧", title: "专业团队", desc: "10年+经验" }),
|
|
new AdvantageItem({ icon: "✅", title: "品质保证", desc: "质保2年" }),
|
|
new AdvantageItem({ icon: "🚗", title: "上门服务", desc: "免费评估" }),
|
|
new AdvantageItem({ icon: "💰", title: "价格透明", desc: "无隐形消费" })
|
|
]);
|
|
const fetchServiceTypes = () => {
|
|
return common_vendor.__awaiter(this, void 0, void 0, function* () {
|
|
try {
|
|
const res = yield api_index.getActiveServices();
|
|
if (res.code === 0 && res.data != null) {
|
|
const data = res.data;
|
|
const list = data["list"] || [];
|
|
serviceTypes.value = list.map((item) => {
|
|
return new ServiceType({
|
|
id: String(item["id"]),
|
|
name: item["name"],
|
|
icon: item["icon"] || "/static/icons/default.png"
|
|
});
|
|
});
|
|
}
|
|
} catch (e) {
|
|
common_vendor.index.__f__("error", "at pages/index/index.uvue:165", "获取服务类型失败", e);
|
|
serviceTypes.value = [
|
|
new ServiceType({ id: "repair", name: "局部修复", icon: "/static/icons/repair.png" }),
|
|
new ServiceType({ id: "refurbish", name: "整体翻新", icon: "/static/icons/refurbish.png" })
|
|
];
|
|
}
|
|
});
|
|
};
|
|
const fetchBanners = () => {
|
|
return common_vendor.__awaiter(this, void 0, void 0, function* () {
|
|
try {
|
|
const res = yield api_index.getBanners();
|
|
if (res.code === 0 && res.data != null) {
|
|
const data = res.data;
|
|
bannerList.value = data.map((item) => {
|
|
return new BannerItem({
|
|
id: item["id"],
|
|
image: item["image"],
|
|
title: item["title"],
|
|
link: item["link"]
|
|
});
|
|
});
|
|
}
|
|
} catch (e) {
|
|
common_vendor.index.__f__("error", "at pages/index/index.uvue:190", "获取轮播图失败", e);
|
|
}
|
|
});
|
|
};
|
|
const fetchHotCases = () => {
|
|
return common_vendor.__awaiter(this, void 0, void 0, function* () {
|
|
try {
|
|
const res = yield api_index.getHotCases();
|
|
if (res.code == 0 && res.data != null) {
|
|
const data = res.data;
|
|
const list = data["list"] || [];
|
|
hotCases.value = list.map((item) => {
|
|
const images = item["images"] || [];
|
|
const afterImages = item["afterImages"] || [];
|
|
const beforeImages = item["beforeImages"] || [];
|
|
const coverImage = images.length > 0 ? images[0] : afterImages.length > 0 ? afterImages[0] : beforeImages.length > 0 ? beforeImages[0] : "";
|
|
return new CaseItem({
|
|
id: String(item["id"]),
|
|
title: item["title"],
|
|
category: item["serviceType"] || "",
|
|
categoryName: utils_config.getServiceTypeName(item["serviceType"]),
|
|
coverImage,
|
|
material: item["materials"] || "暂无",
|
|
duration: (item["duration"] || 0) + "天",
|
|
price: item["price"] != null ? "¥" + item["price"] : "面议",
|
|
views: item["views"] || 0,
|
|
likes: item["likes"] || 0
|
|
});
|
|
});
|
|
}
|
|
} catch (e) {
|
|
common_vendor.index.__f__("error", "at pages/index/index.uvue:224", "获取热门案例失败", e);
|
|
}
|
|
});
|
|
};
|
|
const handleBannerClick = (item) => {
|
|
if (item.link != "") {
|
|
common_vendor.index.navigateTo({
|
|
url: item.link,
|
|
fail: () => {
|
|
common_vendor.index.switchTab({
|
|
url: item.link
|
|
});
|
|
}
|
|
});
|
|
}
|
|
};
|
|
const handleServiceClick = (id) => {
|
|
common_vendor.index.switchTab({
|
|
url: "/pages/service/index"
|
|
});
|
|
};
|
|
const goToCaseList = () => {
|
|
common_vendor.index.switchTab({
|
|
url: "/pages/cases/list"
|
|
});
|
|
};
|
|
const goToCaseDetail = (id) => {
|
|
common_vendor.index.navigateTo({
|
|
url: `/pages/cases/detail?id=${id}`
|
|
});
|
|
};
|
|
const goToBooking = () => {
|
|
common_vendor.index.navigateTo({
|
|
url: "/pages/booking/index"
|
|
});
|
|
};
|
|
common_vendor.onLoad(() => {
|
|
fetchServiceTypes();
|
|
fetchBanners();
|
|
fetchHotCases();
|
|
});
|
|
return (_ctx, _cache) => {
|
|
"raw js";
|
|
const __returned__ = {
|
|
a: common_vendor.p({
|
|
title: "优艺家沙发翻新"
|
|
}),
|
|
b: common_vendor.f(common_vendor.unref(bannerList), (item, k0, i0) => {
|
|
return {
|
|
a: item.image,
|
|
b: common_vendor.o(($event) => {
|
|
return handleBannerClick(item);
|
|
}, item.id),
|
|
c: item.id
|
|
};
|
|
}),
|
|
c: common_vendor.f(common_vendor.unref(serviceTypes), (item, k0, i0) => {
|
|
return {
|
|
a: item.id,
|
|
b: item.id,
|
|
c: common_vendor.o(handleServiceClick, item.id),
|
|
d: "0a3a932a-1-" + i0,
|
|
e: common_vendor.p({
|
|
id: item.id,
|
|
name: item.name,
|
|
icon: item.icon
|
|
})
|
|
};
|
|
}),
|
|
d: common_vendor.f(common_vendor.unref(advantages), (item, k0, i0) => {
|
|
return {
|
|
a: common_vendor.t(item.icon),
|
|
b: common_vendor.t(item.title),
|
|
c: common_vendor.t(item.desc),
|
|
d: item.title
|
|
};
|
|
}),
|
|
e: common_vendor.o(goToCaseList),
|
|
f: common_vendor.p({
|
|
title: "热门案例",
|
|
showMore: true
|
|
}),
|
|
g: common_vendor.f(common_vendor.unref(hotCases), (item, k0, i0) => {
|
|
return {
|
|
a: item.id,
|
|
b: common_vendor.o(goToCaseDetail, item.id),
|
|
c: "0a3a932a-3-" + i0,
|
|
d: common_vendor.p({
|
|
caseData: item
|
|
})
|
|
};
|
|
}),
|
|
h: common_vendor.o(goToBooking),
|
|
i: common_vendor.sei(common_vendor.gei(_ctx, ""), "view")
|
|
};
|
|
return __returned__;
|
|
};
|
|
}
|
|
});
|
|
wx.createPage(_sfc_main);
|
|
//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/index/index.js.map
|