VUE2 解决element Ui 表格,展开行与合并行不能通同时使用的问题

 

<template>
<div >
  <div class="detail-content-list">
    <div class="content-list">
      <el-table
        :max-height="350"
        :data="tableData1"
        border
        size="small"
        style="width: 100%"
        :row-class-name="setRowClassName"
        :span-method="objectSpanMethod"
        ref="expandTable"
        @row-click="handleRowClick"
        row-key="id"
        >
        <el-table-column type="expand" width="1">
          <template slot-scope="props">
            <el-form label-position="left" inline class="demo-table-expand">
              <div class="expand" ref="myInput">
                <div class="copy" @click="copyClick"><i class="el-icon-copy-document"></i>复制</div>
                <div class="expand-title">主选: </div>
                <div class="expand-text"><div class="showArrow1">采购管理中心总经理意见</div> <div class="showArrow2">
                  {{tableData1[props.row.index -1].projectName.join(',')}}
                </div></div>
                <div class="expand-text"><div class="showArrow1">需求部门总监意见</div> <div class="showArrow2">{{tableData1[props.row.index -1].projectName.join(',')}}</div></div>
                <div class="expand-text"><div class="showArrow1">需求部门总经理意见</div> <div class="showArrow2">{{tableData1[props.row.index -1].projectName.join(',')}}</div></div>
                <div class="expand-text"><div class="showArrow1">公司分管副总意见</div> <div class="showArrow2">{{tableData1[props.row.index -1].projectName.join(',')}}</div></div>
                <div class="expand-title">备选: </div>
                <div class="expand-text"><div class="showArrow1">采购管理中心总经理意见</div> <div class="showArrow2">{{props.row.projectName?props.row.projectName:null}} </div></div>
                <div class="expand-text"><div class="showArrow1">需求部门总监意见</div> <div class="showArrow2">{{props.row.projectName?props.row.projectName:null}}</div></div>
                <div class="expand-text"><div class="showArrow1">需求部门总经理意见</div> <div class="showArrow2">{{props.row.projectName?props.row.projectName:null}}</div></div>
                <div class="expand-text"><div class="showArrow1">公司分管副总意见</div> <div class="showArrow2">{{props.row.projectName?props.row.projectName:null}}</div></div>
              </div>

            </el-form>
          </template>
        </el-table-column>

        <el-table-column width="50" align="center" prop="arrow">
          <template slot-scope="scope">
            <span class="arrow-icon">
              <i :class="scope.row.expanded ? 'el-icon-caret-bottom' : 'el-icon-caret-right'" />
            </span>
          </template>
        </el-table-column>
        <el-table-column
          v-for="(item, index) in tableColumn1"
          :key="index"
          :prop="item.prop"
          :label="item.label"
          :width="item.width"
          show-overflow-tooltip
        >
          <template slot="header">
            <div v-if="item.required" class="required">
              <span>{{ item.label }}</span>
            </div>
            <span v-else>{{ item.label }}</span>
          </template>
          <template slot-scope="scope">
            <el-tooltip class="item" :disabled="scope.row[item.prop] && scope.row[item.prop].length <1" v-if="item.prop === 'projectName'" effect="dark" :content="scope.row[item.prop]&&scope.row[item.prop].join(',')" placement="top">
              <rc-select
                v-model="scope.row[item.prop]"
                multiple
                collapse-tags
                placeholder="请选择"
              >
                <el-option
                  v-for="item in options"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                >
                </el-option>
              </rc-select>
            </el-tooltip>
            <el-tooltip class="item" :disabled="scope.row[item.prop] && scope.row[item.prop].length <1" v-else-if="item.prop === 'projectManage'" effect="dark" :content="scope.row[item.prop]&&scope.row[item.prop].join(',')" placement="top">
              <rc-select
                v-model="scope.row[item.prop]"
                multiple
                collapse-tags
                placeholder="请选择"
              >
                <el-option
                  v-for="item in options"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                >
                </el-option>
              </rc-select>
            </el-tooltip>
          <el-tooltip class="item" :disabled="scope.row[item.prop] && scope.row[item.prop].length <1" v-else-if="item.prop === 'projectManage1'" effect="dark" :content="scope.row[item.prop]&&scope.row[item.prop].join(',')" placement="top">
            <rc-select
              v-model="scope.row[item.prop]"
              multiple
              collapse-tags
              placeholder="请选择"
            >
              <el-option
                v-for="item in options"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              >
              </el-option>
            </rc-select>
          </el-tooltip>
          <el-tooltip class="item" :disabled="scope.row[item.prop] && scope.row[item.prop].length <1" v-else-if="item.prop === 'projectManage2'" effect="dark" :content="scope.row[item.prop]&&scope.row[item.prop].join(',')" placement="top">
            <rc-select
              v-model="scope.row[item.prop]"
              multiple
              collapse-tags
              placeholder="请选择"
            >
              <el-option
                v-for="item in options"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              >
              </el-option>
            </rc-select>
          </el-tooltip>
            <span v-else>{{ scope.row[item.prop] }}</span>
          </template>
        </el-table-column>
      </el-table>
    </div>
  </div>
