Newer
Older
smart-metering-front / src / views / business / lab / excelEdit / methods / bind / bindForm.ts
dutingting on 2 Apr 2 KB 暂存
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() : '', //  校准日期日
        dttTest: {
          propA: '我是测试字段',
        },
        equipmentList: data.equipmentInfoList.map((item: any) => {
          return {
            ...item,
            number1: 1,
            number2: 2,
            number3: 3,
            number4: 4,
            nameAndModel: item.equipmentName + item.modelNo, // 名称 + 数值
            deptNameAndCertificateNo: item.mesureDeptName + item.certificateNo, // 溯源机构+证书编号
          }
        }),
      }
      break
    default:
      break
  }
  // 只留两行
  // result = { ...result, equipmentList: [result.equipmentList[0], result.equipmentList[1]] }
  return result
}

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