Skip to content

快速开始

安装

bash
# 使用 yarn
yarn add d-render element-plus -S

# 使用 npm
npm install d-render element-plus -S

# 使用 pnpm
pnpm add d-render element-plus -S

注册组件类型

d-render 不自带完整业务输入组件,需要你在项目启动时注册插件或自定义组件。

js
import { createApp } from 'vue'
import { DRender } from 'd-render'
import 'd-render/dist/index.css'
import 'element-plus/dist/index.css'
import dRenderConfig from './d-render.config'

const dRender = new DRender()
dRender.setConfig(dRenderConfig)

createApp(App).mount('#app')

d-render.config.js 配置文件

创建 d-render.config.js 文件:

js
import PluginStandard from '@d-render/plugin-standard'

export default {
  plugins: [
    PluginStandard,
    // 其他自定义插件...
  ]
}

基本使用

表单

vue
<template>
  <DrForm v-model:model="model" :fieldList="fieldList" />
</template>

<script setup>
import { ref } from 'vue'
import { generateFieldList, defineFormFieldConfig } from 'd-render'

const model = ref({})

const fieldList = generateFieldList(defineFormFieldConfig({
  name: {
    type: 'input',
    label: '姓名',
    required: true
  },
  age: {
    type: 'number',
    label: '年龄'
  },
  sex: {
    type: 'radio',
    label: '性别',
    options: [
      { value: 1, label: '男' },
      { value: 2, label: '女' }
    ]
  }
}))
</script>

搜索表单

vue
<template>
  <DrSearchForm 
    v-model:model="searchModel" 
    :fieldList="searchFieldList"
    @search="handleSearch"
  />
</template>

<script setup>
import { ref } from 'vue'
import { generateFieldList, defineSearchFieldConfig } from 'd-render'

const searchModel = ref({})

const searchFieldList = generateFieldList(defineSearchFieldConfig({
  keyword: {
    type: 'input',
    label: '关键词',
    immediateSearch: true
  },
  status: {
    type: 'select',
    label: '状态',
    options: [
      { value: 1, label: '启用' },
      { value: 0, label: '禁用' }
    ]
  }
}))

const handleSearch = (val) => {
  console.log('搜索条件:', val)
}
</script>

表格

vue
<template>
  <DrTable 
    v-model:data="tableData" 
    :columns="columns"
    :editType="editType"
  />
</template>

<script setup>
import { ref } from 'vue'
import { generateFieldList } from 'd-render'

const tableData = ref([
  { name: '张三', age: 25, sex: 1 },
  { name: '李四', age: 30, sex: 2 }
])

const editType = ref('row')

const columns = generateFieldList({
  name: { type: 'input', label: '姓名', writable: true },
  age: { type: 'number', label: '年龄', writable: true },
  sex: { 
    type: 'radio', 
    label: '性别', 
    writable: true,
    options: [
      { value: 1, label: '男' },
      { value: 2, label: '女' }
    ]
  }
})
</script>

下一步