Просмотр исходного кода

Merge branch 'dev' of http://39.101.143.165:8090/dong_k/link-wechat-web-pc into dev

@dongkboy 1 год назад
Родитель
Сommit
2a82b3ba1e

+ 58 - 0
src/api/lottery/index.js

@@ -0,0 +1,58 @@
+import request from '@/utils/request'
+const service = window.lwConfig.services.system + window.lwConfig.services.wecom
+
+// export function getList(params) {
+//     return request({
+//         url: service + '/list',
+//         method: 'get',
+//         params,
+//     })
+// }
+// 新增
+export function add(data) {
+    return request({
+        url: service + '/activity/addActivity',
+        method: 'post',
+        data
+    })
+}
+// 列表
+export function listActivity(data) {
+    return request({
+        url: service + '/activity/listActivity',
+        method: 'post',
+        data
+    })
+}
+// 编辑状态
+export function editActivityStatus(params) {
+    return request({
+        url: service + '/activity/editActivityStatus',
+        method: 'get',
+        params
+    })
+}
+// 编辑
+export function editActivity(data) {
+    return request({
+        url: service + '/activity/editActivity',
+        method: 'post',
+        data
+    })
+}
+// 详情
+export function getActivity(params) {
+    return request({
+        url: service + '/activity/getActivity',
+        method: 'get',
+        params
+    })
+}
+
+// 权益券
+export function getEquityCoupon() {
+    return request({
+        url: service + '/equity/getEquityCoupon',
+        method: 'get'
+    })
+}

+ 140 - 0
src/views/application/form/add.vue

