17 changed files with 1364 additions and 450 deletions
Before Width: | Height: | Size: 364 KiB After Width: | Height: | Size: 19 KiB |
@ -0,0 +1,165 @@ |
|||||||
|
<template> |
||||||
|
<div class="system-role-container"> |
||||||
|
<el-card shadow="hover"> |
||||||
|
<div class="system-user-search mb15"> |
||||||
|
<el-form :inline="true"> |
||||||
|
<el-form :inline="true"> |
||||||
|
<el-form-item label="起始时间" prop="lowTime"> |
||||||
|
<el-date-picker type="datetime" size="large" v-model="tableData.param.lowTime" format="YYYY/MM/DD HH:mm:ss" value-format="x" /> |
||||||
|
</el-form-item> |
||||||
|
|
||||||
|
<el-form-item label="终止时间" prop="time"> |
||||||
|
<el-date-picker type="datetime" v-model="tableData.param.upTime" format="YYYY/MM/DD HH:mm:ss" value-format="x" /> |
||||||
|
</el-form-item> |
||||||
|
</el-form> |
||||||
|
<el-form-item label="状态"> |
||||||
|
<el-select size="default" placeholder="请选择状态" class="w-50 m-2" v-model="tableData.param.state" clearable> |
||||||
|
<el-option label="全部" value="0" /> |
||||||
|
<el-option label="未处理" value="1" /> |
||||||
|
<el-option label="已处理" value="2" /> |
||||||
|
</el-select> |
||||||
|
</el-form-item> |
||||||
|
<el-form-item> |
||||||
|
<el-button size="default" type="primary" class="ml10" @click="bugList"> |
||||||
|
<el-icon> |
||||||
|
<ele-Search /> |
||||||
|
</el-icon> |
||||||
|
查询 |
||||||
|
</el-button> |
||||||
|
</el-form-item> |
||||||
|
</el-form> |
||||||
|
</div> |
||||||
|
<el-table :data="tableData.data" style="width: 100%"> |
||||||
|
<el-table-column type="index" label="序号" width="60" /> |
||||||
|
<el-table-column prop="uid" label="桃谷id" show-overflow-tooltip></el-table-column> |
||||||
|
<el-table-column prop="server" label="区服" show-overflow-tooltip></el-table-column> |
||||||
|
<el-table-column prop="qq" label="qq号" show-overflow-tooltip></el-table-column> |
||||||
|
<el-table-column prop="tel" label="联系电话" show-overflow-tooltip></el-table-column> |
||||||
|
<el-table-column prop="bug" label="问题描述" show-overflow-tooltip></el-table-column> |
||||||
|
<el-table-column prop="occurrenceTime" label="发生时间" show-overflow-tooltip></el-table-column> |
||||||
|
<el-table-column prop="state" label="状态" show-overflow-tooltip></el-table-column> |
||||||
|
<el-table-column label="操作" width="100"> |
||||||
|
<template #default="scope"> |
||||||
|
<el-button size="small" type="text" v-if="scope.state===1" @click="onOperate(scope.row.id)">处理</el-button> |
||||||
|
</template> |
||||||
|
</el-table-column> |
||||||
|
</el-table> |
||||||
|
<pagination |
||||||
|
v-show="tableData.total>0" |
||||||
|
:total="tableData.total" |
||||||
|
v-model:page="tableData.param.pageNum" |
||||||
|
v-model:limit="tableData.param.pageSize" |
||||||
|
@pagination="bugList" |
||||||
|
/> |
||||||
|
</el-card> |
||||||
|
|
||||||
|
</div> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script lang="ts"> |
||||||
|
import {toRefs, reactive, onMounted, defineComponent} from 'vue'; |
||||||
|
import {gameBugList, gameOperateBug} from "/@/api/game/index"; |
||||||
|
import {ElMessage} from "element-plus/es"; |
||||||
|
// 定义接口来定义对象的类型 |
||||||
|
interface TableData { |
||||||
|
id:number; |
||||||
|
uid:number; |
||||||
|
server: number; |
||||||
|
qq: string; |
||||||
|
tel: string; |
||||||
|
bug: string; |
||||||
|
occurrenceTime:string; |
||||||
|
createTime: string; |
||||||
|
state:number |
||||||
|
} |
||||||
|
interface TableDataState { |
||||||
|
tableData: { |
||||||
|
data: Array<TableData>; |
||||||
|
total: number; |
||||||
|
loading: boolean; |
||||||
|
param: { |
||||||
|
lowTime:number; |
||||||
|
upTime:number; |
||||||
|
state:number; |
||||||
|
pageNum: number; |
||||||
|
pageSize: number; |
||||||
|
}; |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
export default defineComponent({ |
||||||
|
name: 'apiV1SystemRoleList', |
||||||
|
setup() { |
||||||
|
const state = reactive<TableDataState>({ |
||||||
|
tableData: { |
||||||
|
data: [], |
||||||
|
total: 0, |
||||||
|
loading: false, |
||||||
|
param: { |
||||||
|
lowTime:0, |
||||||
|
upTime:0, |
||||||
|
state: 0, |
||||||
|
pageNum:1, |
||||||
|
pageSize:10 |
||||||
|
|
||||||
|
}, |
||||||
|
}, |
||||||
|
}); |
||||||
|
// 初始化表格数据 |
||||||
|
const initTableData = () => { |
||||||
|
bugList() |
||||||
|
}; |
||||||
|
const bugList = ()=>{ |
||||||
|
const data: Array<TableData> = []; |
||||||
|
gameBugList(state.tableData.param).then(res=>{ |
||||||
|
const list = res.data.list??[] |
||||||
|
list.map((item:TableData)=>{ |
||||||
|
data.push({ |
||||||
|
id:item.id, |
||||||
|
uid:item.uid, |
||||||
|
server:item.server, |
||||||
|
qq:item.qq, |
||||||
|
tel:item.tel, |
||||||
|
bug:item.bug, |
||||||
|
occurrenceTime:item.occurrenceTime, |
||||||
|
state:item.state, |
||||||
|
createTime:item.createTime |
||||||
|
|
||||||
|
}); |
||||||
|
}) |
||||||
|
state.tableData.data = data; |
||||||
|
state.tableData.total = res.data.total; |
||||||
|
}) |
||||||
|
}; |
||||||
|
|
||||||
|
const onOperate = (uid:number) => { |
||||||
|
gameOperateBug({"uid":uid}).then(()=>{ |
||||||
|
ElMessage.success('操作成功'); |
||||||
|
}).finally(()=>{ |
||||||
|
// state.loading = false; |
||||||
|
}) |
||||||
|
}; |
||||||
|
|
||||||
|
|
||||||
|
// 分页改变 |
||||||
|
const onHandleSizeChange = (val: number) => { |
||||||
|
state.tableData.param.pageSize = val; |
||||||
|
}; |
||||||
|
// 分页改变 |
||||||
|
const onHandleCurrentChange = (val: number) => { |
||||||
|
state.tableData.param.pageNum = val; |
||||||
|
}; |
||||||
|
// 页面加载时 |
||||||
|
onMounted(() => { |
||||||
|
initTableData(); |
||||||
|
}); |
||||||
|
return { |
||||||
|
onOperate, |
||||||
|
onHandleSizeChange, |
||||||
|
onHandleCurrentChange, |
||||||
|
bugList, |
||||||
|
...toRefs(state), |
||||||
|
}; |
||||||
|
}, |
||||||
|
}); |
||||||
|
</script> |
@ -1,264 +0,0 @@ |
|||||||
<template> |
|
||||||
<div class="system-edit-role-container"> |
|
||||||
<el-dialog :title="(formData.id===0?'添加':'修改')+'角色'" v-model="isShowDialog" width="769px"> |
|
||||||
<el-form ref="formRef" :model="formData" :rules="rules" size="default" label-width="90px"> |
|
||||||
<el-row :gutter="35"> |
|
||||||
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> |
|
||||||
<el-form-item label="角色名称" prop="name"> |
|
||||||
<el-input v-model="formData.name" placeholder="请输入角色名称" clearable></el-input> |
|
||||||
</el-form-item> |
|
||||||
</el-col> |
|
||||||
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> |
|
||||||
<el-form-item label="排序"> |
|
||||||
<el-input-number v-model="formData.listOrder" :min="0" controls-position="right" placeholder="请输入排序" class="w100" /> |
|
||||||
</el-form-item> |
|
||||||
</el-col> |
|
||||||
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> |
|
||||||
<el-form-item label="角色状态"> |
|
||||||
<el-switch v-model="formData.status" :active-value="1" :inactive-value="0" inline-prompt active-text="启" inactive-text="禁"></el-switch> |
|
||||||
</el-form-item> |
|
||||||
</el-col> |
|
||||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> |
|
||||||
<el-form-item label="角色描述"> |
|
||||||
<el-input v-model="formData.remark" type="textarea" placeholder="请输入角色描述" maxlength="150"></el-input> |
|
||||||
</el-form-item> |
|
||||||
</el-col> |
|
||||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> |
|
||||||
<el-form-item label="菜单权限"> |
|
||||||
<el-row :gutter="35"> |
|
||||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24"> |
|
||||||
<el-checkbox v-model="menuExpand" @change="handleCheckedTreeExpand($event)">展开/折叠</el-checkbox> |
|
||||||
<el-checkbox v-model="menuNodeAll" @change="handleCheckedTreeNodeAll($event)">全选/全不选</el-checkbox> |
|
||||||
<el-checkbox v-model="menuCheckStrictly" @change="handleCheckedTreeConnect($event)">父子联动</el-checkbox> |
|
||||||
</el-col> |
|
||||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> |
|
||||||
<el-tree |
|
||||||
:data="menuData" |
|
||||||
ref="menuRef" |
|
||||||
:props="menuProps" |
|
||||||
:default-checked-keys="formData.menuIds" |
|
||||||
node-key="id" |
|
||||||
show-checkbox class="menu-data-tree tree-border" |
|
||||||
:check-strictly="!menuCheckStrictly"/> |
|
||||||
</el-col> |
|
||||||
</el-row> |
|
||||||
</el-form-item> |
|
||||||
</el-col> |
|
||||||
</el-row> |
|
||||||
</el-form> |
|
||||||
<template #footer> |
|
||||||
<span class="dialog-footer"> |
|
||||||
<el-button @click="onCancel" size="default">取 消</el-button> |
|
||||||
<el-button type="primary" @click="onSubmit" size="default" :loading="loading">{{formData.id===0?'新 增':'修 改'}}</el-button> |
|
||||||
</span> |
|
||||||
</template> |
|
||||||
</el-dialog> |
|
||||||
</div> |
|
||||||
</template> |
|
||||||
|
|
||||||
<script lang="ts"> |
|
||||||
import { reactive, toRefs, defineComponent,ref,getCurrentInstance,unref } from 'vue'; |
|
||||||
import {addRole, editRole, getRole, getRoleParams} from "/@/api/system/role"; |
|
||||||
import {ElMessage} from "element-plus"; |
|
||||||
import {getBackEndControlRoutes} from "/@/router/backEnd"; |
|
||||||
|
|
||||||
|
|
||||||
// 定义接口来定义对象的类型 |
|
||||||
interface MenuDataTree { |
|
||||||
id: number; |
|
||||||
pid:number; |
|
||||||
title: string; |
|
||||||
children?: MenuDataTree[]; |
|
||||||
} |
|
||||||
interface DialogRow { |
|
||||||
id:number; |
|
||||||
name: string; |
|
||||||
status: number; |
|
||||||
listOrder: number; |
|
||||||
remark: string; |
|
||||||
menuIds:Array<number> |
|
||||||
} |
|
||||||
interface RoleState { |
|
||||||
loading:boolean; |
|
||||||
isShowDialog: boolean; |
|
||||||
formData: DialogRow; |
|
||||||
menuData: Array<MenuDataTree>; |
|
||||||
menuExpand:boolean; |
|
||||||
menuNodeAll:boolean; |
|
||||||
menuCheckStrictly:boolean; |
|
||||||
menuProps: { |
|
||||||
children: string; |
|
||||||
label: string; |
|
||||||
}; |
|
||||||
rules: object; |
|
||||||
} |
|
||||||
|
|
||||||
export default defineComponent({ |
|
||||||
name: 'systemEditRole', |
|
||||||
setup(props,{emit}) { |
|
||||||
const {proxy} = getCurrentInstance() as any; |
|
||||||
const formRef = ref<HTMLElement | null>(null); |
|
||||||
const menuRef = ref(); |
|
||||||
const state = reactive<RoleState>({ |
|
||||||
loading:false, |
|
||||||
isShowDialog: false, |
|
||||||
formData: { |
|
||||||
id:0, |
|
||||||
name: '', |
|
||||||
status: 1, |
|
||||||
listOrder: 0, |
|
||||||
remark: '', |
|
||||||
menuIds:[] |
|
||||||
}, |
|
||||||
// 表单校验 |
|
||||||
rules: { |
|
||||||
name:[ |
|
||||||
{required: true, message: "角色名称不能为空", trigger: "blur"}, |
|
||||||
] |
|
||||||
}, |
|
||||||
menuData: [], |
|
||||||
menuExpand:false, |
|
||||||
menuNodeAll:false, |
|
||||||
menuCheckStrictly:false, |
|
||||||
menuProps: { |
|
||||||
children: 'children', |
|
||||||
label: 'title', |
|
||||||
}, |
|
||||||
}); |
|
||||||
// 打开弹窗 |
|
||||||
const openDialog = (row?: DialogRow) => { |
|
||||||
resetForm(); |
|
||||||
getMenuData(); |
|
||||||
if(row) { |
|
||||||
getRole(row.id).then((res:any)=>{ |
|
||||||
if(res.data.role){ |
|
||||||
state.formData = res.data.role; |
|
||||||
state.formData.menuIds = res.data.menuIds??[] |
|
||||||
} |
|
||||||
}) |
|
||||||
} |
|
||||||
state.isShowDialog = true; |
|
||||||
}; |
|
||||||
// 关闭弹窗 |
|
||||||
const closeDialog = () => { |
|
||||||
state.isShowDialog = false; |
|
||||||
}; |
|
||||||
// 取消 |
|
||||||
const onCancel = () => { |
|
||||||
closeDialog(); |
|
||||||
}; |
|
||||||
// 新增 |
|
||||||
const onSubmit = () => { |
|
||||||
const formWrap = unref(formRef) as any; |
|
||||||
if (!formWrap) return; |
|
||||||
formWrap.validate((valid: boolean) => { |
|
||||||
if (valid) { |
|
||||||
state.loading = true; |
|
||||||
state.formData.menuIds = getMenuAllCheckedKeys(); |
|
||||||
if(state.formData.id===0){ |
|
||||||
//添加 |
|
||||||
addRole(state.formData).then(()=>{ |
|
||||||
ElMessage.success('角色添加成功'); |
|
||||||
closeDialog(); // 关闭弹窗 |
|
||||||
resetMenuSession() |
|
||||||
emit('getRoleList') |
|
||||||
}).finally(()=>{ |
|
||||||
state.loading = false; |
|
||||||
}) |
|
||||||
}else{ |
|
||||||
//修改 |
|
||||||
editRole(state.formData).then(()=>{ |
|
||||||
ElMessage.success('角色修改成功'); |
|
||||||
closeDialog(); // 关闭弹窗 |
|
||||||
resetMenuSession() |
|
||||||
emit('getRoleList') |
|
||||||
}).finally(()=>{ |
|
||||||
state.loading = false; |
|
||||||
}) |
|
||||||
} |
|
||||||
} |
|
||||||
}); |
|
||||||
}; |
|
||||||
// 获取菜单结构数据 |
|
||||||
const getMenuData = () => { |
|
||||||
getRoleParams().then((res:any)=>{ |
|
||||||
state.menuData = proxy.handleTree(res.data.menu, "id","pid"); |
|
||||||
}) |
|
||||||
}; |
|
||||||
const resetForm = ()=>{ |
|
||||||
state.menuCheckStrictly=false; |
|
||||||
state.menuExpand = false; |
|
||||||
state.menuNodeAll = false; |
|
||||||
state.formData = { |
|
||||||
id:0, |
|
||||||
name: '', |
|
||||||
status: 1, |
|
||||||
listOrder: 0, |
|
||||||
remark: '', |
|
||||||
menuIds:[] |
|
||||||
} |
|
||||||
}; |
|
||||||
/** 树权限(展开/折叠)*/ |
|
||||||
const handleCheckedTreeExpand = (value:any) => { |
|
||||||
let treeList = state.menuData; |
|
||||||
for (let i = 0; i < treeList.length; i++) { |
|
||||||
menuRef.value.store.nodesMap[treeList[i].id].expanded = value; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
/** 树权限(全选/全不选) */ |
|
||||||
const handleCheckedTreeNodeAll = (value:any) => { |
|
||||||
menuRef.value.setCheckedNodes(value ? state.menuData : []); |
|
||||||
} |
|
||||||
|
|
||||||
/** 树权限(父子联动) */ |
|
||||||
const handleCheckedTreeConnect = (value:any) => { |
|
||||||
state.menuCheckStrictly = value ? true : false; |
|
||||||
} |
|
||||||
|
|
||||||
/** 所有菜单节点数据 */ |
|
||||||
function getMenuAllCheckedKeys() { |
|
||||||
// 目前被选中的菜单节点 |
|
||||||
let checkedKeys = menuRef.value.getCheckedKeys(); |
|
||||||
// 半选中的菜单节点 |
|
||||||
let halfCheckedKeys = menuRef.value.getHalfCheckedKeys(); |
|
||||||
checkedKeys.unshift.apply(checkedKeys, halfCheckedKeys); |
|
||||||
return checkedKeys; |
|
||||||
} |
|
||||||
|
|
||||||
// 重置菜单session |
|
||||||
const resetMenuSession = () => { |
|
||||||
getBackEndControlRoutes(); |
|
||||||
}; |
|
||||||
return { |
|
||||||
openDialog, |
|
||||||
closeDialog, |
|
||||||
onCancel, |
|
||||||
onSubmit, |
|
||||||
menuRef, |
|
||||||
formRef, |
|
||||||
handleCheckedTreeExpand, |
|
||||||
handleCheckedTreeNodeAll, |
|
||||||
handleCheckedTreeConnect, |
|
||||||
resetMenuSession, |
|
||||||
...toRefs(state), |
|
||||||
}; |
|
||||||
}, |
|
||||||
}); |
|
||||||
</script> |
|
||||||
|
|
||||||
<style scoped lang="scss"> |
|
||||||
.tree-border { |
|
||||||
margin-top: 5px; |
|
||||||
border: 1px solid #e5e6e7!important; |
|
||||||
background: #fff none!important; |
|
||||||
border-radius: 4px; |
|
||||||
} |
|
||||||
.system-edit-role-container { |
|
||||||
.menu-data-tree { |
|
||||||
border: var(--el-input-border, var(--el-border-base)); |
|
||||||
border-radius: var(--el-input-border-radius, var(--el-border-radius-base)); |
|
||||||
padding: 5px; |
|
||||||
} |
|
||||||
} |
|
||||||
</style> |
|
@ -0,0 +1,132 @@ |
|||||||
|
<template> |
||||||
|
<div class="game-account-container"> |
||||||
|
<el-card shadow="hover"> |
||||||
|
<div class="game-account-search mb15"> |
||||||
|
<el-form :inline="true"> |
||||||
|
<el-form-item label="源UID:"> |
||||||
|
<el-input size="default" v-model="tableData.param.srcUid" placeholder="输入源UID" class="w-50 m-2" clearable/> |
||||||
|
</el-form-item> |
||||||
|
<el-form-item label="源服务器" prop="serverId"> |
||||||
|
<el-select v-model="tableData.param.srcServer" class="m-2" placeholder="选择区服" size="large"> |
||||||
|
<el-option v-for="item in servers" :key="item.value" :label="item.label" :value="item.value" /> |
||||||
|
</el-select> |
||||||
|
</el-form-item> |
||||||
|
<el-form-item label="转移UID:"> |
||||||
|
<el-input size="default" v-model="tableData.param.destUid" placeholder="输入转移UID" class="w-50 m-2" clearable/> |
||||||
|
</el-form-item> |
||||||
|
<el-form-item label="转移服务器" prop="serverId"> |
||||||
|
<el-select v-model="tableData.param.destServer" class="m-2" placeholder="选择区服" size="large"> |
||||||
|
<el-option v-for="item in servers" :key="item.value" :label="item.label" :value="item.value" /> |
||||||
|
</el-select> |
||||||
|
</el-form-item> |
||||||
|
|
||||||
|
<el-form-item> |
||||||
|
<el-button size="default" type="primary" class="ml10" @click="roleList"> |
||||||
|
<el-icon> |
||||||
|
<ele-Search /> |
||||||
|
</el-icon> |
||||||
|
查询 |
||||||
|
</el-button> |
||||||
|
<el-button size="default" type="primary" class="ml10" @click="roleList"> |
||||||
|
确定迁移 |
||||||
|
</el-button> |
||||||
|
</el-form-item> |
||||||
|
</el-form> |
||||||
|
</div> |
||||||
|
<el-table :data="tableData.data" style="width: 100%"> |
||||||
|
<el-table-column type="index" label="序号" width="60" /> |
||||||
|
<el-table-column prop="uid" label="uid" show-overflow-tooltip></el-table-column> |
||||||
|
<el-table-column prop="account" label="账号" show-overflow-tooltip></el-table-column> |
||||||
|
<el-table-column prop="name" label="桃谷名字" show-overflow-tooltip></el-table-column> |
||||||
|
<el-table-column prop="boom" label="繁荣度" show-overflow-tooltip></el-table-column> |
||||||
|
<el-table-column prop="villageScale" label="规模" show-overflow-tooltip></el-table-column> |
||||||
|
</el-table> |
||||||
|
</el-card> |
||||||
|
</div> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script lang="ts"> |
||||||
|
import {toRefs, reactive, onMounted, defineComponent, } from 'vue'; |
||||||
|
//import { ElMessageBox, ElMessage } from 'element-plus'; |
||||||
|
import {ServerList} from "/@/utils/game"; |
||||||
|
import {gameAccountList} from "/@/api/game"; |
||||||
|
// 定义接口来定义对象的类型 |
||||||
|
interface TableData { |
||||||
|
uid:number; |
||||||
|
account:string; |
||||||
|
name: string; |
||||||
|
boom: number; |
||||||
|
villageScale:number; |
||||||
|
|
||||||
|
} |
||||||
|
interface TableDataState { |
||||||
|
tableData: { |
||||||
|
data: Array<TableData>; |
||||||
|
param: { |
||||||
|
srcUid: number; |
||||||
|
srcServer:string; |
||||||
|
destUid:number; |
||||||
|
destServer:string |
||||||
|
} |
||||||
|
}; |
||||||
|
servers:object |
||||||
|
} |
||||||
|
|
||||||
|
export default defineComponent({ |
||||||
|
name: 'apiV1GameAccountList', |
||||||
|
setup() { |
||||||
|
// const {proxy} = getCurrentInstance() as any; |
||||||
|
const state = reactive<TableDataState>({ |
||||||
|
tableData: { |
||||||
|
data: [], |
||||||
|
param:{ |
||||||
|
srcUid:0, |
||||||
|
srcServer:"", |
||||||
|
destUid:0, |
||||||
|
destServer:"" |
||||||
|
}, |
||||||
|
|
||||||
|
}, |
||||||
|
servers:ServerList |
||||||
|
}); |
||||||
|
// 初始化表格数据 |
||||||
|
// const initTableData = () => { |
||||||
|
// roleList() |
||||||
|
// }; |
||||||
|
const roleList = ()=>{ |
||||||
|
const data: Array<TableData> = []; |
||||||
|
gameAccountList(state.tableData.param).then(res=>{ |
||||||
|
const list = res.data.list??[] |
||||||
|
list.map((item:TableData)=>{ |
||||||
|
data.push({ |
||||||
|
uid:item.uid, |
||||||
|
account:item.account, |
||||||
|
name:item.name, |
||||||
|
boom:item.boom, |
||||||
|
villageScale: item.villageScale, |
||||||
|
}); |
||||||
|
}) |
||||||
|
state.tableData.data = data; |
||||||
|
}) |
||||||
|
}; |
||||||
|
|
||||||
|
|
||||||
|
// // 分页改变 |
||||||
|
// const onHandleSizeChange = (val: number) => { |
||||||
|
// state.tableData.param.pageSize = val; |
||||||
|
// }; |
||||||
|
// // 分页改变 |
||||||
|
// const onHandleCurrentChange = (val: number) => { |
||||||
|
// state.tableData.param.pageNum = val; |
||||||
|
// }; |
||||||
|
// 页面加载时 |
||||||
|
onMounted(() => { |
||||||
|
// initTableData(); |
||||||
|
}); |
||||||
|
return { |
||||||
|
roleList, |
||||||
|
...toRefs(state), |
||||||
|
}; |
||||||
|
}, |
||||||
|
}); |
||||||
|
</script> |
@ -0,0 +1,156 @@ |
|||||||
|
<template> |
||||||
|
<div class="game-statistics-container"> |
||||||
|
<el-card shadow="hover"> |
||||||
|
<div class="system-user-search mb15"> |
||||||
|
<el-form :inline="true"> |
||||||
|
<el-form-item label="起始时间" prop="lowTime"> |
||||||
|
<el-date-picker type="datetime" size="large" v-model="tableData.param.lowTime" format="YYYY/MM/DD HH:mm:ss" value-format="x" /> |
||||||
|
</el-form-item> |
||||||
|
|
||||||
|
<el-form-item label="终止时间" prop="time"> |
||||||
|
<el-date-picker type="datetime" v-model="tableData.param.upTime" format="YYYY/MM/DD HH:mm:ss" value-format="x" /> |
||||||
|
</el-form-item> |
||||||
|
|
||||||
|
<el-form-item> |
||||||
|
<el-button size="default" type="primary" class="ml10" @click="getRemain"> |
||||||
|
<el-icon> |
||||||
|
<ele-Search /> |
||||||
|
</el-icon> |
||||||
|
查询 |
||||||
|
</el-button> |
||||||
|
|
||||||
|
</el-form-item> |
||||||
|
</el-form > |
||||||
|
|
||||||
|
<el-form :inline="true"> |
||||||
|
<el-form-item label="注册数量:"> |
||||||
|
<el-input v-model="tableData.registerNum" placeholder="" class="w-50 m-2" size="large" /> |
||||||
|
</el-form-item> |
||||||
|
<el-form-item label="充值人数:"> |
||||||
|
<el-input v-model="tableData.depositNum" placeholder="" class="w-50 m-2" size="large" /> |
||||||
|
</el-form-item> |
||||||
|
<el-form-item label="充值总额:"> |
||||||
|
<el-input v-model="tableData.sum" placeholder="" class="w-50 m-2" size="large" /> |
||||||
|
</el-form-item> |
||||||
|
</el-form> |
||||||
|
</div> |
||||||
|
<el-table :data="tableData.data" style="width: 100%"> |
||||||
|
<el-table-column type="index" label="序号" width="60" /> |
||||||
|
<el-table-column prop="date" label="日期" width="180"></el-table-column> |
||||||
|
<el-table-column prop="remainRate" label="留存" show-overflow-tooltip></el-table-column> |
||||||
|
<el-table-column prop="remainVal" label="留存人数" show-overflow-tooltip></el-table-column> |
||||||
|
<el-table-column prop="total" label="总人数" show-overflow-tooltip></el-table-column> |
||||||
|
</el-table> |
||||||
|
<pagination |
||||||
|
v-show="tableData.total>0" |
||||||
|
:total="tableData.total" |
||||||
|
v-model:page="tableData.param.pageNum" |
||||||
|
v-model:limit="tableData.param.pageSize" |
||||||
|
@pagination="getRemain" |
||||||
|
/> |
||||||
|
</el-card> |
||||||
|
</div> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script lang="ts"> |
||||||
|
import {toRefs, reactive, onMounted, defineComponent,} from 'vue'; |
||||||
|
//import { ElMessageBox, ElMessage } from 'element-plus'; |
||||||
|
import { gameRemain} from "/@/api/game/index"; |
||||||
|
// 定义接口来定义对象的类型 |
||||||
|
interface TableData { |
||||||
|
date:number |
||||||
|
remainRate:number |
||||||
|
remainVal:number |
||||||
|
total : number |
||||||
|
} |
||||||
|
interface TableDataState { |
||||||
|
tableData: { |
||||||
|
data: Array<TableData>; |
||||||
|
registerNum: number; |
||||||
|
depositNum: number; |
||||||
|
sum:number |
||||||
|
param: { |
||||||
|
lowTime:number; |
||||||
|
upTime:number |
||||||
|
}; |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
export default defineComponent({ |
||||||
|
name: 'apiV1SystemRoleList', |
||||||
|
setup() { |
||||||
|
// const {proxy} = getCurrentInstance() as any; |
||||||
|
|
||||||
|
const state = reactive<TableDataState>({ |
||||||
|
tableData: { |
||||||
|
data: [], |
||||||
|
registerNum: 0, |
||||||
|
depositNum: 0, |
||||||
|
sum:0, |
||||||
|
param: { |
||||||
|
lowTime:0, |
||||||
|
upTime:0 |
||||||
|
}, |
||||||
|
}, |
||||||
|
}); |
||||||
|
|
||||||
|
|
||||||
|
const getRemain = ()=>{ |
||||||
|
const data: Array<TableData> = []; |
||||||
|
gameRemain(state.tableData.param).then(res=>{ |
||||||
|
const list = res.data.mails??[] |
||||||
|
list.map((item:TableData)=>{ |
||||||
|
data.push({ |
||||||
|
date:item.date, |
||||||
|
remainRate: item.remainRate, |
||||||
|
remainVal: item.remainVal, |
||||||
|
total: item.total, |
||||||
|
}); |
||||||
|
}) |
||||||
|
state.tableData.data = data; |
||||||
|
// state.tableData.total = res.data.total; |
||||||
|
}) |
||||||
|
}; |
||||||
|
|
||||||
|
// 删除角色 |
||||||
|
// const onRowDel = (row: any) => { |
||||||
|
// ElMessageBox.confirm(`此操作将永久删除角色:“${row.name}”,是否继续?`, '提示', { |
||||||
|
// confirmButtonText: '确认', |
||||||
|
// cancelButtonText: '取消', |
||||||
|
// type: 'warning', |
||||||
|
// }) |
||||||
|
// .then(() => { |
||||||
|
// deleteRole(row.id).then(()=>{ |
||||||
|
// ElMessage.success('删除成功'); |
||||||
|
// proxy.$refs['editRoleRef'].resetMenuSession(); |
||||||
|
// roleList(); |
||||||
|
// }) |
||||||
|
// }) |
||||||
|
// .catch(() => {}); |
||||||
|
// }; |
||||||
|
// // 分页改变 |
||||||
|
// const onHandleSizeChange = (val: number) => { |
||||||
|
// state.tableData.param.pageSize = val; |
||||||
|
// }; |
||||||
|
// // 分页改变 |
||||||
|
// const onHandleCurrentChange = (val: number) => { |
||||||
|
// state.tableData.param.pageNum = val; |
||||||
|
// }; |
||||||
|
// 页面加载时 |
||||||
|
onMounted(() => { |
||||||
|
// initTableData(); |
||||||
|
}); |
||||||
|
return { |
||||||
|
// addRoleRef, |
||||||
|
// editRoleRef, |
||||||
|
// onOpenAddRole, |
||||||
|
// onOpenEditRole, |
||||||
|
//onRowDel, |
||||||
|
//onHandleSizeChange, |
||||||
|
//onHandleCurrentChange, |
||||||
|
getRemain, |
||||||
|
...toRefs(state), |
||||||
|
}; |
||||||
|
}, |
||||||
|
}); |
||||||
|
</script> |
@ -0,0 +1,112 @@ |
|||||||
|
<template> |
||||||
|
<div class="game-maintenance-container"> |
||||||
|
<el-card shadow="hover"> |
||||||
|
<div class="game-order-search mb15" > |
||||||
|
<el-form label-position="right" |
||||||
|
:model="formLabelAlign" |
||||||
|
> |
||||||
|
|
||||||
|
<el-form-item label="内容:"> |
||||||
|
<el-input v-model="tableData.param.content" placeholder="" type="textarea" class="w-50 m-2" rows="5" clearable/> |
||||||
|
</el-form-item> |
||||||
|
<el-form-item> |
||||||
|
<el-button size="large" type="primary" class="ml10" @click="noticeMaintenance"> |
||||||
|
登录公告发送 |
||||||
|
</el-button> |
||||||
|
</el-form-item> |
||||||
|
</el-form> |
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
</el-card> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
</template> |
||||||
|
|
||||||
|
<script lang="ts"> |
||||||
|
import {toRefs, reactive, onMounted, defineComponent, } from 'vue'; |
||||||
|
//import { ElMessageBox, ElMessage } from 'element-plus'; |
||||||
|
import {gameGetNoticeLogin, gameNoticeLogin} from "/@/api/game"; |
||||||
|
|
||||||
|
import {ElMessage} from "element-plus/es"; |
||||||
|
|
||||||
|
|
||||||
|
interface TableDataState { |
||||||
|
tableData: { |
||||||
|
param: { |
||||||
|
content:string |
||||||
|
status:number |
||||||
|
noticeType:number |
||||||
|
channel:number |
||||||
|
id:number |
||||||
|
}; |
||||||
|
|
||||||
|
}; |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
export default defineComponent({ |
||||||
|
name: 'apiV1GameOrderOrderList', |
||||||
|
setup() { |
||||||
|
// const {proxy} = getCurrentInstance() as any; |
||||||
|
|
||||||
|
const state = reactive<TableDataState>({ |
||||||
|
tableData: { |
||||||
|
param: { |
||||||
|
status: 0, |
||||||
|
content: "", |
||||||
|
noticeType:2, |
||||||
|
channel:0, |
||||||
|
id:0, |
||||||
|
}, |
||||||
|
} |
||||||
|
|
||||||
|
}); |
||||||
|
const noticeMaintenance=()=>{ |
||||||
|
gameNoticeLogin(state.tableData.param).then(()=>{ |
||||||
|
ElMessage.success('发送成功'); |
||||||
|
}).finally(()=>{ |
||||||
|
// state.loading = false; |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 初始化表格数据 |
||||||
|
const initTableData = () => { |
||||||
|
getNotice() |
||||||
|
}; |
||||||
|
const getNotice=()=>{ |
||||||
|
gameGetNoticeLogin(state.tableData.param).then((res:any)=>{ |
||||||
|
state.tableData.param.content = res.data.content; |
||||||
|
state.tableData.param.id = res.data.id; |
||||||
|
|
||||||
|
}); |
||||||
|
}; |
||||||
|
|
||||||
|
|
||||||
|
// function GetStateStr(s:number){ |
||||||
|
// if (s==2){ |
||||||
|
// return "成功" |
||||||
|
// } |
||||||
|
// return "失败(错误id="+s+")" |
||||||
|
// } |
||||||
|
|
||||||
|
// // 分页改变 |
||||||
|
// const onHandleSizeChange = (val: number) => { |
||||||
|
// state.tableData.param.pageSize = val; |
||||||
|
// }; |
||||||
|
// // 分页改变 |
||||||
|
// const onHandleCurrentChange = (val: number) => { |
||||||
|
// state.tableData.param.pageNum = val; |
||||||
|
// }; |
||||||
|
// 页面加载时 |
||||||
|
onMounted(() => { |
||||||
|
initTableData(); |
||||||
|
}); |
||||||
|
return { |
||||||
|
noticeMaintenance, |
||||||
|
...toRefs(state), |
||||||
|
}; |
||||||
|
}, |
||||||
|
}); |
||||||
|
</script> |
@ -0,0 +1,116 @@ |
|||||||
|
<template> |
||||||
|
<div class="game-maintenance-container"> |
||||||
|
<el-card shadow="hover"> |
||||||
|
<div class="game-order-search mb15" > |
||||||
|
<el-form label-position="right" |
||||||
|
:model="formLabelAlign" |
||||||
|
> |
||||||
|
<el-form-item label="选择渠道" prop="serverId"> |
||||||
|
<el-select v-model="tableData.param.channel" class="m-2" placeholder="选择渠道" size="large"> |
||||||
|
<el-option v-for="item in channels" :key="item.value" :label="item.label" :value="item.value" /> |
||||||
|
</el-select> |
||||||
|
</el-form-item> |
||||||
|
<el-form-item label="服务器状态:"> |
||||||
|
<el-radio-group v-model="tableData.param.status"> |
||||||
|
<el-radio :label=1>正常</el-radio> |
||||||
|
<el-radio :label=2>白名单</el-radio> |
||||||
|
<el-radio :label=0>维护</el-radio> |
||||||
|
</el-radio-group> |
||||||
|
</el-form-item> |
||||||
|
<el-form-item label="内容:"> |
||||||
|
<el-input v-model="tableData.param.content" placeholder="" type="textarea" class="w-50 m-2" rows="5" clearable/> |
||||||
|
</el-form-item> |
||||||
|
<el-form-item> |
||||||
|
<el-button size="large" type="primary" class="ml10" @click="noticeMaintenance"> |
||||||
|
发送公告 |
||||||
|
</el-button> |
||||||
|
<el-button size="large" type="primary" class="ml10" @click="getNotice"> |
||||||
|
查询公告 |
||||||
|
</el-button> |
||||||
|
</el-form-item> |
||||||
|
</el-form> |
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
</el-card> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
</template> |
||||||
|
|
||||||
|
<script lang="ts"> |
||||||
|
import {toRefs, reactive, onMounted, defineComponent, } from 'vue'; |
||||||
|
//import { ElMessageBox, ElMessage } from 'element-plus'; |
||||||
|
import {gameGetNoticeMaintenance, gameNoticeMaintenance} from "/@/api/game"; |
||||||
|
import {AllChannelList} from "/@/utils/game" |
||||||
|
|
||||||
|
import {ElMessage} from "element-plus/es"; |
||||||
|
|
||||||
|
|
||||||
|
interface TableDataState { |
||||||
|
tableData: { |
||||||
|
param: { |
||||||
|
content:string |
||||||
|
status:number |
||||||
|
noticeType:number |
||||||
|
channel:string |
||||||
|
id:number |
||||||
|
}; |
||||||
|
|
||||||
|
|
||||||
|
}; |
||||||
|
channels:object |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
export default defineComponent({ |
||||||
|
name: 'apiV1GameOrderOrderList', |
||||||
|
setup() { |
||||||
|
// const {proxy} = getCurrentInstance() as any; |
||||||
|
|
||||||
|
const state = reactive<TableDataState>({ |
||||||
|
tableData: { |
||||||
|
param: { |
||||||
|
status: 0, |
||||||
|
content: "", |
||||||
|
noticeType:1, |
||||||
|
channel:"0", |
||||||
|
id:0 |
||||||
|
}, |
||||||
|
}, |
||||||
|
channels:AllChannelList |
||||||
|
|
||||||
|
}); |
||||||
|
const noticeMaintenance=()=>{ |
||||||
|
gameNoticeMaintenance(state.tableData.param).then(()=>{ |
||||||
|
ElMessage.success('发送成功'); |
||||||
|
}).finally(()=>{ |
||||||
|
// state.loading = false; |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 初始化表格数据 |
||||||
|
const initTableData = () => { |
||||||
|
getNotice() |
||||||
|
}; |
||||||
|
const getNotice=()=>{ |
||||||
|
gameGetNoticeMaintenance(state.tableData.param).then((res:any)=>{ |
||||||
|
state.tableData.param.status = res.data.status; |
||||||
|
state.tableData.param.content = res.data.content; |
||||||
|
state.tableData.param.id = res.data.id; |
||||||
|
|
||||||
|
}); |
||||||
|
}; |
||||||
|
|
||||||
|
|
||||||
|
onMounted(() => { |
||||||
|
initTableData(); |
||||||
|
}); |
||||||
|
return { |
||||||
|
getNotice, |
||||||
|
noticeMaintenance, |
||||||
|
...toRefs(state), |
||||||
|
}; |
||||||
|
}, |
||||||
|
}); |
||||||
|
</script> |
@ -0,0 +1,108 @@ |
|||||||
|
<template> |
||||||
|
<div class="game-maintenance-container"> |
||||||
|
<el-card shadow="hover"> |
||||||
|
<div class="game-order-search mb15" > |
||||||
|
<el-form label-position="right" |
||||||
|
:model="formLabelAlign" |
||||||
|
> |
||||||
|
|
||||||
|
<el-form-item label="类型:"> |
||||||
|
<el-radio-group v-model="tableData.param.popType"> |
||||||
|
<el-radio :label=1>强制退出</el-radio> |
||||||
|
<el-radio :label=0>普通弹窗</el-radio> |
||||||
|
</el-radio-group> |
||||||
|
</el-form-item> |
||||||
|
<el-form-item label="uids:"> |
||||||
|
<el-input v-model="tableData.param.uids" placeholder="" class="w-50 m-2" clearable/> |
||||||
|
</el-form-item> |
||||||
|
<el-form-item label="内容:"> |
||||||
|
<el-input v-model="tableData.param.content" placeholder="" type="textarea" class="w-50 m-2" rows="5" clearable/> |
||||||
|
</el-form-item> |
||||||
|
<el-form-item> |
||||||
|
<el-button size="large" type="primary" class="ml10" @click="noticePop"> |
||||||
|
弹窗公告发送 |
||||||
|
</el-button> |
||||||
|
</el-form-item> |
||||||
|
</el-form> |
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
</el-card> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
</template> |
||||||
|
|
||||||
|
<script lang="ts"> |
||||||
|
import {toRefs, reactive, onMounted, defineComponent, } from 'vue'; |
||||||
|
//import { ElMessageBox, ElMessage } from 'element-plus'; |
||||||
|
import {gameNoticePop} from "/@/api/game"; |
||||||
|
|
||||||
|
import {ElMessage} from "element-plus/es"; |
||||||
|
|
||||||
|
|
||||||
|
interface TableDataState { |
||||||
|
tableData: { |
||||||
|
param: { |
||||||
|
content:string |
||||||
|
timeType:number |
||||||
|
popType:number |
||||||
|
uids : string |
||||||
|
}; |
||||||
|
|
||||||
|
}; |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
export default defineComponent({ |
||||||
|
name: 'apiV1GameOrderOrderList', |
||||||
|
setup() { |
||||||
|
// const {proxy} = getCurrentInstance() as any; |
||||||
|
|
||||||
|
const state = reactive<TableDataState>({ |
||||||
|
tableData: { |
||||||
|
param: { |
||||||
|
content: "", |
||||||
|
timeType: 0, |
||||||
|
uids:"", |
||||||
|
popType:0 |
||||||
|
}, |
||||||
|
} |
||||||
|
|
||||||
|
}); |
||||||
|
const noticePop=()=>{ |
||||||
|
gameNoticePop(state.tableData.param).then(()=>{ |
||||||
|
ElMessage.success('发送成功'); |
||||||
|
}).finally(()=>{ |
||||||
|
// state.loading = false; |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// function GetStateStr(s:number){ |
||||||
|
// if (s==2){ |
||||||
|
// return "成功" |
||||||
|
// } |
||||||
|
// return "失败(错误id="+s+")" |
||||||
|
// } |
||||||
|
|
||||||
|
// // 分页改变 |
||||||
|
// const onHandleSizeChange = (val: number) => { |
||||||
|
// state.tableData.param.pageSize = val; |
||||||
|
// }; |
||||||
|
// // 分页改变 |
||||||
|
// const onHandleCurrentChange = (val: number) => { |
||||||
|
// state.tableData.param.pageNum = val; |
||||||
|
// }; |
||||||
|
// 页面加载时 |
||||||
|
onMounted(() => { |
||||||
|
// initTableData(); |
||||||
|
}); |
||||||
|
return { |
||||||
|
noticePop, |
||||||
|
...toRefs(state), |
||||||
|
}; |
||||||
|
}, |
||||||
|
}); |
||||||
|
</script> |
@ -0,0 +1,210 @@ |
|||||||
|
<template> |
||||||
|
<div class="game-order-container"> |
||||||
|
<el-card shadow="hover"> |
||||||
|
<div class="game-order-search mb15"> |
||||||
|
<el-form> |
||||||
|
<el-form-item label="查询类型:" prop="type"> |
||||||
|
<el-radio-group v-model="tableData.param.searchType"> |
||||||
|
<el-radio :label=1>账号查询</el-radio> |
||||||
|
<el-radio :label=2>桃谷uid查询</el-radio> |
||||||
|
<el-radio :label=3>时间段查询</el-radio> |
||||||
|
<el-radio :label=4>渠道订单号查询</el-radio> |
||||||
|
</el-radio-group> |
||||||
|
</el-form-item> |
||||||
|
</el-form> |
||||||
|
<el-form :inline="true" v-if="tableData.param.searchType==1"> |
||||||
|
<el-form-item label="账号"> |
||||||
|
<el-input size="default" v-model="tableData.param.account" placeholder="请输入账号" class="w-50 m-2" clearable/> |
||||||
|
</el-form-item> |
||||||
|
<el-form-item label="选择渠道" prop="serverId"> |
||||||
|
<el-select v-model="tableData.param.channel" class="m-2" placeholder="选择渠道" size="large"> |
||||||
|
<el-option v-for="item in channels" :key="item.value" :label="item.label" :value="item.value" /> |
||||||
|
</el-select> |
||||||
|
</el-form-item> |
||||||
|
</el-form> |
||||||
|
<el-form :inline="true" v-if="tableData.param.searchType==2" > |
||||||
|
<el-form-item label="桃谷uid" > |
||||||
|
<el-input size="default" v-model="tableData.param.uid" placeholder="请输入桃谷UID" class="w-50 m-2" clearable/> |
||||||
|
</el-form-item> |
||||||
|
<el-form-item label="选择区服" prop="serverId"> |
||||||
|
<el-select v-model="tableData.param.serverId" class="m-2" placeholder="选择区服" size="large"> |
||||||
|
<el-option v-for="item in servers" :key="item.value" :label="item.label" :value="item.value" /> |
||||||
|
</el-select> |
||||||
|
</el-form-item> |
||||||
|
</el-form> |
||||||
|
<el-form :inline="true" v-if="tableData.param.searchType==3"> |
||||||
|
<el-form-item label="起始时间" prop="lowTime"> |
||||||
|
<el-date-picker type="datetime" size="large" v-model="tableData.param.lowTime" format="YYYY/MM/DD HH:mm:ss" value-format="x" /> |
||||||
|
</el-form-item> |
||||||
|
|
||||||
|
<el-form-item label="终止时间" prop="time"> |
||||||
|
<el-date-picker type="datetime" v-model="tableData.param.uptime" format="YYYY/MM/DD HH:mm:ss" value-format="x" /> |
||||||
|
</el-form-item> |
||||||
|
</el-form> |
||||||
|
<el-form :inline="true" v-if="tableData.param.searchType==4"> |
||||||
|
<el-form-item label="渠道订单id"> |
||||||
|
<el-input size="default" v-model="tableData.param.orderId" placeholder="请输入渠道订单id" class="w-50 m-2" clearable/> |
||||||
|
</el-form-item> |
||||||
|
</el-form> |
||||||
|
<el-form> |
||||||
|
<el-form-item> |
||||||
|
<el-button size="default" type="primary" class="ml10" @click="roleList"> |
||||||
|
<el-icon> |
||||||
|
<ele-Search /> |
||||||
|
</el-icon> |
||||||
|
查询 |
||||||
|
</el-button> |
||||||
|
</el-form-item> |
||||||
|
</el-form> |
||||||
|
</div> |
||||||
|
<el-table :data="tableData.data" style="width: 100%"> |
||||||
|
<el-table-column type="index" label="id" width="60" /> |
||||||
|
<el-table-column prop="uid" label="桃谷uid" show-overflow-tooltip></el-table-column> |
||||||
|
<el-table-column prop="server" label="区服" show-overflow-tooltip></el-table-column> |
||||||
|
<el-table-column prop="money" label="充值数额" show-overflow-tooltip></el-table-column> |
||||||
|
<el-table-column prop="timestampStr" label="充值时间" show-overflow-tooltip></el-table-column> |
||||||
|
<el-table-column prop="rechargeId" label="商品id" show-overflow-tooltip></el-table-column> |
||||||
|
<el-table-column prop="createTime" label="创建时间" show-overflow-tooltip></el-table-column> |
||||||
|
<el-table-column prop="orderId" label="订单id(渠道产生)" show-overflow-tooltip></el-table-column> |
||||||
|
<el-table-column prop="stateStr" label="订单状态" show-overflow-tooltip></el-table-column> |
||||||
|
<!-- <el-table-column label="操作" width="100">--> |
||||||
|
<!-- <template #default="scope">--> |
||||||
|
<!-- <el-button size="small" type="text" @click="onOpenEditRole(scope.row)">修改名字</el-button>--> |
||||||
|
<!-- <el-button size="small" type="text" @click="onRowDel(scope.row)">删除</el-button>--> |
||||||
|
<!-- </template>--> |
||||||
|
<!-- </el-table-column>--> |
||||||
|
</el-table> |
||||||
|
<pagination |
||||||
|
v-show="tableData.total>0" |
||||||
|
:total="tableData.total" |
||||||
|
v-model:page="tableData.param.pageNum" |
||||||
|
v-model:limit="tableData.param.pageSize" |
||||||
|
@pagination="roleList" |
||||||
|
/> |
||||||
|
</el-card> |
||||||
|
<EditRole ref="editRoleRef" @getRoleList="roleList"/> |
||||||
|
</div> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script lang="ts"> |
||||||
|
import {toRefs, reactive, onMounted, defineComponent, } from 'vue'; |
||||||
|
//import { ElMessageBox, ElMessage } from 'element-plus'; |
||||||
|
import {gameOrderList} from "/@/api/game"; |
||||||
|
import {ServerList} from "/@/utils/game"; |
||||||
|
import {ChannelList} from "/@/utils/game"; |
||||||
|
// 定义接口来定义对象的类型 |
||||||
|
interface TableData { |
||||||
|
id:string |
||||||
|
uid:number; |
||||||
|
server: number; |
||||||
|
money: number; |
||||||
|
timestamp: number; //订单时间 |
||||||
|
rechargeId: number; |
||||||
|
createTime:string; |
||||||
|
orderId: string; |
||||||
|
state:number; |
||||||
|
stateStr:string; |
||||||
|
timestampStr:string; |
||||||
|
} |
||||||
|
interface TableDataState { |
||||||
|
tableData: { |
||||||
|
data: Array<TableData>; |
||||||
|
param: { |
||||||
|
searchType:number |
||||||
|
id:string; |
||||||
|
orderId:string |
||||||
|
serverId:number |
||||||
|
uid:number |
||||||
|
account: string; |
||||||
|
channel:string |
||||||
|
lowTime:number |
||||||
|
uptime:number |
||||||
|
}; |
||||||
|
|
||||||
|
}; |
||||||
|
servers:object; |
||||||
|
channels:object; |
||||||
|
} |
||||||
|
|
||||||
|
export default defineComponent({ |
||||||
|
name: 'apiV1GameOrderOrderList', |
||||||
|
setup() { |
||||||
|
// const {proxy} = getCurrentInstance() as any; |
||||||
|
|
||||||
|
const state = reactive<TableDataState>({ |
||||||
|
tableData: { |
||||||
|
data: [], |
||||||
|
param:{ |
||||||
|
searchType:0, |
||||||
|
id:"", |
||||||
|
orderId:"", |
||||||
|
serverId:0, |
||||||
|
uid:0, |
||||||
|
account:"", |
||||||
|
channel:"", |
||||||
|
lowTime:0, |
||||||
|
uptime:0 |
||||||
|
|
||||||
|
}, |
||||||
|
|
||||||
|
}, |
||||||
|
servers:ServerList, |
||||||
|
channels:ChannelList, |
||||||
|
}); |
||||||
|
// 初始化表格数据 |
||||||
|
// const initTableData = () => { |
||||||
|
// roleList() |
||||||
|
// }; |
||||||
|
const roleList = ()=>{ |
||||||
|
const data: Array<TableData> = []; |
||||||
|
gameOrderList(state.tableData.param).then(res=>{ |
||||||
|
const list = res.data.list??[] |
||||||
|
list.map((item:TableData)=>{ |
||||||
|
|
||||||
|
data.push({ |
||||||
|
id:item.id, |
||||||
|
uid:item.uid, |
||||||
|
server: item.server, |
||||||
|
money: item.money, |
||||||
|
timestamp: item.timestamp, |
||||||
|
rechargeId: item.rechargeId, |
||||||
|
createTime:new Date(item.createTime).toLocaleString(), |
||||||
|
orderId:item.orderId, |
||||||
|
state:item.state, |
||||||
|
stateStr:GetStateStr(item.state), |
||||||
|
timestampStr:new Date(item.timestamp*1000).toLocaleString() |
||||||
|
}); |
||||||
|
}) |
||||||
|
state.tableData.data = data; |
||||||
|
}) |
||||||
|
}; |
||||||
|
|
||||||
|
function GetStateStr(s:number){ |
||||||
|
if (s==2){ |
||||||
|
return "成功" |
||||||
|
} |
||||||
|
return "失败(错误id="+s+")" |
||||||
|
} |
||||||
|
|
||||||
|
// // 分页改变 |
||||||
|
// const onHandleSizeChange = (val: number) => { |
||||||
|
// state.tableData.param.pageSize = val; |
||||||
|
// }; |
||||||
|
// // 分页改变 |
||||||
|
// const onHandleCurrentChange = (val: number) => { |
||||||
|
// state.tableData.param.pageNum = val; |
||||||
|
// }; |
||||||
|
// 页面加载时 |
||||||
|
onMounted(() => { |
||||||
|
// initTableData(); |
||||||
|
}); |
||||||
|
return { |
||||||
|
|
||||||
|
//onHandleSizeChange, |
||||||
|
//onHandleCurrentChange, |
||||||
|
roleList, |
||||||
|
...toRefs(state), |
||||||
|
}; |
||||||
|
}, |
||||||
|
}); |
||||||
|
</script> |
Loading…
Reference in new issue