Compare commits

...

1 Commits
order ... vip

Author SHA1 Message Date
dragon
6e66ca4864 新增赠送VIP&新增工会信息-导出 2024-07-16 19:34:48 +08:00
4 changed files with 529 additions and 140 deletions

View File

@@ -0,0 +1,34 @@
import request from '@/utils/request';
import { genQueryParam } from '@/utils/maintainer';
// 查询用户接口
export const getByErbanNo = query => {
return request({
url: '/admin/user/getByErbanNo',
method: 'get',
params: query
});
};
// 获取VIP列表接口
export const listAll = query => {
return request({
url: '/admin/vip/listAll',
method: 'get',
params: query
});
};
// 获取列表接口
export const pageRecord = query => {
return request({
url: '/vipSend/pageRecord',
method: 'get',
params: query
});
};
// 赠送VIP接口
export const vipSendSend = query => {
return request({
url: '/vipSend/send',
method: 'post',
params: query
});
};

View File

@@ -115,3 +115,8 @@ export const exportFamilyMember = query => {
window.location.href = `/admin/family/manage/exportFamilyMember?${genQueryParam(query)}`;
return;
};
// 导出-公会信息
export const exportInfo = query => {
window.location.href = `/admin/family/manage/exportFamily?${genQueryParam(query)}`;
return;
};

View File

