mirror of
https://gitee.com/lab1024/smart-admin.git
synced 2025-11-09 04:03:51 +08:00
v3.17.0 【新增】新增菜单展开1个配置;【新增】移除表格固定高度;【新增】App登录token模式
This commit is contained in:
@@ -52,7 +52,7 @@
|
||||
import { themeColors } from '/@/theme/color.js';
|
||||
import { Popover } from 'ant-design-vue';
|
||||
import SmartCopyIcon from '/@/components/framework/smart-copy-icon/index.vue';
|
||||
|
||||
import _ from 'lodash';
|
||||
const slots = useSlots();
|
||||
const antdLocale = computed(() => messages[useAppConfigStore().language].antdLocale);
|
||||
const dayjsLocale = computed(() => messages[useAppConfigStore().language].dayjsLocale);
|
||||
@@ -90,6 +90,9 @@
|
||||
return text;
|
||||
}
|
||||
}
|
||||
window.addEventListener('resize',_.throttle(()=>{
|
||||
window.location.reload()
|
||||
},1000));
|
||||
</script>
|
||||
<style scoped lang="less">
|
||||
:deep(.ant-table-column-sorters) {
|
||||
|
||||
@@ -14,8 +14,6 @@ export const appDefaultConfig = {
|
||||
layout: 'side',
|
||||
// 侧边菜单宽度 , 默认为200px
|
||||
sideMenuWidth: 200,
|
||||
// 表格高度
|
||||
tableYHeight: 300,
|
||||
//标签页位置
|
||||
pageTagLocation: 'center',
|
||||
// 菜单主题
|
||||
@@ -26,6 +24,8 @@ export const appDefaultConfig = {
|
||||
pageWidth: '99%',
|
||||
// 圆角
|
||||
borderRadius: 6,
|
||||
// 展开模式
|
||||
flatPattern: true,
|
||||
// 标签页
|
||||
pageTagFlag: true,
|
||||
// 标签页样式: default、 antd、chrome
|
||||
|
||||
@@ -24,6 +24,7 @@ export default {
|
||||
'setting.border.radius': 'Border Radius',
|
||||
'setting.compact': 'Page Compact',
|
||||
'setting.bread': 'Show Bread',
|
||||
'setting.flatPattern': 'Flat Pattern',
|
||||
'setting.pagetag': 'Show PageTag',
|
||||
'setting.pagetag.style': 'PageTag Style',
|
||||
'setting.footer': 'Show Footer',
|
||||
|
||||
@@ -24,6 +24,7 @@ export default {
|
||||
'setting.border.radius': '页面圆角',
|
||||
'setting.page.width': '页面宽度',
|
||||
'setting.bread': '面包屑',
|
||||
'setting.flatPattern': '展开模式',
|
||||
'setting.pagetag': '标签页',
|
||||
'setting.pagetag.style': '标签页样式',
|
||||
'setting.footer': '页脚',
|
||||
|
||||
@@ -47,10 +47,6 @@
|
||||
<a-input-number @change="changeSideMenuWidth" v-model:value="formState.sideMenuWidth" :min="1" />
|
||||
像素(px)
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('setting.table.yHeight')">
|
||||
<a-input-number @change="changeTableYHeight" v-model:value="formState.tableYHeight" :min="100" />
|
||||
像素(px)
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('setting.page.width')" v-if="formState.layout === LAYOUT_ENUM.TOP.value">
|
||||
<a-input @change="changePageWidth" v-model:value="formState.pageWidth" />
|
||||
像素(px)或者 百分比
|
||||
@@ -87,6 +83,9 @@
|
||||
<a-radio-button value="chrome">Chrome</a-radio-button>
|
||||
</a-radio-group>
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('setting.flatPattern')">
|
||||
<a-switch @change="changeFlatPattern" v-model:checked="formState.flatPattern" checked-children="单个" un-checked-children="多个" />
|
||||
</a-form-item>
|
||||
<a-form-item :label="$t('setting.pagetag')">
|
||||
<a-switch @change="changePageTagFlag" v-model:checked="formState.pageTagFlag" checked-children="显示" un-checked-children="隐藏" />
|
||||
</a-form-item>
|
||||
@@ -202,8 +201,6 @@
|
||||
colorIndex: appConfigStore.colorIndex,
|
||||
// 侧边菜单宽度
|
||||
sideMenuWidth: appConfigStore.sideMenuWidth,
|
||||
// 表格高度
|
||||
tableYHeight: appConfigStore.tableYHeight,
|
||||
// 菜单主题
|
||||
sideMenuTheme: appConfigStore.sideMenuTheme,
|
||||
// 页面紧凑
|
||||
@@ -212,6 +209,8 @@
|
||||
borderRadius: appConfigStore.borderRadius,
|
||||
// 标签页
|
||||
pageTagFlag: appConfigStore.pageTagFlag,
|
||||
// 标签页
|
||||
flatPattern: appConfigStore.flatPattern,
|
||||
// 标签页 样式
|
||||
pageTagStyle: appConfigStore.pageTagStyle,
|
||||
// 面包屑
|
||||
@@ -276,12 +275,6 @@
|
||||
sideMenuWidth: value,
|
||||
});
|
||||
}
|
||||
function changeTableYHeight(value) {
|
||||
appConfigStore.$patch({
|
||||
tableYHeight: value,
|
||||
});
|
||||
window.location.reload();
|
||||
}
|
||||
|
||||
function changePageWidth(e) {
|
||||
appConfigStore.$patch({
|
||||
@@ -317,6 +310,11 @@
|
||||
pageTagFlag: e,
|
||||
});
|
||||
}
|
||||
function changeFlatPattern(e) {
|
||||
appConfigStore.$patch({
|
||||
flatPattern: e,
|
||||
});
|
||||
}
|
||||
|
||||
function changePageTagStyle(e) {
|
||||
appConfigStore.$patch({
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),Since 2012
|
||||
-->
|
||||
<template>
|
||||
<a-menu v-model:openKeys="openKeys" v-model:selectedKeys="selectedKeys" class="smart-menu" mode="inline" :theme="theme">
|
||||
<a-menu :open-keys="openKeys" v-model:selectedKeys="selectedKeys" class="smart-menu" mode="inline" :theme="theme" @openChange="onOpenChange">
|
||||
<template v-for="item in menuTree" :key="item.menuId">
|
||||
<template v-if="item.visibleFlag && !item.disabledFlag">
|
||||
<template v-if="$lodash.isEmpty(item.children)">
|
||||
@@ -36,6 +36,7 @@
|
||||
import { useUserStore } from '/@/store/modules/system/user';
|
||||
|
||||
const theme = computed(() => useAppConfigStore().$state.sideMenuTheme);
|
||||
const flatPattern = computed(() => useAppConfigStore().$state.flatPattern);
|
||||
|
||||
const props = defineProps({
|
||||
collapsed: {
|
||||
@@ -45,6 +46,8 @@
|
||||
});
|
||||
|
||||
const menuTree = computed(() => useUserStore().getMenuTree || []);
|
||||
const rootSubmenuKeys = computed(()=>menuTree.value.map(item=>item.menuId));
|
||||
|
||||
|
||||
//展开的菜单
|
||||
let currentRoute = useRoute();
|
||||
@@ -89,7 +92,17 @@
|
||||
immediate: true,
|
||||
}
|
||||
);
|
||||
|
||||
function onOpenChange(openKeysParams){
|
||||
if(flatPattern.value){
|
||||
return;
|
||||
}
|
||||
const latestOpenKey = openKeysParams.find(key => openKeys.value.indexOf(key) === -1);
|
||||
if (rootSubmenuKeys.value.indexOf(latestOpenKey) === -1) {
|
||||
openKeys.value = openKeysParams;
|
||||
} else {
|
||||
openKeys.value = latestOpenKey ? [latestOpenKey] : [];
|
||||
}
|
||||
};
|
||||
defineExpose({
|
||||
updateOpenKeysAndSelectKeys,
|
||||
});
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
:url="item.meta.frameUrl"
|
||||
/>
|
||||
<!--非iframe使用router-view-->
|
||||
<div v-show="!iframeNotKeepAlivePageFlag && keepAliveIframePages.every((e) => route.name != e.name)">
|
||||
<div v-show="!iframeNotKeepAlivePageFlag && keepAliveIframePages.every((e) => route.name != e.name)" style="height: 100%;">
|
||||
<router-view v-slot="{ Component }">
|
||||
<keep-alive :include="keepAliveIncludes">
|
||||
<component :is="Component" :key="route.name" />
|
||||
|
||||
@@ -99,17 +99,10 @@ async function initVue() {
|
||||
//挂载
|
||||
app.mount('#app');
|
||||
}
|
||||
function setTableYHeight() {
|
||||
Table.props.scroll.default = {
|
||||
y: useAppConfigStore().tableYHeight,
|
||||
};
|
||||
}
|
||||
//不需要获取用户信息、用户菜单、用户菜单动态路由,直接初始化vue即可
|
||||
let token = localRead(LocalStorageKeyConst.USER_TOKEN);
|
||||
if (!token) {
|
||||
await initVue();
|
||||
setTableYHeight();
|
||||
} else {
|
||||
await getLoginInfo();
|
||||
setTableYHeight();
|
||||
}
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
:dataSource="tableData"
|
||||
:columns="columns"
|
||||
rowKey="goodsId"
|
||||
:scroll="{ x: 1000 }"
|
||||
:scroll="{ x: 1000,y: yHeight }"
|
||||
bordered
|
||||
:pagination="false"
|
||||
:showSorterTooltip="false"
|
||||
@@ -205,6 +205,7 @@
|
||||
import SmartHeaderCell from '/@/components/support/table-header-cell/index.vue';
|
||||
import { DICT_CODE_ENUM } from '/@/constants/support/dict-const.js';
|
||||
import DictLabel from '/@/components/support/dict-label/index.vue';
|
||||
import { onBeforeMount } from 'vue';
|
||||
|
||||
// ---------------------------- 表格列 ----------------------------
|
||||
|
||||
@@ -497,4 +498,16 @@
|
||||
function camelToUnderscore(str) {
|
||||
return str.replace(/([A-Z])/g, '_$1').toLowerCase();
|
||||
}
|
||||
|
||||
const dueHeight=ref(0)
|
||||
const yHeight=ref(0)
|
||||
onMounted(() => {
|
||||
let doc = document.querySelector('.ant-form');
|
||||
let btn = document.querySelector('.smart-table-btn-block');
|
||||
let tableCell = document.querySelector('.ant-table-cell');
|
||||
let page = document.querySelector('.smart-query-table-page');
|
||||
let box = document.querySelector('.ant-layout-content>div');
|
||||
dueHeight.value = doc.offsetHeight+10+24+btn.offsetHeight+15+tableCell.offsetHeight+page.offsetHeight+20
|
||||
yHeight.value=box.offsetHeight-dueHeight.value
|
||||
});
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user