QueryItem.js 8.2 KB
Newer Older
王绍森's avatar
王绍森 committed
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
import React from 'react'
import { Select,Input,InputNumber,Button,DatePicker } from 'antd';
import {date, text, number } from '../config/index';
import moment from 'moment';


const Option = Select.Option;


export default class QueryItem extends React.Component {
    constructor(props) {
        super(props);
        const value = props.value || {};
        this.state = {
            stringX:value.stringX,
            string:value.string,
            disabled:value.disabled||false
        };
    }

    componentWillReceiveProps(nextProps) {
        // Should be a controlled component.
        if ('value' in nextProps) {
            const value = nextProps.value;
            this.setState(value);
        }
    }

    triggerChange = (changedValue) => {
        // Should provide an event to pass value to Form.
        const onChange = this.props.onChange;
        if (onChange) {
            onChange(Object.assign({}, this.state, changedValue));
        }
    };

    changeNumber=(e)=>{

        if (!('value' in this.props)) {
            this.setState({ string:e});
        }
        this.triggerChange({ string:e});
    };
    changeStringX=(e)=>{
        var disabled = false

        if(e=="IS NOT NULL"||e=="IS NULL"){
            disabled=true;

        }
        if (!('value' in this.props)) {
            this.setState({ stringX:e ,disabled});
        }

        this.triggerChange({ stringX:e ,disabled});
    };
    changeString=(e)=>{

        if (!('value' in this.props)) {
            this.setState({ string:e.target.value });
        }
        this.triggerChange({ string:e.target.value });
    };
    changeDate=(date)=>{
        console.log(date)
        if (!('value' in this.props)) {
            this.setState({ string:date.format("YYYY-MM-DD HH:mm:ss")});
        }
        this.triggerChange({ string:date.format("YYYY-MM-DD HH:mm:ss") });
    };
    render() {
        const{obj} = this.props;
        const {string,stringX,disabled} =this.state;
        if(obj.options && obj.options.length>0){
           return(<div> <Select onChange={this.changeStringX}
                                value={stringX||"="}
                                style={{width:100}}>
78 79 80 81 82 83 84 85 86 87 88 89 90 91
                                <Option value="="
                                        key={'='}
                                >
                                  等于
                                </Option>
                                <Option value="<>" key={'<>'}>
                                  不等于
                                </Option>
                                <Option value="IS NOT NULL" key={'IS NOT NULL'}>
                                  不为空
                                </Option>
                                <Option value="IS NULL" key={'IS NULL'}>
                                  为空
                                </Option>
王绍森's avatar
王绍森 committed
92 93 94 95 96
            </Select>
           {disabled?"": <span style={{padding: '0px 10px'}}>
            <Select onChange={this.changeNumber}
                    value={string}
                    style={{width:200}}>
97 98 99
                {obj.options.map((r)=><Option key={r.v} value={r.v}>
                  {r.l}
                </Option>)}
王绍森's avatar
王绍森 committed
100 101 102 103 104 105 106 107 108 109 110 111 112

                </Select>
             </span>}
             <Button type="danger" onClick={this.props.deleteQuery}>删除</Button>

            </div>)
        }
        if(text.includes(obj.type)){
        return (
            <div>
            <Select onChange={this.changeStringX}
                    value={stringX||"="}
                    style={{width:100}}>
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
                <Option value="=" key={'='}>
                  等于
                </Option>
                <Option value="!=" key={'!='}>
                  不等于
                </Option>
                <Option value="like" key={'like'}>
                  
                </Option>
                <Option value="IS NOT NULL" key={'IS NOT NULL'}>
                  不为空
                </Option>
                <Option value="IS NULL" key={''}>
                  为空
                </Option>
王绍森's avatar
王绍森 committed
128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
            </Select>
            {disabled?"": <span style={{padding: '0px 10px'}}>
                <Input onChange={this.changeString}
                       placeholder="请输入"
                       value={string}
                       style={{width:200,}}
            />
              </span>}
              <Button type="danger" onClick={this.props.deleteQuery}>删除</Button>

                 </div>)

         }else if(number.includes(obj.type)){
            return ( <div> <Select onChange={this.changeStringX}
                                   value={stringX||"="}
                                   style={{width:100}}>
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167
            <Option value="=" key={'='}>
              等于
            </Option>
            <Option value="<>" key={'<>'}>
              不等于
            </Option>
            <Option value=">" key={'>'}>
              大于
            </Option>
            <Option value=">=" key={'>='}>
              大于等于
            </Option>
            <Option value="<" key={'<'}>
              小于
            </Option>
            <Option value="<=" key={'<='}>
              小于等于
            </Option>
            <Option value="IS NOT NULL" key={'IS NOT NULL'}>
              不为空
            </Option>
            <Option value="IS NULL" key={'IS NULL'}>
              为空
            </Option>
王绍森's avatar
王绍森 committed
168 169 170 171 172 173 174 175 176 177 178 179 180 181 182
            </Select>
            {disabled?"": <span style={{padding: '0px 10px'}}>
            <InputNumber onChange={this.changeNumber}
                         placeholder="请输入"
                         value={string}
                         style={{width:200}}
            />
              </span>}
              <Button type="danger" onClick={this.props.deleteQuery}>删除</Button>
            </div>)
         }else if(obj.type === "BIT"){
            return ( <div>
              <Select onChange={this.changeStringX}
                     value={stringX||"="}
                      style={{width:100}}>
183
                <Option value="=" key={'='}>
王绍森's avatar
王绍森 committed
184 185 186 187 188 189 190 191
                  等于
                </Option>
                </Select>
                {disabled?"":  <span style={{padding: '0px 10px'}}>
                <Select onChange={this.changeNumber}
                        value={string}
                        style={{width:200}}
                >
192
                <Option value={true} key={'true'}>
王绍森's avatar
王绍森 committed
193 194
                  
                </Option>
195
                <Option value={false} key={'false'}>
王绍森's avatar
王绍森 committed
196 197 198 199 200 201 202 203 204 205 206
                  
                </Option>
                </Select>
              </span>}
              <Button type="danger" onClick={this.props.deleteQuery}>删除</Button>
            </div>)
        }else if(date.includes(obj.type)){
            return(<div>
              <Select onChange={this.changeStringX}
                      value={stringX||"="}
                      style={{width:100}}>
207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230
                <Option value="=" key={'='}>
                  等于
                </Option>
                <Option value="<>" key={'<>'}>
                  不等于
                </Option>
                <Option value=">" key={'>'}>
                  大于
                </Option>
                <Option value=">=" key={'>='}>
                  大于等于
                </Option>
                <Option value="<" key={'<'}>
                  小于
                </Option>
                <Option value="<=" key={'<='}>
                  小于等于
                </Option>
                <Option value="IS NOT NULL" key={'IS NOT NULL'}>
                  不为空
                </Option>
                <Option value="IS NULL" key={'IS NULL'}>
                  为空
                </Option>
王绍森's avatar
王绍森 committed
231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250
            </Select>
            {disabled?"": <span style={{padding: '0px 10px'}}>
              <DatePicker onChange={this.changeDate}
                        showTime
                        format="YYYY-MM-DD HH:mm:ss"
                          allowClear={false}
                          style={{width:200}}
                          value={string?moment(string):null}
              />
              </span>}
              <Button type="danger" onClick={this.props.deleteQuery}>删除</Button>
                </div>)

        }else{
            return (<span>暂无法处理</span>)
         }


    }
}