import React from 'react';
import { List, Radio, DatePicker, Switch, Button, WhiteSpace, Toast, Card, InputItem, Modal, Flex, Checkbox } from 'antd-mobile';
import { Http } from '../../Utils/help';
const CheckboxItem = Checkbox.CheckboxItem;
function formatDate(date) {
    /* eslint no-confusing-arrow: 0 */
    const pad = n => n < 10 ? `0${n}` : n;
    const dateStr = `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}`;
    const timeStr = `${pad(date.getHours())}:${pad(date.getMinutes())}`;
    return `${dateStr} ${timeStr}`;
}
function convertDateFromString(dateString) {
    if (dateString) {
        dateString = dateString.replace(/-/g, "/");
        // console.log('dataString.replace:',dateString)
        var date = new Date(dateString);
        return date;
    }
}
export default class maintenancedetail extends React.Component {
    constructor(props) {
        super(props);
        const { func, rowData } = this.props.location.state;
        this.selectedRowChange = this.selectedRowChange.bind(this)
        this.isEmpty = this.isEmpty.bind(this)
        this.diffTime=this.diffTime.bind(this)
        this.returntofirst=this.returntofirst.bind(this)
        this.isEdit=this.isEdit.bind(this)
        this.getNowFormatDate=this.getNowFormatDate.bind(this)
        this.state = {
            func: func,
            rowData: rowData,
            //点检单子档
            machealthchecklogdetailvo: [],
            //机台型号
            device: new Map(),
            //员工
            employee: new Map(),
            //模态窗口是否显示:
            rowDatafield: '',
            //点检项目
            maintainlist: new Map(),
            //操作当前子档的index
            maintainlistindex: '',
            //radio value
            radioval: '',
            //机型
            devicetype: [],
            //机台自动搜索框 
            deviceCode: rowData.ExtraDatas.devicecode === null || rowData.ExtraDatas.devicecode === undefined ? '' : rowData.ExtraDatas.devicecode,
            //机台是否焦点
            deviceonFocus: false,
            //用户组数据
            usergroup: [],
            //用户组名称
            usergroupname: rowData.ExtraDatas.checkername === null || rowData.ExtraDatas.checkername === undefined ? '' : rowData.ExtraDatas.checkername,
            //用户组名称是否焦点
            usergrouponFocus: false,
            downdata: [],
            candown:[],
            isedit:true,//限制点击次数
            login:{}
        }
    }
    //取得子档json数据集
    componentWillMount() {
        console.log('will mount')
        //console.log('rowData: ', this.state.rowData)
        this.dataAjax = Http.getJSON2("machealthchecklog/items", { "checkid": this.state.rowData.checklogid })
            .done((data) => {
                console.log('will mount Items:', data.data)
                try {
                this.setState({
                    machealthchecklogdetailvo: data.data,
                });
                } catch (err) {
                    console.error(err.message);
                    console.error(err.stack);
                }
            });

        //登录人
        Http.postJSON2("employee/getlogin", {}, data => {
            console.log(data)
            this.setState({ login: data[0] })
        }).done(data => {
            console.log(this.state)
        }),
        //拿到机台数据
        Http.getJSON2("device", {}, (data) => {
            const devicearr = data.data
            const map = new Map()
            data.data.map((item) => { map.set(item.deviceid, item.Code) })
            this.setState({ device: map, devicearr })
        })
        //拿到机型数据
        Http.getJSON2("devicetype", {}, data => {
            const devicetype = data.data
            let radioval = data.data[0].devtypeid
            this.setState({ devicetype, radioval })
        })
        //拿到在职员工数据
        Http.getJSON2('employee', {'quit': 'false'}, (data)=>{
            const map = new Map()
            data.data.map((item) => { map.set(item.Employeeid, item.Name) })
            this.setState({ employee: map })
        })

        //保养项目
        Http.getJSON2("spotcheck", {}, (data) => {
            const map = new Map()
            data.data.map((item) => { map.set(item.spotcheckid, item.name) })
            console.log("map:", map)
            this.setState({ maintainlist: map })
        })

    }

