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