Home

  • 一个基于Vuejs2.x的table表格组件
  • 领有丰盛的性能和好用的API

语法糖篇

$\color{MediumTurquoise}{1、列定义语法糖}$

 <BeeGridTable    border    height="560"    :showSummary="false"    fixed="left"    :data="data"  >    <BeeColumn field="code" title="Code"></BeeColumn>    <BeeColumn field="name" title="Name" resizable></BeeColumn>    <BeeColumn field="sex" title="Sex" type="number"> </BeeColumn>  </BeeGridTable>
    data() {    return {      // columns: [],      data: [],      ...    };  },      
  • BeeColumn 是一个能够用来定义列信息的组件

$\color{MediumTurquoise}{2、列头定义语法糖}$

  <BeeGridTable      border      height="560"      :showSummary="false"      fixed="left"      :data="data"    >      <BeeColumn field="code" title="Code"></BeeColumn>      <BeeColumn field="name" title="Name" resizable></BeeColumn>      <BeeColumn field="sex" title="Sex" type="number">        <template slot-scope="{ row }">          <i            style="font-size: x-large"            class="bee-sys-icon md-man"            v-if="row.sex === 0"          ></i>          <i            style="font-size: x-large; color: red"            class="bee-sys-icon md-woman"            v-else          ></i>        </template>      </BeeColumn>      <BeeColumnHeader field="sex">        <template slot-scope="{ column }">          <Button style="color: red">{{ column.title }}</Button>        </template>      </BeeColumnHeader>    </BeeGridTable>
    data() {    return {      // columns: [],      data: [],      ...    };  },      
  • BeeColumn 默认slot,传入参数有以后渲染行 row ,能够自定义数据展现,此处的性别渲染成了 icon 图标
  • BeeColumnHeader 能够自定义表头,比方此处的sex字段的表头渲染成了Button按钮

$\color{MediumTurquoise}{3、列筛选区定义语法糖}$

  <BeeGridTable      border      height="560"      :showSummary="false"      fixed="left"      :data="data"    >      <BeeColumn field="code" title="Code"></BeeColumn>      <BeeColumn field="name" title="Name" resizable></BeeColumn>      <BeeColumn field="sex" title="Sex" type="number">        <template slot-scope="{ row }">          <i            style="font-size: x-large"            class="bee-sys-icon md-man"            v-if="row.sex === 0"          ></i>          <i            style="font-size: x-large; color: red"            class="bee-sys-icon md-woman"            v-else          ></i>        </template>      </BeeColumn>      <BeeColumn field="state" title="State">        <template slot-scope="{ row }">          <Select v-model="row.state" style="width: 100px">            <Option              v-for="item in stateList"              :value="item.value"              :key="item.value"              >{{ item.label }}</Option            >          </Select>        </template>      </BeeColumn>      <BeeColumn field="group" title="Group">        <template slot-scope="{ row }">          <Select v-model="row.groupCode" style="width: 100px">            <Option              v-for="item in groupList"              :value="item.code"              :key="item.name"              >{{ item.name }}</Option            >          </Select>        </template>      </BeeColumn>      <BeeColumnHeader field="sex">        <template slot-scope="{ column }">          <Button style="color: red">{{ column.title }}</Button>        </template>      </BeeColumnHeader>      <BeeColumnFilter        field="sex"        :selectedSexCode="selectedSexCode"        :filterValue="1"        type="number"      >        <template slot-scope="{ column, doSortAndFilter }">          <RadioGroup            v-model="column.selectedSexCode"            @on-change="sexSelected(column, doSortAndFilter)"          >            <Radio label="-1">              <i class="bee-sys-icon md-people"></i>              <span>All</span>            </Radio>            <Radio label="0">              <i class="bee-sys-icon md-man"></i>              <span>Boy</span>            </Radio>            <Radio label="1">              <i style="color: red" class="bee-sys-icon md-woman"></i>              <span>Girl</span>            </Radio>          </RadioGroup>        </template>      </BeeColumnFilter>    </BeeGridTable>
 data() {    return {      columns: [        ...        { title: "Sex", slot: "sex", key: "sex", width: 150, resizable: true },        ...        {          title: "Group",          slot: "group",          key: "groupName",          resizable: true,        },        {          title: "State",          slot: "state",          key: "state",          width: 200,        },        {          title: "Operation",          slot: "op",   //custom column slot          headSlot: "hop", //custom column header slot          key: "op",          width: 150,        },      ],      data: [],      groupList: [        {          code: 1,          name: "First"        },        {          code: 2,          name: "Second"        },        {          code: 3,          name: "Third"        }      ],      stateList: [        {          value: 0,          label: "Prepare"        },        {          value: 1,          label: "Start"        },        {          value: 2,          label: "Burst"        },        {          value: 3,          label: "End"        }      ],      ...    };  },
  • BeeColumnFilter 自定义表格的某一列的筛选区的内容,其默认slot会传入参数 column,doSortAndFilter,别离为当前列定义和管制筛选触发的回调函数。

    <template slot-scope="{ column, doSortAndFilter }">

    总结

    从上述能够看出,BeeGridTable的Api设计相当为用户着想了,整个表格的写法和elmentui的table差不多,而且性能确非常弱小。