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
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>
|
|
|