From a7813a33fc5f60ea995dfe0f09f52243e2ccfbb2 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期四, 22 二月 2024 16:28:11 +0800 Subject: [PATCH] 2024-02-22 --- src/tabviews/zshare/actionList/excelInbutton/excelin/index.jsx | 108 ++++++++++++++------------- src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx | 90 ++++++++++++++++------ src/tabviews/zshare/actionList/excelInbutton/index.jsx | 40 ++------- 3 files changed, 130 insertions(+), 108 deletions(-) diff --git a/src/tabviews/zshare/actionList/excelInbutton/excelin/index.jsx b/src/tabviews/zshare/actionList/excelInbutton/excelin/index.jsx index ee748ae..80e3562 100644 --- a/src/tabviews/zshare/actionList/excelInbutton/excelin/index.jsx +++ b/src/tabviews/zshare/actionList/excelInbutton/excelin/index.jsx @@ -1,6 +1,5 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' -import { notification } from 'antd' import * as XLSX from 'sheetjs-style' import Utils from '@/utils/utils.js' import './index.scss' @@ -27,10 +26,6 @@ onImportExcel = file => { const { btn } = this.props - let btnColumns = btn.verify.columns.filter(option => option.import !== 'init') - let columns = btnColumns.map(option => option.Column) - let range = btn.verify.range || 0 - // excel鏁版嵁澶勭悊 const { files } = file.target const fileReader = new FileReader() @@ -42,50 +37,64 @@ // 浠ヤ簩杩涘埗娴佹柟寮忚鍙栧緱鍒版暣浠絜xcel琛ㄦ牸瀵硅薄 const workbook = XLSX.read(result, { type: 'binary' }) - let errors = null - let sheetName = btn.verify.sheet - let errDetail = '' - - 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[sheetName], {header: columns})[0] - - if (!header) { - errors = 'empty' - } else { - let iserror = false - btnColumns.forEach(op => { - if (iserror) return - - 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 = true - errors = 'headerError' - errDetail = `Excel涓笉瀛樺湪锛�${_text}锛夊垪锛乣 - } else if (_name !== _text) { - iserror = true - errors = 'headerError' - errDetail = `Excel涓紙${_name}锛変笌鎸夐挳鍒椾俊鎭紙${_text}锛変笉涓�鑷达紒` - } - }) + if (btn.verify.excelHandle === 'true') { + // eslint-disable-next-line + let func = new Function('XLSX', 'workbook', 'btn', 'callback', btn.verify.excel_func) + func(XLSX, workbook, btn.verify, (data, error) => { + if (!error && (!data || data.length === 0)) { + error = '鏈幏鍙栧埌Excel鏁版嵁锛�' + } + this.props.returndata(data, error) + }) + } else { + let btnColumns = btn.verify.columns.filter(option => option.import !== 'init') + let columns = btnColumns.map(option => option.Column) + let range = btn.verify.range || 0 + + let error = null + let sheetName = btn.verify.sheet + + if (sheetName === 'Sheet1' && Object.keys(workbook.Sheets).length === 1) { + sheetName = Object.keys(workbook.Sheets)[0] } + + if (!workbook.Sheets.hasOwnProperty(sheetName)) { + error = '宸ヤ綔琛ㄣ��' + sheetName + '銆嬩笉瀛樺湪锛�' + } else if (range === 1) { + let header = XLSX.utils.sheet_to_json(workbook.Sheets[sheetName], {header: columns})[0] + + if (!header) { + error = '宸ヤ綔琛ㄣ��' + sheetName + '銆嬩负绌猴紒' + } else { + btnColumns.forEach(op => { + if (error) return + + 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) { + error = `宸ヤ綔琛ㄣ��${sheetName}銆嬭〃澶撮敊璇紝Excel涓笉瀛樺湪锛�${_text}锛夊垪锛乣 + } else if (_name !== _text) { + error = `宸ヤ綔琛ㄣ��${sheetName}銆嬭〃澶撮敊璇紝Excel涓紙${_name}锛変笌鎸夐挳鍒椾俊鎭紙${_text}锛変笉涓�鑷达紒` + } + }) + } + } + + let data = [] + + if (!error) { + data = XLSX.utils.sheet_to_json(workbook.Sheets[sheetName], {header: columns, range: (range)}) + + if (!data || data.length === 0) { + error = '鏈幏鍙栧埌宸ヤ綔琛ㄣ��' + sheetName + '銆嬫暟鎹紒' + } + } + + // 鏈�缁堣幏鍙栧埌骞朵笖鏍煎紡鍖栧悗鐨� json 鏁版嵁 + this.props.returndata(data, error) } - let data = [] - - if (!errors) { - data = XLSX.utils.sheet_to_json(workbook.Sheets[sheetName], {header: columns, range: (range)}) - } - - // 鏈�缁堣幏鍙栧埌骞朵笖鏍煎紡鍖栧悗鐨� json 鏁版嵁 - this.props.returndata(data, errors, sheetName, errDetail) this.setState({ excelId: '', }, () => { @@ -101,13 +110,8 @@ excelId: Utils.getuuid() }) }) - notification.warning({ - top: 92, - message: '鏂囦欢瑙f瀽閿欒锛�', - duration: 5 - }) // 閿欒浼犻�� - this.props.returndata([], 'other') + this.props.returndata([], '鏂囦欢瑙f瀽閿欒锛�') } } diff --git a/src/tabviews/zshare/actionList/excelInbutton/index.jsx b/src/tabviews/zshare/actionList/excelInbutton/index.jsx index b4ac4ee..bfc7d78 100644 --- a/src/tabviews/zshare/actionList/excelInbutton/index.jsx +++ b/src/tabviews/zshare/actionList/excelInbutton/index.jsx @@ -276,43 +276,21 @@ /** * @description Excel 瀵煎叆 */ - getexceldata = (data, errors, sheetName, errDetail) => { + getexceldata = (data, error) => { const { btn, BID } = this.props - if (errors) { - if (errors === 'notexit') { - notification.warning({ - top: 92, - message: '宸ヤ綔琛ㄣ��' + sheetName + '銆嬩笉瀛樺湪锛�', - duration: 5 - }) - } else if (errors === 'empty') { - notification.warning({ - top: 92, - message: '宸ヤ綔琛ㄣ��' + sheetName + '銆嬩负绌猴紒', - duration: 5 - }) - } else if (errors === 'headerError') { - notification.warning({ - top: 92, - message: `宸ヤ綔琛ㄣ��${sheetName}銆嬭〃澶撮敊璇紝${errDetail}`, - duration: 5 - }) - } + if (error) { + notification.warning({ + top: 92, + message: error, + duration: 5 + }) this.setState({ loading: false }) return } - - if (!data || data.length === 0) { - notification.warning({ - top: 92, - message: '鏈幏鍙栧埌宸ヤ綔琛ㄣ��' + sheetName + '銆嬫暟鎹紒', - duration: 5 - }) - this.setState({ loading: false }) - return - } else if (data.length * btn.verify.columns.length > 30000) { + + if (data.length * btn.verify.columns.length > 30000) { notification.warning({ top: 92, message: '褰撳墠瀵煎叆鏁版嵁閲忚繃澶э紝濡傞亣閿欒鎻愮ず锛岃鍒嗘壒瀵煎叆锛�', diff --git a/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx b/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx index 5dd577b..5c664eb 100644 --- a/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx +++ b/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx @@ -19,7 +19,9 @@ const { confirm } = Modal const { Search } = Input const { Paragraph } = Typography + const EditTable = asyncComponent(() => import('@/templates/zshare/editTable')) +const CodeMirror = asyncComponent(() => import('@/templates/zshare/codemirror')) const FullScripts = asyncComponent(() => import('@/templates/zshare/verifycard/fullScripts')) class VerifyCard extends Component { @@ -307,17 +309,17 @@ _verify.range = 1 } + _verify.excelHandle = _verify.excelHandle || 'false' + _verify.default = _verify.default || 'true' + _verify.sheet = _verify.sheet || 'Sheet1' + _verify.range = _verify.range || 0 + _verify.columns = _columns + _verify.scripts = _verify.scripts || [] + _verify.uniques = _verify.uniques || [] + this.setState({ searchKey: '', - verify: { - ..._verify, - default: _verify.default || 'true', - sheet: _verify.sheet || 'Sheet1', - range: _verify.range || 0, - columns: _columns, - scripts: _verify.scripts || [], - uniques: _verify.uniques || [] - } + verify: _verify }, () => { this.resetUniqueColumns() }) @@ -712,6 +714,10 @@ if (!err) { let _verify = {...verify, ...values} + if (_verify.excelHandle !== 'true') { + delete _verify.excel_func + } + let cols = _verify.columns.map(col => col.Column.toLowerCase()) cols = Array.from(new Set(cols)) @@ -771,22 +777,27 @@ resolve(_verify) } } else { - notification.warning({ - top: 92, - message: '璇疯缃瓻xcel琛ㄥ悕!', - duration: 5 - }) + this.setState({activeKey: 'basemsg'}) } }) }) } - onOptionChange = (e, key) => { + onOptionChange = (e) => { const { verify } = this.state let value = e.target.value this.setState({ verify: {...verify, default: value} + }) + } + + onHandleChange = (e) => { + const { verify } = this.state + let value = e.target.value + + this.setState({ + verify: {...verify, excelHandle: value} }) } @@ -867,7 +878,44 @@ <TabPane tab="鍩虹楠岃瘉" key="basemsg"> <Form {...formItemLayout}> <Row gutter={24}> + {card.intertype === 'system' ? <Col span={8}> + <Form.Item label={'榛樿sql'}> + <Radio.Group value={verify.default} onChange={this.onOptionChange}> + <Radio value="true">鎵ц</Radio> + <Radio value="false">涓嶆墽琛�</Radio> + </Radio.Group> + </Form.Item> + </Col> : null} <Col span={8}> + <Form.Item label={ + <Tooltip placement="topRight" title="鑷畾涔夐獙璇丒xcel鏍煎紡锛屽彲鐢ㄥ弬鏁颁负 XLSX銆乨ata銆乧olumns銆乧allback銆�"> + <QuestionCircleOutlined className="mk-form-tip" /> + 瀵煎叆鏍煎紡 + </Tooltip> + }> + {getFieldDecorator('excelHandle', { + initialValue: verify.excelHandle + })( + <Radio.Group onChange={this.onHandleChange}> + <Radio value="false">榛樿</Radio> + <Radio value="true">鑷畾涔�</Radio> + </Radio.Group>)} + </Form.Item> + </Col> + {verify.excelHandle === 'true' ? <Col span={24} style={{paddingLeft: '30px'}}> + <Form.Item wrapperCol={ {xs: { span: 24 }, sm: { span: 24 }} } label=""> + {getFieldDecorator('excel_func', { + initialValue: verify.excel_func || '', + rules: [ + { + required: true, + message: '璇峰~鍐欒嚜瀹氫箟閫昏緫!' + } + ] + })(<CodeMirror mode="text/javascript" theme="cobalt" />)} + </Form.Item> + </Col> : null} + {verify.excelHandle !== 'true' ? <Col span={8}> <Form.Item label={ <Tooltip placement="bottomLeft" title="瀵煎叆鏃跺伐浣滆〃鍚嶄笌excel涓繀椤讳竴鑷达紝娉細宸ヤ綔琛ㄥ悕涓篠heet1涓攅xcel涓粎鏈変竴涓伐浣滆〃鏃朵笉杩涜琛ㄥ悕楠岃瘉銆�"> <QuestionCircleOutlined className="mk-form-tip" /> @@ -884,8 +932,8 @@ ] })(<Input placeholder="" autoComplete="off" />)} </Form.Item> - </Col> - <Col span={8}> + </Col> : null} + {verify.excelHandle !== 'true' ? <Col span={8}> <Form.Item label={ <Tooltip placement="bottomLeft" title="蹇界暐棣栬鏃讹紝浼氭牎楠宔xcel涓〃澶村悕绉颁笌excel鍒楄缃槸鍚︿竴鑷淬��"> <QuestionCircleOutlined className="mk-form-tip" /> @@ -895,14 +943,6 @@ {getFieldDecorator('range', { initialValue: verify.range || 0 })(<InputNumber min={0} max={100} precision={0} />)} - </Form.Item> - </Col> - {card.intertype === 'system' ? <Col span={8}> - <Form.Item label={'榛樿sql'}> - <Radio.Group value={verify.default} onChange={this.onOptionChange}> - <Radio value="true">鎵ц</Radio> - <Radio value="false">涓嶆墽琛�</Radio> - </Radio.Group> </Form.Item> </Col> : null} </Row> -- Gitblit v1.8.0