抽奖次数、邀请好友

This commit is contained in:
duan 2025-04-01 10:00:31 +08:00
parent 1d2862765b
commit 6cccadbbce
6 changed files with 446 additions and 4 deletions

View File

@ -4,8 +4,8 @@ export const productUrl='dj-admin';
// const baseUrl = "http://192.168.1.7:8100/czg/"
// const baseUrl = "https://api.tianjinzhitongdaohe.com/czg/"
// const baseUrl = "https://web-api.hnsiyao.cn/czg/" //测试
const baseUrl = "https://web.hnsiyao.cn/czg/" // 线上
const baseUrl = "https://web-api.hnsiyao.cn/czg/" //测试
// const baseUrl = "https://web.hnsiyao.cn/czg/" // 线上
export default{
baseUrl

View File

@ -37,6 +37,8 @@ const mainRoutes = {
{path: '/userList', component: _import('user/userList'), name: 'userList', meta: {title: '用户列表', isTab: true}},
{path: '/allocationList',component: _import('allocation/allocationList'),name: 'allocationList',meta: {title: '配置列表', isTab: true}},
{path: '/financeList', component: _import('finance/financeList'), name: 'financeList', meta: {title: '财务中心', isTab: true}},
{path: '/shareFriends', component: _import('finance/shareFriends'), name: 'shareFriends', meta: {title: '邀请好友奖励', isTab: true}},
{path: '/lotteryInquiry', component: _import('finance/lotteryInquiry'), name: 'lotteryInquiry', meta: {title: '抽奖查询', isTab: true}},
{path: '/message', component: _import('message/message'), name: 'message', meta: {title: '消息中心', isTab: true}},
{path: '/renwu', component: _import('renwu/index'), name: 'renwu', meta: {title: '任务中心', isTab: false}},
{path: '/taskConfig', component: _import('taskConfig/taskConfig'), name: 'taskConfig', meta: {title: '任务配置', isTab: true}},

View File

@ -261,6 +261,32 @@
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane label="分享好友页面配置" name="Share">
<el-form ref="ShareFriends" :model="ShareFriends" :rules="ShareFriendsrules" label-width="80px">
<el-form-item label="顶部图">
<div
style=" width: 148px; height: 148px; border: 1px dashed #c0ccda; border-radius: 6px;text-align: center;line-height: 148px; ">
<el-upload class="avatar-uploader" v-model="ShareFriends.imageUrl"
:action="$http.adornUrlUp('alioss/upload')" :show-file-list="false"
:on-success="handleAvatarSuccess">
<img v-if="imageUrl" :src="imageUrl" class="avatar"
style="border-radius: 6px; width: 148px; height: 148px" />
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</div>
<div> *建议优先选择jpg格式并且最好控制在500kb内</div>
</el-form-item>
<el-form-item label="邀请文案" prop="tips">
<el-row>
<el-col :span="8"><el-input v-model="ShareFriends.tips"></el-input></el-col>
</el-row>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">保存</el-button>
</el-form-item>
</el-form>
</el-tab-pane>
</el-tabs>
<!-- 修改弹框 -->
<el-dialog title="修改" :visible.sync="dialogFormVisible" center>
@ -340,6 +366,19 @@ export default {
dialogFormVisible1: false,
tableDataLoading: true,
formLabelWidth: '200px',
ShareFriends: {},
ShareFriendsrules: {
imageUrl: [{
required: true,
message: '请选择图片',
trigger: 'blur'
}],
tips: [{
required: true,
message: '请输入文案',
trigger: 'blur'
}],
},
form: {
id: '',
min: '',
@ -362,6 +401,7 @@ export default {
label: '否'
}
],
imageUrl: '',
tableData: [],
checkBoxData: [] //
}
@ -375,6 +415,47 @@ export default {
this.page = val - 1;
this.dataSelect();
},
onSubmit() {
console.log(this.ShareFriends,'111111111111')
if (!this.ShareFriends.imageUrl) {
this.$message({
message: '请选择图片',
type: 'warning',
duration: 1500
})
return false
}
this.$refs.ShareFriends.validate((valid) => {
if (valid) {
console.log(111)
this.$http({
url: this.$http.adornUrl('/ext/sys/invite/friend/config/save'),
method: 'post',
data: this.$http.adornData({
...this.ShareFriends,
})
}).then(({
data
}) => {
if (data && data.code === 0) {
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {
this.getData()
}
})
} else {
this.$message.error(data.msg)
}
})
} else {
console.log('error submit!!');
return false;
}
});
},
handleClick(tab, event) {
if (tab._props.label == '全局系统配置') {
this.condition = 'xitong'
@ -424,8 +505,26 @@ export default {
this.condition = 'kefu'
this.dataSelect()
}
if (tab._props.label == '分享好友页面配置') {
this.condition = 'Share'
this.getData()
}
},
getData(){
this.$http({
url: this.$http.adornUrl(`ext/sys/invite/friend/config/get`),
method: 'get',
params: {}
}).then(({
data
}) => {
if (data && data.code === 0) {
this.ShareFriends = data.data
this.imageUrl = data.data.imageUrl
}
})
},
//
amend(index, rows) {
this.dialogFormVisible = true;
@ -558,6 +657,10 @@ export default {
}
})
},
handleAvatarSuccess(file, fileList) {
this.ShareFriends.imageUrl = file.data
this.imageUrl = file.data
},
handleAvatarSuccess1(file, fileList) {
this.form.value = file.data
console.log('file.data', file.data)

View File

@ -0,0 +1,144 @@
<template>
<div>
<div style="display: inline-block;">
<el-form :inline="true" :model="formInline" class="demo-form-inline">
<el-form-item label="用户昵称/手机号">
<el-input v-model="formInline.keywords" placeholder="请输入用户昵称/手机号" clearable />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="onSubmit">搜索</el-button>
<el-button icon="Refresh" @click="reset">重置</el-button>
</el-form-item>
</el-form>
</div>
<el-table :data="list">
<el-table-column prop="userId" label="ID"></el-table-column>
<el-table-column prop="avatar" label="头像">
<template slot-scope="scope">
<img :src="scope.row.avatar" alt="" style="width: 50px; height: 50px; border-radius: 50%;" />
</template>
</el-table-column>
<el-table-column prop="userName" label="用户昵称"></el-table-column>
<el-table-column prop="phone" label="手机号"></el-table-column>
<el-table-column prop="totalDrawCount" label="支付解锁信息">
<template slot-scope="scope">
<div @click="goUrl(scope.row)" style="color: rgb(101, 165, 249);cursor: pointer;">共解锁{{ scope.row.unlocked }}</div>
<div>今日解锁{{ scope.row.todayUnlocked }}</div>
</template>
</el-table-column>
<el-table-column prop="unlocked" label="抽奖次数信息">
<template slot-scope="scope">
<div>共获得抽奖次数{{ scope.row.totalDrawCount }}</div>
<div>剩余抽奖次数{{ scope.row.residueDrawCount }}</div>
<div>今日抽奖次数{{ scope.row.todayDrawCount }}</div>
</template>
</el-table-column>
<el-table-column prop="" label="操作">
<template slot-scope="scope">
<el-button type="text" @click="rewardDetails(scope.row)">查看抽奖详情</el-button>
</template>
</el-table-column>
</el-table>
<div style="text-align: center;margin-top: 10px;">
<el-pagination @size-change="handleSizeChange4" @current-change="handleCurrentChange4"
:page-sizes="[10, 20, 30, 40]" :page-size="limit" :current-page="page"
layout="total,sizes, prev, pager, next,jumper" :total="rechargeData.totalCount">
</el-pagination>
</div>
<!-- 详情 -->
<el-dialog title="抽奖详情" :visible.sync="dialogVisible" width="50%">
<div>抽奖次数合计:{{ rewardtotalPage }} </div>
<el-table :data="rewardDetailsList">
<el-table-column prop="id" label="ID"></el-table-column>
<el-table-column prop="name" label="抽奖结果"></el-table-column>
<el-table-column prop="createTime" label="抽奖时间"></el-table-column>
</el-table>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
return {
rechargeDataList: [],
formInline: {
keywords: ''
},
page: 1,
limit: 10,
rechargeData: {
totalCount: 0,
list: []
},
list: [],
dialogVisible: false,
rewardDetailsList: [],
rewardtotalPage: 0,
}
},
mounted() {
this.getRechargeData()
},
methods: {
goUrl(item) {
this.$router.push({ path: '/orderCenter', query: { userName: item.phone } })
},
onSubmit() {
this.page = 1
this.limit = 10
this.getRechargeData()
}, reset() {
this.formInline = {
keywords: ''
}
this.getRechargeData()
},
getRechargeData() {
this.$http.get('/ext/sys/lottery/count/query/page', {
params: {
page: this.page,
limit: this.limit,
keywords: this.formInline.keywords
}
}).then(response => {
if (response.data.code === 0) {
this.list = response.data.data.list
} else {
this.$message.error(response.data.msg)
}
}).catch(error => {
console.error(error)
})
}, rewardDetails(item) {
this.$http.get('/ext/sys/lottery/detail/page', {
params: {
page: 1,
limit: 100,
userId: item.userId
}
}).then(response => {
if (response.data.code === 0) {
this.rewardDetailsList = response.data.data.list
this.rewardtotalPage = response.data.data.totalPage
this.dialogVisible = true
} else {
this.$message.error(response.data.message)
}
}).catch(error => {
console.error(error)
this.$message.error('获取数据失败')
})
},
handleSizeChange4(val) {
this.limit = val
this.getRechargeData()
},
handleCurrentChange4(val) {
this.page = val
this.getRechargeData()
}
}
}
</script>

