<style>
  .googleMap {
    width: 800px;
    height: 350px;
    margin-top: 10px;
  }
</style>
<template>
    <div>
        <el-tabs v-model="activeName" @tab-click="handleClick">
            <el-tab-pane label="个人排行榜" name="first">个人排行榜</el-tab-pane>
            <el-tab-pane label="部门排行榜" name="second">部门排行榜</el-tab-pane>
            <el-tab-pane label="公司排行榜" name="third">公司排行榜</el-tab-pane>
        </el-tabs>
        <v-table
            is-horizontal-resize
            column-width-drag
            style="width:100%"
            :columns="columns"
            :table-data="tableData"
            :filter-method="filterMethod"
            :total='total'
            :pageSize='pageSize'
            :pageIndex='pageIndex'
            :handleCurrentChange='handleCurrentChanges'
            @sort-change="sortChange"
            multiple-sort>&lt;!&ndash; 多个排序 &ndash;&gt;
        </v-table>
        <el-button size='mini' @click="exportExcelCurrentPage">导出</el-button>
      <!-- <div class="googleMap" id="MapContent">
      </div>
      <div>
        <strong>开始: </strong>
        <select id="start" @change="calcRoute()" v-model="startCity">
          <option value="30.647379,104.09179900000004">东方广场</option>
          <option value="30.6185055,104.0661053">成都凯宾斯基饭店</option>
          <option value="30.6742031,103.99873279999997">金沙万瑞中心</option>
          <option value="30.6988101,104.05426569999997">西南交大</option>
          <option value="30.67416759999999,104.04721970000003">成都永陵博物馆</option>
          <option value="30.6623041,104.09450620000007">四川电视塔</option>
          <option value="30.6303279,104.09371220000003">望江楼</option>
          <option value="30.5226477,104.05806469999993">维也纳森林公园</option>
        </select>
        <strong>目的地: </strong>
        <select id="end" @change="calcRoute()" v-model="endCity">
          <option value="30.647379,104.09179900000004">东方广场</option>
          <option value="30.6185055,104.0661053">成都凯宾斯基饭店</option>
          <option value="30.6742031,103.99873279999997">金沙万瑞中心</option>
          <option value="30.6988101,104.05426569999997">西南交大</option>
          <option value="30.67416759999999,104.04721970000003">成都永陵博物馆</option>
          <option value="30.6623041,104.09450620000007">四川电视塔</option>
          <option value="30.6303279,104.09371220000003">望江楼</option>
          <option value="30.5226477,104.05806469999993">维也纳森林公园</option>
        </select>
      </div> -->
    </div>
</template>


