Browse Source

解决了datepicker的中文显示问题,完成登录公告模块

master
wserver/wangdisen 3 years ago
parent
commit
4e14f20892
  1. 92
      src/api/game/index.ts
  2. BIN
      src/assets/logo-mini.ico
  3. 5
      src/main.ts
  4. 143
      src/utils/game.ts
  5. 165
      src/views/gameCustom/feedback/index.vue
  6. 264
      src/views/gameMail/mailList/component/editRole.vue
  7. 129
      src/views/gameManage/gm/index.vue
  8. 132
      src/views/gameManage/migrate/index.vue
  9. 90
      src/views/gameManage/resetpwd/index.vue
  10. 156
      src/views/gameManage/statistics/index.vue
  11. 112
      src/views/gameNotice/login/index.vue
  12. 116
      src/views/gameNotice/maintenance/index.vue
  13. 108
      src/views/gameNotice/pop/index.vue
  14. 37
      src/views/gameOrder/count/index.vue
  15. 42
      src/views/gameOrder/deposit/index.vue
  16. 13
      src/views/gameOrder/orderList/index.vue
  17. 210
      src/views/gameRole/role/index.vue

92
src/api/game/index.ts

@ -60,6 +60,21 @@ export function gameAddCoin(params: object){
});
}
export function gameGmSearch(params: object){
return request({
url: '/api/v1/game/mange/searchgm',
method: 'get',
params: params,
});
}
export function gameChangeGm(params: object){
return request({
url: '/api/v1/game/mange/changegm',
method: 'post',
params: params,
});
}
export function gameDeposit(params: object){
return request({
url: '/api/v1/game/order/deposit',
@ -68,3 +83,80 @@ export function gameDeposit(params: object){
});
}
export function gameNoticeMaintenance(params: object){
return request({
url: '/api/v1/game/notice/add',
method: 'post',
params: params,
});
}
export function gameGetNoticeMaintenance(params: object){
return request({
url: '/api/v1/game/notice/get',
method: 'get',
params: params,
});
}
export function gameNoticeLogin(params: object){
return request({
url: '/api/v1/game/notice/add',
method: 'post',
params: params,
});
}
export function gameGetNoticeLogin(params: object){
return request({
url: '/api/v1/game/notice/get',
method: 'get',
params: params,
});
}
export function gameNoticePop(params: object){
return request({
url: '/api/v1/game/notice/pop',
method: 'post',
params: params,
});
}
export function gameResetPwd(params: object){
return request({
url: '/api/v1/game/mange/resetpwd',
method: 'post',
params: params,
});
}
export function gameBugList(params: object){
return request({
url: '/api/v1/game/custom/buglist',
method: 'get',
params: params,
});
}
export function gameOperateBug(params: object){
return request({
url: '/api/v1/game/custom/operatebug',
method: 'post',
params: params,
});
}
export function gameOrderCount(params: object){
return request({
url: '/api/v1/game/order/count',
method: 'get',
params: params,
});
}
export function gameRemain(params: object){
return request({
url: '/api/v1/game/mange/statistics',
method: 'get',
params: params,
});
}

BIN
src/assets/logo-mini.ico

Binary file not shown.

Before

Width:  |  Height:  |  Size: 364 KiB

After

Width:  |  Height:  |  Size: 19 KiB

5
src/main.ts

@ -6,9 +6,12 @@ import { directive } from '/@/utils/directive';
import { i18n } from '/@/i18n/index';
import other from '/@/utils/other';
import ElementPlus from 'element-plus';
import 'element-plus/dist/index.css';
import '/@/theme/index.scss';
import 'dayjs/locale/zh-cn'
import locale from 'element-plus/lib/locale/lang/zh-cn'
import mitt from 'mitt';
import VueGridLayout from 'vue-grid-layout';
import {getUpFileUrl, handleTree, selectDictLabel} from "/@/utils/gfast";
@ -25,7 +28,7 @@ app.component('pagination', pagination)
app.use(router)
.use(store, key)
.use(ElementPlus, { i18n: i18n.global.t })
.use(ElementPlus, { i18n: i18n.global.t,locale })
.use(i18n)
.use(VueGridLayout)
.mount('#app');

143
src/utils/game.ts

@ -66,7 +66,79 @@ export const ServerList = [
},
]
export const AllServerList = [
{
value: '0',
label: '零区:总服',
},
{
value: '1',
label: '一区:桃花源记',
},
{
value: '2',
label: '二区:世外桃源',
},
{
value: '3',
label: '三区:陶渊明',
},
{
value: '4',
label: '四区:桃花谷',
},
{
value: '5',
label: '五区:归园田居',
},
{
value: '6',
label: '六区:渔舟唱晚',
},
{
value: '7',
label: '七区:乱世佳谷',
},
{
value: '8',
label: '八区:一曲山溪',
},
{
value: '9',
label: '九区:百里桃园',
},
{
value: '10',
label: '十区:避乱之地',
},
{
value: '11',
label: '十一区:桃花源记',
},
{
value: '12',
label: '十二区:先遣服',
},
{
value: '13',
label: '十三区:武陵人',
},
{
value: '14',
label: '十四区:桃谷沃野',
},
{
value: '15',
label: '十五区:桃源春色',
},
{
value: '16',
label: '十六区:桃源先遣服',
},
]
export const ChannelList=[
{
value: '26337',
label: '淘金互动',
@ -120,3 +192,74 @@ export const ChannelList=[
label: 'B站先遣服',
},
]
export const AllChannelList=[
{
value: "0",
label: '先行服之外的所有渠道',
},
{
value: '26337',
label: '淘金互动',
},
{
value: '2258',
label: '好游快爆',
},
{
value: '24',
label: '华为',
},
{
value: '23',
label: 'oppo',
},
{
value: '15',
label: '小米',
},
{
value: '17',
label: 'VIVO',
},
{
value: '27',
label: '4399盒子',
},
{
value: '9',
label: '九游',
},
{
value: '114',
label: 'B站',
},
{
value: '1319',
label: '233平台',
},
{
value: '1003',
label: '雷电模拟器',
},
{
value: '26404',
label: '淘金互动-先行服',
},
{
value: '26396',
label: 'B站先遣服',
},
]
export const Platforms=[
{
value: 1,
label: 'Android',
},
{
value: 2,
label: 'Ios',
}
]

165
src/views/gameCustom/feedback/index.vue

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

264
src/views/gameMail/mailList/component/editRole.vue

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

129
src/views/gameManage/gm/index.vue

@ -5,20 +5,25 @@
<el-form label-position="right" label-width="300px"
:model="formLabelAlign"
style="max-width: 520px">
<el-form-item label="UID">
<el-input v-model="tableData.param.uid" placeholder="" class="w-50 m-2" size="large" clearable/>
<el-form-item label="区服">
<el-select v-model="tableData.data.server" class="w-50 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="修改金额(差值)">
<el-input v-model="tableData.param.amount" placeholder="" class="w-50 m-2" size="large" clearable/>
<el-form-item label="账号">
<el-input v-model="tableData.data.account" placeholder="" class="w-50 m-2" size="large" clearable/>
</el-form-item>
<el-form-item label="选择货币类型" >
<el-select v-model="tableData.param.amountType" class="w-50 m-2" placeholder="选择渠道" size="large">
<el-option v-for="item in amountTypes" :key="item.value" :label="item.label" :value="item.value" />
<el-form-item label="gm开关" >
<el-select v-model="tableData.data.gmState" class="w-50 m-2" placeholder="选择渠道" size="large">
<el-option v-for="item in gmStates" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item>
<el-button size="large" type="primary" class="ml10" @click="changeGameCoin">
修改游戏币
<el-button size="large" type="primary" class="ml10" @click="gmSearch">
查询
</el-button>
<el-button size="large" type="primary" class="ml10" @click="gmChange">
修改
</el-button>
</el-form-item>
</el-form>
@ -27,64 +32,30 @@
</el-card>
</div>
<div class="game-order-container" >
<el-card shadow="hover">
<div class="game-order-search mb15">
<el-form label-position="right" label-width="300px"
:model="formLabelAlign"
style="max-width: 520px">
<el-form-item label="账号">
<el-input size="large" v-model="tableData.param.uid" placeholder="" class="w-50 m-2" clearable/>
</el-form-item>
<el-form-item label="充值ID" >
<el-select v-model="tableData.paramDeposit.depositId" class="w-50 m-2" placeholder="" size="large">
<el-option v-for="item in depositIds" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="选择区服" prop="serverId">
<el-select v-model="tableData.paramDeposit.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-item>
<el-button size="large" type="primary" class="ml10" @click="deposit">
确认充值
</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 {gameAddCoin, gameDeposit} from "/@/api/game";
import {ServerList} from "/@/utils/game";
import {gameChangeGm, gameGmSearch} from "/@/api/game";
import {AllServerList} from "/@/utils/game";
import {ElMessage} from "element-plus/es";
interface TableData{
server:string
account:string
gmState:number
}
interface TableDataState {
tableData: {
param: {
uid:number
amount:number
amountType:number
};
paramDeposit:{
account:string
depositId:number
serverId:number
}
data:TableData
};
servers:object;
amountTypes:object
depositIds:object
gmStates:object;
}
export default defineComponent({
@ -94,54 +65,36 @@ export default defineComponent({
const state = reactive<TableDataState>({
tableData: {
param:{
uid:0,
amount:0,
amountType:0
},
paramDeposit:{
data:{
server:'0',
account:"",
depositId:0,
serverId:0
gmState:0
}
},
servers:ServerList,
amountTypes:[
servers:AllServerList,
gmStates:[
{
value: 1,
label: '金币',
value: 0,
label: '关闭',
},
{
value: 2,
label: '铜币',
value: 1,
label: '打开',
},
],
depositIds:[
{
value: 1001,
label: '6块充值',
},
{
value: 1002,
label: '30充值',
},
{
value: 1003,
label: '68充值',
},
]
});
const changeGameCoin=()=>{
gameAddCoin(state.tableData.param).then(()=>{
ElMessage.success('赠送金币成功');
const gmSearch=()=>{
gameGmSearch(state.tableData.data).then(()=>{
ElMessage.success('查询成功');
}).finally(()=>{
// state.loading = false;
})
}
const deposit=()=>{
gameDeposit(state.tableData.paramDeposit).then(()=>{
ElMessage.success('充值成功');
const gmChange=()=>{
gameChangeGm(state.tableData.data).then(()=>{
ElMessage.success('修改成功');
}).finally(()=>{
// state.loading = false;
})
@ -168,8 +121,8 @@ export default defineComponent({
// initTableData();
});
return {
changeGameCoin,
deposit,
gmSearch,
gmChange,
...toRefs(state),
};
},

132
src/views/gameManage/migrate/index.vue

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

90
src/views/gameManage/resetpwd/index.vue

@ -5,20 +5,15 @@
<el-form label-position="right" label-width="300px"
:model="formLabelAlign"
style="max-width: 520px">
<el-form-item label="UID">
<el-input v-model="tableData.param.uid" placeholder="" class="w-50 m-2" size="large" clearable/>
<el-form-item label="account:">
<el-input v-model="tableData.param.account" placeholder="" class="w-50 m-2" size="large" clearable/>
</el-form-item>
<el-form-item label="修改金额(差值)">
<el-input v-model="tableData.param.amount" placeholder="" class="w-50 m-2" size="large" clearable/>
</el-form-item>
<el-form-item label="选择货币类型" >
<el-select v-model="tableData.param.amountType" class="w-50 m-2" placeholder="选择渠道" size="large">
<el-option v-for="item in amountTypes" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
<el-form-item label="密码:">
<el-input v-model="tableData.param.pwd" placeholder="" class="w-50 m-2" size="large" clearable/>
</el-form-item>
<el-form-item>
<el-button size="large" type="primary" class="ml10" @click="changeGameCoin">
修改游戏币
<el-button size="large" type="primary" class="ml10" @click="resetPwd">
修改登录密码
</el-button>
</el-form-item>
</el-form>
@ -34,28 +29,20 @@
<script lang="ts">
import {toRefs, reactive, onMounted, defineComponent, } from 'vue';
//import { ElMessageBox, ElMessage } from 'element-plus';
import {gameAddCoin, gameDeposit} from "/@/api/game";
import {ServerList} from "/@/utils/game";
import {gameResetPwd} from "/@/api/game";
import {ElMessage} from "element-plus/es";
interface TableDataState {
tableData: {
param: {
uid:number
amount:number
amountType:number
};
paramDeposit:{
account:string
depositId:number
serverId:number
}
pwd:string
};
};
servers:object;
amountTypes:object
depositIds:object
}
export default defineComponent({
@ -66,57 +53,25 @@ export default defineComponent({
const state = reactive<TableDataState>({
tableData: {
param:{
uid:0,
amount:0,
amountType:0
},
paramDeposit:{
account:"",
depositId:0,
serverId:0
}
pwd:"",
},
},
servers:ServerList,
amountTypes:[
{
value: 1,
label: '金币',
},
{
value: 2,
label: '铜币',
},
],
depositIds:[
{
value: 1001,
label: '6块充值',
},
{
value: 1002,
label: '30充值',
},
{
value: 1003,
label: '68充值',
},
]
});
const changeGameCoin=()=>{
gameAddCoin(state.tableData.param).then(()=>{
const resetPwd=()=>{
gameResetPwd(state.tableData.param).then(()=>{
ElMessage.success('赠送金币成功');
}).finally(()=>{
// state.loading = false;
})
}
const deposit=()=>{
gameDeposit(state.tableData.paramDeposit).then(()=>{
ElMessage.success('充值成功');
}).finally(()=>{
// state.loading = false;
})
}
// function GetStateStr(s:number){
@ -139,8 +94,7 @@ export default defineComponent({
// initTableData();
});
return {
changeGameCoin,
deposit,
resetPwd,
...toRefs(state),
};
},

156
src/views/gameManage/statistics/index.vue

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

112
src/views/gameNotice/login/index.vue

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

116
src/views/gameNotice/maintenance/index.vue

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

108
src/views/gameNotice/pop/index.vue

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

37
src/views/gameOrder/count/index.vue

@ -14,13 +14,17 @@
</el-input>
</el-form-item>
<el-form-item label="性别">
<el-radio-group v-model="tableData.param.gender">
<el-radio :label=1></el-radio>
<el-radio :label=2></el-radio>
</el-radio-group>
<el-form-item label="选择性别" prop="gender">
<el-select v-model="tableData.param.gender" class="m-2" placeholder="选择渠道" size="large">
<el-option v-for="item in Genders" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="年龄下限">
<el-input size="default" v-model="tableData.param.lowAge" placeholder="请输入年龄下限" class="w-50 m-2" clearable/>
</el-form-item>
<el-form-item label="年龄上限">
<el-input size="default" v-model="tableData.param.upAge" placeholder="请输入年龄上限" class="w-50 m-2" clearable/>
</el-form-item>
<el-form-item>
<el-button size="default" type="primary" class="ml10" @click="countList">
<el-icon>
@ -49,7 +53,7 @@
<script lang="ts">
import {toRefs, reactive, onMounted, defineComponent} from 'vue';
//import { ElMessageBox, ElMessage } from 'element-plus';
import {gameRoleList} from "/@/api/game";
import {gameOrderCount} from "/@/api/game";
//
interface TableData {
@ -80,13 +84,25 @@ interface TableDataState {
export default defineComponent({
name: 'apiV1SystemRoleList',
setup() {
const Genders=[
{
value: 0,
label: '无',
},
{
value: 1,
label: '男',
}, {
value: 2,
label: '女',
},
]
const state = reactive<TableDataState>({
tableData: {
data: [],
param: {
amount: 0,
compareType: 0,
compareType: 1,
gender: 0,
lowAge: 0,
upAge: 0,
@ -123,7 +139,7 @@ export default defineComponent({
// };
const countList = () => {
const data: Array<TableData> = [];
gameRoleList(state.tableData.param).then(res => {
gameOrderCount(state.tableData.param).then(res => {
const list = res.data.list ?? []
list.map((item: TableData) => {
data.push({
@ -151,6 +167,7 @@ export default defineComponent({
//onHandleCurrentChange,
countList,
...toRefs(state),
Genders
};
},
});

42
src/views/gameOrder/deposit/index.vue

@ -5,9 +5,15 @@
<el-form label-position="right" label-width="300px"
:model="formLabelAlign"
style="max-width: 520px">
<el-form-item label="选择区服" prop="serverId">
<el-select v-model="tableData.paramDeposit.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-item label="UID">
<el-input v-model="tableData.param.uid" placeholder="" class="w-50 m-2" size="large" clearable/>
</el-form-item>
<el-form-item label="修改金额(差值)">
<el-input v-model="tableData.param.amount" placeholder="" class="w-50 m-2" size="large" clearable/>
</el-form-item>
@ -16,6 +22,7 @@
<el-option v-for="item in amountTypes" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item>
<el-button size="large" type="primary" class="ml10" @click="changeGameCoin">
修改游戏币
@ -35,14 +42,19 @@
:model="formLabelAlign"
style="max-width: 520px">
<el-form-item label="账号">
<el-input size="large" v-model="tableData.param.uid" placeholder="" class="w-50 m-2" clearable/>
<el-form-item label="uid">
<el-input size="large" v-model="tableData.paramDeposit.account" placeholder="" class="w-50 m-2" clearable/>
</el-form-item>
<el-form-item label="充值ID" >
<el-select v-model="tableData.paramDeposit.depositId" class="w-50 m-2" placeholder="" size="large">
<el-option v-for="item in depositIds" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="选择平台" prop="platform">
<el-select v-model="tableData.paramDeposit.platform" class="m-2" placeholder="" size="large">
<el-option v-for="item in platforms" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="选择区服" prop="serverId">
<el-select v-model="tableData.paramDeposit.serverId" class="m-2" placeholder="" size="large">
<el-option v-for="item in servers" :key="item.value" :label="item.label" :value="item.value" />
@ -64,7 +76,7 @@
import {toRefs, reactive, onMounted, defineComponent, } from 'vue';
//import { ElMessageBox, ElMessage } from 'element-plus';
import {gameAddCoin, gameDeposit} from "/@/api/game";
import {ServerList} from "/@/utils/game";
import {ServerList,Platforms} from "/@/utils/game";
import {ElMessage} from "element-plus/es";
@ -74,17 +86,20 @@ interface TableDataState {
uid:number
amount:number
amountType:number
serverId:string
};
paramDeposit:{
account:string
account:string
depositId:number
serverId:number
serverId:string
platform:number
}
};
servers:object;
amountTypes:object
depositIds:object
platforms:object
}
export default defineComponent({
@ -97,23 +112,25 @@ export default defineComponent({
param:{
uid:0,
amount:0,
amountType:0
amountType:1,
serverId:"1"
},
paramDeposit:{
account:"",
depositId:0,
serverId:0
depositId:1001,
serverId:"1",
platform:1
}
},
servers:ServerList,
amountTypes:[
{
value: 1,
label: '金币',
value: 3,
label: '手稿',
},
{
value: 2,
value: 1,
label: '铜币',
},
],
@ -130,7 +147,8 @@ export default defineComponent({
value: 1003,
label: '68充值',
},
]
],
platforms:Platforms,
});
const changeGameCoin=()=>{
gameAddCoin(state.tableData.param).then(()=>{

13
src/views/gameOrder/orderList/index.vue

@ -38,7 +38,7 @@
</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-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">
@ -48,7 +48,7 @@
</el-form>
<el-form>
<el-form-item>
<el-button size="default" type="primary" class="ml10" @click="roleList">
<el-button size="default" type="primary" class="ml10" @click="orderList">
<el-icon>
<ele-Search />
</el-icon>
@ -79,10 +79,9 @@
:total="tableData.total"
v-model:page="tableData.param.pageNum"
v-model:limit="tableData.param.pageSize"
@pagination="roleList"
@pagination="orderList"
/>
</el-card>
<EditRole ref="editRoleRef" @getRoleList="roleList"/>
</div>
</template>
@ -118,7 +117,7 @@ interface TableDataState {
account: string;
channel:string
lowTime:number
uptime:number
upTime:number
};
};
@ -155,7 +154,7 @@ export default defineComponent({
// const initTableData = () => {
// roleList()
// };
const roleList = ()=>{
const orderList = ()=>{
const data: Array<TableData> = [];
gameOrderList(state.tableData.param).then(res=>{
const list = res.data.list??[]
@ -202,7 +201,7 @@ export default defineComponent({
//onHandleSizeChange,
//onHandleCurrentChange,
roleList,
orderList,
...toRefs(state),
};
},

210
src/views/gameRole/role/index.vue

@ -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…
Cancel
Save