Commit b1dc01e8 authored by guoyou's avatar guoyou

发布会设置

parent a6222297
......@@ -30,4 +30,79 @@ export function changeStatus(id) {
url: '/api/app/admin/buy_vehicle/status/' + id,
method: 'POST',
});
}
// 报名列表
export function applyList(params) {
return fetch({
url: 'api/activity/admin/activityLuckyDraw/page',
method: 'POST',
data: params
});
}
// 报名列表导出
export function excel(query) {
return fetch({
url: 'api/activity/admin/activityLuckyDraw/export',
method: 'post',
data: query,
responseType: 'blob'
});
}
// 中奖列表
export function applyListWin(params) {
return fetch({
url: '/api/activity/admin/activityWinningRecord/page',
method: 'POST',
data: params
});
}
// 中奖列表导出
export function excelWin(query) {
return fetch({
url: '/api/activity/admin/activityWinningRecord/export',
method: 'post',
data: query,
responseType: 'blob'
});
}
// 活动数据
export function applyListActive(params) {
return fetch({
url: '/api/activity/admin/activityAttendanceRecord/page',
method: 'POST',
data: params
});
}
// 活动数据
export function excelActive(query) {
return fetch({
url: '/api/activity/admin/activityAttendanceRecord/export',
method: 'post',
data: query,
responseType: 'blob'
});
}
// 奖品设置
export function savePrize(query) {
return fetch({
url: '/api/activity/admin/activityPrize/save',
method: 'post',
data: query
});
}
// 奖品详情
export function infoPrize(query) {
return fetch({
url: 'api/activity/admin/activityPrize/list',
method: 'get',
data: query
});
}
\ No newline at end of file
......@@ -648,6 +648,39 @@ export const asyncRouterMap = [{
}
]
},
{
path: '/casual',
component: Layout,
name: '发布会现金活动',
icon: 'setting',
authority: 'casual',
children: [
{
path: 'index',
component: _import('conference/activeData/index'),
name: '活动数据',
authority: 'index'
},
{
path: 'prizeLists',
component: _import('conference/prizeList/prizeLists'),
name: '中奖列表',
authority: 'prizeLists'
},
{
path: 'applyList',
component: _import('conference/apply/applyList'),
name: '报名列表',
authority: 'applyList'
},
{
path: 'awardSet',
component: _import('conference/award/awardSet'),
name: '奖品设置',
authority: 'awardSet'
}
]
},
{
path: '/applyManagements',
component: Layout,
......
<template>
<div class="app-container calendar-list-container">
<el-form :inline="true" label-width="100px" label-position="right">
<el-form-item label="选择日期">
<el-date-picker v-model="time" type="daterange" placeholder="选择日期范围" @change="changeTime"></el-date-picker>
</el-form-item>
<el-form-item label="手机号">
<el-input v-model="listQuery.phone" placeholder="请输入手机号" clearable style="width:200px"></el-input>
</el-form-item>
<el-form-item label="状态">
<el-select v-model="listQuery.status" clearable placeholder="请选择状态" @change="changeClass">
<el-option v-for="item in options" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-button type="primary" @click="search">搜索</el-button>
<el-button type="primary" @click="clearSearch">清空搜索</el-button>
<el-button type="primary" :loading="excelLoading" @click="downloadExcel">导出</el-button>
</el-form>
<div class="information">
<h4>数据概况.</h4>
<ul>
<li>
<p>{{information.attendNum}}</p>
<p>参与人数(次)</p>
</li>
<li>
<p>{{information.finishNum}}</p>
<p>完成任务数(个)</p>
</li>
<li>
<p>{{information.amount}}</p>
<p>已发放现金总额(次)</p>
</li>
</ul>
</div>
<el-table
:data="tableData"
border
header-align="center"
v-loading="loadingTab"
style="margin-top:20px"
>
<el-table-column label="序号" align="center" width="70">
<template scope="scope">
<span>{{scope.$index+(listQuery.page - 1) * listQuery.limit + 1}}</span>
</template>
</el-table-column>
<el-table-column prop="userName" label="用户名" align="center"></el-table-column>
<el-table-column prop="phone" label="电话" align="center"></el-table-column>
<el-table-column prop="positionName" label="身份" align="center"></el-table-column>
<el-table-column prop="status" label="状态" align="center">
<template scope="scope">
<span>{{scope.row.status == 1 ? '未完成' : '已完成'}}</span>
</template>
</el-table-column>
<el-table-column prop="amount" label="当前金额(元)" align="center"></el-table-column>
<el-table-column prop="crtTime" label="邀请人数" align="center"></el-table-column>
<el-table-column prop="prizes" label="抽奖礼品" align="center"></el-table-column>
<el-table-column prop="attendTime" label="参加时间" align="center">
<template scope="scope">
<span>{{timeChange(scope.row.attendTime)}}</span>
</template>
</el-table-column>
</el-table>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="listQuery.page"
:page-sizes="[10,20,30, 50]"
:page-size="listQuery.limit"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
style="margin-top:20px"
></el-pagination>
</div>
</template>
<script>
import { formatDate } from 'utils/dateFormattor'
import { applyListActive, excelActive } from 'api/applyManagements'
export default {
created() {
this.getList()
},
data() {
return {
information: {},
excelLoading: false,
loadingTab: false,
tableData: [],
time: '',
total: null, //总页数
options: [
{
id: '',
name: '全部'
},
{
id: 0,
name: '未完成'
},
{
id: 1,
name: '已完成'
}
],
listQuery: {
page: 1,
limit: 10,
startTime: null,
endTime: null,
phone: null,
activityId: 1,
status: ''
}
}
},
methods: {
//时间戳
timeChange(val) {
return formatDate(new Date(val), 'yyyy-MM-dd hh:mm:ss')
},
//列表
getList() {
this.loadingTab = true
applyListActive(this.listQuery).then(data => {
if (data.status == 200) {
this.tableData = data.data.activityAttendanceRecordVos
this.total = data.data.totalCount
this.information = data.data.activityAttendanceRecordTotalVo
} else {
this.$message(data.message)
}
})
setTimeout(() => {
this.loadingTab = false
}, 300)
},
//是否中奖筛选
changeWin() {
this.listQuery.page = 1
this.getList()
},
//搜索
search() {
this.listQuery.page = 1
this.getList()
},
//抽奖类型筛选
changeClass() {
this.listQuery.page = 1
this.getList()
},
//清空搜索
clearSearch() {
this.listQuery = {
page: 1,
limit: 10,
startTime: null,
endTime: null,
phone: null,
activityId: 1
}
},
//导出
downloadExcel() {
this.excelLoading = true
var u = navigator.userAgent,
app = navigator.appVersion
excelActive(this.listQuery, {
responseType: 'arraybuffer'
}).then(res => {
const content = res
const blob = new Blob([content], {
type: 'application/vnd.ms-excel'
})
const fileName = '活动数据.xlsx'
if (u.indexOf('Edge') > -1) {
window.navigator.msSaveBlob(blob, fileName)
} else {
const elink = document.createElement('a')
elink.download = fileName
elink.style.display = 'none'
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href) // 释放URL 对象
document.body.removeChild(elink)
}
this.excelLoading = false
})
},
//时间筛选
changeTime(val) {
this.listQuery.page = 1
if (!!val) {
let value = val.split(' - ')
this.listQuery.startDate = value[0] + ' 00:00:00'
this.listQuery.endDate = value[1] + ' 23:59:59'
this.getList()
} else {
this.listQuery.startDate = null
this.listQuery.endDate = null
this.getList()
}
},
//页码
handleSizeChange(val) {
this.listQuery.limit = val
this.getList()
},
//分页
handleCurrentChange(val) {
this.listQuery.page = val
this.getList()
}
}
}
</script>
<style scoped>
.information {
border: 1px solid #ccc;
margin: 20px 0;
padding: 10px 20px;
}
.information h4 {
color: #333;
font-size: 16px;
font-weight: normal;
}
.information ul {
padding: 0;
border-top: 1px solid #eee;
padding: 10px 30px;
overflow: hidden;
}
.information li {
list-style: none;
text-align: center;
float: left;
width: 33.33%;
border-right: 1px solid #eee;
}
.information li:last-child {
border: none;
}
</style>
\ No newline at end of file
<template>
<div class="app-container calendar-list-container">
<el-form :inline="true" label-width="100px" label-position="right">
<el-form-item label="日期">
<el-date-picker v-model="time" type="daterange" placeholder="选择日期范围" @change="changeTime"></el-date-picker>
</el-form-item>
<el-form-item label="手机号">
<el-input v-model="listQuery.phone" placeholder="请输入手机号" clearable style="width:200px"></el-input>
</el-form-item>
<el-button type="primary" @click="search">搜索</el-button>
<el-button type="primary" @click="clearSearch">清空搜索</el-button>
<el-button type="primary" :loading="excelLoading" @click="downloadExcel">导出</el-button>
</el-form>
<el-table
:data="tableData"
border
header-align="center"
v-loading="loadingTab"
style="margin-top:20px"
>
<el-table-column label="序号" align="center" width="70">
<template scope="scope">
<span>{{scope.$index+(listQuery.page - 1) * listQuery.limit + 1}}</span>
</template>
</el-table-column>
<el-table-column prop="userName" label="姓名" align="center"></el-table-column>
<el-table-column prop="phone" label="电话" align="center"></el-table-column>
<el-table-column prop="ticketNum" label="人数" align="center"></el-table-column>
<el-table-column prop="crtTime" label="报名时间" align="center"></el-table-column>
</el-table>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="listQuery.page"
:page-sizes="[10,20,30, 50]"
:page-size="listQuery.limit"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
style="margin-top:20px"
></el-pagination>
</div>
</template>
<script>
import { applyList, excel } from 'api/applyManagements'
export default {
created() {
this.getList()
},
data() {
return {
excelLoading: false,
loadingTab: false,
tableData: [],
time: '',
total: null, //总页数
listQuery: {
page: 1,
limit: 10,
startTime: null,
endTime: null,
phone: null,
activityId: 1
}
}
},
methods: {
//列表
getList() {
this.loadingTab = true
applyList(this.listQuery).then(data => {
if (data.status == 200) {
this.tableData = data.data.data
this.total = data.data.totalCount
} else {
this.$message(data.message)
}
})
setTimeout(() => {
this.loadingTab = false
}, 300)
},
//搜索
search() {
this.listQuery.page = 1
this.getList()
},
//清空搜索
clearSearch() {
this.listQuery = {
page: 1,
limit: 10,
startTime: null,
endTime: null,
phone: null,
activityId: 1
}
},
//导出
downloadExcel() {
this.excelLoading = true
var u = navigator.userAgent,
app = navigator.appVersion
excel(this.listQuery, { responseType: 'arraybuffer' }).then(res => {
const content = res
const blob = new Blob([content], {
type: 'application/vnd.ms-excel'
})
const fileName = '报名列表.xlsx'
if (u.indexOf('Edge') > -1) {
window.navigator.msSaveBlob(blob, fileName)
} else {
const elink = document.createElement('a')
elink.download = fileName
elink.style.display = 'none'
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href) // 释放URL 对象
document.body.removeChild(elink)
}
this.excelLoading = false
})
},
//时间筛选
changeTime(val) {
this.listQuery.page = 1
if (!!val) {
let value = val.split(' - ')
this.listQuery.startDate = value[0] + ' 00:00:00'
this.listQuery.endDate = value[1] + ' 23:59:59'
this.getList()
} else {
this.listQuery.startDate = null
this.listQuery.endDate = null
this.getList()
}
},
//页码
handleSizeChange(val) {
this.listQuery.limit = val
this.getList()
},
//分页
handleCurrentChange(val) {
this.listQuery.page = val
this.getList()
}
}
}
</script>
<template>
<div class="app-container calendar-list-container">
<div class="online">
<h4>参与活动奖励抽奖</h4>
<table border="1">
<tr>
<td>宫格1</td>
<td>宫格2</td>
<td>宫格3</td>
</tr>
<tr>
<td>宫格4</td>
<td style="background:#20a0ff;color:#fff" @click="setOnline(1)">设置</td>
<td>宫格6</td>
</tr>
<tr>
<td>宫格7</td>
<td>宫格8</td>
<td>宫格9</td>
</tr>
</table>
</div>
<div class="local">
<h4>发布会现场奖品抽奖</h4>
<table border="1">
<tr>
<td>宫格1</td>
<td>宫格2</td>
<td>宫格3</td>
</tr>
<tr>
<td>宫格4</td>
<td style="background:#20a0ff;color:#fff" @click="setOnline(2)">设置</td>
<td>宫格6</td>
</tr>
<tr>
<td>宫格7</td>
<td>宫格8</td>
<td>宫格9</td>
</tr>
</table>
</div>
<el-dialog title="参与活动奖励抽奖设置" :visible.sync="dialogVisible" @close="closePop">
<ul>
<li>
<p></p>
<p>抽奖类型</p>
<p>奖品名称</p>
<p>奖品图片</p>
<p>奖品数量</p>
<p>中奖概率</p>
<p>最大中奖数</p>
</li>
<li v-for="(item,index) in table" :key="index">
<!-- 序号 -->
<p>宫格{{item.serialNumber}}</p>
<!-- 奖品类型 -->
<p>
<el-select v-model="item.prizeGoodsType" clearable placeholder="请选择">
<el-option v-for="item in options" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</p>
<!-- 奖品名称 -->
<p>
<el-input v-model="item.name" placeholder v-if="item.prizeGoodsType != 2"></el-input>
<el-select v-model="item.goodsId" clearable placeholder="请选择" v-else>
<el-option v-for="item in couponData" :key="item.id" :label="item.title" :value="item.id"></el-option>
</el-select>
</p>
<!-- 奖品图片 -->
<p>
<el-upload
class="avatar-uploader"
:action="BASE_API + '/api/universal/file/app/unauth/admin/upload'"
:show-file-list="false"
:on-success="(response, file, fileList,id)=> handleSuccess(response, file, fileList,index)"
>
<img v-if="item.iconPath" :src="item.iconPath" style="width:50px;height:30px" />
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</p>
<!-- 奖品数量 -->
<p>
<el-input v-model="item.totalStock" placeholder></el-input>
</p>
<!-- 中奖概率 -->
<p>
<el-input v-model="item.probability" placeholder></el-input>
</p>
<!-- 最大中奖数 -->
<p>
<el-input v-model="item.dayMaxUse" placeholder></el-input>
</p>
</li>
</ul>
<p style="text-align:center">
<el-button type="primary" @click="save">保存</el-button>
</p>
</el-dialog>
<!-- <el-upload
class="avatar-uploader"
:action="BASE_API + '/api/universal/file/app/unauth/admin/upload'"
:show-file-list="false"
:on-success="demo"
>
<img v-if="demoImg" :src="demoImg" style="width:50px;height:30px" />
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload> -->
</div>
</template>
<script>
import { getTitle } from 'api/cunponManagements'
import { savePrize, infoPrize } from 'api/applyManagements'
export default {
data() {
return {
demoImg:'',
or: '',
BASE_API: process.env.BASE_API,
couponData: [],
dialogVisible: false,
value4: '',
input: '',
iconPath: '',
options: [
{
id: 1,
name: '奖品'
},
{
id: 2,
name: '优惠券'
},
{
id: 0,
name: '谢谢参与'
}
],
table: [
{
serialNumber: '1',
name: '', //奖品名称
iconPath:'', //奖品图片
totalStock: '', //奖品数量
probability: '', //中奖概率
dayMaxUse: '', //最大次数
prizeGoodsType: '', //奖品类型
goodsId: '', //优惠券id
id: null
},
{
serialNumber: '2',
name: '', //奖品名称
iconPath: '', //奖品图片
totalStock: '', //奖品数量
probability: '', //中奖概率
dayMaxUse: '', //最大次数
prizeGoodsType: '', //奖品类型
goodsId: '', //优惠券id
id: null
},
{
serialNumber: '3',
name: '', //奖品名称
iconPath: '', //奖品图片
totalStock: '', //奖品数量
probability: '', //中奖概率
dayMaxUse: '', //最大次数
prizeGoodsType: '', //奖品类型
goodsId: '', //优惠券id
id: null
},
{
serialNumber: '4',
name: '', //奖品名称
iconPath: '', //奖品图片
totalStock: '', //奖品数量
probability: '', //中奖概率
dayMaxUse: '', //最大次数
prizeGoodsType: '', //奖品类型
goodsId: '', //优惠券id
id: null
},
{
serialNumber: '5',
name: '', //奖品名称
iconPath: '', //奖品图片
totalStock: '', //奖品数量
probability: '', //中奖概率
dayMaxUse: '', //最大次数
prizeGoodsType: '', //奖品类型
goodsId: '', //优惠券id
id: null
},
{
serialNumber: '6',
name: '', //奖品名称
iconPath: '', //奖品图片
totalStock: '', //奖品数量
probability: '', //中奖概率
dayMaxUse: '', //最大次数
prizeGoodsType: '', //奖品类型
goodsId: '', //优惠券id
id: null
},
{
serialNumber: '7',
name: '', //奖品名称
iconPath: '', //奖品图片
totalStock: '', //奖品数量
probability: '', //中奖概率
dayMaxUse: '', //最大次数
prizeGoodsType: '', //奖品类型
goodsId: '', //优惠券id
id: null
},
{
serialNumber: '8',
name: '', //奖品名称
iconPath: '', //奖品图片
totalStock: '', //奖品数量
probability: '', //中奖概率
dayMaxUse: '', //最大次数
prizeGoodsType: '', //奖品类型
goodsId: '', //优惠券id
id: null
}
]
}
},
created() {
this.getTitleFn()
},
methods: {
handleSuccess(res, file,list,id) {
this.table[id].iconPath = res.data
},
//弹窗关闭
closePop() {
this.table = [
{
serialNumber: '1',
name: '', //奖品名称
iconPath:
'https://xxtest.upyuns.com/image/admin/2019-12-05/37.jpg', //奖品图片
totalStock: '', //奖品数量
probability: '', //中奖概率
dayMaxUse: '', //最大次数
prizeGoodsType: '', //奖品类型
goodsId: '', //优惠券id
id: null
},
{
serialNumber: '2',
name: '', //奖品名称
iconPath: '', //奖品图片
totalStock: '', //奖品数量
probability: '', //中奖概率
dayMaxUse: '', //最大次数
prizeGoodsType: '', //奖品类型
goodsId: '', //优惠券id
id: null
},
{
serialNumber: '3',
name: '', //奖品名称
iconPath: '', //奖品图片
totalStock: '', //奖品数量
probability: '', //中奖概率
dayMaxUse: '', //最大次数
prizeGoodsType: '', //奖品类型
goodsId: '', //优惠券id
id: null
},
{
serialNumber: '4',
name: '', //奖品名称
iconPath: '', //奖品图片
totalStock: '', //奖品数量
probability: '', //中奖概率
dayMaxUse: '', //最大次数
prizeGoodsType: '', //奖品类型
goodsId: '', //优惠券id
id: null
},
{
serialNumber: '5',
name: '', //奖品名称
iconPath: '', //奖品图片
totalStock: '', //奖品数量
probability: '', //中奖概率
dayMaxUse: '', //最大次数
prizeGoodsType: '', //奖品类型
goodsId: '', //优惠券id
id: null
},
{
serialNumber: '6',
name: '', //奖品名称
iconPath: '', //奖品图片
totalStock: '', //奖品数量
probability: '', //中奖概率
dayMaxUse: '', //最大次数
prizeGoodsType: '', //奖品类型
goodsId: '', //优惠券id
id: null
},
{
serialNumber: '7',
name: '', //奖品名称
iconPath: '', //奖品图片
totalStock: '', //奖品数量
probability: '', //中奖概率
dayMaxUse: '', //最大次数
prizeGoodsType: '', //奖品类型
goodsId: '', //优惠券id
id: null
},
{
serialNumber: '8',
name: '', //奖品名称
iconPath: '', //奖品图片
totalStock: '', //奖品数量
probability: '', //中奖概率
dayMaxUse: '', //最大次数
prizeGoodsType: '', //奖品类型
goodsId: '', //优惠券id
id: null
}
]
},
//设置弹窗
setOnline(val) {
this.or = val
this.dialogVisible = true
infoPrize().then(data => {
if (val == 1) {
if (data.data.onlinePrize != '')
this.table = data.data.onlinePrize
} else {
if (data.data.localePrize != '')
this.table = data.data.localePrize
}
})
},
//保存
save() {
let params = []
this.table.forEach(element => {
let defaults = {
serialNumber: element.serialNumber,
name: element.name,
iconPath: element.iconPath,
dayMaxUse: element.dayMaxUse,
totalStock: element.totalStock,
probability: element.probability,
type: this.or,
prizeGoodsType: element.prizeGoodsType,
goodsId: element.goodsId,
id: element.id
}
params.push(defaults)
})
savePrize(params).then(data => {
if (data.status == 200) {
this.$message.success('设置成功')
this.dialogVisible = false
} else {
this.$message.error(data.message)
}
})
},
//优惠券列表
getTitleFn() {
getTitle().then(data => {
console.log(data)
if (data.status == 200) {
this.couponData = data.data
} else {
this.$message.error('优惠券获取失败')
}
})
}
}
}
</script>
<style>
.el-dialog--small {
width: 60% !important;
}
.avatar-uploader-icon {
width: auto;
height: auto;
}
li {
list-style: none;
overflow: hidden;
/* text-align: center; */
}
li p {
float: left;
margin-left: 10px;
}
li:nth-child(1) p {
color: #ccc;
}
li p:nth-child(1) {
width: 8%;
margin-top: 20px;
}
li p:nth-child(2) {
width: 18%;
}
li p:nth-child(3) {
width: 18%;
}
li p:nth-child(4) {
width: 8%;
}
li p:nth-child(5) {
width: 13%;
}
li p:nth-child(6) {
width: 13%;
}
li p:nth-child(7) {
width: 8%;
}
.online,
.local {
width: 49%;
display: inline-block;
}
.online {
float: left;
}
.local {
float: right;
}
h4 {
text-align: center;
font-size: 20px;
font-weight: 400;
}
table {
border: 1px solid #d9d9d9;
margin: 0 auto;
}
td {
width: 150px;
height: 150px;
text-align: center;
}
</style>
\ No newline at end of file
<template>
<div class="app-container calendar-list-container">
<el-form :inline="true" label-width="100px" label-position="right">
<el-form-item label="日期">
<el-date-picker v-model="time" type="daterange" placeholder="选择日期范围" @change="changeTime"></el-date-picker>
</el-form-item>
<el-form-item label="手机号">
<el-input v-model="listQuery.phone" placeholder="请输入手机号" clearable style="width:200px"></el-input>
</el-form-item>
<el-form-item label="类型">
<el-select v-model="listQuery.prizeType" clearable placeholder="请选择抽奖类型" @change="changeClass">
<el-option v-for="item in options" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-button type="primary" @click="search">搜索</el-button>
<el-button type="primary" @click="clearSearch">清空搜索</el-button>
<el-button type="primary" :loading="excelLoading" @click="downloadExcel">导出</el-button>
</el-form>
<div class="information">
<h4>数据概况.</h4>
<ul>
<li>
<p>{{information.onLineNum}}</p>
<p>线上抽奖触发(次)</p>
</li>
<li>
<p>{{information.onLineWineNum}}</p>
<p>线上中奖个数(个)</p>
</li>
<li>
<p>{{information.localeNum}}</p>
<p>现场抽奖触发(次)</p>
</li>
<li>
<p>{{information.localeWineNum}}</p>
<p>现场中奖个数(个)</p>
</li>
</ul>
</div>
<el-table
:data="tableData"
border
header-align="center"
v-loading="loadingTab"
style="margin-top:20px"
>
<el-table-column label="序号" align="center" width="70">
<template scope="scope">
<span>{{scope.$index+(listQuery.page - 1) * listQuery.limit + 1}}</span>
</template>
</el-table-column>
<el-table-column prop="userName" label="用户名" align="center"></el-table-column>
<el-table-column prop="phone" label="电话" align="center"></el-table-column>
<el-table-column prop="positionName" label="身份" align="center"></el-table-column>
<el-table-column label="发放类型" align="center">
<template scope="scope">
<span>{{scope.row.prizeType == 1 ? '线上' : '现场'}}</span>
</template>
</el-table-column>
<el-table-column prop="prizeName" label="抽奖礼品" align="center"></el-table-column>
<el-table-column prop="expiryDateCode" label="兑换码" align="center">
<template scope="scope">
<span>{{scope.row.expiryDateCode || '无'}}</span>
</template>
</el-table-column>
<el-table-column prop="lotteryTime" label="中奖时间" align="center"></el-table-column>
</el-table>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="listQuery.page"
:page-sizes="[10,20,30, 50]"
:page-size="listQuery.limit"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
style="margin-top:20px"
></el-pagination>
</div>
</template>
<script>
import { applyListWin, excelWin } from 'api/applyManagements'
export default {
created() {
this.getList()
},
data() {
return {
information: {},
excelLoading: false,
loadingTab: false,
tableData: [],
time: '',
total: null, //总页数
options: [
{
id: '',
name: '全部'
},
{
id: 1,
name: '线上'
},
{
id: 2,
name: '现场'
}
],
listQuery: {
page: 1,
limit: 10,
startTime: null,
endTime: null,
phone: null,
activityId: 1,
prizeType: null,
hasWinning: 1
}
}
},
methods: {
//列表
getList() {
this.loadingTab = true
applyListWin(this.listQuery).then(data => {
if (data.status == 200) {
this.tableData = data.data.activityWinningRecords
this.total = data.data.totalCount
if (this.listQuery.page == 1) {
this.information =
data.data.activityWinningRecordTotalVo
}
} else {
this.$message(data.message)
}
})
setTimeout(() => {
this.loadingTab = false
}, 300)
},
//搜索
search() {
this.listQuery.page = 1
this.getList()
},
//抽奖类型筛选
changeClass() {
this.listQuery.page = 1
this.getList()
},
//清空搜索
clearSearch() {
this.listQuery = {
page: 1,
limit: 10,
startTime: null,
endTime: null,
phone: null,
activityId: 1
}
},
//导出
downloadExcel() {
this.excelLoading = true
var u = navigator.userAgent,
app = navigator.appVersion
excelWin(this.listQuery, { responseType: 'arraybuffer' }).then(
res => {
const content = res
const blob = new Blob([content], {
type: 'application/vnd.ms-excel'
})
const fileName = '中奖列表.xlsx'
if (u.indexOf('Edge') > -1) {
window.navigator.msSaveBlob(blob, fileName)
} else {
const elink = document.createElement('a')
elink.download = fileName
elink.style.display = 'none'
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href) // 释放URL 对象
document.body.removeChild(elink)
}
this.excelLoading = false
}
)
},
//时间筛选
changeTime(val) {
this.listQuery.page = 1
if (!!val) {
let value = val.split(' - ')
this.listQuery.startDate = value[0] + ' 00:00:00'
this.listQuery.endDate = value[1] + ' 23:59:59'
this.getList()
} else {
this.listQuery.startDate = null
this.listQuery.endDate = null
this.getList()
}
},
//页码
handleSizeChange(val) {
this.listQuery.limit = val
this.getList()
},
//分页
handleCurrentChange(val) {
this.listQuery.page = val
this.getList()
}
}
}
</script>
<style scoped>
.information {
border: 1px solid #ccc;
margin: 20px 0;
padding: 10px 20px;
}
.information h4 {
color: #333;
font-size: 16px;
font-weight: normal;
}
.information ul {
padding: 0;
border-top: 1px solid #eee;
padding: 10px 30px;
overflow: hidden;
}
.information li {
list-style: none;
text-align: center;
float: left;
width: 25%;
border-right: 1px solid #eee;
}
.information li:last-child {
border: none;
}
</style>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment