You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

101 lines
2.3 KiB

<template>
<view class="container">
<view class="search"><search></search></view>
<shop-item v-for="(item, index) in shopList" :key="index" :itemObject="item" @handleMethod="handleMethod"></shop-item>
</view>
</template>
<script>
import shopItem from '../components/shopItem.vue';
import search from '../components/search.vue';
import { productLstApi, productDestory, productRestore } from 'api/product.js';
import { Toast, Modal } from 'libs/uniApi.js';
export default {
components: {
shopItem,
search
},
data() {
return {
merId: '',
where: {
page: 1,
limit: 15
},
shopList: [],
selectMenuId: 5
};
},
onLoad(opt) {
this.merId = opt.mer_id;
this.initData();
},
// 下拉到底部
onReachBottom() {
this.where.page++;
this.initData('concat');
},
methods: {
initData(type) {
productLstApi(this.merId, { ...this.where, type: this.selectMenuId }).then(res => {
if (type == 'concat') {
this.shopList = this.shopList.concat(res.data.list);
} else {
this.shopList = res.data.list;
}
// 给每一个列表项,添加可用功能
this.shopList.forEach(item => {
this.$set(item, 'handleList', [
{
id: 1,
label: '删除'
},
{
id: 2,
label: '还原'
}
]);
});
});
},
// 彻底删除
handleProductDestory(obj, index) {
Modal('温馨提示', `商品"${obj.store_name}", 将被彻底删除,请问是否继续`).then(() => {
productDestory(this.merId, obj.product_id).then(res => {
this.$util.Tips({ title: res.message, icon: 'success' });
this.shopList.splice(index, 1);
})
})
},
// 还原
handleProductRestore(obj, index) {
Modal('温馨提示', `商品"${obj.store_name}",将被还原,请问是否继续`).then(() => {
productRestore(this.merId, obj.product_id).then(res => {
this.$util.Tips({ title: res.message, icon: 'success' });
this.shopList.splice(index, 1);
})
})
},
handleMethod(item, obj, index) {
if(item.id == 1) {
this.handleProductDestory(obj, index);
return;
}
if(item.id == 2) {
this.handleProductRestore(obj, index);
}
console.log(item, obj);
}
}
};
</script>
<style lang="scss" scoped>
.search {
padding: 30rpx 25rpx;
background: #fff;
}
</style>