桃源记客服系统前端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

147 lines
3.8 KiB

<template>
<div>
<el-drawer class="el-drawer" title="开启gm权限历史" v-model="isShowDialog" direction="ltr" size="50%">
<el-table :data="tableData.list" border>
<el-table-column label="操作账号" width="180">
<template #default="scope">
<span>{{ scope.row.operName }}</span>
</template>
</el-table-column>
<el-table-column label="发送玩家" width="180">
<template #default="scope">
<span>{{ scope.row.uids }}</span>
</template>
</el-table-column>
<el-table-column label="服务器" width="180">
<template #default="scope">
<span>{{ scope.row.serverName }}</span>
</template>
</el-table-column>
<el-table-column label="gm开关" width="100">
<template #default="scope">
<div v-if="scope.row.state == 1">开启</div>
<div v-if="scope.row.state == 0">关闭</div>
</template>
</el-table-column>
<el-table-column label="时间" width="180">
<template #default="scope">
<span>{{ scope.row.operTime }}</span>
</template>
</el-table-column>
</el-table>
<el-row justify="space-evenly">
<el-pagination
:hide-on-single-page="true"
v-model:page-size="queryParams.pageSize"
v-model:current-page="queryParams.pageNum"
:pager-count="5"
@current-change="getRecord"
layout="total, prev, pager, next"
:total="queryParams.total"
/>
</el-row>
</el-drawer>
</div>
</template>
<script lang="ts">
import { reactive, toRefs, defineComponent } from 'vue';
import { ElLoading } from 'element-plus';
import { getOperLog } from '/@/api/game';
import { allChannelList, serverList } from '/@/utils/game';
interface TableDataState {
isShowDialog: boolean;
queryParams: object;
channels: object[];
servers: object[];
tableData: object[];
}
export default defineComponent({
name: 'apiV1GameGmEdit',
setup(prop, { emit }) {
const state = reactive<TableDataState>({
isShowDialog: false,
queryParams: { label: '/api/v1/game/mange/setclientgm', pageNum: 1, pageSize: 10, total: 0 },
channels: [],
servers: [],
tableData: {
list: [],
},
});
// 打开弹窗
const openDialog = (row: any | null) => {
state.isShowDialog = true;
state.queryParams = { label: '/api/v1/game/mange/setclientgm', pageNum: 1, pageSize: 10, total: 0 };
state.tableData = {
list: [],
};
console.log('openDialog: >>>>>>>>>>>', row);
allChannelList().then((res) => {
state.channels = res;
});
serverList().then((res) => {
state.servers = res;
});
getRecord();
};
// 关闭弹窗
const closeDialog = () => {
state.isShowDialog = false;
};
// 取消
const onCancel = () => {
closeDialog();
};
// 新增
const getRecord = () => {
const loading = ElLoading.service({
lock: true,
text: 'Loading',
background: 'rgba(0, 0, 0, 0.7)',
});
getOperLog(state.queryParams)
.then((res) => {
console.log(res);
state.queryParams.total = res.data.total;
state.tableData.list = res.data.list || [];
state.tableData.list.forEach((item: any) => {
let param = item.operParam.split('&');
for (let i in param) {
let data = param[i].split('=');
if (data[0]) {
item[data[0]] = data[1];
}
}
item.serverName = item.serverId;
if (state.servers.find((r) => r.id == Number(item.serverId))) {
item.serverName = state.servers.find((r) => r.id == Number(item.serverId)).name;
}
});
})
.catch((err) => {
state.tableData.list = [];
state.queryParams.total = 0;
})
.finally(function () {
loading.close();
});
};
return {
openDialog,
closeDialog,
onCancel,
getRecord,
...toRefs(state),
};
},
});
</script>
<style scoped lang="scss">
::v-deep .el-drawer {
background-color: rgba(253, 253, 253, 0.68);
}
</style>