<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<!-- import CSS -->
<link rel="stylesheet" href="index.css">
</head>
<style>
.el-checkbox{display:block;min-width: 100px;padding: 5px 10px;cursor: pointer;margin-right:0px;}
.el-checkbox:hover{background-color: #ecf5ff;color: #66b1ff;}
</style>
<body>
<div>
<div id="app">
<div style="width:800px;">
<template>
<el-table style="width: 100%" border :data="tableData">
<template v-for="(item,index) in total_tableHead">
<el-table-column :fixed="index==0" v-if="item.show" :prop="item.data" sortable :label="item.title" :key="index"></el-table-column>
</template>
<el-table-column fixed="right" label="操作" width="100">
<template slot-scope="scope">
<el-button @click="handleClick(scope.row)" type="text" size="small"> 查看 </el-button>
<el-button type="text" size="small"> 编辑 </el-button>
</template>
</el-table-column>
</el-table>
</template>
</div>
<div class="data_norm">
<el-dropdown trigger="click" :hide-on-click="false">
<span class="el-dropdown-link">
数据指标
</span>
<el-dropdown-menu slot="dropdown">
<template>
<el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange"> 全选 </el-checkbox>
<el-checkbox-group v-model="checkedCities" @change="handleCheckedCitiesChange">
<el-checkbox v-for="(item,index) in total_tableHead" @change="checked_item(item,index)" :label="item.title" :key="item.title">{{item.title}}</el-checkbox>
</el-checkbox-group>
</template>
</el-dropdown-item>
</el-dropdown>
</div>
</div>
</body>
<script src="https://www.jq22.com/jquery/jquery-3.3.1.js"></script>
<!-- import Vue before Element :default-value="(new Date()).getTime()-3600*1000*24*30"-->
<script src="vue.js"></script>
<!-- import JavaScript -->
<script src="index.js"></script>
<script>
var Main = {data() {
return {
total_tableHead: [{ title: '日期', data: 'date'},
{title: '姓名', data: 'name'},
{title: '省份', data: 'province'},
{title: '市区', data: 'city'},
{title: '地址', data: 'address'},
{title: '邮编', data: 'zip'},
],
tableData: [{
date: '2016-05-02',
name: '王小虎',
province: '上海',
city: '普陀区',
address: '上海市普陀区金沙江路 1518 弄',
zip: 200333,
ssd: 1
}, {
date: '2016-05-04',
name: '王小虎',
province: '上海',
city: '普陀区',
address: '上海市普陀区金沙江路 1517 弄',
zip: 200333,
ssd: 1
}, {
date: '2016-05-01',
name: '王小虎',
province: '上海',
city: '普陀区',
address: '上海市普陀区金沙江路 1519 弄',
zip: 200333,
ssd: 1
}, {
date: '2016-05-03',
name: '王小虎',
province: '上海',
city: '普陀区',
address: '上海市普陀区金沙江路 1516 弄',
zip: 200333,
ssd: 1
}],
checkAll: true,
checkedCities: [],
allIndex: [],
isIndeterminate: false
}
},
created() {
// 默认全选都显示
let storage = window.localStorage;
let c = storage.getItem("c");
let that = this;
this.total_tableHead.map(function(item, i) {that.allIndex.push(i)
})
if (c == undefined) {
this.checkAll = true;
this.CheckAll(true, 0);
} else {if (JSON.parse(c).length == 0) {this.checkAll = false;} else {if (JSON.parse(c).length == this.total_tableHead.length) {this.isIndeterminate = false;} else {this.isIndeterminate = true;}
this.checkAll = true;
this.CheckAll(true, 1);
}
}
},
methods: {handleClick() { },
handleCheckAllChange(val, cx, flag) {console.log(val)
let that = this;
let thead = [];
let storage = window.localStorage;
if (val) {storage.setItem('c', JSON.stringify(this.allIndex))
this.total_tableHead.map(function(item, i) {
item.show = !item.show;
thead.push(item.title);
})
} else {let x = [];
storage.setItem('c', JSON.stringify(x))
this.total_tableHead.map(function(item, i) {item.show = !item.show;})
}
this.checkedCities = val ? thead : [];
this.isIndeterminate = false;
},
CheckAll(val, type) {let thead = [];
let storage = window.localStorage;
let that = this;
this.total_tableHead.map(function(item, i) {if (type == 0) {
item.show = !item.show;
thead.push(item.title);
storage.setItem('c', JSON.stringify(that.allIndex))
} else if (type == 1) {let c = JSON.parse(window.localStorage.getItem("c"))
if (c.indexOf(i) != -1) {
item.show = !item.show;
thead.push(item.title)
}
}
})
this.checkedCities = val ? thead : [];},
handleCheckedCitiesChange(value) {
let checkedCount = value.length;
this.checkAll = checkedCount === this.total_tableHead.length;
this.isIndeterminate = checkedCount > 0 && checkedCount < this.total_tableHead.length;
},
checked_item(item, index) {
// 扭转存入本地数据
if (item.show) {this.allIndex.splice(this.allIndex.indexOf(index), 1)
} else {this.allIndex.push(index)
}
// 存入本地缓存
let storage = window.localStorage;
storage.setItem('c', JSON.stringify(this.allIndex))
item.show = !item.show
}
},
computed: { },
watch: {}}
var Ctor = Vue.extend(Main)
new Ctor().$mount('#app')
</script>
</html>