lilishop-ui/manager/src/views/promotion/couponActivity/coupon.vue

242 lines
6.7 KiB
Vue

<template>
<div class="search">
<Card>
<Row class="operation padding-row">
<Button @click="add" type="primary">添加活动</Button>
</Row>
<Table :loading="loading" border :columns="columns" :data="data" ref="table" sortable="custom">
<template slot-scope="{ row,index }" slot="action">
<Button type="primary"
size="small" style="margin-right: 10px" @click="info(row)">
</Button>
<Button v-if="!checked && row.promotionStatus === 'START' || row.promotionStatus === 'NEW'" type="error"
size="small" style="margin-right: 10px" @click="remove(row)">停止
</Button>
</template>
</Table>
<Row type="flex" justify="end" class="page">
<Page :current="searchForm.pageNumber + 1" :total="total" :page-size="searchForm.pageSize"
@on-change="changePage" @on-page-size-change="changePageSize" :page-size-opts="[10, 20, 50]"
size="small" show-total show-elevator show-sizer></Page>
</Row>
</Card>
</div>
</template>
<script>
import {
getCouponActivityList,
closeActivity,
} from "@/api/promotion";
export default {
name: "couponActivity",
components: {},
data() {
return {
loading: true, // 表单加载状态
modalType: 0, // 添加或编辑标识
modalVisible: false, // 添加或编辑显示
modalTitle: "", // 添加或编辑标题
searchForm: {
// 搜索框初始化对象
pageNumber: 0, // 当前页数
pageSize: 10, // 页面大小
sort: "startTime", // 默认排序字段
order: "desc", // 默认排序方式
},
form: {
// 添加或编辑表单对象初始化数据
promotionName: "",
},
// 表单验证规则
formValidate: {
promotionName: [
{required: true, message: "不能为空", trigger: "blur"},
],
},
submitLoading: false, // 添加或编辑提交状态
selectList: [], // 多选数据
selectCount: 0, // 多选计数
columns: [
// 表头
{
title: "活动名称",
key: "promotionName",
minWidth: 120,
},
{
title: "活动类型",
key: "couponActivityType",
minWidth: 120,
render: (h, params) => {
if (params.row.couponActivityType === 'REGISTERED') {
return h("div", ["注册赠券"]);
} else {
return h("div", ["精确发券"]);
}
},
},
{
title: "优惠券类型",
key: "activityScope",
minWidth: 120,
render: (h, params) => {
let text = "未知";
if (params.row.activityScope === "DESIGNATED") {
text = "指定会员";
} else {
text = "全部会员";
}
return h("div", [text]);
},
},
{
title: "活动时间",
minWidth: 150,
render: (h, params) => {
return h("div", {
domProps: {
innerHTML: params.row.startTime + "<br/>" + params.row.endTime,
},
});
},
},
{
title: "状态",
minWidth: 80,
key: "promotionStatus",
fixed: "right",
render: (h, params) => {
let text = "未知",
color = "red";
if (params.row.promotionStatus == "NEW") {
text = "未开始";
color = "default";
} else if (params.row.promotionStatus == "START") {
text = "已开始";
color = "green";
} else if (params.row.promotionStatus == "END") {
text = "已结束";
color = "red";
} else if (params.row.promotionStatus == "CLOSE") {
text = "已关闭";
color = "red";
}
return h("div", [
h(
"Tag",
{
props: {
color: color,
},
},
text
),
]);
},
},
{
title: "操作",
slot: "action",
align: "center",
fixed: "right",
minWidth: 100,
},
],
data: [], // 表单数据
total: 0, // 表单数据总数
};
},
props: {
// 是否为选中模式
checked: {
type: Boolean,
default: false,
},
},
methods: {
//获取数据 初始化
init() {
this.getDataList();
},
//增加券活动
add() {
this.$router.push({name: "add-coupon-activity"});
},
//查看详情
info(v) {
this.$router.push({name: "coupon-activity-info", query: {id: v.id}});
},
//跳转页面
changePage(v) {
this.searchForm.pageNumber = v - 1;
this.getDataList();
},
//修改分页
changePageSize(v) {
this.searchForm.pageSize = v;
this.getDataList();
},
//搜索活动
handleSearch() {
this.searchForm.pageNumber = 0;
this.searchForm.pageSize = 10;
this.getDataList();
},
//数据获取
getDataList() {
this.loading = true;
if (this.selectDate && this.selectDate[0] && this.selectDate[1]) {
this.searchForm.startTime = this.selectDate[0].getTime();
this.searchForm.endTime = this.selectDate[1].getTime();
} else {
this.searchForm.startTime = null;
this.searchForm.endTime = null;
}
// 带多条件搜索参数获取表单数据 请自行修改接口
getCouponActivityList(this.searchForm).then((res) => {
this.loading = false;
if (res.success) {
this.data = res.result.records;
this.total = res.result.total;
}
});
this.loading = false;
},
//跳转编辑
edit(v) {
this.$router.push({name: "edit-platform-coupon", query: {id: v.id}});
},
//下架活动
remove(v) {
this.$Modal.confirm({
title: "确认下架",
// 记得确认修改此处
content: "确认要下架此优惠券活动么?下架活动只能重新创建",
loading: true,
onOk: () => {
// 删除
closeActivity(v.id).then((res) => {
if (res.success) {
this.$Message.success("优惠券活动已作废");
this.getDataList();
}
}).catch(() => {
this.$Modal;
});
},
});
},
},
mounted() {
this.init();
},
};
</script>
<style lang="scss">
@import "@/styles/table-common.scss";
</style>