Browse Source

鸿蒙充值, 邮件修改, 充值双倍重置

master
linquan 2 weeks ago
parent
commit
55ebc5d2b9
  1. 24
      src/api/game/order.ts
  2. 540
      src/views/gameMail/mailList/index.vue
  3. 2
      src/views/gameMail/send/index.vue
  4. 2
      src/views/gameNotice/maintenance/index.vue
  5. 2
      src/views/gameNotice/preview/index.vue
  6. 6
      src/views/gameOrder/deposit/index.vue
  7. 348
      src/views/gameOrder/getHarmonyOrder/index.vue
  8. 58
      src/views/gameResetOrderSign/reset/index.vue
  9. 13
      telephone.html

24
src/api/game/order.ts

@ -146,3 +146,27 @@ export function getHuaWeiOrderList(params: object) {
params: params, params: params,
}); });
} }
export function getHarmonyOrder(params: object) {
return request({
url: '/api/v1/game/order/getHarmonyOrder',
method: 'get',
params: params,
});
}
export function getHarmonyOrderList(params: object) {
return request({
url: '/api/v1/game/order/getHarmonyOrders',
method: 'get',
params: params,
});
}
export function getHarmonyUserOrderList(params: object) {
return request({
url: '/api/v1/game/order/getHarmonyUserOrders',
method: 'get',
params: params,
});
}

540
src/views/gameMail/mailList/index.vue

