提交 ae986cc0 authored 作者: 钟是志's avatar 钟是志

19571 学籍管理-学生管理-自定义统计,统计导出问题

上级 34fcd152
/**
* 钟是志
* 2021年5月25日 10:56:50
* 学工 学生管理 自定义统计 功能 通用版
*
* */
import React, { Fragment } from 'react';
import { Select, Button, Divider, Table, Row, Col, Tag, Alert, Form, message } from 'antd';
import { connect } from 'dva';
......@@ -27,6 +33,14 @@ const nameSpan3 = {
};
var keyX = 1;
function getLableNameByValue(
options = [],
searchKey = ''){
const findItem = options.find((x) => {
return x.field === searchKey;
});
return findItem.name;
}
const FormItem = Form.Item;
@connect(({ cms, ExportFile, loading }) => ({
......@@ -306,6 +320,7 @@ export default class StatisticsInfo extends React.Component {
finish = () => {
const { dispatch, beanName, daoClass } = this.props;
const { x, y, z, infos, XxX, currentKey, groups } = this.state;
if (x == null) {
message.info('请选择横轴');
return;
......@@ -330,8 +345,6 @@ export default class StatisticsInfo extends React.Component {
x: fieldsValue[key].stringX,
v: fieldsValue[key].string,
});
}
if (groups.length === 0) {
......@@ -349,7 +362,7 @@ export default class StatisticsInfo extends React.Component {
var tty;
var ttz;
if (tx.notes) {
if (tx.notes.indexOf('com.') == -1) {
if (tx.notes.indexOf('com.') === -1) {
ttx = infos[x].hql.replace('.id', '.dictName');
} else {
ttx = infos[x].hql;
......@@ -358,7 +371,7 @@ export default class StatisticsInfo extends React.Component {
ttx = infos[x].hql;
}
if (ty.notes) {
if (ty.notes.indexOf('com.') == -1) {
if (ty.notes.indexOf('com.') === -1) {
tty = infos[y].hql.replace('.id', '.dictName');
} else {
tty = infos[y].hql;
......@@ -369,7 +382,7 @@ export default class StatisticsInfo extends React.Component {
if (z != null) {
const tz = infos[z];
if (tz && tz.notes) {
if (tz.notes.indexOf('com.') == -1) {
if (tz.notes.indexOf('com.') === -1) {
ttz = infos[z].hql.replace('.id', '.dictName');
} else {
ttz = infos[z].hql;
......@@ -447,9 +460,10 @@ export default class StatisticsInfo extends React.Component {
}
export = () => {
const { dispatch, beanName, daoClass } = this.props;
const { x, y, z, infos, XxX, currentKey, groups } = this.state;
const { beanName, daoClass } = this.props;
const { x, y, z, infos, XxX, currentKey, groups, qs } = this.state;
console.log(this.state, '----state---');
console.log(this.props, '----props---');
if (x == null) {
message.info('请选择第一统计项');
return;
......@@ -493,7 +507,7 @@ export default class StatisticsInfo extends React.Component {
var tty;
var ttz;
if (tx.notes) {
if (tx.notes.indexOf('com.') == -1) {
if (tx.notes.indexOf('com.') === -1) {
ttx = infos[x].hql.replace('.id', '.dictName');
} else {
ttx = infos[x].hql;
......@@ -502,7 +516,7 @@ export default class StatisticsInfo extends React.Component {
ttx = infos[x].hql;
}
if (ty.notes) {
if (ty.notes.indexOf('com.') == -1) {
if (ty.notes.indexOf('com.') === -1) {
tty = infos[y].hql.replace('.id', '.dictName');
} else {
tty = infos[y].hql;
......@@ -513,7 +527,7 @@ export default class StatisticsInfo extends React.Component {
if (z != null) {
const tz = infos[z];
if (tz && tz.notes) {
if (tz.notes.indexOf('com.') == -1) {
if (tz.notes.indexOf('com.') === -1) {
ttz = infos[z].hql.replace('.id', '.dictName');
} else {
ttz = infos[z].hql;
......@@ -526,6 +540,9 @@ export default class StatisticsInfo extends React.Component {
x: ttx,
y: tty,
z: ttz,
xname: getLableNameByValue(qs, x),
yname: getLableNameByValue(qs, y),
zname: getLableNameByValue(qs, z),
beanName,
daoClass,
xXx: XxX,
......@@ -533,7 +550,6 @@ export default class StatisticsInfo extends React.Component {
hql: currentKey && infos[currentKey] ? infos[currentKey].hql : null,
querys: JSON.stringify(qqs),
groups: JSON.stringify(ggs),
};
let downloadUrl = config.httpServer + '/CmsApi/exportStatistics?';
const token = getToken() != null && getToken() != 'null' ? getToken() : '0000';
......@@ -807,6 +823,8 @@ export default class StatisticsInfo extends React.Component {
>
<Select style={{ width: '100%' }}
onChange={selectConfigItem.onChange}
showSearch={true}
optionFilterProp={'children'}
value={selectConfigItem.value}>
{selectConfigItem.options.map((r) => {
return <Option key={r[selectConfigItem.optionKey]}
......@@ -853,7 +871,6 @@ export default class StatisticsInfo extends React.Component {
render() {
const { form, loading, isShow } = this.props;
const {
querys, groups, currentKey, exportLoading,
infos, columns, dataSource, x, y, z,
......@@ -877,25 +894,13 @@ export default class StatisticsInfo extends React.Component {
columnsTemp[0].width = 200;
}
}
let xxxs = [];
if (currentKey != null) {
if (infos[currentKey].type === 'java.lang.Integer' ||
infos[currentKey].type === 'java.lang.Double' ||
infos[currentKey].type === 'java.lang.Long') {
xxxs = [{ label: '数量', value: 'count' }, { label: '最大值', value: 'max' }, {
label: '最小值',
value: 'min',
}, { label: '平均值', value: 'avg' }, { label: '求和', value: 'sum' }];
} else {
xxxs = [{ label: '数量', value: 'count' }];
}
}
if (!isShow) {
return <span><ButtonDiy name='自定义统计'
type='default'
className='defaultBlue'
handleClick={() => this.props.setShow(true)}/></span>;
}
return (
<div style={{
backgroundColor: '#fff',
......@@ -916,10 +921,7 @@ export default class StatisticsInfo extends React.Component {
type="warning"/>
<Row>
<Col span={24}>
{
showSearchItem ?
<Fragment>
<div style={{display: showSearchItem ? 'block' : 'none'}}>
{this.selectDom(0)}
{this.selectDom(1)}
{this.selectDom(2)}
......@@ -928,7 +930,7 @@ export default class StatisticsInfo extends React.Component {
<div style={{ textAlign: 'left', paddingLeft: '25px' }}>
{querys.map((r, i) =>
<FormItem key={r.field}
labelCol={{
labelCol={{ // 查询条件
xl: nameSpan3.small,
xxl: nameSpan3.big,
}}
......@@ -937,8 +939,10 @@ export default class StatisticsInfo extends React.Component {
xxl: 24 - nameSpan3.big,
}}
label={r.name}>
{form.getFieldDecorator(i + 'q__' + r.field, {
initialValue: { stringX: '=' }, rules: [{
{form.getFieldDecorator(i + 'q__' + r.field,
{
initialValue: { stringX: '=' },
rules: [{
validator: (rule, value, callback) => {
var errors = [];
if (value == null) {
......@@ -970,9 +974,8 @@ export default class StatisticsInfo extends React.Component {
</Tag>,
)}
</Row>
</Fragment>
: null
}
</div>
<Row style={{ paddingTop: '20px' }}>
<Col span={24} style={{ textAlign: 'left' }}>
<ButtonDiy handleClick={this.finish}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论