vue2.x+elelmentUI@3.5 表格

<template>
    <section>
        <el-row>
            <el-col :span="16">
                <!--表单-->
                <h3>{{setedList.length}}</h3>
                <table cellspacing="0" style="width:100%;" class="table-my">
                    <thead>
                        <tr>
                            <th>
                                <el-checkbox v-model="checkedAll" @change="handleCheckedAll">序号</el-checkbox>
                            </th>
                            <th>日期</th>
                            <th>姓名</th>
                            <th>地址</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr v-for="(item,number) in tableData" :key="number" :class="{checked:item.checked}">
                            <td>
                                <el-checkbox v-model="item.checked" @change="handleChecked(item)">
                                    {{number+1}}
                                </el-checkbox>

                            </td>
                            <td>{{item.date}}</td>
                            <td>{{item.name}}</td>
                            <td>{{item.address}}</td>
                        </tr>

                    </tbody>
                </table>

                <div class="block">
                    <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage" :page-size="5" layout="prev, pager, next, jumper" :total="17">
                    </el-pagination>
                </div>
            </el-col>
            <el-col :span="8">
                <ul style="background:#eee;">
                    <!-- <li v-for="(e,i) in setedList" :key="i"></li> -->
                    <li v-for="(e,i) in setedList" :key="i" style="heighet:90px;background:skyblue;border:1px solid red">
                        <p>{{i+1}}</p>
                        <p style="padding:5px;"><input type="text" v-model="e.name" style="padding:5px;"></p>
                        <p style="padding:5px;"><input type="text" v-model="e.address" style="padding:5px;"></p>
                        <p style="padding:5px;"><input type="text" v-model="e.date" style="padding:5px;"></p>
                    </li>
                </ul>
            </el-col>
        </el-row>
    </section>
</template>
<script type="text/ecmascript-6">
const ERR_OK = "000";
export default {
    data() {
        return {
            checkedAll: false,
            checked: false,
            formInline: {
                user: {
                    name: '',
                    date: '',
                    address: [],
                    place: ''
                }
            },
            tableData: [],
            options: [],
            places: [],
            dialogFormVisible: false,
            editLoading: false,
            form: {
                name: '',
                address: '',
                date: '',
            },
            currentPage: 1,
            table_index: 999,
            setedList: [],
            list: []
        };
    },
    created() {
        this.$http.get('/api/getTable').then((response) => {
            response = response.data;
            if (response.code === ERR_OK) {
                //   this.tableData = response.datas;
                var datas = response.datas;

                for (var index = 0; index < datas.length; index++) {

                    datas[index].checked = false;
                    //   console.log(datas[index].checked)
                }
                this.tableData = datas;

            }
        });
        this.$http.get('/api/getOptions').then((response) => {
            response = response.data;
            if (response.code === ERR_OK) {
                this.options = response.datas;
                this.places = response.places;
            }
        });
    },
    methods: {

        handleCheckedAll() {//-----------全选
            var temp = []
            if (this.checkedAll) {
                this.list = [];
                for (var i = 0; i < this.tableData.length; i++) {
                    this.tableData[i].checked = true;
                    temp.push(this.tableData[i]);
                }
                this.list = temp;
                for (var j = 0; j < temp.length; j++) {
                    for (var k = 0; k < this.setedList.length; k++) {
                        if (temp[j].name == this.setedList[k].name) {
                            temp.splice(j, 1)
                        }
                    }

                }
                for (var l = 0; l < temp.length; l++) {
                    this.setedList.push(temp[l]);
                }

            } else {
                this.list = [];
                for (var i = 0; i < this.tableData.length; i++) {
                    this.tableData[i].checked = false;
                    temp.push(this.tableData[i]);
                }
                for (var j = 0; j < temp.length; j++) {
                    for (var k = 0; k < this.setedList.length; k++) {
                        if (temp[j].name == this.setedList[k].name) {
                            this.setedList.splice(k, 1)
                        }
                    }

                }
            }

        },
        handleChecked(item) {//单选--------------
            if (item.checked) {
                item.checked = true;
                this.setedList.push(item);
            } else {
                item.checked = false;
                if (this.list.length < 2) {
                    this.list = [];
                    for (var j = 0; j < this.setedList.length; j++) {
                        if (item.name == this.setedList[j].name) {
                            this.setedList.splice(j, 1)
                        }
                    }

                } else {

                    for (var j = 0; j < this.setedList.length; j++) {
                        if (item.name == this.setedList[j].name) {
                            this.setedList.splice(j, 1)
                        }
                    }

                }
            }

        },
        handleSizeChange(val) {
            console.log(`每页 ${val} 条`);
        },
        handleCurrentChange(val) {
            this.currentPage = val;
            console.log(`当前页: ${val}`);
            this.checkedAll = false;
            console.log(this.list);
            this.$http.get('/api/getTable').then((response) => {
                response = response.data;
                if (response.code === ERR_OK) {
                    var datas = response.datas;
                    for (var index = 0; index < datas.length; index++) {

                        datas[index].checked = false;

                    }
                    this.tableData = datas;

                }
            });
        },


    }
};
</script>
<style lang="less" scoped>
.table-my {
    border-collapse: collapse;
    margin: 0 auto;
    width: 500px;
    th,
    td {
        padding: 0;
        border: 1px solid #c0c4cc;
        font: 20px/50px "微软雅黑";
        text-align: center;
    }
    .checked{
        background: skyblue;
    }
}
</style>

 

