提交 f0c34c15 编写于 作者: kadycui's avatar kadycui 💻

ADD: 优惠券模块

上级 b107cd6c
import axios from '@/axios'
export function getCouponList(page) {
return axios.get(`/admin/coupon/${page}`)
}
export function createCoupon(data) {
return axios.post("/admin/coupon", data)
}
export function updateCoupon(id, data) {
return axios.post("/admin/coupon/" + id, data)
}
export function deleteCoupon(id) {
return axios.post(`/admin/coupon/${id}/delete`)
}
export function updateCouponStatus(id) {
return axios.post(`/admin/coupon/${id}/update_status`, {
status:0
})
}
\ No newline at end of file
<template>
<div>
订单列表
</div>
</template>
\ No newline at end of file
<el-card shadow="never" class="border-0">
<!-- 新增 | 刷新 -->
<ListHeader @create="handleCreate" @refresh="getData" />
<el-table :data="tableData" stripe style="width: 100%"
element-loading-text="加载中..."
element-loading-spinner="el-icon-loading"
v-loading="loading">
<el-table-column label="优惠券名称" width="350">
<template #default="{ row }">
<div class="border border-dashed py-2 px-4 rounded">
<h5 class="font-bold text-md">{{ row.name }}</h5>
<small>{{ row.start_time }} ~ {{row.end_time }}</small>
</div>
</template>
</el-table-column>
<el-table-column prop="statusText" label="状态"/>
<el-table-column label="优惠">
<template #default="{ row }">
{{ row.type ? "满减" : "折扣" }} {{ row.type ? ("¥" + row.value) :(row.value + "") }}
</template>
</el-table-column>
<el-table-column prop="total" label="发放数量" />
<el-table-column prop="used" label="已使用" />
<el-table-column label="操作" width="180" align="center">
<template #default="scope">
<el-button type="primary" size="small" text @click="handleEdit(scope.row)">修改</el-button>
<el-popconfirm title="是否删除此公告?" confirm-button-text="确认" cancel-button-text="取消"
@confirm="handleDelete(scope.row.id)">
<template #reference>
<el-button text type="primary" size="small">删除</el-button>
</template>
</el-popconfirm>
</template>
</el-table-column>
</el-table>
<div class="flex items-center justify-center mt-5">
<el-pagination background layout="prev,pager, next" :total="total" :current-page="currentPage"
:page-size="limit" @current-change="getData" />
</div>
<FormDrawer ref="formDrawerRef" :title="drawerTitle" @submit="handleSubmit">
<el-form :model="form" ref="formRef" :rules="rules" label-width="80px" :inline="false">
<el-form-item label="公告标题" prop="title">
<el-input v-model="form.title" placeholder="公告标题"></el-input>
</el-form-item>
<el-form-item label="公告内容" prop="content">
<el-input v-model="form.content" placeholder="公告内容" type="textarea" :rows="5"></el-input>
</el-form-item>
</el-form>
</FormDrawer>
</el-card>
</template>
<script setup>
import {
getCouponList,
createCoupon,
updateCoupon,
deleteCoupon,
updateCouponStatus
} from "@/api/coupon"
import FormDrawer from "@/components/FormDrawer.vue"
import ListHeader from "@/components/ListHeader.vue"
import { useInitTable, useInitForm } from "@/composables/useCommon.js"
const {
tableData,
loading,
currentPage,
total,
limit,
getData,
handleDelete
} = useInitTable({
getList: getCouponList,
delete: deleteCoupon
})
const {
formDrawerRef,
formRef,
form,
rules,
drawerTitle,
handleSubmit,
handleCreate,
handleEdit
} = useInitForm(
{
form: {
title: "",
content: ""
},
rules: {
title: [
{
required: true,
message: '公告标题不能为空',
trigger: 'blur'
}
],
content: [
{
required: true,
message: '公告内容不能为空',
trigger: 'blur'
}
]
},
getData,
update: updateCoupon,
create: createCoupon
})
</script>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册