"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
|