37 changed files with 974 additions and 735 deletions
@ -1,186 +1,194 @@ |
|||||||
<template> |
<template> |
||||||
<div class="system-role-container"> |
<div class="system-role-container"> |
||||||
<el-card shadow="hover" header="客户端bug记录"> |
<el-card shadow="hover" header="客户端bug记录"> |
||||||
<div class="system-user-search mb15"> |
<div class="system-user-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.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="log开头"> |
||||||
<el-form-item label="log开头"> |
<el-input size="default" v-model="tableData.param.log" placeholder="请输入log开头" class="w-50 m-2" clearable /> |
||||||
<el-input size="default" v-model="tableData.param.log" placeholder="请输入log开头" class="w-50 m-2" |
</el-form-item> |
||||||
clearable/> |
<el-form-item label="stack开头"> |
||||||
</el-form-item> |
<el-input size="default" v-model="tableData.param.stack" placeholder="请输入stack开头" class="w-50 m-2" clearable /> |
||||||
<el-form-item label="stack开头"> |
</el-form-item> |
||||||
<el-input size="default" v-model="tableData.param.stack" placeholder="请输入stack开头" class="w-50 m-2" |
<el-form-item label="时间"> |
||||||
clearable/> |
<el-date-picker |
||||||
</el-form-item> |
style="width: 400px" |
||||||
<el-form-item label="时间"> |
size="large" |
||||||
<el-date-picker style="width: 400px" size="large" range-separator="-" type="datetimerange" v-model="tableData.param.times" |
range-separator="-" |
||||||
start-placeholder="开始" end-placeholder="结束" format="YYYY/MM/DD HH:mm:ss" value-format="x"/> |
type="datetimerange" |
||||||
<!-- <el-date-picker type="datetimerange" size="large" v-model="tableData.param.lowTime" format="YYYY/MM/DD HH:mm:ss" value-format="x" />--> |
v-model="tableData.param.times" |
||||||
</el-form-item> |
start-placeholder="开始" |
||||||
<!-- <el-form-item label="结束时间">--> |
end-placeholder="结束" |
||||||
<!-- <el-date-picker type="datetime" size="large" v-model="tableData.param.upTime" format="YYYY/MM/DD HH:mm:ss" value-format="x" />--> |
format="YYYY/MM/DD HH:mm:ss" |
||||||
<!-- </el-form-item>--> |
value-format="x" |
||||||
<el-form-item> |
/> |
||||||
<el-button size="default" type="primary" class="ml10" @click="mailList"> |
<!-- <el-date-picker type="datetimerange" size="large" v-model="tableData.param.lowTime" format="YYYY/MM/DD HH:mm:ss" value-format="x" />--> |
||||||
<el-icon> |
</el-form-item> |
||||||
<ele-Search/> |
<!-- <el-form-item label="结束时间">--> |
||||||
</el-icon> |
<!-- <el-date-picker type="datetime" size="large" v-model="tableData.param.upTime" format="YYYY/MM/DD HH:mm:ss" value-format="x" />--> |
||||||
查询 |
<!-- </el-form-item>--> |
||||||
</el-button> |
<el-form-item> |
||||||
</el-form-item> |
<el-button size="default" type="primary" class="ml10" @click="mailList"> |
||||||
</el-form> |
<el-icon> |
||||||
</div> |
<ele-Search /> |
||||||
<el-table :data="tableData.data" style="width: 100%"> |
</el-icon> |
||||||
<el-table-column prop="uid" label="用户uid" width="100"/> |
查询 |
||||||
<el-table-column prop="logType" label="日志类型" show-overflow-tooltip width="100"/> |
</el-button> |
||||||
<el-table-column prop="operationSystem" label="操作系统" show-overflow-tooltip width="155"/> |
</el-form-item> |
||||||
<el-table-column prop="systemMemorySize" label="系统内存大小" show-overflow-tooltip width="155"/> |
</el-form> |
||||||
<el-table-column prop="bug" label="log详情" show-overflow-tooltip > |
</div> |
||||||
<template #default="scope"> |
<el-table :data="tableData.data" style="width: 100%"> |
||||||
<span type="text" @click="alertContent(scope.row.bug)">{{ scope.row.bug }}</span> |
<el-table-column prop="uid" label="用户uid" width="100" /> |
||||||
</template> |
<el-table-column prop="logType" label="日志类型" show-overflow-tooltip width="100" /> |
||||||
</el-table-column> |
<el-table-column prop="operationSystem" label="操作系统" show-overflow-tooltip width="155" /> |
||||||
<el-table-column prop="stackTrace" label="堆栈详情" show-overflow-tooltip > |
<el-table-column prop="systemMemorySize" label="系统内存大小" show-overflow-tooltip width="155" /> |
||||||
<template #default="scope"> |
<el-table-column prop="bug" label="log详情" show-overflow-tooltip> |
||||||
<span type="text" @click="alertContent(scope.row.stackTrace)">{{ scope.row.stackTrace }}</span> |
<template #default="scope"> |
||||||
</template> |
<span type="text" @click="alertContent(scope.row.bug)">{{ scope.row.bug }}</span> |
||||||
</el-table-column> |
</template> |
||||||
<el-table-column prop="channel" label="渠道" show-overflow-tooltip width="140"> |
</el-table-column> |
||||||
<template #default="scope"> |
<el-table-column prop="stackTrace" label="堆栈详情" show-overflow-tooltip> |
||||||
{{ addZero(scope.row.channel) }}{{ addZero(scope.row.subChannel) }} |
<template #default="scope"> |
||||||
</template> |
<span type="text" @click="alertContent(scope.row.stackTrace)">{{ scope.row.stackTrace }}</span> |
||||||
</el-table-column> |
</template> |
||||||
<el-table-column prop="deviceModel" label="设备型号" show-overflow-tooltip width="155"/> |
</el-table-column> |
||||||
<el-table-column prop="deviceType" label="设备类型" show-overflow-tooltip width="150"/> |
<el-table-column prop="channel" label="渠道" show-overflow-tooltip width="140"> |
||||||
<el-table-column prop="createTime" label="发生日期" show-overflow-tooltip width="170"/> |
<template #default="scope"> {{ addZero(scope.row.channel) }}{{ addZero(scope.row.subChannel) }}</template> |
||||||
</el-table> |
</el-table-column> |
||||||
<el-row justify="space-evenly"> |
<el-table-column prop="deviceModel" label="设备型号" show-overflow-tooltip width="155" /> |
||||||
<el-pagination :hide-on-single-page="true" v-model:page-size="tableData.param.pageSize" |
<el-table-column prop="deviceType" label="设备类型" show-overflow-tooltip width="150" /> |
||||||
v-model:current-page="tableData.param.pageNum" :pager-count="5" :total="tableData.total" |
<el-table-column prop="createTime" label="发生日期" show-overflow-tooltip width="170" /> |
||||||
@current-change="onHandleCurrentChange" layout="total, prev, pager, next"/> |
</el-table> |
||||||
</el-row> |
<el-row justify="space-evenly"> |
||||||
</el-card> |
<el-pagination |
||||||
<el-dialog v-model="contentVisible" :close-on-click-modal="false" center> |
:hide-on-single-page="true" |
||||||
<p v-html="tableData.content"></p> |
v-model:page-size="tableData.param.pageSize" |
||||||
</el-dialog> |
v-model:current-page="tableData.param.pageNum" |
||||||
</div> |
:pager-count="5" |
||||||
|
:total="tableData.total" |
||||||
|
@current-change="onHandleCurrentChange" |
||||||
|
layout="total, prev, pager, next" |
||||||
|
/> |
||||||
|
</el-row> |
||||||
|
</el-card> |
||||||
|
<el-dialog v-model="contentVisible" :close-on-click-modal="false" center> |
||||||
|
<p v-html="tableData.content"></p> |
||||||
|
</el-dialog> |
||||||
|
</div> |
||||||
</template> |
</template> |
||||||
|
|
||||||
<script lang="ts"> |
<script lang="ts"> |
||||||
import {toRefs, reactive, onMounted, defineComponent,} from 'vue'; |
import { toRefs, reactive, onMounted, defineComponent } from 'vue'; |
||||||
import AllItemConfigCategory from "/@/api/config/AllItemConfigCategory.json"; |
import AllItemConfigCategory from '/@/api/config/AllItemConfigCategory.json'; |
||||||
import {allChannelList, serverList} from "/@/utils/game"; |
import { allChannelList, serverList } from '/@/utils/game'; |
||||||
import {clientBugList, operateClientBug} from "/@/api/game/index"; |
import { clientBugList, operateClientBug } from '/@/api/game/index'; |
||||||
import {ElMessage, ElMessageBox} from 'element-plus'; |
import { ElMessage, ElMessageBox } from 'element-plus'; |
||||||
|
import {channelFill} from "/@/utils/utils"; |
||||||
|
|
||||||
interface TableDataState { |
interface TableDataState { |
||||||
contentVisible: boolean; |
contentVisible: boolean; |
||||||
ItemConfig: object; |
ItemConfig: object; |
||||||
tableData: { |
tableData: { |
||||||
data: object[]; |
data: object[]; |
||||||
total: number; |
total: number; |
||||||
content: string; |
content: string; |
||||||
param: { |
param: { |
||||||
log: string; |
log: string; |
||||||
stack: string; |
stack: string; |
||||||
uid: number; |
uid: number; |
||||||
times: number[]; |
times: number[]; |
||||||
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: 'apiV1GameClientBug', |
name: 'apiV1GameClientBug', |
||||||
setup() { |
setup() { |
||||||
const state = reactive<TableDataState>({ |
const state = reactive<TableDataState>({ |
||||||
contentVisible: false, |
contentVisible: false, |
||||||
ItemConfig: AllItemConfigCategory, |
ItemConfig: AllItemConfigCategory, |
||||||
tableData: { |
tableData: { |
||||||
data: [], |
data: [], |
||||||
total: 0, |
total: 0, |
||||||
content: "", |
content: '', |
||||||
param: { |
param: { |
||||||
times: [], |
times: [], |
||||||
lowTime: 0, |
lowTime: 0, |
||||||
upTime: 0, |
upTime: 0, |
||||||
pageSize: 10, |
pageSize: 10, |
||||||
pageNum: 1, |
pageNum: 1, |
||||||
}, |
}, |
||||||
}, |
}, |
||||||
servers: [] |
servers: [], |
||||||
}); |
}); |
||||||
|
|
||||||
const mailList = () => { |
const mailList = () => { |
||||||
clientBugList(state.tableData.param).then(res => { |
clientBugList(state.tableData.param).then((res) => { |
||||||
console.log(res); |
console.log(res); |
||||||
if (res.data) { |
if (res.data) { |
||||||
state.tableData.data = res.data.list ?? []; |
state.tableData.data = res.data.list ?? []; |
||||||
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}`); |
||||||
mailList(); |
mailList(); |
||||||
}; |
}; |
||||||
|
|
||||||
const alertContent = (val: string) => { |
const alertContent = (val: string) => { |
||||||
state.contentVisible = true; |
state.contentVisible = true; |
||||||
val = val.replace(/\n/gi, '<br/>'); |
val = val.replace(/\n/gi, '<br/>'); |
||||||
state.tableData.content = val; |
state.tableData.content = val; |
||||||
}; |
}; |
||||||
const onRowDel = (row: any) => { |
const onRowDel = (row: any) => { |
||||||
ElMessageBox.confirm(`此操作将完成:“${row.id}”,是否继续?`, '提示', { |
ElMessageBox.confirm(`此操作将完成:“${row.id}”,是否继续?`, '提示', { |
||||||
confirmButtonText: '确认', |
confirmButtonText: '确认', |
||||||
cancelButtonText: '取消', |
cancelButtonText: '取消', |
||||||
type: 'warning', |
type: 'warning', |
||||||
}).then(() => { |
}) |
||||||
operateClientBug({id: row.id}).then(() => { |
.then(() => { |
||||||
ElMessage.success('完成bug成功'); |
operateClientBug({ id: row.id }).then(() => { |
||||||
mailList(); |
ElMessage.success('完成bug成功'); |
||||||
}) |
mailList(); |
||||||
}).catch(() => { |
}); |
||||||
}); |
}) |
||||||
}; |
.catch(() => {}); |
||||||
|
}; |
||||||
|
|
||||||
// 页面加载时 |
// 页面加载时 |
||||||
onMounted(() => { |
onMounted(() => { |
||||||
serverList().then(value => { |
serverList().then((value) => { |
||||||
state.servers = value; |
state.servers = value; |
||||||
// console.log(" servers : ", state.servers); |
// console.log(" servers : ", state.servers); |
||||||
}); |
}); |
||||||
allChannelList().then(value => { |
allChannelList().then((value) => { |
||||||
state.channels = value; |
state.channels = value; |
||||||
console.log(" channels : ", state.channels); |
console.log(' channels : ', state.channels); |
||||||
}); |
}); |
||||||
mailList(); |
mailList(); |
||||||
}); |
}); |
||||||
|
|
||||||
const addZero = (val: any) => { |
const addZero = (val: any) => { |
||||||
let len = val.length; |
return channelFill(val); |
||||||
for (let i = 0; i < 6 - len; i++) { |
}; |
||||||
val = '0' + val; |
return { |
||||||
} |
onHandleCurrentChange, |
||||||
return val; |
onRowDel, |
||||||
} |
alertContent, |
||||||
return { |
mailList, |
||||||
onHandleCurrentChange, |
addZero, |
||||||
onRowDel, |
...toRefs(state), |
||||||
alertContent, |
}; |
||||||
mailList, |
}, |
||||||
addZero, |
|
||||||
...toRefs(state), |
|
||||||
}; |
|
||||||
}, |
|
||||||
}); |
}); |
||||||
</script> |
</script> |
||||||
|
@ -1,256 +1,260 @@ |
|||||||
<template> |
<template> |
||||||
<div class="game-maintenance-container"> |
<div class="game-maintenance-container"> |
||||||
<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 prop="now" label="公告类型:"> |
<el-form-item prop="now" label="公告类型:"> |
||||||
<el-select v-model="tableData.param.noticeType"> |
<el-select v-model="tableData.param.noticeType"> |
||||||
<el-option v-for="item in noticeTypes" :key="item.Id" :label="item.Name" :value="item.Id"></el-option> |
<el-option v-for="item in noticeTypes" :key="item.Id" :label="item.Name" :value="item.Id"></el-option> |
||||||
</el-select> |
</el-select> |
||||||
</el-form-item> |
</el-form-item> |
||||||
<el-form-item> |
<el-form-item> |
||||||
<el-button type="primary" @click="getNotice">查找</el-button> |
<el-button type="primary" @click="getNotice">查找</el-button> |
||||||
</el-form-item> |
</el-form-item> |
||||||
<el-table :data="tableData.datas" style="width: 100%" :row-class-name="onTableRowClassName" stripe border> |
<el-table :data="tableData.datas" style="width: 100%" :row-class-name="onTableRowClassName" stripe border> |
||||||
<el-table-column width="150" label="公告类型"> |
<el-table-column width="150" label="公告类型"> |
||||||
<template #default="scope"> |
<template #default="scope"> |
||||||
<span>{{ noticeTypes.find(r => r.Id == scope.row.noticeType).Name }}</span> |
<span>{{ noticeTypes.find((r) => r.Id == scope.row.noticeType).Name }}</span> |
||||||
</template> |
</template> |
||||||
</el-table-column> |
</el-table-column> |
||||||
<el-table-column prop="content" label="公告内容" show-overflow-tooltip> |
<el-table-column prop="content" label="公告内容" show-overflow-tooltip> |
||||||
<template #default="scope"> |
<template #default="scope"> |
||||||
<span type="text" @click="alertContent(scope.row.content)">{{ scope.row.content }}</span> |
<span type="text" @click="alertContent(scope.row.content)">{{ scope.row.content }}</span> |
||||||
</template> |
</template> |
||||||
</el-table-column> |
</el-table-column> |
||||||
<el-table-column prop="cDate" label="发送时间" width="180"> |
<el-table-column prop="cDate" label="发送时间" width="180"> |
||||||
<template #default="scope"> |
<template #default="scope"> |
||||||
{{ formatDate(new Date(scope.row.cDate * 1000), 'YYYY-mm-dd HH:MM:SS') }} |
{{ formatDate(new Date(scope.row.cDate * 1000), 'YYYY-mm-dd HH:MM:SS') }} |
||||||
</template> |
</template> |
||||||
</el-table-column> |
</el-table-column> |
||||||
<el-table-column prop="times" label="渠道" width="150"> |
<el-table-column prop="times" label="渠道" width="150"> |
||||||
<template #default="scope"> |
<template #default="scope"> |
||||||
{{ |
{{ |
||||||
channels.find(r => r.value == scope.row.channel) ? channels.find(r => r.value == scope.row.channel).label : scope.row.channel |
channels.find((r) => r.value == scope.row.channel) ? channels.find((r) => r.value == scope.row.channel).label : scope.row.channel |
||||||
}} |
}} |
||||||
</template> |
</template> |
||||||
</el-table-column> |
</el-table-column> |
||||||
<el-table-column prop="times" label="区服" width="150"> |
<el-table-column prop="times" label="区服" width="150"> |
||||||
<template #default="scope"> |
<template #default="scope"> |
||||||
{{ |
{{ |
||||||
servers.find(r => r.value == scope.row.serverId) ? servers.find(r => r.value == scope.row.serverId).name : scope.row.serverId |
servers.find((r) => r.value == scope.row.serverId) ? servers.find((r) => r.value == scope.row.serverId).name : scope.row.serverId |
||||||
}} |
}} |
||||||
</template> |
</template> |
||||||
</el-table-column> |
</el-table-column> |
||||||
<el-table-column> |
<el-table-column> |
||||||
<template #default="scope"> |
<template #default="scope"> |
||||||
<el-button size="small" type="danger" @click="noticeDel(scope.row.id)">删除</el-button> |
<el-button size="small" type="danger" @click="noticeDel(scope.row.id)">删除</el-button> |
||||||
</template> |
</template> |
||||||
</el-table-column> |
</el-table-column> |
||||||
</el-table> |
</el-table> |
||||||
</el-form> |
</el-form> |
||||||
<el-row justify="space-evenly"> |
<el-row justify="space-evenly"> |
||||||
<el-pagination :hide-on-single-page="true" :page-size="tableData.param.pageSize" |
<el-pagination |
||||||
:pager-count="5" @current-change="handleCurrentChange" |
:hide-on-single-page="true" |
||||||
layout="total, prev, pager, next, jumper" :total="tableData.total"/> |
v-model:page-size="tableData.param.pageSize" |
||||||
</el-row> |
@current-change="handleCurrentChange" |
||||||
</div> |
v-model:current-page="tableData.param.pageNum" |
||||||
</el-card> |
layout="total, prev, pager, next, jumper" |
||||||
|
:total="tableData.total" |
||||||
|
:pager-count="5" |
||||||
|
/> |
||||||
|
</el-row> |
||||||
|
</div> |
||||||
|
</el-card> |
||||||
|
|
||||||
<el-dialog v-model="contentVisible" :close-on-click-modal="false" center> |
<el-dialog v-model="contentVisible" :close-on-click-modal="false" center> |
||||||
<p v-html="tableData.content"></p> |
<p v-html="tableData.content"></p> |
||||||
<template #footer> |
<template #footer> |
||||||
<div class="dialog-footer"> |
<div class="dialog-footer"> |
||||||
<el-button type="primary" @click="copyContent"> |
<el-button type="primary" @click="copyContent"> 复制</el-button> |
||||||
复制 |
</div> |
||||||
</el-button> |
</template> |
||||||
</div> |
</el-dialog> |
||||||
</template> |
</div> |
||||||
</el-dialog> |
|
||||||
</div> |
|
||||||
</template> |
</template> |
||||||
|
|
||||||
<script lang="ts"> |
<script lang="ts"> |
||||||
import {toRefs, reactive, onMounted, defineComponent} from 'vue'; |
import { toRefs, reactive, onMounted, defineComponent } from 'vue'; |
||||||
import {gameNoticeDelList, gameNoticeList, gameRechargeControlDelete} from "/@/api/game"; |
import { gameNoticeDelList, gameNoticeList, gameRechargeControlDelete } from '/@/api/game'; |
||||||
import {ElMessage, ElMessageBox} from "element-plus/es"; |
import { ElMessage, ElMessageBox } from 'element-plus/es'; |
||||||
import {allChannelList, allServerList} from "/@/utils/game"; |
import { allChannelList, allServerList } from '/@/utils/game'; |
||||||
import {contentReplace} from "/@/utils/utils"; |
import { contentReplace } from '/@/utils/utils'; |
||||||
import {formatDate} from "/@/utils/formatTime"; |
import { formatDate } from '/@/utils/formatTime'; |
||||||
import {Notice_Type} from "/@/api/common/consts"; |
import { Notice_Type } from '/@/api/common/consts'; |
||||||
|
|
||||||
interface TableDataState { |
interface TableDataState { |
||||||
tableData: { |
tableData: { |
||||||
copyContent: string |
copyContent: string; |
||||||
content: string |
content: string; |
||||||
datas: object[] |
datas: object[]; |
||||||
param: { |
param: { |
||||||
channel: string, |
channel: string; |
||||||
content: string |
content: string; |
||||||
noticeType: number |
noticeType: number; |
||||||
id: number, |
id: number; |
||||||
noticeId: number, |
noticeId: number; |
||||||
pageNum: number, |
pageNum: number; |
||||||
pageSize: number, |
pageSize: number; |
||||||
times: object[], |
times: object[]; |
||||||
beginTime: number, |
beginTime: number; |
||||||
endTime: number, |
endTime: number; |
||||||
}; |
}; |
||||||
total: number |
total: number; |
||||||
}; |
}; |
||||||
noticeTypes: object[] |
noticeTypes: object[]; |
||||||
channels: object |
channels: object; |
||||||
servers: object[] |
servers: object[]; |
||||||
contentVisible: boolean |
contentVisible: boolean; |
||||||
} |
} |
||||||
|
|
||||||
export default defineComponent({ |
export default defineComponent({ |
||||||
name: 'apiV1GameNoticeList', |
name: 'apiV1GameNoticeList', |
||||||
methods: {formatDate}, |
methods: { formatDate }, |
||||||
setup() { |
setup() { |
||||||
const state = reactive<TableDataState>({ |
const state = reactive<TableDataState>({ |
||||||
tableData: { |
tableData: { |
||||||
copyContent: "", |
copyContent: '', |
||||||
content: "", |
content: '', |
||||||
datas: [], |
datas: [], |
||||||
param: { |
param: { |
||||||
noticeType: 0, |
noticeType: 0, |
||||||
pageNum: 1, |
pageNum: 1, |
||||||
pageSize: 10, |
pageSize: 10, |
||||||
}, |
}, |
||||||
total: 0 |
total: 0, |
||||||
}, |
}, |
||||||
channels: [], |
channels: [], |
||||||
servers: [], |
servers: [], |
||||||
contentVisible: false, |
contentVisible: false, |
||||||
noticeTypes: Notice_Type |
noticeTypes: Notice_Type, |
||||||
}); |
}); |
||||||
const noticeDel = (id: number) => { |
const noticeDel = (id: number) => { |
||||||
ElMessageBox.confirm("是否确认删除公告?", '提示', { |
ElMessageBox.confirm('是否确认删除公告?', '提示', { |
||||||
confirmButtonText: '确认', |
confirmButtonText: '确认', |
||||||
cancelButtonText: '取消', |
cancelButtonText: '取消', |
||||||
type: 'warning', |
type: 'warning', |
||||||
}).then(() => { |
}).then(() => { |
||||||
gameNoticeDelList({id: id}).then(() => { |
gameNoticeDelList({ id: id }) |
||||||
ElMessage.success('删除成功'); |
.then(() => { |
||||||
getNotice(); |
ElMessage.success('删除成功'); |
||||||
}).finally(() => { |
getNotice(); |
||||||
}) |
}) |
||||||
}); |
.finally(() => {}); |
||||||
|
}); |
||||||
|
}; |
||||||
|
const noticeCopy = (value: string) => { |
||||||
|
// 创建输入框元素 |
||||||
|
let oInput = document.createElement('input'); |
||||||
|
// 将想要复制的值 |
||||||
|
oInput.value = value; |
||||||
|
// 页面底部追加输入框 |
||||||
|
document.body.appendChild(oInput); |
||||||
|
// 选中输入框 |
||||||
|
oInput.select(); |
||||||
|
// 执行浏览器复制命令 |
||||||
|
document.execCommand('Copy'); |
||||||
|
// 弹出复制成功信息 |
||||||
|
ElMessage.success('复制成功'); |
||||||
|
// 复制后移除输入框 |
||||||
|
oInput.remove(); |
||||||
|
}; |
||||||
|
const getNotice = () => { |
||||||
|
console.log(state.tableData.param); |
||||||
|
|
||||||
}; |
gameNoticeList(state.tableData.param).then((res: any) => { |
||||||
const noticeCopy = (value: string) => { |
console.log('gameNoticeList: ', res); |
||||||
// 创建输入框元素 |
state.tableData.datas = res.data.list; |
||||||
let oInput = document.createElement("input"); |
state.tableData.total = res.data.total || 0; |
||||||
// 将想要复制的值 |
}); |
||||||
oInput.value = value; |
}; |
||||||
// 页面底部追加输入框 |
// 页面加载时 |
||||||
document.body.appendChild(oInput); |
onMounted(() => { |
||||||
// 选中输入框 |
allServerList().then((res) => { |
||||||
oInput.select(); |
state.servers = res; |
||||||
// 执行浏览器复制命令 |
}); |
||||||
document.execCommand("Copy"); |
allChannelList().then((res) => { |
||||||
// 弹出复制成功信息 |
state.channels = res; |
||||||
ElMessage.success('复制成功'); |
}); |
||||||
// 复制后移除输入框 |
getNotice(); |
||||||
oInput.remove(); |
}); |
||||||
}; |
|
||||||
const getNotice = () => { |
|
||||||
console.log(state.tableData.param); |
|
||||||
|
|
||||||
gameNoticeList(state.tableData.param).then((res: any) => { |
const handleClose = (done: () => void) => { |
||||||
console.log("gameNoticeList: ", res); |
done(); |
||||||
state.tableData.datas = res.data.list; |
// ElMessageBox.confirm('确定退出编辑模板页面?').then(() => { |
||||||
state.tableData.total = res.data.total || 0; |
// }).catch(() => { |
||||||
}); |
// catch error |
||||||
}; |
// }) |
||||||
// 页面加载时 |
}; |
||||||
onMounted(() => { |
const onTableRowClassName = ({ row, rowIndex }: any) => { |
||||||
allServerList().then(res => { |
console.log('onTableRowClassName', row, rowIndex); |
||||||
state.servers = res; |
if (row.Day % 2 == 0 || row.day % 2 == 0) { |
||||||
}) |
return 'warning-row'; |
||||||
allChannelList().then(res => { |
} else { |
||||||
state.channels = res; |
return ''; |
||||||
}) |
} |
||||||
getNotice() |
}; |
||||||
}); |
const handleCurrentChange = (val: number) => { |
||||||
|
console.log(`current page: ${val}`); |
||||||
const handleClose = (done: () => void) => { |
state.tableData.param.pageNum = val; |
||||||
done() |
getNotice(); |
||||||
// ElMessageBox.confirm('确定退出编辑模板页面?').then(() => { |
}; |
||||||
// }).catch(() => { |
const alertContent = (val: string) => { |
||||||
// catch error |
state.contentVisible = true; |
||||||
// }) |
state.tableData.copyContent = val; |
||||||
}; |
state.tableData.content = contentReplace(val); |
||||||
const onTableRowClassName = ({row, rowIndex}: any) => { |
// console.log(`current page: ${val}`); |
||||||
console.log("onTableRowClassName", row, rowIndex); |
}; |
||||||
if (row.Day % 2 == 0 || row.day % 2 == 0) { |
const copyContent = () => { |
||||||
return 'warning-row'; |
noticeCopy(state.tableData.copyContent); |
||||||
} else { |
console.log(`current page: ${state.tableData.copyContent}`); |
||||||
return ''; |
}; |
||||||
} |
return { |
||||||
}; |
copyContent, |
||||||
const handleCurrentChange = (val: number) => { |
getNotice, |
||||||
console.log(`current page: ${val}`); |
noticeDel, |
||||||
state.tableData.param.pageNum = val; |
handleClose, |
||||||
getNotice(); |
onTableRowClassName, |
||||||
}; |
handleCurrentChange, |
||||||
const alertContent = (val: string) => { |
alertContent, |
||||||
state.contentVisible = true; |
...toRefs(state), |
||||||
state.tableData.copyContent = val; |
}; |
||||||
state.tableData.content = contentReplace(val); |
}, |
||||||
// console.log(`current page: ${val}`); |
|
||||||
}; |
|
||||||
const copyContent = () => { |
|
||||||
noticeCopy(state.tableData.copyContent); |
|
||||||
console.log(`current page: ${state.tableData.copyContent}`); |
|
||||||
}; |
|
||||||
return { |
|
||||||
copyContent, |
|
||||||
getNotice, |
|
||||||
noticeDel, |
|
||||||
handleClose, |
|
||||||
onTableRowClassName, |
|
||||||
handleCurrentChange, |
|
||||||
alertContent, |
|
||||||
...toRefs(state), |
|
||||||
}; |
|
||||||
}, |
|
||||||
}); |
}); |
||||||
</script> |
</script> |
||||||
<style scoped lang="scss"> |
<style scoped lang="scss"> |
||||||
.my-header { |
.my-header { |
||||||
display: flex; |
display: flex; |
||||||
flex-direction: row; |
flex-direction: row; |
||||||
justify-content: space-between; |
justify-content: space-between; |
||||||
gap: 16px; |
gap: 16px; |
||||||
} |
} |
||||||
|
|
||||||
.tree-border { |
.tree-border { |
||||||
margin-top: 5px; |
margin-top: 5px; |
||||||
border: 1px solid #e5e6e7 !important; |
border: 1px solid #e5e6e7 !important; |
||||||
background: #fff none !important; |
background: #fff none !important; |
||||||
border-radius: 4px; |
border-radius: 4px; |
||||||
} |
} |
||||||
|
|
||||||
.system-edit-post-container { |
.system-edit-post-container { |
||||||
.menu-data-tree { |
.menu-data-tree { |
||||||
border: var(--el-input-border, var(--el-border-base)); |
border: var(--el-input-border, var(--el-border-base)); |
||||||
border-radius: var(--el-input-border-radius, var(--el-border-radius-base)); |
border-radius: var(--el-input-border-radius, var(--el-border-radius-base)); |
||||||
padding: 5px; |
padding: 5px; |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
.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> |
||||||
|
Loading…
Reference in new issue