Newer
Older
smart-metering-front / src / views / business / lab / excelEdit / bindForm.ts
import GC from '@grapecity-software/spread-sheets'
import dayjs from 'dayjs'
const certTypeMap: { [key: string]: string } = {
  1: '校准证书'
}

/**
 * 处理表单数据字段的对应
 * @param type 模板类型
 * @param data 要处理的数据
 */
const solveFormData = (type: string, data: any) => {
  let result: any
  switch (type) {
    case '校准证书':
      result = {
        ...data,
        certificateNo: data.certificateReportCode, // 证书编号
        yearD: data.deliverTime ? dayjs(data.deliverTime).year() : '', //  接收日期年
        monthD: data.deliverTime ? dayjs(data.deliverTime).month() : '', //  接收日期月
        dayD: data.deliverTime ? dayjs(data.deliverTime).day() : '', //  接收日期日
        yearC: data.calibrationTime ? dayjs(data.calibrationTime).year() : '', //  校准日期年
        monthC: data.calibrationTime ? dayjs(data.calibrationTime).month() : '', //  校准日期月
        dayC: data.calibrationTime ? dayjs(data.calibrationTime).day() : '', //  校准日期日
      }
      break
    default:
      break
  }

  return result
}

/**
 * 表单绑定
 * @param spread
 * @param data
 */
export default function bindForm(spread: any, data: any, type = '校准证书') {
  // 处理数据
  const solvedData = solveFormData(type, data)
  // 获取sheet页数量
  const seetCount = spread.getSheetCount()
  for (let i = 0; i < seetCount; i++) {
    // 单元格绑定数据源
    const source = new GC.Spread.Sheets.Bindings.CellBindingSource(solvedData)
    const sheet = spread.getSheet(i) // 获取第几个sheet页
    // 填入数据
    sheet.setDataSource(source)
  }
}