<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      <template>

      <div>

      <el-table
          ref="tableData"
            :data="tableData"
            show-summary
            :max-height="520"
            :summary-method="summaryMethod"
            :default-sort="sortRule"
            @sort-change="sortChange"
          >
            <el-table-column
              v-if="analyseType==='5'"
              key="provice"
              header-align="center"
              label="省份"
              prop="typeName"
              min-width="140"
              fixed
            />
            <el-table-column
              v-else
              key="customerType"
              header-align="center"
              label="客戶類型"
              prop="typeName"
              min-width="140"
              fixed
            />
            <template v-for="year in yearList">
              <el-table-column
                v-if="selectedAllColumns.length"
                :key="`${year}_all`"
                header-align="center"
                :label="`${year}`"
              >
                <el-table-column
                  v-for="column in selectedAllColumns"
                  :key="`${column.prop}_${year}`"
                  :prop="`${column.prop}_${year}`"
                  :label="column.columnLabel"
                  :min-width="getHeaderWidth(column.columnLabel)"
                  sortable="custom"
                >
                  <template slot-scope="{row,column:scopeColumn}">
                    <span
                      v-if="column.columnLabel === '業(yè)績(jī)(萬元)'"
                      class="link-style"
                      @click="handleCeilClick(row,scopeColumn,year)"
                    >
                      {{ row[`${column.prop}_${year}`] }}
                    </span>
                    <span v-else>{{ formatCeilData(column.columnLabel,row[`${column.prop}_${year}`]) }}</span>
                  </template>
                </el-table-column>
              </el-table-column>
              <el-table-column
                v-if="selectedCutoffColumns.length"
                :key="`${year}_cutoff`"
                header-align="center"
                :label="`${year},其中截止${deadline}`"
              >
                <el-table-column
                  v-for="column in selectedCutoffColumns"
                  :key="`${column.prop}_${year}`"
                  :prop="`${column.prop}_${year}`"
                  :label="column.columnLabel"
                  :min-width="getHeaderWidth(column.columnLabel)"
                  sortable="custom"
                >
                  <template slot-scope="{row,column:scopeColumn}">
                    <span
                      v-if="column.columnLabel === '業(yè)績(jī)(萬元)'"
                      class="link-style"
                      @click="handleCeilClick(row,scopeColumn,year)"
                    >
                      {{ row[`${column.prop}_${year}`] }}
                    </span>
                    <span v-else>{{ formatCeilData(column.columnLabel,row[`${column.prop}_${year}`]) }}</span>
                  </template>
                </el-table-column>
              </el-table-column>
            </template>
          </el-table>

      </div>

      </template>

      <script>
       
      export default {
        name: 'DataTable',
        props: {
          deadline: {
            type: String,
            default: ''
          },
          tableLebel: {
            type: String,
            default: ''
          },
          analyseType: {
            type: String,
            default: ''
          },
          systemDate: {
            type: String,
            default: ''
          }
        },
        data() {
          return {
            tableColumns: [], // 列指標(biāo)
            selectedColumns: [], // 已選列指標(biāo)
            tableData: [], // 表格數(shù)據(jù)
            yearList: [], // 年列表
            sortRule: { prop: null, order: null },
            sortData: [] // 拷貝的表格數(shù)據(jù)
       
          }
        },
        computed: {
          // 全量數(shù)據(jù)已選列
          selectedAllColumns() {
            const { selectedColumns } = this
            return selectedColumns.filter(({ cutoff }) => !cutoff)
          },

          // 限制數(shù)據(jù)已選列
          selectedCutoffColumns() {
            const { selectedColumns } = this
            return selectedColumns.filter(({ cutoff }) => cutoff)
          }
        },
        methods: {
          init(yearList, tableColumns, data) {
            this.totalRow = data.pop() || {}
            this.yearList = yearList
            this.tableColumns = tableColumns
            this.selectedColumns = [].concat(tableColumns)
            this.tableData = data || []
            this.sortData = data || []
            this.$nextTick(() => {
              const { tableData } = this.$refs
              if (tableData) {
                tableData && this.setScrollXY() // 解決滾動(dòng)條不重置問題
                tableData && tableData.doLayout() // 解決表格固定列塌陷導(dǎo)致無數(shù)據(jù)顯示
              }
            })
          },
       setScrollXY(scrollLeft = 0, scrollTop = 0) {
            const { $el } = this.$refs.tableData
            const wrapper = $el.querySelector('.el-table__body-wrapper') // 滾動(dòng)的元素類名
            wrapper && Object.assign(wrapper, {
              scrollLeft,
              scrollTop
            })
          },
          // 表格列點(diǎn)擊事件
          handleClick(row, column, year) {
            console.log(row, column, year)
          },
       // 表格合計(jì)保持在最后
          summaryMethod({ columns }) {
            const total = ['合計(jì)']
            for (let i = 1, l = columns.length; i < l; i++) {
              const { property } = columns[i]
              total[i] = this.formatCeilData(columns[i].label, this.totalRow[property])
            }
            return total
          },
          // 針對(duì)拼接百分比的單元格顯示值格式化
          formatCeilData(columnLabel, val) {
            if (['業(yè)績(jī)占比', '同期業(yè)績(jī)?cè)鲩L(zhǎng)率'].includes(columnLabel)) {
              if (![null, undefined, '', '/'].includes(val)) {
                return val + '%'
              }
            }
            return val
          },
        // 表格排序方法(/排最后)
          sortChange(column) {
            const { prop, order } = column
            if (order != null) {
              const data = []
              for (let i = 0; i < this.tableData.length; i++) {
                //tableData是el-tabel綁定的表格數(shù)據(jù)
                //判斷如果是空的push在數(shù)字后面,有值的就放在前面,然后把排好的數(shù)組再賦值給表格data
                const value = this.tableData[i][prop]
                if ([null, '', '/', undefined].includes(value)) {
                  data.push(this.tableData[i])
                } else {
                  data.unshift(this.tableData[i])
                }
              }
              // 自定義排序方法  過濾掉 null undefined '' 等空值
              data.sort((a, b) => {
                const aValue = a[prop]
                const bValue = b[prop]
                if (aValue === bValue) {
                  return 0;
                } else if ([null, '', '/', undefined].includes(aValue)) {
                  return 1;
                } else if ([null, '', '/', undefined].includes(bValue)) {
                  return -1;
                } else if (order === "ascending") {
                  // 升序
                  return Number(aValue) < Number(bValue) ? -1 : 1
                } else {
                  // 降序
                  return Number(aValue) < Number(bValue) ? 1 : -1
                }
              });
              this.tableData = data //最后把排序好的表格數(shù)據(jù)賦值給排序前的表格數(shù)據(jù)
            } else { //如果不排序了,就恢復(fù)到最初未排序的狀態(tài)
              this.tableData = this.sortData // 用之前拷貝的數(shù)據(jù)還原默認(rèn)排序
            }
            Object.assign(this.sortRule, {
              prop,
              order
            })
          },

          clear() {
            this.yearList = []
            this.tableColumns = []
            this.selectedColumns = []
            this.tableData = []
          },
          getHeaderWidth(str) {
            let strLength = this.computeStrOccupyLength(str)
            strLength = Math.ceil(strLength)
            return strLength * 15 + 30
          },
       
      // 計(jì)算字符串占用長(zhǎng)度
      computeStrOccupyLength(str) {
        let num = 0
        str.split('').forEach((s) => {
          if (/[0-9a-z]|[.?()-:/\\]|\s/.test(s)) {
            num += 0.5
          } else if (/[A-Z]/.test(s)) {
            num += 0.7
          } else {
            num += 1
          }
        })
        return num
      }
        }
      }
      </script>
      <style lang="scss" scoped>
      .link-style {
        color: #50308d;
        &:hover {
          text-decoration: underline;
          cursor: pointer;
        }
      }
      </style>
      posted on 2022-10-08 17:44  Nymph_Zhu  閱讀(1472)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 日韩人妻少妇一区二区三区| 婷婷色香五月综合缴缴情香蕉| 91超碰在线精品| 成人免费在线播放av| 人成午夜免费视频无码| 国产乱人激情H在线观看| 少妇人妻偷人免费观看| 老熟妇欲乱一区二区三区| 精品不卡一区二区三区| √天堂资源网最新版在线| 亚洲av无码牛牛影视在线二区| 国产高清视频一区二区三区| 亚洲av成人午夜福利| 国产喷水1区2区3区咪咪爱AV| 人妻激情偷一区二区三区| 92国产福利午夜757小视频| 免费无码成人AV片在线| 国产精品粉嫩嫩在线观看| 视频一区二区三区中文字幕狠狠| 日本亚洲一区二区精品久久| 国产欧洲欧洲久美女久久| 久久不卡精品| 亚洲国产欧美在线人成AAAA| 国产精品自偷一区在线观看| 午夜AAAAA级岛国福利在线| 成人精品区| 亚洲中文字幕综合网在线| 精品无码国产自产拍在线观看蜜| 亚洲男人电影天堂无码| 亚洲中文字幕久久精品码| 色妞www精品免费视频| 性色av不卡一区二区三区| 国产一区二区三区av在线无码观看 | 亚洲VA久久久噜噜噜久久无码| 国产仑乱无码内谢| 国产成人片无码视频| 国产午夜亚洲精品久久| 97在线碰| 日韩国产精品区一区二区| 美女内射毛片在线看免费人动物| 无码天堂亚洲国产av麻豆|