mini/pages/closet/index/index.js
2025-04-13 01:27:54 +08:00

198 lines
4.9 KiB
JavaScript

import clothingAPI from '../../../api/clothing';
import commonAPI from '../../../api/common';
import request from '../../../api/request';
import userAPI from '../../../api/user';
Page({
data: {
pager:{limit:10,loading:false,loadAll:false,pageIndex:0,refreshTriggered:false},
uploadOptions:{
url:`${request.baseURL}/api/v1/upload`
},
uploadImg:{},
uploading:false,
uploadPercent:0,
hasUploadImg:false,
isShowUploader:false,
categories:[],
categoryIndex:0,
categoryUploadIndex:0,
hasDefaultImage:false,
topClothingCId:'',
bottomClothingCId:''
},
onLoad() {
this.loadClosetList();
clothingAPI.getCategories().then((data)=>{
data.map((item)=>{
if(item.name.indexOf('上衣')>-1||item.name.indexOf('衣服')>-1){
this.data.topClothingCId = item.id;
}
if(item.name.indexOf('下衣')>-1||item.name.indexOf('裤子')>-1){
this.data.bottomClothingCId = item.id;
}
})
this.setData({
categories:data
})
})
this.imgUploader = this.selectComponent('#imgUploader');
},
refreshList(){
this.setData({
'pager.pageIndex':0,
'pager.loadAll':false
})
this.loadClosetList();
},
loadClosetList() {
if(this.data.pager.loading||this.data.pager.loadAll){
return;
}
this.data.pager.loading = true;
this.setData({
pager:this.data.pager
});
const params = {
skip:this.data.pager.pageIndex*this.data.pager.limit,
limit:this.data.pager.limit
}
if(this.data.categoryIndex!=0){
params.category_id = this.data.categories[this.data.categoryIndex-1].id
}
clothingAPI.getList(params).then((data)=>{
if(this.data.pager.pageIndex==0){
this.data.list = data;
}else{
this.data.list = this.data.list.concat(data);
}
this.data.pager.loading = false;
this.data.pager.pageIndex++;
if(data.length<this.data.pager.limit){
this.data.pager.loadAll = true;
}
this.setData({
list:this.data.list,
pager:this.data.pager
})
}).catch((res)=>{
console.log('res',res);
this.setData({
"pager.loading":false
})
});
},
changeCategory(event){
const categoryIndex = event.currentTarget.dataset.index;
this.data.pager.pageIndex = 0;
this.data.pager.loadAll = false;
this.setData({
categoryIndex,
pager:this.data.pager
})
this.loadClosetList();
},
changeUploadCategory(event){
const categoryUploadIndex = event.currentTarget.dataset.index;
this.setData({
categoryUploadIndex
})
},
addClothing(){
this.setData({
isShowUploader:true
})
},
chooseImg(){
wx.chooseMedia({
count:1,
success:(res)=>{
let file = res.tempFiles[0];
this.setData({
uploadImg:file,
uploading:true
})
commonAPI.upload(file).then((data)=>{
this.setData({
"uploadImg.serverUrl":data.url
})
}).finally(()=>{
this.setData({
uploading:false
})
});
file.task.onProgressUpdate((detail)=>{
console.log(detail);
this.setData({
uploadPercent:detail.progress
})
})
}
})
},
saveClothing(){
const cid = this.data.categories[this.data.categoryUploadIndex].id;
console.log(cid,this.data.uploadImg.serverUrl);
clothingAPI.create(cid,this.data.uploadImg.serverUrl).then(()=>{
this.loadClosetList();
this.setData({
isShowUploader:false,
uploadImg:{}
})
});
},
uploaderImgChange(event){
this.setData({
hasUploadImg:event.detail.length!=0
})
},
onShow(){
userAPI.getDefaultPersonImage().then((data)=>{
this.setData({
hasDefaultImage:!!data.image_url
})
});
},
toTry(event){
const item = event.currentTarget.dataset.item;
const param = '';
wx.switchTab({
url: `/pages/try/index/index`,
success:()=>{
const pages = getCurrentPages();
const tryPage = pages[pages.length-1];
console.log(this.data.topClothingCId,this.data.bottomClothingCId);
if(item.clothing_category_id==this.data.topClothingCId){
tryPage.setTop(item.image_url);
}else if(item.clothing_category_id==this.data.bottomClothingCId){
tryPage.setBottom(item.image_url);
}
}
})
},
deleteClothing(event){
const item = event.currentTarget.dataset.item;
wx.showModal({
title: '是否确认删除这件衣服',
complete: (res) => {
if (res.confirm) {
clothingAPI.delete(item.id).then(()=>{
wx.showToast({
icon:'none',
title: '删除成功',
});
this.refreshList();
})
}
}
})
}
});