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.

296 lines
9.1 KiB

2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
2 weeks ago
  1. <script setup>
  2. // 导航栏在这
  3. import { ref, onMounted, reactive, computed, watch } from 'vue'
  4. import { useRouter } from 'vue-router'
  5. import ElementPlus from 'element-plus'
  6. import { VscGlobe } from 'vue-icons-plus/vsc'
  7. import { ElMessage, ElMessageBox } from 'element-plus'
  8. import axios from 'axios'
  9. import API from '@/util/http'
  10. import dmmn from '../assets/blue.png'
  11. import { useRoute } from 'vue-router'
  12. const router = useRouter()
  13. const imgrule1 = dmmn
  14. const messageVisible = ref(false)
  15. // 这是获取用户信息的接口
  16. const adminData = ref({
  17. name: ''
  18. })
  19. const getAdminData = async function () {
  20. try {
  21. const result = await API({ url: '/admin/userinfo', data: {} })
  22. adminData.value = result
  23. console.log('请求成功', result)
  24. console.log('用户信息', adminData.value)
  25. } catch (error) {
  26. console.log('请求失败', error)
  27. }
  28. }
  29. // 获取地区
  30. const areas = ref([])
  31. // 直接在组件内维护当前地区状态,不太懂,包老师写的
  32. const currentArea = ref('全部')
  33. const getAreas = async function () {
  34. try {
  35. const result = await API({ url: '/recharge/user/search', data: {} })
  36. areas.value = result.data
  37. console.log('请求成功', result)
  38. } catch (error) {
  39. console.log('请求失败', error)
  40. }
  41. }
  42. // 查看个人信息弹出框
  43. const openMessage = function () {
  44. messageVisible.value = true
  45. }
  46. const closeMessage = function () {
  47. messageVisible.value = false
  48. }
  49. const message = function () {
  50. openMessage()
  51. }
  52. // 获取machineId
  53. function logout() {
  54. const machineId = localStorage.getItem('machineId')
  55. console.log('machineId:', machineId)
  56. localStorage.removeItem('token')
  57. // localStorage.clear();
  58. router.push('/login?machineId=' + machineId)
  59. //添加刷新页面的代码
  60. // window.location.reload();
  61. ElMessage.success('退出成功')
  62. }
  63. // 挂载
  64. onMounted(async function () {
  65. // 获取用户信息
  66. getAdminData()
  67. // 获取地区
  68. getAreas()
  69. })
  70. // 处理地区点击事件,直接在组件内更新当前地区,包老师改的,直接传参
  71. const changeDataByArea = (item) => {
  72. currentArea.value = item
  73. }
  74. //官网折叠
  75. const isCollapse = ref(false)
  76. const handleOpen = (key, keyPath) => {
  77. console.log(key, keyPath)
  78. }
  79. const handleClose = (key, keyPath) => {
  80. console.log(key, keyPath)
  81. }
  82. </script>
  83. <template>
  84. <div class="common-layout">
  85. <el-container>
  86. <el-aside style="
  87. width: 15%;
  88. min-width: 180px;
  89. position: fixed; /* 固定位置 */
  90. top: 0;
  91. left: 0;
  92. height: 100vh; /* 高度占满视口 */
  93. z-index: 100; /* 确保侧边栏在其他元素之上 */
  94. ">
  95. <div class="logo">
  96. <img src="../assets/新logo.png" alt="logo" style="width: 80px; height: 80px" />
  97. <!-- <div style="font-size: 16px; font-weight: bold; color: black; text-align: center;" ><h1>海外金币管理系统</h1></div> -->
  98. </div>
  99. <el-card style="min-height: 90%;">
  100. <el-radio-group v-model="isCollapse" style="margin-bottom: 20px">
  101. <el-radio-button :value="false">扩展</el-radio-button>
  102. <el-radio-button :value="true">收缩</el-radio-button>
  103. </el-radio-group>
  104. <el-menu :router="true" class="el-menu-vertical-demo" :collapse="isCollapse" @open="handleOpen" @close="handleClose">
  105. <el-menu-item
  106. index="/workspace"
  107. v-if="
  108. adminData.permission == 1 ||
  109. adminData.permission == 2 ||
  110. adminData.permission == 3 ||
  111. adminData.permission == 5
  112. ">
  113. <el-icon><Folder /></el-icon>
  114. <span>工作台</span>
  115. </el-menu-item>
  116. <el-sub-menu index="2" v-if="
  117. adminData.permission == 1 ||
  118. adminData.permission == 3 ||
  119. adminData.permission == 5
  120. ">
  121. <template #title>
  122. <el-icon><Folder /></el-icon>
  123. <span>财务审核</span>
  124. </template>
  125. <el-menu-item index="/rechargeAudit">充值审核</el-menu-item>
  126. <el-menu-item index="/refundAudit">退款审核</el-menu-item>
  127. </el-sub-menu>
  128. <el-menu-item
  129. index="/rate"
  130. v-if="
  131. adminData.permission == 1 ||
  132. adminData.permission == 2 ||
  133. adminData.permission == 3 ||
  134. adminData.permission == 5
  135. ">
  136. <el-icon><Folder /></el-icon>
  137. <span>汇率管理</span>
  138. </el-menu-item>
  139. <el-sub-menu index="4" v-if="
  140. adminData.permission == 1 ||
  141. adminData.permission == 2 ||
  142. adminData.permission == 5
  143. ">
  144. <template #title>
  145. <el-icon><Folder /></el-icon>
  146. <span>充值管理</span>
  147. </template>
  148. <el-menu-item index="/coinRecharge">金币充值</el-menu-item>
  149. <el-menu-item index="/beanRecharge">金豆充值</el-menu-item>
  150. </el-sub-menu>
  151. <el-sub-menu index="6" v-if="
  152. adminData.permission == 1 ||
  153. adminData.permission == 2 ||
  154. adminData.permission == 5
  155. ">
  156. <template #title>
  157. <el-icon>
  158. <Folder />
  159. </el-icon>
  160. <span>消耗管理</span>
  161. </template>
  162. <el-menu-item index="/coinConsume">金币消耗</el-menu-item>
  163. <el-menu-item index="/beanConsume">金豆消耗</el-menu-item>
  164. </el-sub-menu>
  165. <el-sub-menu index="8" v-if="
  166. adminData.permission == 1 ||
  167. adminData.permission == 2 ||
  168. adminData.permission == 5
  169. ">
  170. <template #title>
  171. <el-icon>
  172. <Folder />
  173. </el-icon>
  174. <span>退款管理</span>
  175. </template>
  176. <el-menu-item index="/coinRefund">金币退款</el-menu-item>
  177. <el-menu-item index="/beanRefund">金豆退款</el-menu-item>
  178. </el-sub-menu>
  179. <el-menu-item index="/usergold" v-if="
  180. adminData.permission == 1 ||
  181. adminData.permission == 2 ||
  182. adminData.permission == 3 ||
  183. adminData.permission == 5
  184. ">
  185. <el-icon><Folder /></el-icon>
  186. <span>客户账户明细</span>
  187. </el-menu-item>
  188. <el-menu-item index="/permissions" v-if="adminData.permission == 1">
  189. <el-icon><Folder /></el-icon>
  190. <span>权限管理</span>
  191. </el-menu-item>
  192. </el-menu>
  193. </el-card>
  194. </el-aside>
  195. <el-container style="margin-left: 15%; min-width: 180px">
  196. <!-- 修改 el-header 样式 -->
  197. <el-header style="
  198. position: fixed;
  199. top: 0;
  200. left: 15%;
  201. right: 0;
  202. z-index: 80;
  203. background: white;
  204. ">
  205. <el-menu class="el-menu-demo" mode="horizontal" :ellipsis="false">
  206. <el-sub-menu index="1" class="admin">
  207. <template #title>
  208. <el-image :src="imgrule1" alt="错误" style="width: 50px; height: 50px" />
  209. <span style="margin-left: 10px">{{ adminData.name }}</span>
  210. </template>
  211. <el-menu-item @click="message()">查看个人信息</el-menu-item>
  212. <el-menu-item index="1-2" @click="logout">退出登录</el-menu-item>
  213. </el-sub-menu>
  214. </el-menu>
  215. </el-header>
  216. <!-- 修改 el-main 样式 -->
  217. <el-main style="margin-top: 60px">
  218. <!-- 60px el-header 的大致高度可根据实际情况调整 -->
  219. <router-view></router-view>
  220. </el-main>
  221. </el-container>
  222. </el-container>
  223. </div>
  224. <!-- 查看个人信息 -->
  225. <el-dialog v-model="messageVisible" title="查看个人信息" width="500px">
  226. <el-form :model="adminData">
  227. <el-form-item label="用户姓名" label-width="100px" label-position="left">
  228. <span class="message-font">{{ adminData.name }}</span>
  229. </el-form-item>
  230. <el-form-item label="精网号" label-width="100px" label-position="left">
  231. <span class="message-font">{{ adminData.jwcode }}</span>
  232. </el-form-item>
  233. <el-form-item label="地区" label-width="100px" label-position="left">
  234. <span class="message-font">{{ adminData.area }}</span>
  235. </el-form-item>
  236. <el-form-item label="注册时间" label-width="100px" label-position="left">
  237. <span class="message-font">{{ adminData.createTime }}</span>
  238. </el-form-item>
  239. </el-form>
  240. <template #footer>
  241. <div class="dialog-footer">
  242. <el-button text @click="closeMessage()">关闭</el-button>
  243. </div>
  244. </template>
  245. </el-dialog>
  246. </template>
  247. <style scoped>
  248. .message-font {
  249. font-size: 16px;
  250. font-weight: bold;
  251. }
  252. .admin {
  253. margin-left: auto;
  254. }
  255. .el-aside {
  256. min-height: 100vh;
  257. width: 200px;
  258. }
  259. /* background-color: #BFD8D2; */
  260. .logo {
  261. margin: 20px 0px 20px 20px;
  262. display: flex;
  263. }
  264. .el-menu-demo {
  265. border: none; /* 去除边框 */
  266. padding: 0; /* 去除内边距 */
  267. float: right;
  268. /* 将菜单向右浮动 */
  269. }
  270. .el-menu-vertical-demo:not(.el-menu--collapse) {
  271. width: 240px;
  272. min-height: 400px;
  273. border: none; /* 去除边框 */
  274. }
  275. </style>