|
@@ -18,6 +18,7 @@ import { useMenuSetting } from '/@/hooks/setting/useMenuSetting';
|
|
|
import { useHeaderSetting } from '/@/hooks/setting/useHeaderSetting';
|
|
|
import { useMultipleTabSetting } from '/@/hooks/setting/useMultipleTabSetting';
|
|
|
import { useTransitionSetting } from '/@/hooks/setting/useTransitionSetting';
|
|
|
+import { useI18n } from '/@/hooks/web/useI18n';
|
|
|
|
|
|
import { updateColorWeak, updateGrayMode } from '/@/setup/theme';
|
|
|
|
|
@@ -55,6 +56,7 @@ interface ThemePickerProps {
|
|
|
}
|
|
|
|
|
|
const { createSuccessModal, createMessage } = useMessage();
|
|
|
+const { t } = useI18n('layout.setting');
|
|
|
|
|
|
/**
|
|
|
* Menu type Picker comp
|
|
@@ -120,8 +122,8 @@ const FooterButton: FunctionalComponent = () => {
|
|
|
const { isSuccessRef } = useCopyToClipboard(JSON.stringify(unref(getRootSetting), null, 2));
|
|
|
unref(isSuccessRef) &&
|
|
|
createSuccessModal({
|
|
|
- title: '操作成功',
|
|
|
- content: '复制成功,请到 src/settings/projectSetting.ts 中修改配置!',
|
|
|
+ title: t('operatingTitle'),
|
|
|
+ content: t('operatingContent'),
|
|
|
});
|
|
|
}
|
|
|
function handleResetSetting() {
|
|
@@ -131,7 +133,7 @@ const FooterButton: FunctionalComponent = () => {
|
|
|
// updateTheme(themeColor);
|
|
|
updateColorWeak(colorWeak);
|
|
|
updateGrayMode(grayMode);
|
|
|
- createMessage.success('重置成功!');
|
|
|
+ createMessage.success(t('resetSuccess'));
|
|
|
} catch (error) {
|
|
|
createMessage.error(error);
|
|
|
}
|
|
@@ -149,7 +151,7 @@ const FooterButton: FunctionalComponent = () => {
|
|
|
{() => (
|
|
|
<>
|
|
|
<CopyOutlined class="mr-2" />
|
|
|
- 拷贝
|
|
|
+ {t('copyBtn')}
|
|
|
</>
|
|
|
)}
|
|
|
</Button>
|
|
@@ -157,7 +159,7 @@ const FooterButton: FunctionalComponent = () => {
|
|
|
{() => (
|
|
|
<>
|
|
|
<RedoOutlined class="mr-2" />
|
|
|
- 重置
|
|
|
+ {t('resetBtn')}
|
|
|
</>
|
|
|
)}
|
|
|
</Button>
|
|
@@ -165,7 +167,7 @@ const FooterButton: FunctionalComponent = () => {
|
|
|
{() => (
|
|
|
<>
|
|
|
<RedoOutlined class="mr-2" />
|
|
|
- 清空缓存并返回登录页
|
|
|
+ {t('clearBtn')}
|
|
|
</>
|
|
|
)}
|
|
|
</Button>
|
|
@@ -224,7 +226,7 @@ export default defineComponent({
|
|
|
return (
|
|
|
<>
|
|
|
<MenuTypePicker />
|
|
|
- {renderSwitchItem('分割菜单', {
|
|
|
+ {renderSwitchItem(t('splitMenu'), {
|
|
|
handler: (e) => {
|
|
|
baseHandler(HandlerEnum.MENU_SPLIT, e);
|
|
|
},
|
|
@@ -238,7 +240,7 @@ export default defineComponent({
|
|
|
function renderTheme() {
|
|
|
return (
|
|
|
<>
|
|
|
- <Divider>{() => '顶栏主题'}</Divider>
|
|
|
+ <Divider>{() => t('headerTheme')}</Divider>
|
|
|
<ThemePicker
|
|
|
colorList={HEADER_PRESET_BG_COLOR_LIST}
|
|
|
def={unref(getHeaderBgColor)}
|
|
@@ -246,7 +248,7 @@ export default defineComponent({
|
|
|
baseHandler(HandlerEnum.HEADER_THEME, e);
|
|
|
}}
|
|
|
/>
|
|
|
- <Divider>{() => '菜单主题'}</Divider>
|
|
|
+ <Divider>{() => t('sidebarTheme')}</Divider>
|
|
|
<ThemePicker
|
|
|
colorList={SIDE_BAR_BG_COLOR_LIST}
|
|
|
def={unref(getMenuBgColor)}
|
|
@@ -263,56 +265,56 @@ export default defineComponent({
|
|
|
*/
|
|
|
function renderFeatures() {
|
|
|
return [
|
|
|
- renderSwitchItem('侧边菜单拖拽', {
|
|
|
+ renderSwitchItem(t('menuDrag'), {
|
|
|
handler: (e) => {
|
|
|
baseHandler(HandlerEnum.MENU_HAS_DRAG, e);
|
|
|
},
|
|
|
def: unref(getCanDrag),
|
|
|
disabled: !unref(getShowMenuRef),
|
|
|
}),
|
|
|
- renderSwitchItem('侧边菜单搜索', {
|
|
|
+ renderSwitchItem(t('menuSearch'), {
|
|
|
handler: (e) => {
|
|
|
baseHandler(HandlerEnum.MENU_SHOW_SEARCH, e);
|
|
|
},
|
|
|
def: unref(getShowSearch),
|
|
|
disabled: !unref(getShowMenuRef),
|
|
|
}),
|
|
|
- renderSwitchItem('侧边菜单手风琴模式', {
|
|
|
+ renderSwitchItem(t('menuAccordion'), {
|
|
|
handler: (e) => {
|
|
|
baseHandler(HandlerEnum.MENU_ACCORDION, e);
|
|
|
},
|
|
|
def: unref(getAccordion),
|
|
|
disabled: !unref(getShowMenuRef),
|
|
|
}),
|
|
|
- renderSwitchItem('折叠菜单', {
|
|
|
+ renderSwitchItem(t('menuCollapse'), {
|
|
|
handler: (e) => {
|
|
|
baseHandler(HandlerEnum.MENU_COLLAPSED, e);
|
|
|
},
|
|
|
def: unref(getCollapsed),
|
|
|
disabled: !unref(getShowMenuRef),
|
|
|
}),
|
|
|
- renderSwitchItem('折叠菜单显示名称', {
|
|
|
+ renderSwitchItem(t('collapseMenuDisplayName'), {
|
|
|
handler: (e) => {
|
|
|
baseHandler(HandlerEnum.MENU_COLLAPSED_SHOW_TITLE, e);
|
|
|
},
|
|
|
def: unref(getCollapsedShowTitle),
|
|
|
disabled: !unref(getShowMenuRef) || !unref(getCollapsed),
|
|
|
}),
|
|
|
- renderSwitchItem('固定header', {
|
|
|
+ renderSwitchItem(t('fixedHeader'), {
|
|
|
handler: (e) => {
|
|
|
baseHandler(HandlerEnum.HEADER_FIXED, e);
|
|
|
},
|
|
|
def: unref(getHeaderFixed),
|
|
|
disabled: !unref(getShowHeader),
|
|
|
}),
|
|
|
- renderSwitchItem('固定Siderbar', {
|
|
|
+ renderSwitchItem(t('fixedSideBar'), {
|
|
|
handler: (e) => {
|
|
|
baseHandler(HandlerEnum.MENU_FIXED, e);
|
|
|
},
|
|
|
def: unref(getMenuFixed),
|
|
|
disabled: !unref(getShowMenuRef),
|
|
|
}),
|
|
|
- renderSelectItem('顶部菜单布局', {
|
|
|
+ renderSelectItem(t('topMenuLayout'), {
|
|
|
handler: (e) => {
|
|
|
baseHandler(HandlerEnum.MENU_TOP_ALIGN, e);
|
|
|
},
|
|
@@ -320,7 +322,7 @@ export default defineComponent({
|
|
|
options: topMenuAlignOptions,
|
|
|
disabled: !unref(getShowHeader) || (!unref(getIsTopMenu) && !unref(getSplit)),
|
|
|
}),
|
|
|
- renderSelectItem('菜单折叠按钮', {
|
|
|
+ renderSelectItem(t('menuCollapseButton'), {
|
|
|
handler: (e) => {
|
|
|
baseHandler(HandlerEnum.MENU_TRIGGER, e);
|
|
|
},
|
|
@@ -329,7 +331,7 @@ export default defineComponent({
|
|
|
options: menuTriggerOptions,
|
|
|
}),
|
|
|
|
|
|
- renderSelectItem('内容区域宽度', {
|
|
|
+ renderSelectItem(t('contentMode'), {
|
|
|
handler: (e) => {
|
|
|
baseHandler(HandlerEnum.CONTENT_MODE, e);
|
|
|
},
|
|
@@ -337,9 +339,9 @@ export default defineComponent({
|
|
|
options: contentModeOptions,
|
|
|
}),
|
|
|
<div class={`setting-drawer__cell-item`}>
|
|
|
- <span>自动锁屏</span>
|
|
|
+ <span>{t('autoScreenLock')}</span>
|
|
|
<InputNumber
|
|
|
- style="width:120px"
|
|
|
+ style="width:126px"
|
|
|
size="small"
|
|
|
min={0}
|
|
|
onChange={(e: any) => {
|
|
@@ -348,16 +350,16 @@ export default defineComponent({
|
|
|
defaultValue={appStore.getProjectConfig.lockTime}
|
|
|
formatter={(value: string) => {
|
|
|
if (parseInt(value) === 0) {
|
|
|
- return '0(不自动锁屏)';
|
|
|
+ return `0(${t('notAutoScreenLock')})`;
|
|
|
}
|
|
|
- return `${value}分钟`;
|
|
|
+ return `${value}${t('minute')}`;
|
|
|
}}
|
|
|
/>
|
|
|
</div>,
|
|
|
<div class={`setting-drawer__cell-item`}>
|
|
|
- <span>菜单展开宽度</span>
|
|
|
+ <span>{t('expandedMenuWidth')}</span>
|
|
|
<InputNumber
|
|
|
- style="width:120px"
|
|
|
+ style="width:126px"
|
|
|
size="small"
|
|
|
max={600}
|
|
|
min={100}
|
|
@@ -375,27 +377,27 @@ export default defineComponent({
|
|
|
|
|
|
function renderContent() {
|
|
|
return [
|
|
|
- renderSwitchItem('面包屑', {
|
|
|
+ renderSwitchItem(t('breadcrumb'), {
|
|
|
handler: (e) => {
|
|
|
baseHandler(HandlerEnum.SHOW_BREADCRUMB, e);
|
|
|
},
|
|
|
def: unref(getShowBreadCrumb),
|
|
|
disabled: !unref(getShowHeader),
|
|
|
}),
|
|
|
- renderSwitchItem('面包屑图标', {
|
|
|
+ renderSwitchItem(t('breadcrumbIcon'), {
|
|
|
handler: (e) => {
|
|
|
baseHandler(HandlerEnum.SHOW_BREADCRUMB_ICON, e);
|
|
|
},
|
|
|
def: unref(getShowBreadCrumbIcon),
|
|
|
disabled: !unref(getShowHeader),
|
|
|
}),
|
|
|
- renderSwitchItem('标签页', {
|
|
|
+ renderSwitchItem(t('tabs'), {
|
|
|
handler: (e) => {
|
|
|
baseHandler(HandlerEnum.TABS_SHOW, e);
|
|
|
},
|
|
|
def: unref(getShowMultipleTab),
|
|
|
}),
|
|
|
- renderSwitchItem('标签页快捷按钮', {
|
|
|
+ renderSwitchItem(t('tabsQuickBtn'), {
|
|
|
handler: (e) => {
|
|
|
baseHandler(HandlerEnum.TABS_SHOW_QUICK, e);
|
|
|
},
|
|
@@ -403,14 +405,14 @@ export default defineComponent({
|
|
|
disabled: !unref(getShowMultipleTab),
|
|
|
}),
|
|
|
|
|
|
- renderSwitchItem('左侧菜单', {
|
|
|
+ renderSwitchItem(t('sidebar'), {
|
|
|
handler: (e) => {
|
|
|
baseHandler(HandlerEnum.MENU_SHOW_SIDEBAR, e);
|
|
|
},
|
|
|
def: unref(getShowMenu),
|
|
|
disabled: unref(getIsHorizontal),
|
|
|
}),
|
|
|
- renderSwitchItem('顶栏', {
|
|
|
+ renderSwitchItem(t('header'), {
|
|
|
handler: (e) => {
|
|
|
baseHandler(HandlerEnum.HEADER_SHOW, e);
|
|
|
},
|
|
@@ -422,25 +424,25 @@ export default defineComponent({
|
|
|
},
|
|
|
def: unref(getShowLogo),
|
|
|
}),
|
|
|
- renderSwitchItem('页脚', {
|
|
|
+ renderSwitchItem(t('footer'), {
|
|
|
handler: (e) => {
|
|
|
baseHandler(HandlerEnum.SHOW_FOOTER, e);
|
|
|
},
|
|
|
def: unref(getShowFooter),
|
|
|
}),
|
|
|
- renderSwitchItem('全屏内容', {
|
|
|
+ renderSwitchItem(t('fullContent'), {
|
|
|
handler: (e) => {
|
|
|
baseHandler(HandlerEnum.FULL_CONTENT, e);
|
|
|
},
|
|
|
def: unref(getFullContent),
|
|
|
}),
|
|
|
- renderSwitchItem('灰色模式', {
|
|
|
+ renderSwitchItem(t('grayMode'), {
|
|
|
handler: (e) => {
|
|
|
baseHandler(HandlerEnum.GRAY_MODE, e);
|
|
|
},
|
|
|
def: unref(getGrayMode),
|
|
|
}),
|
|
|
- renderSwitchItem('色弱模式', {
|
|
|
+ renderSwitchItem(t('colorWeak'), {
|
|
|
handler: (e) => {
|
|
|
baseHandler(HandlerEnum.COLOR_WEAK, e);
|
|
|
},
|
|
@@ -452,13 +454,13 @@ export default defineComponent({
|
|
|
function renderTransition() {
|
|
|
return (
|
|
|
<>
|
|
|
- {renderSwitchItem('顶部进度条', {
|
|
|
+ {renderSwitchItem(t('progress'), {
|
|
|
handler: (e) => {
|
|
|
baseHandler(HandlerEnum.OPEN_PROGRESS, e);
|
|
|
},
|
|
|
def: unref(getOpenNProgress),
|
|
|
})}
|
|
|
- {renderSwitchItem('切换loading', {
|
|
|
+ {renderSwitchItem(t('switchLoading'), {
|
|
|
handler: (e) => {
|
|
|
baseHandler(HandlerEnum.OPEN_PAGE_LOADING, e);
|
|
|
},
|
|
@@ -466,14 +468,14 @@ export default defineComponent({
|
|
|
disabled: !unref(getEnableTransition),
|
|
|
})}
|
|
|
|
|
|
- {renderSwitchItem('切换动画', {
|
|
|
+ {renderSwitchItem(t('switchAnimation'), {
|
|
|
handler: (e) => {
|
|
|
baseHandler(HandlerEnum.OPEN_ROUTE_TRANSITION, e);
|
|
|
},
|
|
|
def: unref(getEnableTransition),
|
|
|
})}
|
|
|
|
|
|
- {renderSelectItem('动画类型', {
|
|
|
+ {renderSelectItem(t('animationType'), {
|
|
|
handler: (e) => {
|
|
|
baseHandler(HandlerEnum.ROUTER_TRANSITION, e);
|
|
|
},
|
|
@@ -495,7 +497,7 @@ export default defineComponent({
|
|
|
{...opt}
|
|
|
disabled={disabled}
|
|
|
size="small"
|
|
|
- style={{ width: '120px' }}
|
|
|
+ style={{ width: '126px' }}
|
|
|
onChange={(e) => {
|
|
|
handler && handler(e);
|
|
|
}}
|
|
@@ -517,26 +519,26 @@ export default defineComponent({
|
|
|
onChange={(e: any) => {
|
|
|
handler && handler(e);
|
|
|
}}
|
|
|
- checkedChildren="开"
|
|
|
- unCheckedChildren="关"
|
|
|
+ checkedChildren={t('on')}
|
|
|
+ unCheckedChildren={t('off')}
|
|
|
/>
|
|
|
</div>
|
|
|
);
|
|
|
}
|
|
|
|
|
|
return () => (
|
|
|
- <BasicDrawer {...attrs} title="项目配置" width={300} wrapClassName="setting-drawer">
|
|
|
+ <BasicDrawer {...attrs} title={t('drawerTitle')} width={330} wrapClassName="setting-drawer">
|
|
|
{{
|
|
|
default: () => (
|
|
|
<>
|
|
|
- <Divider>{() => '导航栏模式'}</Divider>
|
|
|
+ <Divider>{() => t('navMode')}</Divider>
|
|
|
{renderSidebar()}
|
|
|
{renderTheme()}
|
|
|
- <Divider>{() => '界面功能'}</Divider>
|
|
|
+ <Divider>{() => t('interfaceFunction')}</Divider>
|
|
|
{renderFeatures()}
|
|
|
- <Divider>{() => '界面显示'}</Divider>
|
|
|
+ <Divider>{() => t('interfaceDisplay')}</Divider>
|
|
|
{renderContent()}
|
|
|
- <Divider>{() => '切换动画'}</Divider>
|
|
|
+ <Divider>{() => t('animation')}</Divider>
|
|
|
{renderTransition()}
|
|
|
<Divider />
|
|
|
<FooterButton />
|