新增奖励配置列表,奖励发放记录列表
This commit is contained in:
66
src/api/SsGuild/rewardConfiguration.js
Normal file
66
src/api/SsGuild/rewardConfiguration.js
Normal file
@@ -0,0 +1,66 @@
|
||||
import request from '@/utils/request';
|
||||
// 奖励配置
|
||||
// 活动列表
|
||||
export const getActivitylList = query => {
|
||||
return request({
|
||||
url: '/activityH5LevelExp/activityType',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 等级列表
|
||||
export const getLevelList = query => {
|
||||
return request({
|
||||
url: '/activityH5LevelExp/select/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 奖励查询列表
|
||||
export const getAwardList = query => {
|
||||
return request({
|
||||
url: '/activityH5LevelAward/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 奖励类型
|
||||
export const getAwardTypeList = query => {
|
||||
return request({
|
||||
url: '/activityH5LevelExp/awardType',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 新增
|
||||
export const saveAwardList = query => {
|
||||
return request({
|
||||
url: '/activityH5LevelAward/save',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 删除
|
||||
export const delAwardList = query => {
|
||||
return request({
|
||||
url: '/activityH5LevelAward/del',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
// 更新
|
||||
export const updateAwardList = query => {
|
||||
return request({
|
||||
url: '/activityH5LevelAward/update',
|
||||
method: 'post',
|
||||
params: query
|
||||
});
|
||||
}
|
||||
// 奖励发放记录-列表
|
||||
export const getAwardRecordList = query => {
|
||||
return request({
|
||||
url: '/activityH5AwardRecord/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
300
src/views/ssGuild/rewardConfiguration.vue
Normal file
300
src/views/ssGuild/rewardConfiguration.vue
Normal file
@@ -0,0 +1,300 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<div class="inquire">
|
||||
<span>活动</span>
|
||||
<el-select v-model="formData.type" placeholder="请选择" @change="changeLevel(null)">
|
||||
<el-option v-for="item in activitylList" :key="item.type" :label="item.name" :value="item.type">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<span>分区</span>
|
||||
<partition-select v-model:partition-id="formData.partitionId" @update:partitionId="changeLevel" />
|
||||
</div>
|
||||
<div class="inquire" v-if="levelList.length > 0 && formData.type !=''">
|
||||
<span>等级</span>
|
||||
<el-select v-model="formData.level" placeholder="请选择">
|
||||
<el-option v-for="item in levelList" :key="item.level" :label="item.name" :value="item.level">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<el-button style="" type="primary" @click="addDialog = true; dialogType = 1; resetAddFormData()">新增</el-button>
|
||||
<el-button style="" type="primary" @click="getData()">查询</el-button>
|
||||
<!-- 表格数据 -->
|
||||
<el-table v-loading="tableData.loading" :data="tableData.data" ref="multipleTable"
|
||||
@selection-change="handleSelectionChange" border style="width: 100%; margin-top: 25px">
|
||||
<el-table-column prop="name" align="center" label="活动" />
|
||||
<el-table-column prop="level" align="center" label="等级" />
|
||||
<el-table-column prop="partitionDesc" align="center" label="分区" />
|
||||
<el-table-column prop="awardTypeName" align="center" label="奖励类型" />
|
||||
<el-table-column prop="awardId" align="center" label="奖励ID" />
|
||||
<el-table-column prop="awardPic" align="center" label="奖励样式">
|
||||
<template v-slot="scope">
|
||||
<img :src="scope.row.awardPic" style="width: 80px; height: 80px;">
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="awardNum" align="center" label="奖励数量&天数" />
|
||||
<el-table-column align="center" label="操作" width="300">
|
||||
<template v-slot="scope">
|
||||
<el-button class="primary" type="primary" @click="
|
||||
detailPageFun(scope.row);
|
||||
" size="default">编辑</el-button>
|
||||
<el-button class="primary" type="primary" @click="
|
||||
delPageFun(scope.row.id);
|
||||
" size="default">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<el-pagination style="margin-top: 10px" class="paginationClass" :current-page="formData.page"
|
||||
:page-size="formData.pageSize" :page-sizes="[10, 20, 50, 100, 200]" layout="sizes, prev, pager, next"
|
||||
:total="tableData.total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
|
||||
|
||||
<el-dialog v-model="addDialog" :title="dialogType == 1 ? '新增' : '编辑'" width="28%" center>
|
||||
<div style="margin-bottom: 25px">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">活动</span>
|
||||
<el-select v-model="addFormData.type" placeholder="请选择" @change="addchangeLevel(null)">
|
||||
<el-option v-for="item in activitylList" :key="item.type" :label="item.name" :value="item.type">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div style="margin-bottom: 25px">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">分区</span>
|
||||
<partition-select v-model:partition-id="addFormData.partitionId" @update:partitionId="addchangeLevel" />
|
||||
</div>
|
||||
<div style="margin-bottom: 25px" >
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">等级</span>
|
||||
<el-select v-model="addFormData.level" placeholder="请选择">
|
||||
<el-option v-for="item in addlevelList" :key="item.level" :label="item.name" :value="item.level">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div style="margin-bottom: 25px">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">奖励类型</span>
|
||||
<el-select v-model="addFormData.awardType" placeholder="请选择">
|
||||
<el-option v-for="item in awardTypeList" :key="item.awardType" :label="item.name"
|
||||
:value="item.awardType">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div style="margin-bottom: 25px">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">奖励ID</span>
|
||||
<el-input v-model="addFormData.awardId" style="width: 50%" class="input"></el-input>
|
||||
</div>
|
||||
<div style="margin-bottom: 25px">
|
||||
<span style="display: inline-block; margin-right: 20px; width: 100px"
|
||||
class="col-sm-2 control-label">奖励天数</span>
|
||||
<el-input v-model="addFormData.awardNum" style="width: 50%" class="input"></el-input>
|
||||
</div>
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="addDialog = false">取消</el-button>
|
||||
<el-button type="primary" @click="addFun()"> 确认 </el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { ref, onMounted, reactive } from 'vue'
|
||||
import PartitionSelect from "@/views/common/partitionSelect.vue";
|
||||
import { getActivitylList, getLevelList, getAwardList, getAwardTypeList, saveAwardList, delAwardList, updateAwardList } from "@/api/SsGuild/rewardConfiguration.js";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
export default {
|
||||
name: 'rewardConfiguration',
|
||||
components: {
|
||||
PartitionSelect
|
||||
},
|
||||
setup() {
|
||||
const formData = reactive({
|
||||
partitionId: undefined,
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
type: '',
|
||||
level: '',
|
||||
|
||||
})
|
||||
const addFormData = reactive({
|
||||
partitionId: undefined,
|
||||
type: '',
|
||||
awardType: '',
|
||||
awardId: '',
|
||||
awardNum: '',
|
||||
level: ''
|
||||
|
||||
})
|
||||
const tableData = reactive({
|
||||
data: [],
|
||||
total: 0,
|
||||
loading: false,
|
||||
})
|
||||
const addDialog = ref(false)
|
||||
const activitylList = ref([])
|
||||
const levelList = ref([])
|
||||
const addlevelList = ref([])
|
||||
const awardTypeList = ref([])
|
||||
const dialogType = ref(0)
|
||||
const getData = () => {
|
||||
tableData.loading = true
|
||||
getAwardList(formData).then(res => {
|
||||
if (res.code == 200) {
|
||||
tableData.data = res.data.records
|
||||
tableData.total = res.data.total
|
||||
tableData.loading = false
|
||||
} else {
|
||||
tableData.loading = false;
|
||||
ElMessage.error(res.message);
|
||||
}
|
||||
})
|
||||
};
|
||||
// 清空
|
||||
const resetAddFormData = () => {
|
||||
Object.assign(addFormData, {
|
||||
partitionId: undefined,
|
||||
type: '',
|
||||
awardType: '',
|
||||
awardId: '',
|
||||
awardNum: '',
|
||||
level: '',
|
||||
id:null
|
||||
});
|
||||
}
|
||||
// 新增
|
||||
const addFun = () => {
|
||||
addDialog.value = false
|
||||
const demand = dialogType.value == 1 ? saveAwardList : updateAwardList
|
||||
demand(addFormData).then(res => {
|
||||
if (res.code == 200) {
|
||||
ElMessage.success(res.message)
|
||||
resetAddFormData()
|
||||
getData()
|
||||
} else {
|
||||
ElMessage.error(res.message)
|
||||
}
|
||||
})
|
||||
}
|
||||
// 删除
|
||||
const delPageFun = (id) => {
|
||||
ElMessageBox.confirm("确定要删除吗", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning",
|
||||
}).then(() => {
|
||||
delAwardList({ id }).then(res => {
|
||||
if (res.code == 200) {
|
||||
ElMessage.success("删除成功")
|
||||
getData()
|
||||
} else {
|
||||
ElMessage.error(res.message)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
// 详情
|
||||
const detailPageFun = (obj) => {
|
||||
resetAddFormData();
|
||||
Object.keys(addFormData).forEach(key => {
|
||||
addFormData[key] = obj[key];
|
||||
});
|
||||
addFormData.id = obj.id;
|
||||
dialogType.value = 2;
|
||||
addDialog.value = true;
|
||||
|
||||
}
|
||||
const changeLevel = (e) => {
|
||||
if(e){
|
||||
formData.partitionId = e;
|
||||
}
|
||||
levelList.value = []
|
||||
formData.level = ''
|
||||
const { type ,partitionId} = formData
|
||||
getLevelList({ partitionId, type }).then(res => {
|
||||
if (res.code == 200) {
|
||||
levelList.value = res.data
|
||||
}
|
||||
})
|
||||
}
|
||||
const addchangeLevel = (e) => {
|
||||
// addFormData.partitionId = e;
|
||||
if(e){
|
||||
addFormData.partitionId = e;
|
||||
}
|
||||
addlevelList.value = []
|
||||
// addFormData.level = ''
|
||||
const { type ,partitionId} = addFormData
|
||||
getLevelList({ partitionId, type }).then(res => {
|
||||
if (res.code == 200) {
|
||||
addlevelList.value = res.data
|
||||
}
|
||||
})
|
||||
}
|
||||
onMounted(() => {
|
||||
getActivitylList().then(res => {
|
||||
if (res.code == 200) {
|
||||
activitylList.value = res.data
|
||||
}
|
||||
})
|
||||
getAwardTypeList().then(res => {
|
||||
if (res.code == 200) {
|
||||
awardTypeList.value = res.data
|
||||
|
||||
}
|
||||
})
|
||||
});
|
||||
return {
|
||||
formData,
|
||||
getData,
|
||||
addDialog,
|
||||
addFormData,
|
||||
addFun,
|
||||
tableData,
|
||||
activitylList,
|
||||
changeLevel,
|
||||
levelList,
|
||||
awardTypeList,
|
||||
delPageFun,
|
||||
detailPageFun,
|
||||
addchangeLevel,
|
||||
addlevelList,
|
||||
dialogType,
|
||||
resetAddFormData
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.box {
|
||||
padding-top: 20px;
|
||||
background: #ecf0f5;
|
||||
|
||||
.inquire {
|
||||
display: inline-block;
|
||||
margin-right: 20px;
|
||||
|
||||
span {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.input {
|
||||
width: 180px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.dialogTableVisibleBut {
|
||||
display: block;
|
||||
margin: 30px 0 0 830px;
|
||||
}
|
||||
|
||||
.paginationClass {
|
||||
margin: 15px 0 5px 0px;
|
||||
}
|
||||
}
|
||||
</style>
|
166
src/views/ssGuild/rewardDistributionRecord.vue
Normal file
166
src/views/ssGuild/rewardDistributionRecord.vue
Normal file
@@ -0,0 +1,166 @@
|
||||
<template>
|
||||
<div class="box">
|
||||
<div class="inquire">
|
||||
<span>平台号</span>
|
||||
<el-input v-model="formData.erbanNo" placeholder="" class="input"></el-input>
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<span>活动</span>
|
||||
<el-select v-model="formData.type" placeholder="请选择" @change="changeLevel(null)">
|
||||
<el-option v-for="item in activitylList" :key="item.type" :label="item.name" :value="item.type">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="inquire">
|
||||
<span>分区</span>
|
||||
<partition-select v-model:partition-id="formData.partitionId" @update:partitionId="changeLevel" />
|
||||
</div>
|
||||
<div class="inquire" v-if="levelList.length > 0 && formData.type !=''">
|
||||
<span>等级</span>
|
||||
<el-select v-model="formData.level" placeholder="请选择">
|
||||
<el-option v-for="item in levelList" :key="item.level" :label="item.name" :value="item.level">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<el-button class="primary" type="primary" @click="getData()">查询</el-button>
|
||||
<!-- 表格数据 -->
|
||||
<el-table v-loading="tableData.loading" :data="tableData.data" ref="multipleTable"
|
||||
@selection-change="handleSelectionChange" border style="width: 100%; margin-top: 25px">
|
||||
<el-table-column prop="name" align="center" label="活动" />
|
||||
<el-table-column prop="level" align="center" label="等级" />
|
||||
<el-table-column prop="erbanNo" align="center" label="平台号" />
|
||||
<el-table-column prop="nick" align="center" label="用户昵称" />
|
||||
<el-table-column prop="partitionDesc" align="center" label="分区" />
|
||||
<el-table-column prop="awardTypeName" align="center" label="奖励类型" />
|
||||
<el-table-column prop="awardId" align="center" label="奖励ID" />
|
||||
<el-table-column prop="awardPic" align="center" label="奖励样式">
|
||||
<template v-slot="scope">
|
||||
<img :src="scope.row.awardPic" style="width: 80px; height: 80px;">
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="awardNum" align="center" label="奖励数量&天数" />
|
||||
<el-table-column prop="createTime" align="center" label="发放时间" >
|
||||
<template v-slot="scope">
|
||||
{{dateFormat(scope.row.createTime)}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="rewardStatus" align="center" label="发放状态" >
|
||||
<template v-slot="scope">
|
||||
{{scope.row.rewardStatus == 1 ? '成功' : '失败'}}
|
||||
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<el-pagination style="margin-top: 10px" class="paginationClass" :current-page="formData.page"
|
||||
:page-size="formData.pageSize" :page-sizes="[10, 20, 50, 100, 200]" layout="sizes, prev, pager, next"
|
||||
:total="tableData.total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { ref, onMounted, reactive } from 'vue'
|
||||
import PartitionSelect from "@/views/common/partitionSelect.vue";
|
||||
import { getActivitylList, getLevelList, getAwardList, getAwardTypeList, saveAwardList, delAwardList, updateAwardList ,getAwardRecordList} from "@/api/SsGuild/rewardConfiguration.js";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
export default {
|
||||
name: 'rewardDistributionRecord',
|
||||
components: {
|
||||
PartitionSelect
|
||||
},
|
||||
setup() {
|
||||
const formData = reactive({
|
||||
partitionId: undefined,
|
||||
erbanNo: '',
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
level:'',
|
||||
type:''
|
||||
})
|
||||
const tableData = reactive({
|
||||
data: [],
|
||||
total: 0,
|
||||
loading: false,
|
||||
})
|
||||
const activitylList = ref([])
|
||||
const levelList = ref([])
|
||||
const changeLevel = (e) => {
|
||||
if(e){
|
||||
formData.partitionId = e;
|
||||
}
|
||||
levelList.value = []
|
||||
formData.level = ''
|
||||
const { type ,partitionId} = formData
|
||||
getLevelList({ partitionId, type }).then(res => {
|
||||
if (res.code == 200) {
|
||||
levelList.value = res.data
|
||||
}
|
||||
})
|
||||
}
|
||||
const getData = () => {
|
||||
tableData.loading = true
|
||||
getAwardRecordList(formData).then(res=>{
|
||||
if (res.code == 200) {
|
||||
tableData.data = res.data.records
|
||||
tableData.total = res.data.total
|
||||
tableData.loading = false
|
||||
} else {
|
||||
tableData.loading = false;
|
||||
ElMessage.error(res.message);
|
||||
}
|
||||
})
|
||||
}
|
||||
const dateFormat = (row) => {
|
||||
const date = new Date(row);
|
||||
return date.format("yyyy-MM-dd hh:mm:ss");
|
||||
}
|
||||
onMounted(() => {
|
||||
getActivitylList().then(res => {
|
||||
if (res.code == 200) {
|
||||
activitylList.value = res.data
|
||||
}
|
||||
})
|
||||
});
|
||||
return {
|
||||
formData,
|
||||
getData,
|
||||
tableData,
|
||||
activitylList,
|
||||
levelList,
|
||||
changeLevel,
|
||||
dateFormat
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.box {
|
||||
padding-top: 20px;
|
||||
background: #ecf0f5;
|
||||
|
||||
.inquire {
|
||||
display: inline-block;
|
||||
margin-right: 20px;
|
||||
|
||||
span {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.input {
|
||||
width: 180px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.dialogTableVisibleBut {
|
||||
display: block;
|
||||
margin: 30px 0 0 830px;
|
||||
}
|
||||
|
||||
.paginationClass {
|
||||
margin: 15px 0 5px 0px;
|
||||
}
|
||||
}
|
||||
</style>
|
Reference in New Issue
Block a user