8 Commits

Author SHA1 Message Date
疯狂的狮子Li
6bc3c618fe !262 发布 v5.6.0-v2.6.0 版本 新年第一版
Merge pull request !262 from 疯狂的狮子Li/dev
2026-03-24 03:49:37 +00:00
疯狂的狮子Li
5c9c940588 !257 发布 5.5.3-2.5.3 版本 提前祝大家新年快乐
Merge pull request !257 from 疯狂的狮子Li/dev
2026-01-23 06:04:29 +00:00
疯狂的狮子Li
dfd1dc29d1 !256 fix 修复 代码漏改问题
Merge pull request !256 from 疯狂的狮子Li/dev
2025-12-23 05:56:54 +00:00
疯狂的狮子Li
b411505b19 !255 发布 5.5.2-2.5.2 版本 2025年最后一版
Merge pull request !255 from 疯狂的狮子Li/dev
2025-12-23 01:41:45 +00:00
疯狂的狮子Li
52ea8895d6 !246 发布 5.5.1-2.5.1 日常依赖升级bug修复
Merge pull request !246 from 疯狂的狮子Li/dev
2025-10-28 03:22:49 +00:00
疯狂的狮子Li
1b46739799 !241 发布 5.5.0-2.5.0 喜迎国庆
Merge pull request !241 from 疯狂的狮子Li/dev
2025-09-22 03:18:41 +00:00
疯狂的狮子Li
b000788785 !222 发布 5.4.1-2.4.1 小步迭代修复问题
Merge pull request !222 from 疯狂的狮子Li/dev
2025-07-01 01:13:49 +00:00
疯狂的狮子Li
2dc094c1db !212 发布 5.4.0-2.4.0 正式版
Merge pull request !212 from 疯狂的狮子Li/dev
2025-05-29 03:18:30 +00:00
21 changed files with 178 additions and 157 deletions

View File

@@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/package",
"name": "ruoyi-vue-plus",
"version": "5.6.1-2.6.1",
"version": "5.6.0-2.6.0",
"description": "RuoYi-Vue-Plus多租户管理系统",
"author": "LionLi",
"license": "MIT",
@@ -73,7 +73,7 @@
"unplugin-icons": "23.0.1",
"unplugin-vue-components": "31.0.0",
"unplugin-vue-setup-extend-plus": "1.0.1",
"vite": "7.3.2",
"vite": "7.3.1",
"vite-plugin-svg-icons-ng": "^1.5.2",
"vite-plugin-vue-devtools": "8.0.7",
"vitest": "4.0.18",

View File

