"use strict"; const common_vendor = require("../../common/vendor.js"); const pages_mixins_pullRefreshMixin = require("../mixins/pullRefreshMixin.js"); const _sfc_main = { mixins: [pages_mixins_pullRefreshMixin.pullRefreshMixin], data() { return { statusBarHeight: 0, navBarHeight: 0, // px navBarHeightRpx: 0, // rpx fromRecycle: false, address: "", selectedAddress: null, selectedTime: "", agreed: false, selectedItems: [], showTimePicker: false, currentDateTab: 0, dateTabs: [], // 动态生成 timeSlots: ["11:00~13:00", "13:00~15:00", "15:00~17:00"], selectedTimeSlot: 0, steps: [], // 改为空数组,由接口获取 showAllItems: false, addressId: "" }; }, onShow() { common_vendor.index.__f__("log", "at pages/subcomponent/pickup.vue:171", "当前选中的地址:", this.selectedAddress); if (this.selectedAddress) { this.address = this.selectedAddress.address; this.addressId = this.selectedAddress.id; this.$forceUpdate(); } }, onLoad(options) { this.fromRecycle = options.fromRecycle === "true"; if (this.fromRecycle && options.items) { try { this.selectedItems = JSON.parse(decodeURIComponent(options.items)); } catch (e) { common_vendor.index.__f__("error", "at pages/subcomponent/pickup.vue:189", "解析衣物信息失败:", e); } } common_vendor.index.$on("addressSelected", (address) => { this.selectedAddress = address; this.address = address.address; this.addressId = address.id; if (address.addressDetails) this.selectedAddress.addressDetails = address.addressDetails; this.$forceUpdate(); }); common_vendor.index.$on("clearRecycleData", () => { common_vendor.index.$emit("clearRecycleOrderData"); }); const sysInfo = common_vendor.index.getSystemInfoSync(); this.statusBarHeight = sysInfo.statusBarHeight; let navBarHeight = 44; try { const menuButtonInfo = common_vendor.index.getMenuButtonBoundingClientRect(); navBarHeight = menuButtonInfo.bottom + menuButtonInfo.top - sysInfo.statusBarHeight; } catch (e) { } this.navBarHeight = navBarHeight; this.navBarHeightRpx = Math.round(navBarHeight * 750 / sysInfo.windowWidth); this.getAddressList(); this.dateTabs = this.generateDateTabs(); this.getAreaList(); }, onUnload() { common_vendor.index.$off("addressSelected"); common_vendor.index.$off("clearRecycleData"); }, computed: { totalCount() { return this.selectedItems.reduce((sum, item) => sum + item.quantity, 0); }, totalPriceRange() { if (this.selectedItems.length === 0) return "0-0"; const total = this.selectedItems.reduce((sum, item) => sum + item.unitPrice * item.quantity, 0); return `${(total * 0.92).toFixed(2)}~${(total * 1.1).toFixed(2)}`; }, canSubmit() { return this.agreed && this.selectedItems.length > 0 && this.selectedTime && this.displayAddress; }, displayAddress() { if (this.selectedAddress) { return (this.selectedAddress.address || "") + (this.selectedAddress.addressDetails ? " " + this.selectedAddress.addressDetails : ""); } return ""; } }, methods: { async onRefresh() { await new Promise((resolve) => setTimeout(resolve, 1e3)); common_vendor.index.stopPullRefresh(); }, goBack() { common_vendor.index.navigateBack(); }, showMoreMenu() { common_vendor.index.showModal({ title: "更多", content: "这里可以放更多操作" }); }, showScan() { common_vendor.index.showModal({ title: "扫码", content: "这里可以实现扫码功能" }); }, selectAddress() { common_vendor.index.navigateTo({ url: "/pages/subcomponent/select?mode=select" }); }, openTimePicker() { this.showTimePicker = true; }, closeTimePicker() { this.showTimePicker = false; }, selectDateTab(index) { this.currentDateTab = index; }, selectTimeSlot(index) { this.selectedTimeSlot = index; }, confirmTime() { const tab = this.dateTabs[this.currentDateTab]; const dateObj = tab.date; const timeStr = this.timeSlots[this.selectedTimeSlot]; const startTime = timeStr.split("~")[0]; const yyyy = dateObj.getFullYear(); const mm = (dateObj.getMonth() + 1).toString().padStart(2, "0"); const dd = dateObj.getDate().toString().padStart(2, "0"); this.selectedTime = `${yyyy}-${mm}-${dd} ${startTime}:00`; this.closeTimePicker(); }, resetPicker() { this.currentDateTab = 0; this.selectedTimeSlot = 0; }, toggleAgreement() { this.agreed = !this.agreed; }, showServiceAgreement() { common_vendor.index.showModal({ title: "回收服务协议", content: "这里展示回收服务协议内容" }); }, showPrivacyPolicy() { common_vendor.index.showModal({ title: "隐私政策", content: "这里展示隐私政策内容" }); }, submitOrder() { if (!this.agreed) { common_vendor.index.showToast({ title: "请先同意服务协议", icon: "none" }); return; } if (!this.displayAddress || this.displayAddress === "请选择取件地址") { common_vendor.index.showToast({ title: "请选择取件地址", icon: "none" }); return; } if (!this.selectedTime) { common_vendor.index.showToast({ title: "请选择上门时间", icon: "none" }); return; } if (this.selectedItems.length === 0) { common_vendor.index.showToast({ title: "请选择回收物品", icon: "none" }); return; } const list = this.selectedItems.map((item) => ({ shopId: item.id, num: item.quantity })); common_vendor.index.__f__("log", "at pages/subcomponent/pickup.vue:326", { addressId: this.addressId, strTime: this.selectedTime, list }, "createOrder"); common_vendor.index.showLoading({ title: "提交中..." }); this.$api("createOrder", { addressId: this.addressId, strTime: this.selectedTime, list: JSON.stringify(list) }, (res) => { if (res && res.success) { common_vendor.index.__f__("log", "at pages/subcomponent/pickup.vue:340", res, "createOrder-res"); common_vendor.index.showToast({ title: "预约成功", icon: "success" }); common_vendor.index.redirectTo({ url: `/pages/subcomponent/detail?id=${res.result.id}` }); } }); }, toggleExpandOrder() { this.showAllItems = !this.showAllItems; }, async getAddressList() { const res = await this.$api("getAddressList", {}); if (res && res.code === 200 && res.result && res.result.records) { const defaultAddr = res.result.records.find((item) => item.defaultFlag === "Y"); if (defaultAddr) { this.selectedAddress = defaultAddr; this.address = defaultAddr.address; this.addressId = defaultAddr.id; if (defaultAddr.addressDetails) this.selectedAddress.addressDetails = defaultAddr.addressDetails; } else { this.selectedAddress = null; this.address = ""; } } }, generateDateTabs() { const weekMap = ["日", "一", "二", "三", "四", "五", "六"]; const result = []; const today = /* @__PURE__ */ new Date(); for (let i = 0; i < 6; i++) { const d = new Date(today); d.setDate(today.getDate() + i); const mm = (d.getMonth() + 1).toString().padStart(2, "0"); const dd = d.getDate().toString().padStart(2, "0"); let label = ""; if (i === 0) label = `今天 ${mm}-${dd}`; else if (i === 1) label = `明天 ${mm}-${dd}`; else if (i === 2) label = `后天 ${mm}-${dd}`; else label = `周${weekMap[d.getDay()]} ${mm}-${dd}`; result.push({ label, date: new Date(d) }); } return result; }, getAreaList() { this.$api("getAreaList", {}, (res) => { if (res.code == 200 && Array.isArray(res.result)) { const sorted = res.result.slice().sort((a, b) => a.sort - b.sort); this.steps = sorted.map((item) => ({ icon: item.image, text: item.title })); } }); } } }; if (!Array) { const _easycom_uni_icons2 = common_vendor.resolveComponent("uni-icons"); _easycom_uni_icons2(); } const _easycom_uni_icons = () => "../../uni_modules/uni-icons/components/uni-icons/uni-icons.js"; if (!Math) { _easycom_uni_icons(); } function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { return common_vendor.e({ a: common_vendor.p({ type: "left", size: "20" }), b: common_vendor.o((...args) => $options.goBack && $options.goBack(...args)), c: $data.statusBarHeight + 88 + "rpx", d: $data.statusBarHeight + "px", e: common_vendor.f($data.steps, (step, i, i0) => { return common_vendor.e({ a: step.icon, b: i === 0 }, i === 0 ? { c: common_vendor.t(step.text) } : { d: common_vendor.t(step.text) }, { e: i }); }), f: common_vendor.t($options.displayAddress || "请选择"), g: !$options.displayAddress ? 1 : "", h: common_vendor.o((...args) => $options.selectAddress && $options.selectAddress(...args)), i: common_vendor.t($data.selectedTime || "请选择"), j: !$data.selectedTime ? 1 : "", k: common_vendor.o((...args) => $options.openTimePicker && $options.openTimePicker(...args)), l: common_vendor.f($data.showAllItems ? $data.selectedItems : $data.selectedItems.slice(0, 3), (item, index, i0) => { return { a: item.icon, b: common_vendor.t(item.name), c: common_vendor.t(item.desc), d: common_vendor.t(item.unitPrice), e: common_vendor.t(item.quantity), f: common_vendor.t(item.unitPrice * item.quantity), g: index }; }), m: $data.selectedItems.length > 3 }, $data.selectedItems.length > 3 ? { n: common_vendor.t($data.showAllItems ? "收起" : `展开(共${$data.selectedItems.length}件)`), o: common_vendor.t($data.showAllItems ? "▲" : "▼"), p: common_vendor.o((...args) => $options.toggleExpandOrder && $options.toggleExpandOrder(...args)) } : {}, { q: $data.agreed }, $data.agreed ? {} : {}, { r: $data.agreed ? 1 : "", s: common_vendor.o((...args) => $options.toggleAgreement && $options.toggleAgreement(...args)), t: common_vendor.o((...args) => $options.showServiceAgreement && $options.showServiceAgreement(...args)), v: common_vendor.o((...args) => $options.showPrivacyPolicy && $options.showPrivacyPolicy(...args)), w: common_vendor.t($options.totalCount), x: common_vendor.t($options.totalPriceRange), y: common_vendor.o((...args) => $options.submitOrder && $options.submitOrder(...args)), z: $data.showTimePicker }, $data.showTimePicker ? { A: common_vendor.o((...args) => $options.closeTimePicker && $options.closeTimePicker(...args)), B: common_vendor.o((...args) => $options.resetPicker && $options.resetPicker(...args)), C: common_vendor.f($data.dateTabs, (tab, index, i0) => { return { a: common_vendor.t(tab.label), b: index, c: common_vendor.n({ active: $data.currentDateTab === index }), d: common_vendor.o(($event) => $options.selectDateTab(index), index) }; }), D: common_vendor.f($data.timeSlots, (slot, idx, i0) => { return { a: common_vendor.t(slot), b: idx, c: common_vendor.n({ active: $data.selectedTimeSlot === idx }), d: common_vendor.o(($event) => $options.selectTimeSlot(idx), idx) }; }), E: common_vendor.o((...args) => $options.confirmTime && $options.confirmTime(...args)) } : {}, { F: $data.navBarHeightRpx + "rpx" }); } const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-c732bc46"]]); wx.createPage(MiniProgramPage); //# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/subcomponent/pickup.js.map