From 07c005cf28acf74e3afde82122e4c53e1000d70c Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期一, 12 六月 2023 12:06:18 +0800 Subject: [PATCH] Merge branch 'master' into positec --- src/tabviews/zshare/actionList/excelInbutton/excelin/index.jsx | 46 +++++++++++++++++++++++++++++----------------- 1 files changed, 29 insertions(+), 17 deletions(-) diff --git a/src/tabviews/zshare/actionList/excelInbutton/excelin/index.jsx b/src/tabviews/zshare/actionList/excelInbutton/excelin/index.jsx index 1e36bfa..7610cae 100644 --- a/src/tabviews/zshare/actionList/excelInbutton/excelin/index.jsx +++ b/src/tabviews/zshare/actionList/excelInbutton/excelin/index.jsx @@ -1,15 +1,15 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' import { notification } from 'antd' -import * as XLSX from 'xlsx' +import * as XLSX from 'sheetjs-style' import Utils from '@/utils/utils.js' import './index.scss' class ExcelIn extends Component { static propTpyes = { - btn: PropTypes.object, // 鎸夐挳淇℃伅 - MenuID: PropTypes.string, // 鑿滃崟ID - returndata: PropTypes.func // 鑾峰彇杩斿洖鏁版嵁 + btn: PropTypes.object, // 鎸夐挳淇℃伅 + returndata: PropTypes.func, // 鑾峰彇杩斿洖鏁版嵁 + triggerExcelIn: PropTypes.func // 淇敼涓婁紶鐘舵�� } state = { @@ -18,7 +18,7 @@ exceltrigger = () => { const { excelId } = this.state - let _excelInput = document.getElementById(excelId + this.props.MenuID) + let _excelInput = document.getElementById(excelId) if (_excelInput) { _excelInput.click() @@ -34,6 +34,7 @@ const { files } = file.target const fileReader = new FileReader() + this.props.triggerExcelIn() fileReader.onload = event => { try { const { result } = event.target @@ -41,36 +42,47 @@ const workbook = XLSX.read(result, { type: 'binary' }) let errors = null + let sheetName = btn.verify.sheet + let errDetail = '' - if (!workbook.Sheets.hasOwnProperty(btn.verify.sheet)) { + if (sheetName === 'Sheet1' && Object.keys(workbook.Sheets).length === 1) { + sheetName = Object.keys(workbook.Sheets)[0] + } + + if (!workbook.Sheets.hasOwnProperty(sheetName)) { errors = 'notexit' } else if (range === 1) { - let header = XLSX.utils.sheet_to_json(workbook.Sheets[btn.verify.sheet], {header: columns})[0] - + let header = XLSX.utils.sheet_to_json(workbook.Sheets[sheetName], {header: columns})[0] + if (!header) { errors = 'empty' } else { let iserror = false btn.verify.columns.forEach(op => { - if (header[op.Column] !== op.Text) { + let _name = typeof(header[op.Column]) === 'string' ? header[op.Column].replace(/(^\s*|\s*$)/g, '') : header[op.Column] + let _text = op.Text ? op.Text.replace(/(^\s*|\s*$)/g, '') : op.Text + + if (!_name && !iserror) { iserror = true + errors = 'headerError' + errDetail = `Excel涓笉瀛樺湪锛�${_text}锛夊垪锛乣 + } else if (_name !== _text && !iserror) { + iserror = true + errors = 'headerError' + errDetail = `Excel涓紙${_name}锛変笌鎸夐挳鍒椾俊鎭紙${_text}锛変笉涓�鑷达紒` } }) - - if (iserror) { - errors = 'headerError' - } } } let data = [] if (!errors) { - data = XLSX.utils.sheet_to_json(workbook.Sheets[btn.verify.sheet], {header: columns, range: (range)}) + data = XLSX.utils.sheet_to_json(workbook.Sheets[sheetName], {header: columns, range: (range)}) } // 鏈�缁堣幏鍙栧埌骞朵笖鏍煎紡鍖栧悗鐨� json 鏁版嵁 - this.props.returndata(data, errors) + this.props.returndata(data, errors, sheetName, errDetail) this.setState({ excelId: '', }, () => { @@ -88,7 +100,7 @@ }) notification.warning({ top: 92, - message: '鏂囦欢瑙f瀽閿欒锛岃妫�鏌ユ枃浠舵牸寮忥紒', + message: '鏂囦欢瑙f瀽閿欒锛�', duration: 5 }) // 閿欒浼犻�� @@ -103,7 +115,7 @@ render() { return ( <span> - {this.state.excelId ? <input className="excel-in-input" id={this.state.excelId + this.props.MenuID} type='file' accept='.xlsx, .xls' onChange={this.onImportExcel} /> : null} + {this.state.excelId ? <input className="excel-in-input" id={this.state.excelId} type='file' accept='.xlsx, .xls' onAbort={this.onImportExcel} onChange={this.onImportExcel} /> : null} </span> ) } -- Gitblit v1.8.0