View File

@ -0,0 +1,178 @@
<template>
<div>
<div style="display: inline-block;">
<el-form :inline="true" :model="formInline" class="demo-form-inline">
<el-form-item label="用户昵称/手机号">
<el-input v-model="formInline.keywords" placeholder="请输入用户昵称/手机号" clearable />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="onSubmit">搜索</el-button>
<el-button icon="Refresh" @click="reset">重置</el-button>
</el-form-item>
</el-form>
</div>
<el-table :data="rechargeDataList">
<el-table-column prop="userId" label="ID"></el-table-column>
<el-table-column label="头像" width="200">
<template slot-scope="scope">
<img :src="scope.row.avatar" alt="头像" style="width: 50px; height: 50px; border-radius: 50%;" />
</template>
</el-table-column>
<el-table-column prop="userName" label="用户昵称"></el-table-column>
<el-table-column prop="phone" label="手机号"></el-table-column>
<el-table-column prop="signInNum" label="总签到人数"></el-table-column>
<el-table-column prop="awardAmount" label="已发放奖励总金额"></el-table-column>
<el-table-column label="操作" width="300">
<template slot-scope="scope">
<el-button type="text" @click="viewUserDetails(scope.row)">查看用户详情</el-button>
<el-button type="text" @click="rewardDetails(scope.row)">奖励详情</el-button>
<el-button type="text" @click="signInDetails(scope.row)">签到详情</el-button>
</template>
</el-table-column>
</el-table>
<div style="text-align: center;margin-top: 10px;">
<el-pagination @size-change="handleSizeChange4" @current-change="handleCurrentChange4"
:page-sizes="[10, 20, 30, 40]" :page-size="limit" :current-page="page"
layout="total,sizes, prev, pager, next,jumper" :total="rechargeData.totalCount">
</el-pagination>
</div>
<!-- 奖励详情 -->
<el-dialog title="奖励详情" :visible.sync="dialogVisible" width="50%">
<div>奖励发放金额合计{{ rewardtotalPage }} </div>
<el-table :data="rewardDetailsList">
<el-table-column prop="userId" label="ID"></el-table-column>
<el-table-column prop="amount" label="发放金额"></el-table-column>
<el-table-column prop="userPhone" label="有效邀请人"></el-table-column>
<el-table-column prop="createTime" label="发放时间"></el-table-column>
</el-table>
</el-dialog>
<!-- 签到详情 -->
<el-dialog title="签到详情" :visible.sync="dialogVisibles" width="50%">
<div><span>签到人数合计{{ signInDetailsTotalPage }}</span> <span>实名人数合计{{ signInDetailsTotalPage }}</span> </div>
<el-table :data="signInDetailsList">
<el-table-column prop="userId" label="ID"></el-table-column>
<el-table-column prop="userName" label="签到账号"></el-table-column>
<el-table-column prop="phone" label="签到手机号"></el-table-column>
<el-table-column prop="userName" label="实名信息">
<template slot-scope="scope">
<div>姓名{{ scope.row.realName }}</div>
<div>身份证号{{ scope.row.idCardNo }}</div>
<div>银行卡号{{ scope.row.bankCardNo }}</div>
<div>开户行{{ scope.row.bankBranch }}</div>
</template>
</el-table-column>
<el-table-column prop="createTime" label="签到时间"></el-table-column>
</el-table>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
return {
rechargeDataList: [],
rewardDetailsList: [], //
rewardtotalPage: 0, //
signInDetailsList: [], //
signInDetailsTotalPage: 0, //
formInline: {
keywords: ''
},
page: 1,
limit: 10,
rechargeData: {
totalCount: 0,
list: []
},
dialogVisible: false,//
dialogVisibles: false //
}
},
mounted() {
this.getRechargeData()
},
methods: {
viewUserDetails(item) {
this.$router.push({ path: '/userDetail', query: { userId: item.userId, active: 'first' } })
},
rewardDetails(item) {
this.$http.get('/ext/sys/invite/friend/award/detail/page', {
params: {
page: 1,
limit: 100,
userId: item.userId
}
}).then(response => {
if (response.data.code === 0) {
this.rewardDetailsList = response.data.data.list
this.rewardtotalPage = response.data.data.totalPage
this.dialogVisible = true
} else {
this.$message.error(response.data.message)
}
}).catch(error => {
console.error(error)
this.$message.error('获取数据失败')
})
},
signInDetails(item) {
this.$http.get('/ext/sys/invite/friend/signIn/page', {
params: {
page: 1,
limit: 100,
userId: item.userId
}
}).then(response => {
if (response.data.code === 0) {
this.signInDetailsList = response.data.data.list
this.signInDetailsTotalPage = response.data.data.totalPage
this.dialogVisibles = true
} else {
this.$message.error(response.data.message)
}
}).catch(error => {
console.error(error)
this.$message.error('获取数据失败')
})
},
onSubmit() {
this.page = 1
this.limit = 10
this.getRechargeData()
},
reset() {
this.formInline = {
keywords: ''
}
this.getRechargeData()
},
getRechargeData() {
this.$http.get('/ext/sys/invite/friend/award/page', {
params: {
page: this.page,
limit: this.limit,
keywords: this.formInline.keywords
}
}).then(response => {
if (response.data.code === 0) {
this.rechargeDataList = response.data.data.list
} else {
this.$message.error(response.data.message)
}
}).catch(error => {
console.error(error)
this.$message.error('获取数据失败')
})
},
handleSizeChange4(val) {
this.limit = val
this.getRechargeData()
},
handleCurrentChange4(val) {
this.page = val
this.getRechargeData()
}
}
}
</script>

View File

@ -138,6 +138,8 @@
</el-tabs>
</template>
<script>
import { watch } from 'fs'
export default {
data () {
return {
@ -358,9 +360,22 @@
},
},
mounted () {
// if(this.$route.query.userName) {
// this.userName = this.$route.query.userName
// }
this.dataSelect()
}
}
},
watch: {
//
'$route' (to, from) {
if (to.query.userName) {
this.userName = to.query.userName
this.dataSelect()
}
},
},
}
</script>
<style>