Skip to content

子组件导出

除了 PageTemplate 和 Table 主组件外,vue-admin-kit 还导出以下子组件,可以单独使用。

组件列表

布局组件

组件说明
PageTemplate主 CRUD 页面模板组件
Table基于 VXE-Table 封装的表格组件
Descriptions数据展示组件,支持字典、文件、富文本等展示类型

弹窗组件

组件说明详细文档
FormDialog表单弹窗,用于新增/编辑详见
DetailDialog详情弹窗,用于查看数据详情详见
Drawer抽屉组件,侧边滑出的面板详见
FileListDialog文件列表弹窗详见

搜索组件

组件说明
SearchForm搜索表单,配置化生成搜索栏

表单控件

所有表单控件的详细用法请参考 表单控件详解

组件说明详细文档
Input输入框,支持后缀单位详见
Textarea多行文本输入详见
Number数字输入框,支持精度、范围详见
Select下拉选择器,支持字典、远程搜索详见
SelectChange搜索选择组件,支持搜索并选择关联数据详见
Radio单选框,支持字典详见
Date日期选择器,支持日期、日期时间、范围详见
Time时间选择器详见
Upload文件上传组件详见
UploadCard卡片式文件上传,支持多类型文件分组上传详见
WangeEitor富文本编辑器(基于 WangEditor)详见
Line分割线,可带标题和按钮详见
InputGroup输入框组,多个输入框的组合详见
AddableInputGroup可添加输入组,支持动态添加/删除详见

辅助组件

组件说明详细文档
DictHelper字典转换组件,将字典值转换为标签显示-
DictTag字典标签组件,纯粹的字典标签显示详见
SafeHtml安全 HTML 渲染(使用 DOMPurify)-

导入方式

typescript
import {
  // 布局组件
  PageTemplate,
  Table,
  Descriptions,

  // 弹窗组件
  FormDialog,
  DetailDialog,
  Drawer,
  FileListDialog,

  // 搜索组件
  SearchForm,

  // 表单控件
  Input,
  Textarea,
  Number,
  Select,
  SelectChange,
  Radio,
  Date,
  Time,
  Upload,
  UploadCard,
  WangeEitor,
  Line,
  InputGroup,
  AddableInputGroup,

  // 辅助组件
  DictHelper,
  DictTag,
  SafeHtml,

  // 工具函数
  downloadFile,
  useTableHeightEmitter,
} from "vue-admin-kit";

弹窗组件详解

提示

FormDialog、DetailDialog、Drawer 组件都有独立的详细文档页面,以下仅提供快速参考示例。

FormDialog 表单弹窗

表单弹窗组件,用于新增/编辑数据。详细文档请参考 FormDialog 组件

vue
<script setup>
import { ref } from "vue";
import { FormDialog } from "vue-admin-kit";

const visible = ref(false);
const formData = ref({});
const formConfig = [
  { type: "input", prop: "name", label: "名称", required: true },
  { type: "select", prop: "status", label: "状态", dictType: "sys_status" },
];

const handleSubmit = async () => {
  // 提交逻辑
};
</script>

<template>
  <FormDialog
    v-model="visible"
    v-model:form-data="formData"
    title="新增用户"
    :form-config="formConfig"
    @submit="handleSubmit"
  />
</template>

DetailDialog 详情弹窗

详情弹窗组件,用于查看数据详情。详细文档请参考 DetailDialog 组件

vue
<script setup>
import { ref } from "vue";
import { DetailDialog } from "vue-admin-kit";

const visible = ref(false);
const detailData = ref({});
const formConfig = [
  { type: "input", prop: "name", label: "名称" },
  { type: "select", prop: "status", label: "状态", dictType: "sys_status" },
];
</script>

<template>
  <DetailDialog
    v-model="visible"
    :detail-data="detailData"
    :form-config="formConfig"
  />
</template>

Drawer 抽屉

抽屉组件,侧边滑出的面板。详细文档请参考 Drawer 组件

vue
<script setup>
import { ref } from "vue";
import { Drawer } from "vue-admin-kit";

const visible = ref(false);
</script>

<template>
  <Drawer v-model="visible" title="详情" size="50%">
    <template #default>
      <!-- 抽屉内容 -->
    </template>
  </Drawer>
</template>

FileListDialog 文件列表弹窗

文件列表弹窗组件,用于展示和管理文件列表。

vue
<script setup>
import { ref } from "vue";
import { FileListDialog } from "vue-admin-kit";

const visible = ref(false);
const fileList = ref([
  { url: "https://example.com/file.pdf", originalName: "文件.pdf" },
]);
</script>

<template>
  <FileListDialog v-model="visible" :file-list="fileList" />
</template>

工具函数

downloadFile

文件下载工具函数:

typescript
import { downloadFile } from "vue-admin-kit";

// 下载文件
await downloadFile(api.downloadTemplate, "导入模板");

// 指定文件类型
await downloadFile(api.exportData, "数据导出", "xlsx");

useTableHeightEmitter

表格高度事件发射器:

typescript
import { useTableHeightEmitter } from "vue-admin-kit";

const emit = defineEmits(["setTableHeight"]);
const { emitSetTableHeight } = useTableHeightEmitter(emit);

// 触发高度更新
emitSetTableHeight();

Released under the MIT License.