From 85c54d88f139096614aea4b06f2166cae27729d7 Mon Sep 17 00:00:00 2001
From: zhangwei <1504152376@qq.com>
Date: 星期五, 22 八月 2025 10:11:19 +0800
Subject: [PATCH] 用户管理

---
 src/views/home/index.vue |  169 +++++++++++++++++++++++++++++++-------------------------
 1 files changed, 94 insertions(+), 75 deletions(-)

diff --git a/src/views/home/index.vue b/src/views/home/index.vue
index 9645a61..897cbb0 100644
--- a/src/views/home/index.vue
+++ b/src/views/home/index.vue
@@ -1,24 +1,6 @@
 el
 <template>
-  <div class="header">
-    <img width="227px" height="74px" src="@/assets/home/logo.png" alt="" />
-    <img width="427px" height="74px" src="@/assets/home/Header.png" alt="" />
-    <div class="other">
-      <div class="item">
-        <img width="21px" height="21px" src="@/assets/home/share.png" alt="" />
-        <span>鍒嗕韩缃戠珯</span>
-      </div>
-      <div class="item">
-        <img
-          width="21px"
-          height="21px"
-          src="@/assets/home/BellFilled.png"
-          alt=""
-        />
-        <span>鎴戠殑娑堟伅</span>
-      </div>
-    </div>
-  </div>
+  <my-header />
   <div class="banner">
     <!-- <img width="100%" height="306px" src="@/assets/home/banner.png" alt="" /> -->
   </div>
@@ -163,29 +145,40 @@
               v-if="state.rolesCode.indexOf(item.code) !== -1"
               :underline="false"
               class="hover:cursor-pointer"
-              @click="toRegister"
+              @click="logOut"
               >閫�鍑�</el-link
+            >
+            <el-link
+              v-else-if="!state.accessToken"
+              :underline="false"
+              class="hover:cursor-pointer"
+              @click="toRegister(item)"
+              >娉ㄥ唽</el-link
             >
             <el-link
               v-else
               :underline="false"
               class="hover:cursor-pointer"
-              @click="toRegister"
-              >鐢宠</el-link
-            ><span class="m-2">|</span>
+              @click="toApply(item)"
+              ><span v-if="item.name !== '璇勫涓撳'">鐢宠</span></el-link
+            ><span
+              v-if="!state.accessToken || item.name !== '璇勫涓撳'"
+              class="m-2"
+              >|</span
+            >
             <el-link
               v-if="state.rolesCode.indexOf(item.code) !== -1"
               :underline="false"
               class="hover:cursor-pointer"
-              @click="toWelcome"
+              @click="toWelcome(item)"
               >杩涘叆</el-link
             >
             <el-link
               v-else
               :underline="false"
               class="hover:cursor-pointer"
-              :disabled="state.accessToken"
-              @click="toLogin"
+              :disabled="!!state.accessToken"
+              @click="toLogin(item)"
               >鐧诲綍</el-link
             >
           </div>
@@ -385,86 +378,108 @@
   <my-footer />
 </template>
 
-<script lang="ts" setup>
+<script lang="tsx" setup>
 import { onMounted, ref, computed, reactive } from "vue";
-import myFooter from "./component/myFooter.vue";
+import MyFooter from "./component/myFooter.vue";
+import MyHeader from "./component/myHeader.vue";
 import { useUserStoreHook } from "@/store/modules/user";
-import { exRole } from "@/api/register/index.ts";
+import { exRole } from "@/api/register/index";
 import { storageLocal, isString, isIncludeAllChildren } from "@pureadmin/utils";
+import { initRouter, getTopMenu } from "@/router/utils";
 
 import { getToken } from "@/utils/auth";
 import { useRoute, useRouter } from "vue-router";
