release: update 5.1.0

This commit is contained in:
xiaoxian521
2024-03-09 22:45:04 +08:00
parent d543b57e34
commit 70772864ac
152 changed files with 8006 additions and 8599 deletions

View File

@@ -14,8 +14,8 @@ const router = useRouter();
<noAccess />
<div class="ml-12">
<p
class="font-medium text-4xl mb-4 dark:text-white"
v-motion
class="font-medium text-4xl mb-4 dark:text-white"
:initial="{
opacity: 0,
y: 100
@@ -24,15 +24,15 @@ const router = useRouter();
opacity: 1,
y: 0,
transition: {
delay: 100
delay: 80
}
}"
>
403
</p>
<p
class="mb-4 text-gray-500"
v-motion
class="mb-4 text-gray-500"
:initial="{
opacity: 0,
y: 100
@@ -41,16 +41,15 @@ const router = useRouter();
opacity: 1,
y: 0,
transition: {
delay: 300
delay: 120
}
}"
>
抱歉你无权访问该页面
</p>
<el-button
type="primary"
@click="router.push('/')"
v-motion
type="primary"
:initial="{
opacity: 0,
y: 100
@@ -59,9 +58,10 @@ const router = useRouter();
opacity: 1,
y: 0,
transition: {
delay: 500
delay: 160
}
}"
@click="router.push('/')"
>
返回首页
</el-button>

View File

@@ -14,8 +14,8 @@ const router = useRouter();
<noExist />
<div class="ml-12">
<p
class="font-medium text-4xl mb-4 dark:text-white"
v-motion
class="font-medium text-4xl mb-4 dark:text-white"
:initial="{
opacity: 0,
y: 100
@@ -24,15 +24,15 @@ const router = useRouter();
opacity: 1,
y: 0,
transition: {
delay: 100
delay: 80
}
}"
>
404
</p>
<p
class="mb-4 text-gray-500"
v-motion
class="mb-4 text-gray-500"
:initial="{
opacity: 0,
y: 100
@@ -41,16 +41,15 @@ const router = useRouter();
opacity: 1,
y: 0,
transition: {
delay: 300
delay: 120
}
}"
>
抱歉你访问的页面不存在
</p>
<el-button
type="primary"
@click="router.push('/')"
v-motion
type="primary"
:initial="{
opacity: 0,
y: 100
@@ -59,9 +58,10 @@ const router = useRouter();
opacity: 1,
y: 0,
transition: {
delay: 500
delay: 160
}
}"
@click="router.push('/')"
>
返回首页
</el-button>

View File

@@ -14,8 +14,8 @@ const router = useRouter();
<noServer />
<div class="ml-12">
<p
class="font-medium text-4xl mb-4 dark:text-white"
v-motion
class="font-medium text-4xl mb-4 dark:text-white"
:initial="{
opacity: 0,
y: 100
@@ -24,15 +24,15 @@ const router = useRouter();
opacity: 1,
y: 0,
transition: {
delay: 100
delay: 80
}
}"
>
500
</p>
<p
class="mb-4 text-gray-500"
v-motion
class="mb-4 text-gray-500"
:initial="{
opacity: 0,
y: 100
@@ -41,16 +41,15 @@ const router = useRouter();
opacity: 1,
y: 0,
transition: {
delay: 300
delay: 120
}
}"
>
抱歉服务器出错了
</p>
<el-button
type="primary"
@click="router.push('/')"
v-motion
type="primary"
:initial="{
opacity: 0,
y: 100
@@ -59,9 +58,10 @@ const router = useRouter();
opacity: 1,
y: 0,
transition: {
delay: 500
delay: 160
}
}"
@click="router.push('/')"
>
返回首页
</el-button>

View File