< template>
< section >
< el-row >
< el-col :span= " 16 " >
<!--表单-->
< h3 >{{ setedList. length}} </ h3 >
< table cellspacing = " 0 " style = " width:100%; " class = " table-my " >
< thead >
< tr >
< th >
< el-checkbox v-model= " checkedAll " @change= " handleCheckedAll " >序号 </ el-checkbox >
</ th >
< th >日期 </ th >
< th >姓名 </ th >
< th >地址 </ th >
</ tr >
</ thead >
< tbody >
< tr v-for= " ( item , number ) in tableData " :key= " number " :class= " { checked : item . checked } " >
< td >
< el-checkbox v-model= " item . checked " @change= " handleChecked ( item ) " >
{{ number + 1}}
</ el-checkbox >

</ td >
< td >{{ item. date}} </ td >
< td >{{ item. name}} </ td >
< td >{{ item. address}} </ td >
</ tr >

</ tbody >
</ table >

< div class = " block " >
< el-pagination @size-change= " handleSizeChange " @current-change= " handleCurrentChange " :current-page= " currentPage " :page-size= " 5 " layout = " prev, pager, next, jumper " :total= " 17 " >
</ el-pagination >
</ div >
</ el-col >
< el-col :span= " 8 " >
< ul style = " background:#eee; " >
<!-- <li v-for="(e,i) in setedList" :key="i"></li> -->
< li v-for= " ( e , i ) in setedList " :key= " i " style = " heighet:90px;background:skyblue;border:1px solid red " >
< p >{{ i + 1}} </ p >
< p style = " padding:5px; " >< input type = " text " v-model= " e . name " style = " padding:5px; " ></ p >
< p style = " padding:5px; " >< input type = " text " v-model= " e . address " style = " padding:5px; " ></ p >
< p style = " padding:5px; " >< input type = " text " v-model= " e . date " style = " padding:5px; " ></ p >
</ li >
</ ul >
</ el-col >
</ el-row >
</ section >
</ template>
< script type= " text/ecmascript-6 ">
const ERR_OK = " 000 ";
export default {
data() {
return {
checkedAll: false,
checked: false,
formInline: {
user: {
name: '',
date: '',
address: [],
place: ''
}
},
tableData: [],
options: [],
places: [],
dialogFormVisible: false,
editLoading: false,
form: {
name: '',
address: '',
date: '',
},
currentPage: 1,
table_index: 999,
setedList: [],
list: []
};
},
created() {
this. $http. get( ' /api/getTable '). then(( response) => {
response = response. data;
if ( response. code === ERR_OK) {
// this.tableData = response.datas;
var datas = response. datas;

for ( var index = 0; index < datas. length; index ++) {

datas[ index]. checked = false;
// console.log(datas[index].checked)
}
this. tableData = datas;

}
});
this. $http. get( ' /api/getOptions '). then(( response) => {
response = response. data;
if ( response. code === ERR_OK) {
this. options = response. datas;
this. places = response. places;
}
});
},
methods: {

handleCheckedAll() { // -----------全选
var temp = []
if ( this. checkedAll) {
this. list = [];
for ( var i = 0; i < this. tableData. length; i ++) {
this. tableData[ i]. checked = true;
temp. push( this. tableData[ i]);
}
this. list = temp;
for ( var j = 0; j < temp. length; j ++) {
for ( var k = 0; k < this. setedList. length; k ++) {
if ( temp[ j]. name == this. setedList[ k]. name) {
temp. splice( j, 1)
}
}

}
for ( var l = 0; l < temp. length; l ++) {
this. setedList. push( temp[ l]);
}

} else {
this. list = [];
for ( var i = 0; i < this. tableData. length; i ++) {
this. tableData[ i]. checked = false;
temp. push( this. tableData[ i]);
}
for ( var j = 0; j < temp. length; j ++) {
for ( var k = 0; k < this. setedList. length; k ++) {
if ( temp[ j]. name == this. setedList[ k]. name) {
this. setedList. splice( k, 1)
}
}

}
}

},
handleChecked( item) { // 单选--------------
if ( item. checked) {
item. checked = true;
this. setedList. push( item);
} else {
item. checked = false;
if ( this. list. length < 2) {
this. list = [];
for ( var j = 0; j < this. setedList. length; j ++) {
if ( item. name == this. setedList[ j]. name) {
this. setedList. splice( j, 1)
}
}

} else {

for ( var j = 0; j < this. setedList. length; j ++) {
if ( item. name == this. setedList[ j]. name) {
this. setedList. splice( j, 1)
}
}

}
}

},
handleSizeChange( val) {
console. log( `每页 ${ val } 条`);
},
handleCurrentChange( val) {
this. currentPage = val;
console. log( `当前页: ${ val } `);
this. checkedAll = false;
console. log( this. list);
this. $http. get( ' /api/getTable '). then(( response) => {
response = response. data;
if ( response. code === ERR_OK) {
var datas = response. datas;
for ( var index = 0; index < datas. length; index ++) {

datas[ index]. checked = false;

}
this. tableData = datas;

}
});
},


}
};
</ script>
< style lang= " less " scoped>
.table-my {
border-collapse: collapse;
margin: 0 auto;
width: 500px;
th ,
td {
padding: 0;
border: 1px solid #c0c4cc;
font: 20px/50px " 微软雅黑 ";
text-align: center;
}
.checked{
background: skyblue;
}
}
</ style>

转载于:https://www.cnblogs.com/TBNICE/p/9054185.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值