560 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			560 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			Plaintext
		
	
	
<template>
 | 
						||
  <div class="app-container monthly-paymentDetail">
 | 
						||
    <div class="filter-container">
 | 
						||
      <el-form :inline="true" :model="basicInfo" class="demo-form-inline" size="small">
 | 
						||
        <el-form-item label="Name:">
 | 
						||
          <el-input v-model="basicInfo.Name" style="width:160px;" readonly />
 | 
						||
        </el-form-item>
 | 
						||
        <el-form-item label="ID:">
 | 
						||
          <el-input v-model="basicInfo.Code" style="width:100px;" readonly />
 | 
						||
        </el-form-item>
 | 
						||
        <el-form-item label="Rank:">
 | 
						||
          <el-input v-model="basicInfo.RankName" style="width:180px;" readonly />
 | 
						||
        </el-form-item>
 | 
						||
        <el-form-item label="Month:">
 | 
						||
          <el-input v-model="basicInfo.YearMonth" readonly style="width:100px;" />
 | 
						||
        </el-form-item>
 | 
						||
 | 
						||
        <el-form-item label="Exchange Rate:">
 | 
						||
          <el-input v-model="basicInfo.ExchangeRate" readonly style="width:80px;" />
 | 
						||
        </el-form-item>
 | 
						||
 | 
						||
        <el-button type="primary" size="small" @click="exportExcel">Export Excel</el-button>
 | 
						||
        <el-button
 | 
						||
          size="small"
 | 
						||
          type="primary"
 | 
						||
          :loading="loading"
 | 
						||
          @click="handleWindowPrint( '#payDetailPdf2', htmlTitle )"
 | 
						||
        >Export PDF</el-button>
 | 
						||
      </el-form>
 | 
						||
    </div>
 | 
						||
    <el-table
 | 
						||
      id="payDetailPdf2"
 | 
						||
      height="90%"
 | 
						||
      :data="list"
 | 
						||
      :span-method="objectSpanMethod"
 | 
						||
      border
 | 
						||
      show-summary
 | 
						||
      :summary-method="getSummaries"
 | 
						||
      align="center"
 | 
						||
      size="small"
 | 
						||
    >
 | 
						||
      <el-table-column prop="TrialCode" label="Project ID" show-overflow-tooltip min-width="100" />
 | 
						||
      <el-table-column
 | 
						||
        prop="PaymentType"
 | 
						||
        label="Read Type"
 | 
						||
        show-overflow-tooltip
 | 
						||
        min-width="100"
 | 
						||
      >
 | 
						||
        <template slot-scope="scope">
 | 
						||
          <div>{{ scope.row.TrialCode!='Adjustment'? scope.row.PaymentType :scope.row.AdjustmentView.AdjustType }}</div>
 | 
						||
        </template>
 | 
						||
      </el-table-column>
 | 
						||
      <el-table-column prop="Count" label="Volume" show-overflow-tooltip min-width="100">
 | 
						||
        <template slot-scope="scope">
 | 
						||
          <div>{{ scope.row.TrialCode!='Adjustment'? scope.row.Count : scope.row.AdjustmentView.Note }}</div>
 | 
						||
        </template>
 | 
						||
      </el-table-column>
 | 
						||
      <el-table-column
 | 
						||
        prop="BasePrice"
 | 
						||
        label="Base Rate ($)"
 | 
						||
        show-overflow-tooltip
 | 
						||
        min-width="100"
 | 
						||
      >
 | 
						||
        <template slot-scope="scope">
 | 
						||
          <span>{{ scope.row.BasePrice | rounding }}</span>
 | 
						||
        </template>
 | 
						||
      </el-table-column>
 | 
						||
      <el-table-column
 | 
						||
        prop="PersonalAdditional"
 | 
						||
        label="Personal Adjustment ($)"
 | 
						||
        show-overflow-tooltip
 | 
						||
        min-width="160"
 | 
						||
      >
 | 
						||
        <template slot-scope="scope">
 | 
						||
          <span>{{ scope.row.PersonalAdditional | rounding }}</span>
 | 
						||
        </template>
 | 
						||
      </el-table-column>
 | 
						||
      <el-table-column
 | 
						||
        prop="TrialAdditional"
 | 
						||
        label="Project Adjustment ($)"
 | 
						||
        show-overflow-tooltip
 | 
						||
        min-width="150"
 | 
						||
      >
 | 
						||
        <template slot-scope="scope">
 | 
						||
          <span>{{ scope.row.TrialAdditional | rounding }}</span>
 | 
						||
        </template>
 | 
						||
      </el-table-column>
 | 
						||
      <el-table-column
 | 
						||
        prop="TotalUnitPrice"
 | 
						||
        label="Adjusted Rate ($)"
 | 
						||
        show-overflow-tooltip
 | 
						||
        min-width="130"
 | 
						||
      >
 | 
						||
        <template slot-scope="scope">
 | 
						||
          <span>{{ scope.row.TotalUnitPrice | rounding }}</span>
 | 
						||
        </template>
 | 
						||
      </el-table-column>
 | 
						||
      <el-table-column
 | 
						||
        prop="PaymentUSD"
 | 
						||
        label="Subtotal ($)"
 | 
						||
        show-overflow-tooltip
 | 
						||
        min-width="100"
 | 
						||
      >
 | 
						||
        <template slot-scope="scope">
 | 
						||
          <span>{{ scope.row.PaymentUSD | rounding }}</span>
 | 
						||
        </template>
 | 
						||
      </el-table-column>
 | 
						||
      <el-table-column
 | 
						||
        prop="PaymentCNY"
 | 
						||
        :label="rmbTitle"
 | 
						||
        show-overflow-tooltip
 | 
						||
        min-width="120"
 | 
						||
      >
 | 
						||
        <template slot-scope="scope">
 | 
						||
          <span v-if="basicInfo.ExchangeRate==0" style="color:red">{{ 'Setting Needed' }}</span>
 | 
						||
          <span v-else>{{ scope.row.PaymentCNY }}</span>
 | 
						||
        </template>
 | 
						||
      </el-table-column>
 | 
						||
    </el-table>
 | 
						||
  </div>
 | 
						||