    componentDidMount() {
        console.log('did mount')
    }
    //是否可有编辑权限
    isEdit = () => {
        console.log(this.state.login)//
        if (this.state.login.Employeeid === this.state.rowData.checker || this.isEmpty(this.state.rowData.checker) ) {
            if (this.state.rowData.isdone ==='True' ) {
                {
                    return false
                }
            } else {
                return true
            }
        } else {
            return false
        }
    }
    isfinish = (item, index) => {
        console.log("item:", item)
        console.log("isdone:", item.isdone, "index:", index)
        item.isdone = item.isdone === null ? true : (item.isdone === true ? false : true)
        console.log("item2:", item.isdone)
        let machealthchecklogdetailvo = this.state.machealthchecklogdetailvo
        machealthchecklogdetailvo[index].isdone = item.isdone
        machealthchecklogdetailvo[index].status = 'Modified'
        console.log("machealthchecklogdetailvo:", machealthchecklogdetailvo)
        this.setState({
            machealthchecklogdetailvo: machealthchecklogdetailvo,
        }, console.log("选择或取消后", this.state.machealthchecklogdetailvo, "isdone:", this.state.machealthchecklogdetailvo[index].isdone))
    }
    //修改主档
    rowDataOnchange = (field, e) => {
        const rowData = this.state.rowData
        rowData[field] = e
        if (rowData.status == 0) {
            rowData.status = 'Modified'
        }
        console.log('edit rowData:', rowData)
        this.setState({ rowData })
    }
    selectedRowChange = (key) => {
        const rowData = this.state.rowData
        rowData[this.state.rowDatafield] = key
        if (rowData.status == 0) {
            rowData.status = 'Modified'
        }
        console.log('edited rowData:', rowData)
        this.setState({ rowData })
    }

