Browse Source

debug

master
linquan 3 months ago
parent
commit
c4b96e1a4f
  1. 8
      .env.production
  2. 606
      src/utils/game.ts
  3. 125
      src/utils/utils.ts
  4. 247
      src/views/gameLoginUrl/routerList/index.vue
  5. 4
      src/views/gameLoginUrl/serverGeneralList/index.vue
  6. 13
      src/views/gameLoginUrl/serverVersion/index.vue
  7. 9
      src/views/gameMail/send/component/editConfig.vue
  8. 13
      src/views/gameMail/send/index.vue
  9. 831
      src/views/gameManage/copyUnit/index.vue
  10. 12
      src/views/gameManage/gm/index.vue
  11. 11
      src/views/gameManage/keep/index.vue
  12. 11
      src/views/gameManage/live/index.vue
  13. 267
      src/views/gameManage/migrate/index.vue
  14. 11
      src/views/gameManage/register/index.vue
  15. 11
      src/views/gameManage/shop/index.vue
  16. 11
      src/views/gameNotice/pop/index.vue
  17. 13
      src/views/gameOrder/count/index.vue
  18. 322
      src/views/gameOrder/deposit/index.vue
  19. 9
      src/views/gameOrder/orderLog/index.vue
  20. 9
      src/views/gameOrder/shopInfo/index.vue
  21. 11
      src/views/gameRole/account/index.vue
  22. 11
      src/views/gameRole/online/index.vue
  23. 2727
      src/views/gameRole/role/index.vue
  24. 9
      src/views/gameRole/scale/index.vue
  25. 11
      src/views/gameRole/searchAccount/index.vue
  26. 539
      src/views/gameRole/statics/index.vue

8
.env.production

@ -3,8 +3,8 @@ ENV = 'production'
# public path 配置线上环境路径(打包)、本地通过 http-server 访问时,请置空即可 # public path 配置线上环境路径(打包)、本地通过 http-server 访问时,请置空即可
VITE_PUBLIC_PATH = VITE_PUBLIC_PATH =
VITE_outDir = 'dist' VITE_outDir = 'test87'
# 线上环境接口地址 # 线上环境接口地址
VITE_API_URL = 'http://192.168.2.115:4111/' VITE_API_URL = 'http://101.35.161.116:4111/'
VITE_API_TITLE = '桃源记2内网115后台' VITE_API_TITLE = '桃源记2后台'
VITE_API_VICETITLE = '内网115后台' VITE_API_VICETITLE = '后台'

606
src/utils/game.ts

@ -1,327 +1,353 @@
import {gameGetAllCcdUrl, gameGetAllChannel, gameGetAllLoginUrl} from "/@/api/game"; import { gameGetAllCcdUrl, gameGetAllChannel, gameGetAllLoginUrl } from '/@/api/game';
import {forEach} from "wangeditor/dist/utils/util"; import { forEach } from 'wangeditor/dist/utils/util';
import {getServerName} from "/@/utils/utils"; import { getServerName } from '/@/utils/utils';
import {utils} from "sortablejs"; import { utils } from 'sortablejs';
// import {verifyNumberIntegerAndFloat} from "/@/utils/toolsValidate"; // import {verifyNumberIntegerAndFloat} from "/@/utils/toolsValidate";
export const ServerList = [ export const ServerList = [
{ {
value: '1', value: '1',
label: '一区:桃源野谷', label: '一区:桃源野谷',
}, },
{ {
value: '2', value: '2',
label: '二区:虎狼之穴', label: '二区:虎狼之穴',
}, },
{ {
value: '3', value: '3',
label: '三区:袅袅炊烟', label: '三区:袅袅炊烟',
}, },
{ {
value: '4', value: '4',
label: '四区:豺狼虎豹', label: '四区:豺狼虎豹',
}, },
{ {
value: '5', value: '5',
label: '五区:鸡鸣犬吠', label: '五区:鸡鸣犬吠',
}, },
{ {
value: '6', value: '6',
label: '六区:妖兽横行', label: '六区:妖兽横行',
}, },
{ {
value: '7', value: '7',
label: '七区:五谷丰登', label: '七区:五谷丰登',
}, },
{ {
value: '8', value: '8',
label: '八区:上古四凶', label: '八区:上古四凶',
}, },
{ {
value: '9', value: '9',
label: '九区:方兴未艾', label: '九区:方兴未艾',
}, },
{ {
value: '10', value: '10',
label: '十区:魑魅魍魉', label: '十区:魑魅魍魉',
}, },
{ {
value: '11', value: '11',
label: '十一区:桃花源记', label: '十一区:桃花源记',
}, },
{ {
value: '12', value: '12',
label: '十二区:先遣服', label: '十二区:先遣服',
}, },
{ {
value: '13', value: '13',
label: '十三区:武陵人', label: '十三区:武陵人',
}, },
{ {
value: '14', value: '14',
label: '十四区:桃谷沃野', label: '十四区:桃谷沃野',
}, },
{ {
value: '15', value: '15',
label: '十五区:桃源春色', label: '十五区:桃源春色',
}, },
{ {
value: '16', value: '16',
label: '十六区:桃源先遣服', label: '十六区:桃源先遣服',
}, },
]; ];
export const AllOfServerList = [ export const AllOfServerList = [
{ {
value: '', value: '',
label: '全部服务器', label: '全部服务器',
}, },
{ {
value: '1', value: '1',
label: '一区:桃源野谷', label: '一区:桃源野谷',
}, },
{ {
value: '2', value: '2',
label: '二区:虎狼之穴', label: '二区:虎狼之穴',
}, },
{ {
value: '3', value: '3',
label: '三区:袅袅炊烟', label: '三区:袅袅炊烟',
}, },
{ {
value: '4', value: '4',
label: '四区:豺狼虎豹', label: '四区:豺狼虎豹',
}, },
{ {
value: '5', value: '5',
label: '五区:鸡鸣犬吠', label: '五区:鸡鸣犬吠',
}, },
{ {
value: '6', value: '6',
label: '六区:妖兽横行', label: '六区:妖兽横行',
}, },
{ {
value: '7', value: '7',
label: '七区:五谷丰登', label: '七区:五谷丰登',
}, },
{ {
value: '8', value: '8',
label: '八区:上古四凶', label: '八区:上古四凶',
}, },
{ {
value: '9', value: '9',
label: '九区:方兴未艾', label: '九区:方兴未艾',
}, },
{ {
value: '10', value: '10',
label: '十区:魑魅魍魉', label: '十区:魑魅魍魉',
}, },
{ {
value: '11', value: '11',
label: '十一区:桃花源记', label: '十一区:桃花源记',
}, },
{ {
value: '12', value: '12',
label: '十二区:先遣服', label: '十二区:先遣服',
}, },
{ {
value: '13', value: '13',
label: '十三区:武陵人', label: '十三区:武陵人',
}, },
{ {
value: '14', value: '14',
label: '十四区:桃谷沃野', label: '十四区:桃谷沃野',
}, },
{ {
value: '15', value: '15',
label: '十五区:桃源春色', label: '十五区:桃源春色',
}, },
{ {
value: '16', value: '16',
label: '十六区:桃源先遣服', label: '十六区:桃源先遣服',
}, },
]; ];
export const AllServerList = [ export const AllServerList = [
{ {
value: '0', value: '0',
label: '一服', label: '一服',
} },
]; ];
export const ChannelList = [ export const ChannelList = [
// { // {
// value: "000000000000", // value: "000000000000",
// label: '母包渠道', // label: '母包渠道',
// }, // },
// { // {
// value: '000001000000', // value: '000001000000',
// label: 'peach', // label: 'peach',
// }, // },
{ {
value: '000002000000', value: '000002000000',
label: 'taptap', label: 'taptap',
}, },
// { // {
// value: '000003000000', // value: '000003000000',
// label: 'quick-母包', // label: 'quick-母包',
// }, // },
{ {
value: '000003000015', value: '000003000015',
label: '小米', label: '小米',
}, },
{ {
value: '000003000017', value: '000003000017',
label: 'VIVO', label: 'VIVO',
}, },
{ {
value: '000003000023', value: '000003000023',
label: 'OPPO', label: 'OPPO',
}, },
{ {
value: '000003000024', value: '000003000024',
label: '华为', label: '华为',
}, },
{ {
value: '000003000027', value: '000003000027',
label: '4399', label: '4399',
}, },
{ {
value: '000003002376', value: '000003002376',
label: '荣耀', label: '荣耀',
}, },
{ {
value: '000004000000', value: '000004000000',
label: 'hykb', label: 'hykb',
} },
]; ];
export const AllChannelList = [ export const AllChannelList = [
{ {
value: "", value: '',
label: '所有渠道', label: '所有渠道',
}, },
// { // {
// value: "000000000000", // value: "000000000000",
// label: '母包渠道', // label: '母包渠道',
// }, // },
// { // {
// value: '000001000000', // value: '000001000000',
// label: 'peach', // label: 'peach',
// }, // },
{ {
value: '000002000000', value: '000002000000',
label: 'taptap', label: 'taptap',
}, },
{ {
value: '000002999999', value: '000002999999',
label: 'tap先行服', label: 'tap先行服',
}, },
// { // {
// value: '000003000000', // value: '000003000000',
// label: 'quick-母包', // label: 'quick-母包',
// }, // },
{ {
value: '000003000015', value: '000003000015',
label: '小米', label: '小米',
}, },
{ {
value: '000003000017', value: '000003000017',
label: 'VIVO', label: 'VIVO',
}, },
{ {
value: '000003000023', value: '000003000023',
label: 'OPPO', label: 'OPPO',
}, },
{ {
value: '000003000024', value: '000003000024',
label: '华为', label: '华为',
}, },
{ {
value: '000003000027', value: '000003000027',
label: '4399', label: '4399',
}, },
{ {
value: '000003002376', value: '000003002376',
label: '荣耀', label: '荣耀',
}, },
{ {
value: '000004000000', value: '000004000000',
label: 'hykb', label: 'hykb',
} },
]; ];
export const Platforms = [ export const Platforms = [
{ {
value: 1, value: 1,
label: 'Android', label: 'Android',
}, },
{ {
value: 2, value: 2,
label: 'Ios', label: 'Ios',
} },
]; ];
export const CompareType = [ export const CompareType = [
{ {
value: 1, value: 1,
label: '=', label: '=',
}, },
{ {
value: 2, value: 2,
label: '<=', label: '<=',
}, },
{ {
value: 3, value: 3,
label: '<', label: '<',
}, },
{ {
value: 4, value: 4,
label: '>', label: '>',
}, },
{ {
value: 5, value: 5,
label: '>=', label: '>=',
} },
];
export const ServerCategorize = [
{
value: 0,
label: '全部',
},
{
value: 1,
label: 'ios',
},
{
value: 2,
label: '官服',
},
{
value: 4,
label: '硬核',
},
{
value: 3,
label: '其他',
}
]; ];
export async function channelList(): Promise<object[]> { export async function channelList(): Promise<object[]> {
const data = await gameGetAllChannel({}); const data = await gameGetAllChannel({});
return data.data.List ?? []; return data.data.List ?? [];
} }
export async function allChannelList(): Promise<object[]> { export async function allChannelList(): Promise<object[]> {
const data = await gameGetAllChannel({}); const data = await gameGetAllChannel({});
return [{ return [
value: '', {
label: '所有渠道', value: '',
}].concat(data.data.List ?? []); label: '所有渠道',
},
].concat(data.data.List ?? []);
} }
export async function serverList(): Promise<object[]> { export async function serverList(): Promise<object[]> {
const data = await gameGetAllLoginUrl({}); const data = await gameGetAllLoginUrl({});
data.data.loginUrlList.forEach(res => { data.data.loginUrlList.forEach((res) => {
res.name = getServerName(res) res.name = getServerName(res);
}) });
data.data.loginUrlList.sort((a, b) => Number(a.platform * 10000 + a.area) - Number(b.platform * 10000 + b.area)); data.data.loginUrlList.sort((a, b) => a.id - b.id);
return data.data.loginUrlList ?? []; return data.data.loginUrlList ?? [];
} }
export async function allServerList(): Promise<object[]> { export async function allServerList(): Promise<object[]> {
const data = await gameGetAllLoginUrl({}); const data = await gameGetAllLoginUrl({});
data.data.loginUrlList.forEach(res => { data.data.loginUrlList.forEach((res) => {
res.name = getServerName(res) res.name = getServerName(res);
}) });
data.data.loginUrlList.sort((a, b) => Number(a.platform * 10000 + a.area) - Number(b.platform * 10000 + b.area)); data.data.loginUrlList.sort((a, b) => a.id - b.id);
return [{ return [
id: '', {
name: '全部服务器' id: '',
}].concat(data.data.loginUrlList ?? []); name: '全部服务器',
},
].concat(data.data.loginUrlList ?? []);
} }
export async function allCcdList(): Promise<object[]> { export async function allCcdList(): Promise<object[]> {
const data = await gameGetAllCcdUrl({}); const data = await gameGetAllCcdUrl({});
console.log("allCcdList: ", data); console.log('allCcdList: ', data);
return data.data.list ?? []; return data.data.list ?? [];
} }

