11 changed files with 3736 additions and 574 deletions
@ -1,227 +1,233 @@ |
|||||||
import request from '/@/utils/request'; |
import request from '/@/utils/request'; |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
export function gameGetRank(params: object) { |
export function gameGetRank(params: object) { |
||||||
return request({ |
return request({ |
||||||
url: '/api/v1/game/rank/get', |
url: '/api/v1/game/rank/get', |
||||||
method: 'post', |
method: 'post', |
||||||
params: params, |
params: params, |
||||||
}); |
}); |
||||||
} |
} |
||||||
|
|
||||||
export function gameUpdateRank(params: object) { |
export function gameUpdateRank(params: object) { |
||||||
return request({ |
return request({ |
||||||
url: '/api/v1/game/rank/update', |
url: '/api/v1/game/rank/update', |
||||||
method: 'post', |
method: 'post', |
||||||
params: params, |
params: params, |
||||||
}); |
}); |
||||||
} |
} |
||||||
|
|
||||||
export function gameDelRank(params: object) { |
export function gameDelRank(params: object) { |
||||||
return request({ |
return request({ |
||||||
url: '/api/v1/game/rank/del', |
url: '/api/v1/game/rank/del', |
||||||
method: 'post', |
method: 'post', |
||||||
params: params, |
params: params, |
||||||
}); |
}); |
||||||
} |
} |
||||||
|
|
||||||
export function gameCheckRank(params: object) { |
export function gameCheckRank(params: object) { |
||||||
return request({ |
return request({ |
||||||
url: '/api/v1/game/rank/check', |
url: '/api/v1/game/rank/check', |
||||||
method: 'post', |
method: 'post', |
||||||
params: params, |
params: params, |
||||||
}); |
}); |
||||||
} |
} |
||||||
|
|
||||||
export function gameGetRankAward(params: object) { |
export function gameGetRankAward(params: object) { |
||||||
return request({ |
return request({ |
||||||
url: '/api/v1/game/rankAward/get', |
url: '/api/v1/game/rankAward/get', |
||||||
method: 'post', |
method: 'post', |
||||||
params: params, |
params: params, |
||||||
}); |
}); |
||||||
} |
} |
||||||
|
|
||||||
export function gameUpdateRankAward(params: object) { |
export function gameUpdateRankAward(params: object) { |
||||||
return request({ |
return request({ |
||||||
url: '/api/v1/game/rankAward/update', |
url: '/api/v1/game/rankAward/update', |
||||||
method: 'post', |
method: 'post', |
||||||
params: params, |
params: params, |
||||||
}); |
}); |
||||||
} |
} |
||||||
|
|
||||||
export function gameDelRankAward(params: object) { |
export function gameDelRankAward(params: object) { |
||||||
return request({ |
return request({ |
||||||
url: '/api/v1/game/rankAward/del', |
url: '/api/v1/game/rankAward/del', |
||||||
method: 'post', |
method: 'post', |
||||||
params: params, |
params: params, |
||||||
}); |
}); |
||||||
} |
} |
||||||
|
|
||||||
export function getGameRank(params: object) { |
export function getGameRank(params: object) { |
||||||
return request({ |
return request({ |
||||||
url: '/api/v1/game/rank/getGameRank', |
url: '/api/v1/game/rank/getGameRank', |
||||||
method: 'get', |
method: 'get', |
||||||
params: params, |
params: params, |
||||||
}); |
}); |
||||||
} |
} |
||||||
|
|
||||||
export function deleteGameRank(params: object) { |
export function deleteGameRank(params: object) { |
||||||
return request({ |
return request({ |
||||||
url: '/api/v1/game/rank/deleteGameRank', |
url: '/api/v1/game/rank/deleteGameRank', |
||||||
method: 'get', |
method: 'get', |
||||||
params: params, |
params: params, |
||||||
}); |
}); |
||||||
} |
} |
||||||
|
|
||||||
export function gameGMGetBazaarActivity(params: object) { |
export function gameGMGetBazaarActivity(params: object) { |
||||||
return request({ |
return request({ |
||||||
url: '/api/v1/game/bazaar/get', |
url: '/api/v1/game/bazaar/get', |
||||||
method: 'get', |
method: 'get', |
||||||
params: params, |
params: params, |
||||||
}); |
}); |
||||||
} |
} |
||||||
|
|
||||||
export function gameGMUpdateBazaarActivity(params: object) { |
export function gameGMUpdateBazaarActivity(params: object) { |
||||||
return request({ |
return request({ |
||||||
url: '/api/v1/game/bazaar/update', |
url: '/api/v1/game/bazaar/update', |
||||||
method: 'post', |
method: 'post', |
||||||
params: params, |
params: params, |
||||||
}); |
}); |
||||||
} |
} |
||||||
|
|
||||||
export function gameGMInsertBazaarActivity(params: object) { |
export function gameGMInsertBazaarActivity(params: object) { |
||||||
return request({ |
return request({ |
||||||
url: '/api/v1/game/bazaar/insert', |
url: '/api/v1/game/bazaar/insert', |
||||||
method: 'post', |
method: 'post', |
||||||
params: params, |
params: params, |
||||||
}); |
}); |
||||||
} |
} |
||||||
|
|
||||||
export function gameGMInsertBatchBazaarActivity(params: object) { |
export function gameGMInsertBatchBazaarActivity(params: object) { |
||||||
return request({ |
return request({ |
||||||
url: '/api/v1/game/bazaar/insertBatch', |
url: '/api/v1/game/bazaar/insertBatch', |
||||||
method: 'post', |
method: 'post', |
||||||
params: params, |
params: params, |
||||||
}); |
}); |
||||||
} |
} |
||||||
|
|
||||||
export function gameGMGetMonthlyEvent(params: object) { |
export function gameGMGetMonthlyEvent(params: object) { |
||||||
return request({ |
return request({ |
||||||
url: '/api/v1/game/monthlyLottery/get', |
url: '/api/v1/game/monthlyLottery/get', |
||||||
method: 'get', |
method: 'get', |
||||||
params: params, |
params: params, |
||||||
}); |
}); |
||||||
} |
} |
||||||
|
|
||||||
export function gameGMUpdateMonthlyEvent(params: object) { |
export function gameGMUpdateMonthlyEvent(params: object) { |
||||||
return request({ |
return request({ |
||||||
url: '/api/v1/game/monthlyLottery/update', |
url: '/api/v1/game/monthlyLottery/update', |
||||||
method: 'get', |
method: 'get', |
||||||
params: params, |
params: params, |
||||||
}); |
}); |
||||||
} |
} |
||||||
|
|
||||||
export function gameGMInsertMonthlyEvent(params: object) { |
export function gameGMInsertMonthlyEvent(params: object) { |
||||||
return request({ |
return request({ |
||||||
url: '/api/v1/game/monthlyLottery/insert', |
url: '/api/v1/game/monthlyLottery/insert', |
||||||
method: 'get', |
method: 'get', |
||||||
params: params, |
params: params, |
||||||
}); |
}); |
||||||
} |
} |
||||||
|
|
||||||
export function gameGMGetPropExchange(params: object) { |
export function gameGMGetPropExchange(params: object) { |
||||||
return request({ |
return request({ |
||||||
url: '/api/v1/game/propExchange/get', |
url: '/api/v1/game/propExchange/get', |
||||||
method: 'get', |
method: 'get', |
||||||
params: params, |
params: params, |
||||||
}); |
}); |
||||||
} |
} |
||||||
|
|
||||||
export function gameGMUpdatePropExchange(params: object) { |
export function gameGMUpdatePropExchange(params: object) { |
||||||
return request({ |
return request({ |
||||||
url: '/api/v1/game/propExchange/update', |
url: '/api/v1/game/propExchange/update', |
||||||
method: 'get', |
method: 'get', |
||||||
params: params, |
params: params, |
||||||
}); |
}); |
||||||
} |
} |
||||||
|
|
||||||
export function gameGMInsertPropExchange(params: object) { |
export function gameGMInsertPropExchange(params: object) { |
||||||
return request({ |
return request({ |
||||||
url: '/api/v1/game/propExchange/insert', |
url: '/api/v1/game/propExchange/insert', |
||||||
method: 'get', |
method: 'get', |
||||||
params: params, |
params: params, |
||||||
}); |
}); |
||||||
} |
} |
||||||
|
|
||||||
export function gameGMCheckPropExchange(params: object) { |
export function gameGMCheckPropExchange(params: object) { |
||||||
return request({ |
return request({ |
||||||
url: '/api/v1/game/propExchange/check', |
url: '/api/v1/game/propExchange/check', |
||||||
method: 'get', |
method: 'get', |
||||||
params: params, |
params: params, |
||||||
}); |
}); |
||||||
} |
} |
||||||
|
|
||||||
export function gameGMUpdateModel(params: object) { |
export function gameGMUpdateModel(params: object) { |
||||||
return request({ |
return request({ |
||||||
url: '/api/v1/game/model/update', |
url: '/api/v1/game/model/update', |
||||||
method: 'get', |
method: 'get', |
||||||
params: params, |
params: params, |
||||||
}); |
}); |
||||||
} |
} |
||||||
|
|
||||||
export function gameGMInsertModel(params: object) { |
export function gameGMInsertModel(params: object) { |
||||||
return request({ |
return request({ |
||||||
url: '/api/v1/game/model/insert', |
url: '/api/v1/game/model/insert', |
||||||
method: 'get', |
method: 'get', |
||||||
params: params, |
params: params, |
||||||
}); |
}); |
||||||
} |
} |
||||||
|
|
||||||
export function gameGMGetModel(params: object) { |
export function gameGMGetModel(params: object) { |
||||||
return request({ |
return request({ |
||||||
url: '/api/v1/game/model/get', |
url: '/api/v1/game/model/get', |
||||||
method: 'get', |
method: 'get', |
||||||
params: params, |
params: params, |
||||||
}); |
}); |
||||||
} |
} |
||||||
|
|
||||||
export function gameGMDelModel(params: object) { |
export function gameGMDelModel(params: object) { |
||||||
return request({ |
return request({ |
||||||
url: '/api/v1/game/model/del', |
url: '/api/v1/game/model/del', |
||||||
method: 'get', |
method: 'get', |
||||||
params: params, |
params: params, |
||||||
}); |
}); |
||||||
} |
} |
||||||
|
|
||||||
export function gameGMCheckBattlePassCheck(params: object) { |
export function gameGMCheckBattlePassCheck(params: object) { |
||||||
return request({ |
return request({ |
||||||
url: '/api/v1/game/battlePass/check', |
url: '/api/v1/game/battlePass/check', |
||||||
method: 'get', |
method: 'get', |
||||||
params: params, |
params: params, |
||||||
}); |
}); |
||||||
} |
} |
||||||
|
|
||||||
export function gameGMUpdateBattlePass(params: object) { |
export function gameGMUpdateBattlePass(params: object) { |
||||||
return request({ |
return request({ |
||||||
url: '/api/v1/game/battlePass/update', |
url: '/api/v1/game/battlePass/update', |
||||||
method: 'get', |
method: 'get', |
||||||
params: params, |
params: params, |
||||||
}); |
}); |
||||||
} |
} |
||||||
|
|
||||||
export function gameGMInsertBattlePass(params: object) { |
export function gameGMInsertBattlePass(params: object) { |
||||||
return request({ |
return request({ |
||||||
url: '/api/v1/game/battlePass/insert', |
url: '/api/v1/game/battlePass/insert', |
||||||
method: 'get', |
method: 'get', |
||||||
params: params, |
params: params, |
||||||
}); |
}); |
||||||
} |
} |
||||||
|
|
||||||
export function gameGMGetBattlePass(params: object) { |
export function gameGMGetBattlePass(params: object) { |
||||||
return request({ |
return request({ |
||||||
url: '/api/v1/game/battlePass/get', |
url: '/api/v1/game/battlePass/get', |
||||||
method: 'get', |
method: 'get', |
||||||
params: params, |
params: params, |
||||||
}); |
}); |
||||||
} |
} |
||||||
|
|
||||||
|
export function gameGMCheckPeriodIdBattlePass(params: object) { |
||||||
|
return request({ |
||||||
|
url: '/api/v1/game/battlePass/checkPeriodId', |
||||||
|
method: 'get', |
||||||
|
params: params, |
||||||
|
}); |
||||||
|
} |
||||||
|
@ -0,0 +1,184 @@ |
|||||||
|
<template> |
||||||
|
<div class="game-order-container"> |
||||||
|
<el-card shadow="hover"> |
||||||
|
<div class="game-order-search mb15"> |
||||||
|
<el-form label-position="right" :inline="true"> |
||||||
|
<el-form-item label="起始时间" prop="times"> |
||||||
|
<el-date-picker |
||||||
|
type="datetimerange" |
||||||
|
size="default" |
||||||
|
v-model="tableData.param.times" |
||||||
|
style="width: 400px" |
||||||
|
range-separator="-" |
||||||
|
start-placeholder="开始" |
||||||
|
end-placeholder="结束" |
||||||
|
format="YYYY-MM-DD HH:mm:ss" |
||||||
|
value-format="x" |
||||||
|
/> |
||||||
|
</el-form-item> |
||||||
|
<el-form-item label="商户单号" prop="order"> |
||||||
|
<el-input size="default" v-model="tableData.param.order" placeholder="请输入商户单号" clearable /> |
||||||
|
</el-form-item> |
||||||
|
<el-form-item> |
||||||
|
<el-button size="default" type="primary" class="ml10" @click="orderList"> |
||||||
|
<el-icon> |
||||||
|
<ele-Search /> |
||||||
|
</el-icon> |
||||||
|
查询 |
||||||
|
<div v-if="!!tableData.param.continuationToken">下一页</div> |
||||||
|
</el-button> |
||||||
|
</el-form-item> |
||||||
|
</el-form> |
||||||
|
</div> |
||||||
|
<el-table :data="tableData.data" style="width: 100%" stripe border> |
||||||
|
<el-table-column prop="orderNo" label="商户单号" width="300"></el-table-column> |
||||||
|
<el-table-column prop="productName" label="商品名称" width="180"></el-table-column> |
||||||
|
<el-table-column prop="tradeType" label="交易类型" width="100"> |
||||||
|
<template #default="scope"> |
||||||
|
<div v-if="scope.row.tradeType">支付</div> |
||||||
|
<div v-else>退款</div> |
||||||
|
</template> |
||||||
|
</el-table-column> |
||||||
|
<el-table-column prop="tradeState" label="订单状态" width="100"> |
||||||
|
<template #default="scope"> |
||||||
|
<div v-if="scope.row.tradeState==0">成功</div> |
||||||
|
<div v-else-if="scope.row.tradeState==2">失败</div> |
||||||
|
<div v-else-if="scope.row.tradeState==4">未支付</div> |
||||||
|
<div v-else>{{scope.row.tradeState}}</div> |
||||||
|
</template> |
||||||
|
</el-table-column> |
||||||
|
<el-table-column prop="payMoney" label="支付金额(元)" width="120"></el-table-column> |
||||||
|
<el-table-column prop="couponAmt" label="优惠券金额(元)" width="130"></el-table-column> |
||||||
|
<el-table-column prop="currency" label="币种" width="70"></el-table-column> |
||||||
|
<el-table-column prop="country" label="country" width="100"></el-table-column> |
||||||
|
<el-table-column prop="orderTime" label="下单时间" show-overflow-tooltip width="200"> |
||||||
|
<template #default="scope"> |
||||||
|
{{new Date(scope.row.orderTime).toLocaleString()}} |
||||||
|
</template> |
||||||
|
</el-table-column> |
||||||
|
<el-table-column prop="tradeTime" label="支付时间" show-overflow-tooltip width="200"> |
||||||
|
<template #default="scope"> |
||||||
|
{{new Date(scope.row.tradeTime).toLocaleString()}} |
||||||
|
</template> |
||||||
|
</el-table-column> |
||||||
|
</el-table> |
||||||
|
</el-card> |
||||||
|
</div> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script lang="ts"> |
||||||
|
import { toRefs, reactive, onMounted, defineComponent } from 'vue'; |
||||||
|
import { allChannelList, ServerCategorize, serverList, ServerList } from '/@/utils/game'; |
||||||
|
import RechargeConfigCategory from '/@/api/config/RechargeConfigCategory.json'; |
||||||
|
import { gSwitchServer } from '/@/utils/utils'; |
||||||
|
import { getHuaWeiOrderList } from '/@/api/game/order'; |
||||||
|
import { ElMessage } from 'element-plus/es'; |
||||||
|
|
||||||
|
// 定义接口来定义对象的类型 |
||||||
|
interface TableData { |
||||||
|
id: string; |
||||||
|
CreateTime: string; |
||||||
|
CfgId: number; |
||||||
|
Rmb: number; |
||||||
|
SilverPiece: number; |
||||||
|
Identity: string; |
||||||
|
timeStr: string; |
||||||
|
uid: string; |
||||||
|
RealName: string; |
||||||
|
StringId: string; |
||||||
|
} |
||||||
|
|
||||||
|
interface TableDataState { |
||||||
|
serverSwitch: number; |
||||||
|
serverCategorize: object; |
||||||
|
tableData: { |
||||||
|
data: Array<TableData>; |
||||||
|
total: number; |
||||||
|
param: { |
||||||
|
times: string[]; |
||||||
|
order: string; |
||||||
|
continuationToken: string; |
||||||
|
}; |
||||||
|
order: object; |
||||||
|
}; |
||||||
|
servers: object; |
||||||
|
channels: object; |
||||||
|
rechargeInfo: object[]; |
||||||
|
} |
||||||
|
|
||||||
|
export default defineComponent({ |
||||||
|
name: 'apiV1GameOrderHuaWeiOrder', |
||||||
|
setup() { |
||||||
|
const state = reactive<TableDataState>({ |
||||||
|
serverSwitch: 0, |
||||||
|
serverCategorize: ServerCategorize, |
||||||
|
tableData: { |
||||||
|
data: [], |
||||||
|
total: 0, |
||||||
|
param: { |
||||||
|
times: [], |
||||||
|
order: '', |
||||||
|
continuationToken: '', |
||||||
|
}, |
||||||
|
order: [], |
||||||
|
}, |
||||||
|
servers: ServerList, |
||||||
|
channels: [], |
||||||
|
rechargeInfo: RechargeConfigCategory, |
||||||
|
}); |
||||||
|
|
||||||
|
const orderList = (reset) => { |
||||||
|
if (!reset) { |
||||||
|
state.tableData.total = 0; |
||||||
|
} |
||||||
|
state.tableData.param.startAt = state.tableData.param.times[0]; |
||||||
|
state.tableData.param.endAt = state.tableData.param.times[1]; |
||||||
|
if (!state.tableData.param.endAt || !state.tableData.param.startAt) { |
||||||
|
ElMessage.error('请填写时间!'); |
||||||
|
return; |
||||||
|
} |
||||||
|
if (state.tableData.param.endAt - state.tableData.param.startAt > 48 * 60 * 60 * 1000) { |
||||||
|
ElMessage.error('时间指定在48小时之内!'); |
||||||
|
return; |
||||||
|
} |
||||||
|
getHuaWeiOrderList(state.tableData.param).then((res) => { |
||||||
|
if (!res.data || !res.data.order) { |
||||||
|
return; |
||||||
|
} |
||||||
|
console.log(res); |
||||||
|
state.tableData.param.continuationToken = res.data.order.continuationToken; |
||||||
|
state.tableData.data = res.data.order.orderInfoList || []; |
||||||
|
if (state.tableData.param.order.length > 0) { |
||||||
|
state.tableData.data = state.tableData.data.filter((item) => { |
||||||
|
return item.orderNo == state.tableData.param.order; |
||||||
|
}); |
||||||
|
if (state.tableData.data.length == 0 && !!state.tableData.param.continuationToken && state.tableData.total < 5) { |
||||||
|
orderList(true); |
||||||
|
state.tableData.total++; |
||||||
|
} |
||||||
|
} |
||||||
|
}); |
||||||
|
}; |
||||||
|
|
||||||
|
// 页面加载时 |
||||||
|
onMounted(() => { |
||||||
|
serverList().then((res) => { |
||||||
|
state.servers = res; |
||||||
|
}); |
||||||
|
allChannelList().then((res) => { |
||||||
|
state.channels = res; |
||||||
|
}); |
||||||
|
}); |
||||||
|
|
||||||
|
const switchServer = () => { |
||||||
|
return gSwitchServer(state.serverSwitch, state.servers); |
||||||
|
}; |
||||||
|
|
||||||
|
return { |
||||||
|
switchServer, |
||||||
|
orderList, |
||||||
|
...toRefs(state), |
||||||
|
}; |
||||||
|
}, |
||||||
|
}); |
||||||
|
</script> |
@ -1,272 +1,294 @@ |
|||||||
<template> |
<template> |
||||||
<div class="game-order-container"> |
<div class="game-order-container"> |
||||||
<el-card shadow="hover"> |
<el-card shadow="hover"> |
||||||
<div class="game-order-search mb15"> |
<div class="game-order-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" :value="item.value"/> |
<el-option v-for="item in channels" :key="item.value" :label="item.label" :value="item.value" /> |
||||||
</el-select> |
</el-select> |
||||||
</el-form-item> |
</el-form-item> |
||||||
<!-- <el-form-item label="账号">--> |
<!-- <el-form-item label="账号">--> |
||||||
<!-- <el-input size="default" v-model="tableData.param.account" placeholder="请输入账号" class="w-50 m-2"--> |
<!-- <el-input size="default" v-model="tableData.param.account" placeholder="请输入账号" class="w-50 m-2"--> |
||||||
<!-- clearable/>--> |
<!-- clearable/>--> |
||||||
<!-- </el-form-item>--> |
<!-- </el-form-item>--> |
||||||
<el-form-item label="uid"> |
<el-form-item label="uid" > |
||||||
<el-input size="default" v-model="tableData.param.uid" placeholder="请输入uid" class="w-50 m-2" |
<el-input size="default" v-model="tableData.param.uid" placeholder="请输入uid" class="w-50 m-2" clearable /> |
||||||
clearable/> |
</el-form-item> |
||||||
</el-form-item> |
<!-- <el-form-item label="起始时间" prop="lowTime">--> |
||||||
<!-- <el-form-item label="起始时间" prop="lowTime">--> |
<!-- <el-date-picker type="datetime" size="large" v-model="tableData.param.lowTime" format="YYYY/MM/DD HH:mm:ss"--> |
||||||
<!-- <el-date-picker type="datetime" size="large" v-model="tableData.param.lowTime" format="YYYY/MM/DD HH:mm:ss"--> |
<!-- value-format="x"/>--> |
||||||
<!-- value-format="x"/>--> |
<!-- </el-form-item>--> |
||||||
<!-- </el-form-item>--> |
<!-- <el-form-item label="终止时间" prop="time">--> |
||||||
<!-- <el-form-item label="终止时间" prop="time">--> |
<!-- <el-date-picker type="datetime" v-model="tableData.param.upTime" format="YYYY/MM/DD HH:mm:ss"--> |
||||||
<!-- <el-date-picker type="datetime" v-model="tableData.param.upTime" format="YYYY/MM/DD HH:mm:ss"--> |
<!-- value-format="x"/>--> |
||||||
<!-- value-format="x"/>--> |
<!-- </el-form-item>--> |
||||||
<!-- </el-form-item>--> |
<el-form-item label="订单id" > |
||||||
<el-form-item label="订单id"> |
<el-input size="default" v-model="tableData.param.orderId" placeholder="请输入渠道订单id" class="w-50 m-2" clearable /> |
||||||
<el-input size="default" v-model="tableData.param.orderId" placeholder="请输入渠道订单id" class="w-50 m-2" |
</el-form-item> |
||||||
clearable/> |
<el-form-item label="渠道订单id" > |
||||||
</el-form-item> |
<el-input size="default" v-model="tableData.param.externalOrderId" placeholder="请输入渠道订单id" class="w-50 m-2" clearable /> |
||||||
<el-form-item label="渠道订单id"> |
</el-form-item> |
||||||
<el-input size="default" v-model="tableData.param.externalOrderId" placeholder="请输入渠道订单id" |
<el-form-item label="IOS商户单号" prop="order"> |
||||||
class="w-50 m-2" |
<el-input size="default" v-model="tableData.param.order" placeholder="请输入商户单号" clearable /> |
||||||
clearable/> |
</el-form-item> |
||||||
</el-form-item> |
<el-form-item label="订单状态" > |
||||||
<el-form-item label="订单状态"> |
<el-select v-model="tableData.param.status" class="m-2" placeholder="选择订单状态"> |
||||||
<el-select v-model="tableData.param.status" class="m-2" placeholder="选择订单状态"> |
<el-option label="全部" :value="0" /> |
||||||
<el-option label="全部" :value="0"/> |
<el-option label="等待充值" :value="1" /> |
||||||
<el-option label="等待充值" :value="1"/> |
<el-option label="充值成功" :value="2" /> |
||||||
<el-option label="充值成功" :value="2"/> |
<el-option label="充值失败" :value="100" /> |
||||||
<el-option label="充值失败" :value="100"/> |
<!-- <el-option label="失效订单" :value="3"/>--> |
||||||
<!-- <el-option label="失效订单" :value="3"/>--> |
<el-option label="金额不匹配订单" :value="220110" /> |
||||||
<el-option label="金额不匹配订单" :value="220110"/> |
</el-select> |
||||||
</el-select> |
</el-form-item> |
||||||
</el-form-item> |
<el-form-item> |
||||||
<el-form-item> |
<el-button v-if="!tableData.param.order" size="default" type="primary" class="ml10" @click="orderList"> |
||||||
<el-button size="default" type="primary" class="ml10" @click="orderList"> |
<el-icon> |
||||||
<el-icon> |
<ele-Search /> |
||||||
<ele-Search/> |
</el-icon> |
||||||
</el-icon> |
查询 |
||||||
查询 |
</el-button> |
||||||
</el-button> |
<el-button v-if="tableData.param.order" size="default" type="primary" class="ml10" @click="transactionList"> |
||||||
</el-form-item> |
<el-icon> |
||||||
</el-form> |
<ele-Search /> |
||||||
</div> |
</el-icon> |
||||||
<el-table :data="tableData.data" style="width: 100%" border> |
查询IOS订单 |
||||||
<!-- <el-table-column type="index" label="id" width="60"/>--> |
</el-button> |
||||||
<el-table-column prop="tradeNo" label="订单id" show-overflow-tooltip></el-table-column> |
</el-form-item> |
||||||
<el-table-column prop="externalTradeNo" label="渠道订单id" show-overflow-tooltip></el-table-column> |
<el-form-item> |
||||||
<!-- <el-table-column prop="_id" label="订单id(渠道产生)" show-overflow-tooltip></el-table-column>--> |
<div v-if="tableData.order">渠道订单Id: {{ tableData.order.transactionId }}</div> |
||||||
<el-table-column prop="uid" label="uid" show-overflow-tooltip></el-table-column> |
</el-form-item> |
||||||
<!-- <el-table-column prop="SilverPiece" label="桃花石" show-overflow-tooltip></el-table-column>--> |
</el-form> |
||||||
<el-table-column prop="Rmb" label="金额(元)" show-overflow-tooltip width="120"> |
</div> |
||||||
<template #default="scope"> |
<el-table :data="tableData.data" style="width: 100%" border> |
||||||
<span>{{ (scope.row.Rmb / 100).toFixed(2) }}</span> |
<!-- <el-table-column type="index" label="id" width="60"/>--> |
||||||
</template> |
<el-table-column prop="tradeNo" label="订单id" show-overflow-tooltip></el-table-column> |
||||||
</el-table-column> |
<el-table-column prop="externalTradeNo" label="渠道订单id" show-overflow-tooltip></el-table-column> |
||||||
<el-table-column prop="timeStr" label="充值时间" show-overflow-tooltip width="180"></el-table-column> |
<!-- <el-table-column prop="_id" label="订单id(渠道产生)" show-overflow-tooltip></el-table-column>--> |
||||||
<!-- <el-table-column prop="timeStr" label="充值时间" show-overflow-tooltip></el-table-column>--> |
<el-table-column prop="uid" label="uid" show-overflow-tooltip></el-table-column> |
||||||
<!-- <el-table-column prop="CfgId" label="商品" show-overflow-tooltip>--> |
<!-- <el-table-column prop="SilverPiece" label="桃花石" show-overflow-tooltip></el-table-column>--> |
||||||
<!-- <template #default="scope">--> |
<el-table-column prop="Rmb" label="金额(元)" show-overflow-tooltip width="120"> |
||||||
<!-- <span>{{rechargeInfo.find(r=>r.Id == scope.row.CfgId).Name}}</span>--> |
<template #default="scope"> |
||||||
<!-- </template>--> |
<span>{{ (scope.row.Rmb / 100).toFixed(2) }}</span> |
||||||
<!-- </el-table-column>--> |
</template> |
||||||
<el-table-column prop="status" label="状态" show-overflow-tooltip width="120"> |
</el-table-column> |
||||||
<template #default="scope"> |
<el-table-column prop="timeStr" label="充值时间" show-overflow-tooltip width="180"></el-table-column> |
||||||
<div v-if="scope.row.status==1"> |
<!-- <el-table-column prop="timeStr" label="充值时间" show-overflow-tooltip></el-table-column>--> |
||||||
<div v-if="new Date(scope.row.timeStr).getTime()+900000 <= Date.now() "> |
<!-- <el-table-column prop="CfgId" label="商品" show-overflow-tooltip>--> |
||||||
<el-tooltip :content="scope.row.status+''" placement="top"> |
<!-- <template #default="scope">--> |
||||||
<span style="color: #a8a17b">等待充值</span> |
<!-- <span>{{rechargeInfo.find(r=>r.Id == scope.row.CfgId).Name}}</span>--> |
||||||
</el-tooltip> |
<!-- </template>--> |
||||||
</div> |
<!-- </el-table-column>--> |
||||||
<div v-else> |
<el-table-column prop="status" label="状态" show-overflow-tooltip width="120"> |
||||||
<el-tooltip :content="scope.row.status+''" placement="top"> |
<template #default="scope"> |
||||||
<el-button key="plain" type="text" @click="changeState(scope.row.tradeNo,3)">等待充值</el-button> |
<div v-if="scope.row.status == 1"> |
||||||
</el-tooltip> |
<div v-if="new Date(scope.row.timeStr).getTime() + 900000 <= Date.now()"> |
||||||
</div> |
<el-tooltip :content="scope.row.status + ''" placement="top"> |
||||||
</div> |
<span style="color: #a8a17b">等待充值</span> |
||||||
<div v-else-if="scope.row.status==2"> |
</el-tooltip> |
||||||
<el-tooltip :content="scope.row.status+''" placement="top"><span style="color: #024a08">充值成功</span> |
</div> |
||||||
</el-tooltip> |
<div v-else> |
||||||
</div> |
<el-tooltip :content="scope.row.status + ''" placement="top"> |
||||||
<div v-else-if="scope.row.status==3"> |
<el-button key="plain" type="text" @click="changeState(scope.row.tradeNo, 3)">等待充值</el-button> |
||||||
<el-tooltip :content="scope.row.status+''" placement="top"><span style="color: #a8a17b">失效订单</span> |
</el-tooltip> |
||||||
</el-tooltip> |
</div> |
||||||
</div> |
</div> |
||||||
<div v-else-if="scope.row.status==220110"> |
<div v-else-if="scope.row.status == 2"> |
||||||
<el-tooltip :content="scope.row.status+''" placement="top"> |
<el-tooltip :content="scope.row.status + ''" placement="top"><span style="color: #024a08">充值成功</span> </el-tooltip> |
||||||
<el-button key="plain" type="text" @click="changeState(scope.row.tradeNo,2, '金额不匹配')">金额不匹配 |
</div> |
||||||
</el-button> |
<div v-else-if="scope.row.status == 3"> |
||||||
</el-tooltip> |
<el-tooltip :content="scope.row.status + ''" placement="top"><span style="color: #a8a17b">失效订单</span> </el-tooltip> |
||||||
</div> |
</div> |
||||||
<div v-else> |
<div v-else-if="scope.row.status == 220110"> |
||||||
<el-tooltip :content="scope.row.status+''" placement="top"> |
<el-tooltip :content="scope.row.status + ''" placement="top"> |
||||||
<span style='color: #e60000'>充值失败</span> |
<el-button key="plain" type="text" @click="changeState(scope.row.tradeNo, 2, '金额不匹配')">金额不匹配 </el-button> |
||||||
</el-tooltip> |
</el-tooltip> |
||||||
</div> |
</div> |
||||||
</template> |
<div v-else> |
||||||
</el-table-column> |
<el-tooltip :content="scope.row.status + ''" placement="top"> |
||||||
<el-table-column prop="channel" label="渠道" show-overflow-tooltip width="120"> |
<span style="color: #e60000">充值失败</span> |
||||||
<template #default="scope"> |
</el-tooltip> |
||||||
<span>{{ channels.find(r => r.value == scope.row.channel)?.label }}</span> |
</div> |
||||||
</template> |
</template> |
||||||
</el-table-column> |
</el-table-column> |
||||||
<el-table-column prop="server" label="区服" show-overflow-tooltip width="120"> |
<el-table-column prop="channel" label="渠道" show-overflow-tooltip width="120"> |
||||||
<template #default="scope"> |
<template #default="scope"> |
||||||
<span>{{ servers.find(r => r.id == scope.row.server).name }}</span> |
<span>{{ channels.find((r) => r.value == scope.row.channel)?.label }}</span> |
||||||
</template> |
</template> |
||||||
</el-table-column> |
</el-table-column> |
||||||
</el-table> |
<el-table-column prop="server" label="区服" show-overflow-tooltip width="120"> |
||||||
<el-row justify="space-evenly"> |
<template #default="scope"> |
||||||
<el-pagination :hide-on-single-page="true" v-model:page-size="tableData.param.pageSize" |
<span>{{ servers.find((r) => r.id == scope.row.server).name }}</span> |
||||||
v-model:current-page="tableData.param.pageNum" |
</template> |
||||||
:pager-count="5" @current-change="orderList" layout="total, prev, pager, next" |
</el-table-column> |
||||||
:total="tableData.total"/> |
</el-table> |
||||||
</el-row> |
<el-row justify="space-evenly"> |
||||||
</el-card> |
<el-pagination |
||||||
</div> |
:hide-on-single-page="true" |
||||||
|
v-model:page-size="tableData.param.pageSize" |
||||||
|
v-model:current-page="tableData.param.pageNum" |
||||||
|
:pager-count="5" |
||||||
|
@current-change="orderList" |
||||||
|
layout="total, prev, pager, next" |
||||||
|
:total="tableData.total" |
||||||
|
/> |
||||||
|
</el-row> |
||||||
|
</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 {gameOrderList, gameRechargeChangeStateDelete} from "/@/api/game/order"; |
import {gameOrderList, gameRechargeChangeStateDelete, getTransactionId} from '/@/api/game/order'; |
||||||
import {allChannelList, serverList, ServerList} from "/@/utils/game"; |
import { allChannelList, serverList, ServerList } from '/@/utils/game'; |
||||||
import RechargeConfigCategory from "/@/api/config/RechargeConfigCategory.json"; |
import RechargeConfigCategory from '/@/api/config/RechargeConfigCategory.json'; |
||||||
import {ElMessage, ElMessageBox} from "element-plus/es"; |
import { ElMessage, ElMessageBox } from 'element-plus/es'; |
||||||
|
|
||||||
// 定义接口来定义对象的类型 |
// 定义接口来定义对象的类型 |
||||||
interface TableData { |
interface TableData { |
||||||
id: string |
id: string; |
||||||
CreateTime: string; |
CreateTime: string; |
||||||
CfgId: number; |
CfgId: number; |
||||||
Rmb: number; |
Rmb: number; |
||||||
SilverPiece: number; |
SilverPiece: number; |
||||||
Identity: string; |
Identity: string; |
||||||
timeStr: string; |
timeStr: string; |
||||||
uid: string; |
uid: string; |
||||||
RealName: string; |
RealName: string; |
||||||
StringId: string; |
StringId: string; |
||||||
} |
} |
||||||
|
|
||||||
interface TableDataState { |
interface TableDataState { |
||||||
tableData: { |
tableData: { |
||||||
data: Array<TableData>; |
data: Array<TableData>; |
||||||
total: number; |
total: number; |
||||||
param: { |
param: { |
||||||
uid: number; |
uid: string; |
||||||
channel: string; |
channel: string; |
||||||
orderId: string; |
orderId: string; |
||||||
externalOrderId: string; |
externalOrderId: string; |
||||||
account: string; |
account: string; |
||||||
status: number; |
status: number; |
||||||
lowTime: number; |
lowTime: number; |
||||||
upTime: number; |
upTime: number; |
||||||
pageNum: number; |
pageNum: number; |
||||||
pageSize: number; |
pageSize: number; |
||||||
}; |
order: string; |
||||||
|
}; |
||||||
}; |
order: object; |
||||||
servers: object; |
}; |
||||||
channels: object; |
servers: object; |
||||||
rechargeInfo: object[]; |
channels: object; |
||||||
|
rechargeInfo: object[]; |
||||||
} |
} |
||||||
|
|
||||||
export default defineComponent({ |
export default defineComponent({ |
||||||
name: 'apiV1GameOrderList', |
name: 'apiV1GameOrderList', |
||||||
setup() { |
setup() { |
||||||
// const {proxy} = getCurrentInstance() as any; |
// const {proxy} = getCurrentInstance() as any; |
||||||
|
|
||||||
const state = reactive<TableDataState>({ |
const state = reactive<TableDataState>({ |
||||||
tableData: { |
tableData: { |
||||||
data: [], |
data: [], |
||||||
total: 0, |
total: 0, |
||||||
param: { |
param: { |
||||||
uid: 0, |
uid: "", |
||||||
channel: "", |
channel: '', |
||||||
orderId: "", |
orderId: '', |
||||||
account: "", |
account: '', |
||||||
lowTime: 0, |
lowTime: 0, |
||||||
upTime: 0, |
upTime: 0, |
||||||
pageSize: 10, |
pageSize: 10, |
||||||
pageNum: 1, |
pageNum: 1, |
||||||
}, |
order: '', |
||||||
}, |
}, |
||||||
servers: ServerList, |
order: '', |
||||||
channels: [], |
}, |
||||||
rechargeInfo: RechargeConfigCategory, |
servers: ServerList, |
||||||
}); |
channels: [], |
||||||
|
rechargeInfo: RechargeConfigCategory, |
||||||
|
}); |
||||||
|
|
||||||
const orderList = () => { |
const transactionList = () => { |
||||||
const data: Array<TableData> = []; |
state.tableData.param.order = state.tableData.param.order.substring(0,10) |
||||||
gameOrderList(state.tableData.param).then(res => { |
getTransactionId(state.tableData.param).then((res) => { |
||||||
console.log(res); |
console.log(res); |
||||||
state.tableData.total = Number(res.data.total) || 0; |
state.tableData.order = res.data.order; |
||||||
const list = res.data.list || []; |
if (res.data.order && res.data.order.transactionId) { |
||||||
list.map((item: TableData) => { |
state.tableData.param.externalOrderId = res.data.order.transactionId; |
||||||
data.push({ |
} |
||||||
tradeNo: item.tradeNo, |
|
||||||
externalTradeNo: item.externalTradeNo, |
|
||||||
uid: item.uid, |
|
||||||
StringId: item.stringId, |
|
||||||
timeStr: item.CreateTime, |
|
||||||
CfgId: item.config, |
|
||||||
Rmb: item.amount, |
|
||||||
status: item.status, |
|
||||||
CreateTime: item.CreateTime, |
|
||||||
channel: item.channel, |
|
||||||
server: item.server, |
|
||||||
}); |
|
||||||
}); |
|
||||||
state.tableData.data = data; |
|
||||||
}) |
|
||||||
}; |
|
||||||
// 页面加载时 |
|
||||||
onMounted(() => { |
|
||||||
serverList().then(res => { |
|
||||||
state.servers = res; |
|
||||||
}); |
}); |
||||||
allChannelList().then(res => { |
|
||||||
state.channels = res; |
|
||||||
}); |
|
||||||
}); |
|
||||||
|
|
||||||
const changeState = (order: string, state: number, remark: string) => { |
|
||||||
if (state != 3 && state != 2) { |
|
||||||
return |
|
||||||
} |
|
||||||
if (state == 3) { |
|
||||||
let mess = "是否确认订单失效?,点击确认后本条订单失效。"; |
|
||||||
ElMessageBox.confirm(mess).then(() => { |
|
||||||
gameRechargeChangeStateDelete({order: order, state: state}).then(res => { |
|
||||||
if (res.data.data == 1) { |
|
||||||
ElMessage.success('发送成功'); |
|
||||||
} |
|
||||||
orderList(); |
|
||||||
}) |
|
||||||
}); |
|
||||||
} else if (state == 2) { |
|
||||||
ElMessageBox.prompt('请输入修改成功理由', '提示', { |
|
||||||
confirmButtonText: '确认', |
|
||||||
cancelButtonText: '取消', |
|
||||||
inputErrorMessage: 'Invalid http request', |
|
||||||
}).then(({value}) => { |
|
||||||
gameRechargeChangeStateDelete({order: order, state: state, remark: remark + ", " + value}).then(res => { |
|
||||||
if (res.data.data == 1) { |
|
||||||
ElMessage.success('发送成功'); |
|
||||||
} |
|
||||||
orderList(); |
|
||||||
}) |
|
||||||
}); |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
}; |
}; |
||||||
return { |
const orderList = () => { |
||||||
orderList, |
const data: Array<TableData> = []; |
||||||
changeState, |
gameOrderList(state.tableData.param).then((res) => { |
||||||
...toRefs(state), |
console.log(res); |
||||||
}; |
state.tableData.total = Number(res.data.total) || 0; |
||||||
}, |
const list = res.data.list || []; |
||||||
|
list.map((item: TableData) => { |
||||||
|
data.push({ |
||||||
|
tradeNo: item.tradeNo, |
||||||
|
externalTradeNo: item.externalTradeNo, |
||||||
|
uid: item.uid, |
||||||
|
StringId: item.stringId, |
||||||
|
timeStr: item.CreateTime, |
||||||
|
CfgId: item.config, |
||||||
|
Rmb: item.amount, |
||||||
|
status: item.status, |
||||||
|
CreateTime: item.CreateTime, |
||||||
|
channel: item.channel, |
||||||
|
server: item.server, |
||||||
|
}); |
||||||
|
}); |
||||||
|
state.tableData.data = data; |
||||||
|
}); |
||||||
|
}; |
||||||
|
// 页面加载时 |
||||||
|
onMounted(() => { |
||||||
|
serverList().then((res) => { |
||||||
|
state.servers = res; |
||||||
|
}); |
||||||
|
allChannelList().then((res) => { |
||||||
|
state.channels = res; |
||||||
|
}); |
||||||
|
}); |
||||||
|
|
||||||
|
const changeState = (order: string, state: number, remark: string) => { |
||||||
|
if (state != 3 && state != 2) { |
||||||
|
return; |
||||||
|
} |
||||||
|
if (state == 3) { |
||||||
|
let mess = '是否确认订单失效?,点击确认后本条订单失效。'; |
||||||
|
ElMessageBox.confirm(mess).then(() => { |
||||||
|
gameRechargeChangeStateDelete({ order: order, state: state }).then((res) => { |
||||||
|
if (res.data.data == 1) { |
||||||
|
ElMessage.success('发送成功'); |
||||||
|
} |
||||||
|
orderList(); |
||||||
|
}); |
||||||
|
}); |
||||||
|
} else if (state == 2) { |
||||||
|
ElMessageBox.prompt('请输入修改成功理由', '提示', { |
||||||
|
confirmButtonText: '确认', |
||||||
|
cancelButtonText: '取消', |
||||||
|
inputErrorMessage: 'Invalid http request', |
||||||
|
}).then(({ value }) => { |
||||||
|
gameRechargeChangeStateDelete({ order: order, state: state, remark: remark + ', ' + value }).then((res) => { |
||||||
|
if (res.data.data == 1) { |
||||||
|
ElMessage.success('发送成功'); |
||||||
|
} |
||||||
|
orderList(); |
||||||
|
}); |
||||||
|
}); |
||||||
|
} |
||||||
|
}; |
||||||
|
return { |
||||||
|
transactionList, |
||||||
|
orderList, |
||||||
|
changeState, |
||||||
|
...toRefs(state), |
||||||
|
}; |
||||||
|
}, |
||||||
}); |
}); |
||||||
</script> |
</script> |
||||||
|
@ -0,0 +1,198 @@ |
|||||||
|
<template> |
||||||
|
<div class="system-edit-post-container"> |
||||||
|
<el-form size="default" label-width="80px"> |
||||||
|
<el-card shadow="hover" header="战令历史"> |
||||||
|
<template #header> |
||||||
|
战令历史 |
||||||
|
<el-button v-show="item.show === false" @click="item.show = true" class="button-caret" type="text"> |
||||||
|
<el-icon> |
||||||
|
<ele-CaretBottom /> |
||||||
|
</el-icon> |
||||||
|
</el-button> |
||||||
|
<el-button v-show="item.show === true" @click="item.show = false" class="button-caret" type="text"> |
||||||
|
<el-icon> |
||||||
|
<ele-CaretTop /> |
||||||
|
</el-icon> |
||||||
|
</el-button> |
||||||
|
</template> |
||||||
|
<div v-show="item.show"> |
||||||
|
<div class="flex-warp"> |
||||||
|
<el-form :inline="true"> |
||||||
|
<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="query.serverId" placeholder="选择服务器" @change="getProp" filterable> |
||||||
|
<el-option v-for="item in switchServer()" :key="item.id" :label="item.name" :value="item.id" /> |
||||||
|
</el-select> |
||||||
|
</el-form-item> |
||||||
|
</el-form> |
||||||
|
</div> |
||||||
|
<div class="flex-warp"> |
||||||
|
<el-table ref="tableRef" :data="tableData.list" style="width: 100%" border> |
||||||
|
<el-table-column prop="PeriodId" label="当前期数" width="85"> |
||||||
|
<template #default="scope"> {{ scope.row.PeriodId }}期</template> |
||||||
|
</el-table-column> |
||||||
|
<el-table-column prop="State" label="状态" width="100"> |
||||||
|
<template #default="scope"> |
||||||
|
<div v-if="scope.row.State == 1" style="color: #f81f26">开启</div> |
||||||
|
<div v-else-if="scope.row.State == 2">关闭</div> |
||||||
|
<div v-else-if="scope.row.State == 3" style="color: #66b7cf">未开启</div> |
||||||
|
<div v-else>{{ scope.row.State }}</div> |
||||||
|
</template> |
||||||
|
</el-table-column> |
||||||
|
<el-table-column prop="BeginTime" label="开始时间" width="100" /> |
||||||
|
<el-table-column prop="EndTime" label="结束时间" width="100" /> |
||||||
|
</el-table> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</el-card> |
||||||
|
</el-form> |
||||||
|
</div> |
||||||
|
</template> |
||||||
|
<script lang="ts"> |
||||||
|
import { defineComponent, onMounted, reactive, ref, toRefs } from 'vue'; |
||||||
|
import { gameGMGetBattlePass } from '/@/api/game/gameConfig'; |
||||||
|
import BattlePassConfigCategory from '/@/api/config/BattlePassConfigCategory.json'; |
||||||
|
import { ElLoading } from 'element-plus'; |
||||||
|
import { ServerCategorize, serverList } from '/@/utils/game'; |
||||||
|
import { gSwitchServer, uniquePeriodId } from '/@/utils/utils'; |
||||||
|
|
||||||
|
interface TableDataState { |
||||||
|
query: object; |
||||||
|
tableData: { list: object[] }; |
||||||
|
battlePassConfig: object; |
||||||
|
servers: object; |
||||||
|
serverCategorize: object[]; |
||||||
|
serverSwitch: number; |
||||||
|
} |
||||||
|
|
||||||
|
export default defineComponent({ |
||||||
|
name: 'apiV1ServerBattlePassLog', |
||||||
|
setup: function () { |
||||||
|
const tableRef = ref(); |
||||||
|
const state = reactive<TableDataState>({ |
||||||
|
item: { topShow: true, show: true }, |
||||||
|
query: { |
||||||
|
serverId: '', |
||||||
|
periodId: '', |
||||||
|
}, |
||||||
|
tableData: { list: [] }, |
||||||
|
battlePassConfig: BattlePassConfigCategory, |
||||||
|
servers: [], |
||||||
|
serverCategorize: ServerCategorize, |
||||||
|
serverSwitch: 0, |
||||||
|
}); |
||||||
|
|
||||||
|
onMounted(() => { |
||||||
|
serverList().then((res) => { |
||||||
|
state.servers = res; |
||||||
|
console.log('serverList:', res); |
||||||
|
state.query.serverId = res[0].id; |
||||||
|
getProp(); |
||||||
|
}); |
||||||
|
}); |
||||||
|
const getProp = () => { |
||||||
|
const loading = ElLoading.service({ |
||||||
|
lock: true, |
||||||
|
text: 'Loading', |
||||||
|
background: 'rgba(0, 0, 0, 0.7)', |
||||||
|
}); |
||||||
|
state.tableData.list = []; |
||||||
|
gameGMGetBattlePass({ serverId: state.query.serverId }) |
||||||
|
.then((res) => { |
||||||
|
console.log('gameGMGetBattlePass: ', res); |
||||||
|
if (res.code != 0 || !res.data || !res.data.list) { |
||||||
|
return; |
||||||
|
} |
||||||
|
state.tableData.list = res.data.list; |
||||||
|
let now = new Date().getTime() / 1000; |
||||||
|
console.log('gameGMGetBattlePass: time ', now); |
||||||
|
let BattlePassConfig = unique(); |
||||||
|
console.log('gameGMGetBattlePass: BattlePassConfig ', BattlePassConfig); |
||||||
|
BattlePassConfig.forEach((data) => { |
||||||
|
let item = state.tableData.list.find((r) => r.PeriodId === data.PeriodId); |
||||||
|
if (!item) { |
||||||
|
state.tableData.list.push({ PeriodId: data.PeriodId }); |
||||||
|
return; |
||||||
|
} |
||||||
|
if (item.BeginTime >= now) { |
||||||
|
item.State = 3; |
||||||
|
} |
||||||
|
item.BeginTime = new Date(item.BeginTime * 1000).toLocaleDateString(); |
||||||
|
item.EndTime = new Date(item.EndTime * 1000).toLocaleDateString(); |
||||||
|
}); |
||||||
|
state.tableData.list.sort((a, b) => { |
||||||
|
return a.PeriodId - b.PeriodId; |
||||||
|
}); |
||||||
|
// state.tableData.list.forEach((item) => { |
||||||
|
// if (item.BeginTime >= now) { |
||||||
|
// item.State = 3; |
||||||
|
// } |
||||||
|
// item.BeginTime = new Date(item.BeginTime * 1000).toLocaleDateString(); |
||||||
|
// item.EndTime = new Date(item.EndTime * 1000).toLocaleDateString(); |
||||||
|
// }); |
||||||
|
console.log('gameGMGetBattlePass: state.tableData.data', state.tableData.list); |
||||||
|
}) |
||||||
|
.finally(() => { |
||||||
|
loading.close(); |
||||||
|
}); |
||||||
|
}; |
||||||
|
|
||||||
|
const unique = () => { |
||||||
|
return uniquePeriodId(BattlePassConfigCategory); |
||||||
|
}; |
||||||
|
const switchServer = () => { |
||||||
|
return gSwitchServer(state.serverSwitch, state.servers); |
||||||
|
}; |
||||||
|
return { |
||||||
|
unique, |
||||||
|
switchServer, |
||||||
|
tableRef, |
||||||
|
getProp, |
||||||
|
...toRefs(state), |
||||||
|
}; |
||||||
|
}, |
||||||
|
}); |
||||||
|
</script> |
||||||
|
|
||||||
|
<style scoped lang="scss"> |
||||||
|
.el-table { |
||||||
|
--el-table-border-color: var(--el-border-color-lighter); |
||||||
|
--el-table-border: 2px solid var(--el-table-border-color); |
||||||
|
} |
||||||
|
|
||||||
|
.table-item { |
||||||
|
margin-top: 10px; |
||||||
|
margin-bottom: -10px; |
||||||
|
} |
||||||
|
|
||||||
|
.box-card .el-card__header { |
||||||
|
background-color: #062ce6; |
||||||
|
color: #fff; |
||||||
|
} |
||||||
|
|
||||||
|
::v-deep .el-table--striped .el-table__body tr.el-table__row--striped td { |
||||||
|
background: #f0ffd5; |
||||||
|
} |
||||||
|
|
||||||
|
.warning-row { |
||||||
|
background: #f0ffd5ff; |
||||||
|
} |
||||||
|
|
||||||
|
.white-row { |
||||||
|
background: #ffffff; |
||||||
|
} |
||||||
|
|
||||||
|
::v-deep .warning-row .el-table__body tr { |
||||||
|
background-color: #f0ffd5ff; |
||||||
|
} |
||||||
|
|
||||||
|
::v-deep .warning-row .el-table--enable-row-hover .el-table__body tr:hover > td { |
||||||
|
background-color: inherit; |
||||||
|
} |
||||||
|
|
||||||
|
::v-deep .warning-row .el-table__cell { |
||||||
|
background-color: #f0ffd5ff; |
||||||
|
} |
||||||
|
</style> |
Loading…
Reference in new issue