'admin-22.07.10:发布v2.2.0版本,具体查看master分支根目录CHANGELOG.md'

This commit is contained in:
lyt
2022-07-10 19:37:39 +08:00
parent fdf9cd4abe
commit e57dde4bab
33 changed files with 523 additions and 511 deletions

View File

@ -172,7 +172,7 @@ export default defineComponent({
.notice-bar-warp-slot {
width: 100%;
white-space: nowrap;
::v-deep(.el-carousel__item) {
:deep(.el-carousel__item) {
display: flex;
align-items: center;
}

View File

@ -28,7 +28,7 @@
<div v-show="isShowLoockLogin" class="layout-lock-screen-login">
<div class="layout-lock-screen-login-box">
<div class="layout-lock-screen-login-box-img">
<img src="https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1813762643,1914315241&fm=26&gp=0.jpg" />
<img src="https://img2.baidu.com/it/u=1978192862,2048448374&fm=253&fmt=auto&app=138&f=JPEG?w=504&h=500" />
</div>
<div class="layout-lock-screen-login-box-name">Administrator</div>
<div class="layout-lock-screen-login-box-value">
@ -359,11 +359,11 @@ export default defineComponent({
}
}
}
::v-deep(.el-input-group__append) {
:deep(.el-input-group__append) {
background: var(--el-color-white);
padding: 0px 15px;
}
::v-deep(.el-input__inner) {
:deep(.el-input__inner) {
border-right-color: var(--el-border-color-extra-light);
&:hover {
border-color: var(--el-border-color-extra-light);

View File

@ -148,11 +148,11 @@ export default defineComponent({
font-size: 14px;
margin-right: 5px;
}
::v-deep(.el-breadcrumb__separator) {
:deep(.el-breadcrumb__separator) {
opacity: 0.7;
color: var(--next-bg-topBarColor);
}
::v-deep(.el-breadcrumb__inner a, .el-breadcrumb__inner.is-link) {
:deep(.el-breadcrumb__inner a, .el-breadcrumb__inner.is-link) {
font-weight: unset !important;
color: var(--next-bg-topBarColor);
&:hover {

View File

@ -42,7 +42,7 @@ export default defineComponent({
background: rgba(0, 0, 0, 0.1);
transition: all 0.3s ease;
position: relative;
::v-deep(i) {
:deep(i) {
position: absolute;
left: 10px;
top: 35px;
@ -52,7 +52,7 @@ export default defineComponent({
}
&:hover {
transition: all 0.3s ease;
::v-deep(i) {
:deep(i) {
color: var(--el-color-primary);
transition: all 0.3s ease;
}

View File

@ -122,12 +122,12 @@ export default defineComponent({
<style scoped lang="scss">
.layout-search-dialog {
::v-deep(.el-dialog) {
:deep(.el-dialog) {
box-shadow: unset !important;
border-radius: 0 !important;
background: rgba(0, 0, 0, 0.5);
}
::v-deep(.el-autocomplete) {
:deep(.el-autocomplete) {
width: 560px;
position: absolute;
top: 100px;

View File

@ -679,7 +679,7 @@ export default defineComponent({
.layout-breadcrumb-seting-bar {
height: calc(100vh - 50px);
padding: 0 15px;
::v-deep(.el-scrollbar__view) {
:deep(.el-scrollbar__view) {
overflow-x: hidden !important;
}
.layout-breadcrumb-seting-bar-flex {

View File

@ -160,7 +160,8 @@ export default defineComponent({
},
})
.then(async () => {
Session.clear(); // 清除缓存/token等
// 清除缓存/token等
Session.clear();
// 使用 reload 时,不需要调用 resetRoute() 重置路由
window.location.reload();
})
@ -282,16 +283,16 @@ export default defineComponent({
}
}
}
::v-deep(.el-dropdown) {
:deep(.el-dropdown) {
color: var(--next-bg-topBarColor);
}
::v-deep(.el-badge) {
:deep(.el-badge) {
height: 40px;
line-height: 40px;
display: flex;
align-items: center;
}
::v-deep(.el-badge__content.is-fixed) {
:deep(.el-badge__content.is-fixed) {
top: 12px;
}
}

View File

@ -108,7 +108,7 @@ export default defineComponent({
opacity: 1;
}
}
::v-deep(.el-empty__description p) {
:deep(.el-empty__description p) {
font-size: 13px;
}
}

View File

@ -607,7 +607,7 @@ export default defineComponent({
border-bottom: 1px solid var(--next-border-color-light);
position: relative;
z-index: 4;
::v-deep(.el-scrollbar__wrap) {
:deep(.el-scrollbar__wrap) {
overflow-x: auto !important;
}
&-ul {

View File

@ -141,10 +141,10 @@ export default defineComponent({
flex: 1;
overflow: hidden;
margin-right: 30px;
::v-deep(.el-scrollbar__bar.is-vertical) {
:deep(.el-scrollbar__bar.is-vertical) {
display: none;
}
::v-deep(a) {
:deep(a) {
width: 100%;
}
.el-menu.el-menu--horizontal {

View File

@ -33,14 +33,14 @@ const dynamicViewsModules: Record<string, Function> = Object.assign({}, { ...lay
* @method setAddRoute 添加动态路由
* @method setFilterMenuAndCacheTagsViewRoutes 设置路由到 vuex routesList 中(已处理成多级嵌套路由)及缓存多级嵌套数组处理后的一维数组
*/
export async function initBackEndControlRoutes() {
// 界面 loading 动画开始执行
if (window.nextLoading === undefined) NextLoading.start();
// 无 token 停止执行下一步
if (!Session.get('token')) return false;
// 触发初始化用户信息 pinia
useUserInfo().setUserInfos();
// https://gitee.com/lyt-top/vue-next-admin/issues/I5F1HP
await useUserInfo().setUserInfos();
// 获取路由菜单数据
const res = await getBackEndControlRoutes();
// 存储接口原始路由未处理component根据需求选择使用

View File

@ -24,7 +24,8 @@ export async function initFrontEndControlRoutes() {
// 无 token 停止执行下一步
if (!Session.get('token')) return false;
// 触发初始化用户信息 pinia
useUserInfo(pinia).setUserInfos();
// https://gitee.com/lyt-top/vue-next-admin/issues/I5F1HP
await useUserInfo(pinia).setUserInfos();
// 添加动态路由
await setAddRoute();
// 设置递归过滤有权限的路由到 vuex routesList 中(已处理成多级嵌套路由)及缓存多级嵌套数组处理后的一维数组

View File

@ -85,9 +85,6 @@ export function formatTwoStageRoutes(arr: any) {
return newArr;
}
// isRequestRoutes 为 true则开启后端控制路由路径`/src/stores/themeConfig.ts`
if (!isRequestRoutes) initFrontEndControlRoutes();
// 路由加载前
router.beforeEach(async (to, from, next) => {
NProgress.configure({ showSpinner: false });
@ -114,6 +111,10 @@ router.beforeEach(async (to, from, next) => {
// 动态添加路由:防止非首页刷新时跳转回首页的问题
// 确保 addRoute() 时动态添加的路由已经被完全加载上去
next({ ...to, replace: true });
} else {
// https://gitee.com/lyt-top/vue-next-admin/issues/I5F1HP
await initFrontEndControlRoutes();
next({ ...to, replace: true });
}
} else {
next();

View File

@ -1164,18 +1164,6 @@ export const notFoundAndNoPower = [
* @returns 返回路由菜单数据
*/
export const staticRoutes: Array<RouteRecordRaw> = [
{
path: '/',
name: '/',
component: () => import('/@/layout/index.vue'),
meta: {
title: '布局界面',
},
children: [
// 请不要往这里 `children` 中添加内容,此内容为了防止 No match found for location with path "xxx" 问题
...notFoundAndNoPower,
],
},
{
path: '/login',
name: 'login',

View File

@ -19,46 +19,54 @@ export const useUserInfo = defineStore('userInfo', {
}),
actions: {
async setUserInfos() {
// 模拟数据,请求接口时,记得删除多余代码及对应依赖的引入
const userName = Cookies.get('userName');
// 模拟数据
let defaultRoles: Array<string> = [];
let defaultAuthBtnList: Array<string> = [];
// admin 页面权限标识,对应路由 meta.roles用于控制路由的显示/隐藏
let adminRoles: Array<string> = ['admin'];
// admin 按钮权限标识
let adminAuthBtnList: Array<string> = ['btn.add', 'btn.del', 'btn.edit', 'btn.link'];
// test 页面权限标识,对应路由 meta.roles用于控制路由的显示/隐藏
let testRoles: Array<string> = ['common'];
// test 按钮权限标识
let testAuthBtnList: Array<string> = ['btn.add', 'btn.link'];
// 不同用户模拟不同的用户权限
if (userName === 'admin') {
defaultRoles = adminRoles;
defaultAuthBtnList = adminAuthBtnList;
} else {
defaultRoles = testRoles;
defaultAuthBtnList = testAuthBtnList;
}
// 用户信息模拟数据
const userInfos = {
userName: userName,
photo:
userName === 'admin'
? 'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1813762643,1914315241&fm=26&gp=0.jpg'
: 'https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=317673774,2961727727&fm=26&gp=0.jpg',
time: new Date().getTime(),
roles: defaultRoles,
authBtnList: defaultAuthBtnList,
};
// 存储用户信息到浏览器缓存
Session.set('userInfo', userInfos);
if (Session.get('userInfo')) {
this.userInfos = Session.get('userInfo');
} else {
const userInfos: any = await this.getApiUserInfo();
this.userInfos = userInfos;
}
},
// 模拟接口数据
// https://gitee.com/lyt-top/vue-next-admin/issues/I5F1HP
async getApiUserInfo() {
return new Promise((resolve) => {
setTimeout(() => {
// 模拟数据,请求接口时,记得删除多余代码及对应依赖的引入
const userName = Cookies.get('userName');
// 模拟数据
let defaultRoles: Array<string> = [];
let defaultAuthBtnList: Array<string> = [];
// admin 页面权限标识,对应路由 meta.roles用于控制路由的显示/隐藏
let adminRoles: Array<string> = ['admin'];
// admin 按钮权限标识
let adminAuthBtnList: Array<string> = ['btn.add', 'btn.del', 'btn.edit', 'btn.link'];
// test 页面权限标识,对应路由 meta.roles用于控制路由的显示/隐藏
let testRoles: Array<string> = ['common'];
// test 按钮权限标识
let testAuthBtnList: Array<string> = ['btn.add', 'btn.link'];
// 不同用户模拟不同的用户权限
if (userName === 'admin') {
defaultRoles = adminRoles;
defaultAuthBtnList = adminAuthBtnList;
} else {
defaultRoles = testRoles;
defaultAuthBtnList = testAuthBtnList;
}
// 用户信息模拟数据
const userInfos = {
userName: userName,
photo:
userName === 'admin'
? 'https://img2.baidu.com/it/u=1978192862,2048448374&fm=253&fmt=auto&app=138&f=JPEG?w=504&h=500'
: 'https://img2.baidu.com/it/u=2370931438,70387529&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500',
time: new Date().getTime(),
roles: defaultRoles,
authBtnList: defaultAuthBtnList,
};
resolve(userInfos);
}, 3000);
});
},
},
});

View File

@ -412,15 +412,15 @@
flex: 1;
width: 100%;
margin-left: 10px;
::v-deep(.el-progress__text) {
:deep(.el-progress__text) {
color: var(--el-text-color-primary);
font-size: 12px !important;
text-align: right;
}
::v-deep(.el-progress-bar__outer) {
:deep(.el-progress-bar__outer) {
background-color: rgba(0, 0, 0, 0.1) !important;
}
::v-deep(.el-progress-bar) {
:deep(.el-progress-bar) {
margin-right: -22px !important;
}
}

View File

@ -22,7 +22,6 @@
<script lang="ts">
import { defineComponent, computed } from 'vue';
import { useRouter } from 'vue-router';
import { storeToRefs } from 'pinia';
import { useThemeConfig } from '/@/stores/themeConfig';
import { useTagsViewRoutes } from '/@/stores/tagsViewRoutes';
@ -35,10 +34,12 @@ export default defineComponent({
const storesTagsViewRoutes = useTagsViewRoutes();
const { themeConfig } = storeToRefs(storesThemeConfig);
const { isTagsViewCurrenFull } = storeToRefs(storesTagsViewRoutes);
const router = useRouter();
const onSetAuth = () => {
// https://gitee.com/lyt-top/vue-next-admin/issues/I5C3JS
// 清除缓存/token等
Session.clear();
router.push('/login');
// 使用 reload 时,不需要调用 resetRoute() 重置路由
window.location.reload();
};
// 设置主内容的高度
const initTagViewHeight = computed(() => {

View File

@ -110,7 +110,7 @@ export default defineComponent({
<style scoped lang="scss">
.fun-tagsview {
.fun-tagsview-from-item {
::v-deep(.el-form-item__content) {
:deep(.el-form-item__content) {
margin-left: 0 !important;
}
}

View File

@ -48,7 +48,7 @@ export default defineComponent({
frontEndsResetRoute();
Cookies.set('userName', state.userAuth);
// 模拟切换不同权限用户
storesUserInfo.setUserInfos();
await storesUserInfo.setUserInfos();
await setAddRoute();
setFilterMenuAndCacheTagsViewRoutes();
};

View File

@ -47,7 +47,7 @@ export default defineComponent({
text-align: center;
@extend .login-scan-animation;
animation-delay: 0.1s;
::v-deep(img) {
:deep(img) {
margin: auto;
}
.login-msg {

View File

@ -328,7 +328,7 @@ export default defineComponent({
}
}
}
::v-deep(.el-card__body) {
:deep(.el-card__body) {
height: 100%;
.filtering-no-data {
display: flex;

View File

@ -13,10 +13,10 @@ export default defineComponent({
name: 'pagesPreview',
setup() {
const state = reactive({
url: 'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1813762643,1914315241&fm=26&gp=0.jpg',
url: 'https://img2.baidu.com/it/u=1978192862,2048448374&fm=253&fmt=auto&app=138&f=JPEG?w=504&h=500',
srcList: [
'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1813762643,1914315241&fm=26&gp=0.jpg',
'https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=317673774,2961727727&fm=26&gp=0.jpg',
'https://img2.baidu.com/it/u=1978192862,2048448374&fm=253&fmt=auto&app=138&f=JPEG?w=504&h=500',
'https://img2.baidu.com/it/u=2370931438,70387529&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500',
'https://fuss10.elemecdn.com/1/8e/aeffeb4de74e2fde4bd74fc7b4486jpeg.jpeg',
],
});

View File

@ -236,7 +236,7 @@ export default defineComponent({
padding-right: 8px;
width: 100%;
}
&::v-deep(.el-tree-node) {
&:deep(.el-tree-node) {
border: 1px solid var(--next-border-color-light);
border-bottom: none;
color: #606266;

View File

@ -240,7 +240,7 @@ export default defineComponent({
<style scoped lang="scss">
.workflow-drawer-node {
::v-deep {
:deep {
.el-tabs {
box-shadow: unset;
border: unset;

View File

@ -200,7 +200,7 @@ export default defineComponent({
};
// 左侧导航-初始化拖动
const initSortable = () => {
state.leftNavRefs.forEach(v => {
state.leftNavRefs.forEach((v) => {
Sortable.create(v as HTMLDivElement, {
group: {
name: 'vue-next-admin-1',
@ -555,7 +555,7 @@ export default defineComponent({
width: 220px;
height: 100%;
border-right: 1px solid var(--el-border-color-light, #ebeef5);
::v-deep(.el-collapse-item__content) {
:deep(.el-collapse-item__content) {
padding-bottom: 0;
}
.workflow-left-title {
@ -654,7 +654,7 @@ export default defineComponent({
color: var(--el-color-primary);
}
}
::v-deep(.jtk-overlay):not(.aLabel) {
:deep(.jtk-overlay):not(.aLabel) {
padding: 4px 10px;
border: 1px solid var(--el-border-color-light, #ebeef5) !important;
color: var(--el-text-color-secondary) !important;
@ -662,7 +662,7 @@ export default defineComponent({
border-radius: 3px;
font-size: 10px;
}
::v-deep(.jtk-overlay.workflow-right-empty-label) {
:deep(.jtk-overlay.workflow-right-empty-label) {
display: none;
}
}

View File

@ -7,7 +7,7 @@
<div class="personal-user">
<div class="personal-user-left">
<el-upload class="h100 personal-user-left-upload" action="https://jsonplaceholder.typicode.com/posts/" multiple :limit="1">
<img src="https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1813762643,1914315241&fm=26&gp=0.jpg" />
<img src="https://img2.baidu.com/it/u=1978192862,2048448374&fm=253&fmt=auto&app=138&f=JPEG?w=504&h=500" />
</el-upload>
</div>
<div class="personal-user-right">
@ -233,7 +233,7 @@ export default defineComponent({
width: 100px;
height: 130px;
border-radius: 3px;
::v-deep(.el-upload) {
:deep(.el-upload) {
height: 100%;
}
.personal-user-left-upload {

View File

@ -481,7 +481,7 @@ export default defineComponent({
<style scoped lang="scss">
.tools-warp-form {
::v-deep(.el-form-item--small.el-form-item) {
:deep(.el-form-item--small.el-form-item) {
margin-bottom: 0 !important;
}
.tools-warp-form-msg {

View File

@ -970,10 +970,10 @@ $titleWidth: 240px;
height: 100%;
width: 100%;
position: relative;
::v-deep(.BMap_cpyCtrl) {
:deep(.BMap_cpyCtrl) {
display: none;
}
::v-deep(.anchorBL) {
:deep(.anchorBL) {
display: none;
}
.visualizing-container {

View File

@ -853,7 +853,7 @@ export default defineComponent({
.ml15:hover {
cursor: pointer;
}
::v-deep(.el-dropdown) {
:deep(.el-dropdown) {
font-size: 13px !important;
color: #43bdf0;
cursor: pointer;