Browse Source

三周年抽奖活动后台抽奖页面功能
1.显示活动列表
2.显示奖项列表
3.布局调整

yanliming 4 months ago
parent
commit
9d562aa295

BIN
public/bg2.jpg


+ 1 - 1
public/index.html

@@ -7,7 +7,7 @@
   <meta name="viewport" content="width=device-width,initial-scale=1.0">
   <meta name="viewport" content="width=device-width,initial-scale=1.0">
   <link rel="icon" href="<%= BASE_URL %>favicon.ico">
   <link rel="icon" href="<%= BASE_URL %>favicon.ico">
   <script type="text/javascript" src="./static/tinymce/tinymce.min.js"></script>
   <script type="text/javascript" src="./static/tinymce/tinymce.min.js"></script>
-  <title>荆鹏智能地锁</title>
+  <title>优电联盟三周年抽奖活动</title>
 </head>
 </head>
 
 
 <body>
 <body>

BIN
public/zjmd.png


+ 5 - 1
src/api/base/activityInfo.js

@@ -41,6 +41,10 @@ function batchRemove(idList) {
   });
   });
 }
 }
 
 
+function list() {
+  return request.post(constant.serverUrl + "/base/activityInfo/list");
+}
+
 export default {
 export default {
-  pageList, create, edit, add, update, remove, batchRemove
+  pageList, create, edit, add, update, remove, batchRemove,list
 }
 }

+ 15 - 0
src/api/business/startLottery.js

@@ -0,0 +1,15 @@
+import request from '@/utils/request'
+import constant from '@/constant'
+
+
+function list() {
+    return request.post(constant.serverUrl + "/business/startLottery/list");
+}
+
+function findByActivityId(formData) {
+    return request.post(constant.serverUrl + "/business/startLottery/findByActivityId", formData);
+  }
+  
+export default {
+    list,findByActivityId
+}

+ 7 - 0
src/routers/index.js

@@ -50,6 +50,10 @@ export const constantRoutes = [
       }
       }
     ]
     ]
   },
   },
+  {
+    path: '/startLottery',
+    component: () => import('@/views/startLottery')
+  },
 ];
 ];
 
 
 // Array.prototype.push.apply(routes, caseRouters);
 // Array.prototype.push.apply(routes, caseRouters);