125
src/utils/utils.ts

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

247
src/views/gameLoginUrl/routerList/index.vue

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

4
src/views/gameLoginUrl/serverGeneralList/index.vue

@ -5,7 +5,7 @@
<el-form class="flex-warp" label-position="right"> <el-form class="flex-warp" label-position="right">
<el-form-item> <el-form-item>
<el-button type="success" class="ml10" @click="countList"> <el-button type="success" class="ml10" @click="countList">
加载配置 刷新列表
</el-button> </el-button>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
@ -14,7 +14,7 @@
</el-form> </el-form>
<el-form class="" label-position="right"> <el-form class="" label-position="right">
<el-form-item label="后台充值地址" prop="backstageRechargeUrl"> <el-form-item label="充值统一地址" prop="backstageRechargeUrl">
{{ tableData.data[0].backstageRechargeUrl }} {{ tableData.data[0].backstageRechargeUrl }}
</el-form-item> </el-form-item>
<el-form-item label="gm白名单地址" prop="gmWhiteListUrl"> <el-form-item label="gm白名单地址" prop="gmWhiteListUrl">

13
src/views/gameLoginUrl/serverVersion/index.vue

@ -5,13 +5,10 @@
<el-form :inline="true"> <el-form :inline="true">
<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 label="全部" :value="0"/> <el-option v-for="item in serverCategorize" :key="item.value" :label="item.label" :value="item.value"/>
<el-option label="ios" :value="1"/>
<el-option label="安卓" :value="2"/>
<el-option label="其他" :value="3"/>
</el-select> </el-select>
<el-select v-model="tableData.param.serverId" class="m-2" placeholder="选择服务器" size="large" filterable> <el-select v-model="tableData.param.serverId" class="m-2" placeholder="选择服务器" size="large" filterable>
<el-option v-for="item in switchServer()" :key="item.id+''" :label="item.name" :value="item.id+''"/> <el-option v-for="item in switchServer()" :key="item.id" :label="item.name" :value="item.id"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -39,7 +36,7 @@
<script lang="ts"> <script lang="ts">
import {toRefs, reactive, onMounted, defineComponent,} from 'vue'; import {toRefs, reactive, onMounted, defineComponent,} from 'vue';
import {allServerList, ServerList} from "/@/utils/game"; import {allServerList, ServerCategorize, ServerList} from "/@/utils/game";
import {getServerVersion} from "/@/api/game"; import {getServerVersion} from "/@/api/game";
import {allGSwitchServer} from "/@/utils/utils"; import {allGSwitchServer} from "/@/utils/utils";
@ -61,6 +58,7 @@ interface TableDataState {
} }
}; };
servers: object[] servers: object[]
serverCategorize: object[]
} }
export default defineComponent({ export default defineComponent({
@ -74,7 +72,8 @@ export default defineComponent({
serverId: "" serverId: ""
} }
}, },
servers: ServerList servers: ServerList,
serverCategorize: ServerCategorize
}); });
const onlineList = () => { const onlineList = () => {
state.tableData.TotalNumber = 0; state.tableData.TotalNumber = 0;

9
src/views/gameMail/send/component/editConfig.vue

@ -4,9 +4,7 @@
<el-form label-width="100px" label-position="right"> <el-form label-width="100px" label-position="right">
<el-form-item label="服务器:"> <el-form-item label="服务器:">
<el-select v-model="tableData.param.serverId" multiple class="m-2" disabled size="large"> <el-select v-model="tableData.param.serverId" multiple class="m-2" disabled size="large">
<el-option v-for="item in servers" :key="item.id+''" <el-option v-for="item in servers" :key="item.id+''" :label="item.name" :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="标题:"> <el-form-item label="标题:">
@ -15,9 +13,6 @@
<el-form-item label="发件人署名:"> <el-form-item label="发件人署名:">
{{ tableData.param.from }} {{ tableData.param.from }}
</el-form-item> </el-form-item>
<!-- <el-form-item label="问候语:">-->
<!-- {{tableData.param.greetings}}-->
<!-- </el-form-item>-->
<el-form-item label="内容:"> <el-form-item label="内容:">
{{ tableData.param.content }} {{ tableData.param.content }}
</el-form-item> </el-form-item>
@ -102,7 +97,7 @@ export default defineComponent({
const state = reactive<TableDataState>({ const state = reactive<TableDataState>({
serverSwitch: 0, serverSwitch: 0,
ItemConfig: AllItemConfigCategory, ItemConfig: AllItemConfigCategory,
channel: [{label: "全渠道", value: ""}, {label: "母包渠道-0", value: "0"}], channel: [{label: "全渠道", value: ""}, {label: "母包渠道-0", value: "000000000000"}],
isShowDialog: false, isShowDialog: false,
tableData: { tableData: {
param: { param: {

13
src/views/gameMail/send/index.vue

@ -3,13 +3,10 @@
<el-form size="default" label-width="100px"> <el-form size="default" label-width="100px">
<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 label="全部" :value="0"/> <el-option v-for="item in serverCategorize" :key="item.value" :label="item.label" :value="item.value"/>
<el-option label="ios" :value="1"/>
<el-option label="安卓" :value="2"/>
<el-option label="其他" :value="3"/>
</el-select> </el-select>
<el-select v-model="queryParams.serverId" multiple class="m-2" placeholder="选择服务器" size="large"> <el-select v-model="queryParams.serverId" multiple class="m-2" placeholder="选择服务器" size="large">
<el-option v-for="item in switchServer()" :key="item.id+''" :label="item.name" :value="item.id+''"/> <el-option v-for="item in switchServer()" :key="item.id" :label="item.name" :value="item.id"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- <el-form-item label="附件" prop="type">--> <!-- <el-form-item label="附件" prop="type">-->
@ -260,7 +257,7 @@
import {reactive, toRefs, defineComponent, ref, unref, onMounted} from 'vue'; import {reactive, toRefs, defineComponent, ref, unref, onMounted} from 'vue';
import {gameMailSend, gameGetModel, gameUpdateModel} from '/@/api/game'; import {gameMailSend, gameGetModel, gameUpdateModel} from '/@/api/game';
import EditConfig from '/@/views/gameMail/send/component/editConfig.vue'; import EditConfig from '/@/views/gameMail/send/component/editConfig.vue';
import {serverList} from "/@/utils/game"; import {ServerCategorize, serverList} from "/@/utils/game";
import AllItemConfigCategory from "/@/api/config/AllItemConfigCategory.json"; import AllItemConfigCategory from "/@/api/config/AllItemConfigCategory.json";
import {ElMessage, ElMessageBox} from "element-plus"; import {ElMessage, ElMessageBox} from "element-plus";
import {Session} from "/@/utils/storage"; import {Session} from "/@/utils/storage";
@ -301,6 +298,7 @@ interface TableDataState {
editModelVisible: boolean; editModelVisible: boolean;
sendMail: boolean; sendMail: boolean;
serverSwitch: number; serverSwitch: number;
serverCategorize: object;
} }
export default defineComponent({ export default defineComponent({
@ -341,11 +339,12 @@ export default defineComponent({
dropModels: [], dropModels: [],
contentModels: [], contentModels: [],
sendMail: true, sendMail: true,
serverCategorize: ServerCategorize
}); });
onMounted(() => { onMounted(() => {
serverList().then(value => { serverList().then(value => {
state.servers = value; state.servers = value;
state.queryParams.serverId[0] = "" + value[0].id; state.queryParams.serverId[0] = value[0].id;
// console.log(" server : ", state.servers); // console.log(" server : ", state.servers);
}); });
getMailModel(1); getMailModel(1);

831
src/views/gameManage/copyUnit/index.vue

@ -1,203 +1,197 @@
<template> <template>
<div class="game-order-container"> <div class="game-order-container">
<el-card shadow="hover" header="复制账号"> <el-card shadow="hover" header="复制账号">
<template #header> <template #header>
复制账号 复制账号
<el-button v-show="item.copyShow == false" @click="item.copyShow = true" class="button-caret" <el-button v-show="item.copyShow == false" @click="item.copyShow = true" class="button-caret" type="text">
type="text"> <el-icon>
<el-icon> <ele-CaretBottom />
<ele-CaretBottom/> </el-icon>
</el-icon> </el-button>
</el-button> <el-button v-show="item.copyShow == true" @click="item.copyShow = false" class="button-caret" type="text">
<el-button v-show="item.copyShow == true" @click="item.copyShow = false" class="button-caret" <el-icon>
type="text"> <ele-CaretTop />
<el-icon> </el-icon>
<ele-CaretTop/> </el-button>
</el-icon> </template>
</el-button> <div v-show="item.copyShow">
</template> <div class="game-order-search mb15">
<div v-show="item.copyShow"> <el-form label-position="right" label-width="300px" style="max-width: 520px">
<div class="game-order-search mb15"> <el-form-item label="原账号">
<el-input v-model="tableData.data.SrcName" placeholder="请填写uid" class="w-50 m-2" clearable />
<el-form label-position="right" label-width="300px" style="max-width: 520px"> </el-form-item>
<el-form-item label="原账号"> <!-- <el-form-item label="原账号服务器">-->
<el-input v-model="tableData.data.SrcName" placeholder="请填写uid" class="w-50 m-2" clearable/> <!-- <el-select v-model="tableData.data.SrcServer" class="m-2" placeholder="选择服务器" filterable>-->
</el-form-item> <!-- <el-option v-for="item in servers" :key="item.id" :label="item.name" :value="item.id" />-->
<!-- <el-form-item label="原账号服务器"> <!-- </el-select>-->
<el-select v-model="tableData.data.SrcServer" class="m-2" placeholder="选择服务器" filterable> <!-- </el-form-item>-->
<el-option v-for="item in servers" :key="item.id" :label="item.name" :value="item.id"/> <el-form-item label="原账号服务器" prop="SrcServer">
</el-select> <el-select v-model="serverSwitch" class="m-2" placeholder="选择服务器" size="large" style="width: 80px">
</el-form-item>--> <el-option v-for="item in serverCategorize" :key="item.value" :label="item.label" :value="item.value"/>
<el-form-item>
<el-button size="large" type="primary" class="ml10" @click="copyUnit">
复制
</el-button>
</el-form-item>
<el-form-item>
<el-button size="default" type="primary" @click="onDownload(filename)" v-if="!disabled"
:loading="loading">
<div v-if="loading">正在复制账号</div>
<div v-else>下载账号json数据</div>
</el-button>
</el-form-item>
<el-form-item inlist="true">
<el-button size="default" type="primary" @click="onDownload(storeFilename)" v-if="!disabled"
:loading="loading1">
<div v-if="loading1">正在复制仓库</div>
<div v-else>下载仓库json数据</div>
</el-button>
</el-form-item>
</el-form>
</div>
</div>
</el-card>
<el-card shadow="hover" header="载入账号信息">
<template #header>
上载账号信息
<el-button v-show="item.copyShow == false" @click="item.copyShow = true" class="button-caret"
type="text">
<el-icon>
<ele-CaretBottom/>
</el-icon>
</el-button>
<el-button v-show="item.copyShow == true" @click="item.copyShow = false" class="button-caret"
type="text">
<el-icon>
<ele-CaretTop/>
</el-icon>
</el-button>
</template>
<div v-show="item.copyShow">
<div class="game-order-search mb15">
<el-form label-position="right" label-width="300px" style="max-width: 520px">
<el-upload
class="upload-demo"
:action="baseURL+'api/v1/pub/upload/singleFile'"
:on-preview="handlePreview"
:on-remove="handleRemove"
:on-change="handleChange"
:before-remove="beforeRemove"
multiple
:limit="2"
:on-exceed="handleExceed"
:file-list="fileList">
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">只能上传Json文件</div>
</el-upload>
<el-form-item label="文件名称">
<el-select v-model="tableData.data.filename" class="m-2" placeholder="选择载入文件" filterable>
<el-option v-for="item in tableData.fileNames" :key="item" :label="item" :value="item"/>
</el-select> </el-select>
<!-- <el-input v-model="tableData.data.filename" placeholder="请填写filename" class="w-50 m-2" clearable/>--> <el-select v-model="tableData.data.SrcServer" class="m-2" placeholder="选择服务器" size="large" filterable>
</el-form-item> <el-option v-for="item in switchServer()" :key="item.id" :label="item.name" :value="item.id"/>
<el-form-item label="仓库文件名称">
<el-select v-model="tableData.data.storeFilename" class="m-2" placeholder="选择载入文件" filterable>
<el-option v-for="item in tableData.fileNames" :key="item" :label="item" :value="item"/>
</el-select> </el-select>
<!-- <el-input v-model="tableData.data.filename" placeholder="请填写filename" class="w-50 m-2" clearable/>-->
</el-form-item>
<el-form-item label="目标账号">
<el-input v-model="tableData.data.DestName" placeholder="请填写uid" class="w-50 m-2" clearable/>
</el-form-item> </el-form-item>
<!-- <el-form-item label="目标服务器">--> <el-form-item>
<!-- <el-select v-model="tableData.data.DestServer" class="m-2" placeholder="选择服务器" filterable>--> <el-button size="large" type="primary" class="ml10" @click="copyUnit"> 复制 </el-button>
<!-- <el-option v-for="item in servers" :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" @click="onDownload(filename)" v-if="!disabled" :loading="loading">
<el-form-item> <div v-if="loading">正在复制账号</div>
<el-button size="large" type="primary" class="ml10" @click="updateUnit"> <div v-else>下载账号json数据</div>
更新 </el-button>
</el-button> </el-form-item>
</el-form-item> <el-form-item inlist="true">
</el-form> <el-button size="default" type="primary" @click="onDownload(storeFilename)" v-if="!disabled" :loading="loading1">
</div> <div v-if="loading1">正在复制仓库</div>
</div> <div v-else>下载仓库json数据</div>
</el-card> </el-button>
<el-card shadow="hover" header="删除账号"> </el-form-item>
<template #header> </el-form>
删除账号 </div>
<el-button v-show="item.delShow == false" @click="item.delShow = true" class="button-caret" type="text"> </div>
<el-icon> </el-card>
<ele-CaretBottom/>
</el-icon> <el-card shadow="hover" header="载入账号信息">
</el-button> <template #header>
<el-button v-show="item.delShow == true" @click="item.delShow = false" class="button-caret" type="text"> 上载账号信息
<el-icon> <el-button v-show="item.copyShow == false" @click="item.copyShow = true" class="button-caret" type="text">
<ele-CaretTop/> <el-icon>
</el-icon> <ele-CaretBottom />
</el-button> </el-icon>
</template> </el-button>
<div v-show="item.delShow"> <el-button v-show="item.copyShow == true" @click="item.copyShow = false" class="button-caret" type="text">
<div class="game-order-search mb15"> <el-icon>
<el-form label-position="right" label-width="300px" style="max-width: 520px"> <ele-CaretTop />
<el-form-item label="账号"> </el-icon>
<el-input v-model="tableData.del.SrcName" placeholder="" class="w-50 m-2" clearable/> </el-button>
</el-form-item> </template>
<el-form-item label="账号服务器"> <div v-show="item.copyShow">
<div class="game-order-search mb15">
<el-form label-position="right" label-width="300px" style="max-width: 520px">
<el-upload
class="upload-demo"
:action="baseURL + 'api/v1/pub/upload/singleFile'"
:on-preview="handlePreview"
:on-remove="handleRemove"
:on-change="handleChange"
:before-remove="beforeRemove"
multiple
:limit="2"
:on-exceed="handleExceed"
:file-list="fileList"
>
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">只能上传Json文件</div>
</el-upload>
<el-form-item label="文件名称">
<el-select v-model="tableData.data.filename" class="m-2" placeholder="选择载入文件" filterable>
<el-option v-for="item in tableData.fileNames" :key="item" :label="item" :value="item" />
</el-select>
<!-- <el-input v-model="tableData.data.filename" placeholder="请填写filename" class="w-50 m-2" clearable/>-->
</el-form-item>
<el-form-item label="仓库文件名称">
<el-select v-model="tableData.data.storeFilename" class="m-2" placeholder="选择载入文件" filterable>
<el-option v-for="item in tableData.fileNames" :key="item" :label="item" :value="item" />
</el-select>
<!-- <el-input v-model="tableData.data.filename" placeholder="请填写filename" class="w-50 m-2" clearable/>-->
</el-form-item>
<el-form-item label="目标账号">
<el-input v-model="tableData.data.DestName" placeholder="请填写uid" class="w-50 m-2" clearable />
</el-form-item>
<el-form-item label="目标服务器" prop="DestServer">
<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 label="全部" :value="0"/> <el-option v-for="item in serverCategorize" :key="item.value" :label="item.label" :value="item.value"/>
<el-option label="ios" :value="1"/>
<el-option label="安卓" :value="2"/>
<el-option label="其他" :value="3"/>
</el-select> </el-select>
<el-select v-model="tableData.del.serverId" class="m-2" placeholder="选择服务器" filterable> <el-select v-model="tableData.data.DestServer" class="m-2" placeholder="选择服务器" size="large" filterable>
<el-option v-for="item in switchServer()" :key="item.id" :label="item.name" :value="item.id+''"/> <el-option v-for="item in switchServer()" :key="item.id+''" :label="item.name" :value="item.id"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <!-- <el-form-item label="目标服务器">-->
<el-button type="primary" class="ml10" @click="delAccount"> <!-- <el-select v-model="tableData.data.DestServer" class="m-2" placeholder="选择服务器" filterable>-->
删除账号 <!-- <el-option v-for="item in servers" :key="item.id" :label="item.name" :value="item.id"/>-->
</el-button> <!-- </el-select>-->
</el-form-item> <!-- </el-form-item>-->
</el-form> <el-form-item>
</div> <el-button size="large" type="primary" class="ml10" @click="updateUnit"> 更新 </el-button>
</div> </el-form-item>
</el-card> </el-form>
<el-card shadow="hover"> </div>
<template #header> </div>
修改登录密码 </el-card>
<el-button v-show="item.pwdShow == false" @click="item.pwdShow = true" class="button-caret" type="text"> <el-card shadow="hover" header="删除账号">
<el-icon> <template #header>
<ele-CaretBottom/> 删除账号
</el-icon> <el-button v-show="item.delShow == false" @click="item.delShow = true" class="button-caret" type="text">
</el-button> <el-icon>
<el-button v-show="item.pwdShow == true" @click="item.pwdShow = false" class="button-caret" type="text"> <ele-CaretBottom />
<el-icon> </el-icon>
<ele-CaretTop/> </el-button>
</el-icon> <el-button v-show="item.delShow == true" @click="item.delShow = false" class="button-caret" type="text">
</el-button> <el-icon>
</template> <ele-CaretTop />
<div class="game-order-search mb15" v-show="item.pwdShow"> </el-icon>
<el-form label-position="right" label-width="300px" style="max-width: 520px"> </el-button>
<el-form-item label="account:"> </template>
<el-input v-model="tableData.password.account" placeholder="" class="w-50 m-2" size="large" <div v-show="item.delShow">
clearable/> <div class="game-order-search mb15">
</el-form-item> <el-form label-position="right" label-width="300px" style="max-width: 520px">
<el-form-item label="账号服务器"> <el-form-item label="账号">
<el-select v-model="serverSwitch" class="m-2" placeholder="选择服务器" size="large" style="width: 80px"> <el-input v-model="tableData.del.SrcName" placeholder="" class="w-50 m-2" clearable />
<el-option label="全部" :value="0"/> </el-form-item>
<el-option label="ios" :value="1"/> <el-form-item label="账号服务器">
<el-option label="安卓" :value="2"/> <el-select v-model="serverSwitch" class="m-2" placeholder="选择服务器" size="large" style="width: 80px">
<el-option label="其他" :value="3"/> <el-option v-for="item in serverCategorize" :key="item.value" :label="item.label" :value="item.value" />
</el-select> </el-select>
<el-select v-model="tableData.password.serverId" class="m-2" placeholder="选择服务器" filterable> <el-select v-model="tableData.del.serverId" class="m-2" placeholder="选择服务器" filterable>
<el-option v-for="item in switchServer()" :key="item.id" :label="item.name" :value="item.id+''"/> <el-option v-for="item in switchServer()" :key="item.id" :label="item.name" :value="item.id" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="密码:"> <el-form-item>
<el-input v-model="tableData.password.pwd" placeholder="" class="w-50 m-2" size="large" <el-button type="primary" class="ml10" @click="delAccount"> 删除账号 </el-button>
clearable/> </el-form-item>
</el-form-item> </el-form>
<el-form-item> </div>
<el-button size="large" type="primary" class="ml10" @click="resetPwd"> </div>
修改登录密码 </el-card>
</el-button> <el-card shadow="hover">
</el-form-item> <template #header>
</el-form> 修改登录密码
</div> <el-button v-show="item.pwdShow == false" @click="item.pwdShow = true" class="button-caret" type="text">
</el-card> <el-icon>
<!-- <el-card shadow="hover"> <ele-CaretBottom />
</el-icon>
</el-button>
<el-button v-show="item.pwdShow == true" @click="item.pwdShow = false" class="button-caret" type="text">
<el-icon>
<ele-CaretTop />
</el-icon>
</el-button>
</template>
<div class="game-order-search mb15" v-show="item.pwdShow">
<el-form label-position="right" label-width="300px" style="max-width: 520px">
<el-form-item label="account:">
<el-input v-model="tableData.password.account" placeholder="" class="w-50 m-2" size="large" clearable />
</el-form-item>
<el-form-item label="账号服务器">
<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-select>
<el-select v-model="tableData.password.serverId" class="m-2" placeholder="选择服务器" filterable>
<el-option v-for="item in switchServer()" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="密码:">
<el-input v-model="tableData.password.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="resetPwd"> 修改登录密码 </el-button>
</el-form-item>
</el-form>
</div>
</el-card>
<!-- <el-card shadow="hover">
<template #header> <template #header>
删除资源 删除资源
<el-button v-show="item.resourceShow == false" @click="item.resourceShow = true" class="button-caret" <el-button v-show="item.resourceShow == false" @click="item.resourceShow = true" class="button-caret"
@ -231,250 +225,253 @@
</el-form> </el-form>
</div> </div>
</el-card>--> </el-card>-->
</div> </div>
</template> </template>
<script lang="ts"> <script lang="ts">
import {toRefs, reactive, onMounted, defineComponent, warn,} from 'vue'; import { toRefs, reactive, onMounted, defineComponent, warn } from 'vue';
import { import {
gameGMClearResource, gameGMClearResource,
gameGMCopyUnit, gameGMCopyUnit,
gameGMEditUnit, gameGMUpdateUnit,
gameGMUpdateUnit, gameGMDelAccount,
gameGMDelAccount, gameResetPwd,
gameResetPwd, giftExchangeExists giftExchangeExists,
} from "/@/api/game"; } from '/@/api/game';
import {AllServerList, serverList} from "/@/utils/game"; import { AllServerList, ServerCategorize, serverList } from '/@/utils/game';
import {ElMessage, ElMessageBox} from "element-plus/es"; import { ElMessage, ElMessageBox } from 'element-plus/es';
import {gSwitchServer} from "/@/utils/utils"; import { gSwitchServer } from '/@/utils/utils';
const baseURL: string | undefined | boolean = import.meta.env.VITE_API_URL const baseURL: string | undefined | boolean = import.meta.env.VITE_API_URL;
interface TableData { interface TableData {
filename: string filename: string;
storeFilename: string storeFilename: string;
SrcName: number SrcName: number;
SrcServer: number SrcServer: number;
DestName: string DestName: string;
DestServer: number DestServer: number;
} }
interface DelData { interface DelData {
SrcName: string SrcName: string;
serverId: number serverId: number;
} }
interface TableDataState { interface TableDataState {
item: { copyShow: boolean, delShow: boolean, pwdShow: boolean, resourceShow: boolean } item: { copyShow: boolean; delShow: boolean; pwdShow: boolean; resourceShow: boolean };
tableData: { tableData: {
data: TableData data: TableData;
del: DelData del: DelData;
password: { password: {
account: string account: string;
serverId: number serverId: number;
pwd: string pwd: string;
}; };
resource: { resource: {
account: string, account: string;
serverId: number serverId: number;
} };
fileNames: string[]; fileNames: string[];
}; };
servers: object[]; servers: object[];
disabled: boolean, disabled: boolean;
loading: boolean, loading: boolean;
loading1: boolean, loading1: boolean;
fileList: object[]; fileList: object[];
filename: string; filename: string;
storeFilename: string; storeFilename: string;
serverSwitch: number; serverSwitch: number;
serverCategorize: object;
} }
var timeInterval; var timeInterval;
var timeInterval1; var timeInterval1;
export default defineComponent({ export default defineComponent({
name: 'apiV1GameCopyUnit', name: 'apiV1GameCopyUnit',
setup() { setup() {
// const {proxy} = getCurrentInstance() as any; const state = reactive<TableDataState>({
serverSwitch: 0,
const state = reactive<TableDataState>({ fileList: [],
serverSwitch: 0, baseURL: baseURL,
fileList: [], item: { copyShow: true, delShow: false, pwdShow: false, resourceShow: false },
baseURL: baseURL, tableData: {
item: {copyShow: true, delShow: false, pwdShow: false, resourceShow: false}, data: {
tableData: { SrcName: '',
data: { SrcServer: '',
SrcName: "", SrcServer: "" },
}, del: {
del: { SrcName: '',
SrcName: "", serverId: '',
serverId: "", },
}, password: {
password: { account: '',
account: "", serverId: '',
serverId: "", pwd: '',
pwd: "", },
}, resource: {
resource: { account: '',
account: "", },
}, fileNames: [],
fileNames: [] },
}, servers: AllServerList,
servers: AllServerList, disabled: true,
disabled: true, loading: false,
loading: false, loading1: false,
loading1: false, filename: '',
filename: "", storeFilename: '',
storeFilename: "" serverCategorize: ServerCategorize,
}); });
const handleRemove = (file, fileList) => { const handleRemove = (file, fileList) => {
console.log("handleRemove: ", file, fileList); console.log('handleRemove: ', file, fileList);
}; };
const handlePreview = (file) => { const handlePreview = (file) => {
console.log("handlePreview: ", file); console.log('handlePreview: ', file);
}; };
const handleExceed = (files, fileList) => { const handleExceed = (files, fileList) => {
console.log("handleExceed: ", files, fileList); console.log('handleExceed: ', files, fileList);
warn(`当前限制选择 1 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`); warn(`当前限制选择 1 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
}; };
const handleChange = (files, fileList) => { const handleChange = (files, fileList) => {
console.log("handleChange: ", files, fileList); console.log('handleChange: ', files, fileList);
if (state.tableData.fileNames.indexOf(files.name) >= 0) { if (state.tableData.fileNames.indexOf(files.name) >= 0) {
return; return;
} }
warn(`当前限制选择 1 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`); warn(`当前限制选择 1 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
state.tableData.data.filename = files.name; state.tableData.data.filename = files.name;
state.tableData.fileNames.push(files.name); state.tableData.fileNames.push(files.name);
}; };
const beforeRemove = (file, fileList) => { const beforeRemove = (file, fileList) => {
console.log("beforeRemove: ", file, fileList); console.log('beforeRemove: ', file, fileList);
return confirm(`确定移除 ${file.name}${fileList.length}`,); return confirm(`确定移除 ${file.name}${fileList.length}`);
}; };
const copyUnit = () => { const copyUnit = () => {
console.log("state.tableData.data: ", state.tableData.data); console.log('state.tableData.data: ', state.tableData.data);
// ElMessage.success('使'); // ElMessage.success('使');
// return // return
gameGMCopyUnit({ gameGMCopyUnit({
SrcName: state.tableData.data.SrcName, SrcName: state.tableData.data.SrcName,
SrcServer: state.tableData.data.SrcServer SrcServer: state.tableData.data.SrcServer,
}).then((res) => { }).then((res) => {
ElMessage.success('修改成功'); ElMessage.success('修改成功');
console.log("copy: ", res); console.log('copy: ', res);
state.tableData.data.filename = res.data.filename; state.tableData.data.filename = res.data.filename;
state.tableData.data.storeFilename = res.data.storeFilename; state.tableData.data.storeFilename = res.data.storeFilename;
state.tableData.fileNames.push(res.data.filename); state.tableData.fileNames.push(res.data.filename);
state.tableData.fileNames.push(res.data.storeFilename); state.tableData.fileNames.push(res.data.storeFilename);
if (res.data.filename != "") { if (res.data.filename != '') {
state.filename = res.data.filename; state.filename = res.data.filename;
state.storeFilename = res.data.storeFilename; state.storeFilename = res.data.storeFilename;
state.loading = true state.loading = true;
state.loading1 = true state.loading1 = true;
state.disabled = false state.disabled = false;
console.log("gameRandomGenerateCode: ", res, state.filename, state.storeFilename); console.log('gameRandomGenerateCode: ', res, state.filename, state.storeFilename);
timeInterval = setInterval(function () { timeInterval = setInterval(function () {
checkGiftExchangeExists(); checkGiftExchangeExists();
}, 1000); }, 1000);
timeInterval1 = setInterval(function () { timeInterval1 = setInterval(function () {
checkGiftExchangeExists1(); checkGiftExchangeExists1();
}, 1000); }, 1000);
} }
}).finally(() => { })
}) .finally(() => {});
}; };
const updateUnit = () => {
console.log("state.tableData.data: ", state.tableData.data);
// ElMessage.success('使');
// return
gameGMUpdateUnit({
filename: state.tableData.data.filename,
storeFilename: state.tableData.data.storeFilename,
DestName: state.tableData.data.DestName,
}).then((res) => {
ElMessage.success('修改成功');
console.log("update: ", res);
}).finally(() => {
})
};
const delAccount = () => {
console.log("state.tableData.data: ", state.tableData.del);
ElMessageBox.confirm(`此操作将删除账号:“${state.tableData.del.SrcName}”,是否继续?`, '提示', {
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
}).then(() => {
gameGMDelAccount(state.tableData.del).then(() => {
ElMessage.success('删除成功');
}).finally(() => {
})
})
};
const resetPwd = () => {
gameResetPwd(state.tableData.password).then(() => {
ElMessage.success('修改密码成功!');
}).finally(() => {
})
};
const clearResource = () => {
console.log("state.tableData.resource: ", state.tableData.resource);
gameGMClearResource(state.tableData.resource).then(() => {
ElMessage.success('删除成功');
}).finally(() => {
})
};
onMounted(() => {
// initTableData();
serverList().then(res => {
state.servers = res;
// console.log(" server : ", state.servers);
})
});
const checkGiftExchangeExists = () => {
giftExchangeExists({"file": state.filename}).then(response => {
console.log("checkGiftExchangeExists", state.filename, response);
if (response.data.state == 1) {
clearInterval(timeInterval);
state.loading = false
}
})
};
const checkGiftExchangeExists1 = () => {
giftExchangeExists({"file": state.storeFilename}).then(response => {
console.log("checkGiftExchangeExists1", state.storeFilename, response);
if (response.data.state == 1) {
clearInterval(timeInterval1);
state.loading1 = false
}
})
};
const onDownload = (file: string) => {
if (file) {
window.open(baseURL + 'upload_file?filename=' + file);
}
// state.disabled = true; const updateUnit = () => {
} console.log('state.tableData.data: ', state.tableData.data);
// // ElMessage.success('使');
const switchServer = () => { // return
return gSwitchServer(state.serverSwitch, state.servers) gameGMUpdateUnit({
filename: state.tableData.data.filename,
storeFilename: state.tableData.data.storeFilename,
DestName: state.tableData.data.DestName,
})
.then((res) => {
ElMessage.success('修改成功');
console.log('update: ', res);
})
.finally(() => {});
};
const delAccount = () => {
console.log('state.tableData.data: ', state.tableData.del);
ElMessageBox.confirm(`此操作将删除账号:“${state.tableData.del.SrcName}”,是否继续?`, '提示', {
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
}).then(() => {
gameGMDelAccount(state.tableData.del)
.then(() => {
ElMessage.success('删除成功');
})
.finally(() => {});
});
};
const resetPwd = () => {
gameResetPwd(state.tableData.password)
.then(() => {
ElMessage.success('修改密码成功!');
})
.finally(() => {});
};
const clearResource = () => {
console.log('state.tableData.resource: ', state.tableData.resource);
gameGMClearResource(state.tableData.resource)
.then(() => {
ElMessage.success('删除成功');
})
.finally(() => {});
};
onMounted(() => {
// initTableData();
serverList().then((res) => {
state.servers = res;
// console.log(" server : ", state.servers);
});
});
const checkGiftExchangeExists = () => {
giftExchangeExists({ file: state.filename }).then((response) => {
console.log('checkGiftExchangeExists', state.filename, response);
if (response.data.state == 1) {
clearInterval(timeInterval);
state.loading = false;
}
});
};
const checkGiftExchangeExists1 = () => {
giftExchangeExists({ file: state.storeFilename }).then((response) => {
console.log('checkGiftExchangeExists1', state.storeFilename, response);
if (response.data.state == 1) {
clearInterval(timeInterval1);
state.loading1 = false;
}
});
};
const onDownload = (file: string) => {
if (file) {
window.open(baseURL + 'upload_file?filename=' + file);
}
}; // state.disabled = true;
return { };
switchServer, //
onDownload, const switchServer = () => {
handleRemove, return gSwitchServer(state.serverSwitch, state.servers);
handleChange, };
handlePreview, return {
handleExceed, switchServer,
beforeRemove, onDownload,
resetPwd, handleRemove,
copyUnit, handleChange,
updateUnit, handlePreview,
delAccount, handleExceed,
clearResource, beforeRemove,
...toRefs(state), resetPwd,
}; copyUnit,
}, updateUnit,
delAccount,
clearResource,
...toRefs(state),
};
},
}); });
</script> </script>

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

@ -11,14 +11,11 @@
</el-form-item> </el-form-item>
<el-form-item label="区服" v-if="tableData.data.type==2"> <el-form-item label="区服" v-if="tableData.data.type==2">
<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 label="全部" :value="0"/> <el-option v-for="item in serverCategorize" :key="item.value" :label="item.label" :value="item.value"/>
<el-option label="ios" :value="1"/>
<el-option label="安卓" :value="2"/>
<el-option label="其他" :value="3"/>
</el-select> </el-select>
<el-select v-model="tableData.data.serverId" class="w-50 m-2" placeholder="选择区服" size="large" <el-select v-model="tableData.data.serverId" class="w-50 m-2" placeholder="选择区服" size="large"
filterable> filterable>
<el-option v-for="item in switchServer()" :key="item.id+''" :label="item.name" :value="item.id+''"/> <el-option v-for="item in switchServer()" :key="item.id" :label="item.name" :value="item.id"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="渠道" v-if="tableData.data.type==2"> <el-form-item label="渠道" v-if="tableData.data.type==2">
@ -80,7 +77,7 @@
<script lang="ts"> <script lang="ts">
import {toRefs, reactive, onMounted, defineComponent,} from 'vue'; import {toRefs, reactive, onMounted, defineComponent,} from 'vue';
import {gameChangeGm, gameGmSearch, gameListGm, gameSetclientgm} from "/@/api/game"; import {gameChangeGm, gameGmSearch, gameListGm, gameSetclientgm} from "/@/api/game";
import {channelList, serverList} from "/@/utils/game"; import {channelList, ServerCategorize, serverList} from "/@/utils/game";
import {gSwitchServer} from "/@/utils/utils"; import {gSwitchServer} from "/@/utils/utils";
import {ElMessage} from "element-plus/es"; import {ElMessage} from "element-plus/es";
@ -113,6 +110,7 @@ interface TableDataState {
channels: object; channels: object;
gmStates: object; gmStates: object;
serverSwitch: number; serverSwitch: number;
serverCategorize: object;
} }
export default defineComponent({ export default defineComponent({
@ -155,7 +153,7 @@ export default defineComponent({
label: '黑名单', label: '黑名单',
}, },
], ],
serverCategorize: ServerCategorize,
}); });
const gmSearch = () => { const gmSearch = () => {
let query = {type: state.tableData.data.type, uid: state.tableData.data.uid}; let query = {type: state.tableData.data.type, uid: state.tableData.data.uid};

11
src/views/gameManage/keep/index.vue

@ -17,13 +17,10 @@
</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 label="全部" :value="0"/> <el-option v-for="item in serverCategorize" :key="item.value" :label="item.label" :value="item.value"/>
<el-option label="ios" :value="1"/>
<el-option label="安卓" :value="2"/>
<el-option label="其他" :value="3"/>
</el-select> </el-select>
<el-select v-model="queryParams.server" class="m-2" placeholder="选择服务器" filterable> <el-select v-model="queryParams.server" class="m-2" placeholder="选择服务器" filterable>
<el-option v-for="item in switchServer()" :key="item.id+''" :label="item.name" :value="item.id+''"/> <el-option v-for="item in switchServer()" :key="item.id" :label="item.name" :value="item.id"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="注册日期" prop="createTime"> <el-form-item label="注册日期" prop="createTime">
@ -229,7 +226,7 @@
import {ElMessage} from 'element-plus'; import {ElMessage} from 'element-plus';
import {toRefs, reactive, onMounted, defineComponent,} from 'vue'; import {toRefs, reactive, onMounted, defineComponent,} from 'vue';
import {keepAccount} from "/@/api/game/index"; import {keepAccount} from "/@/api/game/index";
import {allChannelList, allServerList} from "/@/utils/game"; import {allChannelList, allServerList, ServerCategorize} from "/@/utils/game";
import {DATE_LIST_KEEP, DATE_NAMES} from "/@/api/common/consts"; import {DATE_LIST_KEEP, DATE_NAMES} from "/@/api/common/consts";
import {gSwitchServer} from "/@/utils/utils"; import {gSwitchServer} from "/@/utils/utils";
@ -269,6 +266,7 @@ interface TableDataState {
dateNames: object; dateNames: object;
dateList: object; dateList: object;
serverSwitch: number; serverSwitch: number;
serverCategorize: object;
} }
export default defineComponent({ export default defineComponent({
@ -294,6 +292,7 @@ export default defineComponent({
channels: [], channels: [],
dateNames: DATE_NAMES, dateNames: DATE_NAMES,
dateList: DATE_LIST_KEEP, dateList: DATE_LIST_KEEP,
serverCategorize: ServerCategorize,
}); });
const getRemain = () => { const getRemain = () => {

11
src/views/gameManage/live/index.vue

@ -17,13 +17,10 @@
</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 label="全部" :value="0"/> <el-option v-for="item in serverCategorize" :key="item.value" :label="item.label" :value="item.value"/>
<el-option label="ios" :value="1"/>
<el-option label="安卓" :value="2"/>
<el-option label="其他" :value="3"/>
</el-select> </el-select>
<el-select v-model="queryParams.server" class="m-2" placeholder="选择区服" filterable> <el-select v-model="queryParams.server" class="m-2" placeholder="选择区服" filterable>
<el-option v-for="item in switchServer()" :key="item.id+''" :label="item.name" :value="item.id+''"/> <el-option v-for="item in switchServer()" :key="item.id" :label="item.name" :value="item.id"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="起始日期" prop="createTime" v-show="queryParams.modelType==1"> <el-form-item label="起始日期" prop="createTime" v-show="queryParams.modelType==1">
@ -139,7 +136,7 @@
//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, registerCount} from "/@/api/game/index"; import {liveAccount, registerCount} from "/@/api/game/index";
import {allChannelList, allServerList} from "/@/utils/game"; import {allChannelList, allServerList, ServerCategorize} from "/@/utils/game";
import {ElMessage} from "element-plus"; import {ElMessage} from "element-plus";
import {gSwitchServer, getDaysBetween} from "/@/utils/utils"; import {gSwitchServer, getDaysBetween} from "/@/utils/utils";
import {DATE_NAMES1} from "/@/api/common/consts"; import {DATE_NAMES1} from "/@/api/common/consts";
@ -183,6 +180,7 @@ interface TableDataState {
allChannels: object[]; allChannels: object[];
channels: object[]; channels: object[];
dateNames: object; dateNames: object;
serverCategorize: object;
} }
export default defineComponent({ export default defineComponent({
@ -212,6 +210,7 @@ export default defineComponent({
allChannels: [], allChannels: [],
channels: [], channels: [],
dateNames: DATE_NAMES1, dateNames: DATE_NAMES1,
serverCategorize: ServerCategorize,
}); });
const getRemain = () => { const getRemain = () => {

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

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

11
src/views/gameManage/register/index.vue

@ -11,13 +11,10 @@
</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 label="全部" :value="0"/> <el-option v-for="item in serverCategorize" :key="item.value" :label="item.label" :value="item.value"/>
<el-option label="ios" :value="1"/>
<el-option label="安卓" :value="2"/>
<el-option label="其他" :value="3"/>
</el-select> </el-select>
<el-select v-model="tableData.param.server" class="m-2" placeholder="选择区服" filterable> <el-select v-model="tableData.param.server" class="m-2" placeholder="选择区服" filterable>
<el-option v-for="item in switchServer()" :key="item.id+''" :label="item.name" :value="item.id+''"/> <el-option v-for="item in switchServer()" :key="item.id" :label="item.name" :value="item.id"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="起始日期" prop="startTime"> <el-form-item label="起始日期" prop="startTime">
@ -66,7 +63,7 @@
//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 {registerCount} from "/@/api/game/index"; import {registerCount} 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 TableDataState { interface TableDataState {
@ -85,6 +82,7 @@ interface TableDataState {
}; };
servers: object[]; servers: object[];
channels: object[]; channels: object[];
serverCategorize: object[];
} }
export default defineComponent({ export default defineComponent({
@ -107,6 +105,7 @@ export default defineComponent({
}, },
servers: [], servers: [],
channels: [], channels: [],
serverCategorize: ServerCategorize,
}); });
const switchServer = () => { const switchServer = () => {

11
src/views/gameManage/shop/index.vue

@ -11,13 +11,10 @@
</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 label="全部" :value="0"/> <el-option v-for="item in serverCategorize" :key="item.value" :label="item.label" :value="item.value"/>
<el-option label="ios" :value="1"/>
<el-option label="安卓" :value="2"/>
<el-option label="其他" :value="3"/>
</el-select> </el-select>
<el-select v-model="tableData.param.server" class="m-2" placeholder="选择服务器" filterable> <el-select v-model="tableData.param.server" class="m-2" placeholder="选择服务器" filterable>
<el-option v-for="item in switchServer()" :key="item.id+''" :label="item.name" :value="item.id+''"/> <el-option v-for="item in switchServer()" :key="item.id" :label="item.name" :value="item.id"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="注册日期" prop="createTime"> <el-form-item label="注册日期" prop="createTime">
@ -126,7 +123,7 @@
//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 {keepAccount} from "/@/api/game/index"; import {keepAccount} 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";
// //
@ -157,6 +154,7 @@ interface TableDataState {
servers: object[]; servers: object[];
channels: object[]; channels: object[];
dateNames: object; dateNames: object;
serverCategorize: object;
} }
export default defineComponent({ export default defineComponent({
@ -187,6 +185,7 @@ export default defineComponent({
15: "fifteen", 15: "fifteen",
30: "thirty" 30: "thirty"
}, },
serverCategorize: ServerCategorize,
}); });
const getRemain = () => { const getRemain = () => {

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

@ -4,13 +4,10 @@
<el-form label-width="90px"> <el-form label-width="90px">
<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 label="全部" :value="0"/> <el-option v-for="item in serverCategorize" :key="item.value" :label="item.label" :value="item.value"/>
<el-option label="ios" :value="1"/>
<el-option label="安卓" :value="2"/>
<el-option label="其他" :value="3"/>
</el-select> </el-select>
<el-select v-model="tableData.param.serverId" class="m-2" placeholder="选择服务器" size="large" filterable> <el-select v-model="tableData.param.serverId" class="m-2" placeholder="选择服务器" size="large" filterable>
<el-option v-for="item in switchServer()" :key="item.id+''" :label="item.name" :value="item.id+''"/> <el-option v-for="item in switchServer()" :key="item.id" :label="item.name" :value="item.id"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -132,7 +129,7 @@ import {toRefs, reactive, onMounted, defineComponent,} from 'vue';
import {ElMessageBox, ElMessage} from 'element-plus'; import {ElMessageBox, ElMessage} from 'element-plus';
import {gameNoticePop, gameGMNoticeModelGet, gameGMNoticeModelAdd, gameGMNoticeModelDel} from "/@/api/game"; import {gameNoticePop, gameGMNoticeModelGet, gameGMNoticeModelAdd, gameGMNoticeModelDel} from "/@/api/game";
import {contentReplace, gSwitchServer} from "/@/utils/utils"; import {contentReplace, gSwitchServer} from "/@/utils/utils";
import {serverList} from "/@/utils/game"; import {ServerCategorize, serverList} from "/@/utils/game";
interface TableDataState { interface TableDataState {
unselsected: string[] unselsected: string[]
@ -159,6 +156,7 @@ interface TableDataState {
listModelVisible: boolean, listModelVisible: boolean,
contentVisible: boolean, contentVisible: boolean,
serverSwitch: number, serverSwitch: number,
serverCategorize: object[],
} }
export default defineComponent({ export default defineComponent({
@ -189,6 +187,7 @@ export default defineComponent({
servers: [], servers: [],
model: "", model: "",
editModel: {}, editModel: {},
serverCategorize: ServerCategorize,
}); });
const noticePop = () => { const noticePop = () => {
console.log("Notice: ", state.tableData.param); console.log("Notice: ", state.tableData.param);

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

@ -5,13 +5,10 @@
<el-form :inline="true"> <el-form :inline="true">
<el-form-item label="选择区服"> <el-form-item label="选择区服">
<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 label="全部" :value="0"/> <el-option v-for="item in serverCategorize" :key="item.value" :label="item.label" :value="item.value"/>
<el-option label="ios" :value="1"/>
<el-option label="安卓" :value="2"/>
<el-option label="其他" :value="3"/>
</el-select> </el-select>
<el-select v-model="tableData.param.server" placeholder="选择区服"> <el-select v-model="tableData.param.server" placeholder="选择区服">
<el-option v-for="item in switchServer()" :key="item.id+''" :label="item.name" :value="item.id+''"/> <el-option v-for="item in switchServer()" :key="item.id" :label="item.name" :value="item.id"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="充值金额"> <el-form-item label="充值金额">
@ -70,7 +67,7 @@
import {toRefs, reactive, onMounted, defineComponent} from 'vue'; import {toRefs, reactive, onMounted, defineComponent} from 'vue';
//import { ElMessageBox, ElMessage } from 'element-plus'; //import { ElMessageBox, ElMessage } from 'element-plus';
import {gameOrderCount} from "/@/api/game"; import {gameOrderCount} from "/@/api/game";
import {allServerList, AllServerList} from "/@/utils/game"; import {allServerList, AllServerList, ServerCategorize} from "/@/utils/game";
import actionModel from "/@/views/gameMarket/actionModel/index.vue"; import actionModel from "/@/views/gameMarket/actionModel/index.vue";
import {gSwitchServer} from "/@/utils/utils"; import {gSwitchServer} from "/@/utils/utils";
@ -101,6 +98,7 @@ interface TableDataState {
compareType: object compareType: object
}; };
servers: object[]; servers: object[];
serverCategorize: object[];
} }
export default defineComponent({ export default defineComponent({
@ -141,7 +139,8 @@ export default defineComponent({
} }
] ]
}, },
servers: AllServerList servers: AllServerList,
serverCategorize: ServerCategorize
}); });
const countList = () => { const countList = () => {

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

@ -1,6 +1,6 @@
<template> <template>
<div class="game-order-container"> <div class="game-order-container">
<!--<el-card shadow="hover"> <!--<el-card shadow="hover">
<div class=" mb15"> <div class=" mb15">
<el-form label-position="right" label-width="300px" style="max-width: 520px"> <el-form label-position="right" label-width="300px" style="max-width: 520px">
<el-form-item label="选择区服" prop="serverId"> <el-form-item label="选择区服" prop="serverId">
@ -27,162 +27,188 @@
</el-form> </el-form>
</div> </div>
</el-card>--> </el-card>-->
<el-card shadow="hover"> <el-card shadow="hover">
<div class="mb15"> <div class="mb15">
<el-form label-position="right" label-width="300px" style="max-width: 520px"> <el-form label-position="right" label-width="300px" style="max-width: 520px">
<el-form-item label="uid"> <!-- <el-form-item label="选择区服" prop="serverId">-->
<el-input v-model="tableData.paramDeposit.account" placeholder="请输入玩家uid" class="w-50 m-2" clearable/> <!-- <el-select v-model="tableData.paramDeposit.serverId" class="m-2" placeholder="">-->
</el-form-item> <!-- <el-option v-for="item in servers" :key="item.value" :label="item.label" :value="item.value"/>-->
<el-form-item label="充值金额"> <!-- </el-select>-->
<el-select v-model="tableData.paramDeposit.depositId" class="w-50 m-2" placeholder=""> <!-- </el-form-item>-->
<el-option v-for="item in depositIds" v-show="item.Currency==1" :key="item.Id" :label="item.Name"
:value="item.Id"/> <el-form-item label="选择服务器" prop="serverId">
</el-select> <el-select v-model="serverSwitch" class="m-2" placeholder="选择服务器" size="large" style="width: 80px">
</el-form-item> <el-option v-for="item in serverCategorize" :key="item.value" :label="item.label" :value="item.value" />
<el-form-item label="充值次数"> </el-select>
<el-input v-model="tableData.paramDeposit.times" placeholder="请输入充值次数" class="w-50 m-2" clearable/> <el-select v-model="tableData.paramDeposit.serverId" class="m-2" placeholder="选择服务器" size="large" filterable>
</el-form-item> <el-option v-for="item in switchServer()" :key="item.id" :label="item.name" :value="item.id + ''" />
<el-form-item label="是否统计付费" prop="count"> </el-select>
<el-radio v-model="tableData.paramDeposit.count" :label="0">不统计</el-radio> </el-form-item>
<el-radio v-model="tableData.paramDeposit.count" :label="1">统计</el-radio> <!-- <el-form-item label="uid">-->
</el-form-item> <!-- <el-input v-model="tableData.paramDeposit.serverId" placeholder="请输入玩家uid" class="w-50 m-2" clearable/>-->
<el-form-item> <!-- </el-form-item> v -->
<el-button type="primary" class="ml10" @click="deposit"> <el-form-item label="uid">
确认充值 <el-input v-model="tableData.paramDeposit.account" placeholder="请输入玩家uid" class="w-50 m-2" clearable />
</el-button> </el-form-item>
</el-form-item> <el-form-item label="充值金额">
</el-form> <el-select v-model="tableData.paramDeposit.depositId" class="w-50 m-2" placeholder="">
</div> <el-option v-for="item in depositIds" v-show="item.Currency == 1" :key="item.Id" :label="item.Name" :value="item.Id" />
</el-card> </el-select>
</div> </el-form-item>
<el-form-item label="充值次数">
<el-input v-model="tableData.paramDeposit.times" placeholder="请输入充值次数" class="w-50 m-2" clearable />
</el-form-item>
<el-form-item label="是否统计付费" prop="count">
<el-radio v-model="tableData.paramDeposit.count" :label="0">不统计</el-radio>
<el-radio v-model="tableData.paramDeposit.count" :label="1">统计</el-radio>
</el-form-item>
<el-form-item>
<el-button type="primary" class="ml10" @click="deposit"> 确认充值 </el-button>
</el-form-item>
</el-form>
</div>
</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 {gameAddCoin, gameDeposit} from "/@/api/game"; import { gameAddCoin, gameDeposit } from '/@/api/game';
import {Platforms, ChannelList, serverList, channelList} from "/@/utils/game"; import { Platforms, ChannelList, ServerCategorize, serverList } from '/@/utils/game';
import {ElMessage} from "element-plus/es"; import { ElMessage } from 'element-plus/es';
import RechargeConfigCategory from "/@/api/config/RechargeConfigCategory.json" import RechargeConfigCategory from '/@/api/config/RechargeConfigCategory.json';
import {ElMessageBox} from "element-plus"; import { ElMessageBox } from 'element-plus';
import { allGSwitchServer } from '/@/utils/utils';
interface TableDataState { interface TableDataState {
tableData: { tableData: {
param: { param: {
uid: number uid: number;
amount: number amount: number;
amountType: number amountType: number;
serverId: string serverId: string;
}; };
paramDeposit: { paramDeposit: {
account: string account: string;
depositId: number depositId: number;
serverId: number serverId: number;
channel: string channel: string;
amount: number amount: number;
platform: number platform: number;
count: number count: number;
times: number times: number;
} };
};
}; servers: object[];
servers: object[]; amountTypes: object;
amountTypes: object depositIds: object[];
depositIds: object[] platforms: object[];
platforms: object[] channels: object[];
channels: object[] serverSwitch: number;
serverCategorize: object[];
} }
export default defineComponent({ export default defineComponent({
name: 'apiV1GameOrderDeposit', name: 'apiV1GameOrderDeposit',
setup() { setup() {
// const {proxy} = getCurrentInstance() as any; // const {proxy} = getCurrentInstance() as any;
const state = reactive<TableDataState>({ const state = reactive<TableDataState>({
queryParams: { queryParams: {
account: "", account: '',
depositId: 101, depositId: 101,
serverId: 1, serverId: 1,
channel: "000000000000", channel: '000000000000',
platform: 1, platform: 1,
count: 0 count: 0,
}, },
tableData: { tableData: {
param: { param: {
uid: 0, uid: 0,
amount: 0, amount: 0,
amountType: 1, amountType: 1,
serverId: 1 serverId: 1,
}, },
paramDeposit: { paramDeposit: {
account: "", account: '',
depositId: 101, depositId: 101,
serverId: 1, serverId: 1,
channel: "000000000000", channel: '000000000000',
platform: 1, platform: 1,
count: 0, count: 0,
times: 1 times: 1,
} },
}, },
servers: [], servers: [],
amountTypes: [ amountTypes: [
{ {
value: 3, value: 3,
label: '手稿', label: '手稿',
}, },
{ {
value: 1, value: 1,
label: '铜币', label: '铜币',
}, },
], ],
depositIds: RechargeConfigCategory, depositIds: RechargeConfigCategory,
platforms: Platforms, platforms: Platforms,
channels: ChannelList, channels: ChannelList,
}); serverCategorize: ServerCategorize,
const changeGameCoin = () => { serverSwitch: 0,
gameAddCoin(state.tableData.param).then(() => { });
ElMessage.success('赠送金币成功'); const changeGameCoin = () => {
}).finally(() => { gameAddCoin(state.tableData.param)
// state.loading = false; .then(() => {
}) ElMessage.success('赠送金币成功');
} })
const deposit = () => { .finally(() => {
var config = state.depositIds.find(r => r.Id == state.tableData.paramDeposit.depositId); // state.loading = false;
state.tableData.paramDeposit.amount = config.RMB_Num });
ElMessageBox.confirm(`确认给账号${state.tableData.paramDeposit.account},充值${state.tableData.paramDeposit.amount}元?`, '提示', { };
confirmButtonText: '确认', const deposit = () => {
cancelButtonText: '取消', var config = state.depositIds.find((r) => r.Id == state.tableData.paramDeposit.depositId);
type: 'warning', state.tableData.paramDeposit.amount = config.RMB_Num;
}).then(() => { ElMessageBox.confirm(`确认给账号${state.tableData.paramDeposit.account},充值${state.tableData.paramDeposit.amount}元?`, '提示', {
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
for (let i = 0; i < state.tableData.paramDeposit.times; i++) {
setTimeout(() => {
recharge(i);
}, i * 1000);
}
})
.catch(() => {});
};
const recharge = (i: number) => {
gameDeposit(state.tableData.paramDeposit)
.then((res) => {
console.log(res);
if (res) {
ElMessage.success('第' + (i + 1) + '次,充值成功');
}
})
.finally(() => {});
};
for (let i = 0; i < state.tableData.paramDeposit.times; i++) { const switchServer = () => {
setTimeout(() => { return allGSwitchServer(state.serverSwitch, state.servers);
recharge(i); };
}, i*1000) //
} onMounted(() => {
}).catch(() => { serverList().then((res) => {
state.servers = res
state.tableData.paramDeposit.serverId = "" + res[0].id;
}); });
});
} return {
switchServer,
const recharge = (i: number) => { changeGameCoin,
gameDeposit(state.tableData.paramDeposit).then((res) => { deposit,
console.log(res); ...toRefs(state),
if (res) { };
ElMessage.success('第' + (i + 1) + '次,充值成功'); },
}
}).finally(() => {
})
}
//
onMounted(() => {
});
return {
changeGameCoin,
deposit,
...toRefs(state),
};
},
}); });
</script> </script>

9
src/views/gameOrder/orderLog/index.vue

@ -11,10 +11,7 @@
</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 label="全部" :value="0"/> <el-option v-for="item in serverCategorize" :key="item.value" :label="item.label" :value="item.value"/>
<el-option label="ios" :value="1"/>
<el-option label="安卓" :value="2"/>
<el-option label="其他" :value="3"/>
</el-select> </el-select>
<el-select v-model="tableData.param.server" class="m-2" placeholder="选择区服" <el-select v-model="tableData.param.server" class="m-2" placeholder="选择区服"
:disabled="tableData.param.channel===''" filterable> :disabled="tableData.param.channel===''" filterable>
@ -122,7 +119,7 @@
<script lang="ts"> <script lang="ts">
import {toRefs, reactive, onMounted, defineComponent,} from 'vue'; import {toRefs, reactive, onMounted, defineComponent,} from 'vue';
import {orderLog} from "/@/api/game/index"; import {orderLog} from "/@/api/game/index";
import {allChannelList, CompareType, allServerList} from "/@/utils/game"; import {allChannelList, CompareType, allServerList, ServerCategorize} from "/@/utils/game";
import {gSwitchServer} from "/@/utils/utils"; import {gSwitchServer} from "/@/utils/utils";
// //
@ -160,6 +157,7 @@ interface TableDataState {
servers: object; servers: object;
channels: object[]; channels: object[];
dateNames: object; dateNames: object;
serverCategorize: object;
} }
export default defineComponent({ export default defineComponent({
@ -194,6 +192,7 @@ export default defineComponent({
15: "fifteen", 15: "fifteen",
30: "thirty" 30: "thirty"
}, },
serverCategorize: ServerCategorize,
}); });
const getRemain = () => { const getRemain = () => {

9
src/views/gameOrder/shopInfo/index.vue

@ -11,10 +11,7 @@
</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 label="全部" :value="0"/> <el-option v-for="item in serverCategorize" :key="item.value" :label="item.label" :value="item.value"/>
<el-option label="ios" :value="1"/>
<el-option label="安卓" :value="2"/>
<el-option label="其他" :value="3"/>
</el-select> </el-select>
<el-select v-model="queryParams.serverId" class="m-2" placeholder="选择区服" filterable> <el-select v-model="queryParams.serverId" class="m-2" placeholder="选择区服" filterable>
<el-option v-for="item in switchServer()" :key="item.id+''" :label="item.name" :value="item.id+''"/> <el-option v-for="item in switchServer()" :key="item.id+''" :label="item.name" :value="item.id+''"/>
@ -59,7 +56,7 @@
<script lang="ts"> <script lang="ts">
import {toRefs, reactive, onMounted, defineComponent,} from 'vue'; import {toRefs, reactive, onMounted, defineComponent,} from 'vue';
import {gameShopList} from "/@/api/game"; import {gameShopList} from "/@/api/game";
import {allServerList, allChannelList} from "/@/utils/game"; import {allServerList, allChannelList, ServerCategorize} from "/@/utils/game";
import {gSwitchServer} from "/@/utils/utils"; import {gSwitchServer} from "/@/utils/utils";
import CommonShopConfigCategory from "/@/api/config/CommonShopConfigCategory.json"; import CommonShopConfigCategory from "/@/api/config/CommonShopConfigCategory.json";
import RechargeConfigCategory from "/@/api/config/RechargeConfigCategory.json"; import RechargeConfigCategory from "/@/api/config/RechargeConfigCategory.json";
@ -90,6 +87,7 @@ interface TableDataState {
channels: object; channels: object;
itemConfig: object[]; itemConfig: object[];
commonShop: object[]; commonShop: object[];
serverCategorize: object[];
} }
export default defineComponent({ export default defineComponent({
@ -114,6 +112,7 @@ export default defineComponent({
channels: [], channels: [],
rechargeConfig: RechargeConfigCategory, rechargeConfig: RechargeConfigCategory,
commonShop: CommonShopConfigCategory, commonShop: CommonShopConfigCategory,
serverCategorize: ServerCategorize,
}); });
const orderList = () => { const orderList = () => {

11
src/views/gameRole/account/index.vue

@ -5,10 +5,7 @@
<el-form :inline="true"> <el-form :inline="true">
<el-form-item label="服务器"> <el-form-item label="服务器">
<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 label="全部" :value="0"/> <el-option v-for="item in serverCategorize" :key="item.value" :label="item.label" :value="item.value"/>
<el-option label="ios" :value="1"/>
<el-option label="安卓" :value="2"/>
<el-option label="其他" :value="3"/>
</el-select> </el-select>
<el-select v-model="queryParams.serverId" class="m-2" placeholder="选择服务器" filterable> <el-select v-model="queryParams.serverId" class="m-2" placeholder="选择服务器" filterable>
<el-option v-for="item in switchServer()" :key="item.id" :label="item.name" :value="item.id+''"/> <el-option v-for="item in switchServer()" :key="item.id" :label="item.name" :value="item.id+''"/>
@ -61,7 +58,7 @@
import {toRefs, reactive, onMounted, defineComponent} from 'vue'; import {toRefs, reactive, onMounted, defineComponent} from 'vue';
import {gameAccountList} from "/@/api/game"; import {gameAccountList} from "/@/api/game";
import {ElMessage} from "element-plus"; import {ElMessage} from "element-plus";
import {serverList} from "/@/utils/game"; import {ServerCategorize, serverList} from "/@/utils/game";
import {gSwitchServer} from "/@/utils/utils"; import {gSwitchServer} from "/@/utils/utils";
// //
@ -90,6 +87,7 @@ interface TableDataState {
accountType: Array<{ label: string, value: number }> accountType: Array<{ label: string, value: number }>
}; };
servers: object[] servers: object[]
serverCategorize: object[]
} }
export default defineComponent({ export default defineComponent({
@ -109,7 +107,8 @@ export default defineComponent({
total: 0, total: 0,
accountType: [{label: "正常", value: 0}, {label: "黑名单", value: 0}, {label: "GM", value: 0}] accountType: [{label: "正常", value: 0}, {label: "黑名单", value: 0}, {label: "GM", value: 0}]
}, },
servers: [] servers: [],
serverCategorize: ServerCategorize,
}); });
const accountList = () => { const accountList = () => {

11
src/views/gameRole/online/index.vue

@ -5,10 +5,7 @@
<el-form :inline="true"> <el-form :inline="true">
<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 label="全部" :value="0"/> <el-option v-for="item in serverCategorize" :key="item.value" :label="item.label" :value="item.value"/>
<el-option label="ios" :value="1"/>
<el-option label="安卓" :value="2"/>
<el-option label="其他" :value="3"/>
</el-select> </el-select>
<el-select v-model="tableData.param.serverId" class="m-2" placeholder="选择服务器" size="large" filterable> <el-select v-model="tableData.param.serverId" class="m-2" placeholder="选择服务器" size="large" filterable>
<el-option v-for="item in switchServer()" :key="item.id+''" :label="item.name" :value="item.id+''"/> <el-option v-for="item in switchServer()" :key="item.id+''" :label="item.name" :value="item.id+''"/>
@ -82,7 +79,7 @@
import {toRefs, reactive, onMounted, defineComponent,} from 'vue'; import {toRefs, reactive, onMounted, defineComponent,} from 'vue';
//import { ElMessageBox, ElMessage } from 'element-plus'; //import { ElMessageBox, ElMessage } from 'element-plus';
// import EditRole from '/@/views/system/role/component/editRole.vue'; // import EditRole from '/@/views/system/role/component/editRole.vue';
import {allServerList, ServerList} from "/@/utils/game"; import {allServerList, ServerCategorize, ServerList} from "/@/utils/game";
import {gameOnlineList, gameOnlineTopList} from "/@/api/game"; import {gameOnlineList, gameOnlineTopList} from "/@/api/game";
import {gSwitchServer} from "/@/utils/utils"; import {gSwitchServer} from "/@/utils/utils";
@ -107,6 +104,7 @@ interface TableDataState {
total: number; total: number;
}; };
servers: object[] servers: object[]
serverCategorize: object[];
} }
export default defineComponent({ export default defineComponent({
@ -126,7 +124,8 @@ export default defineComponent({
topNumber: 0, topNumber: 0,
total: 0, total: 0,
}, },
servers: ServerList servers: ServerList,
serverCategorize: ServerCategorize
}); });
const onlineList = () => { const onlineList = () => {
// const data: Array<any> = []; // const data: Array<any> = [];

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

File diff suppressed because it is too large Load Diff

9
src/views/gameRole/scale/index.vue

@ -26,10 +26,7 @@
</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 label="全部" :value="0"/> <el-option v-for="item in serverCategorize" :key="item.value" :label="item.label" :value="item.value"/>
<el-option label="ios" :value="1"/>
<el-option label="安卓" :value="2"/>
<el-option label="其他" :value="3"/>
</el-select> </el-select>
<el-select v-model="tableData.param.server" class="m-2" placeholder="选择区服" filterable> <el-select v-model="tableData.param.server" class="m-2" placeholder="选择区服" filterable>
<el-option v-for="item in switchServer()" :key="item.id+''" :label="item.name" :value="item.id+''"/> <el-option v-for="item in switchServer()" :key="item.id+''" :label="item.name" :value="item.id+''"/>
@ -154,7 +151,7 @@
//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";
// //
@ -186,6 +183,7 @@ interface TableDataState {
channels: object[]; channels: object[];
dateNames: object; dateNames: object;
serverSwitch: number; serverSwitch: number;
serverCategorize: object[];
} }
export default defineComponent({ export default defineComponent({
@ -216,6 +214,7 @@ export default defineComponent({
15: "fifteen", 15: "fifteen",
30: "thirty" 30: "thirty"
}, },
serverCategorize: ServerCategorize,
}); });
const getRemain = () => { const getRemain = () => {

11
src/views/gameRole/searchAccount/index.vue

@ -5,10 +5,7 @@
<el-form :inline="true"> <el-form :inline="true">
<el-form-item label="服务器"> <el-form-item label="服务器">
<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 label="全部" :value="0"/> <el-option v-for="item in serverCategorize" :key="item.value" :label="item.label" :value="item.value"/>
<el-option label="ios" :value="1"/>
<el-option label="安卓" :value="2"/>
<el-option label="其他" :value="3"/>
</el-select> </el-select>
<el-select v-model="queryParams.serverId" class="m-2" placeholder="选择服务器" filterable> <el-select v-model="queryParams.serverId" class="m-2" placeholder="选择服务器" filterable>
<el-option v-for="item in switchServer()" :key="item.id" :label="item.name" :value="item.id"/> <el-option v-for="item in switchServer()" :key="item.id" :label="item.name" :value="item.id"/>
@ -80,7 +77,7 @@
import {toRefs, reactive, onMounted, defineComponent} from 'vue'; import {toRefs, reactive, onMounted, defineComponent} from 'vue';
import {gameSearchAccount} from "/@/api/game"; import {gameSearchAccount} from "/@/api/game";
import {ElMessage} from "element-plus"; import {ElMessage} from "element-plus";
import {allServerList} from "/@/utils/game"; import {allServerList, ServerCategorize} from "/@/utils/game";
import {gSwitchServer} from "/@/utils/utils"; import {gSwitchServer} from "/@/utils/utils";
// //
@ -113,6 +110,7 @@ interface TableDataState {
}; };
servers: object[]; servers: object[];
compareType: Array<{ label: string, value: number }> compareType: Array<{ label: string, value: number }>
serverCategorize: object[];
} }
export default defineComponent({ export default defineComponent({
@ -146,7 +144,8 @@ export default defineComponent({
{value: 3, label: '<',}, {value: 3, label: '<',},
{value: 4, label: '>',}, {value: 4, label: '>',},
{value: 5, label: '>=',} {value: 5, label: '>=',}
] ],
serverCategorize: ServerCategorize,
}); });
const accountList = () => { const accountList = () => {

539
src/views/gameRole/statics/index.vue

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