// 物资全院库存查询
import React from 'react';
import { Card, Row, Col, Form, DatePicker, Select, Button, Checkbox, Table, Switch, message, Pagination, Input  } from 'antd';
import { $http } from 'containers/config/https';
import Moment from 'moment';
import store from 'store';
import './style/index.less';
import PublicModalTable from './../../common/PublicModalTable';
var serialNumber = 0; //库存单序列号

const { Option } = Select;
const FormItem = Form.Item;
const formItemLayout = {    // label 和input宽度
    labelCol: { span:7 },
    wrapperCol: { span: 14 },
};
const formItemSpan = {    // label 和input宽度
    labelCol: { span:5 },
    wrapperCol: { span: 19 },
};

const AllCourtyardInventory = Form.create()(
    class extends React.Component {
        constructor() {
            super();
            this.state = {
                userInfo: JSON.parse(window.sessionStorage.userData),
                data: [],
                queryCondition: {},
                SelectData: {},
                inOpLocDr:'',
                vendor: '',
                WaListData: [], //库存单数据
                pageSize: 10,
                page: 1,
                total:0,
                stateID: '',
                ModalRowData: {}, // 弹框双击选中行数据
                stockID: '',
                modalColumns:[],
                modalColumnsWidth:'',
                ChineseEnglishSize:{}
            };
            // 库存单的数据表头
            this.columns = [

                {
                    key: 2,
                    title: '代码',
                    dataIndex: 'stockCode',
                    align: "center",
                    width: '9%'
                },
                {
                    key: 3,
                    title: '名称',
                    dataIndex: 'stockDesc',
                    align: "center",
                    width: '11%'
                },
                {
                    key: 4,
                    title: '规格',
                    dataIndex: 'stockSpec',
                    align: "center",
                    width: '6%'
                },
                {
                    key: 1,
                    title: '单位',
                    dataIndex: 'unitDesc',
                    align: "center",
                    width: '7%',
                },
                {
                    key: 5,
                    title: '库存量',
                    dataIndex: 'qty',
                    align: "center",
                    width: '9%'
                },
                {
                    key: 6,
                    title: '出数量',
                    dataIndex: 'outQty',
                    align: "center",
                    width: '7%'
                },
                {
                    key: 7,
                    title: '入数量',
                    dataIndex: 'inQty',
                    align: "center",
                    width: '6%'
                },
                {
                    key: 8,
                    title: '出金额',
                    dataIndex: 'outSpAmt',
                    align: "center",
                    width: '7%'
                },
                {
                    key: 9,
                    title: '出进价金额',
                    dataIndex: 'outRpAmt',
                    align: "center",
                    width: '9%'
                },
                {
                    key: 10,
                    title: '入金额',
                    dataIndex: 'inSpAmt',
                    align: "center",
                    width: '6%'
                },
                {
                    key: 11,
                    title: '入进价金额',
                    dataIndex: 'inRpAmt',
                    align: "center",
                    width: '8%'
                },
                {
                    key: 12,
                    title: '生产厂家',
                    dataIndex: 'manfDesc',
                    align: "center",
                    width: '9%'
                },
                {
                    key: 13,
                    title: '货位',
                    dataIndex: 'expDate',
                    align: "center",
                    width: '6%'
                }
            ];
            this.modalColumns = [
                {
                    key: 1,
                    title: '库存项代码',
                    dataIndex: 'stockCode',
                    align: "center",
                    width: '22%'
                },
                {
                    key: 2,
                    title: '库存项描述',
                    dataIndex: 'stockDesc',
                    align: "center",
                    width: '24%',
                },
                {
                    key: 5,
                    title: '库存分类',
                    dataIndex: 'stkSubCatDesc',
                    align: "center",
                    width: '16%',
                },
                {
                    key: 3,
                    title: '包装规格',
                    dataIndex: 'stockSpec',
                    align: "center",
                    width: '12%',
                },
                {
                    key: 6,
                    title: '基本单位',
                    dataIndex: 'baseUnitDesc',
                    align: "center",
                    width: '12%',
                },
                {
                    key: 7,
                    title: '入库单位',
                    dataIndex: 'purUnitDesc',
                    align: "center",
                }
            ]
        }

        componentDidMount() {
            // 初始化数据
            this.getTacitlyApproveData();
            this.getDetailTableColumns();
        }

        // 获取明系列表头数据
	    getDetailTableColumns = () => {
            let {userInfo} = this.state;
            let data = {
                params: [{
                    reactCode: ['MaterialHospitalInventory'],
                    compontName: 'MaterialHospitalInventory',
                    type: 'C',
                }]
            }
            $http.post('urlS', this, {
                code: '01040073',
                data: data,
                success: function (res) {
                    if (+res.errorCode === 0) {
                        let arr = res.result.C&&res.result.C.length > 0 ? JSON.parse(JSON.stringify(res.result.C)).map((item, index) => {
                            return  {
                                ...item,
                                key: index + 1,
								title: <div>{userInfo.language== 'EN' ? item.enDescripts : item.title}</div>
                            }
                        }) : '';
                        let filterArr = arr.filter(function(item){ return item.display === 'Y'});
                        this.setState({modalColumns: filterArr, modalColumnsWidth: res.totalWidth,ChineseEnglishSize:userInfo.language=='EN' ? res.result.language.EN : res.result.language.CN})
                    }
                }
            });
        };

        componentWillUnmount() {
            // 组件销毁前将静止让setState修改state的状态，防止内存泄漏
            this.setState = (state,callback)=>{ return; }
        }

        //清空表格内容
        handleReset = () => {
            this.setState({WaListData: [],total: 0});
            this.props.form.resetFields();
        };

        // 获取界面默认值
        getTacitlyApproveData() {
            let data = {
                params: []
            };
            // 获取下拉数据
            $http.post('urlS', this, {
                code: "02020189",
                data: data,
                success: function (res) {
                    if (+res.errorCode === 0) {
                        this.setState({SelectData: res})
                    }
                }
            })
        }

        // 获取库存单列表数据
        getDeadStockList=()=>{
            let {ChineseEnglishSize} = this.state;
            this.props.form.validateFields((error, value)=> {
                let obj = JSON.parse(JSON.stringify(value));
                if(error == null){
                    let data = {
                        params: [{
                            locID: obj.Loc ? obj.Loc : undefined,
                            startDate: obj.startDate ? Moment(obj.startDate).format('YYYY-MM-DD'): undefined,
                            endDate:obj.endDate ? Moment(obj.endDate).format('YYYY-MM-DD') : undefined,
                            stkCatID: obj.stkCatID ? obj.stkCatID : undefined,
                            stkSubCatID: obj.stkSubCatID ? obj.stkSubCatID : undefined,


                        }],
                        pagination: [
                            {
                                pageSize:this.state.pageSize,
                                currentPage:this.state.page,
                                sort:"ID",
                                dir:"asc",
                            }
                        ],
                    };
                    $http.post('urlS', this, {
                        code: "02020190",
                        data: data,
                        success: function (res) {
                            if(res.rows.length > 0){
                                for(let i = 0; i < res.rows.length; i++){
                                    res.rows[i].key = i;
                                }
                                this.setState({ WaListData: res.rows, total: res.total});
                                serialNumber = 0;

                            }else {
                                this.setState({ WaListData: []});
                                message.error(ChineseEnglishSize.MaterialHospitalInventorynoData ? ChineseEnglishSize.MaterialHospitalInventorynoData.descripts:"没数据");

                            }
                        },
                        error: function (err) {
                            message.error(err.errorMessage)
                        }
                    });
                }
            })
        };

        // 页码改变的回调，参数是改变后的页码及每页条数 库存单
        onChange = (page, pageSize) => {
            this.setState({page: page, pageSize: pageSize}, () => {
                // 重新调用查询方法
                this.getDeadStockList();
            });
        };

        onShowSizeChange = (current, size) => {
            this.setState({page: current, pageSize: size}, () => {
                // 重新调用查询方法
                this.onChange(current,size);
            })
        };

        // 显示分页总条数
        showTotal(total) {
            return `共 ${total} 条`;
        }

        // 获取描述列表数据
        getModalListData(alias) {
            let data = {
                params: [
                    {
                        stockAlias: alias, // 库存项描述别名
                        frLocID: this.state.frLocDr ? this.state.frLocDr : undefined
                    }
                ]
            };
            $http.post('urlS', this, {
                code: "02020042",
                data: data,
                success: function (res) {
                    if (+res.errorCode === 0) {
                        for(var i = 0; i < res.result.length; i++) {
                            res.result[i].key = i
                        }
                        this.setState({ modalData: res.result})
                    } else {
                        this.setState({ modalData: [] })
                    }
                }
            })
        }

        // 描述回车事件
        stockDescOnPressEnter = (e) => {
            let top = document.getElementById('stock-desc').getBoundingClientRect().top + 40 + 'px';
            let left = document.getElementById('stock-desc').getBoundingClientRect().left + 100 + 'px';
            this.setState({
                top: top,
                left: left
            });
            this.getModalListData(e.target.value);
            this.child.showModal();
        };

        // 当描述失去焦点的时候
        stastockDescOnBlure = (e) => {
            if (this.state.ModalRowData && (e.target.value !== this.state.ModalRowData.stockDesc)) {
                this.props.form.setFieldsValue({stockDesc: undefined});
            }
        };


        // 操作弹框
        onClickRowPublic = (record) => {
            return {
                onDoubleClick: () => {
                    this.confirmSelection(record);
                }
            }
        };
        // 双击选中行数据的回调
        confirmSelection = (record) => {
            // this.resetFields();
            this.setState({ModalRowData: record}, () => {
                this.setState({stockID: record.stockID});
                this.props.form.setFieldsValue({stockDesc: record.stockDesc});
                // 关闭弹窗
                this.child.handleCancel();
            })
        };


        onRef = (ref) => {
            this.child = ref;
        };

        render() {
            const { getFieldDecorator } = this.props.form;
            let {ChineseEnglishSize,userInfo,modalColumns} = this.state;
            //库存科室列表
            let inOpLocDrSelect = [];
            this.state.SelectData.loc && this.state.SelectData.loc.map((item, i) => {
                inOpLocDrSelect.push(<Option value={item.id} key={i}>{item.descripts}</Option>)
            });
            let param = {
                width: '600px',
                top: this.state.top,
                left: this.state.left,
                columns: modalColumns.length>0?modalColumns:this.modalColumns,
                data: this.state.modalData,
                isOnRow: true,
                TableClassName: 'tab-placeholder',
            };
            return (
                <div className="allCourtyardInventory">
                    <Row >
                        <Col span={6}>
                            <Card
                                size="small"
                                title={ChineseEnglishSize.MaterialHospitalInventorywholeHospitalInquiry ? ChineseEnglishSize.MaterialHospitalInventorywholeHospitalInquiry.descripts:'全院库存查询'}
                            >
                                <div  style={{height: store.getState().tableHeight.y +115 + 'px'}}>
                                    <Form>
                                        <Row>
                                            <Col className="time">
                                                <FormItem {...formItemLayout} label={ChineseEnglishSize.MaterialHospitalInventorystartDate ? ChineseEnglishSize.MaterialHospitalInventorystartDate.descripts:'日期'}>
                                                    {getFieldDecorator('startDate',{
                                                        initialValue:  this.state.SelectData.params&&this.state.SelectData.params.startDate ? Moment(this.state.SelectData.params.startDate, 'YYYY-MM-DD') : Moment(Moment().format('L'), 'YYYY-MM-DD'),
                                                        rules:[{ required : ChineseEnglishSize.MaterialHospitalInventorystartDate ? ChineseEnglishSize.MaterialHospitalInventorystartDate.required =='Y'? true:false: false, message: ChineseEnglishSize.MaterialHospitalInventorystartDate ? ChineseEnglishSize.MaterialHospitalInventorystartDate.message:'日期不能为空'}]  
                                                    })(
                                                        <DatePicker format="YYYY-MM-DD" />
                                                    ) }
                                                </FormItem>
                                            </Col>
                                            <Col>
                                                <FormItem {...formItemLayout} label={ChineseEnglishSize.MaterialHospitalInventoryStkCat ? ChineseEnglishSize.MaterialHospitalInventoryStkCat.descripts:'库存大类'}>
                                                    {getFieldDecorator('stkCatID',{
                                                        initialValue:undefined,
                                                        rules:[{ required : false, message: '库存大类不能为空'}]
                                                    })(
                                                        <Select allowClear>
                                                            {inOpLocDrSelect}
                                                        </Select>
                                                    ) }
                                                </FormItem>
                                            </Col>
                                            <Col>
                                                <FormItem {...formItemLayout} label={ChineseEnglishSize.MaterialHospitalInventorytype ? ChineseEnglishSize.MaterialHospitalInventorytype.descripts:'类型'}>
                                                    {getFieldDecorator('stkSubCatID',{
                                                        initialValue: undefined,
                                                        rules:[{ required : false, message: '库存子类不能为空'}]
                                                    })(
                                                        <Select allowClear>
                                                            {inOpLocDrSelect}
                                                        </Select>
                                                    ) }
                                                </FormItem>
                                            </Col>
                                            <Col  id="stock-desc">
                                                <FormItem {...formItemLayout} label={ChineseEnglishSize.MaterialHospitalInventorydrugName ? ChineseEnglishSize.MaterialHospitalInventorydrugName.descripts:'药品名称'}>
                                                    {getFieldDecorator('stockDesc',{
                                                        initialValue: undefined,
                                                        rules:[{ required : false, message: '药品名称不能为空'}]
                                                    })(
                                                        <Input ref={this.myRef1} placeholder={ChineseEnglishSize.MaterialHospitalInventorycarriageSearch ? ChineseEnglishSize.MaterialHospitalInventorycarriageSearch.descripts:'回车检索药品相关信息'} onPressEnter={this.stockDescOnPressEnter} onBlur={this.stastockDescOnBlure} />
                                                    ) }
                                                </FormItem>
                                            </Col>
                                            <Col>
                                                <FormItem {...formItemLayout} label={ChineseEnglishSize.MaterialHospitalInventoryimFlag ? ChineseEnglishSize.MaterialHospitalInventoryimFlag.descripts:'进口标志'}>
                                                    {getFieldDecorator('stkSubCatID',{
                                                        initialValue: undefined,
                                                        rules:[{ required : false, message: '进口标志不能为空'}]
                                                    })(
                                                        <Select allowClear>
                                                            {inOpLocDrSelect}
                                                        </Select>
                                                    ) }
                                                </FormItem>
                                            </Col>
                                            <Col>
                                                <FormItem {...formItemLayout} label={ChineseEnglishSize.MaterialHospitalInventoryinventorySubclass ? ChineseEnglishSize.MaterialHospitalInventoryinventorySubclass.descripts:'库存子类'}>
                                                    {getFieldDecorator('stkSubCatID',{
                                                        initialValue: undefined,
                                                        rules:[{ required : false, message: '库存子类不能为空'}]
                                                    })(
                                                        <Select allowClear>
                                                            {inOpLocDrSelect}
                                                        </Select>
                                                    ) }
                                                </FormItem>
                                            </Col>
                                            <Col>
                                                <FormItem {...formItemLayout} label={ChineseEnglishSize.MaterialHospitalInventorymedicalScorpion ? ChineseEnglishSize.MaterialHospitalInventorymedicalScorpion.descripts:'医嘱子类'}>
                                                    {getFieldDecorator('stkSubCatID',{
                                                        initialValue: undefined,
                                                        rules:[{ required : false, message: '医嘱子类不能为空'}]
                                                    })(
                                                        <Select allowClear>
                                                            {inOpLocDrSelect}
                                                        </Select>
                                                    ) }
                                                </FormItem>
                                            </Col>
                                            <Col>
                                                <FormItem {...formItemLayout} label={ChineseEnglishSize.MaterialHospitalInventoryregulatoryClassification ? ChineseEnglishSize.MaterialHospitalInventoryregulatoryClassification.descripts:'管制分类'}>
                                                    {getFieldDecorator('stkSubCatID',{
                                                        initialValue: undefined,
                                                        rules:[{ required : false, message: '管制分类不能为空'}]
                                                    })(
                                                        <Select allowClear>
                                                            {inOpLocDrSelect}
                                                        </Select>
                                                    ) }
                                                </FormItem>
                                            </Col>
                                            <Col>
                                                <FormItem {...formItemLayout} label={ChineseEnglishSize.MaterialHospitalInventorymanufacturer ? ChineseEnglishSize.MaterialHospitalInventorymanufacturer.descripts:'生产厂家'}>
                                                    {getFieldDecorator('stkSubCatID',{
                                                        initialValue: undefined,
                                                        rules:[{ required : false, message: '生产厂家不能为空'}]
                                                    })(
                                                        <Select allowClear>
                                                            {inOpLocDrSelect}
                                                        </Select>
                                                    ) }
                                                </FormItem>
                                            </Col>
                                            <Col>
                                                <FormItem {...formItemLayout} label={ChineseEnglishSize.MaterialHospitalInventorydosageForm ? ChineseEnglishSize.MaterialHospitalInventorydosageForm.descripts:'剂型'}>
                                                    {getFieldDecorator('stkSubCatID',{
                                                        initialValue: undefined,
                                                        rules:[{ required : false, message: '剂型不能为空'}]
                                                    })(
                                                        <Select allowClear>
                                                            {inOpLocDrSelect}
                                                        </Select>
                                                    ) }
                                                </FormItem>
                                            </Col>
                                            <Row>
                                                <Col>
                                                    <FormItem {...formItemLayout} label={ChineseEnglishSize.MaterialHospitalInventoryincZeroBat ? ChineseEnglishSize.MaterialHospitalInventoryincZeroBat.descripts:'仅在用品种'}>
                                                        {getFieldDecorator('incZeroBat',{
                                                            valuePropName: 'checked',
                                                            initialValue: false,
                                                            rules:[{required: false}]
                                                        })(
                                                            userInfo.language == 'EN' ?  <Switch checkedChildren="Yes" unCheckedChildren="No" /> : <Switch checkedChildren="是" unCheckedChildren="否" />
                                                        ) }
                                                    </FormItem>
                                                </Col>
                                            </Row>
                                            <Col>
                                                <FormItem {...formItemLayout} label={ChineseEnglishSize.MaterialHospitalInventoryexcNotFlag ? ChineseEnglishSize.MaterialHospitalInventoryexcNotFlag.descripts:'仅不可用品种'}>
                                                    {getFieldDecorator('excNotFlag',{
                                                        valuePropName: 'checked',
                                                        initialValue: false,
                                                        rules:[{required: false}]
                                                    })(
                                                        userInfo.language == 'EN' ?  <Switch checkedChildren="Yes" unCheckedChildren="No" /> : <Switch checkedChildren="是" unCheckedChildren="否" />
                                                    ) }
                                                </FormItem>
                                            </Col>
                                        </Row>
                                    </Form>
                                    <Row style={{margin: '5px 0 18px 80px'}} className="button">
                                        <Button style={{marginRight: '30px'}} onClick={this.getDeadStockList}>{ChineseEnglishSize.MaterialHospitalInventorysearch ? ChineseEnglishSize.MaterialHospitalInventorysearch.descripts:'查询'}</Button>
                                        <Button type="primary" onClick={this.handleReset}>{ChineseEnglishSize.MaterialHospitalInventoryclean ? ChineseEnglishSize.MaterialHospitalInventoryclean.descripts:'清屏'}</Button>
                                    </Row>
                                </div>

                            </Card>
                        </Col>
                        <Col span={18} >
                            <Col>
                                <Card
                                    size="small"
                                    title={ChineseEnglishSize.MaterialHospitalInventorydetailForm ? ChineseEnglishSize.MaterialHospitalInventorydetailForm.descripts:'详情单'}
                                >
                                    <div  style={{height: store.getState().tableHeight.y +15 + 'px'}}>
                                       <div style={{textAlign: 'center',marginTop: '100px'}}>{ChineseEnglishSize.MaterialHospitalInventorynoData ? ChineseEnglishSize.MaterialHospitalInventorynoData.descripts:'没数据'}</div>
                                    </div>
                                </Card>
                            </Col>
                        </Col>
                    </Row>
                    <PublicModalTable onClickRowPublic={this.onClickRowPublic}  param={param} onRef={this.onRef} />
                </div>
            )
        }
    }
);
export default AllCourtyardInventory;