美文网首页
动态展示表格

动态展示表格

作者: 撑船的摆渡人 | 来源:发表于2019-10-17 18:16 被阅读0次
    demo.gif

    表格数据过多,根据需要动态选择数据进行展示。

    使用vue全家桶,组件使用element自带的表格和多选

    // 表格
    <el-table
              v-loading="isLoading"
              ref="multipleTable"
              :data="tableData"
              tooltip-effect="dark"
              border
              style="width: 100%"
              @selection-change="handleSelectionChange"
            >
              <el-table-column fixed type="selection" width="29" style="word-break: normal;"></el-table-column>
              <template v-for="item in listItems">
                <el-table-column
                  v-if="item.checked"
                  :prop="item.prop"
                  :label="item.label"
                  :key="item.label"
                  :width="item.width"
                >
                  <template slot-scope="scope">
                    /* 项目中可能需要把某列的不同值,显示不同颜色 */
                    <div v-if="item.label === '是否需要改变颜色的表头'">
                      <span class="color-green" v-if="scope.row[item.prop] === 1">是</span>
                      <span class="color-red" v-else>否</span>
                    </div>
                    <div v-else>{{scope.row[item.prop]}}</div>
                  </template>
                </el-table-column>
              </template>
              <el-table-column label="操作" width="80" fixed="right">
                <template slot-scope="scope">
                  <el-button type="text" class="table-btn" size="mini" @click="tableItemDetails(scope.row)">详情</el-button>
                </template>
              </el-table-column>
            </el-table>
    
    // 多选框
    <el-checkbox-group v-model="checkList">
      <el-checkbox
       v-for="item in listItems"
       :label="item.prop"
       :disabled="item.disabled"
       :key="item.label"
       >{{item.label}}</el-checkbox>
    </el-checkbox-group>
    
    // 初始化两个list
    // checkList 是表格默认显示的值
    checkList: ['aaa', 'ccc', 'eee'],
    // listItems 是最重要的,一是为了复选框展示,二是为了表格的表头展示
    // label 是表格表头名字、prop是表头的值、disabled多选框是否为默认值,默认则不可修改、
    // checked是多选框是否选中,选中则在表格中展示,否则不显示。width为了表格样式优化,我可以给表格设置合适的宽度
          listItems: [
            {
              label: '盒号',
              prop: 'aaa',
              disabled: true,
              checked: true,
              width: 120
            },
            {
              label: '件号',
              prop: 'bbb',
              disabled: false,
              checked: false,
              width: 120
            }]
    
    // 多选框change事件
        toggleTableColumn() {
          // 切换多选是否展示
          this.listItemShow = !this.listItemShow
          // 根据选中的值,修改listItems中表格应该显示的项
          this.listItems.forEach(item => {
            if (!item.disabled) {
              if (this.checkList.indexOf(item.prop) !== -1) {
                item.checked = true
              } else {
                item.checked = false
              }
            }
          })
        }
    

    相关文章

      网友评论

          本文标题:动态展示表格

          本文链接:https://www.haomeiwen.com/subject/faevmctx.html