/**
 * 维修单新增
 */
import React from 'react';
import ReactDOM from 'react-dom';
import {WingBlank ,Steps,Tabs,List, TextareaItem, Radio, DatePicker, Switch, Button, WhiteSpace, Toast, Card, InputItem, Modal, Flex, Checkbox } from 'antd-mobile';
import { Http } from '../../Utils/help';
import Autocomplete from '../../Utils/Autocomplete'
import CardBody from 'antd-mobile/lib/card/CardBody';
// import { browserHistory } from 'react-router';
const prompt = Modal.prompt;
const Step = Steps.Step;
const operation = Modal.operation
const RadioItem = Radio.RadioItem;
const alert = Modal.alert;
//数量S
const isIPhone = new RegExp('\\biPhone\\b|\\biPod\\b', 'i').test(window.navigator.userAgent);
let moneyKeyboardWrapProps;
if (isIPhone) {
  moneyKeyboardWrapProps = {
    onTouchStart: e => e.preventDefault(),
  };
}
//数量E
const tabs = [
    { title: '工单信息' },
    { title: '工单进度' },
  ];
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 maintaindetail extends React.Component {
    constructor(props) {
        super(props);
        const { func, rowData } = this.props.location.state;
        this.qtyOnchange = this.qtyOnchange.bind(this)
        this.selectBefore = this.selectBefore.bind(this)
        this.selectAfter = this.selectAfter.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.onClose = this.onClose.bind(this)
        this.isEmpty = this.isEmpty.bind(this)
        this.isOut = this.isOut.bind(this)
        this.onDevicetypeChange = this.onDevicetypeChange.bind(this)
        this.rowDataOnAutoComplete = this.rowDataOnAutoComplete.bind(this)
        this.okAutocomplete = this.okAutocomplete.bind(this)
        this.isEdit = this.isEdit.bind(this)
        this.returntofirst = this.returntofirst.bind(this)
        this.getNowFormatDate = this.getNowFormatDate.bind(this)
        this.Assist = this.Assist.bind(this)
        this.choose=this.choose.bind(this)
        this.maintianbcount=this.maintianbcount.bind(this)
        this.onzero=this.onzero.bind(this)
        this.havereplace=this.havereplace.bind(this)
        this.onworkhourmodal=this.onworkhourmodal.bind(this)
        this.checkworkhour=this.checkworkhour.bind(this)
        this.state = {
            func: func,
            rowData: rowData,
            //starttime:null,
            //endtime:null,
            //维修单子档
            maintainbvo: [],
            //零部件库存情况
            archivesstock: [],
            //维修状态列表
            maintainstatus: new Map(),
            //车间
            workshopname: new Map(),
            waitid: '',//维修等待id
            //维修类型
            maintaintype: new Map(),
            //机台型号
            device: new Map(),
            //员工
            employee: new Map(),
            //模态窗口是否显示:
            modal: false,
            //更换前/后备选[临时]
            selectBefore: [],
            //正在修改的maintainbvo 的index  临时
            maintainbvoindex: null,
            //模态窗标题 临时
            modalTitle: '',
            //主档编辑字段 临时
            rowDatafield: '',
            date: '',
            //机型
            devicetype: [],
            //机台array
            devicearr: [],
            //radio value
            radioval: '',
            //机型自动完成 
            deviceCode: rowData.ExtraDatas.devcode === null || rowData.ExtraDatas.devcode === undefined ? '' : rowData.ExtraDatas.devcode,
            maintenancerarr: [],
            //维修人员自动完成
            maintenancer: rowData.ExtraDatas.employeename === null || rowData.ExtraDatas.employeename === undefined ? '' : rowData.ExtraDatas.employeename,
            //下机零件名数组
            downarchivecode: [],
            downarc:[],//下机零部件记录组
            //上机零件名数组
            uparchivecode: [],
            uparc:[],//零部件的档案
            isdone: rowData.stacon,//是否完成初始为false，表示维修状态为未完成。
            isedit: true,//限制保存的次数
            login: {},
            stacon: rowData.stacon,
            //自由输入
            onarchivekindup: '',//输入的上机零部件种类
            onarchivesprcup: '',//输入的上机零部件规格      
            stepdata:[],//步骤条数据 
            emp:[] ,//邀请的维修人员名单   
            show:false,//维修人员modal是否展示
            radiovalemp:null,//选中的人员名字
        }
    }
    //取得子档json数据集
    componentWillMount () {
        //下机:如果该条维修单无机台，下机零部件记录组为空.
        if(this.state.rowData.position===null){
            this.setState({ downarc: []})
        }
        else{
            Http.getJSON2("archives/archiveslogitems",{position:this.state.rowData.position}, (data) => { 
                console.log('零部件下机记录downarc',data.data)
                this.setState({  downarc: data.data}) })     
        }
        //上机：直接加载零部件
        Http.getJSON2("archives",{}, (data) => { 
            console.log('零部件档案uparc',data.data)
            this.setState({  uparc: data.data}) }) 
        //单据进度，条件参数：报修的id
        this.dataAjax2=Http.getJSON2("ds/data/repairs/steps",{'repairid':this.state.rowData.source}).done((data)=>{
            console.log(data)
            this.setState({stepdata:data})
        })
        console.log('will mount')
        Http.postJSON2("employee/getlogin", {}, data => {
            console.log(data)
            this.setState({ login: data[0] })
        }).done(data => {
            console.log(this.state)
        }),
            console.log('rowData: ', this.state.rowData)
        this.dataAjax = Http.getJSON2("maintain/items", { "maintainid": this.state.rowData.maintainid })
            .done((data) => {
                console.log('will mount Items:', data.data)
                try {
                    this.setState({
                        maintainbvo: data.data,
                    });
                    console.log("this.state", this.state)
                } catch (err) {
                    console.error(err.message);
                    console.error(err.stack);
                }
            });
        //拿到所有维修人员名单   
        Http.getJSON2("employee/getuserid", {}, (data) => { this.setState({ emp: data }) })
        console.log('维修单',this.state.rowData)
        //拿到零件档案
        // Http.getJSON2("archives/searchitems",{deviceid:this.state.rowData.position===null?'null':this.state.rowData.position}, (data) => { 
        //     console.log('零部件上下机',data)
        //     this.setState({ archivesstock: data}) })      
        //Http.getJSON2("archives/vitems", {}, (data) => { this.setState({ archivesstock: data.data }) })
        //拿到维修状态数组
        Http.getJSON2("basetype/items", { parentid: 1 }, (data) => {
            this.setState({ maintainstatusdata: data.data })
            const map = new Map()
            data.data.map((item) => { map.set(item.id, item.name) })
            console.log(data.data)
            const id = data.data.filter(item => item.name === '维修等待')[0].id
            this.setState({ maintainstatus: map, waitid: id })
            console.log('维修状态', this.state.maintainstatus)
        })
        //拿到维修类别数据
        Http.getJSON2("basetype/items", { parentid: 2 }, (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("workshop", { disabled: 'false' }, (data) => {
            const map = new Map()
            data.data.map((item) => { map.set(item.Workshopid, item.Name) })
            console.log(data) //所有车间的车间信息
            this.setState({ workshopname: map })
           // this.setState({ workshoparr: data.data }, console.log(this.state.workshoparr))
            //console.log(this.state.workshoparr)
        })
        //员工数据
        Http.getJSON2("employee", { 'quit': 'false' }, (data) => {
            const maintenancerarr = data.data
            const map = new Map()
            data.data.map((item) => { map.set(item.Employeeid, item.Name) })
            this.setState({ employee: map, maintenancerarr })
        })
    }
    componentDidMount () {
        console.log('did mount')
        console.log('维修状态表', this.state.maintainstatusdata)
        //获取维修等待的id
        //const selectedItem = this.state.upserialnumber.filter(item => item.stockid === value)[0]
        //const id=this.state.upserialnumber.filter(item => item.stockid === value)[0]
    }
    //通过机型获得对应机台
    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 })
    }
    //自动填入工时=结束时间-开始时间
    diffTime = () => {
        var begtime = new Date(this.state.rowData.begtime);//开始时间
        var endtime = new Date(this.state.rowData.endtime)//结束时间
        var diff = endtime.getTime() - begtime.getTime();//时间差的毫秒数 
        var minute = Math.ceil(diff / (60 * 1000));          //计算出分钟数 
        return minute;
    }
    //邀请协助生成维修单
    choose=()=>{
        this.dataAjax = Http.getJSON2("serialnods", { "": "/maintain" })
            .done((data) => {
                try {
                    //处理一下上传的数据从维修单取对应的内容赋值给维修单的字段名，维修单编号，机台，问题描述，状态
                    const rowData = this.state.rowData
                    let postData = {}//生成的维修单数据
                    postData.position = rowData.position//机台
                    postData.status = 'New'//状态
                    postData.trouble = rowData.trouble//备注那一栏对应问题描述
                    postData.billno = data[0].serialno
                    postData.source = rowData.source
                    postData.stacon = '2'//维修中
                    postData.billtype='2020116201310000111'//维修单类型，协助处理
                    postData.repairser = rowData.repairser
                    postData.Creator = localStorage['loginemployee']
                    postData.impactdegreeid = rowData.impactdegreeid
                    postData.userid = this.state.radiovalemp.Employeeid
                    postData.malfunctionid = rowData.malfunctionid
                    postData.begtime = this.getNowFormatDate()
                    console.log('postdata:', postData)
                    Http.postJSON2("maintain/savesend", { ...postData }, () => Toast.info("邀请成功！", 3, this.returntofirst(), true), data => { Toast.info(data.responseJSON.Error, 3) })
                    console.log('维修单数据', postData)
                } catch (err) {
                    console.error(err.message);
                    console.error(err.stack);
                }
            });
    }
    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 hour=date.getHours()<10? "0" + date.getHours():date.getHours();
      var minute = date.getMinutes()<10? "0" +date.getMinutes():date.getMinutes();
      var second = date.getSeconds()<10? "0" + date.getSeconds():date.getSeconds();
      var currentdate = date.getFullYear() + seperator1  + month  + seperator1  + strDate
              + " "  + hour  + seperator2  + minute
              + seperator2 + second;
      return currentdate;
  }
    //是否可有编辑权限
    isEdit = () => {
        if (this.state.login.Employeeid === this.state.rowData.userid) {
            if (this.state.rowData.stacon === '1') {
                {
                    return false
                }
            } else {
                return true
            }
        } else {
            return false
        }
    }
    //修改主档
    rowDataOnchange = (field, e) => {
        const rowData = this.state.rowData
        //结束时间改变是将维修单的状态置为1
        if (field === 'endtime') {
            this.setState({ 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 === '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 === 'maintenancer') {
            const rowData = this.state.rowData
            rowData[field] = this.state.maintenancerarr.filter(item => item.Name === value)[0].Employeeid
            if (rowData['status'] === 0) {
                rowData['status'] = 'Modified'
            }
            this.setState({ rowData, maintenancer: value }, console.log(value, this.state.rowData))
        }
    }
    //是否委外
    isOut = () => {
        const rowData = this.state.rowData
        console.log(!null)
        rowData.isout = !rowData.isout
        if (rowData.status == 0) {
            rowData.status = 'Modified'
        }
        console.log('edit rowData:', rowData)
        this.setState({ rowData })
    }
    selectedRowChange = (key) => {
        const rowData = this.state.rowData
        rowData[this.state.rowDatafield] = key
        if (rowData.status == 0) {
            rowData.status = 'Modified'
        }
        console.log('edited rowData:', rowData)
        this.setState({ rowData }, this.onClose('modal'))
    }
    //数量/是否报废
    qtyOnchange = (index, field, e) => {
        //判断数量的输入是不是数字S
        console.log(e.length)
        if(field==='qty' && 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'
        }
        this.setState({ maintainbvo, maintainbvoindex: index })
    }
    //生成更换前零件备选单并弹出模态窗口
    selectBefore = (index, type, value) => {
        // const before = this.state.archivesstock.filter((item) => {
        //     return (item.logid && item.position && item.position === this.state.rowData.position)
        // })
        // console.log('selectBefore:', before, value, index, type)
        const before=this.state.downarc.filter((item)=>{
            return(item.qty>0)
        })
        //筛选下机零件备选 唯一性
        let archivecodeset = new Set()
        // before.map(item => archivecodeset.add(item.ExtraDatas.archivecode))
        before.map(item => archivecodeset.add(item.ExtraDatas.archivekind))//对应零部件记录
        //before.map(item => archivecodeset.add(item.kind))//对应archivesstock，searchvaule
        let downarchivecode = Array.from(archivecodeset)
        console.log(downarchivecode)
        let modalTitle
        if (type == 'log')
            modalTitle = '选取下机配件'
        this.setState({
            // modal: true,
            selectBefore: before,
            maintainbvoindex: index,
            modalTitle,
            //下机零件名数组
            downarchivecode,
        })
    }
    //生成基础数据,并弹出模态窗口
    baseData = (type) => {
        let modalTitle = type
        if (modalTitle == '维修状态') {
            this.setState({
                modal: true,
                modalTitle,
                rowDatafield: 'stacon'
            })
        }
        if (modalTitle == '维修类别') {
            this.setState({
                modal: true,
                modalTitle,
                rowDatafield: 'maintaintype'
            })
        }
        if (modalTitle == '维修人员') {
            this.setState({
                modal: true,
                modalTitle,
                rowDatafield: 'userid'
            })
        }

        // if(this.state.rowData.status != 'New')
        // return
        // let modalTitle = type
        if (modalTitle == '机台型号') {
            this.setState({
                modal: true,
                modalTitle,
                rowDatafield: 'position'
            }, this.onDevicetypeChange(this.state.radioval))
        }
    }

    //生成更换后零件备选单
    selectAfter = (index, type, value) => {
        // const after = this.state.archivesstock.filter((item) => {
        //     return (item.logid ? false : true)
        // })
        // console.log('selectAfter:', after, value, index, type)
        const after=this.state.uparc
        //筛选上机机零件备选 唯一性
        let archivecodeset = new Set()
        console.log('after', after)
        //after.map(item => archivecodeset.add(item.ExtraDatas.archivecode))
        // after.map(item => archivecodeset.add(item.ExtraDatas.archivekind))
        after.map(item => archivecodeset.add(item.kind))
        let uparchivecode = Array.from(archivecodeset)
        console.log(uparchivecode)
        let modalTitle
        if (type == 'stock')
            modalTitle = '选取上机配件'
        this.setState({
            //modal: true,
            selectBefore: after,
            maintainbvoindex: index,
            modalTitle,
            uparchivecode,
        })
    }

    //删除指定子档
    deletemaintainbvo = (index) => {
        if (this.state.login.Employeeid === this.state.rowData.userid) {
            if (this.state.rowData.stacon === '1') {
                return
            }
            else {
                const maintainbvo = this.state.maintainbvo
                console.log('delete maintainbvo:', index, maintainbvo[index])
                maintainbvo[index]['status'] = 'Deleted'
                this.setState({ maintainbvo })
            }
        }
        else {
            return
        }
    }

    //选取下机零件点选触发赋值
    okselectBefore = (index) => {
        if (this.state.modalTitle == '选取下机配件') {
            const maintainbvo = this.state.maintainbvo
            const selectedItem = this.state.selectBefore[index]
            maintainbvo[this.state.maintainbvoindex].logid = selectedItem.logid
            // maintainbvo[this.state.maintainbvoindex].ExtraDatas.arcode_log = selectedItem.ExtraDatas.archivecode
            maintainbvo[this.state.maintainbvoindex].ExtraDatas.arcode_log = selectedItem.code
            maintainbvo[this.state.maintainbvoindex].serialnumber_bef = selectedItem.serialnumber
            maintainbvo[this.state.maintainbvoindex].batchcode_bef = selectedItem.batchcode
            maintainbvo[this.state.maintainbvoindex].posa = selectedItem.posa
            if (maintainbvo[this.state.maintainbvoindex].status == 0) {
                maintainbvo[this.state.maintainbvoindex].status = 'Modified'
            }
            this.setState({ maintainbvo }, this.onClose('modal'))
        }
        if (this.state.modalTitle == '选取上机配件') {
            const maintainbvo = this.state.maintainbvo
            const selectedItem = this.state.selectBefore[index]
            maintainbvo[this.state.maintainbvoindex].stockid = selectedItem.stockid
            // maintainbvo[this.state.maintainbvoindex].ExtraDatas.arcode = selectedItem.ExtraDatas.archivecode
            maintainbvo[this.state.maintainbvoindex].ExtraDatas.arcode = selectedItem.code
            maintainbvo[this.state.maintainbvoindex].serialnumber = selectedItem.serialnumber
            maintainbvo[this.state.maintainbvoindex].batchcode = selectedItem.batchcode
            if (maintainbvo[this.state.maintainbvoindex].status == 0) {
                maintainbvo[this.state.maintainbvoindex].status = 'Modified'
            }
            this.setState({ maintainbvo }, this.onClose('modal'))
        }
    }
    //自动完成上下机点击触发修改方法 id是被点选的id 下机是logid 上机是stockid(search),archiveid(零部件档案)
    okAutocomplete = (id) => {
        if (this.state.modalTitle == '选取下机配件') {
            console.log(id) 
            const maintainbvo = this.state.maintainbvo
            const selectedItem = this.state.downserialnumber.filter(item => item.logid === id)[0]
            console.log(selectedItem)
            maintainbvo[this.state.maintainbvoindex].logid = selectedItem.logid
            maintainbvo[this.state.maintainbvoindex].archiveiddown = selectedItem.archiveid
            maintainbvo[this.state.maintainbvoindex].ExtraDatas.archivesprcdown = selectedItem.ExtraDatas.archivesprc
            //maintainbvo[this.state.maintainbvoindex].ExtraDatas.archivesprcdown = selectedItem.sprc
            //maintainbvo[this.state.maintainbvoindex].ExtraDatas.arcode_log = selectedItem.ExtraDatas.archivecode
            maintainbvo[this.state.maintainbvoindex].serialnumber_bef = selectedItem.serialnumber
            maintainbvo[this.state.maintainbvoindex].batchcode_bef = selectedItem.batchcode
            maintainbvo[this.state.maintainbvoindex].posa = selectedItem.posa
            if (maintainbvo[this.state.maintainbvoindex].status == 0) {
                maintainbvo[this.state.maintainbvoindex].status = 'Modified'
            }
            this.setState({ maintainbvo }, this.onClose('modal'))
        }
        if (this.state.modalTitle == '选取上机配件') {
            const maintainbvo = this.state.maintainbvo
            //const selectedItem = this.state.upserialnumber.filter(item => item.stockid === id)[0]//search
            const selectedItem = this.state.upserialnumber.filter(item => item.archiveid === id)[0]//search
            console.log(selectedItem)
            //maintainbvo[this.state.maintainbvoindex].stockid = selectedItem.stockid
            maintainbvo[this.state.maintainbvoindex].archiveid = selectedItem.archiveid
            // maintainbvo[this.state.maintainbvoindex].ExtraDatas.archivesprc = selectedItem.ExtraDatas.archivesprc
            maintainbvo[this.state.maintainbvoindex].ExtraDatas.archivesprc = selectedItem.sprc
            //maintainbvo[this.state.maintainbvoindex].ExtraDatas.arcode = selectedItem.ExtraDatas.archivecode
            maintainbvo[this.state.maintainbvoindex].serialnumber = selectedItem.serialnumber
            maintainbvo[this.state.maintainbvoindex].batchcode = selectedItem.batchcode
            if (maintainbvo[this.state.maintainbvoindex].status == 0) {
                maintainbvo[this.state.maintainbvoindex].status = 'Modified'
            }
            this.setState({ maintainbvo }, this.onClose('modal'))
        }
    }
    //计算非删除子档数量S
    maintianbcount=()=>{
        let number=0
        for(let i=0;i<this.state.maintainbvo.length;i++){
            console.log(this.state.maintainbvo[i])
            if(this.state.maintainbvo[i].status != 'Deleted'){
                number=number+1
            }
        }
        return number
    }
    //计算非删除子档数量(不包括删除)E
    //非删除子档数量为0的弹出S
    onzero=() =>{
        alert('确认无更换零部件??', '', [
          { text: '确认', onPress: () => {this.setState({ifcheck:false},()=>{this.save(1)})} },
          { text: '有更换', onPress: () =>{this.havereplace()} },
        ])
    }
    //非删除子档数量为0的弹出E
    //点击有更换触发的事件
    havereplace=()=>{
        const rowData=this.state.rowData
        rowData.stacon= '2'
        this.setState({ rowData })

    }
    //新增子档
    addNewContent = () => {
        this.setState({ onarchivesprcup: '' })
        console.log('addNewContent')
        //拿到新增id
        Http.getJSON2("pida/pk", {})
            .done((data) => {
                console.log('get pk:', data.data)
                let defaultnewcontent = { bid: data.data, status: 'New', ExtraDatas: {} ,qty: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;
        }
    }
    returntofirst = () => {
        history.back()
    }
    //提交保存

    save = (key) => {
        let isedit = !this.state.isedit
        this.setState({ isedit })
        //整合提交数据
        //如果状态为维修等待，判断预估等待时间是否为空
        if (this.state.rowData.stacon === this.state.waitid) {
            if (this.isEmpty(this.state.rowData.waitforecasttime)) {
                this.setState({ isedit: true })//重置保存次数
                Toast.info("请填写预估等待时间!", 1)
                return
            }
        }
        //如果状态为维修完成
        if (this.state.rowData.stacon === '1') {
            console.log(this.maintianbcount())
            //非删除子档数量为0时的提醒,ifcheck要不要检查的判断条件
            if(this.state.ifcheck){
            if(this.maintianbcount()==0){
                this.setState({ isedit: true })//重置保存次数
                this.onzero()
                return
            }
           }
            //维修完成，工时不能为空
            if (this.isEmpty(this.state.rowData.workhour)) {
                this.setState({ isedit: true })//重置保存次数
                Toast.info("请填写工时!", 1)
                return
            }
            //判断工时是否填写在有效范围内(先判断是否含有字符)
            if (!this.isEmpty(this.state.rowData.workhour)) {
                if(this.checkworkhour(this.state.rowData.workhour)){
                  this.setState({ isedit: true })//重置保存次数
                      Toast.info("工时填写不可以含有字符!", 1,()=>{this.onworkhourmodal()})
                      return
                }
                else{
                  this.setState({ isedit: true })//重置保存次数
                  var jsminute = this.diffTime();
                  var minute = this.state.rowData.workhour * 60-1
                  if (minute > jsminute) {
                      Toast.info("工时填写时间超出结束时间与开始时间范围!", 1,()=>{this.onworkhourmodal()})
                      return
                  }
                }
            }

        }
        //如果状态为维修中
        if (this.state.rowData.stacon === '2') {
            this.state.rowData.workhour = null
            this.state.rowData.endtime = null
            this.state.rowData.waitforecasttime = null
            this.state.rowData.waitstarttime = null
            this.setState({ rowData: this.state.rowData })
        }

        const postdata = this.state.rowData
        const maintainbvoarr = this.state.maintainbvo
        postdata.Items.maintainbvo = maintainbvoarr
        if (postdata.status == 0) {
            postdata.status = 'Modified'
        }

        console.log('postdata:', postdata)
        if (key === 1) {
            Http.postJSON2("maintain", { ...postdata }, (data => { Toast.info("保存成功!", 1, () => 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("maintain", { "maintainid": data.maintainid }, (data) => {
                        console.log('待刷新主档:', data.data)
                        const rowData = data.data[0]
                        this.setState({ rowData })
                    })
                    //更新子档
                    Http.getJSON2("maintain/items", { "maintainid": data.maintainid }, data => {
                        console.log('待刷新子档:', data.data)
                        const maintainbvo = data.data
                        this.setState({ maintainbvo })
                    })

                })
        } else {
            var now = this.getNowFormatDate()
            postdata.endtime = now
            postdata.stacon = '4'
            Http.postJSON2("maintain", { ...postdata }, (data => { Toast.info("退单成功!", 1, () => 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("maintain", { "maintainid": data.maintainid }, (data) => {
                    //     console.log('待刷新主档:', data.data)
                    //     const rowData = data.data[0]
                    //     this.setState({ rowData })
                    // })
                    // //更新子档
                    // Http.getJSON2("maintain/items", { "maintainid": data.maintainid }, data => {
                    //     console.log('待刷新子档:', data.data)
                    //     const maintainbvo = data.data
                    //     this.setState({ maintainbvo })
                    // })
                })
        }
    }

    Assist = ()=>{
        console.log("请求协助处理")
        const postdata = this.state.rowData
        Http.postJSON2("maintain/Assist", { ...postdata }, 
            (data => { Toast.info("保存成功!", 1, () => this.returntofirst(), true) }), 
            (data => { Toast.info(data.responseJSON.Error, 3) })
        )
    }

    onClose = key => () => {
        this.setState({
            [key]: false,
        });
    }
    //------------------------------------------------------------------------
    //工时确认的modal设定
    onworkhourmodal=()=>{prompt('工时核对修改', '(单位:小时)', [
      { text: '取消' ,onPress:()=>{   
                  const rowData = this.state.rowData                                        
                  rowData.stacon = '2'
                  rowData.endtime = null
                  rowData.waitforecasttime = null
                  rowData.waitstarttime = null
                  rowData.workhour = null
                  console.log(2, rowData.stacon)
                  this.setState({ rowData }, console.log(3, this.state.rowData.stacon))
                   }},
      { text: '确认', onPress: (value)=> {
                console.log(value)
                this.rowDataOnchange('workhour', value)
                this.save(1)
                  }},
     ], 'default', this.isEmpty(this.state.rowData.workhour)?(this.diffTime()/60.0).toFixed(2):this.state.rowData.workhour)
   }
   //判断工时是否含有非负浮点数,有返回true，无返回false
   checkworkhour=(value)=>{
      if(value.length != 0){
         var r = /^\d+(\.\d+)?$/　//正整数
         console.log(r.test(value))
         if(!r.test(value)){
            //  Toast.info("工时填写不可以含有字符", 1,)
             return true
         }  
         else{
            return  false
         }        
     }
   }
   //------------------------------------------------------------------------------------------
    render () {
        const customIcon = () => (
            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 42 42" className="am-icon am-icon-md">
              <g fillRule="evenodd" stroke="transparent" strokeWidth="4">
                <path d="M21 0C9.402 0 0 9.402 0 21c0 11.6 9.402 21 21 21s21-9.4 21-21C42 9.402 32.598 0 21 0z" />
              </g>
            </svg>
          )
        //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
        }
        return (
            <div key={'divwrap'} style={{backgroundColor: '#ffffff'}}>
                <Tabs tabs={tabs} initialPage={0} animated={false} useOnPan={false}>
                <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', backgroundColor: '#fff' }}>
                {<div key={'divmain'} style={{ height: '100%',width:'100%',padding:'10px',backgroundColor: '#fff'}}>
                    <InputItem onChange={(e) => this.rowDataOnchange('billno', e)} value={this.state.rowData.billno}>维修单号 :</InputItem>
                    <InputItem editable={false} value={this.state.maintainstatus.get(this.state.rowData.stacon)}>维修状态:</InputItem>
                    {/* <InputItem onClick={()=> this.baseData('维修类别')} editable={false} value={this.state.maintaintype.get(this.state.rowData.maintaintype)}>维修类别 :</InputItem> */}
                    {/* <InputItem editable={false} value={this.state.rowData.createtime}>建单时间 :</InputItem> */}
                    <InputItem editable={false} value={this.state.rowData.ExtraDatas.devcode}>机台编号 :</InputItem>
                    <InputItem editable={false} value={this.state.workshopname.get(this.state.rowData.ExtraDatas.workshopname) ? this.state.workshopname.get(this.state.rowData.ExtraDatas.workshopname) : this.state.rowData.ExtraDatas.workshopname}>车间名称:</InputItem>
                    {/* <InputItem editable={false} value={this.state.employee.get(this.state.rowData.repairser)}>报修人员:</InputItem> */}
                    <InputItem editable={false} value={this.state.rowData.ExtraDatas.repairsername}>报修人员:</InputItem>
                    <InputItem editable={false} value={this.state.rowData.ExtraDatas.employeename}>维修人员:</InputItem>
                    <InputItem editable={false} value={this.state.rowData.ExtraDatas.impactdegreename}>影响程度:</InputItem>
                    <InputItem editable={false} value={this.state.rowData.ExtraDatas.malfunctionname}>故障类型:</InputItem>
                    <TextareaItem value={this.state.rowData.trouble} editable={false} title="问题描述 :" autoHeight={true}></TextareaItem>
                    <div style={{ paddingTop: '10px', backgroundColor: '#FFF' }}></div>
                    <DatePicker
                        //disabled={!this.isEdit()}
                        disabled={true}
                        title="开始时间"
                        // mode="date"
                        value={convertDateFromString(this.state.rowData.begtime)}
                        onChange={date => this.rowDataOnchange('begtime', formatDate(date))}
                    >
                        <List.Item arrow="horizontal">开始时间 :</List.Item>
                    </DatePicker>
                    <div style={{ paddingTop: '10px', backgroundColor: '#FFF' }}></div>
                    <DatePicker
                        // disabled={!this.isEdit()}//是否禁用，维修状态完成时不再允许更改
                        extra='点击完成时自动生成'
                        disabled={true}
                        title="结束时间"
                        // mode="date"
                        value={convertDateFromString(this.state.rowData.endtime)}
                        onChange={date => this.rowDataOnchange('endtime', formatDate(date))}
                    >
                        <List.Item arrow="horizontal">结束时间 :</List.Item>
                    </DatePicker>
                    <InputItem placeholder='维修完成时务必填写' editable={this.isEdit()} value={this.state.rowData.workhour} onChange={(e) => this.rowDataOnchange('workhour', e)} >工时(小时):</InputItem>
                    <TextareaItem placeholder={this.state.stacon === '2' ? '维修完成的补充说明' : null} editable={this.isEdit()} value={this.state.rowData.comment} onChange={(e) => this.rowDataOnchange('comment', e)} title="备  注:" autoHeight={true}></TextareaItem>
                    {
                        this.state.rowData.userid === this.state.login.Employeeid && this.state.isdone !== '1' ?
                            <Flex style={{ paddingLeft: '5px', backgroundColor: '#FFF', fontSize: '16px' }}>
                                {/* 是否完成 */}
                                <Flex.Item style={{ paddingLeft: '10px', backgroundColor: '#FFF', fontSize: '16px' }}>
                                    是否完成:  <Checkbox checked={this.state.rowData.stacon === '1' ? true : false} style={{ fontSize: '16px' }} onClick={() => {
                                        const rowData = this.state.rowData
                                        var now = this.getNowFormatDate();
                                        let stacon = this.state.rowData.stacon  //存储维修状态的值，作为if结构的判断条件
                                        if (stacon !== '1') { //状态不为1的时候
                                            var now = this.getNowFormatDate();
                                            rowData.endtime = now;
                                            this.setState({ rowData }, this.onworkhourmodal())
                                            console.log('结束时间', this.state.rowData.endtime)
                                          //   if (this.isEmpty(this.state.rowData.workhour)) {
                                          //       Toast.info("请填写工时!", 1)
                                          //       return
                                          //   }
                                          //   if (!this.isEmpty(this.state.rowData.workhour)) {
                                          //       var jsminute = this.diffTime();
                                          //       var minute = this.state.rowData.workhour * 60
                                          //       if (minute > jsminute) {
                                          //           Toast.info("工时填写时间超出结束时间与开始时间范围!", 2)
                                          //           return
                                          //       }
                                          //   }
                                            rowData.waitforecasttime = null
                                            rowData.waitstarttime = null
                                            rowData.stacon = '1'
                                        } else if (stacon === '1') {
                                            rowData.stacon = '2'
                                            rowData.endtime = null
                                            rowData.waitforecasttime = null
                                            rowData.waitstarttime = null
                                            rowData.workhour = null
                                            console.log(2, rowData.stacon)
                                        }
                                        this.setState({ rowData }, console.log(3, this.state.rowData.stacon))
                                    }}></Checkbox>
                                </Flex.Item >
                                {/* 是否待料 */}
                                <Flex.Item style={{ paddingLeft: '10px', backgroundColor: '#FFF', fontSize: '16px' }}>
                                    是否等待:
                                <Checkbox
                                        checked={this.state.rowData.stacon === this.state.waitid ? true : false}
                                        style={{ fontSize: '16px' }}
                                        onClick={() => {
                                            const rowData = this.state.rowData  //获取当前单据
                                            var now = this.getNowFormatDate()   //获取当前时间，用于赋值
                                            let stacon = this.state.rowData.stacon  //存储维修状态的值，作为if结构的判断条件
                                            //单据原来的状态不为维修等待，点击触发，状态变为3(this.state.waitid)，同时要求填写预估等待时间，赋值等待开始时间
                                            if (stacon !== this.state.waitid) {
                                                rowData.stacon = this.state.waitid
                                                var now = this.getNowFormatDate()
                                                rowData.waitstarttime = now
                                                rowData.endtime = null
                                                //rowData.workhour=null
                                                this.setState({ rowData })
                                            }
                                            //单据原来的状态为维修等待，点击触发，状态变为维修中(2)，同时等待开始时间、预估等待时间为null
                                            if (stacon === this.state.waitid) {
                                                rowData.stacon = '2'
                                                rowData.endtime = null
                                                rowData.waitstarttime = null
                                                rowData.waitforecasttime = null
                                                //rowData.workhour=null
                                                this.setState({ rowData })
                                            }
                                            this.setState({ rowData })
                                        }}




                                    ></Checkbox>
                                </Flex.Item>

                            </Flex> : null
                    }

                    {
                        this.state.rowData.stacon === this.state.waitid ?
                            <div style={{ paddingLeft: '13px', backgroundColor: '#FFF', fontSize: '16px' }}>
                                <Flex>
                                    <Flex.Item style={{ flex: '0.5' }}>
                                        <p style={{ fontSize: '17px' }}>预估等待时间(小时):</p>
                                    </Flex.Item>
                                    <Flex.Item style={{ flex: '0.5' }}>
                                        <InputItem placeholder='以小时为单位'
                                            moneyKeyboardAlign="left"
                                            //editable={this.isEdit()} 
                                            value={this.state.rowData.waitforecasttime}
                                            onChange={(e) => this.rowDataOnchange('waitforecasttime', e)}


                                        ></InputItem>
                                    </Flex.Item>
                                </Flex>
                            </div>
                            :
                            null
                    }

                    <div>
                        <List>
                            <List.Item>
                                {
                                    <Flex>
                                        <Flex.Item><h3>明细 : </h3></Flex.Item>
                                        <Flex.Item style={{ flex: '0.3' }}></Flex.Item>
                                        {/* <Flex.Item>
                                            <Button
                                                disabled={this.state.rowData.userid === this.state.login.Employeeid && this.state.isdone !== '1' && this.state.isedit ? false : true}
                                                onClick={() => this.save(2)} type="primary" size="small" inline>
                                                退单
                                            </Button>
                                        </Flex.Item>
                                        <Flex.Item>
                                            <Button
                                                disabled={!this.isEdit()} onClick={() => this.isOut()} type="primary" size="small" inline>
                                                {!this.state.rowData.isout ? '委外' : '撤回'}
                                            </Button>
                                        </Flex.Item>*/}
                                        <Flex.Item>
                                            <Button
                                                disabled={!this.isEdit()} onClick={() => this.addNewContent()} type="primary" >
                                                更换
                                            </Button>
                                        </Flex.Item> 
                                        <Flex.Item>
                                            <Button
                                                disabled={this.state.rowData.userid === this.state.login.Employeeid && this.state.isdone !== '1' && this.state.isedit ? false : true}
                                                onClick={() => this.save(1)} type="primary"  >保存
                                            </Button>
                                        </Flex.Item>
                                        {console.log('维修人员名单',this.state.emp)}
                                        <Flex.Item>
                                            <Button
                                                disabled={this.state.rowData.userid === this.state.login.Employeeid && this.state.isdone !== '1' && this.state.isedit ? false : true}
                                                type="primary"
                                                onClick={() => operation([
                                                        { text: '退单', onPress: () => this.save(2) },
                                                        { text: !this.state.rowData.isout ? '委外' : '撤回', onPress: () => this.isOut() },
                                                        { text: '请求协助', onPress: () => this.Assist() },
                                                        { text:'邀请协助',onPress: () => {this.setState({show:true})} },
                                                    ])
                                                }
                                            >
                                                更多
                                            </Button>
                                        </Flex.Item>
                                    </Flex>
                                }
                            </List.Item>

                        </List>
                        {console.log('render:', this.state.maintainbvo)}
                        {console.log('维修单子档非删除数量:', this.maintianbcount())}
                        {
                            this.state.maintainbvo.map((item, index) => (
                                item.status != 'Deleted' ?
                                    <div key={'maintainbvo' + index} >
                                        <WhiteSpace size="lg" />
                                        <Card>
                                            <Card.Header
                                                title={item.status == 'New' ? <span style={{ color: 'blue' }}><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>
                                                        {/* 下机部分 */}
                                                        <Flex>
                                                            <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)}
                                                                >
                                                                    零部件:
                                                                    <Autocomplete
                                                                        inputProps={{ disabled: !this.isEdit() }}
                                                                        items={this.state.downarchivecode === undefined ? [] : this.state.downarchivecode}
                                                                        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}

                                                                            </div>
                                                                        }
                                                                        value={item.ExtraDatas.archivekinddown === null ? (item.arcdownkindinput===null?'':item.arcdownkindinput) : item.ExtraDatas.archivekinddown}
                                                                        onChange={e => {
                                                                            console.log('下机零部件种类输入',e.target.value)//输入的内容
                                                                            this.setState({ downserialnumber: [] })
                                                                            const bvo = this.state.maintainbvo
                                                                            bvo[index].ExtraDatas.archivekinddown = e.target.value
                                                                            bvo[index].ExtraDatas.archivesprcdown = ''
                                                                            console.log(this.state.selectBefore)
                                                                           // if( this.state.selectBefore.filter(item => item.kind === e.target.value).length===0){//searchvales
                                                                            if( this.state.selectBefore.filter(item => item.ExtraDatas.archivekind === e.target.value).length===0){  //零部件记录                                                                          
                                                                                this.qtyOnchange(this.state.maintainbvoindex, 'arcdownkindinput',e.target.value )}
                                                                            else{
                                                                                this.qtyOnchange(this.state.maintainbvoindex, 'arcdownkindinput','')   
                                                                            }
                                                                            
                                                                            this.setState({ maintainbvo: bvo })
                                                                        }}
                                                                        onSelect={value => {
                                                                            //if( this.state.selectBefore.filter(item => item.kind === value).length===0){//searchvales
                                                                            if( this.state.selectBefore.filter(item => item.ExtraDatas.archivekind === value).length===0){  //零部件记录     
                                                                                this.qtyOnchange(this.state.maintainbvoindex, 'arcdownkindinput',value)}
                                                                            else{
                                                                                this.qtyOnchange(this.state.maintainbvoindex, 'arcdownkindinput','')   
                                                                            }
                                                                            const bvo = this.state.maintainbvo
                                                                            bvo[index].ExtraDatas.archivekinddown = value
                                                                            //筛选下机规格号备选 唯一性
                                                                            const downserialnumber = this.state.selectBefore.filter(item => item.ExtraDatas.archivekind === value)
                                                                            //const downserialnumber = this.state.selectBefore.filter(item => item.kind === value)
                                                                            //取对应serialnumber中的第一个logid
                                                                            console.log(downserialnumber)
                                                                            // let serialnumberlist=new Set()
                                                                            // downserialnumber.map(item=>serialnumberlist.add(item.serialnumber))
                                                                            // let serialnumberarr = Array.from(serialnumberlist)//规格号数组
                                                                            // console.log(downserialnumber)
                                                                            // console.log(serialnumberarr)
                                                                            // const every=[]
                                                                            // for(let i=0;i<=serialnumberarr.length-1;i++){
                                                                            // console.log(serialnumberarr[i])
                                                                            // let serarr=downserialnumber.filter(item=>item.serialnumber===serialnumberarr[i])//每个规格号的上机记录
                                                                            // every.push(serarr[0])}
                                                                            // console.log(every)
                                                                            // this.setState({maintainbvo:bvo, downserialnumber:every})}}
                                                                            this.setState({ maintainbvo: bvo, downserialnumber: downserialnumber })
                                                                        }}
                                                                    />
                                                                    <List.Item.Brief>规格号:
                                                                    <Autocomplete
                                                                            inputProps={{ disabled: !this.isEdit(), fontSize: '13px' }}
                                                                            items={this.state.downserialnumber === undefined ? [] : this.state.downserialnumber}//archivesprc
                                                                            shouldItemRender={(item, value) => item.ExtraDatas.archivesprc.toLowerCase().indexOf(value.toLowerCase()) > -1}
                                                                            //shouldItemRender={(item, value) => item.sprc.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.sprc} */}
                                                                                    {item.ExtraDatas.archivesprc}
                                                                                </div>
                                                                            }//
                                                                            value={item.ExtraDatas.archivesprcdown === null ? (item.arcdownsprcinput===null?'':item.arcdownsprcinput)  : item.ExtraDatas.archivesprcdown}
                                                                            onChange={e => {
                                                                                console.log('下机规格改变',e.target.value)//输入内容
                                                                                if(typeof(this.state.downserialnumber)=="undefined"){this.state.downserialnumber=[]}
                                                                                console.log(this.state.downserialnumber)
                                                                               // if( this.state.downserialnumber.filter(item => item.sprc === e.target.value).length===0){//search
                                                                               if( this.state.downserialnumber.filter(item => item.ExtraDatas.archivesprc === e.target.value).length===0){//零部件记录
                                                                                    this.qtyOnchange(this.state.maintainbvoindex, 'arcdownsprcinput',e.target.value)}
                                                                                else{
                                                                                    this.qtyOnchange(this.state.maintainbvoindex, 'arcdownsprcinput','')   
                                                                                }
                                                                                const selectedItem = this.state.downserialnumber.filter(item => item.logid === e.target.value)[0]
                                                                                const bvo = this.state.maintainbvo
                                                                                bvo[index].ExtraDatas.archivesprcdown = e.target.value
                                                                                bvo[index].archiveiddown = selectedItem.archiveid
                                                                                this.setState({ maintainbvo: bvo })
                                                                                //console.log(this.state.selectBefore)
                                                                            }}
                                                                            onSelect={value => {
                                                                                console.log('下机规格选择',value)//id
                                                                                const selectedItem = this.state.downserialnumber.filter(item => item.logid === value)[0]
                                                                                const bvo = this.state.maintainbvo
                                                                                console.log(selectedItem)
                                                                                //bvo[index].ExtraDatas.archivesprcdown = selectedItem.archivesprc
                                                                                bvo[index].ExtraDatas.archivesprcdown = selectedItem.ExtraDatas.archivesprc
                                                                                bvo[index].archiveiddown = selectedItem.archiveid
                                                                                if( this.state.downserialnumber.filter(item => item.logid === value).length!==0){
                                                                                    this.qtyOnchange(this.state.maintainbvoindex, 'arcdownsprcinput','')}
                                                                                this.setState({ maintainbvo: bvo })
                                                                                console.log(selectedItem)
                                                                                this.okAutocomplete(value)
                                                                            }}
                                                                        />
                                                                    </List.Item.Brief>
                                                                    {/* <List.Item.Brief>批次号:{item.batchcode_bef}</List.Item.Brief> */}
                                                                    {/* 零部件:{item.ExtraDatas.arcode_log}
                                                                    <List.Item.Brief>序列号:{item.serialnumber_bef}</List.Item.Brief>
                                                                    <List.Item.Brief>批次号:{item.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
                                                                    disabled={!this.isEdit()}
                                                                    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' }}>
                                                                <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)}
                                                                >
                                                                    零部件:
                                                                    <Autocomplete
                                                                        inputProps={{ disabled: !this.isEdit(), fontSize: '13px' }}
                                                                        items={this.state.uparchivecode === undefined ? [] : this.state.uparchivecode}
                                                                        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}
                                                                            </div>
                                                                        }//
                                                                        // value={item.ExtraDatas.arcode === null ? '' : item.ExtraDatas.arcode}
                                                                        value={item.ExtraDatas.archivekind === null ? (item.arcupkindinput===null?'':item.arcupkindinput) : item.ExtraDatas.archivekind}
                                                                        onChange={e => {
                                                                            console.log(this.state.selectBefore) 
                                                                            if( this.state.selectBefore.filter(item => item.kind === e.target.value).length===0){//一样，零部件档案、search.
                                                                                this.qtyOnchange(this.state.maintainbvoindex, 'arcupkindinput',e.target.value )}
                                                                            else{
                                                                                this.qtyOnchange(this.state.maintainbvoindex, 'arcupkindinput','')   
                                                                            }
                                                                            console.log('e', e.target.value)//输入的值
                                                                            const bvo = this.state.maintainbvo
                                                                            // bvo[index].ExtraDatas.arcode = e.target.value    //将vaule值赋给对应的字段，archivekind
                                                                            bvo[index].ExtraDatas.archivesprc = ''
                                                                            bvo[index].ExtraDatas.archivekind = e.target.value
                                                                            this.setState({ onarchivekindup: e.target.value })
                                                                        }}
                                                                        onSelect={value => {
                                                                            if( this.state.selectBefore.filter(item => item.kind === value).length===0){
                                                                                this.qtyOnchange(this.state.maintainbvoindex, 'arcupkindinput',value)}
                                                                            else{
                                                                                this.qtyOnchange(this.state.maintainbvoindex, 'arcupkindinput','')   
                                                                            }
                                                                            this.setState({ upserialnumber: [] })
                                                                            const bvo = this.state.maintainbvo
                                                                            // bvo[index].ExtraDatas.arcode = value
                                                                            bvo[index].ExtraDatas.archivekind = value   //将vaule值赋给对应的字段，archivekind
                                                                            //筛选上机批次号备选 唯一性
                                                                            console.log(this.state.selectBefore)//库存所有的/零部件档案
                                                                            // const upserialnumber = this.state.selectBefore.filter(item => item.ExtraDatas.archivecode === value)
                                                                            const upserialnumber = this.state.selectBefore.filter(item => item.kind === value)
                                                                            console.log(upserialnumber)
                                                                            this.setState({ maintainbvo: bvo, upserialnumber: upserialnumber })
                                                                        }}
                                                                    />
                                                                    <List.Item.Brief>规格号:
                                                                    <Autocomplete
                                                                            inputProps={{ disabled: !this.isEdit(), fontSize: '13px' }}
                                                                            items={this.state.upserialnumber === undefined ? [] : this.state.upserialnumber}
                                                                            // 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.stockid} //search
                                                                            getItemValue={item => item.archiveid}//零部件档案
                                                                            renderItem={(item, highlighted) =>
                                                                                <div
                                                                                    key={item.stockid}
                                                                                    style={{ fontSize: '13px', paddingTop: '4px', backgroundColor: highlighted ? '#eee' : 'transparent' }}
                                                                                >
                                                                                    {/* {item.serialnumber} */}
                                                                                    {item.sprc}
                                                                                </div>
                                                                            }
                                                                            // value={item.serialnumber === null ? '' : item.serialnumber}
                                                                            value={item.ExtraDatas.archivesprc === null ? (item.arcupsprcinput===null?'':item.arcupsprcinput)  : item.ExtraDatas.archivesprc}
                                                                            onChange={e => {
                                                                                if(typeof(this.state.upserialnumber)=="undefined"){this.state.upserialnumber=[]}
                                                                                if( this.state.upserialnumber.filter(item => item.sprc === e.target.value).length===0){
                                                                                    this.qtyOnchange(this.state.maintainbvoindex, 'arcupsprcinput',e.target.value)}
                                                                                else{
                                                                                    this.qtyOnchange(this.state.maintainbvoindex, 'arcupsprcinput','')   
                                                                                }
                                                                                this.setState({ onarchivesprcup: e.target.value })
                                                                                console.log('item',item)
                                                                                console.log(this.state.selectBefore)
                                                                                const bvo = this.state.maintainbvo
                                                                                // bvo[index].serialnumber = e.target.value  //改维修子档的内容
                                                                                bvo[index].ExtraDatas.archivesprc = e.target.value
                                                                                //筛选到那个arckiveid的值 
                                                                                this.setState({ maintainbvo: bvo })
                                                                            }}
                                                                            onSelect={value => {
                                                                                this.setState({ onarchivesprcup: value })
                                                                                // this.state.onarchivesprcup=value
                                                                                //console.log(this.state.onarchivesprcup)
                                                                                //console.log(value)
                                                                                //const selectedItem = this.state.upserialnumber.filter(item => item.stockid === value)[0]//search
                                                                                const selectedItem = this.state.upserialnumber.filter(item => item.archiveid === value)[0]//零部件档案
                                                                                //if( this.state.upserialnumber.filter(item => item.logid === value).length!==0){//search
                                                                                if( this.state.upserialnumber.filter(item => item.archiveid === value).length!==0){    
                                                                                    this.qtyOnchange(this.state.maintainbvoindex, 'arcupsprcinput','')}
                                                                                console.log(selectedItem)
                                                                                const bvo = this.state.maintainbvo
                                                                                // bvo[index].ExtraDatas.archivesprc = value 
                                                                                // bvo[index].ExtraDatas.archivesprc = selectedItem.ExtraDatas.archivesprc
                                                                                bvo[index].ExtraDatas.archivesprc = selectedItem.sprc
                                                                                bvo[index].archiveid = selectedItem.archiveid
                                                                                this.setState({ maintainbvo: bvo })
                                                                                this.okAutocomplete(value)
                                                                            }}

                                                                        />
                                                                    </List.Item.Brief>
                                                                    {/* <List.Item.Brief>批次号:{item.batchcode}</List.Item.Brief> */}
                                                                    {/* 零部件:{item.ExtraDatas.arcode}
                                                                    <List.Item.Brief>序列号:{item.serialnumber}</List.Item.Brief>
                                                                    <List.Item.Brief>批次号:{item.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(index, 'qty', e)}
                                                                    style={{ borderBottom: '1px solid #333', marginRight: '10px' }}
                                                                    //type={ 'money'}
                                                                    value={this.state.maintainbvo[index].qty}
                                                                    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 placeholder={"位置"}editable={this.isEdit()} onChange={(e) => this.qtyOnchange(index, 'posa', e)} style={{ borderBottom: '1px solid #333', marginRight: '10px' }} value={this.state.maintainbvo[index].posa} ></InputItem>
                                                            </Flex.Item>
                                                            {/* <Flex.Item style={{ flex: '0.2' }}>
                                                            </Flex.Item> */}
                                                        </Flex>
                                                    </List>
                                                </div>
                                            </Card.Body>
                                        </Card>
                                        <WhiteSpace size="lg" />
                                    </div> : ''
                            ))
                        }
                    </div>

                </div>}
                {/* 维修人员名单2.0 */}
                
                <Modal
                    popup
                    //transparent
                    visible={this.state.show}
                  //  closable="true"
                   // onClose={()=>{this.setState({show:false})}}
                    animationType="slide-up"                            
                  >
                      <div style={{height:'430px'}}>

                      <List renderHeader={() => <div>邀请协助</div>} className="popup-list">
                          <Flex>
                              <Flex.Item>
                                  <Card style={{ width: '100%', height: '300px', margin: '5px 2px 0 5px' }}>
                                      <CardBody style={{ height: '100%', overflowY: 'auto' }}>
                                          <List>
                          {this.state.emp.map(data=>{
                              return <RadioItem 
                                style={{ height: '40px',textAlign:'center'}} 
                                checked={data==this.state.radiovalemp?true:false}
                                onClick={()=>{this.setState({radiovalemp:data})}}                           
                              > {data.Name}</RadioItem>
                            
                              
                          })}
                          </List>
                          </CardBody>
                          </Card>
                          </Flex.Item>
                          </Flex>
                      </List>
                      <WingBlank size="sm">
                        <WhiteSpace />
                        <Flex>
                       <Flex.Item><Button type="warning" onClick={()=>{this.setState({radiovalemp:null,show:false})}}>取消</Button></Flex.Item>
                       <Flex.Item><Button type="primary" onClick={()=>{
                            this.setState({show:false})
                            this.choose()
                            }}>确定</Button></Flex.Item> 
                        </Flex>
                    <WhiteSpace />
                     </WingBlank>

                      </div>
                  </Modal>
                    

                
                {
                    <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')}><img src={require('../../images/delete.png')} style={{ height: '25px', width: '25px' }} /></span>}
                            />
                            <Card.Body style={{ height: '100%', overflowY: 'auto' }}>

                                {/* {
                                    this.state.modalTitle == '选取下机配件' || this.state.modalTitle == '选取上机配件' ?
                                        <List className="popup-list">
                                            {this.state.selectBefore.map((i, index) => (
                                                <List.Item
                                                    key={'selectbeforeitem' + index}
                                                    arrow="horizontal"
                                                    multipleLine
                                                    onClick={() => { this.okselectBefore(index) }}
                                                    platform="android"
                                                >
                                                    档案编号:{i.ExtraDatas.archivecode} <List.Item.Brief>档案名:{i.ExtraDatas.archivename}<br /> 批次号:{i.serialnumber}</List.Item.Brief>
                                                </List.Item>
                                            ))}
                                        </List>
                                        : null
                                } */}

                                {
                                    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 == '维修人员' ?
                                        <List className="popup-list">
                                            {
                                                showMap(this.state.employee)
                                            }
                                        </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
                                }

                            </Card.Body>
                        </Card>
                    </Modal>
                }
    </div>
    <div style={{display: 'flex', alignItems: 'center', justifyContent: 'left', backgroundColor: '#fff' }}>
       <div style={{paddingLeft:'20px',paddingTop:'15px',backgroundColor: '#fff'}}> 
            <Steps current={100}   status="error">
                {
                    this.state.stepdata.map(i=>{
                        return <Step title={i.name+''+i.behavior}  icon={customIcon()}  description={i.time} />
                    })
                }
            </Steps>
       </div>
    </div>               
  </Tabs>      
        </div>
        )
    }


}