zoukankan      html  css  js  c++  java
  • react 全选 单选 店铺选

    单选 选中一条

    //详情每一条数据多选  选中其中一个
        handleChangeCheckBox = (item, index, typeVal, e, trades) => {
            
            let {checkedList, checkedRow,keyIDNum} = this.props;    //checkedList  每一条数据   checkedRow 每一行 true false
            let {tradeIdsList,templeNewId,isPrint} = this.state;    //checkedList  每一条数据   checkedRow 每一行 true false
            let checkedListNew = _.cloneDeep(checkedList);//checkedNew每一行数据下的所有的id   checkedListNew所有数据的oid
            let checkedRowNew = _.cloneDeep(checkedRow);//checkedNew每一行数据下的所有的id   checkedListNew所有数据的oid
            let tradeIdsListNew = _.cloneDeep(tradeIdsList);
            let templeNewIdNew = _.cloneDeep(templeNewId);
            let isPrintNew = _.cloneDeep(isPrint);
            console.log('checkedRow',checkedRow)
            if (e.target.checked) {
                //判断数组是否已经有keytid
                let index = _.findIndex(tradeIdsListNew, function (item) {
                    return item.keyTid === trades.keyTid
                })
                //index === -1 即没有找到元素的索引值
                if (index !== -1) {
                    tradeIdsListNew[index].oids.push(typeVal)
                } else {
                    tradeIdsListNew.push({
                        keyTid: trades.keyTid,
                        oids: [typeVal],
                        num:1
                    })
                }
    
    
                let arr = _.findIndex(templeNewIdNew,function(items){
                    return items == item.lastTemplateId
                })
                if(arr == -1){
                    templeNewIdNew.push(item.lastTemplateId)
                }
    
    
                let arr1 = _.findIndex(isPrintNew,function(items){
                    return items === item.isPrint
                })
                if(arr1 !== -1){
                    isPrintNew = isPrintNew
                }else{
                    isPrintNew.push(item.isPrint)
                }
                
            } else {
    
                let index = _.findIndex(tradeIdsListNew, function (o) {
                    return o.keyTid === trades.keyTid
                })
                let oidsNew = _.filter(tradeIdsListNew[index].oids, function (o) {
                    return o !== typeVal;
                })
                if (oidsNew.length > 0) {
                    tradeIdsListNew[index].oids = oidsNew;
                } else {
                    tradeIdsListNew.splice(index, 1)
                }
    
    
                
    
    
                let index1 = _.filter(templeNewIdNew, function (o) {
                    return o !== item.lastTemplateId
                })
                if (index1.length > 0) {
                    templeNewIdNew = index1;
                } else {
                    templeNewIdNew = []
                }
    
                let index2 = _.filter(isPrintNew, function (o) {
                    return o !== item.isPrint
                })
                if (index2.length > 0) {
                    isPrintNew = index2;
                } else {
                    isPrintNew = []
                }
            }
            
            //更新数据   所有的oid
            checkedListNew = e.target.checked ? [...checkedListNew, typeVal] : _.filter(checkedListNew, function (o) {
                return o != typeVal;
            });// 每一条数据选中之后给checkedList数组添加一条数据val  未选中删除一条数据
            this.props.setVal({
                checkedList: checkedListNew,
            })
            this.setState({
                tradeIdsList: tradeIdsListNew,
                templeNewId:templeNewIdNew,
                isPrint:isPrintNew
            }, () => {
                //店铺下所有的oid
                 let oidAll = []; //店铺下所有的oid
                 let oidRow = []; //匹配到的oid
                 for (let i = 0; i < trades.children.length; i++) {
                     for (let j = 0; j < trades.children[i].orderList.length; j++) {
                         oidAll.push(trades.children[i].orderList[j].oid)
                     }
                
                 }
                 //匹配
                 oidAll.forEach(item => {
                     let arr = _.filter(checkedListNew, function (o) {
                         return o == item
                     });
                     if (arr.length > 0) {
                         oidRow.push(arr[0])
                    }
                
                 })
                 if (oidRow.length === oidAll.length) {
                     checkedRow.push(trades.keyTid);//每一行数据的keyid(知道是哪一行数据)
                 } else {
                     checkedRow = _.filter(checkedRow, function (o) {
                         return o != trades.keyTid;
                     })
                 }
                
                this.props.setVal({
                    checkedRow: checkedRowNew,
                })
                //全选
                if (keyIDNum.length === checkedRowNew.length) {
                    this.setState({
                        checkedAll: true
                    })
                } else {
                    this.setState({
                        checkedAll: false
                    })
                }
            })
    
        }
    //列表每一条数据多选  选择一行(取消一行选中)
        handleChangeCheckBoxRow = (item, index, e, trades) => {
            // console.log(item, index, e, trades)
            let {tradeIdsList,templeNewId,isPrint} = this.state;
            let {checkedList, checkedRow, keyIDNum} = this.props
            let checkedListNew = _.cloneDeep(checkedList);
            let tradeIdsListNew = _.cloneDeep(tradeIdsList);
            let templeNewIdNew = _.cloneDeep(templeNewId);
            let isPrintNew = _.cloneDeep(isPrint);
            let oidsA = []
            if (e.target.checked) {
                for (let i = 0; i < trades.children.length; i++) {
                    for (let j = 0; j < trades.children[i].orderList.length; j++) {
                        checkedListNew.push(trades.children[i].orderList[j].oid)
                        oidsA.push(trades.children[i].orderList[j].oid);
                    }
                }
                let index = _.findIndex(tradeIdsListNew, function (o) {
                    return o.keyTid === trades.keyTid
                })
                if (index !== -1) {
                    tradeIdsListNew[index].keyTid = trades.keyTid
                    tradeIdsListNew[index].oids = oidsA
                } else {
                    tradeIdsListNew.push({
                        keyTid: trades.keyTid,
                        oids: oidsA,
                        num:1
                    })
                }
                //最新打印的面单号 使用的模板
                let index1 = _.findIndex(templeNewIdNew, function (o) {
                    return o=== trades.children[0].lastTemplateId
                })
                if(index1 !== -1){
                    templeNewIdNew = templeNewIdNew
                }else{
                    templeNewIdNew.push(trades.children[0].lastTemplateId)
                }
                //是否打印
                let index2 = _.findIndex(isPrintNew, function (o) {
                    return o=== trades.children[0].isPrint
                })
                if(index2 !== -1){
                    isPrintNew = isPrintNew
                }else{
                    isPrintNew.push(trades.children[0].isPrint)
                }
    
            } else {
                for (let i = 0; i < trades.children.length; i++) {
                    for (let j = 0; j < trades.children[i].orderList.length; j++) {
                        checkedListNew = _.filter(checkedListNew, function (o) {
                            return o != trades.children[i].orderList[j].oid;
                        })
                        oidsA = _.filter(oidsA, function (o) {
                            return o != trades.children[i].orderList[j].oid;
                        })
                    }
                }
                let index = _.findIndex(tradeIdsListNew, function (o) {
                    return o.keyTid === trades.keyTid
                })
                if (index !== -1) {
                    tradeIdsListNew.splice(index, 1)
                }
    
                let index1 = _.filter(templeNewIdNew, function (o) {
                    return o !== trades.children[0].lastTemplateId
                })
                if (index1.length > 0) {
                    templeNewIdNew = index1;
                } else {
                    templeNewIdNew = []
                }
                //是否打印过
                let index2 = _.filter(isPrintNew, function (o) {
                    return o !== trades.children[0].isPrint
                })
                if (index2.length > 0) {
                    isPrintNew = index2;
                } else {
                    isPrintNew = []
                }
            }
            // console.log('结束',isPrintNew)
            this.props.setVal({
                checkedList: checkedListNew,
            })
            this.setState({
                tradeIdsList: tradeIdsListNew,
                templeNewId :templeNewIdNew,
                isPrint :isPrintNew
            }, () => {
                if (e.target.checked) {
                    checkedRow.push(trades.keyTid)
                } else {
                    checkedRow = _.filter(checkedRow, function (o) {
                        return o != trades.keyTid;
                    })
                }
                console.log('结束',checkedRow)
                this.props.setVal({
                    checkedRow: checkedRow
                })
                //全选
                if (keyIDNum.length === checkedRow.length) {
                    this.setState({
                        checkedAll: true
                    })
                } else {
                    this.setState({
                        checkedAll: false
                    })
                }
            })
        }
        //最外层多选  选择全部(取消全部选中)
        handleChangeCheckBoxAll = (e) => {
            let {dataSource} = this.props;
            let templeNewIdNew = [];
            let isPrintNew = [];
            let tradeIdsListNew = [];
            let checkedListFull = []
            let checkedListEmpty = []
            let checkedRowTrue = []
            let checkedRowFalse = []
            if (e.target.checked) {
                dataSource.forEach((item, index) => {
                    for (let k = 0; k < item.tradeList.length; k++) {
                        let oidsA = [];
                        let tradeObj = {}
                        tradeObj.keyTid = item.tradeList[k].keyTid
                        checkedRowTrue.push(item.tradeList[k].keyTid)
                        for (let i = 0; i < item.tradeList[k].children.length; i++) {
                            templeNewIdNew.push(item.tradeList[k].children[0].lastTemplateId)
                            isPrintNew.push(item.tradeList[k].children[0].isPrint)
                            for (let j = 0; j < item.tradeList[k].children[i].orderList.length; j++) {
                                checkedListFull.push(item.tradeList[k].children[i].orderList[j].oid)
                                oidsA.push(item.tradeList[k].children[i].orderList[j].oid);
                            }
                        }
                        tradeObj.oids = oidsA
                        tradeObj.nums = 1
                        tradeIdsListNew.push(tradeObj)
    
                    }
                })
                console.log('结束',checkedRowTrue)
                this.props.setVal({
                    checkedRow: checkedRowTrue,
                    checkedList: checkedListFull,
                })
                this.setState({
                    checkedAll: true,
                    tradeIdsList: tradeIdsListNew,
                    templeNewId: templeNewIdNew,
                    isPrint: isPrintNew,
                })
            } else {
                tradeIdsListNew = []
                templeNewIdNew = []
                isPrintNew = []
                this.props.setVal({
                    checkedRow: checkedRowFalse,
                    checkedList: checkedListEmpty,
                })
                this.setState({
                    checkedAll: false,
                    tradeIdsList: tradeIdsListNew,
                    templeNewId: templeNewIdNew,
                    isPrint: isPrintNew,
                })
            }
    
        }
  • 相关阅读:
    自用python时间格式转换lib库代码
    如何在datetime.strptime中添加时区
    bs3迁移到bs4, import lxml.html.soupparser 报错的解决
    mac下pip install lxml报错
    删除 Mac OS 10.10 中“打开方式”里重复或无用的程序列表
    python的urllib2库详细使用说明
    近期个人项目计划
    在centos中添加freeswitch服务开机自动运行
    ddd
    Sqlserver 2008安装
  • 原文地址:https://www.cnblogs.com/isuansuan/p/13684907.html
Copyright © 2011-2022 走看看