26 changed files with 2928 additions and 2923 deletions
@ -1,89 +1,92 @@ |
|||||||
export function contentReplace(str: string) { |
export function contentReplace(str: string) { |
||||||
if (str === "") { |
if (str === '') { |
||||||
return str; |
return str; |
||||||
} |
} |
||||||
str = str.replace(/\n/gi, '<br/>'); |
str = str.replace(/\n/gi, '<br/>'); |
||||||
str = str.replaceAll(/(\[color=.*?])/gi, replacer); |
str = str.replaceAll(/(\[color=.*?])/gi, replacer); |
||||||
str = str.replace(/\[color=/gi, '<font color="'); |
str = str.replace(/\[color=/gi, '<font color="'); |
||||||
str = str.replace(/\[\/color\]/gi, "<\/font>"); |
str = str.replace(/\[\/color\]/gi, '</font>'); |
||||||
str = str.replaceAll(/(\[url=.*?])/gi, replacer); |
str = str.replaceAll(/(\[url=.*?])/gi, replacer); |
||||||
str = str.replace(/\[url=/gi, '<a target="_blank" href="'); |
str = str.replace(/\[url=/gi, '<a target="_blank" href="'); |
||||||
str = str.replace(/\[\/url\]/gi, "<\/a>"); |
str = str.replace(/\[\/url\]/gi, '</a>'); |
||||||
str = str.replace(/]/gi, ">"); |
str = str.replace(/]/gi, '>'); |
||||||
str = str.replace(/\[/gi, "<"); |
str = str.replace(/\[/gi, '<'); |
||||||
return str; |
return str; |
||||||
} |
} |
||||||
|
|
||||||
function replacer(match: any, p: any, offset: any, string: any) { |
function replacer(match: any, p: any, offset: any, string: any) { |
||||||
// p是颜色样式
|
// p是颜色样式
|
||||||
console.log("replacer: ", p); |
console.log('replacer: ', p); |
||||||
return p.replace(/]/i, '">'); |
return p.replace(/]/i, '">'); |
||||||
} |
} |
||||||
|
|
||||||
export function random(len: number) { |
export function random(len: number) { |
||||||
return Math.floor(Math.random() * len); |
return Math.floor(Math.random() * len); |
||||||
} |
} |
||||||
|
|
||||||
export function zeroFill(Date: any) { |
export function zeroFill(Date: any) { |
||||||
Date = Number(Date); |
Date = Number(Date); |
||||||
return Date < 10 ? "0" + Date : Date + ""; |
return Date < 10 ? '0' + Date : Date + ''; |
||||||
} |
} |
||||||
|
|
||||||
export function zero4Fill(Date: any) { |
export function zero4Fill(Date: any) { |
||||||
Date = Number(Date); |
Date = Number(Date); |
||||||
return Date < 1000 ? "0" + Date : Date + ""; |
return Date < 1000 ? '0' + Date : Date + ''; |
||||||
} |
} |
||||||
|
|
||||||
|
|
||||||
export function getDaysBetween(date1, date2) { |
export function getDaysBetween(date1, date2) { |
||||||
var startDate = Date.parse(date1); |
var startDate = Date.parse(date1); |
||||||
var endDate = Date.parse(date2); |
var endDate = Date.parse(date2); |
||||||
if (startDate > endDate) { |
if (startDate > endDate) { |
||||||
return 0; |
return 0; |
||||||
} |
} |
||||||
if (startDate == endDate) { |
if (startDate == endDate) { |
||||||
return 1; |
return 1; |
||||||
} |
} |
||||||
var days = (endDate - startDate) / 86400000 + 1; |
var days = (endDate - startDate) / 86400000 + 1; |
||||||
return days; |
return days; |
||||||
} |
} |
||||||
|
|
||||||
export function getCookie(cookie, cname) { |
export function getCookie(cookie, cname) { |
||||||
var name = cname + "="; |
var name = cname + '='; |
||||||
var ca = cookie.split(';'); |
var ca = cookie.split(';'); |
||||||
for (var i = 0; i < ca.length; i++) { |
for (var i = 0; i < ca.length; i++) { |
||||||
var c = ca[i].trim(); |
var c = ca[i].trim(); |
||||||
if (c.indexOf(name) == 0) return c.substring(name.length, c.length); |
if (c.indexOf(name) == 0) return c.substring(name.length, c.length); |
||||||
} |
} |
||||||
return ""; |
return ''; |
||||||
} |
} |
||||||
|
|
||||||
export function getServerName(item) { |
export function getServerName(item) { |
||||||
return (item.platform == 1 ? 'ios ' : (item.platform == 2 ? 'an ' : item.platform == 3 ? '先行 ' : '')) + item.id + ' ' + item.name |
return (item.platform == 1 ? 'ios ' : item.platform == 2 ? 'an ' : item.platform == 3 ? '先行 ' : '') + item.id + ' ' + item.remark; |
||||||
} |
} |
||||||
|
|
||||||
export function allGSwitchServer(serverSwitch, servers) { |
export function allGSwitchServer(serverSwitch, servers) { |
||||||
switch (serverSwitch) { |
switch (serverSwitch) { |
||||||
case 1: |
case 1: |
||||||
return servers.filter(r => (r.id > 1000 && r.id < 2000) || r.id == ""); |
return servers.filter((r) => (r.id > 1000 && r.id < 2000) || r.id == ''); |
||||||
case 2: |
case 2: |
||||||
return servers.filter(r => (r.id > 2000) || r.id == ""); |
return servers.filter((r) => (r.id > 2000 && r.channel.indexOf(';;') == -1) || r.id == ''); |
||||||
case 3: |
case 3: |
||||||
return servers.filter(r => (r.id < 1000) || r.id == ""); |
return servers.filter((r) => r.id < 1000 || r.id == ''); |
||||||
default: |
case 4: |
||||||
return servers; |
return servers.filter((r) => (r.id > 2000 && r.channel.indexOf(';;') != -1) || r.id == ''); |
||||||
} |
default: |
||||||
|
return servers; |
||||||
|
} |
||||||
} |
} |
||||||
|
|
||||||
export function gSwitchServer(serverSwitch, servers) { |
export function gSwitchServer(serverSwitch, servers) { |
||||||
switch (serverSwitch) { |
switch (serverSwitch) { |
||||||
case 1: |
case 1: |
||||||
return servers.filter(r => r.id > 1000 && r.id < 2000); |
return servers.filter((r) => r.id > 1000 && r.id < 2000); |
||||||
case 2: |
case 2: |
||||||
return servers.filter(r => r.id > 2000); |
return servers.filter((r) => r.id > 2000 && r.channel.indexOf(';;') == -1); |
||||||
case 3: |
case 3: |
||||||
return servers.filter(r => r.id < 1000); |
return servers.filter((r) => r.id < 1000); |
||||||
default: |
case 4: |
||||||
return servers; |
return servers.filter((r) => r.id > 2000 && r.channel.indexOf(';;') != -1); |
||||||
} |
default: |
||||||
} |
return servers; |
||||||
|
} |
||||||
|
} |
||||||
|
@ -1,148 +1,159 @@ |
|||||||
<template> |
<template> |
||||||
<div> |
<div> |
||||||
<!-- <el-card shadow="hover" header="">--> |
<!-- <el-card shadow="hover" header="">--> |
||||||
<!-- <div class="mb15">--> |
<!-- <div class="mb15">--> |
||||||
<el-form class="flex-warp" label-position="right"> |
<el-form class="flex-warp" label-position="right"> |
||||||
|
<el-form-item> |
||||||
|
<el-button type="success" class="ml10" @click="onOpenAddDic"> |
||||||
|
<el-icon> |
||||||
|
<ele-FolderAdd /> |
||||||
|
</el-icon> |
||||||
|
新增参数 |
||||||
|
</el-button> |
||||||
|
<el-button type="success" class="ml10" @click="reloadServer"> |
||||||
|
<el-icon> |
||||||
|
<ele-FolderAdd /> |
||||||
|
</el-icon> |
||||||
|
重载配置 |
||||||
|
</el-button> |
||||||
|
</el-form-item> |
||||||
<el-form-item> |
<el-form-item> |
||||||
<el-button type="success" class="ml10" @click="onOpenAddDic"> |
<el-button type="success" class="ml10" @click="countList"> |
||||||
<el-icon> |
刷新列表 |
||||||
<ele-FolderAdd/> |
|
||||||
</el-icon> |
|
||||||
新增参数 |
|
||||||
</el-button> |
|
||||||
<el-button type="success" class="ml10" @click="reloadServer"> |
|
||||||
<el-icon> |
|
||||||
<ele-FolderAdd/> |
|
||||||
</el-icon> |
|
||||||
重载配置 |
|
||||||
</el-button> |
</el-button> |
||||||
</el-form-item> |
</el-form-item> |
||||||
<el-table :data="tableData.data" style="width: 100%" stripe border> |
<el-table :data="tableData.data" style="width: 100%" stripe border> |
||||||
<el-table-column prop="id" label="ID" width="60"> |
<el-table-column prop="id" label="ID" width="60"> |
||||||
<template #default="scope"> |
<template #default="scope"> |
||||||
{{ scope.row.id }} |
{{ scope.row.id }} |
||||||
</template> |
</template> |
||||||
</el-table-column> |
</el-table-column> |
||||||
<el-table-column prop="realmIp" label="realmIp" width="180"/> |
<el-table-column prop="realmIp" label="realmIp" width="180" /> |
||||||
<el-table-column prop="realmPort" label="realmPort" width="120"/> |
<el-table-column prop="realmPort" label="realmPort" width="120" /> |
||||||
<el-table-column prop="realmNum" label="realmNum" width="120"/> |
<el-table-column prop="realmNum" label="realmNum" width="120" /> |
||||||
<el-table-column prop="realmStep" label="realmStep" width="120"/> |
<el-table-column prop="realmStep" label="realmStep" width="120" /> |
||||||
<el-table-column prop="routerIp" label="routerIp" width="180"/> |
<el-table-column prop="routerIp" label="routerIp" width="180" /> |
||||||
<el-table-column prop="routerPort" label="routerPort" width="120"/> |
<el-table-column prop="routerPort" label="routerPort" width="120" /> |
||||||
<el-table-column prop="routerNum" label="routerNum" width="120"/> |
<el-table-column prop="routerNum" label="routerNum" width="120" /> |
||||||
<el-table-column prop="routerStep" label="routerStep" width="120"/> |
<el-table-column prop="routerStep" label="routerStep" width="120" /> |
||||||
<el-table-column> |
<el-table-column> |
||||||
<template #default="scope"> |
<template #default="scope"> |
||||||
<el-button size="small" type="success" @click="onOpenEditDic(scope.row)">修改</el-button> |
<el-button size="small" type="success" @click="onOpenEditDic(scope.row)">修改</el-button> |
||||||
<!-- <el-button size="small" type="danger" @click="delLoginUrl(scope.row.id)">删除</el-button>--> |
<!-- <el-button size="small" type="danger" @click="delLoginUrl(scope.row.id)">删除</el-button>--> |
||||||
</template> |
</template> |
||||||
</el-table-column> |
</el-table-column> |
||||||
</el-table> |
</el-table> |
||||||
<el-row justify="space-evenly"> |
<el-row justify="space-evenly"> |
||||||
<el-pagination :hide-on-single-page="true" v-model:page-size="tableData.params.pageSize" :pager-count="5" |
<el-pagination |
||||||
v-model:current-page="tableData.params.pageNum" layout="total, prev, pager, next" |
:hide-on-single-page="true" |
||||||
:total="tableData.total" |
v-model:page-size="tableData.params.pageSize" |
||||||
@current-change="handleCurrentChange"/> |
:pager-count="5" |
||||||
</el-row> |
v-model:current-page="tableData.params.pageNum" |
||||||
</el-form> |
layout="total, prev, pager, next" |
||||||
|
:total="tableData.total" |
||||||
|
@current-change="handleCurrentChange" |
||||||
|
/> |
||||||
|
</el-row> |
||||||
|
</el-form> |
||||||
|
|
||||||
<EditConfig ref="editDicRef" @countList="countList"/> |
<EditConfig ref="editDicRef" @countList="countList" /> |
||||||
</div> |
</div> |
||||||
</template> |
</template> |
||||||
|
|
||||||
<script lang="ts"> |
<script lang="ts"> |
||||||
import {toRefs, reactive, onMounted, defineComponent, ref} from 'vue'; |
import { toRefs, reactive, onMounted, defineComponent, ref } from 'vue'; |
||||||
import EditConfig from '/@/views/gameLoginUrl/routerList/component/editConfig.vue'; |
import EditConfig from '/@/views/gameLoginUrl/routerList/component/editConfig.vue'; |
||||||
import {gameReloadServer, gameGetRouter} from "/@/api/game"; |
import { gameReloadServer, gameGetRouter } from '/@/api/game'; |
||||||
import {PLATFORM} from "/@/api/common/consts"; |
import { PLATFORM } from '/@/api/common/consts'; |
||||||
|
|
||||||
// 定义接口来定义对象的类型 |
// 定义接口来定义对象的类型 |
||||||
interface TableData { |
interface TableData { |
||||||
id: number; |
id: number; |
||||||
ip: string; |
ip: string; |
||||||
} |
} |
||||||
|
|
||||||
interface TableDataState { |
interface TableDataState { |
||||||
tableData: { |
tableData: { |
||||||
data: Array<TableData>; |
data: Array<TableData>; |
||||||
total: number; |
total: number; |
||||||
params: { |
params: { |
||||||
pageNum: number; |
pageNum: number; |
||||||
pageSize: number; |
pageSize: number; |
||||||
}; |
}; |
||||||
}; |
}; |
||||||
platform: Array<{ label: string, value: string }> |
platform: Array<{ label: string; value: string }>; |
||||||
} |
} |
||||||
|
|
||||||
export default defineComponent({ |
export default defineComponent({ |
||||||
name: 'apiV1GameRouterList', |
name: 'apiV1GameRouterList', |
||||||
components: {EditConfig}, |
components: { EditConfig }, |
||||||
setup() { |
setup() { |
||||||
const editDicRef = ref(); |
const editDicRef = ref(); |
||||||
const state = reactive<TableDataState>({ |
const state = reactive<TableDataState>({ |
||||||
platform: PLATFORM, |
platform: PLATFORM, |
||||||
tableData: { |
tableData: { |
||||||
data: [], |
data: [], |
||||||
total: 0, |
total: 0, |
||||||
params: { |
params: { |
||||||
pageNum: 1, |
pageNum: 1, |
||||||
pageSize: 10, |
pageSize: 10, |
||||||
}, |
}, |
||||||
}, |
}, |
||||||
}); |
}); |
||||||
// 打开新增字典弹窗 |
// 打开新增字典弹窗 |
||||||
const onOpenAddDic = () => { |
const onOpenAddDic = () => { |
||||||
editDicRef.value.openDialog(); |
editDicRef.value.openDialog(); |
||||||
}; |
}; |
||||||
// 打开修改字典弹窗 |
// 打开修改字典弹窗 |
||||||
const onOpenEditDic = (row: TableData) => { |
const onOpenEditDic = (row: TableData) => { |
||||||
editDicRef.value.openDialog(row); |
editDicRef.value.openDialog(row); |
||||||
}; |
}; |
||||||
const countList = () => { |
const countList = () => { |
||||||
gameGetRouter(state.tableData.params).then(res => { |
gameGetRouter(state.tableData.params).then((res) => { |
||||||
console.log("countList:", res); |
console.log('countList:', res); |
||||||
state.tableData.total = res.data.total || 1; |
state.tableData.total = res.data.total || 1; |
||||||
state.tableData.data = res.data.list ?? []; |
state.tableData.data = res.data.list ?? []; |
||||||
console.log("countList:", state.tableData); |
console.log('countList:', state.tableData); |
||||||
}) |
}); |
||||||
}; |
}; |
||||||
|
|
||||||
const reloadServer = () => { |
const reloadServer = () => { |
||||||
gameReloadServer({}).then(res => { |
gameReloadServer({}).then((res) => { |
||||||
}) |
console.log('reloadServer:', res); |
||||||
}; |
}); |
||||||
const handleCurrentChange = (val: number) => { |
}; |
||||||
state.tableData.params.pageNum = val; |
const handleCurrentChange = (val: number) => { |
||||||
countList(); |
state.tableData.params.pageNum = val; |
||||||
}; |
countList(); |
||||||
onMounted(() => { |
}; |
||||||
countList(); |
onMounted(() => { |
||||||
}); |
countList(); |
||||||
return { |
}); |
||||||
editDicRef, |
return { |
||||||
handleCurrentChange, |
editDicRef, |
||||||
countList, |
handleCurrentChange, |
||||||
onOpenAddDic, |
countList, |
||||||
onOpenEditDic, |
onOpenAddDic, |
||||||
// delLoginUrl, |
onOpenEditDic, |
||||||
reloadServer, |
// delLoginUrl, |
||||||
...toRefs(state), |
reloadServer, |
||||||
}; |
...toRefs(state), |
||||||
}, |
}; |
||||||
|
}, |
||||||
}); |
}); |
||||||
</script> |
</script> |
||||||
<style scoped lang="scss"> |
<style scoped lang="scss"> |
||||||
.el-form-item { |
.el-form-item { |
||||||
display: -moz-flex; |
display: -moz-flex; |
||||||
vertical-align: middle; |
vertical-align: middle; |
||||||
margin-right: 32px; |
margin-right: 32px; |
||||||
} |
} |
||||||
|
|
||||||
::v-deep .el-table--striped .el-table__body tr.el-table__row--striped td { |
::v-deep .el-table--striped .el-table__body tr.el-table__row--striped td { |
||||||
background: #ffffd5; |
background: #ffffd5; |
||||||
} |
} |
||||||
|
|
||||||
::v-deep .el-table .el-table--enable-row-hover .el-table__body tr:hover > td { |
::v-deep .el-table .el-table--enable-row-hover .el-table__body tr:hover > td { |
||||||
background: inherit; |
background: inherit; |
||||||
} |
} |
||||||
</style> |
</style> |
||||||
|
@ -1,151 +1,148 @@ |
|||||||
<template> |
<template> |
||||||
<div class="game-account-container"> |
<div class="game-account-container"> |
||||||
<el-card shadow="hover"> |
<el-card shadow="hover"> |
||||||
<div class="game-account-search mb15"> |
<div class="game-account-search mb15"> |
||||||
<el-form :inline="true"> |
<el-form :inline="true"> |
||||||
<el-form-item label="源UID:"> |
<el-form-item label="源UID:"> |
||||||
<el-input size="default" v-model="tableData.param.srcUid" placeholder="输入源UID" class="w-50 m-2" |
<el-input size="default" v-model="tableData.param.srcUid" placeholder="输入源UID" class="w-50 m-2" clearable /> |
||||||
clearable/> |
</el-form-item> |
||||||
</el-form-item> |
<el-form-item label="源服务器" prop="serverId"> |
||||||
<el-form-item label="源服务器" prop="serverId"> |
<el-select v-model="serverSwitch" class="m-2" placeholder="选择服务器" size="large" style="width: 80px"> |
||||||
<el-select v-model="serverSwitch" class="m-2" placeholder="选择服务器" size="large" style="width: 80px"> |
<el-option v-for="item in serverCategorize" :key="item.value" :label="item.label" :value="item.value" /> |
||||||
<el-option label="全部" :value="0"/> |
</el-select> |
||||||
<el-option label="ios" :value="1"/> |
<el-select v-model="tableData.param.srcServer" class="m-2" placeholder="选择区服" size="large" filterable> |
||||||
<el-option label="安卓" :value="2"/> |
<el-option |
||||||
<el-option label="其他" :value="3"/> |
v-for="item in servers" |
||||||
</el-select> |
:key="item.id + ''" |
||||||
<el-select v-model="tableData.param.srcServer" class="m-2" placeholder="选择区服" size="large" filterable> |
:label="(item.platform == 1 ? 'ios ' : item.platform == 2 ? 'an ' : '先行 ') + item.id + ' ' + item.name" |
||||||
<el-option v-for="item in servers" :key="item.id+''" |
:value="item.id + ''" |
||||||
:label="(item.platform==1?'ios ':(item.platform==2?'an ':'先行 '))+item.id + ' ' +item.name" |
/> |
||||||
:value="item.id+''"/> |
</el-select> |
||||||
</el-select> |
</el-form-item> |
||||||
</el-form-item> |
<el-form-item label="转移UID:"> |
||||||
<el-form-item label="转移UID:"> |
<el-input size="default" v-model="tableData.param.destUid" placeholder="输入转移UID" class="w-50 m-2" clearable /> |
||||||
<el-input size="default" v-model="tableData.param.destUid" placeholder="输入转移UID" |
</el-form-item> |
||||||
class="w-50 m-2" clearable/> |
<el-form-item label="转移服务器" prop="serverId"> |
||||||
</el-form-item> |
<el-select v-model="serverSwitch" class="m-2" placeholder="选择服务器" size="large" style="width: 80px"> |
||||||
<el-form-item label="转移服务器" prop="serverId"> |
<el-option label="全部" :value="0" /> |
||||||
<el-select v-model="serverSwitch" class="m-2" placeholder="选择服务器" size="large" style="width: 80px"> |
<el-option label="ios" :value="1" /> |
||||||
<el-option label="全部" :value="0"/> |
<el-option label="安卓" :value="2" /> |
||||||
<el-option label="ios" :value="1"/> |
<el-option label="其他" :value="3" /> |
||||||
<el-option label="安卓" :value="2"/> |
</el-select> |
||||||
<el-option label="其他" :value="3"/> |
<el-select v-model="tableData.param.destServer" class="m-2" placeholder="选择区服" size="large" filterable> |
||||||
</el-select> |
<el-option v-for="item in switchServer()" :key="item.id" :label="item.name" :value="item.id"/> |
||||||
<el-select v-model="tableData.param.destServer" class="m-2" placeholder="选择区服" size="large" filterable> |
</el-select> |
||||||
<el-option v-for="item in switchServer()" :key="item.id+''" :label="item.name" :value="item.id+''"/> |
</el-form-item> |
||||||
</el-select> |
<el-form-item> |
||||||
</el-form-item> |
<el-button size="default" type="primary" class="ml10" @click="roleList"> |
||||||
<el-form-item> |
<el-icon> |
||||||
<el-button size="default" type="primary" class="ml10" @click="roleList"> |
<ele-Search /> |
||||||
<el-icon> |
</el-icon> |
||||||
<ele-Search/> |
查询 |
||||||
</el-icon> |
</el-button> |
||||||
查询 |
<el-button size="default" type="primary" class="ml10" @click="roleList"> 确定迁移 </el-button> |
||||||
</el-button> |
</el-form-item> |
||||||
<el-button size="default" type="primary" class="ml10" @click="roleList"> |
</el-form> |
||||||
确定迁移 |
</div> |
||||||
</el-button> |
<el-table :data="tableData.data" style="width: 100%"> |
||||||
</el-form-item> |
<el-table-column type="index" label="序号" width="60" /> |
||||||
</el-form> |
<el-table-column prop="uid" label="uid" show-overflow-tooltip></el-table-column> |
||||||
</div> |
<el-table-column prop="account" label="账号" show-overflow-tooltip></el-table-column> |
||||||
<el-table :data="tableData.data" style="width: 100%"> |
<el-table-column prop="name" label="桃谷名字" show-overflow-tooltip></el-table-column> |
||||||
<el-table-column type="index" label="序号" width="60"/> |
<el-table-column prop="boom" label="繁荣度" show-overflow-tooltip></el-table-column> |
||||||
<el-table-column prop="uid" label="uid" show-overflow-tooltip></el-table-column> |
<el-table-column prop="villageScale" label="规模" show-overflow-tooltip></el-table-column> |
||||||
<el-table-column prop="account" label="账号" show-overflow-tooltip></el-table-column> |
</el-table> |
||||||
<el-table-column prop="name" label="桃谷名字" show-overflow-tooltip></el-table-column> |
</el-card> |
||||||
<el-table-column prop="boom" label="繁荣度" show-overflow-tooltip></el-table-column> |
</div> |
||||||
<el-table-column prop="villageScale" label="规模" show-overflow-tooltip></el-table-column> |
|
||||||
</el-table> |
|
||||||
</el-card> |
|
||||||
</div> |
|
||||||
</template> |
</template> |
||||||
|
|
||||||
<script lang="ts"> |
<script lang="ts"> |
||||||
import {toRefs, reactive, onMounted, defineComponent,} from 'vue'; |
import { toRefs, reactive, onMounted, defineComponent } from 'vue'; |
||||||
import {serverList} from "/@/utils/game"; |
import { ServerCategorize, serverList } from '/@/utils/game'; |
||||||
import {gameAccountList} from "/@/api/game"; |
import { gameAccountList } from '/@/api/game'; |
||||||
import {gSwitchServer} from "/@/utils/utils"; |
import { gSwitchServer } from '/@/utils/utils'; |
||||||
|
|
||||||
// 定义接口来定义对象的类型 |
// 定义接口来定义对象的类型 |
||||||
interface TableData { |
interface TableData { |
||||||
uid: number; |
uid: number; |
||||||
account: string; |
account: string; |
||||||
name: string; |
name: string; |
||||||
boom: number; |
boom: number; |
||||||
villageScale: number; |
villageScale: number; |
||||||
} |
} |
||||||
|
|
||||||
interface TableDataState { |
interface TableDataState { |
||||||
serverSwitch: number; |
serverSwitch: number; |
||||||
tableData: { |
tableData: { |
||||||
data: Array<TableData>; |
data: Array<TableData>; |
||||||
param: { |
param: { |
||||||
srcUid: number; |
srcUid: number; |
||||||
srcServer: string; |
srcServer: string; |
||||||
destUid: number; |
destUid: number; |
||||||
destServer: string |
destServer: string; |
||||||
} |
}; |
||||||
}; |
}; |
||||||
servers: object[] |
servers: object[]; |
||||||
|
serverCategorize: object[]; |
||||||
} |
} |
||||||
|
|
||||||
export default defineComponent({ |
export default defineComponent({ |
||||||
name: 'apiV1GameAccountList', |
name: 'apiV1GameAccountList', |
||||||
setup() { |
setup() { |
||||||
const state = reactive<TableDataState>({ |
const state = reactive<TableDataState>({ |
||||||
serverSwitch: 0, |
serverSwitch: 0, |
||||||
tableData: { |
tableData: { |
||||||
data: [], |
data: [], |
||||||
param: { |
param: { |
||||||
srcUid: 0, |
srcUid: 0, |
||||||
srcServer: "", |
srcServer: '', |
||||||
destUid: 0, |
destUid: 0, |
||||||
destServer: "" |
destServer: '', |
||||||
}, |
}, |
||||||
}, |
}, |
||||||
servers: [] |
servers: [], |
||||||
}); |
serverCategorize: ServerCategorize, |
||||||
const switchServer = () => { |
}); |
||||||
return gSwitchServer(state.serverSwitch, state.servers) |
const switchServer = () => { |
||||||
|
return gSwitchServer(state.serverSwitch, state.servers); |
||||||
|
}; |
||||||
|
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 roleList = () => { |
// const onHandleSizeChange = (val: number) => { |
||||||
const data: Array<TableData> = []; |
// state.tableData.param.pageSize = val; |
||||||
gameAccountList(state.tableData.param).then(res => { |
// }; |
||||||
const list = res.data.list ?? [] |
// // 分页改变 |
||||||
list.map((item: TableData) => { |
// const onHandleCurrentChange = (val: number) => { |
||||||
data.push({ |
// state.tableData.param.pageNum = val; |
||||||
uid: item.uid, |
// }; |
||||||
account: item.account, |
// 页面加载时 |
||||||
name: item.name, |
onMounted(() => { |
||||||
boom: item.boom, |
serverList().then((value) => { |
||||||
villageScale: item.villageScale, |
state.servers = value; |
||||||
}); |
// console.log(" server : ", state.servers); |
||||||
}); |
}); |
||||||
state.tableData.data = data; |
}); |
||||||
}) |
return { |
||||||
}; |
switchServer, |
||||||
|
roleList, |
||||||
// // 分页改变 |
...toRefs(state), |
||||||
// const onHandleSizeChange = (val: number) => { |
}; |
||||||
// state.tableData.param.pageSize = val; |
}, |
||||||
// }; |
|
||||||
// // 分页改变 |
|
||||||
// const onHandleCurrentChange = (val: number) => { |
|
||||||
// state.tableData.param.pageNum = val; |
|
||||||
// }; |
|
||||||
// 页面加载时 |
|
||||||
onMounted(() => { |
|
||||||
serverList().then(value => { |
|
||||||
state.servers = value; |
|
||||||
// console.log(" server : ", state.servers); |
|
||||||
}); |
|
||||||
}); |
|
||||||
return { |
|
||||||
switchServer, |
|
||||||
roleList, |
|
||||||
...toRefs(state), |
|
||||||
}; |
|
||||||
}, |
|
||||||
}); |
}); |
||||||
</script> |
</script> |
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,292 +1,287 @@ |
|||||||
<template> |
<template> |
||||||
<div class="game-statistics-container"> |
<div class="game-statistics-container"> |
||||||
<el-card shadow="hover"> |
<el-card shadow="hover"> |
||||||
<div class="system-user-search mb15"> |
<div class="system-user-search mb15"> |
||||||
<el-form :inline="true"> |
<el-form :inline="true"> |
||||||
<el-form-item label="渠道" prop="channel"> |
<el-form-item label="渠道" prop="channel"> |
||||||
<el-select v-model="tableData.param.channel" class="m-2" placeholder="选择渠道"> |
<el-select v-model="tableData.param.channel" class="m-2" placeholder="选择渠道"> |
||||||
<el-option v-for="item in channels" :key="item.value" :label="item.label" |
<el-option v-for="item in channels" :key="item.value" :label="item.label" :value="item.value" /> |
||||||
:value="item.value"/> |
</el-select> |
||||||
</el-select> |
</el-form-item> |
||||||
</el-form-item> |
<el-form-item label="选择区服" prop="server"> |
||||||
<el-form-item label="选择区服" prop="server"> |
<el-select v-model="serverSwitch" class="m-2" placeholder="选择服务器" size="large" style="width: 80px"> |
||||||
<el-select v-model="serverSwitch" class="m-2" placeholder="选择服务器" size="large" style="width: 80px"> |
<el-option v-for="item in serverCategorize" :key="item.value" :label="item.label" :value="item.value" /> |
||||||
<el-option label="全部" :value="0"/> |
</el-select> |
||||||
<el-option label="ios" :value="1"/> |
<el-select v-model="tableData.param.server" class="m-2" placeholder="选择区服" filterable> |
||||||
<el-option label="安卓" :value="2"/> |
<el-option v-for="item in switchServer()" :key="item.id + ''" :label="item.name" :value="item.id + ''" /> |
||||||
<el-option label="其他" :value="3"/> |
</el-select> |
||||||
</el-select> |
</el-form-item> |
||||||
<el-select v-model="tableData.param.server" class="m-2" placeholder="选择区服" filterable> |
<el-form-item label="起始日期" prop="startTime"> |
||||||
<el-option v-for="item in switchServer()" :key="item.id+''" :label="item.name" :value="item.id+''"/> |
<el-date-picker type="datetime" v-model="tableData.param.startTime" format="YYYY-MM-DD HH:mm:ss" value-format="x" /> |
||||||
</el-select> |
</el-form-item> |
||||||
</el-form-item> |
<el-form-item label="起始日期" prop="endTime"> |
||||||
<el-form-item label="起始日期" prop="startTime"> |
<el-date-picker type="datetime" v-model="tableData.param.endTime" format="YYYY-MM-DD HH:mm:ss" value-format="x" /> |
||||||
<el-date-picker type="datetime" v-model="tableData.param.startTime" format="YYYY-MM-DD HH:mm:ss" |
</el-form-item> |
||||||
value-format="x"/> |
<el-form-item> |
||||||
</el-form-item> |
<el-button size="default" type="primary" class="ml10" @click="getRemain"> |
||||||
<el-form-item label="起始日期" prop="endTime"> |
<el-icon> |
||||||
<el-date-picker type="datetime" v-model="tableData.param.endTime" format="YYYY-MM-DD HH:mm:ss" |
<ele-Search /> |
||||||
value-format="x"/> |
</el-icon> |
||||||
</el-form-item> |
查询 |
||||||
<el-form-item> |
</el-button> |
||||||
<el-button size="default" type="primary" class="ml10" @click="getRemain"> |
</el-form-item> |
||||||
<el-icon> |
</el-form> |
||||||
<ele-Search/> |
</div> |
||||||
</el-icon> |
<el-table :data="tableData.registerData" style="width: 100%"> |
||||||
查询 |
<el-table-column prop="labelName" label="注册数量" width="180"></el-table-column> |
||||||
</el-button> |
<el-table-column prop="one" label="男性玩家" width="180"> |
||||||
</el-form-item> |
<template #default="scope"> |
||||||
</el-form> |
<div v-if="scope.row.one"> |
||||||
</div> |
<span>{{ scope.row.one }}</span> |
||||||
<el-table :data="tableData.registerData" style="width: 100%"> |
</div> |
||||||
<el-table-column prop="labelName" label="注册数量" width="180"></el-table-column> |
</template> |
||||||
<el-table-column prop="one" label="男性玩家" width="180"> |
</el-table-column> |
||||||
<template #default="scope"> |
<el-table-column prop="two" label="男性玩家占比" width="180"> |
||||||
<div v-if="scope.row.one"> |
<template #default="scope"> |
||||||
<span>{{ scope.row.one }}</span> |
<div v-if="scope.row.two"> |
||||||
</div> |
<span>{{ scope.row.two }}</span> |
||||||
</template> |
</div> |
||||||
</el-table-column> |
</template> |
||||||
<el-table-column prop="two" label="男性玩家占比" width="180"> |
</el-table-column> |
||||||
<template #default="scope"> |
<el-table-column prop="three" label="女性玩家" width="180"> |
||||||
<div v-if="scope.row.two"> |
<template #default="scope"> |
||||||
<span>{{ scope.row.two }}</span> |
<div v-if="scope.row.three"> |
||||||
</div> |
<span>{{ scope.row.three }}</span> |
||||||
</template> |
</div> |
||||||
</el-table-column> |
</template> |
||||||
<el-table-column prop="three" label="女性玩家" width="180"> |
</el-table-column> |
||||||
<template #default="scope"> |
<el-table-column prop="four" label="女性玩家占比" width="180"> |
||||||
<div v-if="scope.row.three"> |
<template #default="scope"> |
||||||
<span>{{ scope.row.three }}</span> |
<div v-if="scope.row.four"> |
||||||
</div> |
<span>{{ scope.row.four }}</span> |
||||||
</template> |
</div> |
||||||
</el-table-column> |
</template> |
||||||
<el-table-column prop="four" label="女性玩家占比" width="180"> |
</el-table-column> |
||||||
<template #default="scope"> |
</el-table> |
||||||
<div v-if="scope.row.four"> |
<el-table :data="tableData.rechargeData" style="width: 100%"> |
||||||
<span>{{ scope.row.four }}</span> |
<el-table-column prop="labelName" label="充值用户" width="180"></el-table-column> |
||||||
</div> |
<el-table-column prop="one" label="男性占比" width="180"> |
||||||
</template> |
<template #default="scope"> |
||||||
</el-table-column> |
<div v-if="scope.row.one"> |
||||||
</el-table> |
<span>{{ scope.row.one }}</span> |
||||||
<el-table :data="tableData.rechargeData" style="width: 100%"> |
</div> |
||||||
<el-table-column prop="labelName" label="充值用户" width="180"></el-table-column> |
</template> |
||||||
<el-table-column prop="one" label="男性占比" width="180"> |
</el-table-column> |
||||||
<template #default="scope"> |
<el-table-column prop="four" label="女性占比" width="180"> |
||||||
<div v-if="scope.row.one"> |
<template #default="scope"> |
||||||
<span>{{ scope.row.one }}</span> |
<div v-if="scope.row.four"> |
||||||
</div> |
<span>{{ scope.row.four }}</span> |
||||||
</template> |
</div> |
||||||
</el-table-column> |
</template> |
||||||
<el-table-column prop="four" label="女性占比" width="180"> |
</el-table-column> |
||||||
<template #default="scope"> |
</el-table> |
||||||
<div v-if="scope.row.four"> |
<el-table :data="tableData.accountData" style="width: 100%"> |
||||||
<span>{{ scope.row.four }}</span> |
<el-table-column prop="age" label="年龄" width="180"></el-table-column> |
||||||
</div> |
<el-table-column prop="one" label="用户数量" width="180"> |
||||||
</template> |
<template #default="scope"> |
||||||
</el-table-column> |
<div v-if="scope.row.one"> |
||||||
</el-table> |
<span>{{ scope.row.one }}</span> |
||||||
<el-table :data="tableData.accountData" style="width: 100%"> |
</div> |
||||||
<el-table-column prop="age" label="年龄" width="180"></el-table-column> |
</template> |
||||||
<el-table-column prop="one" label="用户数量" width="180"> |
</el-table-column> |
||||||
<template #default="scope"> |
<el-table-column prop="four" label="百分比" width="180"> |
||||||
<div v-if="scope.row.one"> |
<template #default="scope"> |
||||||
<span>{{ scope.row.one }}</span> |
<div v-if="scope.row.four"> |
||||||
</div> |
<span>{{ scope.row.four }}</span> |
||||||
</template> |
</div> |
||||||
</el-table-column> |
</template> |
||||||
<el-table-column prop="four" label="百分比" width="180"> |
</el-table-column> |
||||||
<template #default="scope"> |
<el-table-column prop="four" label="男性占比" width="180"> |
||||||
<div v-if="scope.row.four"> |
<template #default="scope"> |
||||||
<span>{{ scope.row.four }}</span> |
<div v-if="scope.row.four"> |
||||||
</div> |
<span>{{ scope.row.four }}</span> |
||||||
</template> |
</div> |
||||||
</el-table-column> |
</template> |
||||||
<el-table-column prop="four" label="男性占比" width="180"> |
</el-table-column> |
||||||
<template #default="scope"> |
<el-table-column prop="four" label="女性占比" width="180"> |
||||||
<div v-if="scope.row.four"> |
<template #default="scope"> |
||||||
<span>{{ scope.row.four }}</span> |
<div v-if="scope.row.four"> |
||||||
</div> |
<span>{{ scope.row.four }}</span> |
||||||
</template> |
</div> |
||||||
</el-table-column> |
</template> |
||||||
<el-table-column prop="four" label="女性占比" width="180"> |
</el-table-column> |
||||||
<template #default="scope"> |
<el-table-column prop="four" label="充值数量占比" width="180"> |
||||||
<div v-if="scope.row.four"> |
<template #default="scope"> |
||||||
<span>{{ scope.row.four }}</span> |
<div v-if="scope.row.four"> |
||||||
</div> |
<span>{{ scope.row.four }}</span> |
||||||
</template> |
</div> |
||||||
</el-table-column> |
</template> |
||||||
<el-table-column prop="four" label="充值数量占比" width="180"> |
</el-table-column> |
||||||
<template #default="scope"> |
<el-table-column prop="four" label="充值额度占比" width="180"> |
||||||
<div v-if="scope.row.four"> |
<template #default="scope"> |
||||||
<span>{{ scope.row.four }}</span> |
<div v-if="scope.row.four"> |
||||||
</div> |
<span>{{ scope.row.four }}</span> |
||||||
</template> |
</div> |
||||||
</el-table-column> |
</template> |
||||||
<el-table-column prop="four" label="充值额度占比" width="180"> |
</el-table-column> |
||||||
<template #default="scope"> |
</el-table> |
||||||
<div v-if="scope.row.four"> |
</el-card> |
||||||
<span>{{ scope.row.four }}</span> |
</div> |
||||||
</div> |
|
||||||
</template> |
|
||||||
</el-table-column> |
|
||||||
</el-table> |
|
||||||
</el-card> |
|
||||||
</div> |
|
||||||
</template> |
</template> |
||||||
|
|
||||||
<script lang="ts"> |
<script lang="ts"> |
||||||
//import { ElMessageBox, ElMessage } from 'element-plus'; |
//import { ElMessageBox, ElMessage } from 'element-plus'; |
||||||
import {toRefs, reactive, onMounted, defineComponent,} from 'vue'; |
import { toRefs, reactive, onMounted, defineComponent } from 'vue'; |
||||||
import {liveAccount} from "/@/api/game/index"; |
import { liveAccount } from '/@/api/game/index'; |
||||||
import {allChannelList, allServerList} from "/@/utils/game"; |
import { allChannelList, allServerList, ServerCategorize } from '/@/utils/game'; |
||||||
import {gSwitchServer} from "/@/utils/utils"; |
import { gSwitchServer } from '/@/utils/utils'; |
||||||
|
|
||||||
// 定义接口来定义对象的类型 |
// 定义接口来定义对象的类型 |
||||||
interface TableData { |
interface TableData { |
||||||
labelName: string |
labelName: string; |
||||||
one: number |
one: number; |
||||||
two: number |
two: number; |
||||||
three: number |
three: number; |
||||||
four: number |
four: number; |
||||||
five: number |
five: number; |
||||||
six: number |
six: number; |
||||||
seven: number |
seven: number; |
||||||
fifteen: number |
fifteen: number; |
||||||
thirty: number |
thirty: number; |
||||||
} |
} |
||||||
|
|
||||||
interface TableDataState { |
interface TableDataState { |
||||||
serverSwitch: number; |
serverSwitch: number; |
||||||
tableData: { |
tableData: { |
||||||
data: Array<TableData>; |
data: Array<TableData>; |
||||||
registerNum: number; |
registerNum: number; |
||||||
param: { |
param: { |
||||||
channel: string; |
channel: string; |
||||||
server: number; |
server: number; |
||||||
createTime: string; |
createTime: string; |
||||||
}; |
}; |
||||||
total: number; |
total: number; |
||||||
}; |
}; |
||||||
servers: object[]; |
servers: object[]; |
||||||
channels: object[]; |
channels: object[]; |
||||||
dateNames: object; |
dateNames: object; |
||||||
|
serverCategorize: object; |
||||||
} |
} |
||||||
|
|
||||||
export default defineComponent({ |
export default defineComponent({ |
||||||
name: 'apiV1GameRoleStatics', |
name: 'apiV1GameRoleStatics', |
||||||
setup() { |
setup() { |
||||||
const state = reactive<TableDataState>({ |
const state = reactive<TableDataState>({ |
||||||
serverSwitch: 0, |
serverSwitch: 0, |
||||||
tableData: { |
tableData: { |
||||||
data: [{labelName: "总注册量"}, {labelName: "活跃-占比"}, {labelName: "最高在线"}], |
data: [{ labelName: '总注册量' }, { labelName: '活跃-占比' }, { labelName: '最高在线' }], |
||||||
registerNum: 0, |
registerNum: 0, |
||||||
param: { |
param: { |
||||||
channel: "", |
channel: '', |
||||||
server: "", |
server: '', |
||||||
createTime: "", |
createTime: '', |
||||||
}, |
}, |
||||||
total: 0, |
total: 0, |
||||||
}, |
}, |
||||||
servers: [], |
servers: [], |
||||||
channels: [], |
channels: [], |
||||||
dateNames: { |
dateNames: { |
||||||
1: "one", |
1: 'one', |
||||||
2: "two", |
2: 'two', |
||||||
3: "three", |
3: 'three', |
||||||
4: "four", |
4: 'four', |
||||||
5: "five", |
5: 'five', |
||||||
6: "six", |
6: 'six', |
||||||
7: "seven", |
7: 'seven', |
||||||
15: "fifteen", |
15: 'fifteen', |
||||||
30: "thirty" |
30: 'thirty', |
||||||
}, |
}, |
||||||
}); |
serverCategorize: ServerCategorize, |
||||||
|
}); |
||||||
|
|
||||||
const getRemain = () => { |
const getRemain = () => { |
||||||
state.tableData.data = [{labelName: "总注册量"}, {labelName: "活跃-占比"}, {labelName: "最高在线"}]; |
state.tableData.data = [{ labelName: '总注册量' }, { labelName: '活跃-占比' }, { labelName: '最高在线' }]; |
||||||
const highData = state.tableData.data[2]; |
const highData = state.tableData.data[2]; |
||||||
const liveData = state.tableData.data[1]; |
const liveData = state.tableData.data[1]; |
||||||
const registerData = {}; |
const registerData = {}; |
||||||
const totalRegisterData = state.tableData.data[0]; |
const totalRegisterData = state.tableData.data[0]; |
||||||
let date = state.tableData.param.createTime; |
let date = state.tableData.param.createTime; |
||||||
liveAccount(state.tableData.param).then(res => { |
liveAccount(state.tableData.param).then((res) => { |
||||||
console.log("keepAccount:", res); |
console.log('keepAccount:', res); |
||||||
const highLogs = res.data && res.data.highLogs || []; |
const highLogs = (res.data && res.data.highLogs) || []; |
||||||
const liveLogs = res.data && res.data.liveLogs || []; |
const liveLogs = (res.data && res.data.liveLogs) || []; |
||||||
const registerLogs = res.data && res.data.registerLogs || []; |
const registerLogs = (res.data && res.data.registerLogs) || []; |
||||||
highLogs.map((item: any) => { |
highLogs.map((item: any) => { |
||||||
// if(item.cd == item.ct){ |
// if(item.cd == item.ct){ |
||||||
// state.tableData.registerNum = item.num; |
// state.tableData.registerNum = item.num; |
||||||
// } |
// } |
||||||
let delta = getDaysBetween(date + " 00:00:00", item.cd + " 00:00:00"); |
let delta = getDaysBetween(date + ' 00:00:00', item.cd + ' 00:00:00'); |
||||||
let name = state.dateNames[delta]; |
let name = state.dateNames[delta]; |
||||||
if (name) { |
if (name) { |
||||||
highData[name] = item.num |
highData[name] = item.num; |
||||||
} |
} |
||||||
}); |
}); |
||||||
registerLogs.map((item: any) => { |
registerLogs.map((item: any) => { |
||||||
let delta = getDaysBetween(date + " 00:00:00", item.ct + " 00:00:00"); |
let delta = getDaysBetween(date + ' 00:00:00', item.ct + ' 00:00:00'); |
||||||
let name = state.dateNames[delta]; |
let name = state.dateNames[delta]; |
||||||
if (name) { |
if (name) { |
||||||
registerData[name] = item.num |
registerData[name] = item.num; |
||||||
} |
} |
||||||
}); |
}); |
||||||
for (let i in state.dateNames) { |
for (let i in state.dateNames) { |
||||||
let name = state.dateNames[i]; |
let name = state.dateNames[i]; |
||||||
totalRegisterData[name] = res.data.registerTotal; |
totalRegisterData[name] = res.data.registerTotal; |
||||||
for (let j = 1; j <= i; j++) { |
for (let j = 1; j <= i; j++) { |
||||||
if (registerData[state.dateNames[j]]) { |
if (registerData[state.dateNames[j]]) { |
||||||
totalRegisterData[name] += registerData[state.dateNames[j]] |
totalRegisterData[name] += registerData[state.dateNames[j]]; |
||||||
} |
} |
||||||
} |
} |
||||||
} |
} |
||||||
liveLogs.map((item: any) => { |
liveLogs.map((item: any) => { |
||||||
let delta = getDaysBetween(date + " 00:00:00", item.cd + " 00:00:00"); |
let delta = getDaysBetween(date + ' 00:00:00', item.cd + ' 00:00:00'); |
||||||
let name = state.dateNames[delta]; |
let name = state.dateNames[delta]; |
||||||
if (name) { |
if (name) { |
||||||
liveData[name] = item.num; |
liveData[name] = item.num; |
||||||
if (registerData[name]) { |
if (registerData[name]) { |
||||||
console.log("register: ", item.num, registerData[name], Math.floor(Number(item.num) / Number(registerData[name]) * 100)); |
console.log('register: ', item.num, registerData[name], Math.floor((Number(item.num) / Number(registerData[name])) * 100)); |
||||||
liveData[name] += '--' + Math.floor(Number(item.num) / Number(totalRegisterData[name]) * 100) + "%" |
liveData[name] += '--' + Math.floor((Number(item.num) / Number(totalRegisterData[name])) * 100) + '%'; |
||||||
} |
} |
||||||
} |
} |
||||||
}); |
}); |
||||||
|
}); |
||||||
|
}; |
||||||
|
|
||||||
}) |
function getDaysBetween(date1, date2) { |
||||||
}; |
var startDate = Date.parse(date1); |
||||||
|
var endDate = Date.parse(date2); |
||||||
|
if (startDate > endDate) { |
||||||
|
return 0; |
||||||
|
} |
||||||
|
if (startDate == endDate) { |
||||||
|
return 1; |
||||||
|
} |
||||||
|
var days = (endDate - startDate) / 86400000 + 1; |
||||||
|
return days; |
||||||
|
} |
||||||
|
|
||||||
function getDaysBetween(date1, date2) { |
onMounted(function () { |
||||||
var startDate = Date.parse(date1); |
allServerList().then((res) => { |
||||||
var endDate = Date.parse(date2); |
state.servers = res; |
||||||
if (startDate > endDate) { |
// console.log(" server : ", state.servers); |
||||||
return 0; |
}); |
||||||
} |
|
||||||
if (startDate == endDate) { |
|
||||||
return 1; |
|
||||||
} |
|
||||||
var days = (endDate - startDate) / 86400000 + 1; |
|
||||||
return days; |
|
||||||
} |
|
||||||
|
|
||||||
onMounted(function () { |
allChannelList().then((res) => { |
||||||
allServerList().then(res => { |
state.channels = res; |
||||||
state.servers = res; |
}); |
||||||
// console.log(" server : ", state.servers); |
}); |
||||||
}) |
const switchServer = () => { |
||||||
|
return gSwitchServer(state.serverSwitch, state.servers); |
||||||
allChannelList().then(res => { |
}; |
||||||
state.channels = res; |
return { |
||||||
}); |
switchServer, |
||||||
}); |
getRemain, |
||||||
const switchServer = () => { |
...toRefs(state), |
||||||
return gSwitchServer(state.serverSwitch, state.servers) |
}; |
||||||
}; |
}, |
||||||
return { |
|
||||||
switchServer, |
|
||||||
getRemain, |
|
||||||
...toRefs(state), |
|
||||||
}; |
|
||||||
}, |
|
||||||
}); |
}); |
||||||
</script> |
</script> |
||||||
|
Loading…
Reference in new issue