"use strict"; const common_vendor = require("../../common/vendor.js"); const modules_api_AppServer = require("../../modules/api/AppServer.js"); require("../../modules/Config.js"); const appServer = new modules_api_AppServer.AppServer(); const _sfc_main = { data() { return { serviceId: "", serviceTitle: "", userName: "", userWechat: "", userPhone: "", userWhats: "", remark: "", origin: "", destination: "", flightNo: "", departureDate: "", petType: "", petName: "", hasQuarantineCert: true, quarantineIndex: 0, quarantineColumns: [ [ { label: "是", value: true }, { label: "否", value: false } ] ], submitting: false, flashingField: "", selectedDialCode: "86", showCalendar: false, showQuarantinePicker: false, minDate: "", maxDate: "" }; }, computed: { quarantineCertText() { const item = this.quarantineColumns[0].find((t) => t.value === this.hasQuarantineCert); return item ? item.label : "是"; } }, 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.departureDate = dates[0]; } this.showCalendar = false; }, onQuarantineConfirm(e) { const selected = e.value[0]; this.hasQuarantineCert = selected.value; this.quarantineIndex = this.quarantineColumns[0].findIndex((t) => t.value === selected.value); this.showQuarantinePicker = 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: "origin", selector: "#fieldOrigin", check: () => !this.origin.trim(), message: "请输入出发地" }, { field: "destination", selector: "#fieldDestination", check: () => !this.destination.trim(), message: "请输入目的地" }, { field: "flightNo", selector: "#fieldFlightNo", check: () => !this.flightNo.trim(), message: "请输入航班号" }, { field: "departureDate", selector: "#fieldDepartureDate", check: () => !this.departureDate, message: "请选择出发日期" }, { field: "petType", selector: "#fieldPetType", check: () => !this.petType.trim(), message: "请输入宠物类型" }, { field: "petName", selector: "#fieldPetName", check: () => !this.petName.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: "pet_transportation", 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, origin: this.origin.trim(), destination: this.destination.trim(), flightNo: this.flightNo.trim(), departureDate: this.departureDate, petType: this.petType.trim(), petName: this.petName.trim(), hasQuarantineCert: this.hasQuarantineCert }; 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(); console.error("提交预约失败:", 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_picker2 = common_vendor.resolveComponent("up-picker"); const _easycom_up_calendar2 = common_vendor.resolveComponent("up-calendar"); (_easycom_up_input2 + _easycom_aure_country_picker2 + _easycom_up_picker2 + _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_picker = () => "../../node-modules/uview-plus/components/u-picker/u-picker.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_picker + _easycom_up_calendar)(); } function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { return { a: common_vendor.o((...args) => $options.back && $options.back(...args)), b: common_vendor.t(_ctx.$t("infoEntry.title")), c: common_vendor.t(_ctx.$t("infoEntry.personalInfo")), d: common_vendor.t(_ctx.$t("infoEntry.realName")), e: common_vendor.o(($event) => $data.userName = $event), f: common_vendor.p({ placeholder: _ctx.$t("infoEntry.realNamePlaceholder"), border: "surround", modelValue: $data.userName }), g: $data.flashingField === "userName" ? 1 : "", h: common_vendor.t(_ctx.$t("infoEntry.wechat")), i: common_vendor.t(_ctx.$t("infoEntry.contactMethod")), j: common_vendor.o(($event) => $data.userWechat = $event), k: common_vendor.p({ placeholder: _ctx.$t("infoEntry.wechatPlaceholder"), border: "surround", modelValue: $data.userWechat }), l: $data.flashingField === "contact" ? 1 : "", m: common_vendor.t(_ctx.$t("infoEntry.phone")), n: common_vendor.t(_ctx.$t("infoEntry.contactMethod")), o: common_vendor.o(($event) => $data.selectedDialCode = $event), p: 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 }), q: common_vendor.o(($event) => $data.userPhone = $event), r: common_vendor.p({ placeholder: _ctx.$t("infoEntry.phonePlaceholder"), border: "surround", modelValue: $data.userPhone }), s: $data.flashingField === "contact" ? 1 : "", t: common_vendor.t(_ctx.$t("infoEntry.whatsapp")), v: common_vendor.t(_ctx.$t("infoEntry.contactMethod")), w: common_vendor.o(($event) => $data.userWhats = $event), x: common_vendor.p({ placeholder: _ctx.$t("infoEntry.whatsappPlaceholder"), border: "surround", modelValue: $data.userWhats }), y: $data.flashingField === "contact" ? 1 : "", z: common_vendor.t(_ctx.$t("infoEntry.remark")), A: common_vendor.o(($event) => $data.remark = $event), B: common_vendor.p({ placeholder: _ctx.$t("infoEntry.remarkPlaceholder"), border: "surround", modelValue: $data.remark }), C: common_vendor.t(_ctx.$t("infoEntry.serviceInfo")), D: common_vendor.o(($event) => $data.origin = $event), E: common_vendor.p({ placeholder: "请输入出发地", border: "surround", modelValue: $data.origin }), F: $data.flashingField === "origin" ? 1 : "", G: common_vendor.o(($event) => $data.destination = $event), H: common_vendor.p({ placeholder: "请输入目的地", border: "surround", modelValue: $data.destination }), I: $data.flashingField === "destination" ? 1 : "", J: common_vendor.o(($event) => $data.flightNo = $event), K: common_vendor.p({ placeholder: "请输入航班号", border: "surround", modelValue: $data.flightNo }), L: $data.flashingField === "flightNo" ? 1 : "", M: common_vendor.t($data.departureDate || "请选择出发日期"), N: !$data.departureDate ? 1 : "", O: common_vendor.o((...args) => $options.openCalendar && $options.openCalendar(...args)), P: $data.flashingField === "departureDate" ? 1 : "", Q: common_vendor.o(($event) => $data.petType = $event), R: common_vendor.p({ placeholder: "请输入宠物类型(如:狗、猫等)", border: "surround", modelValue: $data.petType }), S: $data.flashingField === "petType" ? 1 : "", T: common_vendor.o(($event) => $data.petName = $event), U: common_vendor.p({ placeholder: "请输入宠物名称", border: "surround", modelValue: $data.petName }), V: $data.flashingField === "petName" ? 1 : "", W: common_vendor.t($options.quarantineCertText), X: common_vendor.o(($event) => $data.showQuarantinePicker = true), Y: $data.flashingField === "hasQuarantineCert" ? 1 : "", Z: common_vendor.t(_ctx.$t("common.submit")), aa: common_vendor.o(($event) => $options.checkData()), ab: common_vendor.o($options.onQuarantineConfirm), ac: common_vendor.o(($event) => $data.showQuarantinePicker = false), ad: common_vendor.o(($event) => $data.showQuarantinePicker = false), ae: common_vendor.p({ show: $data.showQuarantinePicker, columns: $data.quarantineColumns, defaultIndex: [$data.quarantineIndex], keyName: "label" }), af: common_vendor.o($options.onCalendarConfirm), ag: common_vendor.o($options.closeCalendar), ah: 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], ["__file", "F:/gitCode/uniapp/appointment_system/miniprogram/src/pages/appointment/pet-transportation-page.vue"]]); wx.createPage(MiniProgramPage);