+const router = useRouter();
+import { useUserStore } from "@/store/modules/user";
+import { addDialog } from "@/components/ReDialog";
+import { applyRole } from "@/api/register/index";
+import { message } from "@/utils/message";
+import type { userType } from "@/store/types";
+import type { RoleItem } from "@/api/types";
+
+const userStore = useUserStore();
+
+// 璁块棶 state 灞炴��
+// console.log(userStore.roles,'-'); // 鐩存帴鑾峰彇鍊�
 defineOptions({
-  name: "Main"
+  name: "MainPage"
 });
 let activeName = ref("first");
 /** 瑙掕壊锛堝鏋滄樀绉颁负绌哄垯鏄剧ず鐢ㄦ埛鍚嶏級 */
 const getUseRoles = () => {
   state.userInfo = storageLocal().getItem("user-info");
-  state.userInfo.exRoles.forEach(element => {
+  state.userInfo?.exRoles.forEach((element: RoleItem) => {
     state.rolesCode.push(element.code);
   });
 };
 const state = reactive({
   roleList: [],
   rolesCode: [],
-  userInfo: {},
+  userInfo: {} as userType,
   accessToken: ""
 });
 onMounted(() => {
-  exRole().then(res => {
-    state.roleList = res.result;
-  });
+  // exRole().then(res => {
+  //   state.roleList = res.result;
+  // });
+  state.roleList = useUserStoreHook().rolesList;
   getUseRoles();
-  state.accessToken = getToken().accessToken;
+  state.accessToken = getToken()?.accessToken;
 });
 
-const router = useRouter();
-const toRegister = () => {
-  router.push({ name: "Register" });
+const toRegister = item => {
+  router.push({ name: "newRegister", query: { code: item.code } });
 };
-const toWelcome = () => {
-  router.push({ name: "Welcome" });
+// 閫�鍑�
+const logOut = () => {
+  useUserStoreHook().logOut();
+  state.rolesCode = [];
+  state.accessToken = "";
 };
-const toLogin = () => {
+// 鐢宠
+const toApply = item => {
+  addDialog({
+    width: "20%",
+    title: "纭淇℃伅",
+    contentRenderer: () => <p>鏄惁鐢宠涓簕item.name}锛�</p>, // jsx 璇硶 锛堟敞鎰忓湪.vue鏂囦欢鍚敤jsx璇硶锛岄渶瑕佸湪script寮�鍚痩ang="tsx"锛�
+    closeCallBack: ({ options, args }) => {
+      if (args?.command === "cancel") {
+        // 鎮ㄧ偣鍑讳簡鍙栨秷鎸夐挳
+      } else if (args?.command === "sure") {
+        applyRole({ ruleCode: item.code }).then(res => {
+          if (res.code == 200) {
+            message("鐢宠鎴愬姛锛�", { type: "success" });
+          } else {
+            message(res?.message || "鐢宠澶辫触锛�", { type: "error" });
+          }
+        });
+      } else {
+      }
+    }
+  });
+  // router.push({ name: "RegisterNav", query: { code: item.code } });
+};
+// 鍘婚椤�
+const toWelcome = async item => {
+  // if (useUserStoreHook().nowRole.code !== item.code) {
+  // 鑾峰彇鍚庣璺敱
+  initRouter().then(() => {
+    console.log("hhhh");
+
+    useUserStoreHook().changeLogoInExRule({
+      ruleCode: item.code
+    });
+    router.push({ name: "Welcome" });
+  });
+  // }
+};
+// 鍘荤櫥褰�
+const toLogin = item => {
   router.push({ name: "Login" });
 };
 </script>
 
 <style lang="scss" scoped>
-.header {
-  display: flex;
-  align-items: center;
-  justify-content: space-evenly;
-  height: 80px;
-  width: 100%;
-  .middle {
-    width: 50%;
-    display: flex;
-    justify-content: space-around;
-    color: rgb(51, 51, 51);
-    font-family: 鎬濇簮榛戜綋;
-  }
-  .other {
-    display: flex;
-    .item {
-      display: flex;
-      justify-content: center;
-      width: 63px;
-      height: 48px;
-      color: rgb(51, 51, 51);
-      font-family: 鎬濇簮榛戜綋;
-      font-size: 12px;
-      font-weight: 400;
-      line-height: 20px;
-      letter-spacing: 0%;
-      text-align: left;
-      text-transform: capitalize;
-      flex-wrap: wrap;
-      margin-right: 10px;
-    }
-  }
-}
 .banner {
   //   left: -3.76px;
   //   top: 80px;
@@ -750,4 +765,8 @@
 a:active {
   color: #fff;
 }
+.el-link.is-disabled {
+  color: #a8abb2;
+  cursor: not-allowed;
+}
 </style>

--
Gitblit v1.9.1