@ -1,283 +1,301 @@
<template> <template>
<div class="system-role-container"> <div class="system-role-container">
<el-card shadow="hover" header="邮件记录"> <el-card shadow="hover" header="邮件记录">
<div class="system-user-search mb15"> <div class="system-user-search mb15">
<el-form :inline="true"> <el-form :inline="true">
<el-form-item label="邮件标题"> <el-form-item label="邮件标题">
<el-input size="default" v-model="tableData.param.title" placeholder="请输入邮件标题" class="w-50 m-2" <el-input size="default" v-model="tableData.param.title" placeholder="请输入邮件标题" class="w-50 m-2" clearable />
clearable/> </el-form-item>
</el-form-item> <el-form-item>
<el-form-item> <el-button size="default" type="primary" class="ml10" @click="mailList">
<el-button size="default" type="primary" class="ml10" @click="mailList"> <el-icon>
<el-icon> <ele-Search />
<ele-Search/> </el-icon>
</el-icon> 查询
查询 </el-button>
</el-button> </el-form-item>
</el-form>
</el-form-item> </div>
</el-form> <el-table :data="tableData.data" style="width: 100%">
</div> <el-table-column label="编号" width="60">
<el-table :data="tableData.data" style="width: 100%"> <template #default="scope">
<el-table-column label="编号" width="60"> <div class="flex-warp">{{ scope.$index + 1 }}</div>
<template #default="scope"> </template>
<div class="flex-warp">{{ scope.$index + 1 }}</div> </el-table-column>
</template> <el-table-column prop="c_date" label="发生日期" show-overflow-tooltip width="155"></el-table-column>
</el-table-column> <el-table-column prop="sendTime" label="生效时间" show-overflow-tooltip width="155"></el-table-column>
<el-table-column prop="c_date" label="发生日期" show-overflow-tooltip width="155"></el-table-column> <el-table-column prop="serverId" label="服务器" show-overflow-tooltip>
<el-table-column prop="sendTime" label="生效时间" show-overflow-tooltip width="155"></el-table-column> <template #default="scope">
<el-table-column prop="serverId" label="服务器" show-overflow-tooltip> <div v-for="item in scope.row.serverId" class="flex-warp" :key="item">
<template #default="scope"> {{ item }}-{{ servers.find((i) => i.id == item) ? servers.find((i) => i.id == item).name : item }}
<div v-for="item in scope.row.serverId" class="flex-warp" :key="item"> </div>
{{ item }}-{{ servers.find(i => i.id == item) ? servers.find(i => i.id == item).name : item }} </template>
</div> </el-table-column>
</template> <el-table-column prop="errData" label="服务器发送结果" show-overflow-tooltip></el-table-column>
</el-table-column> <el-table-column prop="userName" label="操作账号" show-overflow-tooltip></el-table-column>
<el-table-column prop="errData" label="服务器发送结果" show-overflow-tooltip></el-table-column> <el-table-column prop="title" label="标题" show-overflow-tooltip></el-table-column>
<el-table-column prop="userName" label="操作账号" show-overflow-tooltip></el-table-column> <el-table-column prop="content" label="正文" show-overflow-tooltip></el-table-column>
<el-table-column prop="title" label="标题" show-overflow-tooltip></el-table-column> <el-table-column prop="ownerId" label="收件人" show-overflow-tooltip>
<el-table-column prop="content" label="正文" show-overflow-tooltip></el-table-column> <template #default="scope">
<el-table-column prop="ownerId" label="收件人" show-overflow-tooltip> <div v-if="!scope.row.ownerId">全服</div>
<template #default="scope"> <div v-else>{{ scope.row.ownerId }}</div>
<div v-if="!scope.row.ownerId">全服</div> </template>
<div v-else>{{ scope.row.ownerId }}</div> </el-table-column>
</template> <el-table-column prop="validDay" label="过期时间" show-overflow-tooltip>
</el-table-column> <template #default="scope">
<el-table-column prop="validDay" label="过期时间" show-overflow-tooltip> <div v-if="scope.row.expired === 1">{{ showTime(scope.row) }}</div>
<template #default="scope"> <div v-else>无限制</div>
<div v-if="scope.row.expired===1">{{ showTime(scope.row) }}</div> </template>
<div v-else>无限制</div> </el-table-column>
</template> <el-table-column prop="from" label="新号是否可领取" show-overflow-tooltip>
</el-table-column> <template #default="scope">
<el-table-column prop="from" label="新号是否可领取" show-overflow-tooltip> <div v-if="scope.row.newGet === 1">不可领取</div>
<template #default="scope"> <div v-else-if="scope.row.newGet === 2">可以领取</div>
<div v-if="scope.row.newGet===1">不可领取</div> </template>
<div v-else-if="scope.row.newGet===2">可以领取</div> </el-table-column>
</template> <el-table-column prop="drops" label="附件" show-overflow-tooltip width="100">
</el-table-column> <template #default="scope">
<el-table-column prop="drops" label="附件" show-overflow-tooltip width="100"> <span type="text" v-for="item in scope.row.drops" :key="item.id">
<template #default="scope"> {{ ItemConfig.find((i) => i.Id == item.id).DetailsPageName }}--{{ item.num }};
<span type="text" v-for="item in scope.row.drops" :key="item.id"> </span>
{{ ItemConfig.find(i => i.Id == item.id).DetailsPageName }}--{{ item.num }}; </template>
</span> </el-table-column>
</template> <!-- <el-table-column prop="to" label="收件人署名" show-overflow-tooltip></el-table-column>-->
</el-table-column> <!-- <el-table-column prop="type" label="邮件类型" show-overflow-tooltip></el-table-column>-->
<!-- <el-table-column prop="to" label="收件人署名" show-overflow-tooltip></el-table-column>--> <!-- <el-table-column prop="from" label="发件人" show-overflow-tooltip></el-table-column>-->
<!-- <el-table-column prop="type" label="邮件类型" show-overflow-tooltip></el-table-column>--> <el-table-column label="操作" width="200">
<!-- <el-table-column prop="from" label="发件人" show-overflow-tooltip></el-table-column>--> <template #default="scope">
<el-table-column label="操作" width="200"> <el-button
<template #default="scope"> size="small"
<el-button size="small" type="text" @click="onEndSend(scope.row)" type="text"
:disabled="!(scope.row.send===2||scope.row.send===1||scope.row.send===4)">取消发送 @click="onEndSend(scope.row)"
</el-button> :disabled="!(scope.row.send === 2 || scope.row.send === 1 || scope.row.send === 4)"
<el-button size="small" type="text" @click="onRowDel(scope.row)" >取消发送
:disabled="!(scope.row.send===2||scope.row.send===1||scope.row.send===4)">删除 </el-button>
</el-button> <el-button
<el-button size="small" type="text" @click="onOpenEdit(scope.row)" size="small"
:disabled="!(scope.row.send===2||scope.row.send===1||scope.row.send===4)">修改有效期 type="text"
</el-button> @click="onRowDel(scope.row)"
</template> :disabled="!(scope.row.send === 2 || scope.row.send === 1 || scope.row.send === 4)"
</el-table-column> >删除
<el-table-column prop="send" label="状态" show-overflow-tooltip> </el-button>
<template #default="scope"> <el-button
<div v-if="scope.row.send===2">待发送</div> size="small"
<div v-else-if="scope.row.send===4">待发送</div> type="text"
<div v-else-if="scope.row.send===1">待发送</div> @click="onOpenEdit(scope.row)"
<div v-else-if="scope.row.send===3">已发送</div> :disabled="!(scope.row.send === 2 || scope.row.send === 1 || scope.row.send === 4)"
<div v-else-if="scope.row.send===5">失效</div> >修改有效期
<div v-else>无法操作</div> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> <el-table-column prop="send" label="状态" show-overflow-tooltip>
<el-row justify="space-evenly"> <template #default="scope">
<el-pagination :hide-on-single-page="true" v-model:page-size="tableData.param.pageSize" <div v-if="scope.row.send === 2">待发送</div>
v-model:current-page="tableData.param.pageNum" :pager-count="5" :total="tableData.total" <div v-else-if="scope.row.send === 4">待发送</div>
@current-change="onHandleCurrentChange" layout="total, prev, pager, next"/> <div v-else-if="scope.row.send === 1">待发送</div>
</el-row> <div v-else-if="scope.row.send === 3">已发送</div>
</el-card> <div v-else-if="scope.row.send === 5">失效</div>
<EditRole ref="editRoleRef" @getMailList="mailList"/> <div v-else>无法操作</div>
</div> </template>
</el-table-column>
</el-table>
<el-row justify="space-evenly">
<el-pagination
:hide-on-single-page="true"
v-model:page-size="tableData.param.pageSize"
v-model:current-page="tableData.param.pageNum"
:pager-count="5"
:total="tableData.total"
@current-change="onHandleCurrentChange"
layout="total, prev, pager, next"
/>
</el-row>
</el-card>
<EditRole ref="editRoleRef" @getMailList="mailList" />
</div>
</template> </template>
<script lang="ts"> <script lang="ts">
import {toRefs, reactive, onMounted, defineComponent,} from 'vue'; import { toRefs, reactive, onMounted, defineComponent } from 'vue';
import EditRole from '/@/views/system/role/component/editRole.vue'; import EditRole from '/@/views/system/role/component/editRole.vue';
import AllItemConfigCategory from "/@/api/config/AllItemConfigCategory.json"; import AllItemConfigCategory from '/@/api/config/AllItemConfigCategory.json';
import {serverList} from "/@/utils/game"; import { serverList } from '/@/utils/game';
import {deleteMail, gameMailList, updateMail} from "/@/api/game/mail"; import { deleteMail, gameMailList, updateMail } from '/@/api/game/mail';
import {ElMessage, ElMessageBox} from 'element-plus'; import { ElMessage, ElMessageBox } from 'element-plus';
// //
interface TableData { interface TableData {
id: string; id: string;
c_date: string; c_date: string;
to: string; to: string;
from: string; from: string;
// gmName: string; // gmName: string;
type: string type: string;
expired: number expired: number;
expiredTime: string expiredTime: string;
sendTime: string sendTime: string;
newGet: string newGet: string;
// repeatedCollection: string // repeatedCollection: string
title: string title: string;
content: string content: string;
drops: string drops: string;
ownerId: string ownerId: string;
errData: string errData: string;
validDay: number validDay: number;
serverId: string[] serverId: string[];
send: number send: number;
userName: string userName: string;
} }
interface TableDataState { interface TableDataState {
page: number; page: number;
ItemConfig: object; ItemConfig: object;
tableData: { tableData: {
data: Array<TableData>; data: Array<TableData>;
total: number; total: number;
loading: boolean; loading: boolean;
param: { param: {
// uid: string; // uid: string;
title: string; title: string;
// serverId: string // serverId: string
// lowTime: number; // lowTime: number;
// upTime: number; // upTime: number;
pageNum: number; pageNum: number;
pageSize: number; pageSize: number;
}; };
}; };
servers: object[] servers: object[];
} }
export default defineComponent({ export default defineComponent({
name: 'apiV1SystemRoleList', name: 'apiV1SystemRoleList',
components: {EditRole}, components: { EditRole },
setup() { setup() {
const state = reactive<TableDataState>({ const state = reactive<TableDataState>({
page: 1, page: 1,
ItemConfig: AllItemConfigCategory, ItemConfig: AllItemConfigCategory,
tableData: { tableData: {
data: [], data: [],
total: 0, total: 0,
loading: false, loading: false,
param: { param: {
uid: '', uid: '',
serverId: "", serverId: '',
lowTime: 0, lowTime: 0,
upTime: 0, upTime: 0,
pageSize: 10, pageSize: 10,
pageNum: 1, pageNum: 1,
}, },
}, },
servers: [] servers: [],
}); });
function getMailType(t: string) { function getMailType(t: string) {
if (t === "1") { if (t === '1') {
return "活动" return '活动';
} else if (t === "2") { } else if (t === '2') {
return "奖励" return '奖励';
} else if (t === "3") { } else if (t === '3') {
return "公告" return '公告';
} }
return "" return '';
} }
const mailList = () => { const mailList = () => {
const data: Array<TableData> = []; const data: Array<TableData> = [];
gameMailList(state.tableData.param).then(res => { gameMailList(state.tableData.param).then((res) => {
console.log(res); console.log(res);
if (res.data) { if (res.data) {
const list = res.data.mails ?? []; const list = res.data.mails ?? [];
list.map((item: TableData) => { list.map((item: TableData) => {
data.push({ data.push({
id: item.id, id: item._id,
c_date: new Date(item.c_date).toLocaleString(), c_date: new Date(item.c_date).toLocaleString(),
to: item.to, to: item.to,
ownerId: item.ownerId, ownerId: item.ownerId,
from: item.from, from: item.from,
// gmName: item.gmName, // gmName: item.gmName,
type: getMailType(item.type), type: getMailType(item.type),
expired: item.expired, expired: item.expired,
expiredTime: item.expired < 2 ? item.expired + "" : new Date(item.expired).toLocaleString(), expiredTime: item.expired < 2 ? item.expired + '' : new Date(item.expired).toLocaleString(),
sendTime: new Date(item.sendTime).toLocaleString(), sendTime: new Date(item.sendTime).toLocaleString(),
newGet: item.newGet, newGet: item.newGet,
// repeatedCollection: item.repeatedCollection, // repeatedCollection: item.repeatedCollection,
title: item.title, title: item.title,
send: item.send, send: item.send,
content: item.content, content: item.content,
drops: item.drops, drops: item.drops,
validDay: item.validDay, validDay: item.validDay,
serverId: item.serverId, serverId: item.serverId,
errData: item.errData, errData: item.errData,
userName: item.userName, userName: item.userName,
}); });
}); });
state.tableData.data = data; state.tableData.data = data;
state.tableData.total = Number(res.data.total) || 0; state.tableData.total = Number(res.data.total) || 0;
} }
}) });
}; };
// //
const onHandleCurrentChange = () => { const onHandleCurrentChange = () => {
console.log(`current page: ${state.tableData.param.pageNum}`); console.log(`current page: ${state.tableData.param.pageNum}`);
// state.tableData.param.pageNum -= 1; // state.tableData.param.pageNum -= 1;
mailList(); mailList();
}; };
const showTime = (row: any) => { const showTime = (row: any) => {
let date = new Date(row.sendTime); let date = new Date(row.sendTime);
return new Date(date.setDate(date.getDate() + row.validDay)).toLocaleString(); return new Date(date.setDate(date.getDate() + row.validDay)).toLocaleString();
}; };
const onRowDel = (row: any) => { const onRowDel = (row: any) => {
ElMessageBox.confirm(`此操作将永久删除邮件:“${row.title}”,是否继续?`, '提示', { ElMessageBox.confirm(`此操作将永久删除邮件:“${row.title}”,是否继续?`, '提示', {
confirmButtonText: '确认', confirmButtonText: '确认',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning', type: 'warning',
}).then(() => { })
deleteMail({mailId: row.id}).then(() => { .then(() => {
ElMessage.success('删除邮件成功'); deleteMail({ mailId: row.id }).then(() => {
// proxy.$refs['editRoleRef'].resetMenuSession(); ElMessage.success('删除邮件成功');
mailList(); // proxy.$refs['editRoleRef'].resetMenuSession();
}) mailList();
}).catch(() => { });
}); })
}; .catch(() => {});
};
const onEndSend = (row: any) => { const onEndSend = (row: any) => {
ElMessageBox.confirm(`此操作将取消发送邮件:“${row.title}”,是否继续?`, '提示', { ElMessageBox.confirm(`此操作将取消发送邮件:“${row.title}”,是否继续?`, '提示', {
confirmButtonText: '确认', confirmButtonText: '确认',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning', type: 'warning',
}).then(() => { })
updateMail({mailId: row.id}).then(() => { .then(() => {
ElMessage.success('取消发送邮件成功'); updateMail({ mailId: row.id }).then(() => {
// proxy.$refs['editRoleRef'].resetMenuSession(); ElMessage.success('取消发送邮件成功');
mailList(); // proxy.$refs['editRoleRef'].resetMenuSession();
}) mailList();
}).catch(() => { });
}); })
}; .catch(() => {});
// };
onMounted(() => { //
serverList().then(value => { onMounted(() => {
state.servers = value; serverList().then((value) => {
// console.log(" server : ", state.servers); state.servers = value;
}); // console.log(" server : ", state.servers);
mailList(); });
}); mailList();
return { });
onHandleCurrentChange, return {
onRowDel, onHandleCurrentChange,
onEndSend, onRowDel,
mailList, onEndSend,
showTime, mailList,
...toRefs(state), showTime,
}; ...toRefs(state),
}, };
},
}); });
</script> </script>

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

@ -393,7 +393,7 @@ export default defineComponent({
from: state.queryParams.from, from: state.queryParams.from,
type: state.queryParams.type, type: state.queryParams.type,
send: state.queryParams.send, send: state.queryParams.send,
sendTime: new Date().getTime(), sendTime: state.queryParams.sendTime,
validDay: state.queryParams.validDay, validDay: state.queryParams.validDay,
expired: state.queryParams.expired, expired: state.queryParams.expired,
newGet: state.queryParams.newGet, newGet: state.queryParams.newGet,

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

@ -1,6 +1,6 @@
<template> <template>
<div class="game-maintenance-container"> <div class="game-maintenance-container">
<el-card shadow="hover"> <el-card shadow="hover" header="维护公告">
<div class=""> <div class="">
<el-form label-position="right" label-width="90px"> <el-form label-position="right" label-width="90px">
<el-form-item label="渠道" prop="channel"> <el-form-item label="渠道" prop="channel">

2
src/views/gameNotice/preview/index.vue

@ -1,6 +1,6 @@
<template> <template>
<div class="game-maintenance-container"> <div class="game-maintenance-container">
<el-card shadow="hover" header="登录公告"> <el-card shadow="hover" header="预览公告">
<div class="game-order-search mb15"> <div class="game-order-search mb15">
<el-form label-width="70px" label-position="right"> <el-form label-width="70px" label-position="right">
<el-form-item label="渠道" prop="channel"> <el-form-item label="渠道" prop="channel">

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

@ -51,9 +51,9 @@
<el-form-item label="充值次数"> <el-form-item label="充值次数">
<el-input v-model="tableData.paramDeposit.times" placeholder="请输入充值次数" class="w-50 m-2" clearable /> <el-input v-model="tableData.paramDeposit.times" placeholder="请输入充值次数" class="w-50 m-2" clearable />
</el-form-item> </el-form-item>
<el-form-item label="是否统计付费" prop="count"> <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="0"></el-radio>
<el-radio v-model="tableData.paramDeposit.count" :label="1">统计</el-radio> <el-radio v-model="tableData.paramDeposit.count" :label="1"></el-radio>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" class="ml10" @click="deposit"> 确认充值</el-button> <el-button type="primary" class="ml10" @click="deposit"> 确认充值</el-button>

348
src/views/gameOrder/getHarmonyOrder/index.vue

@ -0,0 +1,348 @@
<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="订单状态">
<el-select v-model="tableData.param.type" class="m-2" placeholder="选择订单查询方式">
<el-option label="按玩家查询订单" :value="0" />
<el-option label="按时间查询订单" :value="1" />
</el-select>
</el-form-item>
<el-form-item label="商户单号" prop="purchaseOrderId" v-show="tableData.param.type === 0">
<el-input size="default" v-model="tableData.param.purchaseOrderId" placeholder="请输入商户单号" clearable />
</el-form-item>
<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="productType" v-show="tableData.param.type === 0">
<el-select v-model="tableData.param.productType" class="m-2" placeholder="选择商品类型">
<el-option label="消耗型商品" :value="0" />
</el-select>
</el-form-item>
<el-form-item label="商品列表" prop="productIdList" v-show="tableData.param.type === 0">
<el-select v-model="tableData.param.productIdList" class="m-2" placeholder="选择商品类型" multiple collapse-tags clearable>
<el-option v-for="item in rechargeInfo" :key="item.Id" :label="item.Name" :value="item.Id" />
</el-select>
</el-form-item>
<el-form-item v-show="tableData.param.type === 1">
<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-item v-show="tableData.param.type === 0">
<el-button size="default" type="primary" class="ml10" @click="getOrder">
<el-icon>
<ele-Search />
</el-icon>
查询订单
</el-button>
</el-form-item>
<el-form-item v-show="tableData.param.type === 0">
<el-button size="default" type="primary" class="ml10" @click="orderUserList">
<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 v-show="tableData.param.type==0">
<el-table-column prop="purchaseOrderId" label="商户单号" width="300"></el-table-column>
<el-table-column prop="environment" label="环境类型" width="180">
<template #default="scope">
<div v-if="scope.row.environment == 'NORMAL'">生产环境</div>
<div v-if="scope.row.environment == 'SANDBOX'">沙盒环境</div>
</template>
</el-table-column>
<el-table-column prop="productId" label="商品id" width="180"></el-table-column>
<el-table-column prop="purchaseToken" label="token" width="180"></el-table-column>
<el-table-column prop="productType" label="商品类型" width="100">
<template #default="scope">
<div v-if="scope.row.productType == 0">消耗型</div>
<div v-if="scope.row.productType == 1">非消耗型</div>
<div v-if="scope.row.productType == 2">自动续期订阅</div>
<div v-if="scope.row.productType == 3">非续期订阅</div>
</template>
</el-table-column>
<el-table-column prop="finishStatus" label="发货状态" width="100">
<template #default="scope">
<div v-if="scope.row.finishStatus == 1">已发货</div>
<div v-else-if="scope.row.finishStatus == 2">未发货</div>
<div v-else>{{ scope.row.finishStatus }}</div>
</template>
</el-table-column>
<el-table-column prop="price" label="支付金额(元)" width="120"></el-table-column>
<el-table-column prop="currency" label="币种" width="70"></el-table-column>
<el-table-column prop="developerPayload" label="商户侧保留信息" width="100"></el-table-column>
<el-table-column prop="purchaseTime" label="下单时间" show-overflow-tooltip width="200">
<template #default="scope">
{{ new Date(scope.row.purchaseTime).toLocaleString() }}
</template>
</el-table-column>
<el-table-column prop="revocationTime" label="购买订单撤销时间" show-overflow-tooltip width="200">
<template #default="scope">
{{ new Date(scope.row.revocationTime).toLocaleString() }}
</template>
</el-table-column>
<el-table-column prop="signedTime" label="签名时间" show-overflow-tooltip width="200">
<template #default="scope">
{{ new Date(scope.row.signedTime).toLocaleString() }}
</template>
</el-table-column>
</el-table>
<el-table :data="tableData.data" style="width: 100%" stripe border v-show="tableData.param.type==1">
<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="productId" label="商品Id" width="100"></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 { getHarmonyOrder, getHarmonyOrderList, getHarmonyUserOrderList } from '/@/api/game/order';
import { ElMessage } from 'element-plus/es';
import { ElLoading } from 'element-plus';
//
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[];
purchaseOrderId: string;
continuationToken: string;
productType: string;
productIdList: string[];
type: number;
};
order: object;
};
servers: object;
channels: object;
rechargeInfo: object[];
}
export default defineComponent({
name: 'apiV1GameOrderHarmonyOrder',
setup() {
const state = reactive<TableDataState>({
serverSwitch: 0,
serverCategorize: ServerCategorize,
tableData: {
data: [],
total: 0,
param: {
times: [],
continuationToken: '',
purchaseOrderId: '',
productType: '',
productIdList: [],
type: 0,
},
order: [],
},
servers: ServerList,
channels: [],
rechargeInfo: RechargeConfigCategory,
});
const getOrder = (reset) => {
const loading = ElLoading.service({
lock: true,
text: 'Loading',
background: 'rgba(0, 0, 0, 0.7)',
});
if (state.tableData.param.purchaseOrderId == '') {
ElMessage.error('订单号未填写!');
loading.close();
return;
}
if (!reset) {
state.tableData.total = 0;
}
state.tableData.data = [];
getHarmonyOrder(state.tableData.param)
.then((res) => {
console.log(res);
if (!res.data || !res.data.orderStatus) {
return;
}
state.tableData.data.push(res.data.purchaseOrderInfo);
})
.finally(() => {
loading.close();
});
};
const orderUserList = (reset) => {
const loading = ElLoading.service({
lock: true,
text: 'Loading',
background: 'rgba(0, 0, 0, 0.7)',
});
if (state.tableData.param.purchaseOrderId == '') {
ElMessage.error('订单号未填写!');
loading.close();
return;
}
if (!reset) {
state.tableData.total = 0;
}
state.tableData.param.startTime = state.tableData.param.times[0];
state.tableData.param.endTime = state.tableData.param.times[1];
if (!state.tableData.param.endTime || !state.tableData.param.startTime) {
ElMessage.error('请填写时间!');
loading.close();
return;
}
if (state.tableData.param.endTime - state.tableData.param.startTime > 365 * 24 * 60 * 60 * 1000) {
ElMessage.error('时间指定在365天之内!');
loading.close();
return;
}
getHarmonyUserOrderList(state.tableData.param)
.then((res) => {
console.log(res);
if (!res.data || !res.data) {
return;
}
state.tableData.param.continuationToken = res.data.continuationToken;
state.tableData.data = res.data.orderInfoList || [];
if (
state.tableData.data.length == 0 &&
!!state.tableData.param.continuationToken &&
state.tableData.param.purchaseOrderId.length > 0 &&
state.tableData.total < 5
) {
orderUserList(true);
state.tableData.total++;
}
})
.finally(() => {
loading.close();
});
};
const orderList = (reset) => {
if (!reset) {
state.tableData.total = 0;
}
state.tableData.param.startTime = state.tableData.param.times[0];
state.tableData.param.endTime = state.tableData.param.times[1];
if (!state.tableData.param.endTime || !state.tableData.param.startTime) {
ElMessage.error('请填写时间!');
return;
}
if (state.tableData.param.endTime - state.tableData.param.startTime > 48 * 60 * 60 * 1000) {
ElMessage.error('时间指定在48小时之内!');
return;
}
getHarmonyOrderList(state.tableData.param).then((res) => {
console.log(res);
if (!res.data || !res.data.order) {
return;
}
state.tableData.param.continuationToken = res.data.order.continuationToken;
state.tableData.data = res.data.order.orderInfoList || [];
if (state.tableData.param.purchaseOrderId.length > 0) {
state.tableData.data = state.tableData.data.filter((item) => {
return item.requestId == state.tableData.param.purchaseOrderId;
});
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,
getOrder,
orderList,
orderUserList,
...toRefs(state),
};
},
});
</script>

58
src/views/gameResetOrderSign/reset/index.vue

@ -1,7 +1,17 @@
<template> <template>
<div class="system-edit-post-container"> <div class="system-edit-post-container">
<el-form ref="formRef" size="default" label-width="80px"> <el-form ref="formRef" size="default" label-width="100px">
<el-card shadow="hover" header=""> <el-card shadow="hover" header="">
<el-form-item label="选择服务器" prop="serverId">
<div>
<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="querys.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-select>
</div>
</el-form-item>
<el-form-item> <el-form-item>
<el-button size="default" type="primary" class="ml10" @click="onReset"> <el-button size="default" type="primary" class="ml10" @click="onReset">
<el-icon> <el-icon>
@ -15,14 +25,22 @@
</div> </div>
</template> </template>
<script lang="ts"> <script lang="ts">
import { defineComponent, reactive, ref, toRefs } from 'vue'; import { defineComponent, onMounted, reactive, ref, toRefs } from 'vue';
import { resetOrderSign } from '/@/api/game/order'; import { resetOrderSign } from '/@/api/game/order';
import { ElLoading, ElMessage, ElMessageBox } from 'element-plus'; import { ElLoading, ElMessage, ElMessageBox } from 'element-plus';
import { allServerList, ServerCategorize } from '/@/utils/game';
import { allGSwitchServer } from '/@/utils/utils';
interface TableDataState { interface TableDataState {
querys: { querys: {
password: string; password: string;
serverId: number;
channel: string;
}; };
servers: object[];
channels: object[];
serverSwitch: number;
serverCategorize: object[];
} }
export default defineComponent({ export default defineComponent({
@ -31,7 +49,10 @@ export default defineComponent({
const formRef = ref<HTMLElement | null>(null); const formRef = ref<HTMLElement | null>(null);
const menuRef = ref(); const menuRef = ref();
const state = reactive<TableDataState>({ const state = reactive<TableDataState>({
querys: { password: '' }, querys: { password: '', serverId: '' },
servers: [],
serverCategorize: ServerCategorize,
serverSwitch: 0,
}); });
const onReset = () => { const onReset = () => {
const loading = ElLoading.service({ const loading = ElLoading.service({
@ -39,17 +60,26 @@ export default defineComponent({
text: 'Loading', text: 'Loading',
background: 'rgba(0, 0, 0, 0.7)', background: 'rgba(0, 0, 0, 0.7)',
}); });
ElMessageBox.prompt(`此操作将删除:玩家充值档位记录。 继续,请输入账号密码`, '提示', { let server = state.servers.find((r) => r.id == state.querys.serverId);
let title = ``;
if (server != null && server.name != null && server.name != '') {
let area = `${server.id}`;
if (server.id == '') {
area = '';
}
title = `此操作将删除[${area}${server.name}]玩家充值档位记录。 继续,请输入"确认"`;
}
ElMessageBox.prompt(title, '提示', {
confirmButtonText: '确认', confirmButtonText: '确认',
cancelButtonText: '取消', cancelButtonText: '取消',
inputErrorMessage: 'Invalid password', inputErrorMessage: 'Invalid world',
}) })
.then(({ value }) => { .then(({ value }) => {
if (!value) { if (value != '确认') {
ElMessage.error('请输入密码'); ElMessage.error('请正确输入');
return; return;
} }
state.querys.password = value; // state.querys.password = value;
resetOrderSign(state.querys) resetOrderSign(state.querys)
.then(() => { .then(() => {
ElMessage.success('删除成功'); ElMessage.success('删除成功');
@ -62,10 +92,22 @@ export default defineComponent({
loading.close(); loading.close();
}); });
}; };
const switchServer = () => {
return allGSwitchServer(state.serverSwitch, state.servers);
};
//
onMounted(() => {
allServerList().then((res) => {
state.servers = res;
// state.querys.serverId = '' + res[0].id;
});
});
return { return {
onReset, onReset,
menuRef, menuRef,
formRef, formRef,
switchServer,
...toRefs(state), ...toRefs(state),
}; };
}, },

13
telephone.html

@ -0,0 +1,13 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div class="tel">
<!-- <img src="./img/tel.png" />-->
<a href="tel:13950405063">联系客服</a>
</div>
</body>
</html>
Loading…
Cancel
Save