Kaynağa Gözat

fix: 对接抽奖/转盘、红包拉新、表单活动

wuguojie 1 yıl önce
ebeveyn
işleme
f073ed4ff1

+ 21 - 1
src/api/lottery/index.js

@@ -1,5 +1,6 @@
 import request from '@/utils/request'
 const service = window.lwConfig.services.system + window.lwConfig.services.wecom
+const local = window.lwConfig.services.system
 
 // export function getList(params) {
 //     return request({
@@ -52,7 +53,26 @@ export function getActivity(params) {
 // 权益券
 export function getEquityCoupon() {
     return request({
-        url: service + '/equity/getEquityCoupon',
+        url: local + '/chinacoal/equity/getEquityCoupon',
         method: 'get'
     })
 }
+
+// 红包拉新查看
+export function getRedEnvelopeRecord(params) {
+    return request({
+        url: local + 'chinacoal/redEnvelope/getRedEnvelopeRecord',
+        method: 'get',
+        params
+    })
+}
+
+// 导出
+export function exportRedEnvelopeRecord(data) {
+    return request({
+        url: local + '/chinacoal/redEnvelope/exportRedEnvelopeRecord',
+        method: 'get',
+        data,
+        responseType: 'blob'
+    })
+}

+ 11 - 6
src/views/application/form/add.vue

@@ -31,8 +31,10 @@
                         </div>
                     </div>
                 </el-form-item>
-                <el-form-item label="活动图片" prop="i">
-                    <upload></upload>
+                <el-form-item label="活动图片" prop="fileUrl">
+                    <UploadToCos :fileUrl.sync="addForm.fileUrl" type="0">
+                        <div slot="tip">支持jpg/jpeg/png格式,建议200*200</div>
+                    </UploadToCos>
                 </el-form-item>
             </el-form>
         </div>
@@ -54,7 +56,8 @@ export default {
                 actName: '',
                 actTime: [],
                 actDesc: '',
-                actPrizeList: []
+                actPrizeList: [],
+                fileUrl: ''
             },
             addRules: {
                 actName:[ { required: true, message: '请输入活动名称', trigger: 'blur' } ]
@@ -79,7 +82,8 @@ export default {
                         actType: `${obj.actType}`,
                         actTime: [obj.actStartTime, obj.actEndTime],
                         actDesc: obj.actDesc,
-                        actPrizeList: obj.actPrizeList?obj.actPrizeLis:[]
+                        actPrizeList: obj.actPrizeList?obj.actPrizeLis:[],
+                        fileUrl: obj.fileUrl
                     }
                 }
             })
