/**
* 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. mysql打开报错2013解决办法

    修改mysql配置文件 在[mysqld]下面设置skip-name-resolve 重启mysql from :https://www.jb51.net/article/52637.htm

  2. The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online - H Traveling on the Axis-【思维模拟题目】

    H Traveling on the Axis 作者: 浙江大学竞赛命题组 单位: ACMICPC 时间限制: 500 ms 内存限制: 64 MB 代码长度限制: 32 KB 传送门 BaoBao ...

  3. Codeforces Round #585 (Div. 2) A. Yellow Cards(数学)

    链接: https://codeforces.com/contest/1215/problem/A 题意: The final match of the Berland Football Cup ha ...

  4. Python操作MySQL数据库,插入重复数据

    sql = "INSERT  INTO test_c(id,name,sex)values(%s,%s,%s)" param = (1,'AJ','MAN') n = cursor ...

  5. rect dict tect 词根助记

    rect: r (跑)e(E 槽子)ct(不停的跑)  就是直的 dict:  d(椅子)i(人)C(开口说)t(T 桌子)  : 椅子前站人 开口说前面是桌子 tect: tt(TT像盖子)EC(E ...

  6. SPOJ GSS1 - Can you answer these queries I(线段树维护GSS)

    Can you answer these queries I SPOJ - GSS1 You are given a sequence A[1], A[2], -, A[N] . ( |A[i]| ≤ ...

  7. 「CF484E」Sign on Fence「整体二分」「线段树」

    题意 给定一个长度为\(n\)的正整数序列,第\(i\)个数为\(h_i\),\(m\)个询问,每次询问\((l, r, w)\),为\([l, r]\)所有长度为\(w\)的子区间最小值的最大值.( ...

  8. codeforces1213F tarjan缩点+拓扑排序

    题意 给定两个长度为n的排列p和q,构造一个字符串s满足\(s[p_i]<=s[p_{i+1}]\)和\(s[q_i]<=s[q_{i+1}]\),且满足字符串中不同字符的个数不少于k. ...

  9. MySQL数据分析(16)— 数据操作之增删改查

    前面我们说学习MySQL要从三个层面,四大逻辑来学,三个层面就是库层面,表层面和数据层面对吧,数据库里放数据表,表里放数据是吧,大家可以回忆PPT中jacky的这图,我们已经学完了库层面和表层面,从本 ...

  10. CF1200B

    CF1200B 解法: 贪心.当在第i列时,尽可能多的取走第i列的木块使得袋子里的木块尽可能多 CODE: #include<iostream> #include<cstdio> ...