MineAdmin 交流群

官方QQ群: 150105478

Skip to content

工具栏扩展

提示

右上角一排图标按钮,就是工具栏,系统开放了接口可以扩展工具栏。

工具栏

获取工具栏助手函数实例

vue
<!-- 在 `setup()` 生命周期或者可以获取到 `Vue上下文` 中的代码里获取方式 -->
<script setup lang="ts">
const toolbar = useGlobal().$toolbars
</script>
ts
// 通过当前实例获取
const { appContext } = getCurrentInstance()
const toolbar = appContext.config.globalProperties.$toolbars
ts
/**
 * 系统插件 `install` 方法,外部会传入 Vue 实例,然后获取 toolbar
 * 可参考 `src/plugins/mine-admin/demo/index.ts`
 **/
install(app: App) {
  const toolbar = app.config.globalProperties.$toolbars
}

toolbar API列表

API类型说明返回值
getShowToolbarFunction获取启用的工具列表MineToolbar[]
toolbarsRef<MineToolbar[]>注册的工具列表MineToolbar[]
addFunction(toolbar: MineToolbar)向工具栏注册新工具void
removeFunction(name: string)移除工具栏注册的工具void

MineToolbar 类型

ts
interface MineToolbar {
  name: string
  icon: string
  title: string | (() => string)
  show: boolean
  className?: string | (() => string)
  component?: () => any
  handle?: (toolbar: MineToolbar) => any
}

注册新工具

TIP

handle 事件和 component 属性冲突,两者只会生效一种,handle 优先级高。 如若使用 component 请不要定义 handle 或者注释掉

ts
const toolbar = useGlobal().$toolbars
toolbar.add({
  name: 'test',
  title: '测试',
  show: true,
  icon: 'heroicons:archive-box',
  // 工具被点击时,触发 handle 方法,可用于简单的弹窗提示等等
  handle: () => alert('我是注册的新工具哦'),
  /**
   * 指定组件,完全通过组件来渲染显示
   * 同时上面的 icon 属性将不被渲染,handle 方法也将失效
   * 
   * 注意:实际开发中,在使用 component 后需要将 handle 注释掉
   **/
  component: () => import('@/modules/demo/views/demo.vue')
})

移除已注册的工具

ts
const toolbar = useGlobal().$toolbars

// 移除 name 为 test 的工具
toolbar.remove('test')

致力于为品牌和企业创造价值