mirror of
https://github.com/vbenjs/vue-vben-admin.git
synced 2025-08-26 16:46:19 +08:00
fix: fix form,transition,build bug
This commit is contained in:
@@ -30,7 +30,6 @@
|
|||||||
createBreakpointListen();
|
createBreakpointListen();
|
||||||
const { renderEmpty, transformCellText } = useConfigProvider();
|
const { renderEmpty, transformCellText } = useConfigProvider();
|
||||||
const { on: lockOn } = useLockPage();
|
const { on: lockOn } = useLockPage();
|
||||||
|
|
||||||
return {
|
return {
|
||||||
renderEmpty,
|
renderEmpty,
|
||||||
transformCellText,
|
transformCellText,
|
||||||
|
@@ -48,7 +48,7 @@
|
|||||||
import { isArray, isBoolean, isFunction, isNumber, isObject, isString } from '/@/utils/is';
|
import { isArray, isBoolean, isFunction, isNumber, isObject, isString } from '/@/utils/is';
|
||||||
import { cloneDeep } from 'lodash-es';
|
import { cloneDeep } from 'lodash-es';
|
||||||
import { useBreakpoint } from '/@/hooks/event/useBreakpoint';
|
import { useBreakpoint } from '/@/hooks/event/useBreakpoint';
|
||||||
import { useThrottle } from '/@/hooks/core/useThrottle';
|
// import { useThrottle } from '/@/hooks/core/useThrottle';
|
||||||
import { useFormValues } from './hooks/useFormValues';
|
import { useFormValues } from './hooks/useFormValues';
|
||||||
import type { ColEx } from './types';
|
import type { ColEx } from './types';
|
||||||
import { NamePath } from 'ant-design-vue/types/form/form-item';
|
import { NamePath } from 'ant-design-vue/types/form/form-item';
|
||||||
@@ -163,13 +163,13 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
const { realWidthRef, screenEnum, screenRef } = useBreakpoint();
|
const { realWidthRef, screenEnum, screenRef } = useBreakpoint();
|
||||||
const [throttleUpdateAdvanced] = useThrottle(updateAdvanced, 30, { immediate: true });
|
// const [throttleUpdateAdvanced] = useThrottle(updateAdvanced, 30, { immediate: true });
|
||||||
watch(
|
watch(
|
||||||
[() => unref(getSchema), () => advanceState.isAdvanced, () => unref(realWidthRef)],
|
[() => unref(getSchema), () => advanceState.isAdvanced, () => unref(realWidthRef)],
|
||||||
() => {
|
() => {
|
||||||
const { showAdvancedButton } = unref(getProps);
|
const { showAdvancedButton } = unref(getProps);
|
||||||
if (showAdvancedButton) {
|
if (showAdvancedButton) {
|
||||||
throttleUpdateAdvanced();
|
updateAdvanced();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ immediate: true }
|
{ immediate: true }
|
||||||
|
@@ -189,14 +189,13 @@ export default defineComponent({
|
|||||||
const bindValue = {
|
const bindValue = {
|
||||||
[isCheck ? 'checked' : 'value']: (props.formModel as any)[field],
|
[isCheck ? 'checked' : 'value']: (props.formModel as any)[field],
|
||||||
};
|
};
|
||||||
|
if (!renderComponentContent) {
|
||||||
|
return <Comp {...propsData} {...on} {...bindValue} />;
|
||||||
|
}
|
||||||
return (
|
return (
|
||||||
<Comp {...propsData} {...on} {...bindValue}>
|
<Comp {...propsData} {...on} {...bindValue}>
|
||||||
{{
|
{{
|
||||||
...(renderComponentContent
|
...renderComponentContent(unref(getValuesRef)),
|
||||||
? renderComponentContent(unref(getValuesRef))
|
|
||||||
: {
|
|
||||||
default: () => '',
|
|
||||||
}),
|
|
||||||
}}
|
}}
|
||||||
</Comp>
|
</Comp>
|
||||||
);
|
);
|
||||||
|
@@ -161,6 +161,7 @@ export default defineComponent({
|
|||||||
const treeData: any = cloneDeep(unref(treeDataRef));
|
const treeData: any = cloneDeep(unref(treeDataRef));
|
||||||
if (!parentKey) {
|
if (!parentKey) {
|
||||||
treeData[push](node);
|
treeData[push](node);
|
||||||
|
treeDataRef.value = treeData;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const { key: keyField, children: childrenField } = unref(getReplaceFields);
|
const { key: keyField, children: childrenField } = unref(getReplaceFields);
|
||||||
|
1
src/enums/eventBusEnum.ts
Normal file
1
src/enums/eventBusEnum.ts
Normal file
@@ -0,0 +1 @@
|
|||||||
|
export const MENU_DRAG_STATE = 'MENU_DRAG_STATE';
|
11
src/hooks/event/useEventHub.ts
Normal file
11
src/hooks/event/useEventHub.ts
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
import { tryOnUnmounted } from '/@/utils/helper/vueHelper';
|
||||||
|
import {} from 'vue';
|
||||||
|
import EventHub from '/@/utils/eventHub';
|
||||||
|
const eventHub = new EventHub();
|
||||||
|
export function useEventHub(): EventHub {
|
||||||
|
tryOnUnmounted(() => {
|
||||||
|
eventHub.clear();
|
||||||
|
});
|
||||||
|
|
||||||
|
return eventHub;
|
||||||
|
}
|
@@ -65,7 +65,7 @@ export default defineComponent({
|
|||||||
|
|
||||||
return () => (
|
return () => (
|
||||||
<>
|
<>
|
||||||
<Breadcrumb class="layout-breadcrumb">
|
<Breadcrumb class="layout-breadcrumb flex-grow">
|
||||||
{() => (
|
{() => (
|
||||||
<>
|
<>
|
||||||
<TransitionGroup name="breadcrumb">
|
<TransitionGroup name="breadcrumb">
|
||||||
|
@@ -68,7 +68,7 @@ export default defineComponent({
|
|||||||
{showLogo && !isSidebarType && <Logo class={`layout-header__logo`} />}
|
{showLogo && !isSidebarType && <Logo class={`layout-header__logo`} />}
|
||||||
|
|
||||||
{mode !== MenuModeEnum.HORIZONTAL && showBreadCrumb && !splitMenu && (
|
{mode !== MenuModeEnum.HORIZONTAL && showBreadCrumb && !splitMenu && (
|
||||||
<LayoutBreadcrumb class="flex-grow " />
|
<LayoutBreadcrumb />
|
||||||
)}
|
)}
|
||||||
{(mode === MenuModeEnum.HORIZONTAL || splitMenu) && (
|
{(mode === MenuModeEnum.HORIZONTAL || splitMenu) && (
|
||||||
<div class={[`layout-header__menu flex-grow `, `justify-${topMenuAlign}`]}>
|
<div class={[`layout-header__menu flex-grow `, `justify-${topMenuAlign}`]}>
|
||||||
|
@@ -28,12 +28,15 @@ export function createPageLoadingGuard(router: Router) {
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
router.afterEach(async () => {
|
router.afterEach(async (to) => {
|
||||||
const { openRouterTransition, openPageLoading } = appStore.getProjectConfig;
|
const { openRouterTransition, openPageLoading } = appStore.getProjectConfig;
|
||||||
if ((!openRouterTransition && openPageLoading) || isFirstLoad) {
|
if ((!openRouterTransition && openPageLoading) || isFirstLoad || to.meta.afterCloseLoading) {
|
||||||
appStore.commitPageLoadingState(false);
|
setTimeout(() => {
|
||||||
|
appStore.commitPageLoadingState(false);
|
||||||
|
}, 110);
|
||||||
isFirstLoad = false;
|
isFirstLoad = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@@ -27,6 +27,7 @@ export default {
|
|||||||
},
|
},
|
||||||
meta: {
|
meta: {
|
||||||
title: '404',
|
title: '404',
|
||||||
|
afterCloseLoading: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -38,6 +39,7 @@ export default {
|
|||||||
},
|
},
|
||||||
meta: {
|
meta: {
|
||||||
title: '500',
|
title: '500',
|
||||||
|
afterCloseLoading: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -49,6 +51,7 @@ export default {
|
|||||||
},
|
},
|
||||||
meta: {
|
meta: {
|
||||||
title: '网络错误',
|
title: '网络错误',
|
||||||
|
afterCloseLoading: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -60,6 +63,7 @@ export default {
|
|||||||
},
|
},
|
||||||
meta: {
|
meta: {
|
||||||
title: '页面超时',
|
title: '页面超时',
|
||||||
|
afterCloseLoading: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -71,6 +75,7 @@ export default {
|
|||||||
},
|
},
|
||||||
meta: {
|
meta: {
|
||||||
title: '无数据',
|
title: '无数据',
|
||||||
|
afterCloseLoading: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
3
src/router/types.d.ts
vendored
3
src/router/types.d.ts
vendored
@@ -26,6 +26,9 @@ export interface RouteMeta {
|
|||||||
|
|
||||||
// disabled redirect
|
// disabled redirect
|
||||||
disabledRedirect?: boolean;
|
disabledRedirect?: boolean;
|
||||||
|
|
||||||
|
// close loading
|
||||||
|
afterCloseLoading?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface AppRouteRecordRaw extends Omit<RouteRecordRaw, 'meta'> {
|
export interface AppRouteRecordRaw extends Omit<RouteRecordRaw, 'meta'> {
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
import { REDIRECT_ROUTE } from './../../router/constant';
|
import { REDIRECT_ROUTE } from '/@/router/constant';
|
||||||
import type { AppRouteRecordRaw, Menu } from '/@/router/types';
|
import type { AppRouteRecordRaw, Menu } from '/@/router/types';
|
||||||
import store from '/@/store/index';
|
import store from '/@/store/index';
|
||||||
import { hotModuleUnregisterModule } from '/@/utils/helper/vuexHelper';
|
import { hotModuleUnregisterModule } from '/@/utils/helper/vuexHelper';
|
||||||
@@ -19,7 +19,7 @@ import { genRouteModule, transformObjToRoute } from '/@/utils/helper/routeHelper
|
|||||||
import { transformRouteToMenu } from '/@/utils/helper/menuHelper';
|
import { transformRouteToMenu } from '/@/utils/helper/menuHelper';
|
||||||
|
|
||||||
import { useMessage } from '/@/hooks/web/useMessage';
|
import { useMessage } from '/@/hooks/web/useMessage';
|
||||||
|
import { warn } from 'vue';
|
||||||
const { createMessage } = useMessage();
|
const { createMessage } = useMessage();
|
||||||
const NAME = 'permission';
|
const NAME = 'permission';
|
||||||
hotModuleUnregisterModule(NAME);
|
hotModuleUnregisterModule(NAME);
|
||||||
@@ -107,7 +107,7 @@ class Permission extends VuexModule {
|
|||||||
});
|
});
|
||||||
// this.commitRoutesState(routes);
|
// this.commitRoutesState(routes);
|
||||||
// Background permissions
|
// Background permissions
|
||||||
console.warn(
|
warn(
|
||||||
`当前权限模式为:${PermissionModeEnum.ROLE},请将src/store/modules/permission.ts内的后台菜单获取函数注释,如果已注释可以忽略此信息!`
|
`当前权限模式为:${PermissionModeEnum.ROLE},请将src/store/modules/permission.ts内的后台菜单获取函数注释,如果已注释可以忽略此信息!`
|
||||||
);
|
);
|
||||||
// 如果确定不需要做后台动态权限,请将下面整个判断注释
|
// 如果确定不需要做后台动态权限,请将下面整个判断注释
|
||||||
|
36
src/utils/eventHub.ts
Normal file
36
src/utils/eventHub.ts
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
class EventHub {
|
||||||
|
private cache: { [key: string]: Array<(data: any) => void> } = {};
|
||||||
|
on(eventName: string, fn: (data: any) => void) {
|
||||||
|
this.cache[eventName] = this.cache[eventName] || [];
|
||||||
|
this.cache[eventName].push(fn);
|
||||||
|
}
|
||||||
|
|
||||||
|
once(eventName: string, fn: (data: any) => void) {
|
||||||
|
const decor = (...args: any[]) => {
|
||||||
|
fn && fn.apply(this, args);
|
||||||
|
this.off(eventName, decor);
|
||||||
|
};
|
||||||
|
this.on(eventName, decor);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
emit(eventName: string, data?: any) {
|
||||||
|
if (this.cache[eventName] === undefined) return;
|
||||||
|
console.log('======================');
|
||||||
|
console.log(this.cache, eventName);
|
||||||
|
console.log('======================');
|
||||||
|
this.cache[eventName].forEach((fn) => fn(data));
|
||||||
|
}
|
||||||
|
off(eventName: string, fn: (data: any) => void) {
|
||||||
|
if (this.cache[eventName] === undefined || this.cache[eventName].length === 0) return;
|
||||||
|
const i = this.cache[eventName].indexOf(fn);
|
||||||
|
if (i === -1) return;
|
||||||
|
this.cache[eventName].splice(i, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
clear() {
|
||||||
|
this.cache = {};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default EventHub;
|
@@ -58,6 +58,7 @@
|
|||||||
<BasicForm
|
<BasicForm
|
||||||
:schemas="schemas"
|
:schemas="schemas"
|
||||||
ref="formElRef"
|
ref="formElRef"
|
||||||
|
:labelWidth="100"
|
||||||
@submit="handleSubmit"
|
@submit="handleSubmit"
|
||||||
:actionColOptions="{ span: 24 }"
|
:actionColOptions="{ span: 24 }"
|
||||||
/>
|
/>
|
||||||
|
@@ -1,30 +0,0 @@
|
|||||||
<script lang="tsx">
|
|
||||||
import { defineComponent, PropOptions } from 'compatible-vue';
|
|
||||||
import { BasicModal } from '@/components/modal/index';
|
|
||||||
import { ErrorInfo } from '@/store/modules/error';
|
|
||||||
import { Description, useDescription } from '@/components/description/index';
|
|
||||||
import { getDescSchema } from './data';
|
|
||||||
|
|
||||||
export default defineComponent({
|
|
||||||
name: 'ErrorLogDetailModal',
|
|
||||||
props: {
|
|
||||||
info: {
|
|
||||||
type: Object,
|
|
||||||
default: null,
|
|
||||||
} as PropOptions<ErrorInfo>,
|
|
||||||
},
|
|
||||||
setup(props, { listeners }) {
|
|
||||||
const [register] = useDescription({
|
|
||||||
column: 2,
|
|
||||||
schema: getDescSchema(),
|
|
||||||
});
|
|
||||||
return () => {
|
|
||||||
return (
|
|
||||||
<BasicModal width={800} title="错误详情" on={listeners}>
|
|
||||||
<Description data={props.info} onRegister={register} />
|
|
||||||
</BasicModal>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
},
|
|
||||||
});
|
|
||||||
</script>
|
|
@@ -1,66 +0,0 @@
|
|||||||
import { Tag } from 'ant-design-vue';
|
|
||||||
import { BasicColumn } from '@/components/table/index';
|
|
||||||
import { ErrorTypeEnum } from '@/store/modules/error';
|
|
||||||
import { DescItem } from '@/components/description/index';
|
|
||||||
|
|
||||||
export function getColumns(): BasicColumn[] {
|
|
||||||
return [
|
|
||||||
{
|
|
||||||
dataIndex: 'type',
|
|
||||||
title: '类型',
|
|
||||||
width: 80,
|
|
||||||
customRender: (text: string) => {
|
|
||||||
const color =
|
|
||||||
text === ErrorTypeEnum.VUE
|
|
||||||
? 'green'
|
|
||||||
: text === ErrorTypeEnum.RESOURCE
|
|
||||||
? 'cyan'
|
|
||||||
: text === ErrorTypeEnum.PROMISE
|
|
||||||
? 'blue'
|
|
||||||
: ErrorTypeEnum.AJAX
|
|
||||||
? 'red'
|
|
||||||
: 'purple';
|
|
||||||
return <Tag color={color}>{text}</Tag>;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
dataIndex: 'url',
|
|
||||||
title: '地址',
|
|
||||||
width: 200,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
dataIndex: 'time',
|
|
||||||
title: '时间',
|
|
||||||
width: 160,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
dataIndex: 'file',
|
|
||||||
title: '文件',
|
|
||||||
width: 200,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
dataIndex: 'name',
|
|
||||||
title: 'Name',
|
|
||||||
width: 200,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
dataIndex: 'message',
|
|
||||||
title: '错误信息',
|
|
||||||
width: 300,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
dataIndex: 'stack',
|
|
||||||
title: 'stack信息',
|
|
||||||
width: 300,
|
|
||||||
},
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getDescSchema(): DescItem[] {
|
|
||||||
return getColumns().map((column) => {
|
|
||||||
return {
|
|
||||||
field: column.dataIndex!,
|
|
||||||
label: column.title,
|
|
||||||
};
|
|
||||||
});
|
|
||||||
}
|
|
@@ -1,108 +0,0 @@
|
|||||||
<script lang="tsx">
|
|
||||||
import { defineComponent, watch, ref, unref } from 'compatible-vue';
|
|
||||||
|
|
||||||
import DetailModal from './DetailModal.vue';
|
|
||||||
import { useModal } from '@/components/modal/index';
|
|
||||||
|
|
||||||
import { useDesign } from '@/hooks/core/useDesign';
|
|
||||||
|
|
||||||
import { BasicTable, useTable } from '@/components/table/index';
|
|
||||||
|
|
||||||
import { errorStore, ErrorInfo } from '@/store/modules/error';
|
|
||||||
|
|
||||||
import { fireErrorApi } from '@/api/demo/error';
|
|
||||||
|
|
||||||
import { getColumns } from './data';
|
|
||||||
|
|
||||||
const { prefixCls } = useDesign('error-handle');
|
|
||||||
|
|
||||||
export default defineComponent({
|
|
||||||
name: 'ErrorHandler',
|
|
||||||
setup() {
|
|
||||||
const rowInfoRef = ref<ErrorInfo>();
|
|
||||||
const imgListRef = ref<string[]>([]);
|
|
||||||
const [register, { setTableData }] = useTable({
|
|
||||||
titleHelpMessage: '只在`/src/settings/projectSetting.ts` 内的useErrorHandle=true时生效!',
|
|
||||||
title: '错误日志列表',
|
|
||||||
columns: getColumns(),
|
|
||||||
actionColumn: {
|
|
||||||
width: 80,
|
|
||||||
title: '操作',
|
|
||||||
dataIndex: 'action',
|
|
||||||
customRender: (text: string, recoed: ErrorInfo) => {
|
|
||||||
return (
|
|
||||||
<a-button type="link" size="small" onClick={handleDetail.bind(null, recoed)}>
|
|
||||||
详情
|
|
||||||
</a-button>
|
|
||||||
);
|
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const [registerModal, { openModal }] = useModal();
|
|
||||||
watch(
|
|
||||||
() => errorStore.getErrorInfoState,
|
|
||||||
(list: any[]) => {
|
|
||||||
setTableData(list);
|
|
||||||
},
|
|
||||||
{
|
|
||||||
immediate: true,
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
// 查看详情
|
|
||||||
function handleDetail(row: ErrorInfo) {
|
|
||||||
rowInfoRef.value = row;
|
|
||||||
openModal({
|
|
||||||
visible: true,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function fireVueError() {
|
|
||||||
throw new Error('fire vue error!');
|
|
||||||
}
|
|
||||||
|
|
||||||
function fireResourceError() {
|
|
||||||
imgListRef.value.push(`${new Date().getTime()}.png`);
|
|
||||||
}
|
|
||||||
|
|
||||||
async function fireAjaxError() {
|
|
||||||
await fireErrorApi();
|
|
||||||
}
|
|
||||||
|
|
||||||
return () => (
|
|
||||||
<div class={[prefixCls, 'p-4']}>
|
|
||||||
{unref(imgListRef).map((src) => {
|
|
||||||
return <img src={src} key={src} class="hidden" />;
|
|
||||||
})}
|
|
||||||
|
|
||||||
<DetailModal info={unref(rowInfoRef)} onRegister={registerModal} />
|
|
||||||
|
|
||||||
<BasicTable onRegister={register} class={`${prefixCls}-table`}>
|
|
||||||
<template slot="toolbar">
|
|
||||||
<a-button onClick={fireVueError} type="primary">
|
|
||||||
点击触发vue错误
|
|
||||||
</a-button>
|
|
||||||
<a-button onClick={fireResourceError} type="primary">
|
|
||||||
点击触发resource错误
|
|
||||||
</a-button>
|
|
||||||
<a-button onClick={fireAjaxError} type="primary">
|
|
||||||
点击触发ajax错误
|
|
||||||
</a-button>
|
|
||||||
</template>
|
|
||||||
</BasicTable>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
},
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
<style scoped lang="less">
|
|
||||||
@import (reference) '~@design';
|
|
||||||
@prefix-cls: ~'@{namespace}-error-handle';
|
|
||||||
|
|
||||||
.@{prefix-cls} {
|
|
||||||
&-table {
|
|
||||||
background: #fff;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
@@ -1,7 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="iframe-page" :style="getWrapStyle">
|
<div class="iframe-page" :style="getWrapStyle">
|
||||||
<Spin :spinning="loading" size="large" :style="getWrapStyle">
|
<Spin :spinning="loading" size="large" :style="getWrapStyle">
|
||||||
<div class="iframe-page__mask" v-show="menuStore.getDragStartState" />
|
|
||||||
<iframe :src="frameSrc" class="iframe-page__main" ref="frameRef" />
|
<iframe :src="frameSrc" class="iframe-page__main" ref="frameRef" />
|
||||||
</Spin>
|
</Spin>
|
||||||
</div>
|
</div>
|
||||||
@@ -12,7 +11,7 @@
|
|||||||
|
|
||||||
import { getViewportOffset } from '/@/utils/domUtils';
|
import { getViewportOffset } from '/@/utils/domUtils';
|
||||||
import { useWindowSizeFn } from '/@/hooks/event/useWindowSize';
|
import { useWindowSizeFn } from '/@/hooks/event/useWindowSize';
|
||||||
import { menuStore } from '/@/store/modules/menu';
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: 'IFrame',
|
name: 'IFrame',
|
||||||
components: { Spin },
|
components: { Spin },
|
||||||
@@ -76,7 +75,6 @@
|
|||||||
}),
|
}),
|
||||||
loading: loadingRef,
|
loading: loadingRef,
|
||||||
frameRef,
|
frameRef,
|
||||||
menuStore,
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@@ -51,7 +51,7 @@ const viteConfig: UserConfig = {
|
|||||||
*/
|
*/
|
||||||
port: 3100,
|
port: 3100,
|
||||||
/**
|
/**
|
||||||
* 运行自动打开浏览器
|
* 运行自动打开浏览器·
|
||||||
* @default 'false'
|
* @default 'false'
|
||||||
*/
|
*/
|
||||||
open: false,
|
open: false,
|
||||||
@@ -88,9 +88,9 @@ const viteConfig: UserConfig = {
|
|||||||
assetsInlineLimit: 4096,
|
assetsInlineLimit: 4096,
|
||||||
/**
|
/**
|
||||||
* esbuild转换目标。
|
* esbuild转换目标。
|
||||||
* @default 'es2020'
|
* @default 'es2019'
|
||||||
*/
|
*/
|
||||||
esbuildTarget: 'es2020',
|
esbuildTarget: 'es2019',
|
||||||
|
|
||||||
// 别名
|
// 别名
|
||||||
alias: {
|
alias: {
|
||||||
|
Reference in New Issue
Block a user