210 lines
5.6 KiB
Vue
210 lines
5.6 KiB
Vue
<template>
|
||
<div class="wrapper">
|
||
<Card>
|
||
<Alert banner type="warning">
|
||
|
||
<template slot="desc">
|
||
由于直播商品需经过小程序直播平台的审核,你需要在此先提审商品,为了不影响直播间选取商品,请提前1天提审商品;
|
||
每次最多可提审20款商品,每个店铺最多可维护200款商品,每款SPU只需选择其中一款SKU即可;
|
||
</template>
|
||
|
||
</Alert>
|
||
|
||
<div>
|
||
<Tabs :value="params.auditStatus">
|
||
<TabPane v-for="(item,index) in liveTabWay" :key="index" :label="item.label" :name="item.type">
|
||
|
||
</TabPane>
|
||
|
||
</Tabs>
|
||
</div>
|
||
|
||
<Button type="primary" style="margin-bottom:10px;" @click="addNewLiveGoods" icon="md-add">选择商品</Button>
|
||
|
||
<Table disabled-hover :columns="liveGoodsColumns" :data="liveGoodsData">
|
||
<template slot-scope="{ row }" slot="goodsName">
|
||
<div class="flex-goods">
|
||
<img class="thumbnail" :src="row.thumbnail">
|
||
{{ row.goodsName }}
|
||
</div>
|
||
</template>
|
||
<template slot-scope="{ row }" slot="price">
|
||
<RadioGroup v-model="row.priceType">
|
||
<div class="price-item">
|
||
<Radio label="1">一口价:</Radio> <Input v-if="row.priceType == '1'" style="width:100px" v-model="row.price"></Input>
|
||
</div>
|
||
<div class="price-item">
|
||
<Radio label="2">区间价:</Radio> <span v-if="row.priceType == '2'"><Input style="width:100px" v-model="row.price" />至<Input style="width:100px" v-model="row.price2" /></span>
|
||
</div>
|
||
<div class="price-item">
|
||
<Radio label="3">折扣价:</Radio> <span v-if="row.priceType == '3'">现价<Input style="width:100px" v-model="row.price"></Input>原价<Input style="width:100px" v-model="row.price2" /></span>
|
||
</div>
|
||
</RadioGroup>
|
||
</template>
|
||
|
||
<template slot-scope="{ row,index }" slot="action">
|
||
<Button type="primary" @click="()=>{liveGoodsData.splice(index,1)}">删除</Button>
|
||
</template>
|
||
</Table>
|
||
</Card>
|
||
<sku-select ref="skuSelect" @selectedGoodsData="selectedGoodsData"></sku-select>
|
||
<div class="submit">
|
||
<Button type="primary" @click="saveLiveGoods">保存商品</Button>
|
||
</div>
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
import skuSelect from "@/views/lili-dialog"; //选择商品组件
|
||
import { addLiveGoods } from "@/api/promotion.js";
|
||
export default {
|
||
components: {
|
||
skuSelect,
|
||
},
|
||
data() {
|
||
return {
|
||
params: {
|
||
pageNumber: 1,
|
||
pageSize: 10,
|
||
auditStatus: 0,
|
||
},
|
||
// 商品审核状态
|
||
liveTabWay: [
|
||
{
|
||
label: "待提审",
|
||
type: 0,
|
||
},
|
||
{
|
||
label: "审核中",
|
||
type: 1,
|
||
},
|
||
{
|
||
label: "已审核",
|
||
type: 2,
|
||
},
|
||
{
|
||
label: "审核未通过",
|
||
type: 3,
|
||
},
|
||
],
|
||
|
||
// 商品表格columns
|
||
liveGoodsColumns: [
|
||
{
|
||
title: "商品",
|
||
slot: "goodsName",
|
||
},
|
||
{
|
||
title: "价格",
|
||
slot: "price",
|
||
},
|
||
{
|
||
title: "库存",
|
||
key: "quantity",
|
||
width: 100,
|
||
},
|
||
|
||
{
|
||
title: "操作",
|
||
slot: "action",
|
||
width: 100,
|
||
},
|
||
],
|
||
// 表格商品详情
|
||
liveGoodsData: [],
|
||
};
|
||
},
|
||
methods: {
|
||
/**
|
||
* 保存直播商品
|
||
*/
|
||
async saveLiveGoods() {
|
||
// this.$Spin.show();
|
||
let submit = this.liveGoodsData.map((element) => {
|
||
return {
|
||
goodsId: element.goodsId, //商品id
|
||
goodsImage: element.small, //商品图片
|
||
name: element.goodsName, //商品昵称
|
||
price: parseInt(element.price), //商品价格
|
||
price2: element.price2 ? parseInt(element.price2) : "", //商品价格
|
||
priceType: element.priceType, // priceType Number 是 价格类型,1:一口价(只需要传入price,price2不传) 2:价格区间(price字段为左边界,price2字段为右边界,price和price2必传) 3:显示折扣价(price字段为原价,price2字段为现价, price和price2必传)
|
||
skuId: element.id,
|
||
url: `/pages/product/goods?id=${element.id}&goodsId=${element.goodsId}`, //小程序地址
|
||
};
|
||
});
|
||
|
||
let result = await addLiveGoods(submit);
|
||
if (result.success) {
|
||
this.$Message.success({
|
||
content: `添加成功!`,
|
||
});
|
||
}
|
||
},
|
||
|
||
/**
|
||
* 商品选择器回调的商品信息
|
||
*/
|
||
selectedGoodsData(goods) {
|
||
goods.map((item) => {
|
||
return (item.priceType = "1");
|
||
});
|
||
this.liveTabWay.map((item,index)=>{
|
||
return item.type == 99 && this.liveTabWay.splice(index,1)
|
||
})
|
||
|
||
this.liveGoodsData.push(...goods);
|
||
},
|
||
|
||
/**
|
||
* 新增商品
|
||
*/
|
||
addNewLiveGoods() {
|
||
this.liveTabWay.push({
|
||
type:99,
|
||
label:"新增商品"
|
||
})
|
||
this.params.auditStatus = 99
|
||
this.$refs.skuSelect.open("goods");
|
||
},
|
||
},
|
||
};
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
.wrapper {
|
||
position: relative;
|
||
}
|
||
.thumbnail {
|
||
width: 100px;
|
||
height: 100px;
|
||
border-radius: 0.4em;
|
||
}
|
||
.flex-goods {
|
||
margin: 10px;
|
||
display: flex;
|
||
|
||
align-items: center;
|
||
> img {
|
||
margin-right: 10px;
|
||
}
|
||
}
|
||
.price-item {
|
||
margin: 15px 5px;
|
||
> * {
|
||
margin: 5px;
|
||
}
|
||
}
|
||
.submit {
|
||
box-shadow: 3px 5px 12px rgba(0, 0, 0, 0.1);
|
||
height: 60px;
|
||
background: #fff;
|
||
position: fixed;
|
||
left: 0;
|
||
bottom: 0;
|
||
width: 100%;
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
}
|
||
</style>
|