@@ -0,0 +1,140 @@
+<template>
+    <div>
+        <div class="g-card">
+            <el-form ref="LotteryAdd" :model="addForm" :rules="addRules" label-position="left">
+                <el-form-item label="活动名称" prop="actName">
+                    <el-input v-model="addForm.actName" placeholder="请输入活动名称"></el-input>
+                </el-form-item>
+                <el-form-item label="活动时间" prop="actTime">
+                    <el-date-picker
+                        type="datetimerange"
+                        v-model="addForm.actTime"
+                        range-separator="至"
+                        start-placeholder="开始日期"
+                        end-placeholder="结束日期"
+                        align="right"
+                        value-format="yyyy-MM-dd hh:mm:ss"
+                    ></el-date-picker>
+                </el-form-item>
+                <el-form-item label="活动描述" prop="actDesc">
+                    <el-input v-model="addForm.actDesc" placeholder="请输入活动描述"></el-input>
+                </el-form-item>
+                <el-form-item label="表单内容" prop="actPrizeList">
+                    <div style="display: flex;">
+                        <div style="width: 100%">
+                            <div v-for="(item, index) in addForm.actPrizeList" style="margin-top: 10px;">
+                                <el-input v-model="item.prizeName" placeholder="请输入字段名称" style="margin-right: 10px;"></el-input>
+                                <el-input v-model="item.prizeContent" placeholder="请输入填写内容"></el-input>
+                                <i class="el-icon-circle-close" style="cursor:pointer; margin-left: 10px;" @click="handleDel(item,index)"></i>
+                            </div>
+                            <el-button type="text" @click="handleAdd">新增字段</el-button>
+                        </div>
+                    </div>
+                </el-form-item>
+                <el-form-item label="活动图片" prop="i">
+                    <upload></upload>
+                </el-form-item>
+            </el-form>
+        </div>
+        <div class="g-footer-sticky" style="text-align: center;">
+            <el-button plain @click="$router.go(-1)">取消</el-button>
+            <el-button type="primary" @click="handleSubmit">提交</el-button>
+        </div>
+    </div>
+</template>
+
+<script>
+import * as api from "@/api/lottery";
+
+export default {
+    name: "formAdd",
+    data() {
+        return {
+            addForm: {
+                actName: '',
+                actTime: [],
+                actDesc: '',
+                actPrizeList: []
+            },
+            addRules: {
+                actName:[ { required: true, message: '请输入活动名称', trigger: 'blur' } ]
+            }
+        }
+    },
+    created() {
+        if(this.$route.query.id) {
+            this.title = '编辑'
+            this.getActivity()
+        }
+    },
+    methods: {
+        getActivity() {
+            api.getActivity({
+                actId: this.$route.query.id
+            }).then(res => {
+                if(res.code == 200) {
+                    let obj = {...res.data}
+                    this.addForm = {
+                        actName: obj.actName,
+                        actType: `${obj.actType}`,
+                        actTime: [obj.actStartTime, obj.actEndTime],
+                        actDesc: obj.actDesc,
+                        actPrizeList: obj.actPrizeList?obj.actPrizeLis:[]
+                    }
+                }
+            })
+        },
+        handleAdd() {
+            this.addForm.actPrizeList.push({
+                prizeName: '',
+                prizeContent: ''
+            })
+        },
+        handleDel( item, index ) {
+            this.addForm.actPrizeList.splice(index, 1)
+        },
+        handleSubmit() {
+            let params = {
+                actName: this.addForm.actName,
+                actType: '4',
+                actStartTime: this.addForm.actTime[0],
+                actEndTime: this.addForm.actTime[1],
+                actPrizeList: this.addForm.actPrizeList
+            }
+            if(this.$route.query.id) {
+                api.editActivity({
+                    actId: this.$route.query.id,
+                    ...params
+                }).then(res => {
+                    if(res.code == 200) {
+                        this.$message({
+                            message: res.msg,
+                            type: 'success'
+                        })
+                        this.$router.push({
+                            path: 'list'
+                        })
+                    }
+                })
+            } else {
+                api.add({...params}).then(res => {
+                    console.log(123123, res)
+                    if(res.code == 200) {
+                        this.$message({
+                            message: res.msg,
+                            type: 'success'
+                        })
+                        this.$router.push({
+                            path: 'list'
+                        })
+                    }
+                })
+            }
+        }
+    }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 139 - 0
src/views/application/form/list.vue

@@ -0,0 +1,139 @@
+<template>
+    <div>
+        <el-form ref="QueryForm" :inline="true" :model="queryForm" class="top-search">
+            <el-form-item label="活动名称" prop="type">
+                <el-input v-model="queryForm.actName" placeholder="请输入"></el-input>
+            </el-form-item>
+            <el-form-item label="">
+                <el-button type="primary" :loading="loading" @click="initList">查询</el-button>
+            </el-form-item>
+        </el-form>
+        <div class="g-card">
+            <div class="mid-action">
+                <el-button type="primary" @click="addForm">新增活动</el-button>
+            </div>
+            <el-table
+                :data="tableData"
+            >
+                <el-table-column type="index" label="序号" width="55"></el-table-column>
+                <el-table-column prop="actName" label="活动名称"></el-table-column>
+                <el-table-column prop="createTime" label="新建时间"></el-table-column>
+                <el-table-column label="活动时间">
+                    <template slot-scope="scope">
+                        {{ `${scope.row.actStartTime}-${scope.row.actEndTime}` }}
+                    </template>
+                </el-table-column>
+                <el-table-column prop="a" label="活动规则"></el-table-column>
+                <el-table-column prop="a" label="收集数量"></el-table-column>
+                <el-table-column prop="actStatus" label="状态">
+                    <template slot-scope="scope">
+                        {{ scope.row.actStatus == '1'?'开启':scope.row.actStatus == '2'?'关闭':'' }}
+                    </template>
+                </el-table-column>
+                <el-table-column prop="updateBy" label="操作人"></el-table-column>
+                <el-table-column label="操作" width="200">
+                    <template slot-scope="scope">
+                        <el-button type="text" @click="handleClose(scope.row)">关闭</el-button>
+                        <el-button type="text" @click="handleStart(scope.row)">开启</el-button>
+                        <el-button type="text" @click="handleEdit(scope.row)">编辑</el-button>
+                        <el-button type="text" @click="handleShare(scope.row)">转发企微</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <pagination
+                v-show="total > 0"
+                :total="total"
+                :page.sync="queryForm.pageNum"
+                :limit.sync="queryForm.pageSize"
+                @pagination="initList"
+            />
+        </div>
+    </div>
+</template>
+
+<script>
+import * as api from "@/api/lottery";
+
+export default {
+    name: "formList",
+    data() {
+        return {
+            queryForm: {
+                actName: '',
+                pageNum: 1,
+                pageSize: 10
+            },
+            total: 1,
+            loading: false,
+            tableData: [{
+                a: 1
+            }]
+        }
+    },
+    created() {
+        this.initList();
+    },
+    methods: {
+        initList() {
+            api.listActivity({
+                actTypeList: ['4'],
+                ...this.queryForm
+            }).then(res => {
+                this.loading = false
+                if(res.code == 200) {
+                    this.tableData = res.rows
+                    this.total = Number(res.total)
+                } else {
+                    this.tableData = []
+                    this.total = 0
+                    this.$message.error(res.msg)
+                }
+            })
+        },
+        addForm() {
+            this.$router.push({
+                path: 'add'
+            })
+        },
+
+        handleClose(row) {
+            api.editActivityStatus({
+                actId: row.actId,
+                actStatus: 2
+            }).then(res => {
+                if(res.code == 200) {
+                    this.$message.success(res.msg)
+                    this.initList()
+                } else {
+                    this.$message.error(res.msg)
+                }
+            })
+        },
+        handleStart(row) {
+            api.editActivityStatus({
+                actId: row.actId,
+                actStatus: 1
+            }).then(res => {
+                if(res.code == 200) {
+                    this.$message.success(res.msg)
+                    this.initList()
+                } else {
+                    this.$message.error(res.msg)
+                }
+            })
+        },
+        handleEdit(row) {
+            this.$router.push({
+                path: `add?id=${row.actId}`
+            })
+        },
+        handleShare(row) {
+
+        }
+    }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 249 - 0
src/views/application/lottery/add.vue

@@ -0,0 +1,249 @@
+<template>
+    <div>
+        <div class="g-card">
+            <h4 class="g-card-title">{{ title }}</h4>
+            <el-form ref="LotteryAdd" :model="addForm" :rules="addRules" label-position="left">
+                <el-form-item label="活动名称" prop="actName">
+                    <el-input v-model="addForm.actName" placeholder="请输入活动名称"></el-input>
+                </el-form-item>
+                <el-form-item label="活动类型" prop="actType">
+                    <el-select v-model="addForm.actType" placeholder="请选择活动类型">
+                        <el-option value="1" label="抽奖"></el-option>
+                        <el-option value="2" label="转盘"></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="活动时间" prop="actTime">
+                    <el-date-picker
+                        type="daterange"
+                        v-model="addForm.actTime"
+                        range-separator="至"
+                        start-placeholder="开始日期"
+                        end-placeholder="结束日期"
+                        align="right"
+                        value-format="yyyy-MM-dd hh:mm:ss"
+                    ></el-date-picker>
+                </el-form-item>
+                <el-form-item label="奖品设置" prop="actPrizeSet">
+                    <el-button type="primary" @click="addPrize">新增</el-button>
+                </el-form-item>
+                <el-table
+                    :data="addForm.prizeList"
+                >
+                    <el-table-column prop="prizeName" label="奖品名称"></el-table-column>
+                    <el-table-column prop="winPercent" label="奖品概率"></el-table-column>
+                    <el-table-column prop="prizeNum" label="奖品数量"></el-table-column>
+                    <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="prizeDel(scope)">删除</el-button>
+                        </template>
+                    </el-table-column>
+                </el-table>
+            </el-form>
+        </div>
+        <div class="g-footer-sticky" style="text-align: center;">
+            <el-button plain @click="$router.go(-1)">取消</el-button>
+            <el-button type="primary" @click="handleSubmit">提交</el-button>
+        </div>
+        <el-dialog
+            :visible.sync="addPrizeShow"
+            width="600"
+        >
+            <el-form :model="addPrizeForm" label-position="left">
+                <el-form-item prop="prizeName" label="奖品名称">
+                    <el-input v-model="addPrizeForm.prizeName" placeholder="请输入奖品名称"></el-input>
+                </el-form-item>
+                <el-form-item prop="winPercent" label="奖品概率">
+                    <el-input v-model="addPrizeForm.winPercent" placeholder="请输入奖品概率"></el-input>
+                </el-form-item>
+                <el-form-item prop="prizeNum" label="奖品数量">
+                    <el-input v-model="addPrizeForm.prizeNum" placeholder="请输入奖品数量"></el-input>
+                </el-form-item>
+                <el-form-item label="活动奖品">
+                    <div style="display: flex">
+                        <div style="width: 100%">
+                            <div>
+                                <el-radio-group v-model="addPrizeForm.prizeType">
+                                    <el-radio label="1">优惠券</el-radio>
+                                    <el-radio label="2">积分</el-radio>
+                                    <el-radio label="3">平台会员</el-radio>
+                                    <el-radio label="4" v-if="addForm.actType === '2' ">谢谢参与</el-radio>
+                                </el-radio-group>
+                            </div>
+                            <div v-if="addPrizeForm.prizeType === '1' ">
+                                <el-select v-model="addPrizeForm.prizeContent" filterable placeholder="请选择优惠券">
+                                    <el-option :label="item.rightsName" :value="item.id" v-for="(item, index) in coupon" :key="item.id"></el-option>
+                                </el-select>
+                            </div>
+                            <div v-else-if="addPrizeForm.prizeType === '2' || addPrizeForm.prizeType === '3'">
+                                <el-input v-model="addPrizeForm.prizeContent" :placeholder="addPrizeForm.prizeType === '2'?'请输入积分':addPrizeForm.prizeType === '3'?'请输入天数':''"></el-input>
+                            </div>
+                        </div>
+                    </div>
+                </el-form-item>
+            </el-form>
+            <template #footer>
+                <el-button plain @click="addPrizeCancel">取消</el-button>
+                <el-button type="primary" @click="addPrizeSubmit">提交</el-button>
+            </template>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+import * as api from '@/api/lottery'
+import {getEquityCoupon} from "@/api/lottery";
+export default {
+    name: "lotteryAdd",
+    data() {
+        return {
+            title: '新增',
+            addForm: {
+                actName: '',
+                actType: '1',
+                actTime: [],
+                prizeList: []
+            },
+            addRules: {
+                actName: [ { required: true, message: '请输入活动名称', trigger: 'blur' } ],
+                actType: [ { required: true, message: '请选择活动类型', trigger: 'change' } ],
+                actTime: [ { required: true, message: '请选择活动时间', trigger: 'change' } ],
+                actPrizeSet: [ { required: true, message: '请选择活动设置', trigger: 'change' } ]
+            },
+            addPrizeShow: false,
+            addPrizeForm: {
+                prizeName: '',
+                winPercent: '',
+                prizeNum: 0,
+                prizeType: '1',
+                prizeContent: ''
+            },
+            coupon: []
+        }
+    },
+    created() {
+        if(this.$route.query.id) {
+            this.title = '编辑'
+            this.getActivity()
+        }
+        this.getEquityCoupon();
+    },
+    methods: {
+        getEquityCoupon() {
+            api.getEquityCoupon().then(res => {
+                if(res.code == 200) {
+                    this.coupon = res.data
+                }
+            })
+        },
+        getActivity() {
+            api.getActivity({
+                actId: this.$route.query.id
+            }).then(res => {
+                if(res.code == 200) {
+                    let obj = {...res.data}
+                    this.addForm = {
+                        actName: obj.actName,
+                        actType: `${obj.actType}`,
+                        actTime: [obj.actStartTime, obj.actEndTime],
+                        actPrizeSet: `${obj.actPrizeSet}`,
+                        prizeList: obj.prizeList?obj.prizeList:[]
+                    }
+                }
+            })
+        },
+        addPrize() {
+            if(this.addForm.actType == '1') {
+                if(this.addForm.prizeList&&this.addForm.prizeList.length>=8) {
+                    this.$message.error('活动类型为抽奖时,奖品设置数量最多为8条!')
+                    return
+                }
+            } else if(this.addForm.actType == '2') {
+                if(this.addForm.prizeList&&this.addForm.prizeList.length>=6) {
+                    this.$message.error('活动类型为转盘时,奖品设置数量最多为6条!')
+                    return
+                }
+            }
+            this.addPrizeShow = true
+            let num = 0
+            this.addForm.prizeList.forEach(item => {
+                num += Number(item.winPercent)
+            })
+            this.addPrizeForm = {
+                prizeName: '',
+                winPercent: 100 - num,
+                prizeNum: 0,
+                prizeType: '1',
+                prizeContent: ''
+            }
+        },
+        prizeEdit(row) {
+            this.addPrizeShow = true
+            this.addPrizeForm = row
+        },
+        prizeDel(scope) {
+            console.log(12313, scope)
+            this.addForm.prizeList.splice(scope.$index, 1)
+        },
+        addPrizeCancel() {
+            this.addPrizeShow = false
+            this.addPrizeForm = {
+                prizeName: '',
+                winPercent: '',
+                prizeNum: 0,
+                prizeType: '1',
+                prizeContent: ''
+            }
+        },
+        addPrizeSubmit() {
+            this.addPrizeShow = false
+            this.addForm.prizeList.push({
+                ...this.addPrizeForm
+            })
+        },
+        handleSubmit() {
+            let params = {
+                actName: this.addForm.actName,
+                actType: this.addForm.actType,
+                actStartTime: this.addForm.actTime[0],
+                actEndTime: this.addForm.actTime[1],
+                actPrizeList: this.addForm.prizeList,
+            }
+            if(this.$route.query.id) {
+                api.editActivity({
+                    actId: this.$route.query.id,
+                    ...params
+                }).then(res => {
+                    if(res.code == 200) {
+                        this.$message({
+                            message: res.msg,
+                            type: 'success'
+                        })
+                        this.$router.push({
+                            path: 'list'
+                        })
+                    }
+                })
+            } else {
+                api.add({...params}).then(res => {
+                    console.log(123123, res)
+                    if(res.code == 200) {
+                        this.$message({
+                            message: res.msg,
+                            type: 'success'
+                        })
+                        this.$router.push({
+                            path: 'list'
+                        })
+                    }
+                })
+            }
+        }
+    },
+}
+</script>
+
+<style scoped>
+
+</style>

+ 169 - 0
src/views/application/lottery/list.vue

@@ -0,0 +1,169 @@
+<template>
+    <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-option value="1" label="抽奖"></el-option>
+                    <el-option value="2" label="转盘"></el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item label="">
+                <el-button type="primary" :loading="loading" @click="initList">查询</el-button>
+            </el-form-item>
+        </el-form>
+        <div class="g-card">
+            <div class="mid-action">
+                <el-button type="primary" @click="addLottery">新增活动</el-button>
+            </div>
+            <el-table
+                :data="tableData"
+            >
+                <el-table-column type="index" label="序号" width="55"></el-table-column>
+                <el-table-column prop="actName" label="活动名称"></el-table-column>
+                <el-table-column prop="createTime" label="新建时间"></el-table-column>
+                <el-table-column prop="actType" label="活动类型">
+                    <template slot-scope="scope">
+                        {{ scope.row.actType == '1'?'抽奖':scope.row.actType == '2'?'转盘':'' }}
+                    </template>
+                </el-table-column>
+                <el-table-column prop="a" label="奖品"></el-table-column>
+                <el-table-column prop="a" label="参与用户"></el-table-column>
+                <el-table-column label="活动时间" width="160">
+                    <template slot-scope="scope">
+                        {{ scope.row.actStartTime&&scope.row.actEndTime?`${scope.row.actStartTime}-${scope.row.actEndTime}`:'' }}
+                    </template>
+                </el-table-column>
+                <el-table-column prop="actWinNum" label="中奖人数">
+                    <template slot-scope="scope">
+                        <el-button type="text" @click="showNumber(scope.row)">{{ scope.row.actWinNum?scope.row.actWinNum:0 }}</el-button>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="actStatus" label="状态">
+                    <template slot-scope="scope">
+                        {{ scope.row.actStatus == '1'?'开启':scope.row.actStatus == '2'?'关闭':'' }}
+                    </template>
+                </el-table-column>
+                <el-table-column prop="updateBy" label="操作人"></el-table-column>
+                <el-table-column label="操作" width="200">
+                    <template slot-scope="scope">
+                        <el-button type="text" @click="handleClose(scope.row)">关闭</el-button>
+                        <el-button type="text" @click="handleStart(scope.row)">开启</el-button>
+                        <el-button type="text" @click="handleEdit(scope.row)">编辑</el-button>
+                        <el-button type="text" @click="handleShare(scope.row)">转发企微</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <pagination
+                v-show="total > 0"
+                :total="total"
+                :page.sync="lotteryForm.pageNum"
+                :limit.sync="lotteryForm.pageSize"
+                @pagination="initList"
+            />
+        </div>
+        <el-dialog
+            :visible.sync="numberShow"
+            width="400"
+        >
+            <el-table
+                :data="numbersData"
+            >
+                <el-table-column label="序号" type="index"></el-table-column>
+                <el-table-column label="用户名称" prop="name"></el-table-column>
+                <el-table-column label="手机号" prop="phone"></el-table-column>
+            </el-table>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+import * as api from '@/api/lottery'
+export default {
+    name: "lotteryList",
+    data() {
+        return {
+            lotteryForm: {
+                actType: '',
+                pageNum: 1,
+                pageSize: 10
+            },
+            total: 1,
+            loading: false,
+            tableData: [],
+            numberShow: false,
+            numbersData: [{}]
+        }
+    },
+    created() {
+        this.initList();
+    },
+    methods: {
+        initList() {
+            this.loading = true
+            api.listActivity({
+                actTypeList: this.lotteryForm.actType?[this.lotteryForm.actType]:['1','2'],
+                pageNum: this.lotteryForm.pageNum,
+                pageSize: this.lotteryForm.pageSize
+            }).then(res => {
+                this.loading = false
+                if(res.code == 200) {
+                    this.tableData = res.rows
+                    this.total = Number(res.total)
+                } else {
+                    this.tableData = []
+                    this.total = 0
+                    this.$message.error(res.msg)
+                }
+            })
+        },
+        addLottery() {
+            this.$router.push({
+                path: 'add'
+            })
+        },
+        showNumber(row) {
+            if(row.actWinNum) {
+                this.numberShow = true
+            }
+        },
+        handleClose(row) {
+            api.editActivityStatus({
+                actId: row.actId,
+                actStatus: 2
+            }).then(res => {
+                if(res.code == 200) {
+                    this.$message.success(res.msg)
+                    this.initList()
+                } else {
+                    this.$message.error(res.msg)
+                }
+            })
+        },
+        handleStart(row) {
+            api.editActivityStatus({
+                actId: row.actId,
+                actStatus: 1
+            }).then(res => {
+                if(res.code == 200) {
+                    this.$message.success(res.msg)
+                    this.initList()
+                } else {
+                    this.$message.error(res.msg)
+                }
+            })
+        },
+        handleEdit(row) {
+            this.$router.push({
+                path: `add?id=${row.actId}`
+            })
+        },
+        handleShare(row) {
+
+        }
+    }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 156 - 0
src/views/application/packet/add.vue

@@ -0,0 +1,156 @@
+<template>
+    <div>
+        <div class="g-card">
+            <h4 class="g-card-title">{{ title }}</h4>
+            <el-form ref="PacketAdd" :model="addForm" :rules="addRules" label-position="left">
+                <el-form-item label="活动名称" prop="actName">
+                    <el-input v-model="addForm.actName" placeholder="请输入活动名称"></el-input>
+                </el-form-item>
+                <el-form-item label="活动时间" prop="actTime">
+                    <el-date-picker
+                        type="datetimerange"
+                        v-model="addForm.actTime"
+                        range-separator="至"
+                        start-placeholder="开始日期"
+                        end-placeholder="结束日期"
+                        align="right"
+                        value-format="yyyy-MM-dd hh:mm:ss"
+                    ></el-date-picker>
+                </el-form-item>
+                <el-form-item label="活动预算" prop="redRacketBudget">
+                    <el-input v-model="addForm.redRacketBudget" placeholder="请输入活动预算" @change="actBudgetChange"></el-input>
+                </el-form-item>
+                <el-form-item label="红包金额" prop="redRacketAmount">
+                    <el-input v-model="addForm.redRacketAmount" placeholder="请输入红包金额" @change="redRacketAmountChange"></el-input>
+                </el-form-item>
+                <el-form-item label="红包数量" prop="prizeNum">
+                    <el-input v-model="addForm.prizeNum" placeholder="请输入红包数量" @change="prizeNumChange"></el-input>
+                </el-form-item>
+                <el-form-item label="裂变规则" prop="redRacketRule">
+                    邀请 <el-input style="width: 100px;" v-model="addForm.redRacketRule" placeholder="请输入" type="number"></el-input> 新用户助力,即可获得红包
+                </el-form-item>
+            </el-form>
+        </div>
+        <div class="g-footer-sticky" style="text-align: center;">
+            <el-button plain @click="$router.go(-1)">取消</el-button>
+            <el-button type="primary" @click="handleSubmit">提交</el-button>
+        </div>
+    </div>
+</template>
+
+<script>
+import * as api from "@/api/lottery";
+
+export default {
+    name: "packetAdd",
+    data() {
+        return {
+            title: '新增',
+            addForm: {
+                actName: '',
+                actTime: '',
+                redRacketBudget: '',
+                redRacketAmount: '',
+                prizeNum: '',
+                redRacketRule: '',
+            },
+            addRules: {
+                actName: [{ required: true, message: '请输入活动名称', trigger: 'blur' }],
+                prizeNum: [
+                    {
+                        pattern: /^(([1-9]{1}\d*)|(0{1}))(\.\d{1,2})?$/,
+                        required: false,
+                        message: '请输入数量,且为正整数类型',
+                        trigger: 'blur'
+                    }
+                ]
+            }
+        }
+    },
+    created() {
+        if(this.$route.query.id) {
+            this.title = '编辑'
+            this.getActivity()
+        }
+    },
+    methods: {
+        getActivity() {
+            api.getActivity({
+                actId: this.$route.query.id
+            }).then(res => {
+                if(res.code == 200) {
+                    let obj = {...res.data}
+                    this.addForm = {
+                        actName: obj.actName,
+                        actType: `${obj.actType}`,
+                        actTime: [obj.actStartTime, obj.actEndTime],
+                        redRacketBudget: obj.prizeList?.[0].redRacketBudget,
+                        redRacketAmount: obj.prizeList?.[0].redRacketAmount,
+                        prizeNum: obj.prizeList?.[0].prizeNum,
+                        redRacketRule: obj.prizeList?.[0].redRacketRules
+                    }
+                }
+            })
+        },
+        actBudgetChange(e) {
+
+        },
+        redRacketAmountChange(e) {
+
+        },
+        prizeNumChange(e) {
+
+        },
+        handleSubmit() {
+            let params = {
+                actName: this.addForm.actName,
+                actType: '3',
+                actStartTime: this.addForm.actTime[0],
+                actEndTime: this.addForm.actTime[1],
+                actPrizeList: [
+                    {
+                        redRacketBudget: this.addForm.redRacketBudget,
+                        redRacketAmount: this.addForm.redRacketAmount,
+                        prizeNum: this.addForm.prizeNum,
+                        redRacketRule: this.addForm.redRacketRule,
+                        prizeType: '4'
+                    }
+                ]
+            }
+            if(this.$route.query.id) {
+                api.editActivity({
+                    actId: this.$route.query.id,
+                    ...params
+                }).then(res => {
+                    if(res.code == 200) {
+                        this.$message({
+                            message: res.msg,
+                            type: 'success'
+                        })
+                        this.$router.push({
+                            path: 'list'
+                        })
+                    }
+                })
+            } else {
+                api.add({...params}).then(res => {
+                    console.log(123123, res)
+                    if(res.code == 200) {
+                        this.$message({
+                            message: res.msg,
+                            type: 'success'
+                        })
+                        this.$router.push({
+                            path: 'list'
+                        })
+                    }
+                })
+            }
+        }
+    }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 185 - 0
src/views/application/packet/list.vue

@@ -0,0 +1,185 @@
+<template>
+    <div>
+        <el-form ref="LotteryForm" :inline="true" :model="packetForm" class="top-search">
+            <el-form-item label="活动名称" prop="type">
+                <el-input v-model="packetForm.actName" placeholder="请输入"></el-input>
+            </el-form-item>
+            <el-form-item label="">
+                <el-button type="primary" :loading="loading" @click="initList">查询</el-button>
+            </el-form-item>
+        </el-form>
+        <div class="g-card">
+            <div class="mid-action">
+                <el-button type="primary" @click="addPacket">新增活动</el-button>
+            </div>
+            <el-table
+                :data="tableData"
+            >
+                <el-table-column type="index" label="序号" width="55"></el-table-column>
+                <el-table-column prop="actName" label="活动名称"></el-table-column>
+                <el-table-column prop="createTime" label="创建时间"></el-table-column>
+                <el-table-column prop="redRacketAmount" label="红包金额">
+                    <template slot-scope="scope">
+                        {{ scope.row.prizeList?scope.row.prizeList[0].redRacketAmount:'' }}
+                    </template>
+                </el-table-column>
+                <el-table-column prop="prizeNum" label="红包数量">
+                    <template slot-scope="scope">
+                        {{ scope.row.prizeList?scope.row.prizeList[0].prizeNum:'' }}
+                    </template>
+                </el-table-column>
+                <el-table-column prop="redRacketRules" label="裂变规则">
+                    <template slot-scope="scope">
+                        {{ scope.row.prizeList?scope.row.prizeList[0].redRacketRules:'' }}
+                    </template>
+                </el-table-column>
+                <el-table-column label="活动时间">
+                    <template slot-scope="scope">
+                        {{ `${scope.row.actStartTime}-${scope.row.actEndTime}` }}
+                    </template>
+                </el-table-column>
+                <el-table-column prop="redRacketBudget" label="活动预算">
+                    <template slot-scope="scope">
+                        {{ scope.row.prizeList?scope.row.prizeList[0].redRacketBudget:'' }}
+                    </template>
+                </el-table-column>
+                <el-table-column prop="a" label="参与用户"></el-table-column>
+                <el-table-column prop="actStatus" label="状态">
+                    <template slot-scope="scope">
+                        {{ scope.row.actStatus == '1'?'开启':scope.row.actStatus == '2'?'关闭':'' }}
+                    </template>
+                </el-table-column>
+                <el-table-column prop="updateBy" label="操作人"></el-table-column>
+                <el-table-column label="操作" width="200">
+                    <template slot-scope="scope">
+                        <el-button type="text" @click="handleClose(scope.row)">关闭</el-button>
+                        <el-button type="text" @click="handleStart(scope.row)">开启</el-button>
+                        <el-button type="text" @click="handleView(scope.row)">查看</el-button>
+                        <el-button type="text" @click="handleEdit(scope.row)">编辑</el-button>
+                        <el-button type="text" @click="handleShare(scope.row)">转发企微</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <pagination
+                v-show="total > 0"
+                :total="total"
+                :page.sync="packetForm.pageNum"
+                :limit.sync="packetForm.pageSize"
+                @pagination="initList"
+            />
+        </div>
+        <el-dialog
+            :visible.sync="viewShow"
+            width="500"
+        >
+            <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 label="裂变用户">
+                    <template slot-scope="scope">
+                        用户昵称-手机号
+                    </template>
+                </el-table-column>
+            </el-table>
+            <pagination
+                v-show="total > 0"
+                :total="total"
+                :page.sync="packetForm.pageNum"
+                :limit.sync="packetForm.pageSize"
+                @pagination="initList"
+            />
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+import * as api from '@/api/lottery'
+
+export default {
+    name: "packetList",
+    data() {
+        return {
+            packetForm: {
+                actName: '',
+                pageNum: 1,
+                pageSize: 10
+            },
+            total: 1,
+            loading: false,
+            tableData: [],
+            viewShow: false,
+            viewData: []
+        }
+    },
+    created() {
+        this.initList();
+    },
+    methods: {
+        initList() {
+            api.listActivity({
+                actTypeList: ['3'],
+                ...this.packetForm
+            }).then(res => {
+                this.loading = false
+                if(res.code == 200) {
+                    this.tableData = res.rows
+                    this.total = Number(res.total)
+                } else {
+                    this.tableData = []
+                    this.total = 0
+                    this.$message.error(res.msg)
+                }
+            })
+        },
+        addPacket() {
+            this.$router.push({
+                path: 'add'
+            })
+        },
+        handleClose(row) {
+            api.editActivityStatus({
+                actId: row.actId,
+                actStatus: 2
+            }).then(res => {
+                if(res.code == 200) {
+                    this.$message.success(res.msg)
+                    this.initList()
+                } else {
+                    this.$message.error(res.msg)
+                }
+            })
+        },
+        handleStart(row) {
+            api.editActivityStatus({
+                actId: row.actId,
+                actStatus: 1
+            }).then(res => {
+                if(res.code == 200) {
+                    this.$message.success(res.msg)
+                    this.initList()
+                } else {
+                    this.$message.error(res.msg)
+                }
+            })
+        },
+        handleEdit(row) {
+            this.$router.push({
+                path: `add?id=${row.actId}`
+            })
+        },
+        handleView(row) {
+            this.viewShow = true
+        },
+        handleShare(row) {
+
+        }
+    }
+}
+</script>
+
+<style scoped>
+
+</style>