zhuangyunsheng преди 1 година
родител
ревизия
cc74d43a6b
променени са 7 файла, в които са добавени 162 реда и са изтрити 244 реда
  1. 14 14
      src/layout/components/NavBar/index.vue
  2. 1 1
      src/micro/index.vue
  3. 1 1
      src/utils/request.js
  4. 89 6
      src/views/404.vue
  5. 55 219
      src/views/error/noPermission.vue
  6. 1 1
      src/views/login/index.vue
  7. 1 2
      src/views/system/userInfo.vue

+ 14 - 14
src/layout/components/NavBar/index.vue

@@ -29,7 +29,7 @@
 
                     <template #dropdown>
                         <el-dropdown-menu>
-                            <el-dropdown-item @click='goUserInfo'>个人信息</el-dropdown-item>
+                            <el-dropdown-item @click="goUserInfo">个人信息</el-dropdown-item>
                             <el-dropdown-item @click="logout">退出登录</el-dropdown-item>
                         </el-dropdown-menu>
                     </template>
@@ -40,29 +40,29 @@
 </template>
 
 <script setup>
-import TjmSideBar from '../SideBar/indexH.vue'
-import Breadcrumb from './components/Breadcrumb.vue'
-import FullScreenBtn from '@/layout/components/NavBar/components/FullScreenBtn.vue'
-import MenuSearch from '@/layout/components/NavBar/components/MenuSearch.vue'
-import LayoutStyleSet from '@/layout/components/NavBar/components/LayoutStyleSet.vue'
-import { useSettingStore } from '@/store/settings.js'
+import TjmSideBar from "../SideBar/indexH.vue"
+import Breadcrumb from "./components/Breadcrumb.vue"
+import FullScreenBtn from "@/layout/components/NavBar/components/FullScreenBtn.vue"
+import MenuSearch from "@/layout/components/NavBar/components/MenuSearch.vue"
+import LayoutStyleSet from "@/layout/components/NavBar/components/LayoutStyleSet.vue"
+import { useSettingStore } from "@/store/settings.js"
 const settingStore = useSettingStore()
 const { collapse, layoutStyle } = storeToRefs(settingStore)
-import { useUserStore } from '@/store/user.js'
+import { useUserStore } from "@/store/user.js"
 const router = useRouter()
 const avatar = ref(useUserStore().userInfo.avatar);
 const errorHandler = () => true
 
 function goUserInfo() {
-    router.push('/userInfo')
+    router.push("/userInfo")
 }
 const logout = () => {
-    ElMessageBox.confirm('确定注销并退出系统吗?', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
+    ElMessageBox.confirm("确定注销并退出系统吗?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
     }).then(() => {
-        useUserStore().logOut().then(() => location.href = "/index");
+        useUserStore().logOut().then(() => location.href = "/");
     }).catch(() => { })
 }
 </script>

+ 1 - 1
src/micro/index.vue

@@ -51,7 +51,7 @@ function error() {
         message: "工作流项目渲染出错请检查工作流项目",
         type: "error"
     })
-    router.push("/index")
+    router.push("/")
 }
 </script>
 

+ 1 - 1
src/utils/request.js