@@ -61,6 +61,14 @@ export const delTable = (tableId: string | number | Array<string | number>) => {
});
};
// 生成代码(自定义路径)
export const genCode = (tableId: string | number) => {
return request({
url: '/tool/gen/genCode/' + tableId,
method: 'get'
});
};
// 同步数据库
export const synchDb = (tableId: string | number) => {
return request({

View File

@@ -13,6 +13,8 @@ export interface TableVO extends BaseEntity {
businessName: string;
functionName: string;
functionAuthor: string;
genType: string;
genPath: string;
pkColumn?: any;
columns?: any;
options?: any;
@@ -79,6 +81,8 @@ export interface DbTableVO {
businessName?: any;
functionName?: any;
functionAuthor?: any;
genType?: any;
genPath?: any;
pkColumn?: any;
columns: DbColumnVO[];
options?: any;
@@ -158,6 +162,8 @@ export interface DbTableForm extends BaseEntity {
businessName: string;
functionName: string;
functionAuthor: string;
genType: string;
genPath: string;
pkColumn?: any;
columns: DbColumnForm[];
options: string;

View File

@@ -74,7 +74,7 @@
.el-dialog {
margin: 0 auto !important;
border-radius: var(--app-radius-base);
border-radius: var(--app-radius-lg);
box-shadow: var(--app-shadow-md);
overflow: hidden;
@@ -158,7 +158,7 @@
}
.el-message-box {
border-radius: var(--app-radius-base);
border-radius: var(--app-radius-lg);
box-shadow: var(--app-shadow-md);
}
@@ -192,7 +192,7 @@
// Buttons
.el-button {
border-radius: var(--el-border-radius-base);
border-radius: var(--app-radius-md);
transition: transform 0.15s ease, box-shadow 0.2s ease, background-color 0.2s ease, border-color 0.2s ease;
}
@@ -215,7 +215,7 @@
}
.el-drawer {
border-radius: var(--app-radius-base);
border-radius: var(--app-radius-lg);
box-shadow: var(--app-shadow-md);
}
@@ -227,7 +227,7 @@
// Table polish
.el-table {
border-radius: var(--app-radius-base);
border-radius: var(--app-radius-lg);
overflow: hidden;
box-shadow: var(--app-shadow-sm);
border: 1px solid var(--el-border-color-lighter);

View File

@@ -115,7 +115,7 @@ div:focus {
}
aside {
background: var(--el-fill-color-light);
background: #eef1f6;
padding: 8px 24px;
margin-bottom: 20px;
border-radius: var(--app-radius-md);
@@ -131,43 +131,44 @@ aside {
'Hiragino Sans GB',
'Microsoft YaHei',
sans-serif;
color: var(--el-text-color-primary);
color: #2c3e50;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
a {
color: var(--el-color-primary);
color: #337ab7;
cursor: pointer;
&:hover {
color: var(--el-color-primary-light-3);
color: rgb(32, 160, 255);
}
}
}
//main-container全局样式
.app-container {
padding: 16px;
background: transparent;
border: none;
border-radius: 0;
box-shadow: none;
padding: 20px;
background: var(--app-surface-bg);
border: 1px solid var(--app-surface-border);
border-radius: var(--app-radius-lg);
box-shadow: var(--app-shadow-sm);
}
// search面板样式
.panel,
.search {
margin-bottom: 12px;
border-radius: var(--app-radius-base);
border: 1px solid var(--el-border-color-lighter);
padding: 16px;
background: var(--app-surface-bg);
box-shadow: var(--app-shadow-sm);
transition: box-shadow 0.2s ease, border-color 0.2s ease;
margin-bottom: 0.75rem;
border-radius: var(--app-radius-lg);
border: 1px solid var(--el-border-color-light);
background-color: var(--el-bg-color-overlay);
padding: 0.75rem;
box-shadow: 0 0 0 rgba(0, 0, 0, 0);
transition: box-shadow 0.2s ease, transform 0.2s ease, border-color 0.2s ease;
&:hover {
box-shadow: var(--app-shadow-md);
border-color: var(--el-border-color-light);
box-shadow: var(--app-shadow-sm);
border-color: var(--el-border-color);
transform: translateY(-1px);
}
}

View File

@@ -77,7 +77,7 @@ h6 {
font-weight: 600;
}
.el-dialog:not(.is-fullscreen) {
margin-top: 0 !important;
margin-top: 6vh !important;
}
.el-dialog.scrollbar .el-dialog__body {
@@ -125,8 +125,8 @@ h6 {
/* tree border */
.tree-border {
margin-top: 5px;
border: 1px solid var(--el-border-color-light);
background: var(--el-bg-color);
border: 1px solid #e5e6e7;
background: #ffffff none;
border-radius: var(--app-radius-md);
width: 100%;
}
@@ -203,11 +203,12 @@ h6 {
box-shadow: var(--app-shadow-sm);
border-color: var(--el-border-color-lighter);
overflow: hidden;
transition: box-shadow 0.2s ease;
transition: box-shadow 0.2s ease, transform 0.2s ease;
}
.el-card:hover {
box-shadow: var(--app-shadow-md);
transform: translateY(-1px);
}
.card-box {

View File

@@ -27,11 +27,9 @@
--tags-view-active-border-color: var(--el-color-primary);
// Modern rounded style + soft shadows
--app-radius-base: 8px;
--app-radius-sm: calc(var(--app-radius-base) * 0.6);
--app-radius-md: var(--app-radius-base);
--app-radius-lg: calc(var(--app-radius-base) * 1.4);
--app-radius-lg: var(--app-radius-base);
--app-radius-sm: 6px;
--app-radius-md: 10px;
--app-radius-lg: 14px;
--app-shadow-sm: 0 1px 2px rgba(15, 23, 42, 0.08), 0 6px 16px rgba(15, 23, 42, 0.08);
--app-shadow-md: 0 8px 24px rgba(15, 23, 42, 0.12);
--app-shadow-lg: 0 12px 32px rgba(15, 23, 42, 0.16);
@@ -54,7 +52,7 @@ html.dark {
--menuHover: #171819;
--subMenuBg: #1d1e1f;
--subMenuActiveText: #f4f4f5;
--subMenuActiveText: #1d1e1f;
--subMenuHover: #171819;
--subMenuTitleHover: #171819;

View File

@@ -1,15 +1,13 @@
<template>
<div>
<el-upload
v-if="type === 'url'"
:action="upload.url"
v-if="type"
action=""
:before-upload="handleBeforeUpload"
:on-success="handleUploadSuccess"
:on-error="handleUploadError"
:http-request="handleUploadRequest"
class="editor-img-uploader"
name="file"
:show-file-list="false"
:headers="upload.headers"
>
<i ref="uploadRef"></i>
</el-upload>
@@ -31,7 +29,7 @@ import '@vueup/vue-quill/dist/vue-quill.snow.css';
import { QuillEditor, Quill } from '@vueup/vue-quill';
import { propTypes } from '@/utils/propTypes';
import { globalHeaders } from '@/utils/request';
import type { UploadRequestHandler, UploadRequestOptions } from 'element-plus';
defineEmits(['update:modelValue']);
@@ -47,15 +45,11 @@ const props = defineProps({
/* 上传文件大小限制(MB) */
fileSize: propTypes.number.def(5),
/* 类型base64格式、url格式 */
type: propTypes.string.def('url')
type: propTypes.string.def('base64')
});
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const upload = reactive<UploadOption>({
headers: globalHeaders(),
url: import.meta.env.VITE_APP_BASE_API + '/resource/oss/upload'
});
const quillEditorRef = ref();
const uploadRef = ref<HTMLDivElement>();
@@ -116,28 +110,9 @@ watch(
{ immediate: true }
);
// 图片上传成功返回图片地址
const handleUploadSuccess = (res: any) => {
// 如果上传成功
if (res.code === 200) {
// 获取富文本实例
const quill = toRaw(quillEditorRef.value).getQuill();
// 获取光标位置
const length = quill.selection.savedRange.index;
// 插入图片res为服务器返回的图片链接地址
quill.insertEmbed(length, 'image', res.data.url);
// 调整光标到最后
quill.setSelection(length + 1);
proxy?.$modal.closeLoading();
} else {
proxy?.$modal.msgError('图片插入失败');
proxy?.$modal.closeLoading();
}
};
// 图片上传前拦截
const handleBeforeUpload = (file: any) => {
const type = ['image/jpeg', 'image/jpg', 'image/png', 'image/svg'];
const type = ['image/jpeg', 'image/jpg', 'image/png', 'image/svg', 'image/svg+xml'];
const isJPG = type.includes(file.type);
//检验文件格式
if (!isJPG) {
@@ -156,9 +131,41 @@ const handleBeforeUpload = (file: any) => {
return true;
};
// 图片失败拦截
const handleUploadError = (err: any) => {
proxy?.$modal.msgError('上传文件失败');
// base64 模式插入图片
const handleUploadRequest: UploadRequestHandler = (options: UploadRequestOptions) => {
return new Promise<void>((resolve, reject) => {
const file = options.file as File;
const quill = toRaw(quillEditorRef.value)?.getQuill();
if (!quill) {
proxy?.$modal.msgError('编辑器未就绪');
proxy?.$modal.closeLoading();
reject(new Error('editor not ready'));
return;
}
const reader = new FileReader();
reader.onload = () => {
const base64 = reader.result as string;
const range = quill.selection?.savedRange;
const length = range ? range.index : quill.getLength();
quill.insertEmbed(length, 'image', base64);
quill.setSelection(length + 1);
proxy?.$modal.closeLoading();
options.onSuccess?.({ url: base64 });
resolve();
};
reader.onerror = () => {
proxy?.$modal.msgError('图片插入失败');
proxy?.$modal.closeLoading();
const err = Object.assign(new Error('read image failed'), {
status: 0,
method: 'POST',
url: options.action || ''
});
options.onError?.(err as any);
reject(err);
};
reader.readAsDataURL(file);
});
};
</script>

View File

@@ -14,7 +14,7 @@
<el-select
v-if="userId === 1 && tenantEnabled"
v-model="companyName"
class="min-w-244px mr-2"
class="min-w-244px"
clearable
filterable
reserve-keyword
@@ -34,11 +34,11 @@
</el-tooltip>
<!-- 消息 -->
<el-tooltip :content="proxy.$t('navbar.message')" effect="dark" placement="bottom">
<div style="display:flex;align-items:center">
<div>
<el-popover placement="bottom" trigger="click" transition="el-zoom-in-top" :width="300" :persistent="false">
<template #reference>
<el-badge :value="newNotice > 0 ? newNotice : ''" :max="99">
<div class="right-menu-item hover-effect"><svg-icon icon-class="message" /></div>
<div class="right-menu-item hover-effect" style="display: block"><svg-icon icon-class="message" /></div>
</el-badge>
</template>
<template #default>
@@ -289,7 +289,9 @@ watch(
}
.right-menu {
//float: right;
height: 100%;
line-height: 50px;
display: flex;
align-items: center;
margin-left: auto;
@@ -299,22 +301,19 @@ watch(
}
.right-menu-item {
display: inline-flex;
align-items: center;
justify-content: center;
display: inline-block;
padding: 0 8px;
height: 32px;
height: 100%;
font-size: 18px;
color: var(--el-text-color-regular);
border-radius: var(--app-radius-md);
vertical-align: text-bottom;
&.hover-effect {
cursor: pointer;
transition: background 0.2s ease, color 0.2s ease;
transition: background 0.3s;
&:hover {
background: var(--el-fill-color-light);
color: var(--el-color-primary);
background: var(--el-fill-color-lighter);
}
}
}
@@ -323,7 +322,7 @@ watch(
margin-right: 40px;
.avatar-wrapper {
margin-top: 0;
margin-top: 5px;
position: relative;
.user-avatar {
@@ -331,8 +330,7 @@ watch(
width: 40px;
height: 40px;
border-radius: var(--app-radius-md);
margin-top: 0;
display: block;
margin-top: 10px;
}
i {

View File

@@ -75,12 +75,6 @@
<el-switch v-model="isDark" class="drawer-switch" @change="toggleDark" />
</span>
</div>
<div class="drawer-item">
<span>页面圆角</span>
<span class="comp-style">
<el-slider v-model="radiusBase" :min="0" :max="32" :step="2" style="width: 120px" @change="radiusBaseChange" />
</span>
</div>
<el-divider />
@@ -149,7 +143,6 @@ const sideTheme = ref(settingsStore.sideTheme);
const storeSettings = computed(() => settingsStore);
const predefineColors = ref(['#409EFF', '#ff4500', '#ff8c00', '#ffd700', '#90ee90', '#00ced1', '#1e90ff', '#c71585']);
const navType = ref(settingsStore.navType);
const radiusBase = ref(settingsStore.radiusBase);
// 是否暗黑模式
const isDark = useDark({
storageKey: 'useDarkKey',
@@ -197,16 +190,6 @@ const themeChange = (val: string) => {
settingsStore.theme = val;
handleThemeStyle(val);
};
const radiusBaseChange = (val: number) => {
settingsStore.radiusBase = val;
const el = document.documentElement;
el.style.setProperty('--app-radius-base', `${val}px`);
el.style.setProperty('--app-radius-sm', `${Math.round(val * 0.6)}px`);
el.style.setProperty('--app-radius-md', `${val}px`);
el.style.setProperty('--app-radius-lg', `${Math.round(val * 1.4)}px`);
el.style.setProperty('--el-border-radius-base', `${val}px`);
el.style.setProperty('--el-border-radius-small', `${Math.round(val * 0.6)}px`);
};
const handleTheme = (val: string) => {
sideTheme.value = val;
if (isDark.value && val === SideThemeEnum.LIGHT) {
@@ -227,7 +210,6 @@ const saveSetting = () => {
settings.value.sideTheme = storeSettings.value.sideTheme;
settings.value.theme = storeSettings.value.theme;
settings.value.navType = storeSettings.value.navType;
settings.value.radiusBase = storeSettings.value.radiusBase;
setTimeout(() => {
proxy?.$modal.closeLoading();
}, 1000);
@@ -241,10 +223,6 @@ const openSetting = () => {
showSettings.value = true;
};
onMounted(() => {
radiusBaseChange(storeSettings.value.radiusBase);
});
defineExpose({
openSetting
});

View File

@@ -243,9 +243,9 @@ onMounted(() => {
height: 34px;
width: 100%;
background-color: var(--el-bg-color);
border-top: none;
border-bottom: 1px solid var(--el-border-color-lighter);
box-shadow: none;
border: 1px solid var(--el-border-color-light);
border-radius: var(--app-radius-md);
box-shadow: var(--app-shadow-sm);
.tags-view-wrapper {
.tags-view-item {
display: inline-block;
@@ -275,12 +275,12 @@ onMounted(() => {
margin-right: 15px;
}
&.active {
background-color: var(--tags-view-active-bg);
background-color: #42b983;
color: #fff;
border-color: var(--tags-view-active-border-color);
border-color: #42b983;
&::before {
content: '';
background: rgba(255, 255, 255, 0.7);
background: #fff;
display: inline-block;
width: 8px;
height: 8px;

View File

@@ -1,11 +1,10 @@
<template>
<div class="layout-search-dialog">
<el-dialog v-model="state.isShowSearch" destroy-on-close :show-close="false" width="600px" top="12vh">
<div class="layout-search-dialog__content">
<el-dialog v-model="state.isShowSearch" destroy-on-close :show-close="false">
<template #footer>
<el-autocomplete
ref="layoutMenuAutocompleteRef"
v-model="state.menuQuery"
class="layout-search-dialog__autocomplete"
:fetch-suggestions="menuSearch"
placeholder="搜索"
:fit-input-width="true"
@@ -21,7 +20,7 @@
</div>
</template>
</el-autocomplete>
</div>
</template>
</el-dialog>
</div>
</template>
@@ -133,29 +132,27 @@ defineExpose({
<style lang="scss" scoped>
.layout-search-dialog {
position: relative;
:deep(.el-dialog) {
border-radius: var(--app-radius-base);
overflow: visible;
padding: 0;
.el-dialog__header,
.el-dialog__footer {
.el-dialog__body {
display: none;
}
.el-dialog__body {
padding: 20px;
.el-dialog__footer {
width: 100%;
position: absolute;
left: 50%;
transform: translateX(-50%);
top: -53vh;
}
}
&__content {
width: 100%;
}
&__autocomplete {
width: 100%;
}
:deep(.el-input__wrapper) {
min-height: 44px;
border-radius: var(--app-radius-md);
:deep(.el-autocomplete) {
width: 560px;
position: absolute;
top: 150px;
left: 50%;
transform: translateX(-50%);
}
}
</style>

View File

@@ -127,7 +127,6 @@ const setLayout = () => {
width: calc(100% - #{$base-sidebar-width});
transition: width 0.28s;
background: $fixed-header-bg;
box-shadow: 0 2px 8px rgba(0, 21, 41, 0.10);
}
.hideSidebar .fixed-header {

View File

@@ -71,11 +71,6 @@ const setting: DefaultSettings = {
/**
* 默认布局
*/
layout: '',
/**
* 页面圆角大小
*/
radiusBase: 8
layout: ''
};
export default setting;

View File

@@ -7,6 +7,7 @@ import { NavTypeEnum } from '@/enums/NavTypeEnum';
export const useSettingsStore = defineStore('setting', () => {
const storageSetting = useStorage<LayoutSetting>('layout-setting', {
topNav: defaultSettings.topNav,
tagsView: defaultSettings.tagsView,
tagsIcon: defaultSettings.tagsIcon,
fixedHeader: defaultSettings.fixedHeader,
@@ -14,8 +15,7 @@ export const useSettingsStore = defineStore('setting', () => {
dynamicTitle: defaultSettings.dynamicTitle,
sideTheme: defaultSettings.sideTheme,
theme: defaultSettings.theme,
navType: defaultSettings.navType,
radiusBase: defaultSettings.radiusBase
navType: defaultSettings.navType
});
const title = ref<string>(defaultSettings.title);
const theme = ref<string>(storageSetting.value.theme);
@@ -29,7 +29,6 @@ export const useSettingsStore = defineStore('setting', () => {
const animationEnable = ref<boolean>(defaultSettings.animationEnable);
const dark = ref<boolean>(defaultSettings.dark);
const navType = ref<NavTypeEnum>(storageSetting.value.navType || NavTypeEnum.LEFT);
const radiusBase = ref<number>(storageSetting.value.radiusBase ?? defaultSettings.radiusBase);
const setTitle = (value: string) => {
title.value = value;
@@ -48,7 +47,6 @@ export const useSettingsStore = defineStore('setting', () => {
animationEnable,
dark,
navType,
radiusBase,
setTitle
};
});

View File

@@ -123,10 +123,6 @@ declare global {
* 主题模式
*/
theme: string;
/**
* 页面圆角大小
*/
radiusBase: number;
}
declare interface DefaultSettings extends LayoutSetting {

View File

@@ -33,7 +33,7 @@
* 部署方式 Docker 容器编排 一键部署业务集群<br />
* 国际化 SpringMessage Spring标准国际化方案<br />
</p>
<p><b>当前版本:</b> <span>v5.6.1</span></p>
<p><b>当前版本:</b> <span>v5.6.0</span></p>
<p>
<el-tag type="danger">&yen;免费开源</el-tag>
</p>
@@ -77,7 +77,7 @@
* 分布式监控 PrometheusGrafana 全方位性能监控<br />
* 其余与 Vue 版本一致<br />
</p>
<p><b>当前版本:</b> <span>v2.6.1</span></p>
<p><b>当前版本:</b> <span>v2.6.0</span></p>
<p>
<el-tag type="danger">&yen;免费开源</el-tag>
</p>

View File

@@ -82,6 +82,44 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="genType">
<template #label>
生成代码方式
<el-tooltip content="默认为zip压缩包下载也可以自定义生成路径" placement="top">
<el-icon><question-filled /></el-icon>
</el-tooltip>
</template>
<el-radio v-model="infoForm.genType" value="0">zip压缩包</el-radio>
<el-radio v-model="infoForm.genType" value="1">自定义路径</el-radio>
</el-form-item>
</el-col>
<el-col v-if="infoForm.genType == '1'" :span="24">
<el-form-item prop="genPath">
<template #label>
自定义路径
<el-tooltip content="填写磁盘绝对路径若不填写则生成到当前Web项目下" placement="top">
<el-icon><question-filled /></el-icon>
</el-tooltip>
</template>
<el-input v-model="infoForm.genPath">
<template #append>
<el-dropdown>
<el-button type="primary">
最近路径快速选择
<i class="el-icon-arrow-down el-icon--right"></i>
</el-button>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item @click="infoForm.genPath = '/'">恢复默认的生成基础路径</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
</template>
</el-input>
</el-form-item>
</el-col>
</el-row>
<template v-if="info.tplCategory == 'tree'">

View File

@@ -113,7 +113,7 @@
</template>
<script setup name="Gen" lang="ts">
import { delTable, getDataNames, listTable, previewTable, synchDb } from '@/api/tool/gen';
import { delTable, genCode, getDataNames, listTable, previewTable, synchDb } from '@/api/tool/gen';
import { TableQuery, TableVO } from '@/api/tool/gen/types';
import router from '@/router';
import ImportTable from './importTable.vue';
@@ -181,7 +181,12 @@ const handleGenTable = async (row?: TableVO) => {
proxy?.$modal.msgError('请选择要生成的数据');
return;
}
proxy?.$download.zip('/tool/gen/batchGenCode?tableIdStr=' + tbIds, 'ruoyi.zip');
if (row?.genType === '1') {
await genCode(row.tableId);
proxy?.$modal.msgSuccess('成功生成到自定义路径:' + row.genPath);
} else {
proxy?.$download.zip('/tool/gen/batchGenCode?tableIdStr=' + tbIds, 'ruoyi.zip');
}
};
/** 同步数据库操作 */
const handleSynchDb = async (row: TableVO) => {

View File

@@ -12,9 +12,7 @@ export default (path: any) => {
},
resolvers: [
// 自动导入 Element Plus 相关函数ElMessage, ElMessageBox... (带样式)
ElementPlusResolver({
importStyle: false
})
ElementPlusResolver()
],
vueTemplate: true, // 是否在 vue 模板中自动导入
dts: path.resolve(path.resolve(__dirname, '../../src'), 'types', 'auto-imports.d.ts')

View File

@@ -6,9 +6,7 @@ export default (path: any) => {
return Components({
resolvers: [
// 自动导入 Element Plus 组件
ElementPlusResolver({
importStyle: false
}),
ElementPlusResolver(),
// 自动注册图标组件
IconsResolver({
enabledCollections: ['ep']