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