<template>
    <div v-show="flag">
        <datePicker @dateChange="dateChange"></datePicker>
        <ser-center></ser-center>
        <GKZB ref="gkzb_ref"/>
        <BJXM />
        <TDSC />
        <HYSY ref="hysy_ref" />
        <TDSY />
        <GDBH ref="gdbh_ref" />
        <STXF ref="stxf_ref" />
        <WPJG ref="wpjg_ref" />
    </div>
</template>

<script>
//这里可以导入其他文件（比如：组件，工具js，第三方插件js，json文件，图片文件等等）
import serCenter from './cockpitNew1/serCenter';
import GKZB from './cockpitNew1/gkzb';
import TDSC from './cockpitNew1/tdsc';
import HYSY from './cockpitNew1/hysy';
import TDSY from './cockpitNew1/tdsy';
import BJXM from './cockpitNew1/bjxm';
import GDBH from './cockpitNew1/gdbh';
import STXF from './cockpitNew1/stxf';
import WPJG from './cockpitNew1/wpjg';
import datePicker from './cockpitNew1/datePicker.vue';
import xzqh from "../../static/data/460200_full.json";
import SerCenter from './cockpitNew1/serCenter.vue';

import { cockpitInfo } from '@/api/cockpit'

export default {
    components: { serCenter, GKZB, BJXM, TDSC, HYSY, TDSY, GDBH, STXF, WPJG, datePicker, SerCenter },
    data() {
        return {
            params: {
                beginTime: '',
                endTime: '',
                id: 4602,
            },
            flag: true,
            xzqh_color_click: "rgba(46, 177, 251, 0.6)",
            xzqh_color: "rgba(10, 95, 152, 0.5)",
        };
    },
    //监听属性 类似于data概念
    computed: {},
    //监控data中的数据变化
    watch: {},
    //方法集合
    methods: {
        switch() {
            this.flag = !this.flag;
        },
        setDatas() {
            this.$refs.gdbh_ref.setData({ id: this.params.id });
            this.$refs.stxf_ref.setData({ id: this.params.id });
            this.$refs.wpjg_ref.setData(this.params);
        },
        dateChange(date) {
            this.params.beginTime = date[0]
            this.params.endTime = date[1]
            this.setDatas()
        },
        async hysyq(address) {
            // 选中xzqh查询
            let obj = {
                beginTime: store.state.cockpit_date[0],
                endTime: store.state.cockpit_date[1],
                jscType: 'jsc_hysyq_ztsh',
                id: address
            };
            let data = await cockpitInfo(obj);

            let obg_text = {
                xzqhdm_number: data.data[0].xzqhdm_number,
                zhmj: data.data[0].zhmj == undefined ? 0 : data.data[0].zhmj,

            }
            obg_text.zhmj == null ? 0 : obg_text.zhmj;
            store.setCockpitHysyText(obg_text);

            // 图表数据
            let obj_echart = {
                beginTime: store.state.cockpit_date[0],
                endTime: store.state.cockpit_date[1],
                jscType: 'jsc_hysyq_yelx',
                id: address
            };
            let data_echart = await cockpitInfo(obj_echart);

            let obg_echart = {
                x: data_echart.data.map(item => item.yhlx_name),
                bar: data_echart.data.map(item => item.zhmj)

            }
            console.log(obg_echart.x.length == 0, "obg_echart.x.length");

            obg_echart.x.length == 0 ? obg_echart.x = ['渔业基础设施用海', '开放式养殖用海', '旅游基础设施用海', '浴场用海',
                '游乐场用海'] : obg_echart.x = obg_echart.x;

            obg_echart.bar.length == 0 ? obg_echart.bar = [0, 0, 0, 0, 0,] : obg_echart.bar = obg_echart.bar;

            store.setCockpitHysyEchart(obg_echart);


            this.$refs.hysy_ref["getRenKou"]();

            // getRenKou();

            console.log(address, "address");
        },
        hysyq_xzqh() {
            const that = this;
            that.$refs.hysy_ref["label_data"]();
            that.$refs.hysy_ref["echart_data"]();
        },
        async gkzb_xzqh(address) {
            let obj = {
                // beginTime: store.state.cockpit_date[0],
                // endTime: store.state.cockpit_date[1],
                jscType: 'jsc_gkzb_ztgu_stbh',
                id: address
            };
            let data = await cockpitInfo(obj);

            let obj_yjjbntmj = {
                jscType: 'jsc_gdbh_ztgh_nt',
                id: address
            };
            let obj_yjjbntmj_data = await cockpitInfo(obj_yjjbntmj);
            // 永久基本农田保护面积
            // that.yjjbntmj = obj_yjjbntmj_data.data[0].yjjbntmj;


            let obj_kfbjmj = {
                jscType: 'jsc_gkzb_ztgh_kfbj',
                id: address
            };
            let obj_kfbjmj_data = await cockpitInfo(obj_kfbjmj);
            // // 城市开发边界
            // that.kfbjmj = obj_kfbjmj_data.data[0].kfbjmj;
            // // 覆盖城镇开发边界
            // that.bfb = obj_kfbjmj_data.data[0].bfb * 100;
            store.setCockpitGkzb({
                mj: data.data[0].mj,// 生态保护红线面积
                ly_mj: data.data[0].ly_mj,// 路域生态保护红线
                hy_mj: data.data[0].hy_mj,//近海岸面积
                yjjbntmj: obj_yjjbntmj_data.data[0].yjjbntmj,// 永久基本农田保护面积
                kfbjmj: obj_kfbjmj_data.data[0].kfbjmj,// 城市开发边界
                bfb: obj_kfbjmj_data.data[0].bfb * 100,// 覆盖城镇开发边界

            });
            console.log(store.state.cockpit_gkzb, "sadas");

        },
        async gkzb() {
            const that = this;
            that.$refs.gkzb_ref["initData"]();
        },
        async pick_xzqh() {
            const that = this;
            const handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
            handler.setInputAction(async event => {
                let pickObj = viewer.scene.pick(event.position);
                var position = viewer.scene.pickPosition(event.position);

                if (!position)//点击到地球之外
                    return false;
                var cartographic = Cesium.Cartographic.fromCartesian(position);


                let longitude = Cesium.Math.toDegrees(cartographic.longitude);
                let latitude = Cesium.Math.toDegrees(cartographic.latitude);
                let height = cartographic.height;
                let heading = viewer.scene.camera.heading;
                let pitch = viewer.scene.camera.pitch;
                // that.addSceneFun()
                // console.log(longitude, latitude, height);

                // if (!pickObj)//未获取实体
                //     return false;


                if (!position) {
                    position = Cesium.Cartesian3.fromDegrees(0, 0, 0);
                }

                if (Cesium.defined(pickObj)) {



                    if (pickObj.id && pickObj.id instanceof Cesium.Entity) {//点击entity

                        if (pickObj.id.properties.hasProperty('name')) {
                            const name = pickObj.id.properties.name.getValue();
                            const address = pickObj.id.properties.adcode.getValue();
                            const center = pickObj.id.properties.centroid.getValue();
                            store.state.regional_information={
                                id:address,
                                name:name,
                            }
                            // 选中状态
                            pickObj.id.polygon._material.color = Cesium.Color.fromCssColorString(that.xzqh_color_click);
                            pickObj.id.polygon.extrudedHeight = 850;

                            // 恢复其他状态
                            viewer.entities.values.forEach((res) => {

                                if (res.properties.name._value != name) {
                                    // console.log(res.properties.name._value, "其他的");
                                    // console.log(res);
                                    res.polygon._material.color = Cesium.Color.fromCssColorString(that.xzqh_color)
                                    res.polygon.extrudedHeight = 450;

                                }
                            })
                            that.params.id = address
                            that.setDatas()
                            // 驾驶舱海域使用权
                            that.hysyq(address);
                            // 驾驶舱土地收储
                            that.tdsc_xzqh(address);
                            that.gkzb_xzqh(address);

                        } else {

                        }

                    }




                } else {
                    // 暂时点击周围数据显示三亚市
                    // 清除所有xzqh状态
                    viewer.entities.values.forEach((res) => {

                        // console.log(res.properties.name._value, "其他的");
                        // console.log(res);
                        res.polygon._material.color = Cesium.Color.fromCssColorString(that.xzqh_color)
                        res.polygon.extrudedHeight = 450;

                    })
                    // 海域使用
                    that.hysyq_xzqh();
                    // 土地收储
                    that.tdsc();
                    // 管控指标
                    that.gkzb();


                }

            }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
        },
        tdsc() {
            const that = this;
            that.store.setCockpitTdsc(true);

        },
        tdsc_xzqh() {
            const that = this;
            that.store.setCockpitTdsc(false);
        },
        init_xzqh() {
            const that = this;
            xzqh.features.forEach((res) => {

                const twoDArray = res.geometry.coordinates[0][0];
                const oneDArray = twoDArray.reduce((accumulator, currentValue) => accumulator.concat(currentValue), []);

                console.log();

                viewer.entities.add({
                    position: Cesium.Cartesian3.fromDegrees(res.properties.centroid[0], res.properties.centroid[1], 500),
                    text: res.properties.name,
                    label: {
                        scale: 1.5,
                        font: "bolder 16px sans-serif",
                        style: Cesium.LabelStyle.FILL_AND_OUTLINE,
                        text: res.properties.name,//图标名称
                        fillColor: Cesium.Color.fromCssColorString("#ffffff"),
                        pixelOffset: new Cesium.Cartesian2(5, -15),
                        zIndex: 3,
                    },
                    billboard: {
                        // 图像地址，URI或Canvas的属性
                        image: "./static/images/overview/htq-f.png",
                        height: 60,
                        // 宽度（以像素为单位）
                        width: 150,
                        // 相对于坐标的垂直位置
                        // verticalOrigin: Cesium.VerticalOrigin.CENTER,
                        // // 相对于坐标的水平位置
                        // horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
                        scale: 1.0,
                        zIndex: 2,

                        show: true
                    },
                    properties: {
                        'type': "cockpit",
                        'name': res.properties.name,
                        'centroid': res.properties.centroid,
                        'adcode': res.properties.adcode,
                    },
                    polygon: {
                        zIndex: 1,
                        hierarchy: {
                            positions: Cesium.Cartesian3.fromDegreesArray(oneDArray),
                        },
                        // outline: false,
                        material: Cesium.Color.fromCssColorString(that.xzqh_color),
                        height: 100,
                        extrudedHeight: 450,
                        outline: true,
                        // outlineColor : Cesium.Color.BLACK
                        outlineColor: Cesium.Color.fromCssColorString('#55A1E3'),
                        // 设置远近裁条件
                        distanceDisplayCondition: new Cesium.DistanceDisplayCondition(20000, 9999999999.0),
                    }
                });

            })
        },
        addSceneFun() {
            var pitch = viewer.camera.pitch;
            //获取当前视角的heading
            var heading = viewer.camera.heading;
            //获取当前视角的postion（位置）
            var position = viewer.camera.position;
            var x = position.x;
            var y = position.y;
            var z = position.z;
            var testPitch = pitch;
            var testHeading = heading;
            // console.log("获取当前视角x,y,z", position.x, position.y, position.z, "pitch", pitch, "heading", heading);

            var obj = {
                "x": x,
                "y": y,
                "z": z,
                "pitch": pitch,
                "heading": heading,
            }

            console.log(obj, "asd");

        }
    },
    beforeCreate() { }, //生命周期 - 创建之前
    created() { }, //生命周期 - 创建完成（可以访问当前this实例）
    beforeMount() { }, //生命周期 - 挂载之前
    async mounted() {

        // let obj = { beginTime: '20230612', endTime: '20230817', jscType: 'jsc_wpjc_yelx', id: '46' };
        // let data = await cockpitInfo(obj);



        // let obj1 = { beginTime: '20230612', endTime: '20230817', jscType: 'jsc_wpjc_ztsh', id: '46' }
        // let data1 = await cockpitInfo(obj1);

        // console.log(data, "asda");
        // console.log(data1, "asda");
        // 三亚行政区划加载


        this.$nextTick((res) => {
            this.pick_xzqh();
            this.init_xzqh()
        });


    }, //生命周期 - 挂在完成
    beforeUpdate() { }, //生命周期 - 更新之前
    updated() { }, //生命周期 - 更新之后
    beforeDestroy() { }, //生命周期 - 销毁之前
    destroy() { },//生命周期 - 销毁完成
    activated() { }, //若组件实例是 <KeepAlive> 缓存树的一部分，当组件被插入到 DOM 中时调用。
    deactivated() { } //若组件实例是 <KeepAlive> 缓存树的一部分，当组件从 DOM 中被移除时调用。
};
</script>
<style  scoped></style>