You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
337 lines
10 KiB
337 lines
10 KiB
<script setup>
|
|
// 导航栏在这
|
|
import { ref, onMounted } from 'vue'
|
|
import { useRouter } from 'vue-router'
|
|
import ElementPlus from 'element-plus'
|
|
import { VscGlobe } from 'vue-icons-plus/vsc'
|
|
import { ElMessage } from 'element-plus'
|
|
import axios from 'axios'
|
|
import API from '@/util/http'
|
|
import dmmn from '../assets/blue.png'
|
|
import { useRoute } from 'vue-router'
|
|
import moment from 'moment'
|
|
|
|
const router = useRouter()
|
|
const imgrule1 = dmmn
|
|
const messageVisible = ref(false)
|
|
|
|
// 这是获取用户信息的接口
|
|
const adminData = ref({
|
|
name: ''
|
|
})
|
|
|
|
const getAdminData = async function () {
|
|
try {
|
|
const result = await API({ url: '/admin/userinfo', data: {} })
|
|
adminData.value = result
|
|
console.log('请求成功', result)
|
|
console.log('用户信息', adminData.value)
|
|
} catch (error) {
|
|
console.log('请求失败', error)
|
|
}
|
|
}
|
|
// 获取地区
|
|
const areas = ref([])
|
|
|
|
const currentArea = ref('全部')
|
|
|
|
const getAreas = async function () {
|
|
try {
|
|
const result = await API({ url: '/general/market', data: {} })
|
|
areas.value = result.data
|
|
console.log('请求成功', result)
|
|
} catch (error) {
|
|
console.log('请求失败', error)
|
|
}
|
|
}
|
|
// 查看个人信息弹出框
|
|
const openMessage = function () {
|
|
messageVisible.value = true
|
|
}
|
|
const closeMessage = function () {
|
|
messageVisible.value = false
|
|
}
|
|
const message = function () {
|
|
openMessage()
|
|
}
|
|
|
|
// 导出列表数据
|
|
const exportList = ref([])
|
|
// 导出列表加载状态
|
|
const exportListLoading = ref(false)
|
|
|
|
// 获取导出列表
|
|
const getExportList = async () => {
|
|
exportListLoading.value = true
|
|
try {
|
|
const result = await API({ url: '/export/export' })
|
|
if (result.code === 200) {
|
|
exportList.value = result.data
|
|
} else {
|
|
ElMessage.error(result.msg || '获取导出列表失败')
|
|
}
|
|
} catch (error) {
|
|
console.error('获取导出列表出错:', error)
|
|
ElMessage.error('获取导出列表失败,请稍后重试')
|
|
} finally {
|
|
exportListLoading.value = false
|
|
}
|
|
}
|
|
|
|
// 下载导出文件
|
|
const downloadExportFile = (item) => {
|
|
if (item.state === 2) {
|
|
const link = document.createElement('a')
|
|
link.href = item.url
|
|
link.download = item.fileName
|
|
link.click()
|
|
} else {
|
|
ElMessage.warning('文件还在导出中,请稍后再试')
|
|
}
|
|
}
|
|
|
|
// 挂载
|
|
onMounted(async function () {
|
|
// 获取用户信息
|
|
getAdminData()
|
|
// 初始化获取导出列表
|
|
await getExportList()
|
|
})
|
|
// 处理地区点击事件,直接在组件内更新当前地区,包老师改的,直接传参
|
|
const changeDataByArea = (item) => {
|
|
currentArea.value = item
|
|
}
|
|
// 官网折叠
|
|
const isCollapse = ref(false)
|
|
const handleOpen = (key, keyPath) => {
|
|
console.log(key, keyPath)
|
|
}
|
|
const handleClose = (key, keyPath) => {
|
|
console.log(key, keyPath)
|
|
}
|
|
|
|
// 控制导出列表弹窗显示状态
|
|
const exportListVisible = ref(false)
|
|
|
|
// 打开导出列表弹窗
|
|
const openExportList = () => {
|
|
getExportList()
|
|
exportListVisible.value = true
|
|
}
|
|
</script>
|
|
|
|
<template>
|
|
<div class="common-layout">
|
|
<el-container>
|
|
<el-aside style="
|
|
width: 15%;
|
|
min-width: 180px;
|
|
position: fixed; /* 固定位置 */
|
|
top: 0;
|
|
left: 0;
|
|
height: 100vh; /* 高度占满视口 */
|
|
z-index: 100; /* 确保侧边栏在其他元素之上 */
|
|
">
|
|
<div class="logo">
|
|
<img src="../assets/新logo.png" alt="logo" style="width: 80px; height: 80px" />
|
|
<!-- <div style="font-size: 16px; font-weight: bold; color: black; text-align: center;" ><h1>海外金币管理系统</h1></div> -->
|
|
</div>
|
|
<el-card style="min-height: 90%;">
|
|
<el-radio-group v-model="isCollapse" style="margin-bottom: 20px">
|
|
<el-radio-button :value="false">扩展</el-radio-button>
|
|
<el-radio-button :value="true">收缩</el-radio-button>
|
|
</el-radio-group>
|
|
|
|
<el-menu :router="true" class="el-menu-vertical-demo" :collapse="isCollapse" @open="handleOpen"
|
|
@close="handleClose">
|
|
<el-menu-item index="/workspace">
|
|
<el-icon>
|
|
<Folder />
|
|
</el-icon>
|
|
<span>工作台</span>
|
|
</el-menu-item>
|
|
|
|
<el-sub-menu index="2">
|
|
<template #title>
|
|
<el-icon>
|
|
<Folder />
|
|
</el-icon>
|
|
<span>财务审核</span>
|
|
</template>
|
|
<el-menu-item index="/rechargeAudit">充值审核</el-menu-item>
|
|
<el-menu-item index="/refundAudit">退款审核</el-menu-item>
|
|
</el-sub-menu>
|
|
<el-menu-item index="/rate">
|
|
<el-icon>
|
|
<Folder />
|
|
</el-icon>
|
|
<span>汇率管理</span>
|
|
</el-menu-item>
|
|
<el-sub-menu index="4">
|
|
<template #title>
|
|
<el-icon>
|
|
<Folder />
|
|
</el-icon>
|
|
<span>充值管理</span>
|
|
</template>
|
|
<el-menu-item index="/coinRecharge">金币充值</el-menu-item>
|
|
<el-menu-item index="/beanRecharge">金豆充值</el-menu-item>
|
|
</el-sub-menu>
|
|
<el-sub-menu index="6">
|
|
<template #title>
|
|
<el-icon>
|
|
<Folder />
|
|
</el-icon>
|
|
<span>消耗管理</span>
|
|
</template>
|
|
<el-menu-item index="/coinConsume">金币消耗</el-menu-item>
|
|
<el-menu-item index="/beanConsume">金豆消耗</el-menu-item>
|
|
</el-sub-menu>
|
|
<el-sub-menu index="8">
|
|
<template #title>
|
|
<el-icon>
|
|
<Folder />
|
|
</el-icon>
|
|
<span>退款管理</span>
|
|
</template>
|
|
<el-menu-item index="/coinRefund">金币退款</el-menu-item>
|
|
<el-menu-item index="/beanRefund">金豆退款</el-menu-item>
|
|
</el-sub-menu>
|
|
<el-menu-item index="/usergold">
|
|
<el-icon>
|
|
<Folder />
|
|
</el-icon>
|
|
<span>客户账户明细</span>
|
|
</el-menu-item>
|
|
<el-menu-item index="/permissions">
|
|
<el-icon>
|
|
<Folder />
|
|
</el-icon>
|
|
<span>权限管理</span>
|
|
</el-menu-item>
|
|
</el-menu>
|
|
</el-card>
|
|
</el-aside>
|
|
<el-container style="margin-left: 15%; min-width: 180px">
|
|
<!-- 修改 el-header 样式 -->
|
|
<el-header style="
|
|
position: fixed;
|
|
top: 0;
|
|
left: 15%;
|
|
right: 0;
|
|
z-index: 80;
|
|
background: white;
|
|
">
|
|
|
|
<el-menu class="el-menu-demo" mode="horizontal" :ellipsis="false">
|
|
<el-sub-menu index="1" class="admin">
|
|
<template #title>
|
|
<el-image :src="imgrule1" alt="错误" style="width: 50px; height: 50px" />
|
|
<span style="margin-left: 10px">{{ adminData.name }}</span>
|
|
</template>
|
|
<el-menu-item @click="message()">查看个人信息</el-menu-item>
|
|
<el-menu-item index="1-2">退出登录</el-menu-item>
|
|
<el-menu-item index="1-3" @click="openExportList">查看下载列表</el-menu-item>
|
|
</el-sub-menu>
|
|
</el-menu>
|
|
</el-header>
|
|
<el-main style="margin-top: 60px">
|
|
<!-- 60px 是 el-header 的大致高度,可根据实际情况调整 -->
|
|
<router-view></router-view>
|
|
</el-main>
|
|
</el-container>
|
|
</el-container>
|
|
<!-- 查看个人信息 -->
|
|
<el-dialog v-model="messageVisible" title="查看个人信息" width="500px">
|
|
<el-form :model="adminData">
|
|
<el-form-item label="用户姓名" label-width="100px" label-position="left">
|
|
<span class="message-font">{{ adminData.adminName }}</span>
|
|
</el-form-item>
|
|
<el-form-item label="精网号" label-width="100px" label-position="left">
|
|
<span class="message-font">{{ adminData.account }}</span>
|
|
</el-form-item>
|
|
<el-form-item label="地区" label-width="100px" label-position="left">
|
|
<span class="message-font">{{ adminData.market }}</span>
|
|
</el-form-item>
|
|
<el-form-item label="注册时间" label-width="100px" label-position="left">
|
|
<span class="message-font">{{ adminData.createTime }}</span>
|
|
</el-form-item>
|
|
</el-form>
|
|
<template #footer>
|
|
<div class="dialog-footer">
|
|
<el-button text @click="closeMessage()">关闭</el-button>
|
|
</div>
|
|
</template>
|
|
</el-dialog>
|
|
|
|
<!-- 导出列表弹窗 -->
|
|
<el-dialog v-model="exportListVisible" title="导出列表" width="80%">
|
|
<el-table :data="exportList" style="width: 100%" :loading="exportListLoading">
|
|
<el-table-column prop="fileName" label="文件名" />
|
|
<el-table-column prop="state" label="状态">
|
|
<template #default="scope">
|
|
<el-tag :type="scope.row.state === 2 ? 'success' : 'warning'">
|
|
{{ scope.row.state === 2 ? '已完成' : '处理中' }}
|
|
</el-tag>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="createTime" label="创建时间">
|
|
<template #default="scope">
|
|
{{ moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column label="操作">
|
|
<template #default="scope">
|
|
<el-button type="primary" size="small" @click="downloadExportFile(scope.row)"
|
|
:disabled="scope.row.state !== 2">
|
|
下载
|
|
</el-button>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
<template #footer>
|
|
<div class="dialog-footer">
|
|
<el-button text @click="exportListVisible = false">关闭</el-button>
|
|
</div>
|
|
</template>
|
|
</el-dialog>
|
|
</div>
|
|
</template>
|
|
|
|
<style scoped>
|
|
.message-font {
|
|
font-size: 16px;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.admin {
|
|
margin-left: auto;
|
|
}
|
|
|
|
.el-aside {
|
|
min-height: 100vh;
|
|
width: 200px;
|
|
}
|
|
|
|
/* background-color: #BFD8D2; */
|
|
.logo {
|
|
margin: 20px 0px 20px 20px;
|
|
display: flex;
|
|
}
|
|
|
|
.el-menu-demo {
|
|
border: none;
|
|
/* 去除边框 */
|
|
padding: 0;
|
|
/* 去除内边距 */
|
|
float: right;
|
|
/* 将菜单向右浮动 */
|
|
}
|
|
|
|
.el-menu-vertical-demo:not(.el-menu--collapse) {
|
|
width: 240px;
|
|
min-height: 400px;
|
|
border: none;
|
|
/* 去除边框 */
|
|
}
|
|
</style>
|