/**
* Created by Admin on 2016/9/19.
* 批量导入
*/
import React, {Component, PropTypes} from "react";
import {Link} from "react-router";
import {Upload, Icon, Select, Row, Col, Button, notification, Card, Cascader} from "antd";
import CustomBreadcrumb from "../CustomBreadcrumb";
import Utils from "../../common/Utils";
import moment from "moment"; export default class ExportData extends Component { state = {
inputValue: '',
// templateUrl: '/assets/templatefile/行政处罚模板.xlsx',
options: [{
value: 'TI_B_XZXK_REPORTING',
label: '行政许可',
isLeaf: false,
}, {
value: 'TI_B_XZCF_REPORTING',
label: '行政处罚',
isLeaf: false,
}],
}; fetchSelectData = (tableName) => {
// debugger;
this.setState({loading: true});
const query = {
tableName: tableName
};
this.props.exportDataService.findList(query)
.then(arr => {
const options = this.state.options.map(item => {
if (item.value === tableName) {
item.children = arr.map(value => ({value: value, label: value, isLeaf: true}));
}
return item;
});
this.setState({options: options});
});
// .catch(e => this.setState({loading: false}));
// Utils.pushLink(this.props.location.pathname, query);
}; onChange = (values, selectedOptions) => {
console.log(values, selectedOptions); this.setState({
inputValue: selectedOptions.map(o => o.label).join(', '),
});
}; loadData = (selectedOptions) => {
console.log('loadData', selectedOptions); const obj = selectedOptions[0];
if (obj && !obj.isLeaf) {
this.fetchSelectData(obj.value);
}
// const targetOption = selectedOptions[selectedOptions.length - 1];
// targetOption.loading = true;
//
// // load options lazily
// setTimeout(() => {
// targetOption.loading = false;
// targetOption.children = [{
// label: `${targetOption.label} Dynamic 1`,
// value: 'dynamic1',
// }, {
// label: `${targetOption.label} Dynamic 2`,
// value: 'dynamic2',
// }];
// this.setState({
// options: [...this.state.options],
// });
// }, 1000);
}; render() {
const breadcrumbItems = [{
name: '在线填报'
}, {
link: '/reporting/data',
name: '数据维护'
}, {
name: '导出错误数据'
}];
console.log(this.state); let downloadElement ='';
//需要注意这里的取值条件可能有不满足的情况
if(this.state.inputValue && this.state.inputValue.length>6){
const myTime = this.state.inputValue.substring(5);
downloadElement = myTime
? <a href={`/inapi/reportingXzcf/export?time=${myTime}`}><Button type="primary" size="large">导出错误数据</Button></a>
: '';
} return (
<div>
<CustomBreadcrumb global={this.props.global}
globalService={this.props.globalService}
location={this.props.location}
items={breadcrumbItems}/>
<div className="block-box">
<div className="block-box-body clearfix"> <Row gutter={24} style={{marginBottom: "40px", marginLeft: "20px"}}>
<Col className="gutter-row" span={12}>
<div className="ant-row" style={{marginBottom: "40px"}}>
<div className="ant-col-5 ant-form-item-label">
<label htmlFor="CF_WSH" className="ant-form-item-required">请选择</label>
</div>
<Cascader
style={{width: '250px'}}
options={this.state.options}
loadData={this.loadData}
onChange={this.onChange}
changeOnSelect
/>
</div>
</Col> <Col className="gutter-row" span={5}>
{downloadElement}
</Col>
</Row>
</div>
</div>
</div>
);
} }

效果图展示:

