首页 > 语言 > JavaScript > 正文

vue项目中将element-ui table表格写成组件的实现代码

2024-05-06 15:38:08
字体:
来源:转载
供稿:网友

表格中我们经常需要动态加载数据, 如果有多个页面都需要用到表格, 那我希望可以有个组件, 只传数据过去显示, 不用每个页面都去写这么一段内容:

<el-table :data="tableData" border size="mini" fit highlight-current-row height="500">  <el-table-column type="index" align="center" fixed></el-table-column>  <el-table-column prop="DHM" min-width="140px" label="时间" align="center"></el-table-column>  <el-table-column prop="PLAZANO" min-width="100px" label="编码" align="center"></el-table-column>  <el-table-column prop="PLAZANAME" min-width="100px" label="名称" align="center"></el-table-column>  <el-table-column prop="CAR_PLATE" label="号码" align="center"></el-table-column>  <el-table-column prop="CARD_NO" min-width="120px" label="卡号" align="center"></el-table-column>  <el-table-column prop="DATATYPE" label="数据类型" align="center" :formatter="formatDATATYPE"></el-table-column>  <el-table-column prop="STAFFNAME" min-width="100px" label="姓名" align="center"></el-table-column>  <el-table-column prop="MEDIATYPE" label="付款方式" align="center"></el-table-column>  <el-table-column prop="COMP_CASH" label="计算费额" align="center"></el-table-column>  <el-table-column prop="FACT_CASH" label="实收费额" align="center"></el-table-column>  <el-table-column label="操作" min-width="140px" align="center">    <template slot-scope="scope">     <el-button @click="handleClick(scope.row)" type="text" size="small">查看</el-button>     <el-button type="text" size="small">编辑</el-button>    </template>  </el-table-column></el-table>

 上面这段代码是一个element-ui中tabele表格的形式,这里表头都是已经固定的, 如果每个页面都写上这么一段, 不同的是表头名字和字段,这样子就有点重复,而且页面的篇幅也就比较大了,于是把这块写成一个组件, 每个页面引入这个组件, 再传入数据。

  1.  表格组件:

•首先  table.vue 组件可以这样写:

<el-table :data="tableData" border size="mini" fit highlight-current-row height="500" :row-style="rowStyle" @row-dblclick="rowDblclick"   v-loading="loading"   element-loading-text="拼命加载中"   element-loading-spinner="el-icon-loading"   element-loading-background="rgba(0, 0, 0, 0.3)">   <el-table-column type="index" align="center" fixed></el-table-column>   <!-- prop: 字段名name, label: 展示的名称, fixed: 是否需要固定(left, right), minWidth: 设置列的最小宽度(不传默认值), oper: 是否有操作列      oper.name: 操作列字段名称, oper.clickFun: 操作列点击事件, formatData: 格式化内容 -->   <el-table-column v-for="(th, key) in tableHeader"    :key="key"    :prop="th.prop"    :label="th.label"    :fixed="th.fixed"    :min-width="th.minWidth" align="center">     <!-- 加入template主要是有操作一栏, 操作一栏的内容是相同的, 数据不是动态获取的,不过我这里操作一栏的名字定死了(oper表示是操作这一列,否则就不是) -->     <template slot-scope="scope">      <div v-if="th.oper">       <el-button v-for="(o, key) in th.oper" :key="key" @click="o.clickFun(scope.row)" type="text" size="small">{{o.name}}</el-button>      </div>      <div v-else>       <span v-if="!th.formatData">{{ scope.row[th.prop] }}</span>       <span v-else>{{ scope.row[th.prop] | formatters(th.formatData) }}</span>      </div>     </template>   </el-table-column></el-table>            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选