import {
  SEARCH_LIST,
  SET_LABEL,
  FILL_ACTIVE,
  GET_EXCEL,
  CHECK_VALUE_IS_CHANGE,
  CLEAR_LABEL,
  RESET_LABEL,
  CLEAR_ALL_LABEL,
  DEL_PART_ITEM,
  DEL_EXCEL_LIST,
  ADD_LABEL,
  SET_CONTEXT,
  SET_TIP_NEW,
  SEARCH_TYPE,
  DEL_ONE_PIC,
  CHECK_ON_OFF,
  REINSPECTDATA,
  CLEARINSPECTDATA,
} from '../types/inspect';
import store from '@store';
import { getStringPlus,  getPushLists,  getPushList,getCurrentDate} from '@utils/tools.js';

const initSearchList = {
    list: [], //搜索的结果
    labelList: [], //选中的结果,也是需要保存的数据
    labelListActive: [], //缓存值
    fillActive: {}, //选中的标签的填写单

    getExcelData: {}, //导入的数据
    inspectStrPlus:'',

    getExcelDataList: [], //导入的数据
    pushItem:[],    //推送的数据
    pushItems:[],    //右侧模板预览的数据
    inspectVal:'',
    context:{},
    shType:2,
    labelListBig:[],//大项
    labelListSmall:[],//小项
    totalOrder:[],//开单项
}

