Jelajahi Sumber

活动类型新增开奖

sunlupeng 6 bulan lalu
induk
melakukan
85f95ca73b

+ 83 - 0
src/api/lotteryManage.js

@@ -0,0 +1,83 @@
+import request from '@/utils/request'
+
+export function createItem(data) {
+  return request({
+    url: '/mall-draw-pool/add',
+    method: 'post',
+    data
+  })
+}
+
+export function updateItem(data) {
+  return request({
+    url: '/mall-draw-pool/edit',
+    method: 'post',
+    data
+  })
+}
+
+export function list(query) {
+  return request({
+    url: '/mall-draw-pool/list',
+    method: 'get',
+    params:query
+  })
+}
+
+export function deleteitem(query) {
+  return request({
+    url: '/mall-draw-pool/remove',
+    method: 'post',
+    params:query
+  })
+}
+
+export function optionSelect(data) {
+  return request({
+    url: '/mall-draw-pool/optionselect',
+    method: 'get',
+    data
+  })
+}
+export function dataList(query) {
+  return request({
+    url: '/mall-draw-pool-data/list',
+    method: 'get',
+    params:query
+  })
+}
+export function dataAdd(data) {
+  return request({
+    url: '/mall-draw-pool-data/add',
+    method: 'post',
+    data
+  })
+}
+export function dataEdit(data) {
+  return request({
+    url: '/mall-draw-pool-data/edit',
+    method: 'post',
+    data
+  })
+}
+export function dataRemove(query) {
+  return request({
+    url: '/mall-draw-pool-data/remove',
+    method: 'post',
+    params:query
+  })
+}
+
+export function logsList(query) {
+  return request({
+    url: '/MidAutumn/Activity/midAutumn/list',
+    method: 'get',
+    params:query
+  })
+}
+
+
+
+
+
+

+ 10 - 2
src/api/public.js

@@ -65,7 +65,7 @@ export function couponsList(query) {
   })
   })
 }
 }
 
 
