dm-wechat-mini/pages/help/package/index.js

474 lines
13 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import commonApi from '../../../api/common';
import userApi from '../../../api/user';
const app = getApp();
Page({
savedTimePeriodId:'',
/**
* 页面的初始数据
*/
data: {
stationList:[],
choosedStationList:[],
sendType:'DELIVERY_AT_DOORSTEP',//默认方式
imgUploading:false,
sendTypeKV:userApi.order.orderDeliverStatusKV,
timePeriods:[],
timePeriodsIndex:-1,
isShowDeliverType:false,
recogniting:false,
isShowStationEditor:false,
currentEditStation:{},
isShowSameStation:false,
ignoreSameStation:false,
sameStationName:''
},
async bottomBarButtonTap(){
const data = [];
const pickupImgs = [];
let hasSame = false;
this.data.choosedStationList.find((item,index)=>{
//查找ai识别中相同驿站
//代码写好,暂不开启
if(false){
let sameStations = this.data.choosedStationList.filter((_item)=>{
return (_item.name==item.name)&&!_item.id;
});
if(sameStations.length>1&&!this.data.ignoreSameStation){
hasSame = true;
this.setData({
isShowSameStation:true,
sameStationName:sameStations[0].name
})
return true;
}
}
if(item.pickup_codes.length>0&&item.pickup_codes[0]!=''){
//倒着找相同的索引 因为需要从后往前找
const codes = item.pickup_codes.join(',').split(',').reverse();
let findIndex = codes.findIndex((_item)=>{
let sames = codes.filter((__item)=>_item==__item);
//找到了相同的
if(sames.length>1){
hasSame = true;
return true;
}
})
if(findIndex>-1){
//再反转取得最后一个相同的 index
findIndex = item.pickup_codes.length - findIndex - 1;
this.data.choosedStationList[index].focus = true;
this.data.choosedStationList[index].focusIndex = findIndex;
wx.showToast({
icon:'none',
title: '取件码重复',
})
this.setData({
[`choosedStationList[${index}]`]:this.data.choosedStationList[index]
})
return true;
}
if(item.imgUrl){
pickupImgs.push(item.imgUrl);
}
data.push({
id:item.id||'',
name:item.name,
imgUrl:item.imgUrl||'',
service_text:item.service_text,
pickup_codes:item.pickup_codes.filter((item)=>item!='')
});
}
})
if(hasSame)return;
//录入了有效取件码 或者 上传了取件图片||this.data.tempImgs.length>0
if(data.length>0){
let priceRequest = {
packages:data,
pickup_images:pickupImgs.join(',')
};
if(this.data.timePeriodsIndex==-1){
wx.showToast({
icon:'none',
title:'请选择配送时段'
});
this.setData({
scrollToViewId:'scrollViewDispatch'
})
return;
}
const periodId = this.data.timePeriods[this.data.timePeriodsIndex].communtiy_time_period_id;
const deliveryDate = this.data.timePeriods[this.data.timePeriodsIndex].time_period_date;
wx.setStorage({
key:'pre-order',
data:{
price_request:priceRequest,
delivery_method:this.data.sendType,
community_time_period_id:periodId,
delivery_date:deliveryDate
},
success(){
wx.navigateBack();
}
})
}else{
wx.removeStorage({
key: 'pre-order',
success(){
wx.navigateBack();
}
})
}
},
addPackage(event){
const index = event.currentTarget.dataset.index;
let packages = this.data.choosedStationList[index].pickup_codes;
let hasEmptyInput = packages.find((item)=>item=='')!=undefined;
if(!hasEmptyInput){
packages.push('');
}
this.data.choosedStationList[index].focus = true;
this.setData({
[`choosedStationList[${index}]`]:this.data.choosedStationList[index]
});
},
deletePackage(event){
const itemIndex = event.currentTarget.dataset.index;
const packageIndex = event.currentTarget.dataset.p_index;
this.data.choosedStationList[itemIndex].pickup_codes.splice(packageIndex,1);
if(this.data.choosedStationList[itemIndex].pickup_codes.length==0){
//code 删完了就删除station
this.data.choosedStationList.splice(itemIndex,1);
this.setData({
choosedStationList:this.data.choosedStationList
})
}else{
//仅仅删除 code
this.setData({
[`choosedStationList[${itemIndex}].pickup_codes`]:this.data.choosedStationList[itemIndex].pickup_codes
})
}
},
setPackageCode(event){
const itemIndex = event.currentTarget.dataset.index;
const packageIndex = event.currentTarget.dataset.p_index;
this.data.choosedStationList[itemIndex].pickup_codes[packageIndex] = event.detail.value;
},
checkInput(event){
const itemIndex = event.currentTarget.dataset.index;
const packageIndex = event.currentTarget.dataset.p_index;
let packages = this.data.choosedStationList[itemIndex].pickup_codes;
if(packages.length>1){
if(packages.filter((item)=>item==packages[packages.length-1]).length>1){
wx.showToast({
icon:'none',
title: '取件码重复'
})
//清空
// this.setData({
// [`choosedStationList[${itemIndex}].pickup_codes[${packageIndex}]`]:''
// });
//体验不好
// this.data.choosedStationList[itemIndex].focus = true;
// this.data.choosedStationList[itemIndex].focusIndex = packageIndex;
// this.setData({
// [`choosedStationList[${itemIndex}]`]:this.data.choosedStationList[itemIndex]
// })
}
}
//清除焦点 有时候 setdata 会触发获取焦点
this.setData({
[`choosedStationList[${itemIndex}].focus`]:false
})
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
let preOrder = wx.getStorageSync('pre-order');
this.savedTimePeriodId = preOrder.community_time_period_id;
if(preOrder&&preOrder.price_request){
this.setData({
choosedStationList:preOrder.price_request.packages
})
}
commonApi.station.list(options.communityId).then((data)=>{
this.setData({
sendType:preOrder.delivery_method||this.data.sendType,
stationList:data.items,
});
//获取配送时段
return commonApi.community.timePeriods(options.communityId);
}).then((data)=>{
let timePeriodsIndex = data.findIndex((item)=>{
//找到之前选择的时段
if(item.communtiy_time_period_id==this.savedTimePeriodId){
//如果没满
if(!item.order_full){
return true;
}
}
});
//如果还是没找到就去找is_default 还是没有就让用户去选择,这里应该是没有可选的了
if(timePeriodsIndex==-1){
timePeriodsIndex = data.findIndex((item)=>item.is_default);
}
data.map((item)=>{
// item.order_full = true;
})
this.setData({
timePeriods:data,
timePeriodsIndex
});
})
},
manuallyAdd(){
let stationNames = this.data.stationList.map((item)=>item.name);
if(stationNames.length==0){
wx.showToast({
icon:'none',
title: '该小区未配置驿站',
})
return;
}
wx.showActionSheet({
itemList: stationNames,
success:(res)=>{
const station = this.data.stationList[res.tapIndex];
const alreadyIndex = this.data.choosedStationList.findIndex((item)=>item.id==station.id);
if(alreadyIndex>-1){
const _package = this.data.choosedStationList[alreadyIndex].pickup_codes;
if((_package[_package.length-1]||'').trim()!=''){
_package.push('');
}
this.data.choosedStationList[alreadyIndex].focus = true;
this.setData({
[`choosedStationList[${alreadyIndex}]`]:this.data.choosedStationList[alreadyIndex]
})
}else{
this.data.choosedStationList.unshift({
id:station.id,
name:station.name,
service_text:station.service_text,
pickup_codes:[''],
focus:true
})
this.setData({
choosedStationList:this.data.choosedStationList
})
// this.addAnimation(0);
}
}
})
},
addAnimation(index){
const duration = 2000;
//
let animation = wx.createAnimation({
duration:duration
});
animation.opacity(1).height('390rpx').step();
wx.nextTick(()=>{
console.log(this.data.choosedStationList[index]);
this.setData({
[`choosedStationList[${index}].animation`]:animation.export()
})
setTimeout(() => {
this.setData({
[`choosedStationList[${index}].animationOver`]:true,
[`choosedStationList[${index}].animation`]:null
})
}, duration);
})
},
chooseImage(){
if(this.data.imgUploading||this.data.recogniting)return;
wx.chooseMedia({
count:1,
mediaType:['image'],
success:(res)=>{
this.setData({
imgUploading:true
})
commonApi.uploadImg(res.tempFiles[0]).then((data)=>{
this.setData({
imgUploading:false
})
this.recognition(data.url);
})
}
})
},
async recognition(url){
this.setData({
recogniting:true
})
commonApi.getPickupCodeWidthImgUrl(url).then((data)=>{
if(data[0]&&data[0].stations){
const stations = data[0].stations;
let s = [];
stations.map((item)=>{
s.push({
imgUrl:url,
name:item.name,
pickup_codes:item.pickup_codes
});
})
this.setData({
choosedStationList:s.concat(this.data.choosedStationList)
})
}
wx.showToast({
icon:'none',
title: '识别成功',
})
}).catch(()=>{
}).finally(()=>{
this.setData({
recogniting:false
})
})
},
showStationName(event){
const index = event.currentTarget.dataset.index;
let item = this.data.choosedStationList[index];
this.setData({
isShowStationEditor:true,
currentEditStation:item
})
},
editStationName(event){
if(event.detail.trim()==''){
wx.showToast({
icon:'none',
title: '驿站名称不能为空',
})
return;
}
const index = this.data.choosedStationList.findIndex((item)=>item.imgUrl==this.data.currentEditStation.imgUrl);
this.setData({
[`choosedStationList[${index}].name`]:event.detail
})
},
showSendType(){
this.setData({
isShowDeliverType:true
})
},
confirmDeliverType(){
this.setData({
isShowDeliverType:false
})
},
chooseDeliverType(event){
this.setData({
sendType:event.currentTarget.dataset.index
})
},
chooseTime(event){
const index = event.currentTarget.dataset.index;
const item = this.data.timePeriods[index];
if(!item.order_full){
this.setData({
timePeriodsIndex:index
})
}
},
viewImage(event){
const url = event.currentTarget.dataset.url;
wx.previewImage({
urls: [url],
})
},
ignoreSameStation(){
this.data.ignoreSameStation = true;
},
sameStationAfterLeave(){
console.log(this.data.ignoreSameStation);
if(this.data.ignoreSameStation){
this.bottomBarButtonTap();
}
},
mergeStation(){
this.data.ignoreSameStation = false;
this.data.choosedStationList.map((item,index)=>{
if(!item.id){
//从当前往后找所有的
this.data.choosedStationList.map((_item,_index)=>{
if(_index>index){
if(_item.name == item.name&&!_item.id){
item.pickup_codes = item.pickup_codes.concat(_item.pickup_codes);
this.data.choosedStationList.splice(_index,1);
}
}
})
}
});
this.setData({
choosedStationList:this.data.choosedStationList
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})