"use strict"; const common_vendor = require("../../common/vendor.js"); const modules_api_AppServer = require("../../modules/api/AppServer.js"); const common_assets = require("../../common/assets.js"); const appServer = new modules_api_AppServer.AppServer(); const _sfc_main = { data() { return { serviceId: "", serviceTitle: "", userName: "", userWechat: "", userPhone: "", userWhats: "", remark: "", reservationDate: "", itinerary: "", specialAssistanceReason: "", submitting: false, flashingField: "", selectedDialCode: "86", showCalendar: false, minDate: "", maxDate: "" }; }, onLoad(options) { this.initDateRange(); if (options.id) { this.serviceId = options.id; } if (options.title) { this.serviceTitle = decodeURIComponent(options.title); } }, methods: { initDateRange() { const now = /* @__PURE__ */ new Date(); const year = now.getFullYear(); const month = String(now.getMonth() + 1).padStart(2, "0"); const day = String(now.getDate()).padStart(2, "0"); this.minDate = `${year}-${month}-${day}`; this.maxDate = `${year + 2}-12-31`; }, openCalendar() { this.initDateRange(); this.$nextTick(() => { this.showCalendar = true; }); }, closeCalendar() { this.showCalendar = false; }, onCalendarConfirm(dates) { if (dates && dates.length > 0) { this.reservationDate = dates[0]; } this.showCalendar = false; }, checkData() { const validations = [ { field: "userName", selector: "#fieldUserName", check: () => !this.userName.trim(), message: "请输入真实姓名" }, { field: "contact", selector: "#fieldContact", check: () => !this.userWechat.trim() && !this.userPhone.trim() && !this.userWhats.trim(), message: "请至少填写一种联系方式(微信号/手机号/WhatsApp)" }, { field: "reservationDate", selector: "#fieldReservationDate", check: () => !this.reservationDate, message: "请选择预约日期" }, { field: "itinerary", selector: "#fieldItinerary", check: () => !this.itinerary.trim(), message: "请输入行程信息" }, { field: "specialAssistanceReason", selector: "#fieldSpecialAssistanceReason", check: () => !this.specialAssistanceReason.trim(), message: "请输入特殊协助原因" } ]; for (const validation of validations) { if (validation.check()) { common_vendor.index.showToast({ title: validation.message, icon: "none" }); this.scrollToElement(validation.selector); this.flashingField = validation.field; setTimeout(() => { this.flashingField = ""; }, 1500); return; } } this.submitAppointment(); }, async submitAppointment() { var _a; if (this.submitting) return; this.submitting = true; common_vendor.index.showLoading({ title: "提交中...", mask: true }); try { const appointmentData = { hotServiceId: parseInt(this.serviceId) || null, serviceType: "special_needs", realName: this.userName.trim(), wechatId: this.userWechat.trim() || null, phone: this.userPhone.trim() || null, phoneCountryCode: this.userPhone.trim() ? this.selectedDialCode : null, whatsapp: this.userWhats.trim() || null, notes: this.remark.trim() || null, appointmentDate: this.reservationDate, itinerary: this.itinerary.trim(), specialAssistanceReason: this.specialAssistanceReason.trim() }; const result = await appServer.CreateAppointment(appointmentData); common_vendor.index.hideLoading(); if (result.success || result.code === 0) { common_vendor.index.showToast({ title: "预约提交成功", icon: "success" }); setTimeout(() => { common_vendor.index.navigateBack({ delta: 1 }); }, 1500); } else { common_vendor.index.showToast({ title: ((_a = result.error) == null ? void 0 : _a.message) || "提交失败,请重试", icon: "none" }); } } catch (error) { common_vendor.index.hideLoading(); common_vendor.index.__f__("error", "at pages/appointment/special-needs-page.vue:286", "提交预约失败:", error); common_vendor.index.showToast({ title: "网络错误,请重试", icon: "none" }); } finally { this.submitting = false; } }, scrollToElement(selector) { const systemInfo = common_vendor.index.getSystemInfoSync(); const screenHeight = systemInfo.windowHeight; const query = common_vendor.index.createSelectorQuery().in(this); query.select(selector).boundingClientRect(); query.selectViewport().scrollOffset(); query.exec((res) => { if (res[0] && res[1]) { const rect = res[0]; const scrollInfo = res[1]; const targetScrollTop = scrollInfo.scrollTop + rect.top - screenHeight / 2 + rect.height / 2; common_vendor.index.pageScrollTo({ scrollTop: Math.max(0, targetScrollTop), duration: 300 }); } }); }, back() { common_vendor.index.navigateBack({ delta: 1 }); } } }; if (!Array) { const _easycom_up_input2 = common_vendor.resolveComponent("up-input"); const _easycom_aure_country_picker2 = common_vendor.resolveComponent("aure-country-picker"); const _easycom_up_textarea2 = common_vendor.resolveComponent("up-textarea"); const _easycom_up_calendar2 = common_vendor.resolveComponent("up-calendar"); (_easycom_up_input2 + _easycom_aure_country_picker2 + _easycom_up_textarea2 + _easycom_up_calendar2)(); } const _easycom_up_input = () => "../../node-modules/uview-plus/components/u-input/u-input.js"; const _easycom_aure_country_picker = () => "../../uni_modules/aure-country-picker/components/aure-country-picker/aure-country-picker.js"; const _easycom_up_textarea = () => "../../node-modules/uview-plus/components/u-textarea/u-textarea.js"; const _easycom_up_calendar = () => "../../node-modules/uview-plus/components/u-calendar/u-calendar.js"; if (!Math) { (_easycom_up_input + _easycom_aure_country_picker + _easycom_up_textarea + _easycom_up_calendar)(); } function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { return { a: common_assets._imports_0, b: common_vendor.o((...args) => $options.back && $options.back(...args)), c: common_vendor.t(_ctx.$t("infoEntry.title")), d: common_vendor.t(_ctx.$t("infoEntry.personalInfo")), e: common_vendor.t(_ctx.$t("infoEntry.realName")), f: common_vendor.o(($event) => $data.userName = $event), g: common_vendor.p({ placeholder: _ctx.$t("infoEntry.realNamePlaceholder"), border: "surround", modelValue: $data.userName }), h: $data.flashingField === "userName" ? 1 : "", i: common_vendor.t(_ctx.$t("infoEntry.wechat")), j: common_vendor.t(_ctx.$t("infoEntry.contactMethod")), k: common_vendor.o(($event) => $data.userWechat = $event), l: common_vendor.p({ placeholder: _ctx.$t("infoEntry.wechatPlaceholder"), border: "surround", modelValue: $data.userWechat }), m: $data.flashingField === "contact" ? 1 : "", n: common_vendor.t(_ctx.$t("infoEntry.phone")), o: common_vendor.t(_ctx.$t("infoEntry.contactMethod")), p: common_vendor.o(($event) => $data.selectedDialCode = $event), q: common_vendor.p({ title: _ctx.$t("infoEntry.selectCountry"), height: "70%", width: "60vw", duration: 350, position: "bottom", round: true, radius: "24rpx", ["mask-closable"]: true, modelValue: $data.selectedDialCode }), r: common_vendor.o(($event) => $data.userPhone = $event), s: common_vendor.p({ placeholder: _ctx.$t("infoEntry.phonePlaceholder"), border: "surround", modelValue: $data.userPhone }), t: $data.flashingField === "contact" ? 1 : "", v: common_vendor.t(_ctx.$t("infoEntry.whatsapp")), w: common_vendor.t(_ctx.$t("infoEntry.contactMethod")), x: common_vendor.o(($event) => $data.userWhats = $event), y: common_vendor.p({ placeholder: _ctx.$t("infoEntry.whatsappPlaceholder"), border: "surround", modelValue: $data.userWhats }), z: $data.flashingField === "contact" ? 1 : "", A: common_vendor.t(_ctx.$t("infoEntry.remark")), B: common_vendor.o(($event) => $data.remark = $event), C: common_vendor.p({ placeholder: _ctx.$t("infoEntry.remarkPlaceholder"), border: "surround", modelValue: $data.remark }), D: common_vendor.t(_ctx.$t("infoEntry.serviceInfo")), E: common_vendor.t($data.reservationDate || "请选择预约日期"), F: !$data.reservationDate ? 1 : "", G: common_assets._imports_1, H: common_vendor.o((...args) => $options.openCalendar && $options.openCalendar(...args)), I: $data.flashingField === "reservationDate" ? 1 : "", J: common_vendor.o(($event) => $data.itinerary = $event), K: common_vendor.p({ placeholder: "请输入行程信息(如:北京-上海)", border: "surround", modelValue: $data.itinerary }), L: $data.flashingField === "itinerary" ? 1 : "", M: common_vendor.o(($event) => $data.specialAssistanceReason = $event), N: common_vendor.p({ placeholder: "请详细描述需要特殊协助的原因", maxlength: 1e3, count: true, height: "200", border: "surround", modelValue: $data.specialAssistanceReason }), O: $data.flashingField === "specialAssistanceReason" ? 1 : "", P: common_vendor.t(_ctx.$t("common.submit")), Q: common_vendor.o(($event) => $options.checkData()), R: common_vendor.o($options.onCalendarConfirm), S: common_vendor.o($options.closeCalendar), T: common_vendor.p({ show: $data.showCalendar, mode: "single", minDate: $data.minDate, maxDate: $data.maxDate, confirmText: _ctx.$t("common.confirm"), color: "#57C9DD" }) }; } const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render]]); wx.createPage(MiniProgramPage); //# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/appointment/special-needs-page.js.map