日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

element-ui根據條件合并單元格

作者:正一品程序員 更新時間: 2022-07-19 編程語言
<template>
    <!-- 托盤標列表 -->
    <UK-Table
      :data="trayTableData"
      @getSelection="getSelection"
      showCheckBox
      showIndex
      :rowHeader="trayRowHeader"
      showSet
      :objectSpanMethod="objectSpanMethod"
    >
      <template #headerFloatLeft>
        <el-button type="primary" @click="uploadingDetail('上傳打托文件')">
          上傳打托文件
          <i class="el-icon-upload el-icon--right"></i>
        </el-button>
        <el-button type="primary" @click="printOrder">打印托盤標</el-button>
      </template>
      <template #tableButton>
        <el-button :type="trayTableData.length ? 'warning' : ''" :disabled="!trayTableData.length" @click="carpoolingOrder"
          >拼車下單</el-button
        >
        <el-button :type="trayTableData.length ? 'primary' : ''" :disabled="!trayTableData.length" @click="returnTop"
          >返庫上架</el-button
        >
      </template>
    </UK-Table>
</template>
<script>
import { setrowspans, getWordCnt } from '@/utils/mergeCells'
export default {
	methods: {
		getList(val) {
	      if (val) {
	        this.detailId = val.Id
	        this.IsConfirm = val.IsConfirm
	      }
	      overseasReplenPalletGetDetail(this.detailId).then(res => {
	        if (res.ErrorCode === 0) {
	          const { BaseInfo, ReplenishOrderList, TrayLabelList } = res.Body
	          ReplenishOrderList.forEach(v => {
	            v.ItemInfo.forEach(item => {
	              this.PlanCtnsTotal += item.PlanCtns
	              this.CtnsTotal += item.Ctns
	            })
	          })
	          this.formInline = BaseInfo
	          this.replenishOrderList = ReplenishOrderList
	          // 單元格合并
	          this.trayTableData = setrowspans(TrayLabelList, 'FnSku')
	          // 合并的單元格重新排序
	          this.trayTableData = getWordCnt(TrayLabelList, 'FnSku', 'TrayIndex')
	        }
	      })
	    },
	    // 表格合并
	    objectSpanMethod({ row, columnIndex }) {
	      if ([2, 3].includes(columnIndex)) {
	        return {
	          rowspan: row.rowspan,
	          colspan: 1
	        }
	      }
	    },
	}
}
</script>

mergeCells.js

/*
  tableData:要合并的表格數組
  rowProperty:以哪個字段為判斷條件合并
*/
export function setrowspans(tableData, rowProperty) {
  // 先給所有的數據都加一個v.rowspan = 1
  tableData.forEach(v => {
    v.rowspan = 1
  })
  // 雙層循環
  for (let i = 0; i < tableData.length; i++) {
    for (let j = i + 1; j < tableData.length; j++) {
      if (tableData[j][rowProperty] && tableData[i][rowProperty] === tableData[j][rowProperty]) {
        tableData[i].rowspan++
        tableData[j].rowspan--
      }
    }
    // 這里跳過已經重復的數據
    i = i + tableData[i].rowspan - 1
  }
  return tableData
}
// 合并的數據重新排序
/*
  tableArr:要合并的表格數組
  rowProperty:以哪個字段為判斷條件排序
  customIndex:自定義排序的字段
*/
export function getWordCnt(tableArr, rowProperty, customIndex) {
  let temporaryFnSku = ''
  let num = 0
  for (let i = 0, l = tableArr.length; i < l; i++) {
    if (tableArr[i][rowProperty] !== temporaryFnSku) {
      num = 0
    }
    temporaryFnSku = tableArr[i][rowProperty]
    if (tableArr[i][rowProperty] === temporaryFnSku) {
      num++
      tableArr[i][customIndex] = num
    }
  }
  return tableArr
}

效果圖
在這里插入圖片描述

原文鏈接:https://blog.csdn.net/weixin_46060121/article/details/125857937

欄目分類
最近更新