@@ -3,120 +3,133 @@
<!-- 查询 -->
<div class="inquire">
<span>ID</span>
<el-input v-model="inquire.userId"
placeholder=""
class="input"></el-input>
<el-input
v-model="inquire.userId"
placeholder=""
class="input"
></el-input>
</div>
<div class="inquire">
<span>推荐人</span>
<el-input v-model="inquire.referrer"
placeholder=""
class="input"></el-input>
<el-input
v-model="inquire.referrer"
placeholder=""
class="input"
></el-input>
</div>
<!-- 时间选择器 -->
<div class="inquire">
<div class="block">
<span class="demonstration">日期</span>
<el-date-picker v-model="inquire.time"
type="datetimerange"
range-separator=""
start-placeholder="开始日期"
end-placeholder="结束日期">
<el-date-picker
v-model="inquire.time"
type="datetimerange"
range-separator=""
start-placeholder="开始日期"
end-placeholder="结束日期"
>
</el-date-picker>
</div>
</div>
<!-- 查询按钮 -->
<el-button class="primary"
type="primary"
@click="getData()">查询</el-button>
<el-button class="primary"
type="primary"
@click="addDialog = true">添加</el-button>
<el-button class="primary" type="primary" @click="getData()"
>查询</el-button
>
<el-button class="primary" type="primary" @click="addDialog = true"
>添加</el-button
>
<el-button class="primary" type="primary" @click="exportInfoFun()"
>导出</el-button
>
<!-- 表格 -->
<el-table v-loading="loading"
:data="tableData"
border
style="width: 100%; margin-top: 25px">
<el-table-column prop="referrer"
align="center"
label="推荐人" />
<el-table-column prop="ownerErbanNo"
align="center"
label="会长ID" />
<el-table-column prop="ownerNick"
align="center"
label="会长昵称" />
<el-table-column prop="ownerPartitionName"
align="center"
label="会长分区" />
<el-table-column prop="name"
align="center"
label="公会昵称" />
<el-table-column align="center"
prop="giftInfo"
label="公会背景图">
<el-table
v-loading="loading"
:data="tableData"
border
style="width: 100%; margin-top: 25px"
>
<el-table-column prop="referrer" align="center" label="推荐人" />
<el-table-column prop="ownerErbanNo" align="center" label="会长ID" />
<el-table-column prop="ownerNick" align="center" label="会长昵称" />
<el-table-column
prop="ownerPartitionName"
align="center"
label="会长分区"
/>
<el-table-column prop="name" align="center" label="公会昵称" />
<el-table-column align="center" prop="giftInfo" label="公会背景图">
<template v-slot="scope">
<el-image style="width: 100px; height: 100px"
:src="scope.row.backgroundUrl"
:zoom-rate="1.1"
:preview-src-list="[scope.row.backgroundUrl]"
fit="cover"
preview-teleported="true"
hide-on-click-modal="true" />
<el-image
style="width: 100px; height: 100px"
:src="scope.row.backgroundUrl"
:zoom-rate="1.1"
:preview-src-list="[scope.row.backgroundUrl]"
fit="cover"
preview-teleported="true"
hide-on-click-modal="true"
/>
</template>
</el-table-column>
<el-table-column prop="createTime"
align="center"
label="创建日期" />
<el-table-column prop="createTime" align="center" label="创建日期" />
<!-- <el-table-column prop="memberNum" align="center" label="成员数量" /> -->
<el-table-column align="center"
label="成员数量/上限"><template v-slot="scope">{{ scope.row.memberNum }}/{{ scope.row.memberNumLimit }}</template></el-table-column>
<el-table-column prop="goldIncome"
align="center"
label="金币总收入" />
<el-table-column prop="diamondRemain"
align="center"
label="钻石总收入" />
<el-table-column align="center" label="成员数量/上限"
><template v-slot="scope"
>{{ scope.row.memberNum }}/{{ scope.row.memberNumLimit }}</template
></el-table-column
>
<el-table-column prop="goldIncome" align="center" label="金币总收入" />
<el-table-column prop="diamondRemain" align="center" label="钻石总收入" />
<el-table-column align="center"
label="操作"
width="300">
<el-table-column align="center" label="操作" width="300">
<template v-slot="scope">
<el-button @click="ediClick(scope)"
class="primary"
type="primary"
size="default"
:disabled="!scope.row.enable">编辑</el-button>
<el-button @click="
<el-button
@click="ediClick(scope)"
class="primary"
type="primary"
size="default"
:disabled="!scope.row.enable"
>编辑</el-button
>
<el-button
@click="
delDialog = true;
delDialogData = scope.row;
"
:class="scope.row.enable ? 'danger' : 'info'"
:type="scope.row.enable ? 'danger' : 'info'"
size="default"
:disabled="!scope.row.enable">{{ scope.row.enable ? "移除" : "已解散" }}</el-button>
:class="scope.row.enable ? 'danger' : 'info'"
:type="scope.row.enable ? 'danger' : 'info'"
size="default"
:disabled="!scope.row.enable"
>{{ scope.row.enable ? "移除" : "已解散" }}</el-button
>
</template>
</el-table-column>
</el-table>
<!-- 新增弹窗 -->
<el-dialog v-model="addDialog"
title="新增"
width="28%"
center>
<el-dialog v-model="addDialog" title="新增" width="28%" center>
<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="resource.id"
style="width: 75%"
class="input"></el-input>
<span
style="display: inline-block; margin-right: 20px; width: 100px"
class="col-sm-2 control-label"
>会长ID</span
>
<el-input
v-model="resource.id"
style="width: 75%"
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="resource.referrer"
style="width: 75%"
class="input"></el-input>
<span
style="display: inline-block; margin-right: 20px; width: 100px"
class="col-sm-2 control-label"
>推荐人</span
>
<el-input
v-model="resource.referrer"
style="width: 75%"
class="input"
></el-input>
</div>
<!-- <div style="margin-bottom: 25px">
<span
@@ -133,96 +146,115 @@
<template #footer>
<span class="dialog-footer">
<el-button @click="addDialog = false">取消</el-button>
<el-button type="primary"
@click="add()"> 确认 </el-button>
<el-button type="primary" @click="add()"> 确认 </el-button>
</span>
</template>
</el-dialog>
<!-- 分页 -->
<el-pagination style="margin-top: 10px"
class="paginationClass"
v-model:current-page="currentPage"
v-model:page-size="pageSize"
:page-sizes="[10, 20, 30, 40, 50, 100, 200, 300, 400, 500, 999999999]"
layout="sizes, prev, pager, next"
:total="total"
@size-change="handleSizeChange"
@current-change="handleCurrentChange" />
<el-pagination
style="margin-top: 10px"
class="paginationClass"
v-model:current-page="currentPage"
v-model:page-size="pageSize"
:page-sizes="[10, 20, 30, 40, 50, 100, 200, 300, 400, 500, 999999999]"
layout="sizes, prev, pager, next"
:total="total"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
<!-- 编辑弹窗 -->
<el-dialog v-model="editDialog"
title="编辑"
width="28%"
center>
<el-dialog v-model="editDialog" title="编辑" width="28%" center>
<!-- 会长ID -->
<div style="margin-bottom: 25px; margin-top: 10px">
<span style="display: inline-block; margin-right: 20px"
class="col-sm-2 control-label">会长ID</span>
<el-input v-model="ediObj.leaderId"
style="width: 75%"
class="input"
disabled></el-input>
<span
style="display: inline-block; margin-right: 20px"
class="col-sm-2 control-label"
>会长ID</span
>
<el-input
v-model="ediObj.leaderId"
style="width: 75%"
class="input"
disabled
></el-input>
</div>
<!-- 会长昵称 -->
<div style="margin-bottom: 25px; margin-top: 10px">
<span style="display: inline-block; margin-right: 20px"
class="col-sm-2 control-label">会长昵称</span>
<el-input v-model="ediObj.leaderNick"
style="width: 75%"
class="input"
disabled></el-input>
<span
style="display: inline-block; margin-right: 20px"
class="col-sm-2 control-label"
>会长昵称</span
>
<el-input
v-model="ediObj.leaderNick"
style="width: 75%"
class="input"
disabled
></el-input>
</div>
<!-- 公会昵称 -->
<div style="margin-bottom: 25px; margin-top: 10px">
<span style="display: inline-block; margin-right: 20px"
class="col-sm-2 control-label">公会昵称</span>
<el-input v-model="ediObj.guildNick"
style="width: 75%"
class="input"
disabled></el-input>
<span
style="display: inline-block; margin-right: 20px"
class="col-sm-2 control-label"
>公会昵称</span
>
<el-input
v-model="ediObj.guildNick"
style="width: 75%"
class="input"
disabled
></el-input>
</div>
<!-- 成员数量上限 -->
<div style="margin-bottom: 25px; margin-top: 10px">
<span style="display: inline-block; margin-right: 20px"
class="col-sm-2 control-label">成员数量上限</span>
<el-input v-model="ediObj.guildNumber"
style="width: 75%"
class="input"></el-input>
<span
style="display: inline-block; margin-right: 20px"
class="col-sm-2 control-label"
>成员数量上限</span
>
<el-input
v-model="ediObj.guildNumber"
style="width: 75%"
class="input"
></el-input>
</div>
<template #footer>
<span class="dialog-footer">
<el-button @click="editDialog = false">取消</el-button>
<el-button type="primary"
@click="editDialogClick()">
<el-button type="primary" @click="editDialogClick()">
确认
</el-button>
</span>
</template>
</el-dialog>
<!-- 二次确认删除弹窗 -->
<el-dialog v-model="delDialog"
title="提示"
width="30%"
center>
<el-dialog v-model="delDialog" title="提示" width="30%" center>
<span> 确定要解散该公会吗?</span>
<template #footer>
<span class="dialog-footer">
<el-button @click="delDialog = false">取消</el-button>
<el-button type="primary"
@click="delClick()"> 确认 </el-button>
<el-button type="primary" @click="delClick()"> 确认 </el-button>
</span>
</template>
</el-dialog>
</div>
</template>
<script>
import { pageFamily, create, update, dismiss } from "@/api/nobleman/nobleman";
import {
pageFamily,
exportInfo,
create,
update,
dismiss,
} from "@/api/nobleman/nobleman";
// @ts-ignore
import { dateFormat } from "@/utils/system-helper";
// @ts-ignore
import { ElMessage } from "element-plus";
export default {
name: "GuildInfo",
data () {
data() {
return {
loading: false,
delDialog: false,
@@ -258,12 +290,12 @@ export default {
},
};
},
created () {
created() {
this.getData();
},
methods: {
// 查询接口
getData () {
getData() {
this.loading = true;
let time = this.inquire.time;
let startTime = "";
@@ -286,8 +318,25 @@ export default {
this.loading = false;
});
},
// 导出
exportInfoFun() {
let time = this.inquire.time;
let startTime = "";
let endTime = "";
if (time && time.length > 0) {
startTime = dateFormat(this.inquire.time[0], "yyyy-MM-dd hh:mm:ss");
endTime = dateFormat(this.inquire.time[1], "yyyy-MM-dd hh:mm:ss");
}
exportInfo({
erbanNo: this.inquire.userId,
referrer: this.inquire.referrer,
familyName: this.inquire.nick,
startDate: startTime,
endDate: endTime,
}).then((res) => {});
},
// 添加
add () {
add() {
this.addDialog = false;
create({
erbanNo: this.resource.id,
@@ -297,7 +346,7 @@ export default {
});
},
// 编辑按钮
ediClick (res) {
ediClick(res) {
var obj = res.row;
this.ediObj.leaderId = obj.ownerErbanNo;
this.ediObj.leaderNick = obj.ownerNick;
@@ -307,7 +356,7 @@ export default {
this.editDialog = true;
},
// 二次确认弹窗
editDialogClick () {
editDialogClick() {
console.log(this.ediObj);
update({
id: this.ediObj.id,
@@ -332,7 +381,7 @@ export default {
});
},
// 解散按钮
delClick () {
delClick() {
console.log(this.delDialogData.id);
var familyId = this.delDialogData.id;
dismiss({ familyId }).then((res) => {
@@ -355,10 +404,10 @@ export default {
});
},
// 分页导航
handleSizeChange () {
handleSizeChange() {
this.getData();
},
handleCurrentChange () {
handleCurrentChange() {
this.getData();
},
},

301
src/views/vip/VipGive.vue Normal file
View File

@@ -0,0 +1,301 @@
<template>
<div class="box">
<!-- 查询 -->
<div class="inquire">
<span>ID</span>
<el-input
v-model="inquire.userId"
placeholder=""
class="input"
></el-input>
</div>
<!-- 查询按钮 -->
<el-button class="primary" type="primary" @click="getData()"
>查询
</el-button>
<el-button class="primary" type="primary" @click="editDialog = true"
>赠送VIP
</el-button>
<!-- 表格 -->
<el-table
v-loading="loading"
:data="tableData"
border
style="width: 100%; margin-top: 25px"
>
<el-table-column prop="erbanNo" align="center" label="平台号" />
<el-table-column prop="nick" align="center" label="昵称" />
<el-table-column
prop="registerTime"
align="center"
label="用户注册时间"
/>
<el-table-column prop="createTime" align="center" label="赠送贵族时间" />
<el-table-column prop="vipLevel" align="center" label="赠送贵族等级">
<template v-slot="scope">VIP{{ scope.row.vipLevel }}</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<el-pagination
style="margin-top: 10px"
class="paginationClass"
v-model:current-page="currentPage"
v-model:page-size="pageSize"
:page-sizes="[10, 20, 30, 40, 50, 100, 200, 300, 400, 500, 999999999]"
layout="sizes, prev, pager, next"
:total="total"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
<!-- 赠送VIP弹窗 -->
<el-dialog
v-model="editDialog"
title="赠送VIP(点击确认直接赠送,请认真核对谨慎操作!!)"
width="36%"
center
>
<!-- 赠送用户平台ID -->
<div style="margin-bottom: 25px; margin-top: 10px">
<span
style="display: inline-block; margin-right: 20px"
class="col-sm-2 control-label"
>赠送用户平台ID</span
>
<el-input
v-model="editObj.userId"
style="width: 75%"
class="input"
placeholder="请输入赠送用户平台ID"
@input="inputFun()"
></el-input>
</div>
<!-- 赠送等级 -->
<div style="margin-bottom: 25px; margin-top: 10px">
<span
style="display: inline-block; margin-right: 20px"
class="col-sm-2 control-label"
>赠送VIP等级</span
>
<el-select v-model="editObj.value" placeholder="请选择">
<el-option
v-for="item in editObj.options"
:key="item.vipLevel"
:label="item.vipName"
:value="item.vipLevel"
>
</el-option>
</el-select>
</div>
<div>
<!-- 用户昵称 -->
<div style="margin-bottom: 25px; margin-top: 10px">
<span
style="display: inline-block; margin-right: 20px"
class="col-sm-2 control-label"
>用户昵称</span
>
<el-input
v-model="editObj.nick"
style="width: 75%"
class="input"
placeholder="请先输入用户平台id"
disabled
></el-input>
</div>
<!-- 用户地区 -->
<div style="margin-bottom: 25px; margin-top: 10px">
<span
style="display: inline-block; margin-right: 20px"
class="col-sm-2 control-label"
>用户地区</span
>
<el-input
v-model="editObj.region"
style="width: 75%"
class="input"
placeholder="请先输入用户平台id"
disabled
></el-input>
</div>
<!-- 用户注册时间 -->
<div style="margin-bottom: 25px; margin-top: 10px">
<span
style="display: inline-block; margin-right: 20px"
class="col-sm-2 control-label"
>用户注册时间</span
>
<el-input
v-model="editObj.time"
style="width: 75%"
class="input"
placeholder="请先输入用户平台id"
disabled
></el-input>
</div>
</div>
<template #footer>
<span class="dialog-footer">
<el-button @click="editDialog = false">取消</el-button>
<el-button type="primary" @click="editDialogClick()">
确认
</el-button>
</span>
</template>
</el-dialog>
</div>
</template>
<script>
import {
getByErbanNo,
listAll,
pageRecord,
vipSendSend,
} from "@/api/VipGive/VipGive";
// @ts-ignore
import { dateFormat } from "@/utils/system-helper";
// @ts-ignore
import { ElMessage } from "element-plus";
export default {
name: "VipGive",
data() {
return {
loading: false,
//查询所需条件对象
inquire: {
userId: "",
},
// 表格
tableData: [],
// 分页
total: 10, //总页数
currentPage: 1, //页码
pageSize: 10, //条数
// 赠送VIP
editDialog: false,
timeout: "",
editObj: {
userId: "",
value: "",
options: [],
nick: "",
time: "",
region: "",
uid: "",
},
};
},
created() {
this.getData();
listAll().then((res) => {
this.editObj.options = res.data;
});
},
methods: {
// 查询接口
getData() {
this.loading = true;
pageRecord({
erbanNo: this.inquire.userId,
current: this.currentPage,
size: this.pageSize,
}).then((res) => {
this.total = res.data.total;
this.tableData = res.data.rows;
this.loading = false;
});
},
// 监听弹窗用户id输入
inputFun() {
var than = this;
clearTimeout(than.timeout);
than.timeout = setTimeout(function () {
ElMessage({
showClose: true,
message: "查询中~",
type: "warning",
});
getByErbanNo({
erbanNo: than.editObj.userId,
}).then((res) => {
if (res.code == 200) {
than.editObj.nick = res.data.nick;
than.editObj.region = res.data.partitionName;
than.editObj.time = res.data.createTime;
than.editObj.uid = res.data.uid;
ElMessage({
showClose: true,
message: "查询成功",
type: "success",
});
} else {
ElMessage({
showClose: true,
message: res.message,
type: "error",
});
}
});
}, 1000);
},
// 赠送按钮
editDialogClick() {
vipSendSend({
uid: this.editObj.uid,
vipLevel: this.editObj.value,
}).then((res) => {
if (res.code == 200) {
this.getData();
ElMessage({
showClose: true,
message: "赠送成功",
type: "success",
});
this.editDialog = false;
} else {
ElMessage({
showClose: true,
message: res.message,
type: "error",
});
}
});
},
// 分页导航
handleSizeChange() {
this.getData();
},
handleCurrentChange() {
this.getData();
},
},
};
</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>