@@ -37,7 +37,7 @@ request.interceptors.response.use(
 
         if (error.response.data.code == 401 || error.response.status == 401) {
             ElMessageBox.confirm("登录状态已过期,请重新登录", "系统提示", { confirmButtonText: "重新登录", cancelButtonText: "取消", type: "warning" }).then(() => {
-                useUserStore().logOut().then(() => location.href = "/index");
+                useUserStore().logOut().then(() => location.href = "/");
             })
         } else {
             if (message == "Network Error") {

+ 89 - 6
src/views/404.vue

@@ -1,12 +1,95 @@
+<template>
+    <div class="wscn-http404-container">
+        <div class="wscn-http404">
+            <div class="wscn-http404__oops">无权限或找不到页面</div>
+            <div class="wscn-http404__info">当前页面无权限访问或者打开了一个不存在的链接,请检查当前账户权限和链接的可访问性。</div>
+            <div class="wscn-http404__btn">
+                <el-button type="primary" plain @click="gohome">返回首页</el-button>
+                <el-button type="primary" @click="goback">返回上一页</el-button>
+            </div>
+        </div>
+    </div>
+</template>
+
 <script setup>
+const router = useRouter();
 
+function gohome() {
+    location.href = "/";
+}
+
+function goback() {
+    router.go(-1);
+}
 </script>
 
-<template>
-    <div>
-        404 not found
-    </div>
-</template>
+<style lang="scss" scoped>
+@keyframes slideUp {
+  0% {
+    transform: translateY(60px);
+    opacity: 0;
+  }
+  100% {
+    transform: translateY(0);
+    opacity: 1;
+  }
+}
+
+.wscn-http404-container {
+  transform: translate(-50%, -50%);
+  position: absolute;
+  top: 40%;
+  left: 50%;
+
+  .wscn-http404 {
+    overflow: hidden;
+    width: 1200px;
+    padding: 30px 50px;
+    text-align: center;
+
+    .wscn-http404__oops {
+      margin-bottom: 20px;
+      line-height: 40px;
+      font-size: 32px;
+      font-weight: bold;
+      color: var(--el-color-primary);
+      opacity: 0;
+      animation-name: slideUp;
+      animation-duration: 0.5s;
+      animation-fill-mode: forwards;
+    }
+
+    .wscn-http404__info {
+      margin-bottom: 30px;
+      line-height: 21px;
+      font-size: 13px;
+      color: var(--el-color-info);
+      opacity: 0;
+      animation-name: slideUp;
+      animation-duration: 0.5s;
+      animation-delay: 0.2s;
+      animation-fill-mode: forwards;
+    }
+
+    .wscn-http404__btn {
+      .el-button {
+        width: 110px;
+        height: 36px;
+        padding: 0;
+        border: none;
+        border-radius: 100px;
+        line-height: 36px;
+        opacity: 0;
+        animation-name: slideUp;
+        animation-duration: 0.5s;
+        animation-delay: 0.3s;
+        animation-fill-mode: forwards;
+      }
 
-<style lang='scss' scoped>
+      .el-button + .el-button {
+        margin-left: 60px;
+      }
+    }
+  }
+}
 </style>

+ 55 - 219
src/views/error/noPermission.vue

@@ -1,13 +1,9 @@
 <template>
     <div class="wscn-http404-container">
         <div class="wscn-http404">
-            <div class="bullshit">
-                <div class="bullshit__oops">该账户无权登录!</div>
-                <div class="bullshit__info">对不起,您的账号无权登录系统。请联系系统管理员进行授权。</div>
-                <div class="bullshit__btn">
-                    <div class="bullshit__btn-return-home" id="returnHomeBtn" @click="go">返回重新登录</div>
-                </div>
-            </div>
+            <div class="wscn-http404__oops">该账户无权登录!</div>
+            <div class="wscn-http404__info">对不起,您的账号无权登录系统。请联系系统管理员进行授权。</div>
+            <el-button type="primary" @click="go">返回重新登录</el-button>
         </div>
     </div>
 </template>
@@ -16,231 +12,71 @@
 import { useUserStore } from "@/store/user";
 
 function go() {
-    useUserStore().logOut().then(() => location.href = "/index");
+    useUserStore().logOut().then(() => location.href = "/");
 }
 </script>
 
 <style lang="scss" scoped>
-.wscn-http404-container {
-  transform: translate(-50%, -50%);
-  position: absolute;
-  top: 40%;
-  left: 50%;
-}
-
-.wscn-http404 {
-  position: relative;
-  width: 1200px;
-  padding: 0 50px;
-  overflow: hidden;
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-}
-
-.wscn-http404 .pic-404 {
-  position: relative;
-  float: left;
-  width: 600px;
-  overflow: hidden;
-  display: flex;
-  justify-content: center;
-}
-
-.wscn-http404 .pic-404 img {
-  width: 120px;
-  height: 120px;
-}
-
-.wscn-http404 .pic-404__parent {
-  width: 100%;
-}
-
-.wscn-http404 .pic-404__child {
-  position: absolute;
-}
-
-.wscn-http404 .pic-404__child.left {
-  width: 80px;
-  top: 17px;
-  left: 220px;
-  opacity: 0;
-  animation-name: cloudLeft;
-  animation-duration: 2s;
-  animation-timing-function: linear;
-  animation-fill-mode: forwards;
-  animation-delay: 1s;
-}
-
-.wscn-http404 .pic-404__child.mid {
-  width: 46px;
-  top: 10px;
-  left: 420px;
-  opacity: 0;
-  animation-name: cloudMid;
-  animation-duration: 2s;
-  animation-timing-function: linear;
-  animation-fill-mode: forwards;
-  animation-delay: 1.2s;
-}
-
-.wscn-http404 .pic-404__child.right {
-  width: 62px;
-  top: 100px;
-  left: 500px;
-  opacity: 0;
-  animation-name: cloudRight;
-  animation-duration: 2s;
-  animation-timing-function: linear;
-  animation-fill-mode: forwards;
-  animation-delay: 1s;
-}
-
-@keyframes cloudLeft {
+@keyframes slideUp {
   0% {
-    top: 17px;
-    left: 220px;
+    transform: translateY(60px);
     opacity: 0;
   }
-  20% {
-    top: 33px;
-    left: 188px;
-    opacity: 1;
-  }
-  80% {
-    top: 81px;
-    left: 92px;
-    opacity: 1;
-  }
   100% {
-    top: 97px;
-    left: 60px;
-    opacity: 0;
-  }
-}
-
-@keyframes cloudMid {
-  0% {
-    top: 10px;
-    left: 420px;
-    opacity: 0;
-  }
-  20% {
-    top: 40px;
-    left: 360px;
-    opacity: 1;
-  }
-  70% {
-    top: 130px;
-    left: 180px;
-    opacity: 1;
-  }
-  100% {
-    top: 160px;
-    left: 120px;
-    opacity: 0;
-  }
-}
-
-@keyframes cloudRight {
-  0% {
-    top: 100px;
-    left: 500px;
-    opacity: 0;
-  }
-  20% {
-    top: 120px;
-    left: 460px;
-    opacity: 1;
-  }
-  80% {
-    top: 180px;
-    left: 340px;
+    transform: translateY(0);
     opacity: 1;
   }
-  100% {
-    top: 200px;
-    left: 300px;
-    opacity: 0;
-  }
 }
 
-.wscn-http404 .bullshit {
-  position: relative;
-  float: left;
-  padding: 30px 0;
-  overflow: hidden;
-  text-align: center;
-}
-
-.wscn-http404 .bullshit__oops {
-  font-size: 32px;
-  font-weight: bold;
-  line-height: 40px;
-  color: #1482f0;
-  opacity: 0;
-  margin-bottom: 20px;
-  animation-name: slideUp;
-  animation-duration: 0.5s;
-  animation-fill-mode: forwards;
-}
-
-.wscn-http404 .bullshit__headline {
-  font-size: 20px;
-  line-height: 24px;
-  color: #222;
-  font-weight: bold;
-  opacity: 0;
-  margin-bottom: 10px;
-  animation-name: slideUp;
-  animation-duration: 0.5s;
-  animation-delay: 0.1s;
-  animation-fill-mode: forwards;
-}
-
-.wscn-http404 .bullshit__info {
-  font-size: 13px;
-  line-height: 21px;
-  color: grey;
-  opacity: 0;
-  margin-bottom: 30px;
-  animation-name: slideUp;
-  animation-duration: 0.5s;
-  animation-delay: 0.2s;
-  animation-fill-mode: forwards;
-}
-
-.wscn-http404 .bullshit__btn {
-  display: flex;
-  justify-content: center;
-}
-
-.wscn-http404 .bullshit__btn-return-home {
-  display: block;
-  width: 110px;
-  height: 36px;
-  background: #1482f0;
-  border-radius: 100px;
-  text-align: center;
-  color: #ffffff;
-  opacity: 0;
-  font-size: 14px;
-  line-height: 36px;
-  cursor: pointer;
-  animation-name: slideUp;
-  animation-duration: 0.5s;
-  animation-delay: 0.3s;
-  animation-fill-mode: forwards;
-}
+.wscn-http404-container {
+  transform: translate(-50%, -50%);
+  position: absolute;
+  top: 40%;
+  left: 50%;
 
-@keyframes slideUp {
-  0% {
-    transform: translateY(60px);
-    opacity: 0;
-  }
-  100% {
-    transform: translateY(0);
-    opacity: 1;
+  .wscn-http404 {
+    overflow: hidden;
+    width: 1200px;
+    padding: 30px 50px;
+    text-align: center;
+
+    .wscn-http404__oops {
+      margin-bottom: 20px;
+      line-height: 40px;
+      font-size: 32px;
+      font-weight: bold;
+      color: var(--el-color-primary);
+      opacity: 0;
+      animation-name: slideUp;
+      animation-duration: 0.5s;
+      animation-fill-mode: forwards;
+    }
+
+    .wscn-http404__info {
+      margin-bottom: 30px;
+      line-height: 21px;
+      font-size: 13px;
+      color: var(--el-color-info);
+      opacity: 0;
+      animation-name: slideUp;
+      animation-duration: 0.5s;
+      animation-delay: 0.2s;
+      animation-fill-mode: forwards;
+    }
+
+    .el-button {
+      width: 110px;
+      height: 36px;
+      padding: 0;
+      border: none;
+      border-radius: 100px;
+      line-height: 36px;
+      opacity: 0;
+      animation-name: slideUp;
+      animation-duration: 0.5s;
+      animation-delay: 0.3s;
+      animation-fill-mode: forwards;
+    }
   }
 }
 </style>

+ 1 - 1
src/views/login/index.vue

@@ -73,7 +73,7 @@ const login = () => {
   			islogin.value = true;
             useUserStore().login(form.value).then(() => {
                 islogin.value = false;
-                router.push("/");
+                router.replace("/");
             }).catch(code => {
                 islogin.value = false;
                 if (code === 204) {

+ 1 - 2
src/views/system/userInfo.vue

@@ -124,7 +124,6 @@ import API from "@/api/system/log";
 import Folder from "@/api/folder.js";
 import { Encrypt } from "@/utils/aes";
 import { useUserStore } from "@/store/user";
-import router from "@/router";
 
 const pwdFormRef = ref(null)
 const isPwdDialogVisible = ref(false)
@@ -231,7 +230,7 @@ function changePassword() {
                 if (res.code == 200) {
                     cancelPassword()
                     ElMessage.success('密码修改成功')
-                    API.add("用户修改密码", "update_password").then(() => useUserStore().logOut().then(() => location.href = "/index"));
+                    API.add("用户修改密码", "update_password").then(() => useUserStore().logOut().then(() => location.href = "/"));
                 } else {
                     ElMessage.error(res.msg)
                 }