@@ -80,6 +84,9 @@ router.beforeEach((to, from, next) => {
     if (to.path === '/login') {
     if (to.path === '/login') {
       next();
       next();
     }
     }
+    else if(to.path === '/startLottery'){
+      next();
+    }
     else {
     else {
       next(`/login?redirect=${to.path}`);
       next(`/login?redirect=${to.path}`);
     }
     }

+ 45 - 78
src/views/base/startLottery-test.vue

@@ -73,7 +73,7 @@
         <el-table-column prop="lotteryPersonnelNickName" label="昵称" ></el-table-column>
         <el-table-column prop="lotteryPersonnelNickName" label="昵称" ></el-table-column>
         <el-table-column prop="lotteryPersonnelPhone" label="中奖人电话" ></el-table-column>
         <el-table-column prop="lotteryPersonnelPhone" label="中奖人电话" ></el-table-column>
         <el-table-column prop="awardName" label="奖项" ></el-table-column>
         <el-table-column prop="awardName" label="奖项" ></el-table-column>
-        <el-table-column prop="awardPrizeName" label="奖品" width="350"></el-table-column>
+        <el-table-column prop="awardPrizeName" label="奖品" width="320"></el-table-column>
         <el-table-column prop="activityName" label="所属活动" width="280"></el-table-column>
         <el-table-column prop="activityName" label="所属活动" width="280"></el-table-column>
         <!-- <el-table-column label="操作" width="200">
         <!-- <el-table-column label="操作" width="200">
           <template slot-scope="{row}" >
           <template slot-scope="{row}" >
@@ -117,14 +117,13 @@ export default {
         pageSizeList: [10, 20, 30],
         pageSizeList: [10, 20, 30],
         multipleSelection: [],
         multipleSelection: [],
         formModel: {
         formModel: {
+            activityId:"",
             awardId:"",
             awardId:"",
+            winningInfoList:[],
         },
         },
         queryModel:{
         queryModel:{
           lotteryPersonnelPhone:"",
           lotteryPersonnelPhone:"",
         },
         },
-        ruleValidate: {
-            name: [{ required: true, message: "名称不能为空", trigger: "blur" }],
-        },
         dataDictionaryList: [],
         dataDictionaryList: [],
         showDialog: true,
         showDialog: true,
         loading: false,
         loading: false,
@@ -161,76 +160,6 @@ export default {
     closeDialog() {
     closeDialog() {
       this.$emit("close", false);
       this.$emit("close", false);
     },
     },
-    changePage(pageIndex,exportFlag) {
-        var self = this;
-  
-        self.loading = true;
-  
-        self.pageIndex = pageIndex;
-        var formData = new FormData();
-  
-        formData.append("pageIndex", self.pageIndex);
-        if(exportFlag!=null){
-            formData.append("exportFlag", exportFlag);
-            formData.append("pageSize", 10000);
-        }
-        else{
-            formData.append("pageSize", self.pageSize);
-        }
-
-        formData.append("activityId", self.activityId);
-
-        formData.append("lotteryPersonnelPhone", self.queryModel.lotteryPersonnelPhone);
-      
-
-        winningInfoApi
-          .pageList(formData)
-          .then(function(response) {
-            self.loading = false;
-  
-            var jsonData = response.data;
-  
-            if(jsonData.result) {
-                if(exportFlag){
-                    //导出
-                    self.$message({
-                        showClose: true,
-                        type: "success",
-                        message: `报表已生成,<a href="${jsonData.data}">请点击链接下载</a>`,
-                        dangerouslyUseHTMLString: true,
-                        duration: 30000
-                    });
-                }
-                else{
-                    //分页查看
-                    var page = jsonData.data;
-
-                    self.tableData = page.data;
-                    self.totalPages = page.totalPages;
-                    self.totalElements = page.recordsTotal;
-                }
-            }
-            else{
-                self.$message.warning(jsonData.message);
-            }
-          })
-          .catch(error => {
-            self.loading = false;
-            // self.$message.error(error + "");
-          });
-      },
-      pageSizeChange(pageSize) {
-        this.pageSize = pageSize;
-      },
-      sortChange(data) {
-        this.field = data.column.field;
-        this.direction = data.order == "ascending" ? "asc" : "desc";
-  
-        this.changePage(this.pageIndex);
-      },
-      handleSelectionChange(val) {
-        this.multipleSelection = val;
-      },
 
 
       exportXls() {
       exportXls() {
         this.changePage(1,true);
         this.changePage(1,true);
@@ -240,6 +169,16 @@ export default {
       },
       },
       handleStart(){
       handleStart(){
         var self = this;
         var self = this;
+
+        if(self.formModel.awardId==null||self.formModel.awardId==""){
+          self.$message({
+            type: "error",
+            message: "请先选择奖项才能开始抽奖!"
+          });
+          return;
+        }
+
+
         self.loading = true;
         self.loading = true;
 
 
         var formData = new FormData();
         var formData = new FormData();
@@ -259,13 +198,13 @@ export default {
                 var jsonData = response.data;
                 var jsonData = response.data;
 
 
                 if (jsonData.result) {
                 if (jsonData.result) {
-                    var page = jsonData.data
+                    var page = jsonData.data;
 
 
                     self.tableData = page;
                     self.tableData = page;
     
     
                     self.$message({
                     self.$message({
-                    type: "success",
-                    message: "抽奖完成!"
+                      type: "success",
+                      message: "抽奖完成!"
                     });
                     });
               }
               }
             })
             })
@@ -347,7 +286,7 @@ export default {
           return true;
           return true;
       },
       },
               //批量导入-上传成功
               //批量导入-上传成功
-              handleBatchImportSuccess(response, file, fileList) {
+      handleBatchImportSuccess(response, file, fileList) {
         var self = this;
         var self = this;
         self.xlsLoading = false;
         self.xlsLoading = false;
 
 
@@ -398,6 +337,34 @@ export default {
           } 个文件`
           } 个文件`
         );
         );
       },
       },
+
+      handleSubmit() {
+      var self = this;
+      (function() {
+        self.formModel.activityId = self.activityId;
+        self.formModel.winningInfoList = self.tableData;
+
+        return winningInfoApi.add(self.formModel);
+      })().then(function(response) {
+        var jsonData = response.data;
+
+        if (jsonData.result) {
+          self.$message({
+            message: "保存成功!",
+            type: "success"
+          });
+
+          self.$emit("close", true);
+        } else {
+          self.$message({
+            message: jsonData.message + "",
+            type: "warning"
+          });
+
+          self.$emit("close", false);
+        }
+      });
+    },
   },
   },
   mounted: function ()  {
   mounted: function ()  {
     this.changePage(1);
     this.changePage(1);

+ 173 - 0
src/views/startLottery.vue

@@ -0,0 +1,173 @@
+<template>
+    <div >
+        <el-container class="bgDiv">
+            <el-header style="height:150px">Header</el-header>
+            <el-container>
+                <el-aside width="550px" style="text-align:left">
+                    <H1 style="text-align:center">抽奖活动</H1>
+                    <div class="leftMain">
+                        <el-form ref="form" :model="formModel" label-width="80px">
+                            <el-form-item label="活动名称">
+                                <el-select v-model="formModel.activityId" placeholder="请选择" style="width:350px" size="mini" @change="handleChange">
+                                    <el-option
+                                    v-for="item in activityList"
+                                    :key="item.id"
+                                    :label="item.name"
+                                    :value="item.id">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                            <el-form-item label="奖项">
+                                <el-select v-model="formModel.awardId" placeholder="请选择" style="width:350px" size="mini">
+                                    <el-option
+                                    v-for="item in awardInfoList"
+                                    :key="item.id"
+                                    :label="item.name"
+                                    :value="item.id">
+                                    <span style="float: left">{{ item.name }}</span>
+                                    <span style="float: right; color: #8492a6; font-size: 13px">数量:{{ item.num }}</span>
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                        </el-form>
+                        <div style="text-align:center">
+                            <span>
+                                <el-button type="primary" @click="handleSubmit" :loading="submitting">开始抽奖</el-button>
+                                <el-button >重新开始</el-button>
+                            </span>
+                        </div>
+                        <div class="imgDiv">
+                            <el-image
+                                style="width: 150px; height: 150px"
+                                src="https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg"
+                                fit="fit">
+                            </el-image>
+                        </div>
+                    </div>
+                </el-aside>
+                <el-main>
+                    <div style="text-align:center;margin-bottom:30px" >中奖名单</div>
+                    <div style="width:100%">
+                      <span>一等奖:1人</span>
+                      <el-divider></el-divider>
+                      <div style="margin-bottom:30px;">
+                        <div class="imgText">
+                          <el-image
+                            style="width: 80px; height: 80px"
+                            src="https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg"></el-image>
+                            <div style="font-size:12px">13588888888</div>
+                        </div>
+                        <div class="imgText">
+                          <el-image
+                            style="width: 80px; height: 80px"
+                            src="https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg"></el-image>
+                            <div style="font-size:12px">13588888888</div>
+                        </div>
+                      </div>
+                    </div>
+                </el-main>
+            </el-container>
+        </el-container>
+    </div>
+</template>
+
+<script>
+import startLotteryApi from "@/api/business/startLottery";
+
+export default {
+  data() {
+    return{
+      submitting:false,
+      formModel:{},
+      activityList:[],
+      awardInfoList:[],
+    }
+  },
+  created() {
+    var self = this;
+
+    startLotteryApi.list().then(function (response) {
+        var jsonData = response.data;
+        if (jsonData.result) {
+            if (jsonData.data != null && jsonData.data != "") {
+                self.activityList = jsonData.data;
+            }
+        }
+    });
+  },
+  methods: {
+    handleChange(val){
+      var self = this;
+      var formData = new FormData();
+  
+      formData.append("activityId", val);
+
+      self.awardInfoList=[];
+
+      startLotteryApi.findByActivityId(formData).then(function (response) {
+          var jsonData = response.data;
+          if (jsonData.result) {
+              if (jsonData.data != null && jsonData.data != "") {
+                  self.awardInfoList = jsonData.data;
+              }
+          }
+      });
+    },
+    handleSubmit(){
+
+    }
+  }
+}
+</script>
+<style>
+.bgDiv{
+  background-image:url('../../public/bg2.jpg');
+  background-size: 100% auto; /* 这会让图片在水平方向上铺满,垂直方向上保持原始比例 */
+  background-repeat: repeat-x; /* 这会在水平方向上平铺 */
+  color:#ffffff
+}
+ .el-header, .el-footer {
+    text-align: center;
+    line-height: 60px;
+  }
+  
+  .el-aside {
+    text-align: center;
+    padding:10px
+  }
+  
+  .el-main {
+    height:500px;
+    overflow:auto;
+    text-align: left;
+    padding:50px
+  }
+  
+  body > .el-container {
+    margin-bottom: 40px;
+  }
+  
+  .el-container:nth-child(5) .el-aside,
+  .el-container:nth-child(6) .el-aside {
+    line-height: 260px;
+  }
+  
+  .el-container:nth-child(7) .el-aside {
+    line-height: 320px;
+  }
+
+  .leftMain{
+    margin-top:30px
+  }
+  .imgDiv{
+    margin-top:50px;
+    text-align:center
+  }
+  .el-form-item__label{
+    color:#ffffff
+  }
+  .imgText{
+    float:left;
+    margin-left:20px
+  }
+</style>