@@ -93,13 +97,14 @@ export default {
         handleDel( item, index ) {
             this.addForm.actPrizeList.splice(index, 1)
         },
-        handleSubmit() {
+        async handleSubmit() {
             let params = {
                 actName: this.addForm.actName,
                 actType: '4',
                 actStartTime: this.addForm.actTime[0],
                 actEndTime: this.addForm.actTime[1],
-                actPrizeList: this.addForm.actPrizeList
+                actPrizeList: this.addForm.actPrizeList,
+                fileUrl: this.addForm.fileUrl
             }
             if(this.$route.query.id) {
                 api.editActivity({

+ 22 - 9
src/views/application/lottery/add.vue

@@ -14,7 +14,7 @@
                 </el-form-item>
                 <el-form-item label="活动时间" prop="actTime">
                     <el-date-picker
-                        type="daterange"
+                        type="datetimerange"
                         v-model="addForm.actTime"
                         range-separator="至"
                         start-placeholder="开始日期"
@@ -35,7 +35,7 @@
                     <el-table-column prop="prizeType" label="活动奖品"></el-table-column>
                     <el-table-column label="操作">
                         <template slot-scope="scope">
-                            <el-button type="text" @click="prizeEdit(scope.row)">编辑</el-button>
+                            <el-button type="text" @click="prizeEdit(scope)">编辑</el-button>
                             <el-button type="text" @click="prizeDel(scope)">删除</el-button>
                         </template>
                     </el-table-column>
@@ -119,12 +119,16 @@ export default {
                 prizeType: '1',
                 prizeContent: ''
             },
-            coupon: []
+            coupon: [],
+            isEdit: false,
+            editIndex: null
         }
     },
     created() {
+        this.isEdit = false
         if(this.$route.query.id) {
             this.title = '编辑'
+            this.isEdit = true
             this.getActivity()
         }
         this.getEquityCoupon();
@@ -165,6 +169,7 @@ export default {
                     return
                 }
             }
+            this.isEdit = false
             this.addPrizeShow = true
             let num = 0
             this.addForm.prizeList.forEach(item => {
@@ -178,12 +183,13 @@ export default {
                 prizeContent: ''
             }
         },
-        prizeEdit(row) {
+        prizeEdit(scope) {
             this.addPrizeShow = true
-            this.addPrizeForm = row
+            this.addPrizeForm = scope.row
+            this.isEdit = true
+            this.editIndex = scope.$index
         },
         prizeDel(scope) {
-            console.log(12313, scope)
             this.addForm.prizeList.splice(scope.$index, 1)
         },
         addPrizeCancel() {
@@ -198,11 +204,18 @@ export default {
         },
         addPrizeSubmit() {
             this.addPrizeShow = false
-            this.addForm.prizeList.push({
-                ...this.addPrizeForm
-            })
+            if(this.isEdit) {
+
+            } else {
+                this.addForm.prizeList.push({
+                    ...this.addPrizeForm
+                })
+            }
         },
         handleSubmit() {
+            this.addForm.prizeList.forEach(item => {
+                item.prizeType = `${item.prizeType}`
+            })
             let params = {
                 actName: this.addForm.actName,
                 actType: this.addForm.actType,

+ 1 - 1
src/views/application/lottery/list.vue

@@ -2,7 +2,7 @@
     <div>
         <el-form ref="LotteryForm" :inline="true" :model="lotteryForm" class="top-search">
             <el-form-item label="类型" prop="type">
-                <el-select v-model="lotteryForm.actType">
+                <el-select v-model="lotteryForm.actType" clearable>
                     <el-option value="1" label="抽奖"></el-option>
                     <el-option value="2" label="转盘"></el-option>
                 </el-select>

+ 61 - 10
src/views/application/packet/list.vue

@@ -72,24 +72,33 @@
             :visible.sync="viewShow"
             width="500"
         >
+            <el-form :model="viewForm">
+                <el-form-item prop="userInfo" label="用户信息">
+                    <el-input placeholder="请输入用户信息" v-model="viewForm.userInfo"></el-input>
+                    <el-button @click="viewSearch()" type="primary" style="margin-left: 10px;">搜索</el-button>
+                </el-form-item>
+            </el-form>
+            <div class="mid-action">
+                <el-button type="primary" @click="addDownoad">导出</el-button>
+            </div>
             <el-table
                 :data="viewData"
             >
                 <el-table-column type="index" label="序号"></el-table-column>
-                <el-table-column label="发起用户"></el-table-column>
-                <el-table-column label="红包金额"></el-table-column>
+                <el-table-column prop="userNickName" label="发起用户"></el-table-column>
+                <el-table-column prop="money" label="红包金额"></el-table-column>
                 <el-table-column label="裂变用户">
                     <template slot-scope="scope">
-                        用户昵称-手机号
+                        {{ `${scope.row.helpUserNickName} - ${scope.row.helpUserPhone}` }}
                     </template>
                 </el-table-column>
             </el-table>
             <pagination
-                v-show="total > 0"
-                :total="total"
-                :page.sync="packetForm.pageNum"
-                :limit.sync="packetForm.pageSize"
-                @pagination="initList"
+                v-show="total1 > 0"
+                :total="total1"
+                :page.sync="viewForm.pageNum"
+                :limit.sync="viewForm.pageSize"
+                @pagination="initViewList"
             />
         </el-dialog>
     </div>
@@ -97,6 +106,7 @@
 
 <script>
 import * as api from '@/api/lottery'
+import {exportRedEnvelopeRecord} from "@/api/lottery";
 
 export default {
     name: "packetList",
@@ -107,11 +117,18 @@ export default {
                 pageNum: 1,
                 pageSize: 10
             },
-            total: 1,
+            total: 0,
+            total1: 0,
+            viewForm: {
+                userInfo: '',
+                pageNum: 1,
+                pageSize: 10,
+            },
             loading: false,
             tableData: [],
             viewShow: false,
-            viewData: []
+            viewData: [],
+            viewId: ''
         }
     },
     created() {
@@ -172,9 +189,43 @@ export default {
         },
         handleView(row) {
             this.viewShow = true
+            this.viewId = row.actId
+            this.initViewList()
         },
         handleShare(row) {
 
+        },
+        viewSearch() {
+            this.initViewList()
+        },
+        initViewList() {
+            api.getRedEnvelopeRecord({
+                actId: this.viewId,
+                ...this.viewForm
+            }).then(res => {
+                this.total1 = res.total
+                this.viewData = res.rows
+            })
+        },
+        addDownoad() {
+            api.exportRedEnvelopeRecord({
+                actId: this.viewId
+            }).then(res => {
+                const blob = new Blob([res], { type: 'application/vnd.ms-excel' });
+                const fileName = '红包记录' + new Date().getTime() + '.xlsx';
+                if ('download' in document.createElement('a')) {
+                    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);
+                    document.body.removeChild(elink);
+                } else {
+                    navigator.msSaveBlob(blob, fileName);
+                }
+            })
         }
     }
 }