@@ -108,8 +108,8 @@ onBeforeUnmount(() => {
@click="translationCh"
>
<IconifyIconOffline
class="check-zh"
v-show="locale === 'zh'"
class="check-zh"
:icon="Check"
/>
简体中文
@@ -119,7 +119,7 @@ onBeforeUnmount(() => {
:class="['dark:!text-white', getDropdownItemClass(locale, 'en')]"
@click="translationEn"
>
<span class="check-en" v-show="locale === 'en'">
<span v-show="locale === 'en'" class="check-en">
<IconifyIconOffline :icon="Check" />
</span>
English
@@ -157,8 +157,8 @@ onBeforeUnmount(() => {
prop="username"
>
<el-input
clearable
v-model="ruleForm.username"
clearable
:placeholder="t('login.username')"
:prefix-icon="useRenderIcon(User)"
/>
@@ -168,9 +168,9 @@ onBeforeUnmount(() => {
<Motion :delay="150">
<el-form-item prop="password">
<el-input
v-model="ruleForm.password"
clearable
show-password
v-model="ruleForm.password"
:placeholder="t('login.password')"
:prefix-icon="useRenderIcon(Lock)"
/>

View File

@@ -1,75 +1,99 @@
<script setup lang="ts">
import { type CSSProperties, computed } from "vue";
import { hasAuth, getAuths } from "@/router/utils";
defineOptions({
name: "PermissionButton"
});
const elStyle = computed((): CSSProperties => {
return {
width: "85vw",
justifyContent: "start"
};
});
</script>
<template>
<el-space direction="vertical" size="large">
<el-tag :style="elStyle" size="large" effect="dark">
当前拥有的code列表{{ getAuths() }}
</el-tag>
<div>
<p class="mb-2">当前拥有的code列表{{ getAuths() }}</p>
<el-card shadow="never" :style="elStyle">
<el-card shadow="never" class="mb-2">
<template #header>
<div class="card-header">组件方式判断权限</div>
</template>
<Auth value="btn_add">
<el-button type="success"> 拥有code'btn_add' 权限可见 </el-button>
</Auth>
<Auth :value="['btn_edit']">
<el-button type="primary"> 拥有code['btn_edit'] 权限可见 </el-button>
</Auth>
<Auth :value="['btn_add', 'btn_edit', 'btn_delete']">
<el-button type="danger">
拥有code['btn_add', 'btn_edit', 'btn_delete'] 权限可见
</el-button>
</Auth>
<el-space wrap>
<Auth value="permission:btn:add">
<el-button plain type="warning">
拥有code'permission:btn:add' 权限可见
</el-button>
</Auth>
<Auth :value="['permission:btn:edit']">
<el-button plain type="primary">
拥有code['permission:btn:edit'] 权限可见
</el-button>
</Auth>
<Auth
:value="[
'permission:btn:add',
'permission:btn:edit',
'permission:btn:delete'
]"
>
<el-button plain type="danger">
拥有code['permission:btn:add', 'permission:btn:edit',
'permission:btn:delete'] 权限可见
</el-button>
</Auth>
</el-space>
</el-card>
<el-card shadow="never" :style="elStyle">
<el-card shadow="never" class="mb-2">
<template #header>
<div class="card-header">函数方式判断权限</div>
</template>
<el-button type="success" v-if="hasAuth('btn_add')">
拥有code'btn_add' 权限可见
</el-button>
<el-button type="primary" v-if="hasAuth(['btn_edit'])">
拥有code['btn_edit'] 权限可见
</el-button>
<el-button
type="danger"
v-if="hasAuth(['btn_add', 'btn_edit', 'btn_delete'])"
>
拥有code['btn_add', 'btn_edit', 'btn_delete'] 权限可见
</el-button>
<el-space wrap>
<el-button v-if="hasAuth('permission:btn:add')" plain type="warning">
拥有code'permission:btn:add' 权限可见
</el-button>
<el-button v-if="hasAuth(['permission:btn:edit'])" plain type="primary">
拥有code['permission:btn:edit'] 权限可见
</el-button>
<el-button
v-if="
hasAuth([
'permission:btn:add',
'permission:btn:edit',
'permission:btn:delete'
])
"
plain
type="danger"
>
拥有code['permission:btn:add', 'permission:btn:edit',
'permission:btn:delete'] 权限可见
</el-button>
</el-space>
</el-card>
<el-card shadow="never" :style="elStyle">
<el-card shadow="never">
<template #header>
<div class="card-header">
指令方式判断权限(该方式不能动态修改权限)
</div>
</template>
<el-button type="success" v-auth="'btn_add'">
拥有code'btn_add' 权限可见
</el-button>
<el-button type="primary" v-auth="['btn_edit']">
拥有code['btn_edit'] 权限可见
</el-button>
<el-button type="danger" v-auth="['btn_add', 'btn_edit', 'btn_delete']">
拥有code['btn_add', 'btn_edit', 'btn_delete'] 权限可见
</el-button>
<el-space wrap>
<el-button v-auth="'permission:btn:add'" plain type="warning">
拥有code'permission:btn:add' 权限可见
</el-button>
<el-button v-auth="['permission:btn:edit']" plain type="primary">
拥有code['permission:btn:edit'] 权限可见
</el-button>
<el-button
v-auth="[
'permission:btn:add',
'permission:btn:edit',
'permission:btn:delete'
]"
plain
type="danger"
>
拥有code['permission:btn:add', 'permission:btn:edit',
'permission:btn:delete'] 权限可见
</el-button>
</el-space>
</el-card>
</el-space>
</div>
</template>

View File

@@ -1,6 +1,6 @@
<script setup lang="ts">
import { initRouter } from "@/router/utils";
import { storageSession } from "@pureadmin/utils";
import { storageLocal } from "@pureadmin/utils";
import { type CSSProperties, ref, computed } from "vue";
import { useUserStoreHook } from "@/store/modules/user";
import { usePermissionStoreHook } from "@/store/modules/permission";
@@ -34,7 +34,7 @@ function onChange() {
.loginByUsername({ username: username.value, password: "admin123" })
.then(res => {
if (res.success) {
storageSession().removeItem("async-routes");
storageLocal().removeItem("async-routes");
usePermissionStoreHook().clearAllCachePage();
initRouter();
}
@@ -43,17 +43,17 @@ function onChange() {
</script>
<template>
<el-space direction="vertical" size="large">
<el-tag :style="elStyle" size="large" effect="dark">
模拟后台根据不同角色返回对应路由具体参考完整版pure-admin代码
</el-tag>
<div>
<p class="mb-2">
模拟后台根据不同角色返回对应路由观察左侧菜单变化管理员角色可查看系统管理菜单普通角色不可查看系统管理菜单
</p>
<el-card shadow="never" :style="elStyle">
<template #header>
<div class="card-header">
<span>当前角色{{ username }}</span>
</div>
</template>
<el-select v-model="username" @change="onChange">
<el-select v-model="username" class="!w-[160px]" @change="onChange">
<el-option
v-for="item in options"
:key="item.value"
@@ -62,5 +62,5 @@ function onChange() {
/>
</el-select>
</el-card>
</el-space>
</div>
</template>