金币系统前端
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.

381 lines
11 KiB

2 months ago
2 months ago
  1. <script setup>
  2. import { ref, onMounted, reactive, computed, watch } from "vue";
  3. import { useRouter } from "vue-router";
  4. import ElementPlus from "element-plus";
  5. import { VscGlobe } from "vue-icons-plus/vsc";
  6. import { ElMessage } from "element-plus";
  7. import axios from "axios";
  8. import { ElMessageBox } from "element-plus";
  9. import API from "@/util/http";
  10. import dmmn from "../assets/动漫美女.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. const getAreas = async function () {
  32. try {
  33. const result = await API({ url: "/recharge/user/search", data: {} });
  34. areas.value = result.data;
  35. console.log("请求成功", result);
  36. } catch (error) {
  37. console.log("请求失败", error);
  38. }
  39. };
  40. // 查看个人信息弹出框
  41. const openMessage = function () {
  42. messageVisible.value = true;
  43. };
  44. const closeMessage = function () {
  45. messageVisible.value = false;
  46. };
  47. const message = function () {
  48. openMessage();
  49. };
  50. // 获取machineId
  51. function logout() {
  52. const machineId = localStorage.getItem("machineId");
  53. console.log("machineId:", machineId);
  54. localStorage.removeItem("token");
  55. // localStorage.clear();
  56. router.push("/login?machineId=" + machineId);
  57. //添加刷新页面的代码
  58. // window.location.reload();
  59. ElMessage.success("退出成功");
  60. }
  61. // 挂载
  62. onMounted(async function () {
  63. // 获取用户信息
  64. getAdminData();
  65. // 获取地区
  66. getAreas();
  67. });
  68. // 处理地区点击事件
  69. const changeDataByArea = (item) => {
  70. router.push({
  71. name: "workspace", // 假设工作台路由的名称为 'Workspace'
  72. params: {
  73. area: item,
  74. },
  75. });
  76. // 替换完url后刷新页面
  77. };
  78. </script>
  79. <template>
  80. <div class="common-layout">
  81. <el-container>
  82. <el-aside
  83. style="
  84. width: 15%;
  85. min-width: 180px;
  86. position: fixed; /* 固定位置 */
  87. top: 0;
  88. left: 0;
  89. height: 100vh; /* 高度占满视口 */
  90. z-index: 100; /* 确保侧边栏在其他元素之上 */
  91. "
  92. >
  93. <div class="logo">
  94. <img
  95. src="../assets/金币管理系统logo.png"
  96. alt="logo"
  97. style="width: 30px; height: 30px"
  98. />
  99. <div style="font-size: 16px; font-weight: bold">海外金币管理系统</div>
  100. </div>
  101. <el-menu
  102. router="true"
  103. background-color="#08193d"
  104. active-text-color="#ffd04b"
  105. text-color="white"
  106. class="el-menu-vertical-demo"
  107. @open="handleOpen"
  108. @close="handleClose"
  109. >
  110. <el-menu-item
  111. index="/workspace"
  112. v-if="
  113. adminData.permission == 1 ||
  114. adminData.permission == 2 ||
  115. adminData.permission == 3 ||
  116. adminData.permission == 5
  117. "
  118. >
  119. <el-icon>
  120. <Folder />
  121. </el-icon>
  122. 工作台
  123. </el-menu-item>
  124. <el-sub-menu
  125. index="2"
  126. v-if="
  127. adminData.permission == 1 ||
  128. adminData.permission == 3 ||
  129. adminData.permission == 5
  130. "
  131. >
  132. <template #title>
  133. <el-icon>
  134. <Folder />
  135. </el-icon>
  136. <span>财务审核</span>
  137. </template>
  138. <el-menu-item index="/rechargeAudit">充值审核</el-menu-item>
  139. <el-menu-item index="/refundAudit">退款审核</el-menu-item>
  140. </el-sub-menu>
  141. <el-sub-menu
  142. index="3"
  143. v-if="
  144. adminData.permission == 1 ||
  145. adminData.permission == 3 ||
  146. adminData.permission == 5
  147. "
  148. >
  149. <template #title>
  150. <el-icon>
  151. <Folder />
  152. </el-icon>
  153. <span>充值管理</span>
  154. </template>
  155. <el-menu-item index="/activity">活动管理</el-menu-item>
  156. <el-menu-item index="/rate">汇率管理</el-menu-item>
  157. </el-sub-menu>
  158. <el-sub-menu
  159. index="4"
  160. v-if="
  161. adminData.permission == 1 ||
  162. adminData.permission == 2 ||
  163. adminData.permission == 5
  164. "
  165. >
  166. <template #title>
  167. <el-icon>
  168. <Folder />
  169. </el-icon>
  170. <span>充值</span>
  171. </template>
  172. <el-sub-menu>
  173. <template #title>金币充值</template>
  174. <el-menu-item index="/addRecharge">新增充值</el-menu-item>
  175. <el-menu-item index="/adminRecharge">客服充值明细</el-menu-item>
  176. <el-menu-item index="/allRecharge">所有充值明细</el-menu-item>
  177. </el-sub-menu>
  178. </el-sub-menu>
  179. <el-sub-menu
  180. index="5"
  181. v-if="
  182. adminData.permission == 1 ||
  183. adminData.permission == 2 ||
  184. adminData.permission == 5
  185. "
  186. >
  187. <template #title>
  188. <el-icon>
  189. <Folder />
  190. </el-icon>
  191. <span>消费</span>
  192. </template>
  193. <el-sub-menu>
  194. <template #title>金币消费</template>
  195. <el-menu-item index="/addConsume">新增消费</el-menu-item>
  196. <el-menu-item index="/allConsume">所有消费明细</el-menu-item>
  197. </el-sub-menu>
  198. </el-sub-menu>
  199. <el-sub-menu
  200. index="6"
  201. v-if="
  202. adminData.permission == 1 ||
  203. adminData.permission == 2 ||
  204. adminData.permission == 5
  205. "
  206. >
  207. <template #title>
  208. <el-icon>
  209. <Folder />
  210. </el-icon>
  211. <span>退款</span>
  212. </template>
  213. <el-sub-menu>
  214. <template #title>金币退款</template>
  215. <el-menu-item index="/addRefund">新增退款</el-menu-item>
  216. <el-menu-item index="/allRefund">退款明细</el-menu-item>
  217. </el-sub-menu>
  218. </el-sub-menu>
  219. <el-menu-item
  220. index="/usergold"
  221. v-if="
  222. adminData.permission == 1 ||
  223. adminData.permission == 2 ||
  224. adminData.permission == 3 ||
  225. adminData.permission == 5
  226. "
  227. >
  228. <el-icon>
  229. <Folder />
  230. </el-icon>
  231. 客户金币明细
  232. </el-menu-item>
  233. <el-menu-item
  234. index="/usergoldInfo"
  235. v-if="
  236. adminData.permission == 1 ||
  237. adminData.permission == 2 ||
  238. adminData.permission == 3 ||
  239. adminData.permission == 5
  240. "
  241. >
  242. <el-icon>
  243. <Folder />
  244. </el-icon>
  245. 客户金币余额
  246. </el-menu-item>
  247. <el-menu-item index="/permissions" v-if="adminData.permission == 1">
  248. <el-icon>
  249. <Folder />
  250. </el-icon>
  251. 权限管理
  252. </el-menu-item>
  253. </el-menu>
  254. </el-aside>
  255. <el-container style="margin-left: 15%; min-width: 180px">
  256. <!-- 修改 el-header 样式 -->
  257. <el-header
  258. style="
  259. position: fixed;
  260. top: 0;
  261. left: 15%;
  262. right: 0;
  263. z-index: 101;
  264. position: fixed;
  265. "
  266. >
  267. <el-menu
  268. :default-active="activeIndex"
  269. class="el-menu-demo"
  270. mode="horizontal"
  271. :ellipsis="false"
  272. >
  273. <el-sub-menu index="1" class="area" :disabled="isWorkspace">
  274. <template #title>
  275. <VscGlobe />
  276. </template>
  277. <el-menu-item
  278. v-for="(item, index) in areas"
  279. :key="index"
  280. @click="changeDataByArea(item)"
  281. >
  282. {{ item }}
  283. </el-menu-item>
  284. </el-sub-menu>
  285. </el-menu>
  286. <el-menu
  287. :default-active="activeIndex"
  288. class="el-menu-demo"
  289. mode="horizontal"
  290. :ellipsis="false"
  291. >
  292. <el-sub-menu index="1" class="admin">
  293. <template #title>
  294. <el-image
  295. :src="imgrule1"
  296. alt="错误"
  297. style="width: 50px; height: 50px"
  298. />
  299. <span style="margin-left: 10px">{{ adminData.name }}</span>
  300. </template>
  301. <el-menu-item @click="message()">查看个人信息</el-menu-item>
  302. <el-menu-item index="1-2" @click="logout">退出登录</el-menu-item>
  303. </el-sub-menu>
  304. </el-menu>
  305. </el-header>
  306. <!-- 修改 el-main 样式 -->
  307. <el-main style="margin-top: 60px">
  308. <!-- 60px el-header 的大致高度可根据实际情况调整 -->
  309. <router-view></router-view>
  310. </el-main>
  311. </el-container>
  312. </el-container>
  313. </div>
  314. <!-- 查看个人信息 -->
  315. <el-dialog v-model="messageVisible" title="查看个人信息" width="500px">
  316. <el-form :model="adminData">
  317. <el-form-item label="用户姓名" label-width="100px" label-position="left">
  318. <span class="message-font">{{ adminData.name }}</span>
  319. </el-form-item>
  320. <el-form-item label="精网号" label-width="100px" label-position="left">
  321. <span class="message-font">{{ adminData.jwcode }}</span>
  322. </el-form-item>
  323. <el-form-item label="地区" label-width="100px" label-position="left">
  324. <span class="message-font">{{ adminData.area }}</span>
  325. </el-form-item>
  326. <el-form-item label="注册时间" label-width="100px" label-position="left">
  327. <span class="message-font">{{ adminData.createTime }}</span>
  328. </el-form-item>
  329. </el-form>
  330. <template #footer>
  331. <div class="dialog-footer">
  332. <el-button text @click="closeMessage()">关闭</el-button>
  333. </div>
  334. </template>
  335. </el-dialog>
  336. </template>
  337. <style scoped>
  338. .message-font {
  339. font-size: 16px;
  340. font-weight: bold;
  341. }
  342. .admin {
  343. margin-left: auto;
  344. }
  345. .el-aside {
  346. background-color: #08193d;
  347. min-height: 100vh;
  348. width: 200px;
  349. }
  350. .logo {
  351. color: white;
  352. margin: 20px 0px 20px 20px;
  353. display: flex;
  354. }
  355. .el-menu {
  356. border: none; /* 去除边框 */
  357. padding: 0; /* 去除内边距 */
  358. }
  359. .el-menu-demo {
  360. float: right; /* 将菜单向右浮动 */
  361. }
  362. </style>