新增ss工会后台,靓号暂存

This commit is contained in:
dragon
2024-09-06 16:22:49 +08:00
parent 520e4e4c58
commit 69dc2de281
4 changed files with 857 additions and 0 deletions

View File

@@ -0,0 +1,374 @@
<template>
<div class="box">
<!-- 查询 -->
<div class="inquire">
<span>主播ID</span>
<el-input
v-model="inquire.anchorId"
placeholder=""
class="input"
></el-input>
</div>
<div class="inquire">
<span>公会ID</span>
<el-input
v-model="inquire.guildId"
placeholder=""
class="input"
></el-input>
</div>
<div class="inquire">
<span>公会长ID</span>
<el-input
v-model="inquire.guildUserId"
placeholder=""
class="input"
></el-input>
</div>
<div class="inquire">
<span>周期</span>
<el-select v-model="inquire.weekTime" placeholder="请选择">
<el-option
v-for="item in inquire.weekTimeOptions"
:key="item.cycleDateBegin"
:label="item.cycleDateShow"
:value="item.cycleDateBegin"
>
</el-option>
</el-select>
</div>
<div class="inquire">
<span>发放状态</span>
<el-select v-model="inquire.status" placeholder="请选择">
<el-option
v-for="item in inquire.statusOptions"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</div>
<!-- 查询按钮 -->
<el-button class="primary" type="primary" @click="getData()"
>查询</el-button
>
<el-button class="primary" type="primary" @click="confirmExport2Excel()"
>导出</el-button
>
<el-button class="warning" type="warning " @click="sendGoldFun()"
>批量发放</el-button
>
<!-- 表格 -->
<el-table
v-loading="loading"
:data="tableData"
ref="multipleTable"
@selection-change="handleSelectionChange"
border
style="width: 100%; margin-top: 25px"
>
<el-table-column type="selection" :selectable="callback" label="选择" />
<el-table-column prop="cycleDate" align="center" label="周期" />
<el-table-column prop="erbanNo" align="center" label="主播ID" />
<el-table-column prop="guildId" align="center" label="公会ID" />
<el-table-column
prop="guildDiamondNum"
align="center"
label="公会总流水"
/>
<el-table-column prop="ssLevelName" align="center" label="公会等级" />
<el-table-column prop="diamondNum" align="center" label="主播流水" />
<el-table-column prop="memberLevelName" align="center" label="主播档位" />
<el-table-column prop="goldNum" align="center" label="主播获得奖励" />
<el-table-column align="center" prop="giftInfo" label="发放状态">
<template v-slot="scope">
{{ scope.row.sendStatusStr }}
</template>
</el-table-column>
<el-table-column prop="sendUser" align="center" label="发放人" />
<el-table-column align="center" label="操作" width="300">
<template v-slot="scope">
<el-button
@click="sendGoldOneFun(scope.row)"
:class="scope.row.sendStatusStr == '未发放' ? 'primary' : 'info'"
:type="scope.row.sendStatusStr == '未发放' ? 'primary' : 'info'"
size="default"
:disabled="scope.row.sendStatusStr == '未发放' ? false : true"
>{{
scope.row.sendStatusStr == "未发放" ? "发放" : "已发放"
}}</el-button
>
</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"
/>
</div>
</template>
<script>
import {
cycleDateList,
list,
ssGuildExport,
sendGold,
} from "@/api/SsGuild/SsGuild";
// @ts-ignore
import { dateFormat } from "@/utils/system-helper";
// @ts-ignore
import { ElMessage, ElTable } from "element-plus";
import { ref } from "vue";
import { ElMessageBox } from "element-plus"; // 正确引入 ElM
export default {
name: "SsGuild",
data() {
return {
loading: false,
delDialog: false,
delDialogData: null,
selectedRows: [], //存储选中行数据
//查询所需条件对象
inquire: {
anchorId: "",
guildId: "",
guildUserId: "",
weekTime: "",
weekTimeOptions: [],
status: "",
statusOptions: [
{ value: 0, label: "未发放" },
{ value: 1, label: "已发放" },
],
},
// 表格
tableData: [],
// 分页
total: 10, //总页数
currentPage: 1, //页码
pageSize: 10, //条数
};
},
created() {
cycleDateList().then((res) => {
this.inquire.weekTimeOptions = res.data;
});
this.getData();
},
methods: {
// 查询接口
getData() {
this.loading = true;
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");
}
list({
erbanNo: this.inquire.anchorId,
guildId: this.inquire.guildId,
ownerErbanNo: this.inquire.guildUserId,
cycleDate: this.inquire.weekTime,
status: this.inquire.status,
pageNo: this.currentPage,
pageSize: this.pageSize,
}).then((res) => {
if (res.code == 200) {
this.total = res.data.total;
this.tableData = res.data.rows;
} else {
ElMessage({
showClose: true,
message: res.message,
type: "error",
});
}
this.loading = false;
});
},
handleSelectionChange(val) {
this.selectedRows = val;
console.log("Selected rows:", this.selectedRows);
},
handleGetSelection() {
// 获取选中的行数据
console.log("Current selected rows:", this.selectedRows);
},
// 确认导出
confirmExport2Excel() {
ElMessageBox.confirm("确定导出Excel吗", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
ssGuildExport({
erbanNo: this.inquire.anchorId,
guildId: this.inquire.guildId,
ownerErbanNo: this.inquire.guildUserId,
cycleDate: this.inquire.weekTime,
status: this.inquire.status,
})
.then((res) => {
// if (res) {
// this.exportVisible = false;
// this.btnLoading = false;
// let alink = document.createElement("a");
// alink.download = `SS公会奖励发放.xls`;
// alink.style.display = "none";
// const blob = new Blob([res.data]);
// alink.href = URL.createObjectURL(blob);
// document.body.appendChild(alink);
// alink.click();
// URL.revokeObjectURL(alink.href);
// }
})
.catch((err) => {
console.error(err); // 打印错误信息
ElMessage.error("导出失败");
});
})
.catch(() => {
ElMessage({
type: "info",
message: "取消",
});
});
},
callback(row) {
return row.sendStatusStr == "未发放" ? true : false;
},
// 确认批量发放
sendGoldFun() {
ElMessageBox.confirm("确定发放奖励吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
var str = "";
this.selectedRows.forEach((res) => {
str += `${res.id},`;
});
sendGold({ ids: str })
.then((res) => {
if (res.code == 200) {
ElMessage({
showClose: true,
message: "发放成功",
type: "success",
});
this.getData();
} else {
ElMessage({
showClose: true,
message: res.message,
type: "error",
});
}
})
.catch((err) => {
console.error(err); // 打印错误信息
ElMessage.error("发放失败");
});
})
.catch(() => {
ElMessage({
type: "info",
message: "取消",
});
});
},
// 确认单个发放
sendGoldOneFun(val) {
ElMessageBox.confirm("确定发放奖励吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
sendGold({ ids: val.id })
.then((res) => {
if (res.code == 200) {
ElMessage({
showClose: true,
message: "发放成功",
type: "success",
});
this.getData();
} else {
ElMessage({
showClose: true,
message: res.message,
type: "error",
});
}
})
.catch((err) => {
console.error(err); // 打印错误信息
ElMessage.error("发放失败");
});
})
.catch(() => {
ElMessage({
type: "info",
message: "取消",
});
});
},
// 分页导航
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;
}
}
.selectBox {
display: flex;
height: 35px;
line-height: 35px;
margin-bottom: 20px;
}
.selectBoxImg {
height: 150px;
}
</style>