</div>
</template>
<script>
const tableColumn1 = [
  {
    prop: "itemCode",
    label: "标段名称",
    checked: true,
  },
  {
    prop: "importTime",
    label: "主选/备选",
    checked: true,
    width: 120,
  },
  {
    prop: "projectName",
    label: "采购管理中心总经理意见",
    checked: true,
    required: true,
    width: 300,
  },
  {
    prop: "projectManage",
    label: "需求部门总监意见",
    checked: true,
    required: true,
    width: 300,
  },

  {
    prop: "projectManage1",
    label: "需求部门总经理意见",
    checked: true,
    required: true,
    width: 300,
  },
  {
    prop: "projectManage2",
    label: "公司分管副总裁意见",
    checked: true,
    required: true,
    width: 300,
  },
];
export default {
  data() {
    return {
      options: [
        {
          value: "黄金糕",
          label: "黄金糕",
        },
        {
          value: "双皮奶",
          label: "双皮奶",
        },
        {
          value: "蚵仔煎",
          label: "蚵仔煎",
        },
        {
          value: "龙须面",
          label: "龙须面",
        },
        {
          value: "北京烤鸭",
          label: "北京烤鸭",
        },
      ],
      tableData1: [
        {
          itemCode: "CS20201208800",
          importTime: "2020-12-08",
          projectName: ["黄金糕", "北京烤鸭"],
          projectManage: ["黄金糕", "北京烤鸭"],
          projectManage1: ["黄金糕", "北京烤鸭"],
          projectManage2: ["黄金糕", "北京烤鸭"],
          level: "TL",
          expanded:false,
          index:0,
          id: 1,
        },
        {
          canEdit: true,
          projectName: ["黄金糕", "北京烤鸭"],
          projectManage: ["黄金糕", "北京烤鸭"],
          projectManage1: ["黄金糕", "北京烤鸭"],
          projectManage2: ["黄金糕", "北京烤鸭"],
          id: 2,
          expanded:false,
          index:1,
        },
        {
          itemCode: "CS20201208811",
          importTime: "2020-12-08",
          projectName: ["黄金糕", "北京烤鸭"],
          projectManage: ["黄金糕", "北京烤鸭"],
          projectManage1: ["黄金糕", "北京烤鸭"],
          projectManage2: ["黄金糕", "北京烤鸭"],
          expanded:false,
          level: "TL",
          index:2,
          id: 3,
        },
        {
          itemCode: "CS20201208822",
          importTime: "2020-12-08",
          expanded:false,
          index:3,
          projectName: ["黄金糕", "北京烤鸭"],
          projectManage: ["黄金糕", "北京烤鸭"],
          projectManage1: ["黄金糕", "北京烤鸭"],
          projectManage2: ["黄金糕", "北京烤鸭"],
          level: "TL",
          id: 4,
        },
      ], // 表格列数据

    };
  },
  mounted() {

  },
  methods: {
    handleRowClick(row,column) {
      console.log("row",row,column);
      if (column.property === 'arrow') {
        this.showArrow = this.tableData1[row.index].projectName.join(',')
        row.expanded = !row.expanded;
        let index = this.tableData1.findIndex((item) => row.id == item.id);
        if (index % 2 == 0) {
          index++;
        }
        console.log(this.tableData1[index], index);
        this.$refs.expandTable.toggleRowExpansion(
          this.tableData1[index],
          row.expanded
        );
      }
    },
    objectSpanMethod({ row, column, rowIndex, columnIndex }) {
      if (columnIndex === 0 || columnIndex === 1|| columnIndex === 2) {
        if (rowIndex % 2 === 0) {
          return {
            rowspan: 2,
            colspan: 1,
          };
        } else {
          return {
            rowspan: 0,
            colspan: 0,
          };
        }
      }
    },
    copyClick() {
      // const input = this.$refs.myInput
      const text = this.tableData1.map(o=> o.projectName).join(',')
      // console.log("input",input);
      let inputDom = document.createElement('textarea') // js创建一个文本框
      document.body.appendChild(inputDom) //将文本框暂时创建到实例里面
      inputDom.value = text //将需要复制的内容赋值到创建的文本框中
      inputDom.select() //选中文本框中的内容
      inputDom.focus()
      document.execCommand('copy') //执行复制操作
      document.body.removeChild(inputDom) //最后移出
      this.$message.success('复制成功')
    },
    // 设置斑马线颜色
    setRowClassName({ row, rowIndex }) {
      if (rowIndex % 2) {
        return "white-bg";
      } else {
        return "grey-bg";
      }
    },
  },
};
</script>


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值