Merge branch 'main' into gitee

This commit is contained in:
xiaoxian521 2024-04-15 17:56:10 +08:00
commit ebf6bb23eb
5 changed files with 54 additions and 23 deletions

View File

@ -1,7 +1,15 @@
import Sortable from "sortablejs";
import { transformI18n } from "@/plugins/i18n";
import { useEpThemeStoreHook } from "@/store/modules/epTheme";
import { defineComponent, ref, computed, type PropType, nextTick } from "vue";
import {
type PropType,
ref,
unref,
computed,
nextTick,
defineComponent,
getCurrentInstance
} from "vue";
import {
delay,
cloneDeep,
@ -34,6 +42,10 @@ const props = {
isExpandAll: {
type: Boolean,
default: true
},
tableKey: {
type: [String, Number] as PropType<string | number>,
default: "0"
}
};
@ -46,6 +58,7 @@ export default defineComponent({
const loading = ref(false);
const checkAll = ref(true);
const isIndeterminate = ref(false);
const instance = getCurrentInstance()!;
const isExpandAll = ref(props.isExpandAll);
const filterColumns = cloneDeep(props?.columns).filter(column =>
isBoolean(column?.hide)
@ -170,9 +183,9 @@ export default defineComponent({
const rowDrop = (event: { preventDefault: () => void }) => {
event.preventDefault();
nextTick(() => {
const wrapper: HTMLElement = document.querySelector(
".el-checkbox-group>div"
);
const wrapper: HTMLElement = (
instance?.proxy?.$refs[`GroupRef${unref(props.tableKey)}`] as any
).$el.firstElementChild;
Sortable.create(wrapper, {
animation: 300,
handle: ".drag-btn",
@ -299,6 +312,7 @@ export default defineComponent({
<div class="pt-[6px] pl-[11px]">
<el-scrollbar max-height="36vh">
<el-checkbox-group
ref={`GroupRef${unref(props.tableKey)}`}
modelValue={checkedColumns.value}
onChange={value => handleCheckedColumnsChange(value)}
>

View File

@ -145,7 +145,7 @@ function resolvePath(routePath) {
props.item?.pathList?.length === 2)
"
truncated
class="!px-4 !text-inherit"
class="!w-full !px-4 !text-inherit"
>
{{ transformI18n(onlyOneChild.meta.title) }}
</el-text>
@ -157,7 +157,7 @@ function resolvePath(routePath) {
offset: [0, -10],
theme: tooltipEffect
}"
class="!text-inherit"
class="!w-full !text-inherit"
>
{{ transformI18n(onlyOneChild.meta.title) }}
</ReText>
@ -185,18 +185,21 @@ function resolvePath(routePath) {
</div>
<ReText
v-if="
!(
layout === 'vertical' &&
isCollapse &&
toRaw(props.item.meta.icon) &&
props.item.parentId === null
)
layout === 'mix' && toRaw(props.item.meta.icon)
? !isCollapse || props.item?.pathList?.length !== 2
: !(
layout === 'vertical' &&
isCollapse &&
toRaw(props.item.meta.icon) &&
props.item.parentId === null
)
"
:tippyProps="{
offset: [0, -10],
theme: tooltipEffect
}"
:class="{
'!w-full': true,
'!text-inherit': true,
'!px-4':
layout !== 'horizontal' &&

View File

@ -367,9 +367,23 @@ function hasAuth(value: string | Array<string>): boolean {
return isAuths ? true : false;
}
function handleTopMenu(route) {
if (route?.children && route.children.length > 1) {
if (route.redirect) {
return route.children.filter(cur => cur.path === route.redirect)[0];
} else {
return route.children[0];
}
} else {
return route;
}
}
/** 获取所有菜单中的第一个菜单(顶级菜单)*/
function getTopMenu(tag = false): menuType {
const topMenu = usePermissionStoreHook().wholeMenus[0]?.children[0];
const topMenu = handleTopMenu(
usePermissionStoreHook().wholeMenus[0]?.children[0]
);
tag && useMultiTagsStoreHook().handleTags("push", topMenu);
return topMenu;
}

View File

@ -74,7 +74,7 @@ class PureHttp {
}
/** 请求白名单放置一些不需要token的接口通过设置请求白名单防止token过期后再请求造成的死循环问题 */
const whiteList = ["/refresh-token", "/login"];
return whiteList.find(url => url === config.url)
return whiteList.some(url => config.url.endsWith(url))
? config
: new Promise(resolve => {
const data = getToken();

View File

@ -70,10 +70,10 @@ getMine().then(res => {
<el-container class="h-full">
<el-aside
v-if="isOpen"
class="settings-sidebar px-2 dark:!bg-[var(--el-bg-color)]"
class="pure-account-settings overflow-hidden px-2 dark:!bg-[var(--el-bg-color)] border-r-[1px] border-[var(--pure-border-color)]"
:width="deviceDetection() ? '180px' : '240px'"
>
<el-menu :default-active="witchPane" class="settings-menu">
<el-menu :default-active="witchPane" class="pure-account-settings-menu">
<el-menu-item
class="hover:!transition-all hover:!duration-200 hover:!text-base !h-[50px]"
@click="router.go(-1)"
@ -129,20 +129,18 @@ getMine().then(res => {
</el-container>
</template>
<style lang="scss" scoped>
.settings-sidebar {
overflow: hidden;
<style lang="scss">
.pure-account-settings {
background: $menuBg;
border-right: 1px solid var(--pure-border-color);
}
.settings-menu {
.pure-account-settings-menu {
background-color: transparent;
border: none;
::v-deep(.el-menu-item) {
.el-menu-item {
height: 48px !important;
color: $menuText !important;
color: $menuText;
background-color: transparent !important;
transition: color 0.2s;
@ -169,7 +167,9 @@ getMine().then(res => {
}
}
}
</style>
<style lang="scss" scoped>
body[layout] {
.el-menu--vertical .is-active {
color: #fff !important;