|
|
- "use strict";
- const common_vendor = require("../../common/vendor.js");
- const pages_mixins_pullRefreshMixin = require("../mixins/pullRefreshMixin.js");
- const common_assets = require("../../common/assets.js");
- const _sfc_main = {
- mixins: [pages_mixins_pullRefreshMixin.pullRefreshMixin],
- data() {
- return {
- address: "",
- selectedAddress: null,
- displayAddress: "请选择取件地址",
- addressDetail: {
- province: "",
- city: "",
- district: "",
- street: "",
- address: "",
- name: "",
- phone: "",
- isDefault: false
- },
- appointmentTime: "预约 周四 11:00~13:00",
- timeDetail: {
- date: "",
- time: "",
- displayText: ""
- },
- totalCount: 16,
- estimatePrice: "73.6-75.8",
- agreed: true,
- showTimePicker: false,
- currentDateTab: 0,
- pickerValue: [0, 0, 0],
- years: [],
- months: [],
- days: [],
- selectedDate: "",
- timeSlot: "11:00~13:00",
- // 固定时间段
- selectedItems: [
- {
- name: "羽绒服",
- desc: "允许脏破烂,160码以上",
- unitPrice: 8,
- quantity: 8
- },
- {
- name: "品牌羽绒服",
- desc: "允许脏破烂,160码以上",
- unitPrice: 10,
- quantity: 1
- }
- ],
- totalPriceRange: "¥ 73.6-75.8"
- };
- },
- computed: {
- displayAddress() {
- if (this.selectedAddress) {
- return this.selectedAddress.address;
- }
- return "请选择取件地址";
- },
- totalPriceRange() {
- const totalPrice = this.selectedItems.reduce((total, item) => total + item.unitPrice * item.quantity, 0);
- return `¥ ${totalPrice.toFixed(2)}-${(totalPrice + 2).toFixed(2)}`;
- },
- canSubmit() {
- return this.agreed && this.selectedAddress && this.timeDetail.date && this.selectedItems.length > 0;
- }
- },
- methods: {
- async onRefresh() {
- await new Promise((resolve) => setTimeout(resolve, 1e3));
- common_vendor.index.stopPullRefresh();
- },
- goBack() {
- common_vendor.index.navigateBack();
- },
- selectAddress() {
- common_vendor.index.navigateTo({
- url: "/pages/component/select"
- });
- },
- openTimePicker() {
- this.showTimePicker = true;
- if (!this.years.length) {
- this.initDatePicker();
- }
- },
- closeTimePicker() {
- this.showTimePicker = false;
- },
- initDatePicker() {
- const currentDate = /* @__PURE__ */ new Date();
- const currentYear = currentDate.getFullYear();
- this.years = Array.from({ length: 5 }, (_, i) => currentYear + i);
- this.months = Array.from({ length: 12 }, (_, i) => i + 1);
- this.updateDays(currentYear, currentDate.getMonth() + 1);
- this.pickerValue = [0, currentDate.getMonth(), currentDate.getDate() - 1];
- },
- updateDays(year, month) {
- const daysInMonth = new Date(year, month, 0).getDate();
- this.days = Array.from({ length: daysInMonth }, (_, i) => i + 1);
- },
- selectDateTab(index) {
- this.currentDateTab = index;
- if (index < 3) {
- const date = /* @__PURE__ */ new Date();
- date.setDate(date.getDate() + index);
- const yearIndex = this.years.findIndex((year) => year === date.getFullYear());
- this.pickerValue = [
- yearIndex,
- date.getMonth(),
- date.getDate() - 1
- ];
- this.updateDays(date.getFullYear(), date.getMonth() + 1);
- }
- },
- onPickerChange(e) {
- this.currentDateTab = 3;
- const values = e.detail.value;
- const year = this.years[values[0]];
- const month = this.months[values[1]];
- this.updateDays(year, month);
- if (values[2] >= this.days.length) {
- values[2] = this.days.length - 1;
- }
- this.pickerValue = values;
- },
- resetPicker() {
- this.initDatePicker();
- this.currentDateTab = 0;
- },
- confirmTime() {
- const year = this.years[this.pickerValue[0]];
- const month = this.months[this.pickerValue[1]];
- const day = this.days[this.pickerValue[2]];
- const date = new Date(year, month - 1, day);
- const weekDays = ["日", "一", "二", "三", "四", "五", "六"];
- const weekDay = weekDays[date.getDay()];
- this.timeDetail = {
- date: `${year}-${month}-${day}`,
- time: this.timeSlot,
- displayText: `预约 周${weekDay} ${this.timeSlot}`
- };
- this.appointmentTime = this.timeDetail.displayText;
- this.closeTimePicker();
- },
- handleAddressSelected(address) {
- common_vendor.index.__f__("log", "at pages/subcomponent/order_edit.vue:356", "接收到选中的地址:", address);
- this.selectedAddress = address;
- this.address = address.address;
- this.$forceUpdate();
- },
- handleTimeSelected(time) {
- this.timeDetail = time;
- this.appointmentTime = time.displayText;
- },
- showRules() {
- common_vendor.index.navigateTo({
- url: "/pages/rules/recycle"
- });
- },
- toggleAgreement() {
- this.agreed = !this.agreed;
- },
- viewAgreement() {
- common_vendor.index.navigateTo({
- url: "/pages/agreement/service"
- });
- },
- viewPrivacy() {
- common_vendor.index.navigateTo({
- url: "/pages/agreement/privacy"
- });
- },
- submitOrder() {
- if (!this.agreed) {
- return common_vendor.index.showToast({
- title: "请先同意服务协议",
- icon: "none"
- });
- }
- if (!this.selectedAddress) {
- return common_vendor.index.showToast({
- title: "请选择取件地址",
- icon: "none"
- });
- }
- if (!this.timeDetail.date) {
- return common_vendor.index.showToast({
- title: "请选择上门时间",
- icon: "none"
- });
- }
- if (this.selectedItems.length === 0) {
- return common_vendor.index.showToast({
- title: "请选择回收物品",
- icon: "none"
- });
- }
- common_vendor.index.showLoading({
- title: "提交中..."
- });
- ({
- address: this.selectedAddress,
- time: this.timeDetail,
- items: this.selectedItems,
- totalCount: this.totalCount,
- totalPrice: this.totalPriceRange
- });
- setTimeout(() => {
- common_vendor.index.hideLoading();
- common_vendor.index.showToast({
- title: "修改成功",
- icon: "success"
- });
- setTimeout(() => {
- common_vendor.index.navigateBack();
- }, 1500);
- }, 1e3);
- },
- decreaseQuantity(index) {
- if (this.selectedItems[index].quantity > 1) {
- this.selectedItems[index].quantity--;
- }
- },
- increaseQuantity(index) {
- this.selectedItems[index].quantity++;
- }
- },
- onLoad(options) {
- if (options.id) {
- this.addressDetail = {
- province: "海南省",
- city: "海口市",
- district: "秀英区",
- street: "秀英街道",
- address: "5单元1...",
- name: "张三",
- phone: "13800138000"
- };
- this.timeDetail = {
- date: "2024-03-21",
- time: "11:00-13:00",
- displayText: "周四 11:00~13:00"
- };
- }
- common_vendor.index.$on("addressSelected", (address) => {
- common_vendor.index.__f__("log", "at pages/subcomponent/order_edit.vue:465", "接收到选中的地址:", address);
- this.selectedAddress = address;
- this.address = address.address;
- this.$forceUpdate();
- });
- },
- onUnload() {
- common_vendor.index.$off("addressSelected");
- },
- onShow() {
- common_vendor.index.__f__("log", "at pages/subcomponent/order_edit.vue:477", "当前选中的地址:", this.selectedAddress);
- if (this.selectedAddress) {
- this.address = this.selectedAddress.address;
- this.$forceUpdate();
- }
- const selectedTime = getApp().globalData.selectedTime;
- if (selectedTime) {
- this.handleTimeSelected(selectedTime);
- getApp().globalData.selectedTime = null;
- }
- },
- created() {
- this.initDatePicker();
- },
- watch: {
- showTimePicker(val) {
- if (val) {
- this.updateDays(this.pickerValue[0], this.pickerValue[1]);
- }
- }
- }
- };
- function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
- return common_vendor.e({
- a: common_vendor.o((...args) => $options.goBack && $options.goBack(...args)),
- b: common_assets._imports_0$3,
- c: common_assets._imports_1$2,
- d: common_assets._imports_2$2,
- e: common_assets._imports_3$1,
- f: common_vendor.t($options.displayAddress),
- g: common_vendor.o((...args) => $options.selectAddress && $options.selectAddress(...args)),
- h: common_vendor.t($data.appointmentTime),
- i: common_vendor.o((...args) => $options.openTimePicker && $options.openTimePicker(...args)),
- j: common_vendor.f($data.selectedItems, (item, index, i0) => {
- return {
- a: item.icon,
- b: common_vendor.t(item.name),
- c: common_vendor.o((...args) => $options.showRules && $options.showRules(...args), index),
- d: common_vendor.t(item.desc),
- e: common_vendor.t(item.unitPrice),
- f: common_vendor.o(($event) => $options.decreaseQuantity(index), index),
- g: common_vendor.t(item.quantity),
- h: common_vendor.o(($event) => $options.increaseQuantity(index), index),
- i: index
- };
- }),
- k: $data.agreed
- }, $data.agreed ? {} : {}, {
- l: $data.agreed ? 1 : "",
- m: common_vendor.o((...args) => $options.toggleAgreement && $options.toggleAgreement(...args)),
- n: common_vendor.t($data.totalCount),
- o: common_vendor.t($options.totalPriceRange),
- p: !$options.canSubmit,
- q: common_vendor.o((...args) => $options.submitOrder && $options.submitOrder(...args)),
- r: $data.showTimePicker
- }, $data.showTimePicker ? {
- s: common_vendor.o((...args) => $options.closeTimePicker && $options.closeTimePicker(...args)),
- t: common_vendor.o((...args) => $options.resetPicker && $options.resetPicker(...args)),
- v: common_vendor.f(["今天", "明天", "后天", "自定义"], (tab, index, i0) => {
- return {
- a: common_vendor.t(tab),
- b: index,
- c: $data.currentDateTab === index ? 1 : "",
- d: common_vendor.o(($event) => $options.selectDateTab(index), index)
- };
- }),
- w: common_vendor.f($data.years, (year, k0, i0) => {
- return {
- a: common_vendor.t(year),
- b: year
- };
- }),
- x: common_vendor.f($data.months, (month, k0, i0) => {
- return {
- a: common_vendor.t(month),
- b: month
- };
- }),
- y: common_vendor.f($data.days, (day, k0, i0) => {
- return {
- a: common_vendor.t(day),
- b: day
- };
- }),
- z: $data.pickerValue,
- A: common_vendor.o((...args) => $options.onPickerChange && $options.onPickerChange(...args)),
- B: common_vendor.o((...args) => $options.confirmTime && $options.confirmTime(...args))
- } : {});
- }
- const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-2cee0a47"]]);
- wx.createPage(MiniProgramPage);
- //# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/subcomponent/order_edit.js.map
|