export default (state = initSearchList, action) => {
    if (action.type == CHECK_ON_OFF) {
        const newState = Object.assign({}, state);
        let tempArr = newState.labelListBig;
        let tempArrs = newState.labelListSmall;
        let tmpLis = action.item,tempBigOrder=[],tempSmallOrder=[],tempTotalOrder=[];
        if(tmpLis&&tmpLis.flg == 1){
            for(let i = 0;i < tempArr.length;i++){
                if(action.tip == i){
                    let flg = tempArr[i].check;
                    tempArr[i].check = !flg
                }
            }
            newState.labelListBig = [...tempArr]
        }else{
            for(let i = 0;i < tempArrs.length;i++){
                if(action.tip==i){
                    let flg = tempArrs[i].check;
                    tempArrs[i].check = !flg
                }
            }
            newState.labelListSmall = [...tempArrs]
        }
        tempBigOrder = tempArr.filter((item)=>item.check)
        tempSmallOrder = tempArrs.filter((item)=>item.check)
        tempTotalOrder=tempBigOrder.concat(tempSmallOrder)
        newState.totalOrder=[...tempTotalOrder]
        return newState;
    }
    if (action.type == DEL_ONE_PIC) {
        const newState = Object.assign({}, state);
        let tempArr = newState.labelListBig;
        let tempArrs = newState.labelListSmall;
        let tmpLis = action.item,tempBigOrder=[],tempSmallOrder=[],tempTotalOrder=[];
        if(tmpLis&&tmpLis.flg == 1){//大项
            tempArr = tempArr.filter((item,idx)=>{
                if(action.tip != idx){
                    return item
                }
            })
            newState.labelListBig = [...tempArr]
        }else{//小项
            tempArrs = tempArrs.filter((item,idx)=> {
                if(action.tip != idx){
                    return item
                }
            })
            newState.labelListSmall = [...tempArrs]
        }
        tempBigOrder = tempArr.filter((item)=>item.check)
        tempSmallOrder = tempArrs.filter((item)=>item.check)
        tempTotalOrder=tempBigOrder.concat(tempSmallOrder)
        newState.totalOrder=[...tempTotalOrder]
        return newState;
    }

    if (action.type == SET_TIP_NEW) {
        const newState = Object.assign({}, state);
        let tempArr = newState.labelListBig;
        let tempArrs = newState.labelListSmall;
        let tmpLis = action.item
        if(tmpLis.flg == 1){//大项,改的只能是时间
            tempArr = tempArr.filter((item,idx)=>{
                if(action.sign==idx){
                    item.time = action.value
                    item.dateValue = action.value
                }
                return item
            })
        }else{
            tempArrs = tempArrs.filter((item,idx)=>{
                if(action.sign == idx){
                    if(action.tip==1){//小项改时间
                        item.time = action.value
                        item.dateValue = action.value
                    }else{//小项该数值
                        if(isNumber(action.value-0)){
                            item.value = action.value
                            item.otherValue = ''
                        }else{
                            item.otherValue = action.value
                            item.value = ''
                        }
                    }
                }
                return item
            })
        }
        newState.labelListBig = [...tempArr]
        newState.labelListSmall = [...tempArrs]
        return newState;
    }
    if (action.type == SEARCH_TYPE) {
        const newState = Object.assign({}, state);
        newState.shType = action.value
        return newState;
    }
    if (action.type == RESET_LABEL) {             //选中的结果重组
        const newState = Object.assign({}, state);
        const tempArr = newState.labelListBig;
        const tempArrs = newState.labelListSmall;
        let tmpLis = action.list
        tmpLis['dateValue'] = getCurrentDate(1)
        tmpLis['time'] = getCurrentDate(1)
        if(tmpLis.flg == 1){//大项
            tempArr.push(tmpLis)
            newState.labelListBig = [...tempArr]
        }else{//小项
            tempArrs.push(tmpLis)
            newState.labelListSmall = [...tempArrs]
        }
        return newState;
    }
    if (action.type == SEARCH_LIST) {
        const newState = Object.assign({}, state);
        newState.list = action.list
        newState.inspectVal = action.val
        return newState;
    }
    if (action.type == SET_LABEL) {             //选中的结果    
        const newState = Object.assign({}, state);
        let tempArr = [];
        if(action.sign == 'common'){
          let tmpInspectList = store.getState().homePage.inspectList
          tempArr = tmpInspectList;
        }else{
          tempArr = newState.list
        }
        const tempArrs = newState.labelList;
        for (let i = 0; i < tempArr.length; i++) {
            if (i == action.idx) {
                tempArrs.push(tempArr[i])
                newState.labelList = [...tempArrs]
            }
        }
        
        let tmpArr = newState.getExcelDataList;
        let tmpArr2 = newState.labelList;
        newState.pushItems = getPushLists(tmpArr,tmpArr2);
        newState.inspectStrPlus = getStringPlus(newState.pushItems)
        return newState;
    }
    if (action.type == ADD_LABEL) {             //右侧推送的检验检查项，点击开单放到左侧检验检查的位置上
        const newState = Object.assign({}, state);
        const tempArr = newState.labelList;
        for(let i = 0;i <action.lis.length;i++){
          tempArr.push(action.lis[i]);
        }
        newState.labelList = [...tempArr]
        
        let tmpArr = newState.getExcelDataList;
        let tmpArr2 = newState.labelList;
        newState.pushItems = getPushLists(tmpArr,tmpArr2);
        newState.inspectStrPlus = getStringPlus(newState.pushItems);
        return newState;
    }
    if (action.type == FILL_ACTIVE) {                        //点击标签放到暂存里
        const newState = Object.assign({}, state);
        const tempArr = newState.labelList;
        for (let i = 0; i < tempArr.length; i++) {
            if (i == action.idx) {
                newState.fillActive = tempArr[i]
            }
        }
        return newState;
    }
    if (action.type == CLEAR_LABEL) {      //清空数据填写
        const newState = Object.assign({}, state);
        const tempArrs = newState.fillActive;
        const tempArr = newState.fillActive.details;
        let tmpArr = newState.getExcelDataList;
        let tmpArr2 = newState.labelList;
        for (let i = 0; i < tempArr.length; i++) {
          // tempArr[i].value = ''
        }
        tempArrs.show = false;
        newState.pushItem = getPushList(tmpArr,tmpArr2);
        newState.pushItems = getPushLists(tmpArr,tmpArr2);
        newState.inspectStrPlus = getStringPlus(newState.pushItems)
        return newState;
    }
    if (action.type == GET_EXCEL) {              //导入数据
        const newState = Object.assign({}, state);
        let tmpArr = newState.getExcelDataList;
        let tmpArr2 = newState.labelList;
        newState.getExcelData = action.data

        tmpArr.push(action.data)
        newState.getExcelDataList = [...tmpArr]
        newState.pushItem = getPushList(tmpArr,tmpArr2);
        newState.pushItems = getPushLists(tmpArr,tmpArr2);
        newState.inspectStrPlus = getStringPlus(newState.pushItems)
        // getExcelString(action,newState,tmpArr,tmpArr2)
        return newState;
    }
    if(action.type == DEL_EXCEL_LIST){       //删除excel列表的某个数据
        const newState = Object.assign({}, state);
        const tempArr2 = newState.labelList;
        let tmpArr = newState.getExcelDataList;
        tmpArr.splice(action.idx,1);
        newState.getExcelDataList = [...tmpArr];
        let tempArr1 = newState.getExcelDataList;
        newState.pushItem = getPushList(tempArr1,tempArr2);
        newState.pushItems = getPushLists(tempArr1,tempArr2);
        newState.inspectStrPlus = getStringPlus(newState.pushItems)
        return newState;
    }
    if (action.type == CHECK_VALUE_IS_CHANGE) {     //数据添加后显示与否
        const newState = Object.assign({}, state);
        // const tempArrAct = newState.fillActive;
        const tempArr = action.arr;
        tempArr.time = action.time;
        tempArr.dateValue = action.time
        let tmpArr = newState.getExcelDataList;
        const tempArrs = newState.labelList;
        tempArrs[action.idx] = tempArr;
        newState.fillActive = tempArr;
        newState.labelList = tempArrs;
        // tempArrAct.show = true;
        newState.pushItem = getPushList(tmpArr,tempArrs);
        newState.pushItems = getPushLists(tmpArr,tempArrs);
        newState.inspectStrPlus = getStringPlus(newState.pushItems)
        return newState;
    }
    if (action.type == CLEAR_ALL_LABEL) {     //清空所有数据
        const newState = Object.assign({}, state);
        newState.labelList =action.data;
        newState.getExcelDataList = action.dataExcel;
        let tmpArr = action.dataExcel;
        const tempArrs = action.data;
        newState.pushItem = getPushList(tmpArr,tempArrs);
        newState.inspectStrPlus = action.saveTextData;
        return newState;
    }
    if (action.type == DEL_PART_ITEM) {     //清空填寫数据
        const newState = Object.assign({}, state);
        const tempArr = newState.labelList;
        tempArr.splice(action.idx,1);
        newState.labelList = [...tempArr];
        let tmpArr = newState.getExcelDataList;
        newState.pushItem = getPushList(tmpArr,tempArr);
        newState.pushItems = getPushLists(tmpArr,tempArr);
        newState.inspectStrPlus = getStringPlus(newState.pushItems)
        return newState;
    }
    if (action.type == SET_CONTEXT) {    
        const newState = Object.assign({}, state);
        newState.context = action.obj
        return newState;
    }
    if (action.type == REINSPECTDATA) {
      const newState = Object.assign({}, state);
        newState.labelListBig = action.params[8].content.labelListBig
        newState.labelListSmall = action.params[8].content.labelListSmall;       
        newState.totalOrder = action.params[8].content.labelListBig;       
      return newState;

    }
    if (action.type == CLEARINSPECTDATA) {
      let newState = Object.assign({}, state);
      newState.labelListBig = [];
      newState.labelListSmall = [];
      newState.totalOrder = [];
      return newState;
    }
    return state;
}

function isNumber(obj) {  
    return typeof obj === 'number' && !isNaN(obj)  
}