-// 获取已开启奖池下拉
+// 获取已开启抽奖奖池下拉
 export function prizePoolList(query) {
 export function prizePoolList(query) {
   return request({
   return request({
     url: '/mall-pool-type/actOptionselect',
     url: '/mall-pool-type/actOptionselect',
@@ -73,5 +73,13 @@ export function prizePoolList(query) {
     params:query
     params:query
   })
   })
 }
 }
-  
+
+// 获取已开启开奖奖池下拉
+export function drawPoolList(query) {
+  return request({
+    url: '/mall-draw-pool/actOptionselect',
+    method: 'get',
+    params:query
+  })
+}
   
   

+ 7 - 2
src/permission.js

@@ -28,6 +28,11 @@ const myRoles = [
   'raffleDataList', 
   'raffleDataList', 
   'raffleLogsList',
   'raffleLogsList',
 
 
+  'lotteryManage', 
+  'lotteryList', 
+  'lotteryDataList', 
+  'lotteryLogsList',
+
   'goodsManage', 
   'goodsManage', 
   'goodsExchangeRules', 
   'goodsExchangeRules', 
   'goodsList', 
   'goodsList', 
@@ -125,8 +130,8 @@ router.beforeEach((to, from, next) => {
       if (store.getters.roles.length === 0) { // 判断当前用户是否已拉取完user_info信息
       if (store.getters.roles.length === 0) { // 判断当前用户是否已拉取完user_info信息
         store.dispatch('GetUserInfo').then(res => {
         store.dispatch('GetUserInfo').then(res => {
           store.dispatch('GetUserMenus').then(res => { // 拉取user_info
           store.dispatch('GetUserMenus').then(res => { // 拉取user_info
-            const roles = res.data.data // note: roles must be a array! such as: ['editor','develop']
-            // const roles = myRoles;
+            // const roles = res.data.data // note: roles must be a array! such as: ['editor','develop']
+            const roles = myRoles;
             store.dispatch('GenerateRoutes', { roles }).then(() => { // 根据roles权限生成可访问的路由表
             store.dispatch('GenerateRoutes', { roles }).then(() => { // 根据roles权限生成可访问的路由表
               router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表
               router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表
               next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record
               next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record

+ 15 - 0
src/router/index.js

@@ -212,6 +212,21 @@ export const asyncRouterMap = [
       { path: 'raffleDataList/:id', component: _import('raffleManage/raffleDataList'), name: 'raffleDataList', meta: { title: '奖池奖品', noCache: false, hideTag: true, hidden: true }},
       { path: 'raffleDataList/:id', component: _import('raffleManage/raffleDataList'), name: 'raffleDataList', meta: { title: '奖池奖品', noCache: false, hideTag: true, hidden: true }},
     ]
     ]
   },
   },
+  {
+    path: '/lotteryManage',
+    component: Layout,
+    redirect: 'noredirect',
+    name: 'lotteryManage',
+    meta: {
+      title: '开奖管理',
+      icon: 'huodong'
+    },
+    children: [
+      { path: 'lotteryList', component: _import('lotteryManage/lotteryList'), name: 'lotteryList', meta: { title: '奖池列表', noCache: true }},
+      { path: 'lotteryLogsList', component: _import('lotteryManage/lotteryLogsList'), name: 'lotteryLogsList', meta: { title: '抽奖记录', noCache: true }},
+      { path: 'lotteryDataList/:id', component: _import('lotteryManage/lotteryDataList'), name: 'lotteryDataList', meta: { title: '奖池奖品', noCache: false, hideTag: true, hidden: true }},
+    ]
+  },
   {
   {
     path: '/couponsManage',
     path: '/couponsManage',
     component: Layout,
     component: Layout,

+ 57 - 13
src/views/activityManage/activityList.vue

@@ -104,9 +104,9 @@
                         </template>
                         </template>
                     </el-input>
                     </el-input>
                 </el-form-item>
                 </el-form-item>
-                <el-form-item v-if="dataForm.type=='3'"  label="关联奖池" prop="prizePoolId">
+                <el-form-item v-if="dataForm.type=='3' || dataForm.type=='5'"  label="关联奖池" prop="prizePoolId">
                     <el-select :disabled="dialogStatus == 'update'?true:false" v-model="dataForm.prizePoolId" clearable placeholder="请选择奖池" class="filter-item" style="width: 350px">
                     <el-select :disabled="dialogStatus == 'update'?true:false" v-model="dataForm.prizePoolId" clearable placeholder="请选择奖池" class="filter-item" style="width: 350px">
-                        <el-option :key="item.id" v-for="item in prizePoolList" :label="item.title" :value="item.id">
+                        <el-option :key="item.id" v-for="item in poolList" :label="item.title" :value="item.id">
                         </el-option>
                         </el-option>
                     </el-select>
                     </el-select>
                 </el-form-item>
                 </el-form-item>
@@ -122,10 +122,23 @@
                         </el-option>
                         </el-option>
                     </el-select>
                     </el-select>
                 </el-form-item>
                 </el-form-item>
-                <el-form-item v-if="dataForm.type=='3'" label="抽奖次数" prop="prizeNum">
-                    <el-input-number :disabled="dialogStatus == 'update'?true:false" style="width: 350px" :min="1" :step="1" v-model="dataForm.prizeNum"></el-input-number>
+                <el-form-item v-if="dataForm.type=='3' || dataForm.type=='5'" label="抽奖次数">
+                    <el-input-number :disabled="dialogStatus == 'update'?true:false" style="width: 350px" :min="0" :step="1" v-model="dataForm.prizeNum"></el-input-number>
                 </el-form-item>
                 </el-form-item>
-                <el-form-item v-if="dataForm.relationCoupon=='1' || dataForm.type=='3'" label="兑换截至时间" prop="couponEndTime">
+                <el-form-item v-if="dataForm.type=='5'" label="兑换积分" prop="expesenIntegral">
+                    <el-input-number :disabled="dialogStatus == 'update'?true:false" style="width: 350px" :min="0" :step="1" v-model="dataForm.expesenIntegral"></el-input-number>
+                </el-form-item>
+                <el-form-item v-if="dataForm.type=='5'" label="开奖日期" prop="winningTimeCron">
+                <el-input v-model="dataForm.winningTimeCron" placeholder="请输入cron执行表达式" style="width: 350px">
+                    <template slot="append">
+                    <el-button type="primary" :disabled="dialogStatus == 'update'?true:false" @click="handleShowCronDrawStart">
+                        生成表达式
+                        <i class="el-icon-time el-icon--right"></i>
+                    </el-button>
+                    </template>
+                </el-input>
+                </el-form-item>
+                <el-form-item v-if="dataForm.relationCoupon=='1' || dataForm.type=='3' || dataForm.type=='5'" label="兑换截至时间" prop="couponEndTime">
                     <el-date-picker 
                     <el-date-picker 
                     :disabled="dialogStatus == 'update'?true:false"
                     :disabled="dialogStatus == 'update'?true:false"
                     format="yyyy-MM-dd HH:mm:ss"
                     format="yyyy-MM-dd HH:mm:ss"
@@ -160,6 +173,9 @@
         <el-dialog title="结束日期Cron表达式生成器" :visible.sync="openCronEnd" append-to-body destroy-on-close class="scrollbar">
         <el-dialog title="结束日期Cron表达式生成器" :visible.sync="openCronEnd" append-to-body destroy-on-close class="scrollbar">
             <crontab @hide="openCronEnd=false" @fill="crontabFillEnd" :expression="expressionEnd"></crontab>
             <crontab @hide="openCronEnd=false" @fill="crontabFillEnd" :expression="expressionEnd"></crontab>
         </el-dialog>
         </el-dialog>
+        <el-dialog title="开奖日期Cron表达式生成器" :visible.sync="openCronDrawStart" append-to-body destroy-on-close class="scrollbar">
+            <crontab @hide="openCronDrawStart=false" @fill="crontabFillDrawStart" :expression="expressionDrawStart"></crontab>
+        </el-dialog>
     </div>
     </div>
 </template>
 </template>
   
   
@@ -182,7 +198,7 @@
 <script>
 <script>
 import { createItem, updateItem, activityList, activityState } from "@/api/activityManage";
 import { createItem, updateItem, activityList, activityState } from "@/api/activityManage";
 import Crontab from '@/components/Crontab'
 import Crontab from '@/components/Crontab'
-import { allUserList,dataTypeList,couponsList,prizePoolList } from "@/api/public";
+import { allUserList,dataTypeList,couponsList,prizePoolList,drawPoolList } from "@/api/public";
 import waves from "@/directive/waves"; // 水波纹指令
 import waves from "@/directive/waves"; // 水波纹指令
 import Tinymce from '@/components/Tinymce'
 import Tinymce from '@/components/Tinymce'
 
 
@@ -191,16 +207,16 @@ export default {
     directives: { waves },
     directives: { waves },
     data() {
     data() {
         return {
         return {
-            prizePoolList:[],
+            poolList:[],
             couponsList:[],
             couponsList:[],
              // 是否显示Cron表达式弹出层
              // 是否显示Cron表达式弹出层
             openCronStart: false,
             openCronStart: false,
             openCronEnd: false,
             openCronEnd: false,
-            openEndCron: false,
+            openCronDrawStart: false,
             // 传入的表达式
             // 传入的表达式
             expressionStart: "",
             expressionStart: "",
             expressionEnd: "",
             expressionEnd: "",
-            expressionEndCron: "",
+            expressionDrawStart: "",
             setDisabled: {
             setDisabled: {
                 disabledDate(time) {
                 disabledDate(time) {
                     // return time.getTime() > Date.now();  // 可选历史天、可选当前天、不可选未来天
                     // return time.getTime() > Date.now();  // 可选历史天、可选当前天、不可选未来天
@@ -224,13 +240,15 @@ export default {
                 title: '',
                 title: '',
                 imgUrl: '',
                 imgUrl: '',
                 activityUrl: '',
                 activityUrl: '',
+                winningTimeCron: '',
                 startCron: '',
                 startCron: '',
                 endCron: '',
                 endCron: '',
                 couponEndTime:'',
                 couponEndTime:'',
                 prizePoolId:'',
                 prizePoolId:'',
                 relationCoupon:'0',
                 relationCoupon:'0',
                 couponIds:[],
                 couponIds:[],
-                prizeNum:'',
+                prizeNum:undefined,
+                expesenIntegral:0,
                 participants: [],
                 participants: [],
                 content: '',
                 content: '',
                 images: [],
                 images: [],
@@ -254,6 +272,9 @@ export default {
                     { validator: this.checkEndTime, trigger: 'change' }
                     { validator: this.checkEndTime, trigger: 'change' }
                 ],
                 ],
                 content: [{ required: true, message: "内容不能为空", trigger: "blur" }],
                 content: [{ required: true, message: "内容不能为空", trigger: "blur" }],
+                winningTimeCron: [
+                    { required: true, message: "cron执行表达式不能为空", trigger: "blur" }
+                ],
                 startCron: [
                 startCron: [
                     { required: true, message: "cron执行表达式不能为空", trigger: "blur" }
                     { required: true, message: "cron执行表达式不能为空", trigger: "blur" }
                 ],
                 ],
@@ -275,6 +296,9 @@ export default {
                 prizeNum: [
                 prizeNum: [
                     { required: true, message: "请设置抽奖次数", trigger: "blur" }
                     { required: true, message: "请设置抽奖次数", trigger: "blur" }
                 ],
                 ],
+                expesenIntegral: [
+                    { required: true, message: "请设置兑换积分", trigger: "blur" }
+                ],
                 activityUrl: [
                 activityUrl: [
                     { required: true, message: "请填写活动连接", trigger: "blur" }
                     { required: true, message: "请填写活动连接", trigger: "blur" }
                 ],
                 ],
@@ -285,7 +309,6 @@ export default {
         }
         }
     },
     },
     created() {
     created() {
-        this.getPrizePoolList();
         this.getCouponsList();
         this.getCouponsList();
         this.getTypeList();
         this.getTypeList();
         this.getAllUserList(); 
         this.getAllUserList(); 
@@ -296,6 +319,7 @@ export default {
             this.dataForm.title = undefined; 
             this.dataForm.title = undefined; 
             this.dataForm.imgUrl = undefined;
             this.dataForm.imgUrl = undefined;
             this.dataForm.activityUrl = undefined;
             this.dataForm.activityUrl = undefined;
+            this.dataForm.winningTimeCron = undefined;
             this.dataForm.startCron = undefined;
             this.dataForm.startCron = undefined;
             this.dataForm.endCron = undefined;
             this.dataForm.endCron = undefined;
 
 
@@ -304,14 +328,25 @@ export default {
             this.dataForm.relationCoupon = '0';
             this.dataForm.relationCoupon = '0';
             this.dataForm.couponIds = [];
             this.dataForm.couponIds = [];
             this.dataForm.prizeNum = undefined;
             this.dataForm.prizeNum = undefined;
-
+            this.dataForm.expesenIntegral = 0;
             this.dataForm.participants = [];
             this.dataForm.participants = [];
             this.dataForm.content = undefined;
             this.dataForm.content = undefined;
             this.dataForm.images = [];
             this.dataForm.images = [];
+            if(this.dataForm.type == '3'){
+                this.getPrizePoolList();
+            }
+            if(this.dataForm.type == '5'){
+                this.getDrawPoolList();
+            }
+        },
+        getDrawPoolList() {
+            drawPoolList({}).then(response => {
+                this.poolList = response.data.data;
+            }).catch(() => { });
         },
         },
         getPrizePoolList() {
         getPrizePoolList() {
             prizePoolList({}).then(response => {
             prizePoolList({}).then(response => {
-                this.prizePoolList = response.data.data;
+                this.poolList = response.data.data;
             }).catch(() => { });
             }).catch(() => { });
         },
         },
         getCouponsList() {
         getCouponsList() {
@@ -325,6 +360,10 @@ export default {
             }).catch(() => {});
             }).catch(() => {});
         },
         },
           /** cron表达式按钮操作 */
           /** cron表达式按钮操作 */
+        handleShowCronDrawStart() {
+            this.expressionDrawStart = this.dataForm.winningTimeCron;
+            this.openCronDrawStart = true;
+        },
         handleShowCronStart() {
         handleShowCronStart() {
             this.expressionStart = this.dataForm.startCron;
             this.expressionStart = this.dataForm.startCron;
             this.openCronStart = true;
             this.openCronStart = true;
@@ -334,6 +373,9 @@ export default {
             this.openCronEnd = true;
             this.openCronEnd = true;
         },
         },
         /** 确定后回传值 */
         /** 确定后回传值 */
+        crontabFillDrawStart(value) {
+            this.dataForm.winningTimeCron = value;
+        },
         crontabFillStart(value) {
         crontabFillStart(value) {
             this.dataForm.startCron = value;
             this.dataForm.startCron = value;
         },
         },
@@ -413,6 +455,7 @@ export default {
                 title: '',
                 title: '',
                 imgUrl: '',
                 imgUrl: '',
                 activityUrl: '',
                 activityUrl: '',
+                winningTimeCron: '',
                 startCron: '',
                 startCron: '',
                 endCron: '',
                 endCron: '',
                 couponEndTime:'',
                 couponEndTime:'',
@@ -420,6 +463,7 @@ export default {
                 relationCoupon:'0',
                 relationCoupon:'0',
                 couponIds:[],
                 couponIds:[],
                 prizeNum:'',
                 prizeNum:'',
+                expesenIntegral:0,
                 participants: [],
                 participants: [],
                 content: '',
                 content: '',
                 images: [],
                 images: [],

+ 6 - 0
src/views/giftManage/giftList.vue

@@ -127,6 +127,9 @@
                 <el-form-item label="商品编号" prop="seq">
                 <el-form-item label="商品编号" prop="seq">
                     <el-input disabled placeholder="添加成功后自动生成" readonly v-model="dataForm.seq"></el-input>
                     <el-input disabled placeholder="添加成功后自动生成" readonly v-model="dataForm.seq"></el-input>
                 </el-form-item>
                 </el-form-item>
+                <el-form-item label="商品简称" prop="brief">
+                    <el-input v-model="dataForm.brief"></el-input>
+                </el-form-item>
                 <el-form-item label="商品名称" prop="name">
                 <el-form-item label="商品名称" prop="name">
                     <el-input v-model="dataForm.name"></el-input>
                     <el-input v-model="dataForm.name"></el-input>
                 </el-form-item>
                 </el-form-item>
@@ -275,6 +278,7 @@ export default {
             },
             },
             dataForm: {
             dataForm: {
                 skuType:1,
                 skuType:1,
+                brief: undefined,
                 name: undefined,
                 name: undefined,
                 seq: undefined,
                 seq: undefined,
                 productAttribute: undefined,
                 productAttribute: undefined,
@@ -297,6 +301,7 @@ export default {
                 create: "创建",
                 create: "创建",
             },
             },
             rules: {
             rules: {
+                brief: [{ required: true, message: "请填写商品简介", trigger: "blur" }],
                 name: [{ required: true, message: "请填写商品名称", trigger: "blur" }],
                 name: [{ required: true, message: "请填写商品名称", trigger: "blur" }],
                 imgUrl: [{ required: true, message: "请上传商品图片", trigger: "blur" }],
                 imgUrl: [{ required: true, message: "请上传商品图片", trigger: "blur" }],
                 imgIds: [{ required: true, message: "请上传商品副图", trigger: "blur" }],
                 imgIds: [{ required: true, message: "请上传商品副图", trigger: "blur" }],
@@ -406,6 +411,7 @@ export default {
                 skuType:1,
                 skuType:1,
                 comment: undefined,
                 comment: undefined,
                 skuDesc: undefined,
                 skuDesc: undefined,
+                brief: undefined,
                 name: undefined,
                 name: undefined,
                 seq: undefined,
                 seq: undefined,
                 productAttribute: undefined,
                 productAttribute: undefined,

+ 6 - 0
src/views/goodsManage/goodsList.vue

@@ -127,6 +127,9 @@
                 <el-form-item label="商品编号" prop="seq">
                 <el-form-item label="商品编号" prop="seq">
                     <el-input disabled placeholder="添加成功后自动生成" readonly v-model="dataForm.seq"></el-input>
                     <el-input disabled placeholder="添加成功后自动生成" readonly v-model="dataForm.seq"></el-input>
                 </el-form-item>
                 </el-form-item>
+                <el-form-item label="商品简介" prop="brief">
+                    <el-input v-model="dataForm.brief"></el-input>
+                </el-form-item>
                 <el-form-item label="商品名称" prop="name">
                 <el-form-item label="商品名称" prop="name">
                     <el-input v-model="dataForm.name"></el-input>
                     <el-input v-model="dataForm.name"></el-input>
                 </el-form-item>
                 </el-form-item>
@@ -275,6 +278,7 @@ export default {
             },
             },
             dataForm: {
             dataForm: {
                 skuType:0,
                 skuType:0,
+                brief: undefined,
                 name: undefined,
                 name: undefined,
                 seq: undefined,
                 seq: undefined,
                 productAttribute: undefined,
                 productAttribute: undefined,
@@ -296,6 +300,7 @@ export default {
                 create: "创建",
                 create: "创建",
             },
             },
             rules: {
             rules: {
+                brief: [{ required: true, message: "请填写商品简介", trigger: "blur" }],
                 name: [{ required: true, message: "请填写商品名称", trigger: "blur" }],
                 name: [{ required: true, message: "请填写商品名称", trigger: "blur" }],
                 imgUrl: [{ required: true, message: "请上传商品图片", trigger: "blur" }],
                 imgUrl: [{ required: true, message: "请上传商品图片", trigger: "blur" }],
                 imgIds: [{ required: true, message: "请上传商品副图", trigger: "blur" }],
                 imgIds: [{ required: true, message: "请上传商品副图", trigger: "blur" }],
@@ -404,6 +409,7 @@ export default {
                 skuType:0,
                 skuType:0,
                 comment: undefined,
                 comment: undefined,
                 skuDesc: undefined,
                 skuDesc: undefined,
+                brief: undefined,
                 name: undefined,
                 name: undefined,
                 seq: undefined,
                 seq: undefined,
                 productAttribute: undefined,
                 productAttribute: undefined,

+ 462 - 0
src/views/lotteryManage/lotteryDataList.vue

@@ -0,0 +1,462 @@
+<template>
+    <div class="app-container calendar-list-container">
+
+        <!-- 查询和其他操作 -->
+        <div class="filter-container">
+            <el-select @change="changepoolId" v-model="listQuery.poolId" placeholder="奖池" class="filter-item" style="width: 200px">
+                <el-option :key="item.id" v-for="item in dictNameList" :label="item.title" :value="item.id">
+                </el-option>
+            </el-select>
+            <el-button class="filter-item" type="primary" v-waves icon="el-icon-search" @click="handleFilter">查找</el-button>
+            <el-button class="filter-item" type="primary" @click="handleCreate" icon="el-icon-edit">添加</el-button>
+            <!-- <el-button class="filter-item" type="warning" icon="el-icon-delete" @click="delAll">批量删除</el-button> -->
+
+        </div>
+
+        <!-- 查询结果 -->
+        <el-table size="small" :data="list" v-loading="listLoading" @selection-change="handleSelectionChange"
+            element-loading-text="正在查询中。。。" border fit highlight-current-row>
+            <!-- <el-table-column type="selection" width="55px"> </el-table-column> -->
+            <el-table-column align="center" min-width="100px" label="奖品类型" prop="prizeTypeName">
+            </el-table-column>
+            <el-table-column align="center" min-width="150px" label="奖品名称" prop="prizeName">
+            </el-table-column>
+            <el-table-column align="center" min-width="150px" label="商品券">
+                <template slot-scope="scope">
+                    <span v-if="scope.row.couponVo">{{ scope.row.couponVo.couponName }}</span>
+                    <span v-else>无</span>
+                </template>
+            </el-table-column>
+            <el-table-column align="center" min-width="100px" label="奖励积分" prop="integral">
+            </el-table-column>
+            <el-table-column align="center" min-width="100px" label="奖品数量" prop="prizeActualStock">
+            </el-table-column>
+            <el-table-column align="center" min-width="100px" label="剩余数量" prop="prizeStock">
+            </el-table-column>
+            <el-table-column align="center" min-width="100px" label="状态">
+            <template slot-scope="scope">
+                <span v-if="scope.row.status == '0'">关闭</span>
+                <span v-else>开启</span>
+            </template>
+        </el-table-column>
+            <el-table-column align="center" label="操作" width="240px" class-name="small-padding fixed-width">
+                <template slot-scope="scope">
+                    <el-button type="primary" size="small" @click="handleUpdate(scope.row, false)">编辑</el-button>
+
+                    <el-button type="danger" size="small" @click="handleDelete(scope.row)">删除</el-button>
+                </template>
+            </el-table-column>
+        </el-table>
+
+        <!-- 分页 -->
+        <div class="pagination-container">
+            <el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange"
+                :current-page="listQuery.page" :page-sizes="[10, 20, 30, 50]" :page-size="listQuery.limit"
+                layout="total, sizes, prev, pager, next, jumper" :total="total">
+            </el-pagination>
+        </div>
+
+        <!-- 添加或修改对话框 -->
+        <el-dialog
+        :close-on-click-modal="false"
+        :title="textMap[dialogStatus]"
+        :visible.sync="dialogFormVisible"
+        width="40%"
+      >
+        <el-form :rules="rules" ref="dataForm" :model="dataForm" status-icon label-position="left" label-width="80px" style='width: 700px; margin-left:50px;'>
+            <el-form-item  label="奖品类型" prop="prizeType">
+              <el-select :disabled="dialogStatus == 'update'?true:false" v-model="dataForm.prizeType" clearable placeholder="请选择类型" class="filter-item" style="width: 300px" @change="clickPrizeType">
+                <el-option :key="item.dictValue" v-for="item in dataTypeList" :label="item.dictLabel" :value="item.dictValue">
+                        </el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item  label="奖品名称" prop="prizeName">
+              <el-input style="width: 300px" v-model="dataForm.prizeName"></el-input>
+            </el-form-item>
+            <el-form-item v-if="dataForm.prizeType=='10'"  label="兑换券" prop="couponId">
+                <el-select v-model="dataForm.couponId" clearable placeholder="请选择兑换券" class="filter-item" style="width: 300px">
+                    <el-option :key="item.id" v-for="item in couponsList" :label="item.couponName" :value="item.id">
+                    </el-option>
+                </el-select>
+            </el-form-item>
+            <!-- <el-form-item style="width: 800px" label="商品图片" prop="imgUrl">
+                    <el-upload :limit="1" :action="fileImgUrl" list-type="picture-card" :file-list="dataForm.images"
+                            :on-success="handleGallerySucess" :on-exceed="handleExceed" :before-upload="uploadBannerImg"
+                            :on-remove="handleRemove">
+                            <i class="el-icon-plus"></i>
+                        </el-upload>
+                </el-form-item> -->
+            <el-form-item v-if="dataForm.prizeType=='20'" label="奖励积分" prop="integral">
+                <el-input-number style="width: 300px" :precision="0" :step="1" v-model="dataForm.integral"></el-input-number>
+            </el-form-item>
+     
+            <el-form-item  label="奖品数量" prop="prizeActualStock">
+                <el-input-number style="width: 300px" :precision="0" :step="1" v-model="dataForm.prizeActualStock"></el-input-number>
+            </el-form-item>
+            <el-form-item  label="状态">
+                <el-radio-group v-model="dataForm.status">
+                    <el-radio :label="'0'">关闭</el-radio>
+                    <el-radio :label="'1'">开启</el-radio>
+                </el-radio-group>
+            </el-form-item>
+            
+            
+        </el-form>
+        <div slot="footer" class="dialog-footer">
+          <el-button @click="dialogFormVisible = false">取消</el-button>
+          <el-button v-if="dialogStatus == 'create'" type="primary" @click="createData">确定</el-button>
+          <el-button v-else type="primary" @click="updateData">确定</el-button>
+        </div>
+      </el-dialog>
+
+    </div>
+</template>
+  
+<style>
+.demo-table-expand {
+    font-size: 0;
+}
+
+.demo-table-expand label {
+    width: 200px;
+    color: #99a9bf;
+}
+
+.demo-table-expand .el-form-item {
+    margin-right: 0;
+    margin-bottom: 0;
+}
+</style>
+  
+<script>
+import { dataList, dataAdd, dataEdit, dataRemove, optionSelect } from "@/api/lotteryManage";
+import { dataTypeList,couponsList } from "@/api/public";
+import waves from "@/directive/waves"; // 水波纹指令
+import Tinymce from '@/components/Tinymce'
+
+export default {
+    components: { Tinymce },
+    directives: { waves },
+    data() {
+        return {
+            couponsList:[],
+            dataTypeList:[],
+            isCoupon:false,
+            poolId:'',
+            dictNameList: [],
+            list: [
+            ],
+            delarr: [],
+            multipleSelection: [],
+            total: 0,
+            listLoading: false,
+            listQuery: {
+                page: 1,
+                limit: 10,
+                poolId: '',
+            },
+            dataForm: {
+                prizeType: undefined,
+                couponId:undefined,
+                prizeName: undefined,
+                imgUrl: undefined,
+                integral: undefined,
+                prizeActualStock: undefined,
+                prizeStock: undefined,
+                status: '0',
+                images: [],
+            },
+            dialogFormVisible: false,
+            dialogStatus: '',
+            textMap: {
+                update: "编辑",
+                create: "创建",
+            },
+            rules: {
+                prizeType: [{ required: true, message: "请选择奖品类型", trigger: "blur" }],
+                couponId: [{ required: true, message: "请选择兑换卷", trigger: "blur" }],
+                prizeName: [{ required: true, message: "奖品名称不能为空", trigger: "blur" }],
+                imgUrl: [{ required: true, message: "请上传奖品图片", trigger: "blur" }],
+                integral: [{ required: true, message: "奖励积分不能为空", trigger: "blur" }],
+                prizeActualStock: [{ required: true, message: "奖品数量不能为空", trigger: "blur" }],
+                prizeStock: [{ required: true, message: "剩余数量不能为空", trigger: "blur" }],
+            },
+            fileImgUrl: this.upLoadUrl,
+        }
+    },
+    created() {
+        this.poolId = this.$route.params.id;
+        this.getOptionSelect();
+        this.getDataTypeList();
+        this.getCouponsList();
+    },
+    methods: {
+        clickPrizeType(){
+            this.dataForm.couponId = undefined; 
+            this.dataForm.prizeName = undefined;
+            this.dataForm.imgUrl = undefined;
+            this.dataForm.integral = undefined;
+            this.dataForm.prizeActualStock = undefined;
+            this.dataForm.prizeStock = undefined;
+            this.dataForm.status = '0';
+            this.dataForm.images = [];
+        },
+        handleRemove(file, fileList) {
+            console.log(file, fileList);
+            let images = [];
+            for (let i in fileList) {
+                let response = fileList[i].response;
+                let url = response.data.url;
+                images.push(url);
+            }
+            this.dataForm.images = images;
+            this.dataForm.imgUrl = images.join(",");
+        },
+        uploadBannerImg(file) {
+            const isJPGs = file.type === "image/jpeg";
+            console.log(isJPGs);
+        },
+        handleExceed(files, fileList) {
+            this.$message.warning(
+                `当前限制选择 1 个文件,本次选择了 ${files.length} 个文件!,共选择了 ${files.length + fileList.length
+                } 个文件`
+            );
+        },
+        handleGallerySucess(res, file, fileList) {
+            this.dataForm.imgUrl = ""; // 清空画廊图片数组
+
+            let images = [];
+            for (let i in fileList) {
+                let response = fileList[i].response;
+                if (response.errno && response.errno != "0") {
+                    this.$message.error("该图片上传失败,已被移除,请重新上传!");
+                    // 上传失败移除该 file 对象
+                    fileList.splice(i, 1);
+                } else {
+                    let url = response.data.url;
+                    images.push(url);
+                }
+            }
+            this.dataForm.images = images;
+            this.dataForm.imgUrl = images.join(",");
+        },
+        getCouponsList() {
+            couponsList({}).then(response => {
+                this.couponsList = response.data.data;
+            }).catch(() => { });
+        },
+        getDataTypeList() {
+            dataTypeList({dictType:'draw_prize_type'}).then(response => {
+                this.dataTypeList = response.data.data;
+            }).catch(() => {});
+        },
+        changepoolId(val){
+            this.poolId = val;
+            this.listQuery.poolId = val;
+            this.getList();
+        },
+        getOptionSelect(){
+            optionSelect().then(response => {
+                this.dictNameList = response.data.data;
+                this.listQuery.poolId = this.poolId;
+                this.getList();
+            }).catch(() => {})
+        },
+        resetForm() {
+            this.dataForm = {
+                prizeType: undefined,
+                couponId:undefined,
+                prizeName: undefined,
+                imgUrl: undefined,
+                integral: undefined,
+                prizeActualStock: undefined,
+                prizeStock: undefined,
+                status: '0',
+                images: [],
+            };
+        },
+        handleCreate() {
+            this.resetForm();
+            this.dataForm.poolId = this.poolId;
+            this.dialogFormVisible = true;
+            this.dialogStatus = "create";
+            this.$nextTick(() => {
+                this.$refs["dataForm"].clearValidate();
+            });
+        },
+        createData() {
+            this.$refs["dataForm"].validate((valid) => {
+                if (valid) {
+                    dataAdd(this.dataForm)
+                        .then(() => {
+                            this.dialogFormVisible = false;
+                            this.$notify({
+                                title: "成功",
+                                message: "创建成功",
+                                type: "success",
+                                duration: 2000,
+                            });
+                            this.getList()
+                        })
+                }
+            });
+        },
+        getList() {
+            this.listLoading = true
+            dataList(this.listQuery).then(response => {
+                this.list = response.data.data.items
+                this.total = response.data.data.total
+                this.listLoading = false
+            }).catch(() => {
+                this.list = []
+                this.total = 0
+                this.listLoading = false
+            })
+        },
+
+        handleFilter() {
+            this.listQuery.page = 1
+            this.getList()
+        },
+
+        handleSizeChange(val) {
+            this.listQuery.limit = val
+            this.getList()
+        },
+
+        handleCurrentChange(val) {
+            this.listQuery.page = val
+            this.getList()
+        },
+
+        handleUpdate(row) {
+            this.dataForm = Object.assign({}, row);
+            if (this.dataForm.imgUrl) {
+                let images = this.dataForm.imgUrl.split(",");
+                this.dataForm.images = [];
+                for (let i in images) {
+                    let url = images[i];
+                    let name = "image_" + i;
+
+                    this.dataForm.images.push({
+                        name: name,
+                        url: url,
+                        response: { error: "0", data: { url: url } },
+                    });
+                }
+            }
+            this.dialogStatus = 'update'
+            this.dialogFormVisible = true
+            this.$nextTick(() => {
+                this.$refs['dataForm'].clearValidate()
+            })
+        },
+
+        updateData() {
+            this.$refs['dataForm'].validate((valid) => {
+                if (valid) {
+                    dataEdit(this.dataForm).then(() => {
+                        this.dialogFormVisible = false
+                        this.$notify({
+                            title: '成功',
+                            message: '更新成功',
+                            type: 'success',
+                            duration: 2000
+                        })
+                        this.getList()
+                    })
+
+                }
+            })
+        },
+
+        handleDelete(row) {
+
+            this.$confirm('确认删除吗?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                dataRemove({ prizeIds:row.id}).then(response => {
+                    this.$notify({
+                        title: '成功',
+                        message: '删除成功',
+                        type: 'success',
+                        duration: 2000
+                    })
+                    const index = this.list.indexOf(row)
+                    this.list.splice(index, 1)
+                })
+            }).catch(() => {
+
+            })
+
+        },
+        delAll() {
+            this.$confirm("确认删除吗?", "提示", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            })
+                .then(() => {
+                    const length = this.multipleSelection.length;
+
+                    if (length > 0) {
+                        for (let i = 0; i < length; i++) {
+                            this.delarr.push(this.multipleSelection[i].id);
+                        }
+                        const  ids = this.delarr.join(",");
+                        dataRemove({  prizeIds:  ids })
+                            .then(() => {
+                                this.$notify({
+                                    title: "成功",
+                                    message: "删除成功",
+                                    type: "success",
+                                    duration: 2000,
+                                });
+                                this.getList();
+                            })
+                            .catch(() => { });
+                    } else {
+                        this.$notify({
+                            title: "警告提示",
+                            message: "请选择要删除的信息!",
+                            type: "warning",
+                        });
+                    }
+                })
+                .catch(() => { });
+        },
+        handleSelectionChange(val) {
+            this.multipleSelection = val;
+        },
+    }
+}
+</script>
+<style>
+.ad-avatar-uploader .el-upload {
+    border: 1px dashed #d9d9d9;
+    border-radius: 6px;
+    cursor: pointer;
+    position: relative;
+    overflow: hidden;
+}
+
+.ad-avatar-uploader .el-upload:hover {
+    border-color: #409EFF;
+}
+
+.ad-avatar-uploader-icon {
+    font-size: 28px;
+    color: #8c939d;
+    width: 178px;
+    height: 178px;
+    line-height: 178px;
+    text-align: center;
+}
+
+.ad-avatar {
+    display: block;
+}
+</style>
+  

+ 347 - 0
src/views/lotteryManage/lotteryList.vue

@@ -0,0 +1,347 @@
+<template>
+  <div class="app-container calendar-list-container">
+
+    <!-- 查询和其他操作 -->
+    <div class="filter-container">
+      <el-input clearable class="filter-item" style="width: 200px;" placeholder="请输入奖池名称" v-model="listQuery.title"></el-input>
+      <el-select v-model="listQuery.status" clearable placeholder="状态" class="filter-item" style="width: 200px">
+          <el-option :key="item.type" v-for="item in typeList" :label="item.name" :value="item.type">
+          </el-option>
+      </el-select>
+      <el-button class="filter-item" type="primary" v-waves icon="el-icon-search" @click="handleFilter">查找</el-button>
+      <el-button class="filter-item" type="primary" @click="handleCreate" icon="el-icon-edit">添加</el-button>
+      <!-- <el-button class="filter-item" type="warning" icon="el-icon-delete" @click="delAll">批量删除</el-button> -->
+    </div>
+
+    <!-- 查询结果 -->
+    <el-table
+      size="small"
+      :data="list"
+      @selection-change="handleSelectionChange"
+      v-loading="listLoading"
+      element-loading-text="正在查询中。。。"
+      border
+      fit
+      highlight-current-row
+    >
+      <!-- <el-table-column type="selection" width="55px"> </el-table-column> -->
+      <el-table-column type="index" label="序号" header-align="center" align="center">
+      </el-table-column>
+
+      <el-table-column align="center" min-width="100px" label="奖池名称">
+        <template slot-scope="scope">
+              <router-link :to="{name: 'lotteryDataList', params: { id: scope.row.id }}">
+                  <div style="color: #337ab7;cursor: pointer;">{{ scope.row.title }}</div>
+              </router-link>
+          </template>
+      </el-table-column>
+      <el-table-column align="center" min-width="100px" label="状态">
+            <template slot-scope="scope">
+                <span v-if="scope.row.status === '1'">开启</span>
+                <span v-else>关闭</span>
+            </template>
+            
+        </el-table-column>
+      <el-table-column align="center" min-width="200px" label="备注" prop="content">
+      </el-table-column>
+      <el-table-column align="center" min-width="150px" label="创建时间" prop="createTime">
+      </el-table-column>
+      <el-table-column align="center" label="操作" width="240px" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            type="primary"
+            size="small"
+            @click="handleUpdate(scope.row, false)"
+            >编辑</el-button
+          >
+
+          <el-button type="danger" size="mini"  @click="handleDelete(scope.row)">删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <!-- 分页 -->
+    <div class="pagination-container">
+      <el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="listQuery.page"
+        :page-sizes="[10,20,30,50]" :page-size="listQuery.limit" layout="total, sizes, prev, pager, next, jumper" :total="total">
+      </el-pagination>
+    </div>
+
+    <!-- 添加或修改对话框 -->
+    <el-dialog
+    :close-on-click-modal="false"
+      :title="textMap[dialogStatus]"
+      :visible.sync="dialogFormVisible"
+      width="40%"
+    >
+      <el-form :rules="rules" ref="dataForm" :model="dataForm" status-icon label-position="left" label-width="80px" style='width: 700px; margin-left:50px;'>
+          <el-form-item  label="奖池名称" prop="title">
+            <el-input style="width: 300px" v-model="dataForm.title"></el-input>
+          </el-form-item>
+          <el-form-item  label="状态">
+              <el-radio-group v-model="dataForm.status">
+                  <el-radio :label="'0'">关闭</el-radio>
+                  <el-radio :label="'1'">开启</el-radio>
+              </el-radio-group>
+          </el-form-item>
+          <el-form-item  label="备注">
+            <el-input type="textarea" :rows="2" style="width: 300px" v-model="dataForm.content"></el-input>
+          </el-form-item>
+          
+          
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="dialogFormVisible = false">取消</el-button>
+        <el-button v-if="dialogStatus == 'create'" type="primary" @click="createData">确定</el-button>
+        <el-button v-else type="primary" @click="updateData">确定</el-button>
+      </div>
+    </el-dialog>
+
+  </div>
+</template>
+
+<style>
+  .demo-table-expand {
+    font-size: 0;
+  }
+  .demo-table-expand label {
+    width: 200px;
+    color: #99a9bf;
+  }
+  .demo-table-expand .el-form-item {
+    margin-right: 0;
+    margin-bottom: 0;
+  }
+</style>
+
+<script>
+  import { list, createItem, updateItem, deleteitem } from "@/api/lotteryManage";
+  import waves from "@/directive/waves"; // 水波纹指令
+  import Tinymce from '@/components/Tinymce'
+
+export default {
+  components: { Tinymce },
+  directives: { waves },
+  data() {
+    return {
+      typeList: [
+      {
+        type: "1",
+        name: "开启",
+      },
+      {
+        type: "0",
+        name: "关闭",
+      },
+    ],
+      list: [
+        
+      ],
+      delarr: [],
+      multipleSelection: [],
+      total: 0,
+      listLoading: false,
+      listQuery: {
+        page: 1,
+        limit: 10,
+        title: '',
+        status: '',
+      },
+      dataForm: {
+        title: undefined,
+        status: '1',
+        content: undefined,
+      },
+      dialogFormVisible: false,
+      dialogStatus: '',
+      textMap: {
+        update: "编辑",
+        create: "创建",
+      },
+      imageUrl: undefined,
+      rules: {
+        title: [{ required: true, message: "字典名称不能为空", trigger: "blur" }],
+      },
+    }
+  },
+  created() {
+      this.getList();
+  },
+  methods: {
+      handleDictData(row){
+
+      },
+    resetForm() {
+      this.dataForm = {
+          title: undefined,
+          status: '1',
+          content: undefined,
+      };
+    },
+    handleCreate() {
+      this.resetForm();
+      this.dialogFormVisible = true;
+      this.dialogStatus = "create";
+      this.$nextTick(() => {
+        this.$refs["dataForm"].clearValidate();
+      });
+    },
+    createData() {
+      this.$refs["dataForm"].validate((valid) => {
+        if (valid) {
+          createItem(this.dataForm)
+                .then(() => {
+                  this.getList();
+                  this.dialogFormVisible = false;
+
+                  this.$notify({
+                    title: "成功",
+                    message: "创建成功",
+                    type: "success",
+                    duration: 2000,
+                  });
+                  this.getList()
+                })
+        }
+      });
+    },
+    getList() {
+      this.listLoading = true
+      list(this.listQuery).then(response => {
+        this.list = response.data.data.items
+        this.total = response.data.data.total
+        this.listLoading = false
+      }).catch(() => {
+        this.list = []
+        this.total = 0
+        this.listLoading = false
+      })
+    },
+
+    handleFilter() {
+      this.listQuery.page = 1
+      this.getList()
+    },
+
+    handleSizeChange(val) {
+      this.listQuery.limit = val
+      this.getList()
+    },
+
+    handleCurrentChange(val) {
+      this.listQuery.page = val
+      this.getList()
+    },
+
+    handleUpdate(row) {
+      this.dataForm = Object.assign({}, row);
+      this.dialogStatus = 'update'
+      this.dialogFormVisible = true
+      this.$nextTick(() => {
+        this.$refs['dataForm'].clearValidate()
+      })
+    },
+
+    updateData() {
+      this.$refs['dataForm'].validate((valid) => {
+        if (valid) {
+          updateItem(this.dataForm).then(() => {
+              this.dialogFormVisible = false
+              this.$notify({
+                title: '成功',
+                message: '更新成功',
+                type: 'success',
+                duration: 2000
+              })
+              this.getList()
+            })
+          
+        }
+      })
+    },
+
+    handleDelete(row) {
+
+      this.$confirm('确认删除吗?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        deleteitem({poolId:row.id}).then(response => {
+          this.$notify({
+            title: '成功',
+            message: '删除成功',
+            type: 'success',
+            duration: 2000
+          })
+          this.getList()
+        })
+      }).catch(() => {
+
+      })
+
+    },
+    delAll() {
+          this.$confirm("确认删除吗?", "提示", {
+              confirmButtonText: "确定",
+              cancelButtonText: "取消",
+              type: "warning",
+          })
+              .then(() => {
+                  const length = this.multipleSelection.length;
+
+                  if (length > 0) {
+                      for (let i = 0; i < length; i++) {
+                          this.delarr.push(this.multipleSelection[i].dictId);
+                      }
+                      const dictIds = this.delarr.join(",");
+                      deleteitem({ dictIds: dictIds })
+                          .then(() => {
+                              this.$notify({
+                                  title: "成功",
+                                  message: "删除成功",
+                                  type: "success",
+                                  duration: 2000,
+                              });
+                              this.getList();
+                          })
+                          .catch(() => { });
+                  } else {
+                      this.$notify({
+                          title: "警告提示",
+                          message: "请选择要删除的信息!",
+                          type: "warning",
+                      });
+                  }
+              })
+              .catch(() => { });
+      },
+      handleSelectionChange(val) {
+          this.multipleSelection = val;
+      },
+  }
+}
+</script>
+<style>
+  .ad-avatar-uploader .el-upload {
+    border: 1px dashed #d9d9d9;
+    border-radius: 6px;
+    cursor: pointer;
+    position: relative;
+    overflow: hidden;
+  }
+  .ad-avatar-uploader .el-upload:hover {
+    border-color: #409EFF;
+  }
+  .ad-avatar-uploader-icon {
+    font-size: 28px;
+    color: #8c939d;
+    width: 178px;
+    height: 178px;
+    line-height: 178px;
+    text-align: center;
+  }
+  .ad-avatar {
+    display: block;
+  }
+</style>

+ 148 - 0
src/views/lotteryManage/lotteryLogsList.vue

@@ -0,0 +1,148 @@
+<template>
+    <div class="app-container calendar-list-container">
+
+        <!-- 查询和其他操作 -->
+        <div class="filter-container">
+            <el-input clearable class="filter-item" style="width: 200px;" placeholder="员工"
+                v-model="listQuery.userName"></el-input>
+            <el-input clearable class="filter-item" style="width: 200px;" placeholder="活动名称"
+                v-model="listQuery.actTitle"></el-input>
+            <el-date-picker
+            class="filter-item"
+            value-format="yyyy-MM-dd"
+            v-model="listQuery.createTime"
+            type="date"
+            placeholder="日期">
+            </el-date-picker>
+            <el-button class="filter-item" type="primary" v-waves icon="el-icon-search" @click="handleFilter">查找</el-button>
+            <el-button class="filter-item" type="primary"  :loading="downloadLoading" v-waves icon="el-icon-download" @click="handleDownload">导出</el-button>
+        </div>
+
+        <!-- 查询结果 -->
+        <el-table size="small" :data="list" v-loading="listLoading" element-loading-text="正在查询中。。。" border fit
+            highlight-current-row>
+            <el-table-column type="index" label="序号" header-align="center" align="center">
+            </el-table-column>
+            <el-table-column align="center" min-width="180px" label="部门" prop="deptName">
+            </el-table-column>
+            <el-table-column align="center" min-width="80px" label="员工" prop="userName">
+            </el-table-column>
+            <el-table-column align="center" min-width="80px" label="活动名称" prop="actTitle">
+            </el-table-column>
+            <el-table-column align="center" min-width="80px" label="消耗积分" prop="expenseIntegral">
+            </el-table-column>
+            <el-table-column align="center" min-width="80px" label="奖号" prop="couponNumber">
+            </el-table-column>
+            <el-table-column align="center" min-width="150px" label="日期" prop="createTime">
+            </el-table-column>
+           
+        </el-table>
+
+        <!-- 分页 -->
+        <div class="pagination-container">
+            <el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange"
+                :current-page="listQuery.page" :page-sizes="[10, 20, 30, 50]" :page-size="listQuery.limit"
+                layout="total, sizes, prev, pager, next, jumper" :total="total">
+            </el-pagination>
+        </div>
+    </div>
+</template>
+  
+<style>
+.demo-table-expand {
+    font-size: 0;
+}
+
+.demo-table-expand label {
+    width: 200px;
+    color: #99a9bf;
+}
+
+.demo-table-expand .el-form-item {
+    margin-right: 0;
+    margin-bottom: 0;
+}
+</style>
+  
+<script>
+import { logsList } from "@/api/lotteryManage";
+import waves from "@/directive/waves"; // 水波纹指令
+
+export default {
+    directives: { waves },
+    data() {
+        return {
+            list: [],
+            total: 0,
+            listLoading: false,
+            downloadLoading: false,
+            listQuery: {
+                page: 1,
+                limit: 10,
+                userName: '',
+                actTitle:'',
+                createTime: '',
+            },
+        }
+    },
+    created() {
+        this.getList();
+    },
+    methods: {
+        handleDownload() {
+            window.location.href = process.env.BASE_API + '/mall-prize/export/log?userName=' + this.listQuery.userName + '&actTitle=' + this.listQuery.actTitle + '&createTime=' + this.listQuery.createTime;
+        },
+        getList() {
+            this.listLoading = true
+            logsList(this.listQuery).then(response => {
+                this.list = response.data.data.items
+                this.total = response.data.data.total
+                this.listLoading = false
+            }).catch(() => {})
+        },
+       
+
+        handleFilter() {
+            this.listQuery.page = 1
+            this.getList()
+        },
+        handleSizeChange(val) {
+            this.listQuery.limit = val
+            this.getList()
+        },
+        handleCurrentChange(val) {
+            this.listQuery.page = val
+            this.getList()
+        },
+
+        
+    }
+}
+</script>
+<style>
+.ad-avatar-uploader .el-upload {
+    border: 1px dashed #d9d9d9;
+    border-radius: 6px;
+    cursor: pointer;
+    position: relative;
+    overflow: hidden;
+}
+
+.ad-avatar-uploader .el-upload:hover {
+    border-color: #409EFF;
+}
+
+.ad-avatar-uploader-icon {
+    font-size: 28px;
+    color: #8c939d;
+    width: 178px;
+    height: 178px;
+    line-height: 178px;
+    text-align: center;
+}
+
+.ad-avatar {
+    display: block;
+}
+</style>
+