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';
import Autocomplete from '../../Utils/Autocomplete'
const RadioItem = Radio.RadioItem;
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.qtyOnchange = this.qtyOnchange.bind(this)
        this.deletemaintainbvo = this.deletemaintainbvo.bind(this)
        this.addNewContent = this.addNewContent.bind(this)
        this.baseData = this.baseData.bind(this)
        this.selectedRowChange = this.selectedRowChange.bind(this)
        this.selectedVoChange = this.selectedVoChange.bind(this)
        this.onClose = this.onClose.bind(this)
        this.onDevicetypeChange = this.onDevicetypeChange.bind(this)
        this.rowDataOnAutoComplete = this.rowDataOnAutoComplete.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.modalcancle=this.modalcancle.bind(this)
        this.modalok=this.modalok.bind(this)
        this.checkmodal=this.checkmodal.bind(this)
        this.depart=this.depart.bind(this)
        this.state = {
            func: func,
            rowData: rowData,
            //starttime:null,
            //endtime:null,
            //维修单子档
            maintainbvo: [],
            //零部件库存情况
            archivesstock: [],
            //维修状态列表
            maintainstatus: new Map(),
            //维修类型
            maintaintype: new Map(),
            //机台型号
            device: new Map(),
            //员工
            employee: new Map(),
            //模态窗口是否显示:
            modal: false,
            //模态窗标题 临时
            modalTitle: '',
            //主档编辑字段 临时
            rowDatafield: '',
            //date:'',
            //保养项目
            maintainlist: new Map(),
            healthchecktypedata:[],
            //操作当前子档的index
            maintainlistindex: '',
            //radio value
            radioval: '',
            //机型
            devicetype: [],
            //机台自动搜索框 
            deviceCode: rowData.ExtraDatas.devicecode === null || rowData.ExtraDatas.devicecode === undefined ? '' : rowData.ExtraDatas.devicecode,
            //机台是否焦点
            deviceonFocus: false,
            //用户组数据
            usergroup: [],
            //用户组名称
            usergroupname: rowData.ExtraDatas.maintenancername === null || rowData.ExtraDatas.maintenancername === undefined ? '' : rowData.ExtraDatas.maintenancername,
            //用户组名称是否焦点
            usergrouponFocus: false,
            //零部件是否焦点
            archivesFocus: false,
            serialnumber: false,
            archivesdata: [],
            //零部件自动搜索
            // archiveCode: rowData.ExtraDatas.arcode === null || rowData.ExtraDatas.arcode === undefined ? '' : rowData.ExtraDatas.arcode,
            // //批次号自动搜索
            // serialnumber: rowData.ExtraDatas.serialnumber === null || rowData.ExtraDatas.serialnumber === undefined ? '' : rowData.ExtraDatas.serialnumber,
            //下机零件数组
            downarr:[],
            //下机零件序列号数组
            downserialarr:[],
            //上机零件数组
            uparr:[],
            //上机零件序列号数组
            upserialarr:[],
            //库存
            archivesstockvo: [],
            downdata: [],
            maintaindownlog: [],
            archiveCode: "",
            serialnumber: "",
            arcode_log: "",
            serialnumber_bef: "",
            batchcode_bef: "",
            candown:[],
            isedit:true,//限制点击次数
            login:{},
            arcdowncode:[],//下机零部件code
            arcupcode:[],//下机零部件code
            maintainbbefore:{},//操作前的当前维修单子档
            maintenancecontent:[],//保养项目组
            maintenancearc:[],//零件组
            downarc:[],//下机零部件记录组  
            uparc:[],//零部件的档案 
                          
        }
    }
    //取得子档json数据集
    componentWillMount() {
        //上下机零部件请求S
        //下机:如果该条维修单无机台，下机零部件记录组为空.
        console.log(this.state.rowData)
        if(this.state.rowData.deviceid===null){
            this.setState({ downarc: []},console.log('下机记录组',this.state.downarc))
        }
        else{
            Http.getJSON2("archives/archiveslogitems",{position:this.state.rowData.deviceid}, (data) => { 
                console.log('零部件下机记录downarc',data.data)
                this.setState({  downarc: data.data}),console.log('下机记录组',this.state.downarc) })    
        }
        //上机：直接加载零部件
        Http.getJSON2("archives",{}, (data) => { 
            console.log('零部件档案uparc',data.data)
            this.setState({  uparc: data.data}),console.log('零部件档案',this.state.uparc)  }) 
        //上下机零部件请求E
        console.log('will mount')
        // console.log('rowData: ', this.state.rowData)
            //     //拿到零件档案
            //     Http.getJSON2("archives/vitems", {}, (data) => { 
            //         this.setState({ archivesstock: data.data })
            // //筛选出可下机零件
            // const downarr = this.state.archivesstock.slice().filter((item) => {
            //     return (item.logid && item.position && item.position === this.state.rowData.deviceid)
            // })
            // //只取下机零部件种类名
            // console.log(downarr)
            // let arcdowncodeset=new Set()
            // downarr.map(item=>arcdowncodeset.add(item.ExtraDatas.archivekind))
            // let arcdowncode=Array.from(arcdowncodeset)
            // this.setState({arcdowncode:arcdowncode},console.log('下机零部件种类',this.state.arcdowncode))
            // //筛选出可上机零件
            // const uparr = this.state.archivesstock.slice().filter((item) => {
            //     return (item.logid ? false : true)
            // })
            // console.log(uparr)
            // //只取上机机零部件种类名
            // let arcupcodeset=new Set()
            // uparr.map(item=>arcupcodeset.add(item.ExtraDatas.archivekind))
            // let arcupcode=Array.from(arcupcodeset)
            // console.log(arcupcode)
            // this.setState({arcupcode:arcupcode},console.log('上机机零部件种类',this.state.arcupcode))
            // this.setState({
            //     downarr,
            //     uparr,
            // })                                    
            //     })
        this.dataAjax = Http.getJSON2("maintenance/items", { "parentid": this.state.rowData.id })
            .done((data) => {
                console.log('will mount Items:', data.data)
                try {
                this.setState({
                    maintainbvo: data.data,
                },this.depart());
                } 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("basetype/items", { parentid: 1 }, (data) => {
            const map = new Map()
            data.data.map((item) => { map.set(item.id, item.name) })
            this.setState({ maintainstatus: map })
        })
        //拿到维修类别数据
        Http.getJSON2("basetype/items", { parentid: 3 }, (data) => {
            const map = new Map()
            data.data.map((item) => { map.set(item.id, item.name) })
            this.setState({ maintaintype: map })
        })
        //拿到机台数据
        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("usergroupsetting", {}, (data) => {
        //     console.log(data.data)
        //     this.setState({ usergroup: data.data })
        // })
        //保养项目
        Http.getJSON2("healthchecktype", {}, (data) => {
            const map = new Map()
            data.data.map((item) => { map.set(item.healthchecktypeid, item.Name) })
            console.log("map:", map)
            this.setState({ maintainlist: map ,healthchecktypedata:data.data})
        })

    }

    componentDidMount() {
        console.log('did mount')
    }
    //保养单子档分组
    depart=()=>{
        const maintenancecontent=JSON.parse(JSON.stringify(this.state.maintainbvo)).filter(item=>item!='Deleted'&& item.archiveid ==null &&item.archiveiddown ==null&& item.arcdownkindinput ==null && item.arcdownsprcinput ==null && item.arcupkindinput ==null && item.arcupsprcinput ==null )
        const maintenancearc=JSON.parse(JSON.stringify(this.state.maintainbvo)).filter(item=>item!='Deleted'&& (item.archiveid !=null ||item.archiveiddown !=null)&& (item.arcdownkindinput !=null ||item.arcdownsprcinput !=null ||item.arcupkindinput !=null ||item.arcupsprcinput !=null ))
        this.setState({maintenancecontent:maintenancecontent,maintenancearc:maintenancearc},console.log('项目/零件',this.state.maintenancecontent,this.state.maintenancearc))
    }

    //检查保养项目前面显示的
    checkmodal=()=>{
        console.log('进入checkmodal.....')
        const maintenancecontent=JSON.parse(JSON.stringify(this.state.maintainbvo)).filter(item=>item!='Deleted'&& item.archiveid ==null &&item.archiveiddown ==null&& item.arcdownkindinput ==null && item.arcdownsprcinput ==null && item.arcupkindinput ==null && item.arcupsprcinput ==null)
        const maintenancearc=JSON.parse(JSON.stringify(this.state.maintainbvo)).filter(item=>item!='Deleted'&& (item.archiveid !=null || item.archiveiddown !=null ||item.arcdownkindinput !=null ||item.arcdownsprcinput !=null ||item.arcupkindinput !=null ||item.arcupsprcinput !=null ))
        console.log('保养项目',maintenancecontent,'已更换零部件',maintenancearc)
        let maintenancearcset=new Set()
        maintenancearc.map(item=>maintenancearcset.add(item.maintenancecontentid))
        let maintenancearcfilter=Array.from(maintenancearcset)
        maintenancearcfilter.map(arc=>{//maintenancecontentid
            let ishave=false //保养项目是否含有更换零部件里的保养项目，默认没有
            maintenancecontent.map(content=>{
                if(arc==content.maintenancecontentid){
                    ishave=true
                }
            }            
            )
            console.log(!ishave)
            if(!ishave){
                //获取是否更换零部件
                let isreplace=false
                //const selectedItem = this.state.downserialarr.filter(item=>item.logid === value)[0]
                let healthcheck=this.state.healthchecktypedata.filter(item=>item.healthchecktypeid===arc)[0]
                console.log(healthcheck)
                isreplace=healthcheck.isreplace
                //拿到新增idS
                Http.getJSON2("pida/pk", {})
                .done((data) => {
                    console.log('get pk:', data.data)
                    let defaultnewcontent = { 
                        id: data.data, 
                        status: 'New', 
                        maintenancecontentid:arc, 
                        archiveid:null,
                        archiveiddown:null,
                        parentid:this.state.rowData.parentid,
                        ExtraDatas:{'isreplace':isreplace},
                        beforeqty: 1 ,
                        afterqty:1}
                    console.log(defaultnewcontent, JSON.stringify(defaultnewcontent))
                    const maintainbvo = this.state.maintainbvo
                    maintainbvo.unshift(defaultnewcontent)
                    this.setState({ maintainbvo },console.log('保养单子档列表',this.state.maintainbvo))
                })
            //End

            }
           


        })
    }
    //更换部件确定
    modalok=()=>{
        this.setState({modal:false})
        console.log('更改前',this.state.maintainbbefore)
        console.log('更改后',this.state.maintainbvo[this.state.maintainlistindex])
        this.setState({maintainbvo:this.state.maintainbvo})   
        console.log('更改前后',this.state.maintainbbefore,this.state.maintainbvo[this.state.maintainlistindex],'保养单子档列表',this.state.maintainbvo)
        //如果修改后的上下机零部件有一个不为null，则新增一条新的
        if(this.state.maintainbvo[this.state.maintainlistindex].archiveid != null || this.state.maintainbvo[this.state.maintainlistindex].archiveiddown != null || this.state.maintainbvo[this.state.maintainlistindex].arcdownkindinput !=null ||this.state.maintainbvo[this.state.maintainlistindex].arcdownsprcinput !=null ||this.state.maintainbvo[this.state.maintainlistindex].arcupkindinput !=null ||this.state.maintainbvo[this.state.maintainlistindex].arcupsprcinput !=null  ) {
                //新增一条新的
                //拿到新增idS
                Http.getJSON2("pida/pk", {})
                .done((data) => {
                        console.log('get pk:', data.data)
                        let defaultnewcontent = { 
                            id: data.data, 
                            status: 'New',      
                            maintenancecontentid:this.state.maintainbbefore.maintenancecontentid, 
                            archiveid:null,
                            archiveiddown:null,
                            parentid:this.state.maintainbbefore.parentid,
                            ExtraDatas:{'isreplace':this.state.maintainbbefore.ExtraDatas.isreplace},
                            beforeqty: 1 ,
                            afterqty:1}
                        console.log(defaultnewcontent, JSON.stringify(defaultnewcontent))
                        const maintainbvo = this.state.maintainbvo
                        maintainbvo.unshift(defaultnewcontent)
                        this.setState({ maintainbvo },console.log('更改前后',this.state.maintainbbefore,this.state.maintainbvo[this.state.maintainlistindex],'保养单子档列表',this.state.maintainbvo))
                    })
             //End
              } 
    }
    //更换部件取消
    modalcancle=()=>{
        this.setState({modal:false})
        console.log('更改前',this.state.maintainbbefore)
        console.log('更改后',this.state.maintainbvo[this.state.maintainlistindex])
        this.state.maintainbvo[this.state.maintainlistindex]=this.state.maintainbbefore
        this.setState({maintainbvo:this.state.maintainbvo},console.log('更改前后',this.state.maintainbbefore,this.state.maintainbvo[this.state.maintainlistindex]))
    }
    //是否可有编辑权限
    isEdit = () => {
        console.log(this.state.login)//
        if (this.state.login.Employeeid === this.state.rowData.maintenancer || this.isEmpty(this.state.rowData.maintenancer) ) {
            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 maintainbvo = this.state.maintainbvo
        // maintainbvo[index].isdone = item.isdone
        // maintainbvo[index].status = 'Modified'
        // console.log("maintainbvo:", maintainbvo)
        // this.setState({
        //     maintainbvo: maintainbvo,
        // }, console.log("选择或取消后", this.state.maintainbvo, "isdone:", this.state.maintainbvo[index].isdone))
        let isdone=item.isdone === null ? true : (item.isdone === true ? false : true)//保养项目的isdone
        console.log('要用到的isdone',isdone)
        console.log('要用到的保养项目id',item.maintenancecontentid)
        let maintainbvo = this.state.maintainbvo
        maintainbvo.map((i,index)=>{
            console.log('i,index',i,index,i.status,i.isdone,i.maintenancecontentid,item.maintenancecontentid)
            if(i.maintenancecontentid===item.maintenancecontentid){
            if(i.status==='New'){
                maintainbvo[index].isdone = isdone
            }
            else{
                maintainbvo[index].isdone=isdone
                maintainbvo[index].status = 'Modified'
            }
            }
             this.setState({maintainbvo})
            //  console.log('i,index',i,index,i.status,i.isdone,i.maintenancecontentid,item.maintenancecontentid)
            //  console.log(maintainbvo)
            //  console.log(this.state.maintainbvo)
        })
        this.setState({maintainbvo})        
    }
    //上机获取序列号和批次号
    // getdata = (archiveid) => {
    //     console.log("archiveid:", archiveid)
    //     this.dataAjax = Http.getJSON2("archives/vitems", { "archiveid": archiveid }).done((archivesitem) => {
    //         console.log("archivesitem数据:", archivesitem)
    //         console.log("archivesstock数据:", this.state.archivesstock)
    //         if (archivesitem && archivesitem.data && archivesitem.data.length > 0) {
    //             archivesitem.data.filter((item) => {
    //                 return (item.logid ? false : true)
    //             })
    //         }
    //         console.log(archivesitem.data?archivesitem.data:"没有可上机零件")
    //         try {
    //         this.setState({
    //             archivesstockvo: archivesitem.data,
    //         }), () => {
    //             console.log("this.state.archivesstockvo", this.state.archivesstockvo)
    //         }
    //         } catch (err) {
    //             console.error(err.message);
    //             console.error(err.stack);
    //         }
    //     })
    // }
    //下机获取序列号和批次号
    // getarcdown = (afterpartid) => {
    //     console.log("afterpartid:", afterpartid)
    //     console.log("this.state.archivesstock:", this.state.archivesstock)
    //     const arcdowndata = this.state.archivesstock.filter((item) => {
    //         return (item.logid && item.position && item.position === this.state.rowData.deviceid && item.stockid === afterpartid)
    //     })
    //     console.log("arcdowndata2:", arcdowndata)
    //     this.setState({
    //         arcdowndata: arcdowndata,
    //     })
    //     // }
    // }
    saveup = (ptype) => {
        console.log("进入saveup")
        const maintainbvo = this.state.maintainbvo
        const index = this.state.maintainlistindex
        if (ptype === 'archiveup') {
            console.log("archiveup")
            console.log("this.state.datas:", this.state.datas)
            const selectedItem = this.state.datas
            maintainbvo[index].afterpartid = selectedItem.stockid
            console.log(selectedItem.stockid, selectedItem.ExtraDatas.archivecode, selectedItem.serialnumber, selectedItem.batchcode)
            maintainbvo[index].ExtraDatas.arcode = selectedItem.ExtraDatas.archivecode
            maintainbvo[index].serialnumber = selectedItem.serialnumber
            maintainbvo[index].batchcode = selectedItem.batchcode
            console.log("maintainbvo:", maintainbvo)
            maintainbvo[index].status = 'Modified'
            console.log("maintainbvo222:", maintainbvo)

        }
        if (ptype === 'archivedown') {
            console.log("archivedown")
            const selectedItem = this.state.downdata
            console.log("selectedItem:", selectedItem)
            maintainbvo[index].beforepartid = selectedItem.logid
            maintainbvo[index].ExtraDatas.arcode_log = selectedItem.ExtraDatas.archivecode
            maintainbvo[index].serialnumber_bef = selectedItem.serialnumber
            maintainbvo[index].batchcode_bef = selectedItem.batchcode
            maintainbvo[index].posa = selectedItem.posa
            console.log("maintainbvo:", maintainbvo)
            maintainbvo[index].status = 'Modified'
            console.log("maintainbvo222:", maintainbvo)
        }
        this.setState({ maintainbvo }, console.log("maintainbvo存入数据", this.state.maintainbvo))
    }

    //修改主档
    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 })
    }
    rowDataOnAutoComplete(type, field, value) {
        if (type === 'maintenancer'){
            const rowData = this.state.rowData
            console.log(type, field, value, rowData[field], this.state.employee.filter(item => item.Employeeid === value))
            rowData[field] = value
            rowData.ExtraDatas.maintenancername = this.state.employee.filter(item => item.Employeeid === value)[0].Name

            if (rowData['status'] == 0) {
                rowData['status'] = 'Modified'
            }
            this.setState({ rowData, deviceCode: value }, console.log(value, this.state.rowData))
        }
        if (type === 'device') {
            const rowData = this.state.rowData
            console.log(type, field, value, rowData[field], this.state.devicearr.filter(item => item.Code === value))
            rowData[field] = this.state.devicearr.filter(item => item.Code === value)[0].deviceid
            if (rowData['status'] == 0) {
                rowData['status'] = 'Modified'
            }
            this.setState({ rowData, deviceCode: value }, console.log(value, this.state.rowData))
        }
        if (type === 'usergroup') {
            const rowData = this.state.rowData
            rowData[field] = this.state.usergroup.filter(item => item.name === value)[0].groupid
            if (rowData['status'] == 0) {
                rowData['status'] = 'Modified'
            }
            this.setState({ rowData, usergroupname: value }, console.log(value, this.state.rowData))
        }
        if(type === 'down' ){
            const maintainbvo = this.state.maintainbvo
            const selectedItem = this.state.downserialarr.filter(item=>item.logid === value)[0]
            maintainbvo[this.state.maintainlistindex].beforepartid = selectedItem.logid
            maintainbvo[this.state.maintainlistindex].archiveiddown=selectedItem.archiveid//下机零部件id
            maintainbvo[this.state.maintainlistindex].ExtraDatas.archivesprcdown=selectedItem.ExtraDatas.archivesprc//下机零部件的规格

            maintainbvo[this.state.maintainlistindex].ExtraDatas.arcode_log = selectedItem.ExtraDatas.archivecode
            maintainbvo[this.state.maintainlistindex].serialnumber_bef = selectedItem.serialnumber
            maintainbvo[this.state.maintainlistindex].batchcode_bef = selectedItem.batchcode
            maintainbvo[this.state.maintainlistindex].posa = selectedItem.posa
            if (maintainbvo[this.state.maintainlistindex].status == 0) {
                maintainbvo[this.state.maintainlistindex].status = 'Modified'
            }
            this.setState({ maintainbvo })
        }
        if(type === 'up'){
            const maintainbvo = this.state.maintainbvo
            // const selectedItem = this.state.upserialarr.filter(item=>item.stockid === value)[0]
            const selectedItem = this.state.upserialarr.filter(item=>item.archiveid === value)[0]
            //maintainbvo[this.state.maintainlistindex].afterpartid = selectedItem.stockid
            maintainbvo[this.state.maintainlistindex].ExtraDatas.arcode = selectedItem.code
            maintainbvo[this.state.maintainlistindex].serialnumber = selectedItem.serialnumber
            maintainbvo[this.state.maintainlistindex].batchcode = selectedItem.batchcode
            if (maintainbvo[this.state.maintainlistindex].status == 0) {
                maintainbvo[this.state.maintainlistindex].status = 'Modified'
            }
            this.setState({ maintainbvo })
        }
    }
    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 }, this.onClose('modal'))
    }
    //修改子档
    selectedVoChange = (key) => {
        const maintainbvo = this.state.maintainbvo
        maintainbvo[this.state.maintainlistindex].maintenancecontentid = key
        if (maintainbvo[this.state.maintainlistindex].status == 0) {
            maintainbvo[this.state.maintainlistindex].status = 'Modified'
        }
        console.log('edited voData:', maintainbvo)
        this.setState({ maintainbvo }, this.onClose('modal'))
    }
    //数量/是否报废
    qtyOnchange = (index, field, e) => {
        //判断数量的输入是不是数字S
        console.log(e.length) 
        if((field==='afterqty' || field==='beforeqty') && e.length != 0){
            var r = /^\+?[1-9][0-9]*$/　//正整数
            console.log(r.test(e))
            if(!r.test(e)){
                Toast.info("数量请填写数字!", 1)
                return 
            }          
        }
        //判断数量的输入是不是数字E
        console.log(index, field, e)
        const maintainbvo = this.state.maintainbvo
        console.log(maintainbvo[index][field])
        maintainbvo[index][field] = e
        if (maintainbvo[index]['status'] == 0) {
            maintainbvo[index]['status'] = 'Modified'
        }
        console.log(maintainbvo)
        this.setState({ maintainbvo, maintainlistindex: index })
    }
    //计算工时是否在有效范围内,以分钟作为比较
    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; 
    } 

    //生成基础数据,并弹出模态窗口
    baseData = (type, index) => {
        console.log("type:", type, "index索引:", index)
        let modalTitle = type
        if (modalTitle == '保养类型') {
            this.setState({
                modal: true,
                modalTitle,
                rowDatafield: 'maintenancetypeid'
            })
        }
        if (modalTitle == '机台型号') {
            this.setState({
                modal: true,
                modalTitle,
                rowDatafield: 'deviceid'
            }, this.onDevicetypeChange(this.state.radioval))
        }
        if (modalTitle == '保养人员') {
            this.setState({
                modal: true,
                modalTitle,
                rowDatafield: 'maintenancer'
            })
        }
        if (modalTitle == '保养项目') {
            this.setState({
                modal: true,
                modalTitle,
                rowDatafield: 'maintenancecontentid',
                maintainlistindex: index

            })
        }
        if (modalTitle == '更换部件') {
            console.log("我的maintainvo:", this.state.maintainbvo,this.state.archivesstock)
            //筛选出可下机零件
            // const downarr = this.state.archivesstock.slice().filter((item) => {
            //     return (item.logid && item.position && item.position === this.state.rowData.deviceid)
            // })
            const downarr = this.state.downarc.slice().filter((item) => {
                return (item.qty>0)
            })
            //只取下机零部件种类名
            let arcdowncodeset=new Set()
            downarr.map(item=>arcdowncodeset.add(item.ExtraDatas.archivekind))
            let arcdowncode=Array.from(arcdowncodeset)
            this.setState({arcdowncode:arcdowncode},console.log('下机零部件种类',this.state.arcdowncode))
            //筛选出可上机零件
            // const uparr = this.state.archivesstock.slice().filter((item) => {
            //     return (item.logid ? false : true)
            // })
            const uparr = this.state.uparc
            console.log(uparr)
            //只取上机机零部件种类名
            let arcupcodeset=new Set()
            // uparr.map(item=>arcupcodeset.add(item.ExtraDatas.archivekind))
            uparr.map(item=>arcupcodeset.add(item.kind))
            let arcupcode=Array.from(arcupcodeset)
            console.log(arcupcode)
            this.setState({arcupcode:arcupcode},console.log('上机机零部件种类',this.state.arcupcode))
            this.setState({
                modal: true,
                modalTitle,
                maintainlistindex: index,
                downarr,
                uparr,
            },()=>{
                //对操作的保养单子档进行复制
                const maintainbbefore = JSON.parse(JSON.stringify(this.state.maintainbvo[this.state.maintainlistindex]));
                this.setState({maintainbbefore:maintainbbefore})            
                console.log('downarr/uparr',this.state.downarr,this.state.uparr)}
                )
        }
    }

    //删除指定子档
    deletemaintainbvo = (index) => {
        const maintainbvo = this.state.maintainbvo
        console.log('delete maintainbvo:', index, maintainbvo[index])
        maintainbvo[index]['status'] = 'Deleted'
        this.setState({ maintainbvo })
    }

    //新增子档
    addNewContent = () => {
        console.log('addNewContent')
        //拿到新增id
        Http.getJSON2("pida/pk", {})
            .done((data) => {
                console.log('get pk:', data.data)
                let defaultnewcontent = { id: data.data, status: 'New', ExtraDatas: {}, beforeqty: 1 }
                console.log(defaultnewcontent, JSON.stringify(defaultnewcontent))
                const maintainbvo = this.state.maintainbvo
                maintainbvo.unshift(defaultnewcontent)
                this.setState({ maintainbvo })
            })
    }
    //是否为空
    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.maintainbvo:", this.state.maintainbvo) 
        const maintainbvoarr = this.state.maintainbvo  //保养单子档
        console.log("maintainbvoarr:", maintainbvoarr)
        postdata.Items.maintenancelistvo = maintainbvoarr
        const isdonenumarr=maintainbvoarr.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
            if (this.isEmpty(this.state.rowData.workhour)){
                this.setState({ isedit: true })//重置保存次数
                Toast.info("工时不能为空!",2)
                return
            }
            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.maintenancer)){
                postdata.maintenancer=localStorage['loginemployee']
            }
            console.log('postdata:', postdata)
            Http.postJSON2("maintenance", { ...postdata }, (data => { Toast.info("保存成功!", 2,this.returntofirst(),true) }), data => { Toast.info(data.responseJSON.Error, 3) })
                .done((data) => {
                    console.log('post return:', data)
                    //刷新数据
                    //刷新零件档案
                    Http.getJSON2("archives/vitems", {}, (data) => { this.setState({ archivesstock: data.data }) })
                    //更新主档
                    Http.getJSON2("maintenance", { "id": data.id }, (data) => {
                        console.log('待刷新主档:', data.data)
                        const rowData = data.data[0]
                        this.setState({ rowData })
                    })
                    //更新子档
                    Http.getJSON2("maintenance/items", { "parentid": data.id }, data => {
                        console.log('待刷新子档:', data.data)
                        const maintainbvo = data.data
                        this.setState({ maintainbvo })
                    })
                })  
      }
        if(isdonenumarr.length!==0){
            postdata.isdone = 0
            if (postdata.status == 0) {
                postdata.status = 'Modified'
            }
            if(this.isEmpty(postdata.maintenancer)){
                postdata.maintenancer=localStorage['loginemployee']
            }
            console.log('postdata:', postdata)
            Http.postJSON2("maintenance", { ...postdata }, (data => { Toast.info("保存成功!", 2,this.returntofirst(),true) }), data => { Toast.info(data.responseJSON.Error, 3) })
                .done((data) => {
                    console.log('post return:', data)
                    //刷新数据
                    //刷新零件档案
                    Http.getJSON2("archives/vitems", {}, (data) => { this.setState({ archivesstock: data.data }) })
                    //更新主档
                    Http.getJSON2("maintenance", { "id": data.id }, (data) => {
                        console.log('待刷新主档:', data.data)
                        const rowData = data.data[0]
                        this.setState({ rowData })
                    })
                    //更新子档
                    Http.getJSON2("maintenance/items", { "parentid": data.id }, data => {
                        console.log('待刷新子档:', data.data)
                        const maintainbvo = data.data
                        this.setState({ maintainbvo })
                    })
                })
        }
        console.log("postdata:", postdata)
    }
    //返回上一个界面
    returntofirst = () => {
        history.back()
    }
    //通过机型获得对应机台
    onDevicetypeChange = (devicetypeid) => {
        const filtered = this.state.devicearr.filter(item => {
            return item.Typeid === devicetypeid
        })
        console.log('filter', filtered, devicetypeid)
        const map = new Map()
        filtered.map(item => { map.set(item.deviceid, item.Code) })
        this.setState({ device: map, radioval: devicetypeid })
    }
    onClose = key => () => {
        this.setState({
            [key]: false,
        });
    }
    render() {
        //showmap
        const showMap = (map) => {
            let array = []
            map.forEach((value, key) => {
                array.push(<List.Item
                    key={'maintianstatus' + key}
                    // arrow="horizontal"
                    multipleLine
                    onClick={() => this.selectedRowChange(key)}
                    platform="android"
                >
                    {value}
                </List.Item>)
            })
            return array
        }
        //保养内容
        const showvoMap = (map) => {
            let array = []
            map.forEach((value, key) => {
                array.push(<List.Item
                    key={'maitianlistvo' + key}
                    // arrow="horizontal"
                    multipleLine
                    onClick={() => this.selectedVoChange(key)}
                    platform="android"
                >
                    {value}
                </List.Item>)
            })
            return array
        }

        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 onClick={() => this.baseData('保养类型')} editable={false} value={this.state.maintaintype.get(this.state.rowData.maintenancetypeid)}>保养类型 :</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.maintenancer)?this.state.rowData.ExtraDatas.maintenancername:this.state.login.Name}>保养人员 :</InputItem>
                    {/* <div style={{paddingLeft:'15px', backgroundColor:'#FFFFFF', lineHeight: 1}}>
                    <div style={{borderBottom:'1px solid #ddd'}}>
                        <Flex>
                            <Flex.Item style={{flex:'0.7'}}>
                            <p style={{fontSize:'17px', marginRight:'5px'}}>保养人员 :</p>
                            </Flex.Item>
                            <Flex.Item onClick={()=>this.setState({maintenanceronFocus:true})} onFocus={()=>this.setState({maintenanceronFocus:true})} onBlur={()=>setTimeout(()=>{this.setState({maintenanceronFocus:false})},200)}>
                            <Autocomplete
                                items={this.state.employee}
                                shouldItemRender={(item, value) => item.Name.toLowerCase().indexOf(value.toLowerCase()) > -1}
                                getItemValue={item => item.Employeeid}
                                renderItem={(item, highlighted) =>
                                <div
                                    key={item.Employeeid}
                                    style={{paddingTop:'4px' ,backgroundColor: highlighted ? '#eee' : 'transparent'}}
                                >
                                    {item.Name}-{item.Code}
                                </div>
                                }
                                value={this.state.rowData.ExtraDatas.maintenancername}
                                onChange={e => {
                                    if(!this.isEmpty(this.state.rowData.maintenancer))
                                    return
                                    const rowData = this.state.rowData
                                    rowData.ExtraDatas.maintenancername = e.target.value
                                    this.setState({ rowData })
                                }}
                                onSelect={value => this.rowDataOnAutoComplete('maintenancer','maintenancer', value)}
                            /></Flex.Item>
                            <Flex.Item style={{flex:'1'}}>
                                <div>
                                   { this.state.maintenanceronFocus && this.isEmpty(this.state.rowData.maintenancer)?
                                    <img onClick={()=>{
                                        const rowData = this.state.rowData
                                        rowData.ExtraDatas.maintenancername = ''
                                        this.setState({ rowData })
                                    }} src={require('../../images/delete.png')} style={{height: '20px', width: '20px'}}/>
                                    : null
                                   }
                                </div>
                            </Flex.Item>
                        </Flex>
                    </div></div> */}
                    <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.maintainbvo)}
                        { console.log(this.state.modal) }
                        {
                          
                           this.state.modal? null: this.checkmodal() 
                        }
                        {
                            this.state.maintainbvo.map((item, index) => (
                                //item.status != 'Deleted' ?
                                item.status != 'Deleted' && item.archiveid == null && item.archiveiddown == null && item.arcdownkindinput ==null && item.arcdownsprcinput ==null && item.arcupkindinput ==null && item.arcupsprcinput ==null?
                                    <div key={'maintainbvo' + index} style={{ paddingTop: '10px' }}>
                                        <Card>
                                            <Card.Body style={{ height: "20px" }}>
                                                <Flex >
                                                    <Flex.Item style={{ flex: '3' }}><InputItem editable={false} value={this.state.maintainlist.get(item.maintenancecontentid)}></InputItem></Flex.Item>
                                                    <Flex.Item><CheckboxItem disabled={!this.isEdit()} defaultChecked={item.isdone} onChange={() => this.isfinish(item, index)} /></Flex.Item>
                                                    {item.ExtraDatas.isreplace?
                                                    <Flex.Item><Button disabled={!this.isEdit() || item.isdone} onClick={() => this.baseData('更换部件', index)} type="primary" size="small" inline >更换</Button></Flex.Item>
                                                    :
                                                    <Flex.Item></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>
                {
                    <Modal
                        popup
                        visible={this.state.modal}
                        onClose={this.onClose('modal')}
                        animationType="slide-up"
                    //afterClose={() => { alert('afterClose'); }}
                    >
                        <Card style={{ width: '100%', height: '300px', }}>
                            <Card.Header
                                style={{ textAlign: 'center' }}
                                title={this.state.modalTitle}
                                extra={<span onClick={()=>{
                                    this.onClose('modal')
                                    this.modalcancle()
                                }
                                }><img src={require('../../images/delete.png')} style={{ height: '25px', width: '25px' }} /></span>}
                            />
                            <Card.Body style={{ height: '100%', overflowY: 'auto' }}>
                                {
                                    this.state.modalTitle == '维修状态' ?
                                        <List className="popup-list">
                                            {
                                                showMap(this.state.maintainstatus)
                                            }
                                        </List>
                                        : null
                                }
                                {
                                    this.state.modalTitle == '保养类型' ?
                                        <List className="popup-list">
                                            {
                                                showMap(this.state.maintaintype)
                                            }
                                        </List>
                                        : null
                                }
                                {
                                    this.state.modalTitle == '机台型号' ?
                                        <Flex>
                                            <Flex.Item style={{ flex: '0.6' }}>
                                                <Card style={{ width: '100%', height: '300px', margin: '5px 2px 0 5px' }}>
                                                    <Card.Body style={{ height: '100%', overflowY: 'auto' }}>
                                                        <List>
                                                            {console.log('devicetype map:', this.state.devicetype)}
                                                            {this.state.devicetype.map(i => (
                                                                <RadioItem
                                                                    key={i.devtypeid} style={{ height: '40px' }} checked={this.state.radioval === i.devtypeid} onChange={() => this.onDevicetypeChange(i.devtypeid)}>{i.Code}
                                                                </RadioItem>
                                                            ))}
                                                        </List>
                                                    </Card.Body>
                                                </Card>
                                            </Flex.Item>
                                            <Flex.Item>
                                                <Card style={{ width: '95%', height: '300px', margin: '5px 5px 0 2px' }}>
                                                    <Card.Body style={{ height: '100%', overflowY: 'auto' }}>
                                                        <List>
                                                            {
                                                                showMap(this.state.device)
                                                            }
                                                        </List>
                                                        }
                                        </Card.Body>
                                                </Card>
                                            </Flex.Item>
                                        </Flex>
                                        : null
                                }
                                {
                                    this.state.modalTitle == '保养人员' ?
                                        <List className="popup-list">
                                            {
                                                showMap(this.state.employee)
                                            }
                                        </List>
                                        : null
                                }
                                {
                                    this.state.modalTitle == '保养项目' ?
                                        <List className="popup-list">
                                            {
                                                showvoMap(this.state.maintainlist)
                                            }
                                        </List>
                                        : null
                                }
                                {
                                    this.state.modalTitle == '更换部件' ?
                                        <div>
                                            <div>
                                                <List>
                                                    {console.log('maintainbvo', this.state.maintainbvo)}
                                                    <Flex>
                                                        <Flex.Item style={{ flex: '0.2' }} >
                                                            <img src={require('../../images/down.png')} style={{ height: '50px', width: '50px' }} />
                                                        </Flex.Item>
                                                        <Flex.Item >
                                                            {/* 下机部分*/}
                                                            <List.Item  >
                                                                零部件:
                                                                {console.log("可下机零件:", this.state.downarr)}
                                                                <Autocomplete
                                                                    //items={this.state.downarr === undefined ? [] : this.state.downarr}
                                                                    //shouldItemRender={(item, value) => item.ExtraDatas.archivecode.toLowerCase().indexOf(value.toLowerCase()) > -1}
                                                                    //getItemValue={item => item.ExtraDatas.archivecode}
                                                                    items={this.state.arcdowncode === undefined ? [] : this.state.arcdowncode}
                                                                    shouldItemRender={(item, value) => item.toLowerCase().indexOf(value.toLowerCase()) > -1}
                                                                    getItemValue={item => item}
                                                                    renderItem={(item, highlighted) =>
                                                                        <div
                                                                            key={item.logid}
                                                                            style={{ fontSize: '13px', paddingTop: '4px', backgroundColor: highlighted ? '#eee' : 'transparent' }}
                                                                        >
                                                                            {/* {item.ExtraDatas.archivecode + "--" + item.ExtraDatas.archivename} */}
                                                                            {item}
                                                                        </div>
                                                                    }
                                                                    //value={this.state.maintainbvo[this.state.maintainlistindex].ExtraDatas.arcode_log === null ? '': this.state.maintainbvo[this.state.maintainlistindex].ExtraDatas.arcode_log}
                                                                    //value={this.state.maintainbvo[this.state.maintainlistindex].ExtraDatas.archivekinddown === null ? '': this.state.maintainbvo[this.state.maintainlistindex].ExtraDatas.archivekinddown}
                                                                    value={this.state.maintainbvo[this.state.maintainlistindex].ExtraDatas.archivekinddown === null ? 
                                                                        (this.state.maintainbvo[this.state.maintainlistindex].arcdownkindinput===null?'':this.state.maintainbvo[this.state.maintainlistindex].arcdownkindinput)
                                                                        : 
                                                                        this.state.maintainbvo[this.state.maintainlistindex].ExtraDatas.archivekinddown}
                                                                    onChange={e => {
                                                                        this.setState({downserialarr:[]})//下机零部件种类变的时候，规格组设为空
                                                                        let maintainbvo = this.state.maintainbvo
                                                                        //maintainbvo[this.state.maintainlistindex].ExtraDatas.arcode_log = e.target.value
                                                                        maintainbvo[this.state.maintainlistindex].ExtraDatas.archivesprcdown = ''
                                                                        maintainbvo[this.state.maintainlistindex].ExtraDatas.archivekinddown = e.target.value
                                                                        //保存手输部分S
                                                                        if( this.state.downarr.filter(item => item.ExtraDatas.archivekind === e.target.value).length===0){  //零部件记录                                                                          
                                                                            this.qtyOnchange(this.state.maintainlistindex, 'arcdownkindinput',e.target.value )}
                                                                        else{
                                                                            this.qtyOnchange(this.state.maintainlistindex, 'arcdownkindinput','')   
                                                                        }
                                                                        //保存手输部分E                                                                        
                                                                        this.setState({maintainbvo:maintainbvo})
                                                                    }}
                                                                    onSelect={value => {
                                                                        //补充  
                                                                        //保存手输部分S
                                                                        if( this.state.downarr.filter(item => item.ExtraDatas.archivekind === value).length===0){  //零部件记录     
                                                                            this.qtyOnchange(this.state.maintainlistindex, 'arcdownkindinput',value)}
                                                                        else{
                                                                            this.qtyOnchange(this.state.maintainlistindex, 'arcdownkindinput','')   
                                                                        }
                                                                       //保存手输部分E                                                                         
                                                                        const maintainbvo = this.state.maintainbvo
                                                                        // maintainbvo[this.state.maintainlistindex].ExtraDatas.arcode_log = value
                                                                        // //筛选出archivename相同的零件已被序列号筛选：
                                                                        // const downserialarr = this.state.downarr.filter(item=>item.ExtraDatas.archivecode === value)
                                                                        // console.log('如果不是我',downserialarr) 
                                                                        maintainbvo[this.state.maintainlistindex].ExtraDatas.archivekinddown = value
                                                                        const downserialarr = this.state.downarr.filter(item => item.ExtraDatas.archivekind === value)
                                                                        console.log(downserialarr)
                                                                        this.setState({maintainbvo:maintainbvo,downserialarr:downserialarr})
                                                                    }}
                                                                />
                                                                {/* <br /> */}                                                                                                                                                       
                                                                <List.Item.Brief>规格号:<Autocomplete
                                                                    items={this.state.downserialarr === undefined ? [] : this.state.downserialarr}
                                                                    //shouldItemRender={(item, value) => item.serialnumber.toLowerCase().indexOf(value.toLowerCase()) > -1}
                                                                    shouldItemRender={(item, value) => item.ExtraDatas.archivesprc.toLowerCase().indexOf(value.toLowerCase()) > -1}
                                                                    getItemValue={item => item.logid}
                                                                    renderItem={(item, highlighted) =>
                                                                        <div
                                                                            key={item.logid}
                                                                            style={{ fontSize: '13px',paddingTop: '4px', backgroundColor: highlighted ? '#eee' : 'transparent' }}
                                                                        >
                                                                            {/* {item.serialnumber + "" + item.batchcode} */}
                                                                            {item.ExtraDatas.archivesprc}
                                                                        </div>
                                                                    }//
                                                                    //value={this.state.maintainbvo[this.state.maintainlistindex].serialnumber_bef === null ?'':this.state.maintainbvo[this.state.maintainlistindex].serialnumber_bef}
                                                                    //value={this.state.maintainbvo[this.state.maintainlistindex].ExtraDatas.archivesprcdown === null ?'':this.state.maintainbvo[this.state.maintainlistindex].ExtraDatas.archivesprcdown}
                                                                    value={this.state.maintainbvo[this.state.maintainlistindex].ExtraDatas.archivesprcdown === null 
                                                                        ?
                                                                        (this.state.maintainbvo[this.state.maintainlistindex].arcdownsprcinput===null?'':this.state.maintainbvo[this.state.maintainlistindex].arcdownsprcinput)
                                                                        :
                                                                        this.state.maintainbvo[this.state.maintainlistindex].ExtraDatas.archivesprcdown}
                                                                    onChange={e => {
                                                                        const maintainbvo = this.state.maintainbvo
                                                                        maintainbvo[this.state.maintainlistindex].ExtraDatas.archivesprcdown = e.target.value
                                                                       // maintainbvo[this.state.maintainlistindex].serialnumber_bef = e.target.value
                                                                       if( this.state.downserialarr.filter(item => item.ExtraDatas.archivesprc === e.target.value).length!==0){
                                                                       const selectedItem = this.state.downserialarr.filter(item => item.ExtraDatas.archivesprc === e.target.value)[0]
                                                                       maintainbvo[this.state.maintainlistindex].ExtraDatas.archivesprcdown = e.target.value
                                                                       maintainbvo[this.state.maintainlistindex].archiveiddown = selectedItem.archiveid
                                                                       }
                                                                       if( this.state.downserialarr.filter(item => item.ExtraDatas.archivesprc === e.target.value).length===0){//零部件记录
                                                                            this.qtyOnchange(this.state.maintainlistindex, 'arcdownsprcinput',e.target.value)}
                                                                       else{
                                                                            this.qtyOnchange(this.state.maintainlistindex, 'arcdownsprcinput','')   
                                                                        }
                                                                        this.setState({maintainbvo:maintainbvo})
                                                                    }}
                                                                    onSelect={value => {
                                                                        const selectedItem = this.state.downserialarr.filter(item => item.logid === value)[0]
                                                                        if( this.state.downserialarr.filter(item => item.logid === value).length!==0){
                                                                            this.qtyOnchange(this.state.maintainlistindex, 'arcdownsprcinput','')}
                                                                        const maintainbvo = this.state.maintainbvo
                                                                        maintainbvo[this.state.maintainlistindex].ExtraDatas.archivesprcdown  = selectedItem.ExtraDatas.archivesprc
                                                                        maintainbvo[this.state.maintainlistindex].archiveiddown = selectedItem.archiveid
                                                                        this.setState({ maintainbvo},console.log(this.state.maintainbvo[this.state.maintainlistindex].ExtraDatas.archivesprcdown))
                                                                        this.rowDataOnAutoComplete('down', 'logid', value)}
                                                                    }
                                                                /></List.Item.Brief>
                                                                {/* <br /> */}
                                                                {/* <List.Item.Brief>批次号:{this.state.maintainbvo[this.state.maintainlistindex].batchcode_bef}</List.Item.Brief> */}
                                                            </List.Item>
                                                        </Flex.Item>
                                                        <Flex.Item style={{ flex: '0.25' }}>
                                                                <Flex.Item style={{ textAlign: 'center', paddingBottom: '4px' }}>报废:</Flex.Item>
                                                                <Switch
                                                                    checked={this.state.maintainbvo[this.state.maintainlistindex].bscrap}
                                                                    onChange={(e) => this.qtyOnchange(this.state.maintainlistindex, 'bscrap', e)} />
                                                        </Flex.Item>
                                                    </Flex>
                                                </List>
                                            </div>
                                            <div style={{ paddingTop: 20 }}>
                                                <List>
                                                    <Flex style={{ flex: '1' }}>
                                                        <Flex.Item style={{ flex: '0.2' }} onClick={(e) => this.selectAfter(index, 'stock', e)}>
                                                            <img src={require('../../images/up.png')} style={{ height: '50px', width: '50px' }} />
                                                        </Flex.Item>
                                                        <Flex.Item >
                                                            {/* 上机部分*/}
                                                            <List.Item >
                                                                零部件:
                                                                <Autocomplete
                                                                    // items={this.state.uparr === undefined ? [] : this.state.uparr}
                                                                    // shouldItemRender={(item, value) => item.ExtraDatas.archivecode.toLowerCase().indexOf(value.toLowerCase()) > -1}
                                                                    // getItemValue={item => item.ExtraDatas.archivecode}                                       
                                                                    items={this.state.arcupcode === undefined ? [] : this.state.arcupcode}
                                                                    shouldItemRender={(item, value) => item.toLowerCase().indexOf(value.toLowerCase()) > -1}
                                                                    getItemValue={item => item}
                                                                    renderItem={(item, highlighted) =>
                                                                        <div
                                                                            key={item.stockid}
                                                                            style={{fontSize: '13px', paddingTop: '4px', backgroundColor: highlighted ? '#eee' : 'transparent' }}
                                                                        >
                                                                            {/* {item.ExtraDatas.archivecode + "--" + item.ExtraDatas.archivename} */}
                                                                            {item}
                                                                        </div>
                                                                    }
                                                                  //value={this.state.maintainbvo[this.state.maintainlistindex].ExtraDatas.arcode === null ? '' : this.state.maintainbvo[this.state.maintainlistindex].ExtraDatas.arcode}
                                                                  //value={this.state.maintainbvo[this.state.maintainlistindex].ExtraDatas.archivekind === null ? '' : this.state.maintainbvo[this.state.maintainlistindex].ExtraDatas.archivekind}                                                                  
                                                                  value={this.state.maintainbvo[this.state.maintainlistindex].ExtraDatas.archivekind === null ?
                                                                    (this.state.maintainbvo[this.state.maintainlistindex].arcupkindinput===null?'':this.state.maintainbvo[this.state.maintainlistindex].arcupkindinput)                                                                     
                                                                     : 
                                                                     this.state.maintainbvo[this.state.maintainlistindex].ExtraDatas.archivekind}   
                                                                  onChange={e =>{
                                                                        const maintainbvo = this.state.maintainbvo                                                                      
                                                                        // maintainbvo[this.state.maintainlistindex].ExtraDatas.arcode = e.target.value
                                                                        maintainbvo[this.state.maintainlistindex].ExtraDatas.archivesprc = ''
                                                                        maintainbvo[this.state.maintainlistindex].ExtraDatas.archivekind = e.target.value                                                                    
                                                                        if( this.state.uparr.filter(item => item.kind === e.target.value).length===0){  //零部件记录                                                                          
                                                                            this.qtyOnchange(this.state.maintainlistindex, 'arcupkindinput',e.target.value )}
                                                                        else{
                                                                            this.qtyOnchange(this.state.maintainlistindex, 'arcupkindinput','')   
                                                                        }        
                                                                        this.setState({maintainbvo})
                                                                    }}
                                                                    onSelect={value => {
                                                                        //保存手写部分S
                                                                        if( this.state.uparr.filter(item => item.kind === value).length===0){  //零部件记录     
                                                                            this.qtyOnchange(this.state.maintainlistindex, 'arcupkindinput',value)}
                                                                        else{
                                                                            this.qtyOnchange(this.state.maintainlistindex, 'arcupkindinput','')   
                                                                        }                               
                                                                        //保存手写部分E 
                                                                        const maintainbvo = this.state.maintainbvo
                                                                        // maintainbvo[this.state.maintainlistindex].ExtraDatas.arcode = value
                                                                        //  //筛选出archivecode相同的零件已被序列号筛选：
                                                                        //  const upserialarr = this.state.uparr.filter(item=>item.ExtraDatas.archivecode === value)
                                                                        //  console.log('如果不是我',upserialarr) 
                                                                        this.setState({ upserialarr: [] })                                                                                                                             // bvo[index].ExtraDatas.arcode = value
                                                                        maintainbvo[this.state.maintainlistindex].ExtraDatas.archivekind = value   //将vaule值赋给对应的字段，archivekind
                                                                        //筛选上机批次号备选 唯一性
                                                                        console.log(this.state.selectBefore)//库存所有的
                                                                        // const upserialnumber = this.state.selectBefore.filter(item => item.ExtraDatas.archivecode === value)
                                                                        // const upserialarr = this.state.uparr.filter(item => item.ExtraDatas.archivekind === value)
                                                                        const upserialarr = this.state.uparr.filter(item => item.kind === value)                                                                        
                                                                        console.log(upserialarr)        
                                                                        this.setState({maintainbvo,upserialarr})
                                                                    }}
                                                                />
                                                                {/* <br /> */}
                                                                <List.Item.Brief>规格号:
                                                                <Autocomplete
                                                                    items={this.state.upserialarr === undefined ? [] : this.state.upserialarr}
                                                                    // shouldItemRender={(item, value) => item.serialnumber.toLowerCase().indexOf(value.toLowerCase()) > -1}
                                                                    // shouldItemRender={(item, value) => item.ExtraDatas.archivesprc.toLowerCase().indexOf(value.toLowerCase()) > -1}
                                                                    shouldItemRender={(item, value) => item.sprc.toLowerCase().indexOf(value.toLowerCase()) > -1}                                                                    
                                                                    getItemValue={item => item.archiveid}
                                                                    renderItem={(item, highlighted) =>
                                                                        <div
                                                                            key={item.stockid}
                                                                            style={{ fontSize: '13px',paddingTop: '4px', backgroundColor: highlighted ? '#eee' : 'transparent' }}
                                                                        >
                                                                            {/* {item.serialnumber + "--" + item.batchcode} */}
                                                                            {/* {item.ExtraDatas.archivesprc} */}
                                                                            {item.sprc}
                                                                        </div>
                                                                    }
                                                                   // value={this.state.maintainbvo[this.state.maintainlistindex].serialnumber}
                                                                  // value={this.state.maintainbvo[this.state.maintainlistindex].ExtraDatas.archivesprc === null ? '' : this.state.maintainbvo[this.state.maintainlistindex].ExtraDatas.archivesprc }
                                                                  value={this.state.maintainbvo[this.state.maintainlistindex].ExtraDatas.archivesprc === null ?
                                                                    (this.state.maintainbvo[this.state.maintainlistindex].arcupsprcinput===null?'':this.state.maintainbvo[this.state.maintainlistindex].arcupsprcinput)                                                                     
                                                                     : 
                                                                     this.state.maintainbvo[this.state.maintainlistindex].ExtraDatas.archivesprc }
                                                                  onChange={e => {
                                                                        //补充
                                                                        //保存手输部分S
                                                                        if( this.state.upserialarr.filter(item => item.sprc === e.target.value).length===0){//零部件记录
                                                                            this.qtyOnchange(this.state.maintainlistindex, 'arcupsprcinput',e.target.value)}
                                                                        else{
                                                                            this.qtyOnchange(this.state.maintainlistindex, 'arcupsprcinput','')   
                                                                        }
                                                                        //保存手输部分E
                                                                        const maintainbvo = this.state.maintainbvo
                                                                        //maintainbvo[this.state.maintainlistindex].serialnumber = e.target.value
                                                                        maintainbvo[this.state.maintainlistindex].ExtraDatas.archivesprc = e.target.value
                                                                        this.setState({maintainbvo})

                                                                        //筛选到那个arckiveid的值 
                                                                    }}
                                                                    onSelect={value => 
                                                                        {
                                                                            //补充
                                                                            //保存手输部分S
                                                                            if( this.state.upserialarr.filter(item => item.archiveid === value).length!==0){
                                                                                this.qtyOnchange(this.state.maintainlistindex, 'arcupsprcinput','')}
                                                                           //保存手输部分E
                                                                            // const selectedItem = this.state.upserialarr.filter(item => item.stockid === value)[0]
                                                                            const selectedItem = this.state.upserialarr.filter(item => item.archiveid === value)[0]
                                                                            console.log(selectedItem)
                                                                            const maintainbvo = this.state.maintainbvo
                                                                            // bvo[index].ExtraDatas.archivesprc = value 
                                                                            // maintainbvo[this.state.maintainlistindex].ExtraDatas.archivesprc = selectedItem.ExtraDatas.archivesprc
                                                                            maintainbvo[this.state.maintainlistindex].ExtraDatas.archivesprc = selectedItem.sprc
                                                                            maintainbvo[this.state.maintainlistindex].archiveid = selectedItem.archiveid
                                                                            this.setState({ maintainbvo })
                                                                            this.rowDataOnAutoComplete('up', 'stockid', value)
                                                                        }

                                                                    }
                                                                /></List.Item.Brief>
                                                                {/* <br /> */}
                                                                {/* <List.Item.Brief>批次号:{this.state.maintainbvo[this.state.maintainlistindex].batchcode}</List.Item.Brief> */}
                                                            </List.Item>
                                                        </Flex.Item>
                                                        <Flex.Item style={{ flex: '0.2' }}>
                                                        </Flex.Item>
                                                    </Flex>
                                                </List>
                                                <List>
                                                    <Flex>
                                                                                                                 {/* 数量S */}
                                                                                                                 <Flex.Item style={{ flex: '0.3' }}>
                                                                <p style={{ fontSize: '16px', textAlign: 'center', fontWeight: 'bold' }}>数量: </p>
                                                            </Flex.Item>
                                                            <Flex.Item  style={{ flex: '0.6' }}>
                                                            <InputItem
                                                                    placeholder={"数量"}
                                                                    editable={this.isEdit()}
                                                                    onChange={(e) => {
                                                                        this.qtyOnchange(this.state.maintainlistindex, 'beforeqty', e)
                                                                        this.qtyOnchange(this.state.maintainlistindex, 'afterqty', e)
                                                                    }}
                                                                    style={{ borderBottom: '1px solid #333', marginRight: '10px' }}
                                                                    //type={ 'money'}
                                                                    value={this.state.maintainbvo[this.state.maintainlistindex].beforeqty}
                                                                    clear
                                                                    //moneyKeyboardAlign="left"
                                                                    //moneyKeyboardWrapProps={moneyKeyboardWrapProps}
                                                                    ></InputItem>   
                                                            </Flex.Item>
                                                            {/* 数量E */}
                                                    <Flex.Item style={{flex:'0.3'}}>
                                                        <p style={{ fontSize: '17px', textAlign: 'center', fontWeight: 'bold' }}>位置: </p>
                                                        </Flex.Item>
                                                        <Flex.Item>
                                                        <InputItem onChange={(e) => this.qtyOnchange(this.state.maintainlistindex, 'posa', e)} style={{ borderBottom: '1px solid #333', marginRight: '10px' }} value={this.state.maintainbvo[this.state.maintainlistindex].posa} ></InputItem>
                                                        </Flex.Item>
                                                        {/* <Flex.Item style={{ flex: '0.2' }}>
                                                        </Flex.Item> */}
                                                    </Flex>
                                                </List>
                                                <List>
                                                    <Flex>
                                                    <Flex.Item>
                                                        <Button type='warning'size='small'  onClick={()=>{this.modalcancle()}}>取消</Button>
                                                    </Flex.Item>
                                                    <Flex.Item >
                                                        <Button type='primary' size='small'  onClick={()=>{
                                                            
                                                            //this.modalok()
                                                            this.setState({modal:false})
                                                            // this.checkmodal()
                                                 
                                                            }}>确定</Button>
                                                    </Flex.Item>

                                                    </Flex>
                                                </List>
                                                
                                            </div>
                                        </div> : null
                                }
                            </Card.Body>
                        </Card>
                    </Modal>
                }
                {this.state.maintainbvo.filter(item=>item.status != 'Deleted' && (item.archiveid != null || item.archiveiddown != null||item.arcdownkindinput !=null ||item.arcdownsprcinput !=null ||item.arcupkindinput !=null ||item.arcupsprcinput !=null)).length>0?
                <div style={{ paddingLeft:'11px',paddingTop: '3px', fontSize: '15px', height: '20px' ,color:'#778899'}}> 已更换零件</div>
                :null
            }
                {this.state.maintainbvo.map((item, index) => (
                               item.status != 'Deleted' && (item.archiveid != null || item.archiveiddown != null ||item.arcdownkindinput !=null ||item.arcdownsprcinput !=null ||item.arcupkindinput !=null ||item.arcupsprcinput !=null)?
                                    <div key={'maintainbvo' + index} style={{ paddingLeft:'10px',paddingRight:'10px', fontSize: '17px' ,color:'#778899'}} >
                                        <WhiteSpace size="lg" />
                                        <Card>
                                            {/* <Card.Header
                                                title={item.status == 'New' ? <span><img src={require('../../images/new.png')} style={{ height: '25px', width: '25px' }} /></span> : ''}
                                                extra={<span onClick={() => this.deletemaintainbvo(index)}><img src={require('../../images/delete.png')} style={{ height: '25px', width: '25px' }} /></span>}
                                            /> */}
                                            <Card.Body>
                                                <div>
                                                    <List>
                                                    {/* <InputItem onClick={()=> this.baseData('保养项目', index)} editable={false} value={this.state.maintainlist.get(item.maintenancecontentid)}>保养项目:</InputItem> */}
                                                        <Flex>
                                                            {/* <Flex.Item style={{ flex: '0.2' }} onClick={(e) => this.selectBefore(index, 'log', e)}> */}
                                                            <Flex.Item style={{ flex: '0.2' }} >
                                                                <img src={require('../../images/down.png')} style={{ height: '50px', width: '50px' }} />
                                                            </Flex.Item>
                                                            <Flex.Item>
                                                                <List.Item
                                                                    multipleLine
                                                                   // onClick={(e) => this.selectBefore(index, 'log', e)}
                                                                >
                                                                    零部件:
                                                                    {item.ExtraDatas.archivekinddown===null?(item.arcdownkindinput===null?'':item.arcdownkindinput):item.ExtraDatas.archivekinddown}              
                                                                    <List.Item.Brief>
                                                                    规格号:{item.ExtraDatas.archivesprcdown===null?(item.arcdownsprcinput===null?'':item.arcdownsprcinput):item.ExtraDatas.archivesprcdown}  
                                                                    </List.Item.Brief>
                                                                </List.Item>
                                                            </Flex.Item>
                                                            <Flex.Item style={{ flex: '0.3' }}>
                                                                <Flex.Item style={{ textAlign: 'center', paddingBottom: '4px' }}>报废:</Flex.Item>
                                                                <Switch
                                                                    disabled={true}
                                                                    checked={this.state.maintainbvo[index].bscrap}
                                                                   // onChange={(e) => this.qtyOnchange(index, 'bscrap', e)} 
                                                                   />
                                                            </Flex.Item>
                                                        </Flex>
                                                    </List>
                                                </div>
                                                <div>
                                                    <List>
                                                        <Flex>
                                                            {/* <Flex.Item style={{ flex: '0.2' }} onClick={(e) => this.selectAfter(index, 'stock', e)}> */}
                                                            <Flex.Item style={{ flex: '0.2' }} >
                                                                <img src={require('../../images/up.png')} style={{ height: '50px', width: '50px' }} />
                                                            </Flex.Item>
                                                            <Flex.Item>
                                                                <List.Item
                                                                    multipleLine
                                                                    //onClick={(e) => this.selectAfter(index, 'stock', e)}
                                                                >
                                                                     零部件:
                                                                    {item.ExtraDatas.archivekind===null?(item.arcupkindinput===null?'':item.arcupkindinput):item.ExtraDatas.archivekind}
                                                                    <List.Item.Brief>
                                                                    规格号:{item.ExtraDatas.archivesprc===null?(item.arcupsprcinput===null?'':item.arcupsprcinput):item.ExtraDatas.archivesprc}
                                                                    </List.Item.Brief>
                                                                </List.Item>
                                                            </Flex.Item>
                                                            <Flex.Item style={{ flex: '0.2' }}>
                                                            </Flex.Item>
                                                        </Flex>
                                                    </List>
                                                    <List>
                                                        <Flex>
                                                         {/* 数量S */}
                                                         <Flex.Item style={{ flex: '0.3' }}>
                                                                <p style={{ fontSize: '16px', textAlign: 'center', fontWeight: 'bold' }}>数量: </p>
                                                            </Flex.Item>
                                                            <Flex.Item  style={{ flex: '0.6' }}>
                                                            <InputItem
                                                                    placeholder={"数量"}
                                                                    editable={false}
                                                                    onChange={(e) => {
                                                                        this.qtyOnchange(index, 'beforeqty', e)
                                                                        this.qtyOnchange(index, 'afterqty', e)
                                                                    }}
                                                                    style={{ borderBottom: '1px solid #333', marginRight: '10px' }}
                                                                    //type={ 'money'}
                                                                    value={this.state.maintainbvo[index].beforeqty}
                                                                    //clear
                                                                    //moneyKeyboardAlign="left"
                                                                    //moneyKeyboardWrapProps={moneyKeyboardWrapProps}
                                                                    ></InputItem>   
                                                            </Flex.Item>
                                                            {/* 数量E */}
                                                            <Flex.Item style={{ flex: '0.3' }}>
                                                                <p style={{ fontSize: '17px', textAlign: 'center', fontWeight: 'bold' }}>位置: </p>
                                                            </Flex.Item>
                                                            <Flex.Item>
                                                                <InputItem editable={false} onChange={(e) => this.qtyOnchange(index, 'posa', e)} style={{ borderBottom: '1px solid #333', marginRight: '10px' }} value={this.state.maintainbvo[index].posa} ></InputItem>
                                                            </Flex.Item>
                                                        </Flex>
                                                    </List>
                                                </div>
                                            </Card.Body>
                                        </Card>                                 
                                    </div> : ''
                            ))
                        }
                </div>

        
        )
    }


}