    //计算工时是否在有效范围内,以分钟作为比较
    diffTime=()=>{
        var startdatetime= new Date(this.state.rowData.startdatetime);//开始时间
		var enddatetime=new Date(this.state.rowData.enddatetime)//结束时间
        var diff=enddatetime.getTime() - startdatetime.getTime();//时间差的毫秒数 
        var minute=Math.ceil(diff/(60*1000));          //计算出分钟数 
        return minute; 
    } 
    //是否为空
    isEmpty = (obj) => {
        if (typeof obj === 'undefined' || obj == null || obj === '') {
            return true;
        } else {
            return false;
        }
    }
    //获取当前时间
    getNowFormatDate = () => {//获取当前时间
        var date = new Date();
        var seperator1 = "-";
        var seperator2 = ":";
        var month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
        var strDate = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
        var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate
            + " " + date.getHours() + seperator2 + date.getMinutes()
            + seperator2 + date.getSeconds();
        return currentdate;
    }
    //提交保存
    save = () => {
        //将按钮变得不能点击
        let isedit = !this.state.isedit
        this.setState({ isedit })
        var now = this.getNowFormatDate()//获取时间
        //整合提交数据
        const postdata = this.state.rowData
        //判断开始时间是否为空，为空获取现在时间赋值给对应字段
        if(this.isEmpty(this.state.rowData.startdatetime) ){
            postdata.startdatetime = now          
        }
        console.log("this.state.machealthchecklogdetailvo:", this.state.machealthchecklogdetailvo) 
        const machealthchecklogdetailvoarr = this.state.machealthchecklogdetailvo  //保养单子档
        console.log("machealthchecklogdetailvoarr:", machealthchecklogdetailvoarr)
        postdata.Items.machealthchecklogdetailvo = machealthchecklogdetailvoarr
        const isdonenumarr=machealthchecklogdetailvoarr.filter(item=>!item.isdone || item.isdone===null)
        console.log('1',isdonenumarr)
        console.log('2',isdonenumarr.length)
        console.log('3',postdata.isdone)
        console.log(isdonenumarr.length)
        if(isdonenumarr.length===0){
            postdata.enddatetime = now   
            //判断开始时间和结束时间是否为空S
            // if (this.isEmpty(this.state.rowData.startdatetime)  || this.isEmpty(this.state.rowData.enddatetime)){
            //     this.setState({ isedit: true })//重置保存次数
            //     Toast.info("开始时间或者结束时间没有填!",2)
            //     return
            // }
            //E
            //去掉工时在完成时一定得填的限制S
            // if (this.isEmpty(this.state.rowData.workhour)){
            //     this.setState({ isedit: true })//重置保存次数
            //     Toast.info("工时不能为空!",2)
            //     return
            // }
            //去掉工时在完成时一定得填的限制E
            if(!this.isEmpty(this.state.rowData.workhour)){
                var jsminute=this.diffTime();
                var minute=this.state.rowData.workhour*60
                if(minute>jsminute){
                    this.setState({ isedit: true })//重置保存次数
                    Toast.info("工时填写时间超出结束时间与开始时间范围!",2)
                    return
                }
            }
            postdata.isdone = 1
            if (postdata.status == 0) {
                postdata.status = 'Modified'
            }
            //保养人
            if(this.isEmpty(postdata.checker)){
                postdata.checker=localStorage['loginemployee']
            }
            console.log('postdata:', postdata)
            Http.postJSON2("machealthchecklog", { ...postdata }, (data => { Toast.info("保存成功!", 2,this.returntofirst(),true) }), data => { Toast.info(data.responseJSON.Error, 3) })
                .done((data) => {
                    console.log('post return:', data)
                    //刷新数据
                    //更新主档
                    Http.getJSON2("machealthchecklog", { "checklogid": data.checklogid }, (data) => {
                        console.log('待刷新主档:', data.data)
                        const rowData = data.data[0]
                        this.setState({ rowData })
                    })
                    //更新子档
                    Http.getJSON2("machealthchecklog/items", { "checkid": data.checklogid }, data => {
                        console.log('待刷新子档:', data.data)
                        const machealthchecklogdetailvo = data.data
                        this.setState({ machealthchecklogdetailvo })
                    })
                })  
      }
        if(isdonenumarr.length!==0){
            postdata.isdone = 0
            if (postdata.status == 0) {
                postdata.status = 'Modified'
            }
            if(this.isEmpty(postdata.checker)){
                postdata.checker=localStorage['loginemployee']
            }
            console.log('postdata:', postdata)
            Http.postJSON2("machealthchecklog", { ...postdata }, (data => { Toast.info("保存成功!", 2,this.returntofirst(),true) }), data => { Toast.info(data.responseJSON.Error, 3) })
                .done((data) => {
                    console.log('post return:', data)
                    //刷新数据
                    //更新主档
                    Http.getJSON2("machealthchecklog", { "checklogid": data.checklogid }, (data) => {
                        console.log('待刷新主档:', data.data)
                        const rowData = data.data[0]
                        this.setState({ rowData })
                    })
                    //更新子档
                    Http.getJSON2("machealthchecklog/items", { "checkid": data.checklogid }, data => {
                        console.log('待刷新子档:', data.data)
                        const machealthchecklogdetailvo = data.data
                        this.setState({ machealthchecklogdetailvo })
                    })
                })
        }
        console.log("postdata:", postdata)
    }
    //返回上一个界面
    returntofirst = () => {
        history.back()
    }
    render() {
        //showmap
        return (
            <div key={'divwrap'}>
                {<div key={'divmain'} style={{ height: '100%', padding: '10px' }}>
{                   console.log('数据',this.state.rowData)}
                    <InputItem onChange={(e) => this.rowDataOnchange('BillCode', e)} value={this.state.rowData.BillCode}>点检单号 :</InputItem>
                    <InputItem editable={false} value={this.state.rowData.ExtraDatas.devicecode}>机台编号 :</InputItem>
                    {/* this.state.employee.get(localStorage['loginemployee']) */}
                    <InputItem editable={false} value={!this.isEmpty(this.state.rowData.checker)?this.state.rowData.ExtraDatas.checkername:this.state.login.Name}>点检人员 :</InputItem>
                    <div style={{ paddingTop: '10px', backgroundColor: '#FFF' }}></div>
                    <DatePicker
                        title="开始时间"
                        disabled={!this.isEdit()}
                        //mode="date"
                        value={convertDateFromString(this.state.rowData.startdatetime)}
                        onChange={date => this.rowDataOnchange('startdatetime', formatDate(date))}
                    >
                        <List.Item arrow="horizontal">开始时间 :</List.Item>
                    </DatePicker>
                    <div style={{ paddingTop: '10px', backgroundColor: '#FFF' }}></div>
                    <DatePicker
                        title="结束时间"
                        disabled={!this.isEdit()}
                        // mode="date"
                        value={convertDateFromString(this.state.rowData.enddatetime)}
                        onChange={date => this.rowDataOnchange('enddatetime', formatDate(date))}
                    >
                        <List.Item arrow="horizontal">结束时间 :</List.Item>
                    </DatePicker>
                    <div style={{ paddingTop: '10px', backgroundColor: '#FFFFFF' }}></div>
                    <InputItem editable={this.isEdit()} value={this.state.rowData.workhour} onChange={(e) => this.rowDataOnchange('workhour', e)} >工时(小时):</InputItem>     
                    <WhiteSpace size="lg" />
                    <div>
                        <div style={{ paddingTop: '10px', fontSize: '17px', height: '20px' }}> 点检项目</div>
                        {console.log('重新render:', this.state.machealthchecklogdetailvo)}
                        {
                            this.state.machealthchecklogdetailvo.map((item, index) => (
                                item.status != 'Deleted' ?
                                    <div key={'machealthchecklogdetailvo' + index} style={{ paddingTop: '10px' }}>
                                        <Card>
                                            <Card.Body style={{ height: "20px" }}>
                                                <Flex >
                                                    <Flex.Item style={{ flex: '4' }}><InputItem editable={false} value={this.state.maintainlist.get(item.itemid)}></InputItem></Flex.Item>
                                                    <Flex.Item><CheckboxItem disabled={!this.isEdit()} defaultChecked={item.isdone} onChange={() => this.isfinish(item, index)} /></Flex.Item>
                                                </Flex>
                                            </Card.Body>
                                        </Card>
                                        <WhiteSpace size="xs" />
                                    </div> : ''
                            ))
                        }
                    </div>
                </div>}
                <div style={{ height: '100%', padding: '10px' }}>

                    <Button disabled={!this.state.isedit} type="primary" onClick={() => this.save()} >确认</Button>
                </div>
                </div>
        )
    }


}