<script>
import FileSaver from 'file-saver'
import XLSX from 'xlsx'
export default{
    name: 'filters',
    data(){
        return {
            tableData: [],
            columns: [
                {field: 'name', title: '姓名', width: 80, titleAlign: 'left',columnAlign:'left',orderBy:'',isResize:true,  //orderBy排序 asc 升序  desc降序
                    filterMultiple: false,  // 筛选项是否多选
                    filters: [//筛选项  无筛选项 传[{}]
                    {
                        label: '赵伟',
                        value: '0',
                    },{
                        label: '李伟',
                        value: '1',
                    },{
                        label: '孙伟',
                        value: '2',
                    }, 
                    {
                        label: '周伟',
                        value: '3',
                    },
                    {
                        label: '吴伟',
                        value: '4',
                    }],
                    result:'',  //筛选项默认值  单选传字符串'1'  多选数组 [1,2,2]
                    type:'select',// 筛选项方式 select 下拉 check 单选、多选 text搜索 datetime时间
                    isFrozen:true
                },
                {field: 'gender', title: '性别', width: 50, titleAlign: 'left',columnAlign:'left',orderBy:'',isResize:true,
                    filterMultiple: true,
                    result:[],
                    filters: [{
                        label: '男',
                        value: '男',
                    }, {
                        label: '女',
                        value: '女',
                    }],
                    type:'check'
                },
                {field: 'hobby', title: '爱好', width: 150, titleAlign: 'left',columnAlign:'left',isResize:true,result:'',filterMultiple:false,filters: [{}],type:'text'},
                {field: 'dateRange', title: '日期', width: 150, titleAlign: 'left',columnAlign:'left',isResize:true,result:{},filterMultiple:false,filters: [{}],type:'datetime'},
                {field: 'address', title: '地址',width: 280, titleAlign: 'left',columnAlign:'left',isResize:true}
            ],
            pageSize:1,
            pageIndex:1,
            total:5,
          map:{},
          directionsService: new google.maps.DirectionsService(),
          directionsDisplay: new google.maps.DirectionsRenderer(),
          startCity:'',
          endCity: ''
        }
    },
    methods: {

        exportExcelCurrentPage(){
                    //待实现
                    let xlsxName='测试下载'
                    let dataSource=this.getTableData()
                    let wscols={}
                    wscols=[{wpx: 40}, {wpx: 100}, {wpx: 120},{wpx: 100}, {wpx: 150},{wpx: 250}]
                    let data=[]
                    data.push(['编号','姓名','性别','爱好','日期','地址'])
                    dataSource.forEach(x=>{
                        let obj=[]
                        obj.push(x.id+" ")
                        obj.push(x.name)
                        obj.push(x.gender)
                        obj.push(x.hobby)
                        obj.push(x.dateRange)
                        obj.push(x.address)
                        data.push(obj)
                    })
                    const ws = XLSX.utils.aoa_to_sheet(data)
                    ws['!cols'] = wscols
                    ws['!rows'] =[{ hpx:20 },{ hpx:20 },{ hpx:20 },{ hpx:20 },{ hpx:20 },{ hpx:20 }]
                    const wb = XLSX.utils.book_new()
                    XLSX.utils.book_append_sheet(wb, ws, xlsxName)
                    var dataInfo = wb.Sheets[wb.SheetNames[0]];
                    
                    // dataInfo["A1"].v = district + '广播电视安全播出监管中心'; //设置表格标题
                    // dataInfo["A2"] = {v: titleName}; //设置表格标题
                    // dataInfo["A3"] = {v: '日期:' + time}; //设置表格日期
                    // dataInfo["B4"] = {v: condition}; //设置筛选条件
                    let colName=['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
                    data[0].forEach((x,i)=>{
                        dataInfo[colName[i]+'1'].s={
                             font: {
                                name: '微软雅黑',
                                sz: 14,
                                color: "#fe0035",
                                bold: true,
                                italic: true,
                                underline: true
                            },
                            alignment: {
                                horizontal: "center",
                                vertical: "center"
                            }
                        }
                    })
                    XLSX.writeFile(wb, xlsxName + ".xlsx")
        },
        sortChange(param){
            //自己写实现
            //{gender:"",name:"asc"}
        },
        // 数据筛选
        filterMethod(filters){
            let tableData = this.getTableData();
            if (filters.gender && filters.gender.length>0){

                tableData = tableData.filter(item =>  filters.gender.indexOf(item.gender)!=-1)
            }
            if (filters.name!='' && filters.name!='-1'){
                if(!Array.isArray(filters.name))
                    tableData = tableData.filter(item => filters.name==item.id);
                else
                    tableData = tableData.filter(item => filters.name==item.id);
            }
            if (filters.hobby!=''){
                tableData = tableData.filter(item => item.hobby.indexOf(filters.hobby)!=-1);
            }
            if(filters.dateRange.beginDate){
                tableData = tableData.filter(item => new Date(filters.dateRange.beginDate).getTime()<=new Date(item.dateRange).getTime());
            }
            if(filters.dateRange.endDate){
                tableData = tableData.filter(item => new Date(filters.dateRange.endDate).getTime()>=new Date(item.dateRange).getTime());
            }
            this.pageIndex = 1
            this.total=tableData.length
            this.tableData = tableData.filter((item,index)=>index==0);
        },
        handleCurrentChanges(val){
            this.pageIndex=val
            this.tableData = this.getTableData().filter((item,index)=>index==val-1);
        },
        getTableData(){
            return [
                {"id":0,"name":"赵伟","gender":"女","hobby":"钢琴、书法、唱歌","dateRange":"2018-11-22","address":"上海市黄浦区金陵东路569号17楼"},
                {"id":1,"name":"李伟","gender":"女","hobby":"钢琴、书法、唱歌","dateRange":"2018-11-23","address":"上海市奉贤区南桥镇立新路12号2楼"},
                {"id":2,"name":"孙伟","gender":"男","hobby":"钢琴、书法、唱歌","dateRange":"2018-11-24","address":"上海市崇明县城桥镇八一路739号"},
                {"id":3,"name":"周伟","gender":"女","hobby":"钢琴、书法、唱歌","dateRange":"2018-11-25","address":"上海市青浦区青浦镇章浜路24号"},
                {"id":4,"name":"吴伟","gender":"男","hobby":"钢琴、书法、唱歌、造作","dateRange":"2018-11-26","address":"上海市松江区乐都西路867-871号"}
            ]
        },
        calcRoute: function() {
          let _this = this;
          var start = _this.startCity;
          var end = _this.endCity;
          var request = {
            origin:start,
            destination:end,
            travelMode: google.maps.TravelMode.DRIVING,
            waypoints: [{location:"30.5226477,104.05806469999993"},{location:"30.67416759999999,104.04721970000003"}]
          };
          _this.directionsService.route(request, function(result, status) {
            if (status == google.maps.DirectionsStatus.OK) {
              _this.directionsDisplay.setDirections(result);
            }
          });
        },
        initialize: function() {
          let _this = this;
          let directionsDisplay;
          let map;
          _this.directionsDisplay = new google.maps.DirectionsRenderer();
          let chengdu = new google.maps.LatLng(30.6574389,104.06592380000006);
          let geocoder = new google.maps.Geocoder();
          let mapOptions = {
            zoom:14,
            mapTypeId: google.maps.MapTypeId.ROADMAP,
            center: chengdu
          };
          _this.map = new google.maps.Map(document.getElementById("MapContent"), mapOptions);
          _this.directionsDisplay.setMap(_this.map);
          google.maps.event.addListener(_this.map, 'click', function (event) {  // 地图点击事件 获取经纬度
            geocoder.geocode({ 'location': event.latLng }, function (results, status) {
              if (status == google.maps.GeocoderStatus.OK) {
              } else {
              }
            });
          });
        }
    },

    created(){
        this.tableData = this.getTableData().filter((item,index)=>index==0);
        let jsArray = document.getElementsByTagName("script");
        let flag = false;
        let jsUrl = this.domainManager().GoogleMapUrl;
        for (let i = 0; i < jsArray.length; i++) {
          if (jsArray[i].src == jsUrl) {
            flag = true;
          }
        }
        if (!flag) {
          const s = document.createElement("script");
          s.type = "text/javascript";
          s.src = jsUrl;
          document.body.appendChild(s);
        }
    },

    mounted () {
      let items = [];
      let item = {};
      item['lat'] = parseFloat("30.6574389");
      item['lng'] = parseFloat("104.06592380000006");
      items[0] = item;
      let listData = items;
      let LatLng = new google.maps.LatLng(listData[0].lat, listData[0].lng);
      let map_id = document.getElementById("MapContent");
      this.initialize()
    }
}
</script>