Skip to content
目录

指南

嘉立创管理端组件库使用指南

安装

npm install @sz-jlc/admin-vue3

TIP

当前组件库基于element-plus进行二次封装,所以安装之前确保安装了vue3以及element-plus

全局注册

js
import { createApp } from 'vue'
import JlcAdmin from '@sz-jlc/admin-vue3'
import '@sz-jlc/admin-vue3/dist/style.css'

const app = createApp()
app.use(JlcAdmin)
app.mount('#app')

Volar 支持

同element-plus一样,如果您使用 Volar,请在 tsconfig.json 中通过 compilerOptions.types 指定全局组件类型。

json
// tsconfig.json
{
  "compilerOptions": {
    "types": ["@sz-jlc/admin-vue3/global"]
  }
}

局部导入

vue
<script setup>
import { JlcProTable } from '@sz-jlc/admin-vue3'
</script>

WARNING

局部导入依然需要导入样式: import '@sz-jlc/admin-vue3/dist/style.css'

标签引入

html
<script src="jlc-admin-vue3/dist/index.js"></script>
<link href="jlc-admin-vue3/dist/style.css"></link>

WARNING

当前组件库暂无CDN链接,请自行下载npm包进行标签引入

同时还需要存在全局变量:Vue、ElementPlus

全局配置

目前仅提供了一个转换分页数据的全局配置(transformPageData),后续会支持更多组件的默认配置注入。

如下示例,有时提供的数据结构和组件需要的数据结构并不一样,则可以通过注入全局配置。

姓名
无数据
Total 0
  • 1
Go to
vue
<template>
  <jlc-config-provider :transform-page-data="transformPageData">
    <jlc-pro-table 
      :filters="filters" 
      :columns="columns" 
      :get-data="getData" 
      :filter-props="{ columnCount: 3 }"
    />
  </jlc-config-provider>
</template>

<script setup lang='ts'>
import { JlcProTable, JlcConfigProvider } from '@sz-jlc/admin-vue3'

// 将接口返回的数据转换为组件需要的数据结构
// 因为这里是提供了一个方法,所以可以有很多灵活的用法:
// 比如对接口响应数据进行容错处理(如data为null的情况)
// 比如之前遇到接口返回的totalRows是一个字符串,传递给el-page组件后导致异常,也可以通过这里进行处理
const transformPageData = (data: any) => {
  const { listData, totalRows } = data
  return {
    list: listData,
    total: totalRows,
  }
}

const mockData = [
  {
    name: '小明',
    gender: 1,
    age: 25,
    job: '前端工程师',
    introduction: '高级前端工程师,擅长原生JS,熟悉设计模式。'
  },
  {
    name: '小红',
    gender: 0,
    age: 28,
    job: '测试工程师',
    introduction: '高级测试工程师,6年工作经验,熟悉自动化测试。'
  },
  {
    name: '小军',
    gender: 1,
    age: 32,
    job: 'Java工程师',
    introduction: '资深架构师,解决过无数疑难杂症,擅长系统设计。'
  },
]

const filters = [
  { label: '姓名', key: 'name' },
]

const columns = [
  { label: '姓名', prop: 'name' },
  { label: '年龄', prop: 'age' },
  { label: '岗位', prop: 'job' },
  { label: '个人介绍', prop: 'introduction', align: 'left' },
]

const getData = (queryParams: any): Promise<any> => {
  const { name, gender, pageSize, pageNum } = queryParams
  return new Promise(resolve => {
    setTimeout(() => {
      // 模拟筛选
      const list = mockData
        .filter(item => {
          if (!name) return true
          return item.name.includes(name)
        })
        .filter(item => {
          if (gender === null || gender === undefined) return true
          return item.gender === gender
        })
      const lastPage = pageNum * pageSize
      resolve({
        // 模拟分页
        listData: list.slice(lastPage - pageSize, lastPage),
        totalRows: list.length,
      })
    }, Math.random() * 200)
  })
}
</script>

Last updated:

深圳嘉立创前端团队