antd二级联动异步加载的更多相关文章

  1. Android批量图片加载经典系列——采用二级缓存、异步加载网络图片

    一.问题描述 Android应用中经常涉及从网络中加载大量图片,为提升加载速度和效率,减少网络流量都会采用二级缓存和异步加载机制,所谓二级缓存就是通过先从内存中获取.再从文件中获取,最后才会访问网络. ...

  2. winform TreeView的一些用法以及异步加载

    今天,主要弄了一下对于树型控件的一些方法,以及异步加载.参考: http://www.cnblogs.com/greatverve/archive/2012/03/23/winform-treevie ...

  3. android listview 异步加载图片并防止错位

    网上找了一张图, listview 异步加载图片之所以错位的根本原因是重用了 convertView 且有异步操作. 如果不重用 convertView 不会出现错位现象, 重用 convertVie ...

  4. Android ListView 图片异步加载和图片内存缓存

    开发Android应用经常需要处理图片的加载问题.因为图片一般都是存放在服务器端,需要联网去加载,而这又是一个比较耗时的过程,所以Android中都是通过开启一个异步线程去加载.为了增加用户体验,给用 ...

  5. Listview异步加载之优化篇

    异步加载图片基本思想: 1.      先从内存缓存中获取图片显示(内存缓冲) 2.      获取不到的话从SD卡里获取(SD卡缓冲) 3.      都获取不到的话从网络下载图片并保存到SD卡同时 ...

  6. zTree 异步加载

    zTree异步加载数据的简单实现,更为详细的Api请参考 zTree官网   http://www.treejs.cn/ <link href="~/Content/ztree/css ...

  7. Listview 异步加载图片之优化篇(有图有码有解释)

    在APP应用中,listview的异步加载图片方式能够带来很好的用户体验,同时也是考量程序性能的一个重要指标.关于listview的异步加载,网上其实很多示例了,中心思想都差不多,不过很多版本或是有b ...

  8. 转:web前端面试题合集 (Javascript相关)(js异步加载详解)

    1. HTTP协议的状态消息都有哪些? 1**:请求收到,继续处理2**:操作成功收到,分析.接受3**:完成此请求必须进一步处理4**:请求包含一个错误语法或不能完成5**:服务器执行一个完全有效请 ...

  9. 【jar包】图片的异步加载--【 Imageloader】

    Android Imageloader图片异步加载 Imageloader是一个在android平台下简单的下载.显示.缓存空间的图片加载库. 异步下载网络图片并可以在UI线程更新View,使用二级缓 ...

随机推荐

  1. 【ZZNU-oj-2116:人间不值得】(1亿以内的货币拼音转数值求折扣价原价)--hash+String大法好+字符串处理+超大暴力模拟题

    B : 人间不值得 概览问题列表状态排名编辑 Progress Bar 时间限制:1 Sec 内存限制:256 MiB提交:146 答案正确:12 提交 编辑 题目描述 家缠万贯来几时,我今停杯一问之 ...

  2. Cairo初探

    https://blog.csdn.net/flexwang_/article/details/38000401 二维解析pdf

  3. Hibernate初探之单表映射——创建对象-关系映射文件

    编写一个Hibernate例子 第三步:创建对象-关系映射文件 以下是具体实现步骤: 找到我们要持久化的学生类Sudents 生成对象-关系映射文档Students.hbm.xml: <?xml ...

  4. delphi TAdoQuery组件的close方法可能导致”列名无效“错误

    1,故障现象 一次程序运行,出现如下错误: 对应代码如下: 2,故障分析 Query_alert_2的语句在查询分析器中单独执行是正常的.排除语句出错. 如果注解掉Query_alert_1,则错误变 ...

  5. npm install命令

    1. --save-prod/-P 使用该命令后,会在package.json的dependencies中出现,是生产环境依赖: 该命令是默认命令. npm install react // 等同于 ...

  6. 04_实时监控本机内存和硬盘剩余空间,剩余内存小于 500M、根分区剩余空间小于 1000M 时,发送报警邮件给root 管理员.

    #!/bin/bash#提取根分区剩余空间disk_size=$(df -h / | awk '/\//{print $4}')#提取内存剩余空间disk_size=$(df -h / | awk ' ...

  7. learning armbian steps(4) ----- armbian 技术内幕

    在学习新的框架之前,肯定有一个原型机,通过最普通的指令来实现其功能. 做到这一点之后,所有的东西都不在是秘密,缺的时间进行系统深入的学习. 其实可以自已先来手动构建一个原生的arm 文件系统,基于qe ...

  8. mac brew 使用教程

    brew services list                  #查看系统通过 brew 安装的服务 brew services cleanup               #清除已卸载无用的 ...

  9. mysql 进程

    --------------------查看mysql所有进程-----------show full processlist -------------------查看mysql 账号权限----- ...

  10. Contest Hunter 3101

    题目 Contest Hunter 3101 阶乘分解 原题传送门 题目分析 这里介绍一个本蒟蒻自己\(yy\)出来的方法. 我们发现,对于某一个单个的整数\(n\),若\(n\)能被某一个数\(x\ ...