</template>
 | 
						||
<script>
 | 
						||
import { getMonthlyPaymentDetailList } from '@/api/financials'
 | 
						||
import Excel from 'exceljs'
 | 
						||
import floatObj from '@/utils/float-operation'
 | 
						||
export default {
 | 
						||
  name: 'PaymentDetail',
 | 
						||
  filters: {
 | 
						||
    rounding(value) {
 | 
						||
      return value ? Number(value).toFixed(2) : value
 | 
						||
      // return value
 | 
						||
    }
 | 
						||
  },
 | 
						||
  data() {
 | 
						||
    return {
 | 
						||
      basicInfo: {},
 | 
						||
      list: [],
 | 
						||
      spanArr: [],
 | 
						||
      pos: 0,
 | 
						||
      htmlTitle: '',
 | 
						||
      rmbTitle: '',
 | 
						||
      loading: false
 | 
						||
    }
 | 
						||
  },
 | 
						||
  mounted() {
 | 
						||
    const info = this.$router.currentRoute.query
 | 
						||
    this.basicInfo = (({ Id, DoctorId, ChineseName, LastName, FirstName, Code, ExchangeRate, RankName, YearMonth }) => ({ Id, DoctorId, ChineseName, LastName, FirstName, Code, ExchangeRate, RankName, YearMonth }))(info)
 | 
						||
    this.basicInfo.Name = `${this.basicInfo.FirstName} ${this.basicInfo.LastName} ${this.basicInfo.ChineseName}`
 | 
						||
    this.htmlTitle = this.basicInfo.ChineseName + '_' + this.basicInfo.YearMonth
 | 
						||
    this.getList()
 | 
						||
  },
 | 
						||
  methods: {
 | 
						||
    getList() {
 | 
						||
      getMonthlyPaymentDetailList(this.basicInfo.Id, this.basicInfo.DoctorId, this.basicInfo.YearMonth).then(res => {
 | 
						||
        this.list = res.Result.DetailList
 | 
						||
        this.rmbTitle = 'Subtotal(¥)'
 | 
						||
        this.getSpanArr(res.Result.DetailList)
 | 
						||
        this.list.forEach((item, index, array) => {
 | 
						||
          if (item.AdjustmentView) {
 | 
						||
            item.AdjustmentView.Note = `Note: ${item.AdjustmentView.Note}`
 | 
						||
          }
 | 
						||
        })
 | 
						||
      })
 | 
						||
    },
 | 
						||
    getSummaries(param) {
 | 
						||
      var that = this
 | 
						||
      const { columns, data } = param
 | 
						||
      const sums = []
 | 
						||
      columns.forEach((column, index) => {
 | 
						||
        if (index === 0) {
 | 
						||
          sums[index] = 'Total'
 | 
						||
          return
 | 
						||
        }
 | 
						||
        if (column.property === 'PaymentUSD') {
 | 
						||
          const values = data.map(item => Number(item[column.property]))
 | 
						||
          if (!values.every(value => isNaN(value))) {
 | 
						||
            sums[index] = values
 | 
						||
              .reduce((prev, curr) => {
 | 
						||
                const value = Number(curr)
 | 
						||
                if (!isNaN(value)) {
 | 
						||
                  return floatObj.add(prev, curr)
 | 
						||
                } else {
 | 
						||
                  return prev
 | 
						||
                }
 | 
						||
              }, 0)
 | 
						||
          }
 | 
						||
        }
 | 
						||
        if (column.property === 'PaymentCNY') {
 | 
						||
          const values = data.map(item => Number(item['PaymentCNY']))
 | 
						||
          sums[index] = values.reduce((prev, curr) => {
 | 
						||
            const value = Number(curr)
 | 
						||
            if (!isNaN(value)) {
 | 
						||
              return floatObj.add(prev, curr)
 | 
						||
            } else {
 | 
						||
              return prev
 | 
						||
            }
 | 
						||
          }, 0)
 | 
						||
          if (sums[index] === 0.0 && that.basicInfo.ExchangeRate === 0) {
 | 
						||
            sums[index] = 'Setting Needed'
 | 
						||
          }
 | 
						||
          return
 | 
						||
        }
 | 
						||
      })
 | 
						||
      return sums
 | 
						||
    },
 | 
						||
    getSpanArr(data) {
 | 
						||
      for (var i = 0; i < data.length; i++) {
 | 
						||
        if (i === 0) {
 | 
						||
          this.spanArr.push(1)
 | 
						||
          this.pos = 0
 | 
						||
        } else {
 | 
						||
          // 判断当前元素与上一个元素是否相同
 | 
						||
          if (data[i].TrialCode === data[i - 1].TrialCode) {
 | 
						||
            this.spanArr[this.pos] += 1
 | 
						||
            this.spanArr.push(0)
 | 
						||
          } else {
 | 
						||
            this.spanArr.push(1)
 | 
						||
            this.pos = i
 | 
						||
          }
 | 
						||
        }
 | 
						||
      }
 | 
						||
    },
 | 
						||
 | 
						||
    objectSpanMethod({ row, column, rowIndex, columnIndex }) {
 | 
						||
      if (columnIndex === 0) {
 | 
						||
        const _row = this.spanArr[rowIndex]
 | 
						||
        const _col = _row > 0 ? 1 : 0
 | 
						||
        return {
 | 
						||
          rowspan: _row,
 | 
						||
          colspan: _col
 | 
						||
        }
 | 
						||
      }
 | 
						||
 | 
						||
      if (row.TrialCode === 'Adjustment') {
 | 
						||
        if (columnIndex === 2) {
 | 
						||
          return [1, 5]
 | 
						||
        } else if (columnIndex === 3 || columnIndex === 4 || columnIndex === 5 || columnIndex === 6) {
 | 
						||
          return [0, 0]
 | 
						||
        }
 | 
						||
      }
 | 
						||
    },
 | 
						||
    exportExcel() {
 | 
						||
      var workbook = new Excel.Workbook()
 | 
						||
      var sheet = workbook.addWorksheet(this.basicInfo.ChineseName + ' ' + this.basicInfo.YearMonth)
 | 
						||
      sheet.properties.defaultRowHeight = 22
 | 
						||
      sheet.columns = [
 | 
						||
        { header: 'Project ID', key: 'TrialCode', width: 15 },
 | 
						||
        { header: 'Type', key: 'PaymentType', width: 30 },
 | 
						||
        { header: 'Count', key: 'Count', width: 15 },
 | 
						||
        { header: 'Base Price', key: 'BasePrice', width: 15 },
 | 
						||
        { header: 'Personal Additional', key: 'PersonalAdditional', width: 22 },
 | 
						||
        { header: 'Trial Additional', key: 'TrialAdditional', width: 22 },
 | 
						||
        { header: 'Total Price', key: 'TotalUnitPrice', width: 22 },
 | 
						||
        { header: 'Total Fee', key: 'PaymentUSD', width: 22 },
 | 
						||
        { header: 'Subtotal(¥)', key: 'PaymentCNY', width: 22 }
 | 
						||
      ]
 | 
						||
 | 
						||
      var that = this
 | 
						||
 | 
						||
      var tempTotalFee = 0
 | 
						||
      var tempTotalFeeInCN = 0
 | 
						||
      this.list.forEach(element => {
 | 
						||
        tempTotalFee += parseFloat(element.PaymentUSD)
 | 
						||
        tempTotalFeeInCN += parseFloat(element.PaymentCNY)
 | 
						||
      })
 | 
						||
 | 
						||
      var rowsCount = Number(this.list.length + 1)
 | 
						||
 | 
						||
      // 处理标题
 | 
						||
      var titleRows = 4
 | 
						||
      sheet.mergeCells('A1', 'I2')
 | 
						||
      sheet.getCell('A1').value = 'Monthly Payment' // that.basicInfo.DoctorChineseName + ' ' + that.date + ' 费用明细'
 | 
						||
      sheet.getCell('A1').alignment = { vertical: 'middle', horizontal: 'center' }
 | 
						||
      sheet.getCell('A1').font = { name: 'SimSun', family: 4, size: 13, bold: true }
 | 
						||
 | 
						||
      sheet.mergeCells('A3', 'D3')
 | 
						||
      // that.basicInfo.FirstName + ' ' + that.basicInfo.LastName + '     Name CN:'+
 | 
						||
      sheet.getCell('A3').value = 'Name:' + this.basicInfo.ChineseName + '    ID:' + that.basicInfo.Code
 | 
						||
      sheet.mergeCells('E3', 'I3')
 | 
						||
      // sheet.getCell('E3').value =
 | 
						||
      //   '         Rank:' +
 | 
						||
      //   that.basicInfo.RankName +
 | 
						||
      //   '             Month:' +
 | 
						||
      //   that.basicInfo.YearMonth +
 | 
						||
      //   '          Exchange Rate: ' +
 | 
						||
      //   Number(that.basicInfo.ExchangeRate).toFixed(2)
 | 
						||
      sheet.getCell('E3').value =
 | 
						||
        '         Rank:' +
 | 
						||
        that.basicInfo.RankName +
 | 
						||
        '             Month:' +
 | 
						||
        that.basicInfo.YearMonth +
 | 
						||
        '          Exchange Rate: ' +
 | 
						||
        Number(that.basicInfo.ExchangeRate)
 | 
						||
      sheet.getCell('A3').alignment = { vertical: 'middle', horizontal: 'left' }
 | 
						||
      sheet.getCell('E3').alignment = { vertical: 'middle', horizontal: 'right' }
 | 
						||
      // heet.mergeCells('A4', 'H4')
 | 
						||
 | 
						||
      sheet.getCell('A4').value = 'Project ID'
 | 
						||
      sheet.getCell('B4').value = 'Read Type'
 | 
						||
      sheet.getCell('C4').value = 'Volume'
 | 
						||
      sheet.getCell('D4').value = 'Base Rate($)'
 | 
						||
      sheet.getCell('E4').value = 'Personal Adjustment($)'
 | 
						||
      sheet.getCell('F4').value = 'Project Adjustment($)'
 | 
						||
      sheet.getCell('G4').value = 'Adjusted Rate($)'
 | 
						||
      sheet.getCell('H4').value = 'Subtotal($)'
 | 
						||
      sheet.getCell('I4').value = 'Subtotal(¥)'
 | 
						||
      sheet.getRow(4).font = { name: 'SimSun', family: 4, size: 11, bold: true }
 | 
						||
 | 
						||
      sheet.addRows(this.list)
 | 
						||
      // 合并项目编号单元格
 | 
						||
      var projectCount = Math.floor(Number(this.list.length / 9)) // 项目个数
 | 
						||
 | 
						||
      for (let i = 0; i < projectCount; i++) {
 | 
						||
        var tempR1 = 'A' + (10 * i + titleRows + 1)
 | 
						||
        var tempR2 = 'A' + (10 * (i + 1) + titleRows)
 | 
						||
        if (10 * (i + 1) < rowsCount) {
 | 
						||
          sheet.mergeCells(tempR1, tempR2)
 | 
						||
          sheet.getCell(tempR1).alignment = { vertical: 'middle', horizontal: 'center' }
 | 
						||
        }
 | 
						||
      }
 | 
						||
 | 
						||
      // 合并奖励单元格
 | 
						||
 | 
						||
      var awardCount = this.list.filter(t => t.TrialCode === 'Volume Reward').length
 | 
						||
 | 
						||
      var adjustMentCount = this.list.filter(t => t.TrialCode === 'Adjustment').length
 | 
						||
 | 
						||
      if (awardCount > 0) {
 | 
						||
        var R1 = 'A' + (projectCount * 10 + titleRows + 1)
 | 
						||
        var R2 = 'A' + (projectCount * 10 + titleRows + awardCount)
 | 
						||
        sheet.mergeCells(R1, R2)
 | 
						||
        sheet.getCell(R1).alignment = { vertical: 'middle', horizontal: 'center' }
 | 
						||
      }
 | 
						||
 | 
						||
      if (adjustMentCount > 0) {
 | 
						||
        // 处理调整行列合并
 | 
						||
 | 
						||
        var R3 = 'A' + (projectCount * 10 + titleRows + awardCount + 1)
 | 
						||
        var R4 = 'A' + (rowsCount + titleRows - 1)
 | 
						||
 | 
						||
        sheet.mergeCells(R3, R4)
 | 
						||
        sheet.getCell(R3).alignment = { vertical: 'middle', horizontal: 'center' }
 | 
						||
 | 
						||
        // 行合并
 | 
						||
        var i = 0
 | 
						||
        for (i = 0; i < adjustMentCount; i++) {
 | 
						||
          var adjustMentCell1 = 'B' + (projectCount * 10 + titleRows + awardCount + 1 + i)
 | 
						||
          var adjustMentCell2 = 'C' + (projectCount * 10 + titleRows + awardCount + 1 + i)
 | 
						||
          var adjustMentCell3 = 'G' + (projectCount * 10 + titleRows + awardCount + 1 + i)
 | 
						||
          sheet.mergeCells(adjustMentCell2, adjustMentCell3)
 | 
						||
          var index = projectCount * 10 + awardCount + i
 | 
						||
 | 
						||
          sheet.getCell(adjustMentCell1).value = this.list[index].AdjustmentView.AdjustType
 | 
						||
          sheet.getCell(adjustMentCell2).value = this.list[index].AdjustmentView.Note
 | 
						||
        }
 | 
						||
      }
 | 
						||
 | 
						||
      var tempCell = 'A' + (rowsCount + 1 + titleRows - 1)
 | 
						||
      var tempCell1 = 'B' + (rowsCount + 1 + titleRows - 1)
 | 
						||
      var tempCell2 = 'G' + (rowsCount + 1 + titleRows - 1)
 | 
						||
      var tempCell3 = 'H' + (rowsCount + 1 + titleRows - 1)
 | 
						||
      var tempCell4 = 'I' + (rowsCount + 1 + titleRows - 1)
 | 
						||
      sheet.mergeCells(tempCell1, tempCell2)
 | 
						||
      sheet.getCell(tempCell).value = 'Total' // that.date + ' 费用总计: '
 | 
						||
      sheet.getCell(tempCell3).value = tempTotalFee
 | 
						||
      sheet.getCell(tempCell4).value = tempTotalFeeInCN
 | 
						||
 | 
						||
      sheet.getCell(tempCell3).font = { name: 'SimSun', family: 4, size: 13, bold: true }
 | 
						||
      sheet.getRow(rowsCount + titleRows).font = { name: 'SimSun', family: 4, size: 13, bold: true }
 | 
						||
      sheet.getColumn(7).numFmt = '#,##0.00'
 | 
						||
      sheet.getColumn(8).numFmt = '#,##0.00'
 | 
						||
      sheet.getColumn(9).numFmt = '#,##0.00'
 | 
						||
      sheet.eachRow((row, number) => {
 | 
						||
        if (number > 3) {
 | 
						||
          row.eachCell((cell, rowNumber) => {
 | 
						||
            cell.border = {
 | 
						||
              top: { style: 'thin' },
 | 
						||
              left: { style: 'thin' },
 | 
						||
              bottom: { style: 'thin' },
 | 
						||
              right: { style: 'thin' }
 | 
						||
            }
 | 
						||
          })
 | 
						||
        }
 | 
						||
      })
 | 
						||
      workbook.xlsx
 | 
						||
        .writeBuffer({
 | 
						||
          base64: true
 | 
						||
        })
 | 
						||
        .then(function(xls64) {
 | 
						||
          var data = new Blob([xls64], {
 | 
						||
            type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
 | 
						||
          })
 | 
						||
 | 
						||
          if ('msSaveOrOpenBlob' in navigator) {
 | 
						||
            // ie使用的下载方式
 | 
						||
            window.navigator.msSaveOrOpenBlob(data, that.basicInfo.ChineseName + ' ' + that.basicInfo.YearMonth + '.xlsx')
 | 
						||
          } else {
 | 
						||
            var a = document.createElement('a')
 | 
						||
 | 
						||
            var url = URL.createObjectURL(data)
 | 
						||
            a.href = url
 | 
						||
            a.download = that.basicInfo.ChineseName + ' ' + that.basicInfo.YearMonth + '.xlsx'
 | 
						||
            document.body.appendChild(a)
 | 
						||
            a.click()
 | 
						||
            setTimeout(function() {
 | 
						||
              document.body.removeChild(a)
 | 
						||
              window.URL.revokeObjectURL(url)
 | 
						||
            }, 0)
 | 
						||
          }
 | 
						||
        })
 | 
						||
    },
 | 
						||
 | 
						||
    handleWindowPrint(ele, fileName, vm) {
 | 
						||
      var oIframe = document.createElement('iframe')
 | 
						||
      oIframe.style.display = 'none'
 | 
						||
      var oScript = document.createElement('script')
 | 
						||
      var oStyle = document.createElement('style')
 | 
						||
      oStyle.type = 'text/css'
 | 
						||
      document.body.appendChild(oIframe)
 | 
						||
      document.head.getElementsByTagName('title')[0].innerText = `${fileName}`
 | 
						||
 | 
						||
      oIframe.contentDocument.head.innerHTML = `<meta charset="utf-8">
 | 
						||
                                              <title>${fileName}</title>
 | 
						||
                                              <meta name="format-detection" content="telephone=no">
 | 
						||
                                              <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
 | 
						||
                                              <meta name="viewport" content="width=device-width,initial-scale=1.0">`
 | 
						||
 | 
						||
      var divHeader = ' <div style="text-align:center; font-size:20px:"> Monthly Payment </div>'
 | 
						||
      var divElement = `<div style='display: flex;justify-content: space-between;margin:25px 0px 20px'>
 | 
						||
      <label>Name: ${this.basicInfo.ChineseName}</label>
 | 
						||
      <label>ID: ${this.basicInfo.Code}</label>
 | 
						||
      <label>Rank: ${this.basicInfo.RankName}</label>
 | 
						||
      <label>Month: ${this.basicInfo.YearMonth}</label>
 | 
						||
      <label>Exchange Rate: ${this.basicInfo.ExchangeRate}</label>
 | 
						||
      </div>`
 | 
						||
 | 
						||
      oIframe.contentDocument.body.innerHTML = divHeader + divElement + document.querySelector(ele).outerHTML
 | 
						||
      // oIframe.contentDocument.getElementsByClassName('el-table__body-wrapper')[0].style.maxHeight = '100%'
 | 
						||
 | 
						||
      // 页面打印缩放比例设置
 | 
						||
      oIframe.contentDocument.body.style.zoom = 0.75
 | 
						||
      // oIframe.contentDocument.getElementById('payDetailPdf2').removeAttribute('el-table--scrollable-y')
 | 
						||
      oIframe.contentDocument.getElementsByClassName('el-table--scrollable-y').style = ''
 | 
						||
      oIframe.contentDocument.getElementsByClassName('el-table__body-wrapper')[0].style = {
 | 
						||
        'max-height': '100%'
 | 
						||
        // ,'width':'100%'
 | 
						||
      }
 | 
						||
 | 
						||
      oIframe.contentDocument.getElementsByClassName('el-table__header-wrapper')[0].remove()
 | 
						||
 | 
						||
      var ostatFirstTr = document.createElement('tr')
 | 
						||
      ostatFirstTr.innerHTML = `  
 | 
						||
      <td >
 | 
						||
          <div class="cell">Trial ID</div>
 | 
						||
      </td>
 | 
						||
      <td >
 | 
						||
          <div class="cell">Read Type</div>
 | 
						||
      </td>
 | 
						||
      <td >
 | 
						||
          <div class="cell">Volume</div>
 | 
						||
      </td>
 | 
						||
      <td >
 | 
						||
          <div class="cell">Base Rate ($)</div>
 | 
						||
      </td>
 | 
						||
      <td >
 | 
						||
          <div class="cell">Personal Adjustment ($)</div>
 | 
						||
      </td>
 | 
						||
      <td>
 | 
						||
          <div class="cell">Trial Adjustment ($)</div>
 | 
						||
      </td>
 | 
						||
      <td >
 | 
						||
          <div class="cell">Adjusted Rate ($)</div>
 | 
						||
      </td>
 | 
						||
      <td>
 | 
						||
          <div class="cell">Subtotal ($)</div>
 | 
						||
      </td>
 | 
						||
      <td >
 | 
						||
          <div class="cell">Subtotal(¥)</div>
 | 
						||
      </td>
 | 
						||
      <th></th>`
 | 
						||
 | 
						||
      oIframe.contentDocument.getElementsByClassName('el-table__body')[0].children[1].appendChild(ostatFirstTr)
 | 
						||
 | 
						||
      var oldEle = oIframe.contentDocument.getElementsByClassName('el-table__body')[0].children[1].firstChild // 现有的元素
 | 
						||
      oldEle.parentNode.insertBefore(ostatFirstTr, oldEle)
 | 
						||
      // 将newEle插入到oldEle之前
 | 
						||
 | 
						||
      var tempTotalFee = 0
 | 
						||
      var tempTotalFeeInCN = 0
 | 
						||
      this.list.forEach(element => {
 | 
						||
        tempTotalFee += parseFloat(element.PaymentUSD)
 | 
						||
        tempTotalFeeInCN += parseFloat(element.PaymentCNY)
 | 
						||
      })
 | 
						||
      // tempTotalFee = tempTotalFee.toFixed(2)
 | 
						||
      // tempTotalFeeInCN = tempTotalFeeInCN.toFixed(2)
 | 
						||
 | 
						||
      // 移除尾部统计行
 | 
						||
      oIframe.contentDocument.getElementsByClassName('el-table__footer-wrapper')[0].remove()
 | 
						||
      // 创建尾部统计行Last
 | 
						||
      var ostatLastTr = document.createElement('tr')
 | 
						||
      ostatLastTr.innerHTML = `
 | 
						||
    <td >
 | 
						||
        <div class="cell">Total</div>
 | 
						||
    </td>
 | 
						||
    <td >
 | 
						||
        <div class="cell"></div>
 | 
						||
    </td>
 | 
						||
    <td >
 | 
						||
        <div class="cell"></div>
 | 
						||
    </td>
 | 
						||
    <td >
 | 
						||
        <div class="cell"></div>
 | 
						||
    </td>
 | 
						||
    <td >
 | 
						||
        <div class="cell"></div>
 | 
						||
    </td>
 | 
						||
    <td>
 | 
						||
        <div class="cell"></div>
 | 
						||
    </td>
 | 
						||
    <td >
 | 
						||
        <div class="cell"></div>
 | 
						||
    </td>
 | 
						||
    <td>
 | 
						||
        <div class="cell">${tempTotalFee}</div>
 | 
						||
    </td>
 | 
						||
    <td >
 | 
						||
        <div class="cell">${tempTotalFeeInCN}</div>
 | 
						||
    </td>
 | 
						||
    <th></th>`
 | 
						||
      oIframe.contentDocument.getElementsByClassName('el-table__body')[0].lastChild.appendChild(ostatLastTr)
 | 
						||
 | 
						||
      oStyle.innerHTML = `.el-table td{border:1px solid #ccc;}
 | 
						||
  th{text-align:center} td{text-align:right}
 | 
						||
        @page{size: landscape;}
 | 
						||
      `
 | 
						||
 | 
						||
      oIframe.contentDocument.body.appendChild(oStyle)
 | 
						||
      oScript.innerText =
 | 
						||
      `if (window.navigator.userAgent.indexOf("Edge") >= 0)
 | 
						||
{ 
 | 
						||
window.print();
 | 
						||
 | 
						||
}
 | 
						||
else{window.print();}`
 | 
						||
 | 
						||
      oIframe.contentDocument.body.appendChild(oScript)
 | 
						||
    }
 | 
						||
  }
 | 
						||
}
 | 
						||
</script>
 | 
						||
 | 
						||
<style lang="scss">
 | 
						||
.monthly-paymentDetail{
 | 
						||
  .el-table {
 | 
						||
    overflow: visible !important;
 | 
						||
  }
 | 
						||
}
 | 
						||
 | 
						||
</style>
 |