289 lines
8.2 KiB
JavaScript
289 lines
8.2 KiB
JavaScript
|
|
// 核心库
|
|||
|
|
import React from 'react'
|
|||
|
|
import { connect } from 'dva'
|
|||
|
|
// 组件库
|
|||
|
|
import { Form, Button, DatePicker, Table, message, Icon, Upload, Select, Input } from 'antd'
|
|||
|
|
import { ExportToExcel, LayoutCard } from '@woowalker/feui'
|
|||
|
|
// 工具库
|
|||
|
|
import moment from 'moment'
|
|||
|
|
import { initFilter,addRuleAndGroups } from '../../../utils/common'
|
|||
|
|
// 样式
|
|||
|
|
import config from "../../../config"
|
|||
|
|
|
|||
|
|
const { Option } = Select
|
|||
|
|
|
|||
|
|
class EmImportHistDataPage extends React.Component {
|
|||
|
|
constructor(props) {
|
|||
|
|
super(props)
|
|||
|
|
this.state = {
|
|||
|
|
importUrl: '',
|
|||
|
|
head: [],
|
|||
|
|
dataSource: [],
|
|||
|
|
data: [],
|
|||
|
|
selectedRowKeys: [],
|
|||
|
|
messages: "",
|
|||
|
|
energyType: "Electric",
|
|||
|
|
appName: "",
|
|||
|
|
nodeName: "",
|
|||
|
|
appGrade: "",
|
|||
|
|
dateYear: moment().format('YYYY'),
|
|||
|
|
option: []
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
componentDidMount() {
|
|||
|
|
this.getConsumData()
|
|||
|
|
this.getTpye()
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
getTpye = () => {
|
|||
|
|
const { login, dispatch } = this.props
|
|||
|
|
const json = initFilter(login.OrgId)
|
|||
|
|
dispatch({
|
|||
|
|
type: 'app/getDataByPost',
|
|||
|
|
url: 'KR/Statistics/GetEnergyType',
|
|||
|
|
payload: json,
|
|||
|
|
onlyData: false,
|
|||
|
|
onComplete: (res) => {
|
|||
|
|
if (res && res.IsSuccessful && res.Data && res.Data) {
|
|||
|
|
this.setState({ option: res.Data.option })
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
fillImportData = (ret) => {
|
|||
|
|
if (!ret) {
|
|||
|
|
this.setState({
|
|||
|
|
data: [],
|
|||
|
|
selectedRowKeys: [],
|
|||
|
|
messages: '',
|
|||
|
|
})
|
|||
|
|
return
|
|||
|
|
}
|
|||
|
|
if (ret.ErrorMessage) {
|
|||
|
|
this.setState({
|
|||
|
|
messages: ('错误:' + ret.ErrorMessage)
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
let messages = ''
|
|||
|
|
if (ret.Data && ret.Data.MessageList && ret.Data.MessageList.length) {
|
|||
|
|
var tmps = []
|
|||
|
|
ret.Data.MessageList.forEach((n, i) => {
|
|||
|
|
tmps.push(n)
|
|||
|
|
})
|
|||
|
|
messages = tmps.join('\n')
|
|||
|
|
}
|
|||
|
|
const selectedRowKeys = []
|
|||
|
|
if (ret.Data && ret.Data.Data) {
|
|||
|
|
ret.Data.Data.forEach((n, i) => {
|
|||
|
|
selectedRowKeys.push(n.ID)
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
this.setState({
|
|||
|
|
data: (ret.Data && ret.Data.Data ? ret.Data.Data : []),
|
|||
|
|
selectedRowKeys,
|
|||
|
|
messages
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
getDataUpdate = (update) => {
|
|||
|
|
if (update) {
|
|||
|
|
this.setState({ importUrl: 'api/PF/Import/ImportHistData' })
|
|||
|
|
} else {
|
|||
|
|
this.setState({ importUrl: 'api/PF/Import/ImportHistData' })
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
changeType = (value) => {
|
|||
|
|
this.setState({
|
|||
|
|
energyType: value
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
changeGrade = (value) => {
|
|||
|
|
this.setState({
|
|||
|
|
appGrade: value
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
onChangeApp = (value) => {
|
|||
|
|
this.setState({
|
|||
|
|
appName: value
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
onChangeNode = (value) => {
|
|||
|
|
this.setState({
|
|||
|
|
nodeName: value
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
handleSearch = (value) => {
|
|||
|
|
this.getConsumData(value)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
dateYearChange = (dateYear, str) => {
|
|||
|
|
this.setState({ dateYear: moment(dateYear).format('YYYY') })
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
getConsumData = (value) => {
|
|||
|
|
const json = {
|
|||
|
|
OrgId: this.props.login.OrgId,
|
|||
|
|
Parameter1: this.state.energyType,
|
|||
|
|
Parameter3: this.state.dateYear,
|
|||
|
|
Parameter4: this.state.appName,
|
|||
|
|
Parameter5: this.state.nodeName,
|
|||
|
|
Parameter6: this.state.appGrade,
|
|||
|
|
}
|
|||
|
|
addRuleAndGroups(json, value)
|
|||
|
|
this.props.dispatch({
|
|||
|
|
type: 'app/getDataByPost',
|
|||
|
|
url: 'EM/Monitoring/GetHistDosagesMonthData',
|
|||
|
|
payload: json,
|
|||
|
|
onlyData: false,
|
|||
|
|
onComplete: (res) => {
|
|||
|
|
if (res && res.IsSuccessful && res.Data && res.Data.tableHead && res.Data.tableData) {
|
|||
|
|
const { tableHead, tableData } = res.Data
|
|||
|
|
this.setState({
|
|||
|
|
head: tableHead,
|
|||
|
|
dataSource: tableData
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
render() {
|
|||
|
|
let url = this.state.importUrl
|
|||
|
|
const { head, dataSource ,option} = this.state
|
|||
|
|
const that = this
|
|||
|
|
const uploadProps = {
|
|||
|
|
showUploadList: false,
|
|||
|
|
name: 'file',
|
|||
|
|
action: config.serviceHost(url),
|
|||
|
|
data: { OrgId: that.props.login.OrgId, ImportConfigCode: 'configCode' },
|
|||
|
|
fileList: that.state.updateLoadFileList,
|
|||
|
|
accept: '.xls,.xlsx',
|
|||
|
|
onChange(info) {
|
|||
|
|
that.setState({
|
|||
|
|
updateLoadFileList: info.fileList,
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
if (info.file.status === 'done') {
|
|||
|
|
if (info.file.response.IsSuccessful) {
|
|||
|
|
that.setState({
|
|||
|
|
head: info.file.response.Data.Head,
|
|||
|
|
dataSource: info.file.response.Data.DataSource
|
|||
|
|
})
|
|||
|
|
if (url === 'api/PF/Import/ImportHistData') {
|
|||
|
|
message.info(`${info.file.name} 导入并保存成功`)
|
|||
|
|
}
|
|||
|
|
that.fillImportData(info.file.response)
|
|||
|
|
} else {
|
|||
|
|
message.error(`Excel单元格式不正确,无法识别! `)
|
|||
|
|
}
|
|||
|
|
} else if (info.file.status === 'error') {
|
|||
|
|
if (info.file.response && info.file.response.ErrorMessage) {
|
|||
|
|
message.error(`${info.file.name} 导入错误,详情:${info.file.response.ErrorMessage}`)
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
message.error(`${info.file.name} 导入错误`)
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
}
|
|||
|
|
const columns = []
|
|||
|
|
head.forEach((n, i) => {
|
|||
|
|
var item = {
|
|||
|
|
title: n.Title, dataIndex: n.DataIndex
|
|||
|
|
}
|
|||
|
|
columns.push(item)
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
const paginationConfig = {
|
|||
|
|
pageSizeOptions: ['10', '20'],
|
|||
|
|
pageSize: 10,
|
|||
|
|
total: this.state.dataSource.length,
|
|||
|
|
showSizeChanger: true,
|
|||
|
|
size: 'small',
|
|||
|
|
showTotal: () => `共 ${this.state.dataSource.length} 条`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return (
|
|||
|
|
<>
|
|||
|
|
<LayoutCard style={{ marginBottom: '0.15rem' }}>
|
|||
|
|
<div className='advanced-search__form'>
|
|||
|
|
<Form>
|
|||
|
|
<Form.Item label="查询年份">
|
|||
|
|
<DatePicker
|
|||
|
|
allowClear={false}
|
|||
|
|
mode='year'
|
|||
|
|
format='YYYY'
|
|||
|
|
value={moment(this.state.dateYear, 'YYYY')}
|
|||
|
|
onPanelChange={this.dateYearChange}
|
|||
|
|
style={{ width: '100%' }}
|
|||
|
|
/>
|
|||
|
|
</Form.Item>
|
|||
|
|
<Form.Item label='器具名称'>
|
|||
|
|
<Input placeholder="" value={this.state.appName} style={{ width: '100%' }} onChange={(evt) => this.onChangeApp(evt.target.value)} />
|
|||
|
|
</Form.Item>
|
|||
|
|
<Form.Item label='节点名称'>
|
|||
|
|
<Input placeholder="" value={this.state.nodeName} style={{ width: '100%' }} onChange={(evt) => this.onChangeNode(evt.target.value)} />
|
|||
|
|
</Form.Item>
|
|||
|
|
<Form.Item label='器具等级'>
|
|||
|
|
<Select style={{ width: '100%' }} onChange={this.changeGrade} allowClear={true}>
|
|||
|
|
<Option value={0}>一级</Option>
|
|||
|
|
<Option value={1}>二级</Option>
|
|||
|
|
<Option value={2}>三级</Option>
|
|||
|
|
</Select>
|
|||
|
|
</Form.Item>
|
|||
|
|
<Form.Item label='矿山安全类型'>
|
|||
|
|
<Select style={{ width: '100%' }} defaultValue="电" onChange={this.changeType}>
|
|||
|
|
{option.map(item => <Option key={item.ID} value={item.CODE}>{item.NAME}</Option>)}
|
|||
|
|
</Select>
|
|||
|
|
</Form.Item>
|
|||
|
|
<div className='advanced-search__btns-zone'>
|
|||
|
|
<Button type='primary' onClick={this.handleSearch}>查询</Button>
|
|||
|
|
<div className='advanced-search__tool-wrap'>
|
|||
|
|
<div className='advanced-search__children'>
|
|||
|
|
<Upload {...uploadProps}>
|
|||
|
|
<Button type='primary' onClick={() => this.getDataUpdate(true)}> <Icon type="upload" /> 导入</Button>
|
|||
|
|
</Upload>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</Form>
|
|||
|
|
</div>
|
|||
|
|
</LayoutCard>
|
|||
|
|
<LayoutCard style={{ textAlign: 'right' }}>
|
|||
|
|
<ExportToExcel
|
|||
|
|
fileName={'导入历史数据#' + this.state.dateYear}
|
|||
|
|
insertRows={['导入历史数据#' + this.state.dateYear]}
|
|||
|
|
columns={columns}
|
|||
|
|
dataSource={dataSource}
|
|||
|
|
/>
|
|||
|
|
<Table
|
|||
|
|
id='ImportHistDataTable'
|
|||
|
|
size='small'
|
|||
|
|
style={{ marginTop: 8 }}
|
|||
|
|
bordered
|
|||
|
|
columns={columns}
|
|||
|
|
dataSource={dataSource}
|
|||
|
|
scroll={{ x: '100%' }}
|
|||
|
|
pagination={paginationConfig}
|
|||
|
|
/>
|
|||
|
|
</LayoutCard>
|
|||
|
|
</>
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
EmImportHistDataPage.propTypes = {
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export default connect(({ login, app }) => ({ login, app }))(Form.create()(EmImportHistDataPage))
|