1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
| import React, { PureComponent, PropTypes } from "react"; import { Select, AutoComplete, Input } from "antd"; import { getRecomendContentsByType } from "../../../../api/content"; const Option = Select.Option; const contentTypes = [ { name: "文章", code: "2", placeholder: "请输入文章id/标题搜索" }, { name: "产品", code: "4", placeholder: "请输入包装产品id/主标题搜索" }, { name: "专辑", code: "5", placeholder: "请输入专辑id/名称搜索" }, { name: "指定url", code: "6" }, ]; class RecomendSearch extends PureComponent { static propTypes = { onChange: PropTypes.func.isRequired, params: PropTypes.object.isRequired, callback:PropTypes.func.isRequired, }; state = { contents: [], selectKey: "2", };
componentWillReceiveProps(nextProps) {}
componentDidMount() { const { params } = this.props; if (!params.id) { this.onTypeChange("2"); } } onTypeChange = (_value) => { const { onChange, value } = this.props; let res = [ { id: 1, name: "wxxzdd sasaa", }, { id: 2, name: "哈哈哈电放费", }, { id: 2, name: "颠三倒四多所多", }, ]; res = res && res.map((item) => `${item.id},${item.name}`); this.setState({ contents: res, }); onChange({ recommendType: _value, value: _value === "6" ? "" : value && value.value, }); }; onInputChange = (e) => { console.log("e.target.value", e); const { onChange } = this.props; onChange({ recommendType: "6", value: e.target.value, }); }; onAutoCompeleteChange = (_value) => { const { onChange, value } = this.props; onChange({ value: _value, recommendType: value && value.recommendType, }); }; render() { const { contents } = this.state; const { value, params ,callback} = this.props; return ( <div style={{ display: "flex" }}> <Select style={{ width: "60%", marginRight: 18 }} onChange={this.onTypeChange} value={(value && value.recommendType) || "2"}> {contentTypes.map((item) => ( <Option value={item.code} key={item.code}> {item.name} </Option> ))} </Select> <Choose> <When condition={(value && value.recommendType) === "6"}> <Input placeholder={"请输入指定url"} onChange={this.onInputChange} value={value && value.value} /> </When> <Otherwise> <AutoComplete placeholder={ contentTypes.find( (item) => item.code === (value && value.recommendType) ).placeholder } dataSource={contents} filterOption={(inputValue, option) => option.props.children .toUpperCase() .includes(inputValue.toUpperCase()) } onChange={this.onAutoCompeleteChange} onSelect={callback} value={value && value.value} /> </Otherwise> </Choose> </div> ); } }
export default RecomendSearch;
|