1. /**
  2. * Created by Admin on 2016/9/19.
  3. * 批量导入
  4. */
  5. import React, {Component, PropTypes} from "react";
  6. import {Link} from "react-router";
  7. import {Upload, Icon, Select, Row, Col, Button, notification, Card, Cascader} from "antd";
  8. import CustomBreadcrumb from "../CustomBreadcrumb";
  9. import Utils from "../../common/Utils";
  10. import moment from "moment";
  11.  
  12. export default class ExportData extends Component {
  13.  
  14. state = {
  15. inputValue: '',
  16. // templateUrl: '/assets/templatefile/行政处罚模板.xlsx',
  17. options: [{
  18. value: 'TI_B_XZXK_REPORTING',
  19. label: '行政许可',
  20. isLeaf: false,
  21. }, {
  22. value: 'TI_B_XZCF_REPORTING',
  23. label: '行政处罚',
  24. isLeaf: false,
  25. }],
  26. };
  27.  
  28. fetchSelectData = (tableName) => {
  29. // debugger;
  30. this.setState({loading: true});
  31. const query = {
  32. tableName: tableName
  33. };
  34. this.props.exportDataService.findList(query)
  35. .then(arr => {
  36. const options = this.state.options.map(item => {
  37. if (item.value === tableName) {
  38. item.children = arr.map(value => ({value: value, label: value, isLeaf: true}));
  39. }
  40. return item;
  41. });
  42. this.setState({options: options});
  43. });
  44. // .catch(e => this.setState({loading: false}));
  45. // Utils.pushLink(this.props.location.pathname, query);
  46. };
  47.  
  48. onChange = (values, selectedOptions) => {
  49. console.log(values, selectedOptions);
  50.  
  51. this.setState({
  52. inputValue: selectedOptions.map(o => o.label).join(', '),
  53. });
  54. };
  55.  
  56. loadData = (selectedOptions) => {
  57. console.log('loadData', selectedOptions);
  58.  
  59. const obj = selectedOptions[0];
  60. if (obj && !obj.isLeaf) {
  61. this.fetchSelectData(obj.value);
  62. }
  63. // const targetOption = selectedOptions[selectedOptions.length - 1];
  64. // targetOption.loading = true;
  65. //
  66. // // load options lazily
  67. // setTimeout(() => {
  68. // targetOption.loading = false;
  69. // targetOption.children = [{
  70. // label: `${targetOption.label} Dynamic 1`,
  71. // value: 'dynamic1',
  72. // }, {
  73. // label: `${targetOption.label} Dynamic 2`,
  74. // value: 'dynamic2',
  75. // }];
  76. // this.setState({
  77. // options: [...this.state.options],
  78. // });
  79. // }, 1000);
  80. };
  81.  
  82. render() {
  83. const breadcrumbItems = [{
  84. name: '在线填报'
  85. }, {
  86. link: '/reporting/data',
  87. name: '数据维护'
  88. }, {
  89. name: '导出错误数据'
  90. }];
  91. console.log(this.state);
  92.  
  93. let downloadElement ='';
  94. //需要注意这里的取值条件可能有不满足的情况
  95. if(this.state.inputValue && this.state.inputValue.length>6){
  96. const myTime = this.state.inputValue.substring(5);
  97. downloadElement = myTime
  98. ? <a href={`/inapi/reportingXzcf/export?time=${myTime}`}><Button type="primary" size="large">导出错误数据</Button></a>
  99. : '';
  100. }
  101.  
  102. return (
  103. <div>
  104. <CustomBreadcrumb global={this.props.global}
  105. globalService={this.props.globalService}
  106. location={this.props.location}
  107. items={breadcrumbItems}/>
  108. <div className="block-box">
  109. <div className="block-box-body clearfix">
  110.  
  111. <Row gutter={24} style={{marginBottom: "40px", marginLeft: "20px"}}>
  112. <Col className="gutter-row" span={12}>
  113. <div className="ant-row" style={{marginBottom: "40px"}}>
  114. <div className="ant-col-5 ant-form-item-label">
  115. <label htmlFor="CF_WSH" className="ant-form-item-required">请选择</label>
  116. </div>
  117. <Cascader
  118. style={{width: '250px'}}
  119. options={this.state.options}
  120. loadData={this.loadData}
  121. onChange={this.onChange}
  122. changeOnSelect
  123. />
  124. </div>
  125. </Col>
  126.  
  127. <Col className="gutter-row" span={5}>
  128. {downloadElement}
  129. </Col>
  130. </Row>
  131. </div>
  132. </div>
  133. </div>
  134. );
  135. }
  136.  
  137. }

效果图展示:

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. 算法设计与分析 - 李春葆 - 第二版 - pdf->word v3

    1.1 第1章─概论 练习题 . 下列关于算法的说法中正确的有( ). Ⅰ.求解某一类问题的算法是唯一的 Ⅱ.算法必须在有限步操作之后停止 Ⅲ.算法的每一步操作必须是明确的,不能有歧义或含义模糊 Ⅳ. ...

  2. python 杂记 网络

    参考资料:https://www.cnblogs.com/gareth-yu/p/9097943.htmlimport selectors import socket sel = selectors. ...

  3. 基于 C++ 的脚本语言 cpps 脚本

    cpps 脚本是一个基于 C++ 的脚本语言. 基础语法: if&else 接口说明 根据括号中数据判断执行相关代码. 代码演示 var i = toint(io.getc()); if(i  ...

  4. Oracle 中文转字母 函数

    CREATE OR REPLACE FUNCTION F_TRANS_PINYIN_CAPITAL(P_NAME IN VARCHAR2) RETURN VARCHAR2 AS V_COMPARE V ...

  5. ELK---- Elasticsearch 安装 学习

    elk  = 分布式系统收集管理多台服务器日志,并能快速做增删改查操作的几个工具集合简称. elasticsearch(存储日志)+logstash(收集日志)+kibana(展示数据) 在linux ...

  6. 洛谷P1903 [国家集训队]数颜色 / 维护队列 ( 带 修 )

    题意:有两种操作: 1. Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜色的画笔. 2. R P Col 把第P支画笔替换为颜色Col. 对每个1操作 输出答案: 带修莫队 模板题 (加 ...

  7. Bzoj 3631: [JLOI2014]松鼠的新家(树链剖分+线段树)

    3631: [JLOI2014]松鼠的新家 Time Limit: 10 Sec Memory Limit: 128 MB Description 松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个 ...

  8. CONTINUE...? ZOJ - 4033

    CONTINUE...? ZOJ - 4033 题解:先计算一下总数sum是否是偶数,如果不是则不能分出来,如果是则从后面开始分,先把人分到1.3组,分完sum / 2这些人,如果恰好能够分成零,那么 ...

  9. shell uniq 统计,计数

    uniq选项与参数-i:忽略大小写-c:进行计数[zhang@localhost ~]$ cat 2.txt helloHelloWOrldabcabcABChello1 对2.txt进行sort后, ...

  10. java试题复盘——11月25日

    上: 11.下列表述错误的是?(D) A.int是基本类型,直接存数值,Integer是对象,用一个引用指向这个对象. B.在子类构造方法中使用super()显示调用父类的构造方法,super()必须 ...