From 255c405e592be66656aa3b1a64177b582a1b35fa Mon Sep 17 00:00:00 2001 From: H0nGzA1 <2505811377@qq.com> Date: Fri, 31 Mar 2023 00:25:23 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E2=9C=A8=20=E5=89=8D=E7=AB=AF=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E6=B3=A8=E5=86=8C=E6=8F=92=E4=BB=B6=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/main.ts | 4 ++++ web/src/settings.ts | 22 +++++++++++----------- web/src/views/plugins/index.ts | 15 +++++++++++++++ 3 files changed, 30 insertions(+), 11 deletions(-) create mode 100644 web/src/views/plugins/index.ts diff --git a/web/src/main.ts b/web/src/main.ts index eec3c10..e68fc94 100644 --- a/web/src/main.ts +++ b/web/src/main.ts @@ -25,6 +25,8 @@ import fontAwesome470 from 'e-icon-picker/icon/fontawesome/font-awesome.v4.7.0.j import eIconList from 'e-icon-picker/icon/default-icon/eIconList.js'; import iconfont from '/@/assets/iconfont/iconfont.json'; //引入json文件 import '/@/assets/iconfont/iconfont.css'; //引入css +// 自动注册插件 +import { scanAndInstallPlugins } from '/@/views/plugins/index'; let forIconfont = analyzingIconForIconfont(iconfont); //解析class iconList.addIcon(forIconfont.list); // 添加iconfont dvadmin3的icon @@ -33,6 +35,8 @@ iconList.addIcon(fontAwesome470); // 添加fontAwesome 470版本的图标 let app = createApp(App); +scanAndInstallPlugins(app); + app.use(eIconPicker, { addIconList: eIconList, //全局添加图标 removeIconList: [], //全局删除图标 diff --git a/web/src/settings.ts b/web/src/settings.ts index 9cd264c..588a6a0 100644 --- a/web/src/settings.ts +++ b/web/src/settings.ts @@ -7,8 +7,8 @@ import { setLogger } from '@fast-crud/fast-crud'; import ui from '@fast-crud/ui-element'; import { request } from '/@/utils/service'; //扩展包 -import {FsExtendsEditor} from "@fast-crud/fast-extends"; -import "@fast-crud/fast-extends/dist/style.css"; +import { FsExtendsEditor } from '@fast-crud/fast-extends'; +import '@fast-crud/fast-extends/dist/style.css'; export default { async install(app: any, options: any) { // 先安装ui @@ -18,7 +18,7 @@ export default { //i18n, //i18n配置,可选,默认使用中文,具体用法请看demo里的 src/i18n/index.js 文件 // 此处配置公共的dictRequest(字典请求) async dictRequest({ dict }: any) { - return await request({ url: dict.url,params:dict.params || {} }); //根据dict的url,异步返回一个字典数组 + return await request({ url: dict.url, params: dict.params || {} }); //根据dict的url,异步返回一个字典数组 }, //公共crud配置 commonOptions() { @@ -28,9 +28,9 @@ export default { //你项目后台接口大概率与fast-crud所需要的返回结构不一致,所以需要配置此项 //请参考文档http://fast-crud.docmirror.cn/api/crud-options/request.html transformQuery: ({ page, form, sort }: any) => { - if (sort.asc !== undefined){ - form["ordering"] = `${sort.asc ? "" : "-"}${sort.prop}` - } + if (sort.asc !== undefined) { + form['ordering'] = `${sort.asc ? '' : '-'}${sort.prop}`; + } //转换为你pageRequest所需要的请求参数结构 return { page: page.currentPage, limit: page.pageSize, ...form }; }, @@ -58,11 +58,11 @@ export default { }, }); //富文本 - app.use(FsExtendsEditor,{ - wangEditor:{ - width:300, - } - }) + app.use(FsExtendsEditor, { + wangEditor: { + width: 300, + }, + }); setLogger({ level: 'error' }); // 设置自动染色 const dictComponentList = ['dict-cascader', 'dict-checkbox', 'dict-radio', 'dict-select', 'dict-switch', 'dict-tree']; diff --git a/web/src/views/plugins/index.ts b/web/src/views/plugins/index.ts new file mode 100644 index 0000000..fe9b889 --- /dev/null +++ b/web/src/views/plugins/index.ts @@ -0,0 +1,15 @@ +import { defineAsyncComponent, AsyncComponentLoader } from 'vue'; + +// 扫描插件目录并注册插件 +export const scanAndInstallPlugins = (app: any) => { + const components = import.meta.glob('./**/*.vue'); + const pluginNames = new Set(); + // 遍历对象并注册异步组件 + for (const [key, value] of Object.entries(components)) { + const name = key.slice(key.lastIndexOf('/') + 1, key.lastIndexOf('.')); + app.component(name, defineAsyncComponent(value as AsyncComponentLoader)); + const pluginsName = key.match(/\/([^\/]*)\//)?.[1]; + pluginNames.add(pluginsName); + } + console.log('已发现插件:', Array.from(pluginNames)); +};