import { getConfigKey } from "@/api/system/config"; import { getInfo } from "@/api/login"; import { treeselect, treeselectByDeptId } from "@/api/system/dept"; import GisUtils from '@/utils/gis.js'; import { assetsStatistics, deptFundStatistics, financeSummary, financeSummaryOverview, incomeBookRank, incomeMonthStatistics, incomeTownRank, resourceAssetsStatistics } from "@/api/dataScreen/bigDataMonitoring2/stockCooperative.js"; import { comps } from './data.js' import { fromLonLat } from 'ol/proj' let gis = null; const DEPT_CHANGED = 1; const YEAR_CHANGED = 1 << 1; const ALL_CHANGED = ~(1 << 31); export default { components: { }, data () { return { financeSummary: { funds: 0, // 资金 totalAssets: 0, // 资产 totalResource: 0, // 资源 income: 0, // 经营收入 outcome: 0, // 经营支出 overhead: 0, // 管理费用 revenue: 0, // 发包收入 otherIncome: 0, // 其他收入 otherOutcome: 0, // 其他支出 }, financeSummaryOverview: { zeroIncomeBook: 0, // 0收入组织 areaTotalIncome: 0, // 区收入总和 townAvgIncome: 0, // 镇平均收入 bookAvgIncome: 0, // 组织平均收入 }, //搜索栏参数 centerYear: new Date().getFullYear(), yearList: [ new Date().getFullYear(), new Date().getFullYear() - 1, new Date().getFullYear() - 2, new Date().getFullYear() - 3, new Date().getFullYear() - 4, ], addrText: [100,], deptTreeProps: { checkStrictly: true, }, queryParams: { year: new Date().getFullYear(), deptId: 100, }, yellowIcon: require('./icon/yellow.png'), comps, map: "", // 地图 mapGeoServerUrl: "", // geoserver地址 mapBorder: "", // 地图边界 deptLayer: "", // 坐标点图层 countyBorderLayerName: "", // 区县边界图层名称 townBorderLayerName: "", // 乡镇边界图层名称 villageBorderLayerName: "", // 村边界图层名称 groupBorderLayerName: "", // 组边界图层名称 addrOptions: [] }; }, computed: { currentComp: function () { return this.comps[this.tab] } }, created () { }, mounted () { // 获取geoserver的地址 this.getGeoServerUrl(); getInfo().then(res => { // this.getData(); treeselectByDeptId({ deptId: res.user.deptId }).then((resp) => { this.addrOptions = resp.data; // 初始化地图 this.initMap(); }); }); }, methods: { //切换年份 yearDropdown (item) { this.queryParams.year = item; this.centerYear = item; this.getData(YEAR_CHANGED); }, // 绘制地图 drawMap (node, isLocated) { // isLocated 控制地图是否跳转 const dept = node.data; gis.getMapContainer().removeLayer(this.mapBorder); this.mapBorder = ''; gis.getMapContainer().removeLayer(this.deptLayer); this.deptLayer = ''; if (dept.deptLevel === '5') { this.cityId = dept.id; this.currentDeptLevel = '5'; if (dept.children && dept.children.length > 0) { // 添加区县边界 this.addCountyBorder(dept.children.map(item => item.id)); // 添加坐标点图层 this.addDeptLayer(dept.children, 'yellow.png'); } if (isLocated) { gis.getMapContainer().getView().setZoom(9); gis.getMapContainer().getView().setCenter(fromLonLat([dept.lng, dept.lat])); } } else if (dept.deptLevel === '4') { this.countyId = dept.id; this.currentDeptLevel = '4'; if (dept.children && dept.children.length > 0) { // 添加乡镇边界 this.addTownBorder(dept.children.map(item => item.id)); // 添加坐标点图层 this.addDeptLayer(dept.children, 'yellow.png'); } if (isLocated) { gis.getMapContainer().getView().setZoom(11); gis.getMapContainer().getView().setCenter(fromLonLat([dept.lng, dept.lat])); } // this.villageIds = this.findLeafNodeIds(dept); } else if (dept.deptLevel === '3') { this.townId = dept.id; this.countyId = node.path.slice(-2)[0]; this.currentDeptLevel = '3'; if (dept.children && dept.children.length > 0) { // 添加村边界 this.addVillageBorder(dept.children.map(item => item.id)); // 添加坐标点图层 this.addDeptLayer(dept.children, 'yellow.png'); } if (isLocated) { gis.getMapContainer().getView().setZoom(13); gis.getMapContainer().getView().setCenter(fromLonLat([dept.lng, dept.lat])); } // this.villageIds = this.findLeafNodeIds(dept); } else if (dept.deptLevel === '2') { this.ruralId = dept.id; this.townId = node.path.slice(-2)[0]; this.countyId = node.path.slice(-3)[0]; this.currentDeptLevel = '2'; if (dept.children && dept.children.length > 0) { const groupIds = dept.children.map(item => item.id); // 添加组边界 this.addGroupBorder(groupIds); // 添加组的坐标点图层,并且跳转到图层的中心点位置 this.addGroupPointLayer(groupIds, isLocated); } else { // 添加村边界 this.addVillageBorder(dept.id); // 添加坐标点图层 let deptList = []; deptList.push(dept); this.addDeptLayer(deptList, 'yellow.png'); if (isLocated) { gis.getMapContainer().getView().setCenter(fromLonLat([dept.lng, dept.lat])); } } if (isLocated) { gis.getMapContainer().getView().setZoom(15); } // this.villageIds = this.findLeafNodeIds(dept); } else if (dept.deptLevel === '1') { this.ruralId = node.path.slice(-2)[0]; this.townId = node.path.slice(-3)[0]; this.countyId = node.path.slice(-4)[0]; this.currentDeptLevel = '1'; // 添加组边界 this.addGroupBorder(dept.id); // 添加组的坐标点图层,并且跳转到图层的中心点位置 this.addGroupPointLayer(dept.id, isLocated); if (isLocated) { gis.getMapContainer().getView().setZoom(17); } // this.villageIds = this.findLeafNodeIds(dept); } // this.changeLayerByDept(); }, tabChange (info) { this.tab = info.id; }, // 初始化地图 initMap () { let dept = this.addrOptions[0]; let mapCenterLocation; if (dept.lng && dept.lat) { mapCenterLocation = [dept.lng, dept.lat]; } else { mapCenterLocation = [116.391461, 39.902359]; } gis = new GisUtils('map22222') gis.addTianDiTuLayer() gis.addAnnotationLayer() if (dept.deptLevel === '5') { // 登录身份为市级领导 this.userRole = 'cityLeader'; this.cityId = dept.id; this.currentDeptLevel = '5'; // 添加区县边界 this.addCountyBorder(dept.children.map(item => item.id)); } else if (dept.deptLevel === '4') { // 登录身份为县级领导 this.userRole = 'countyLeader'; this.countyId = dept.id; this.currentDeptLevel = '4'; // 添加乡镇边界 this.addTownBorder(dept.children.map(item => item.id)); gis.getView().setZoom(11); } else if (dept.deptLevel === '3') { // 登录身份为镇级领导 this.userRole = 'townLeader'; this.townId = dept.id; this.currentDeptLevel = '3'; // 添加村边界 this.addVillageBorder(dept.children.map(item => item.id)); gis.getView().setZoom(13); } // 添加坐标点图层 if (dept.children) { this.addDeptLayer(dept.children); } gis.getView().setCenter(fromLonLat(mapCenterLocation)) // 地图点击事件 gis.getMapContainer().on("click", (evt) => { let feature = gis.getMapContainer().forEachFeatureAtPixel( evt.pixel, (feature) => feature ); if (feature) { // 镇级:加载村级坐标点 if (feature.get('level') === 'deptPoint') { let parentIds = []; this.findParentNodeIds(this.addrOptions, feature.get('deptId'), parentIds); this.addrText = parentIds; this.selectAddress(parentIds); } } }); }, getData (mask) { if (!mask) mask = ALL_CHANGED; financeSummary(this.queryParams).then((resp) => { let data = resp; this.financeSummary.funds = data.funds; this.financeSummary.totalAssets = data.totalAssets; this.financeSummary.totalResource = data.totalResource; this.financeSummary.income = data.income; this.financeSummary.outcome = data.outcome; this.financeSummary.overhead = data.overhead; this.financeSummary.revenue = data.revenue; this.financeSummary.otherIncome = data.otherIncome; this.financeSummary.otherOutcome = data.otherOutcome; }); deptFundStatistics(this.queryParams).then((resp) => { let data = resp.data; // this.leftTopEchart(this.genChartData(data)); this.fundAmountTotal = data.extras.total; }); resourceAssetsStatistics(this.queryParams).then((resp) => { // this.leftBottomEchart(this.genChartData(resp.data)); }); assetsStatistics(this.queryParams).then((resp) => { // let data = this.genChartData(resp.data); // this.leftCenterEchart(data); // this.assetStatistics = data.xAxis.data.map((x, i) => { // return { // name: x, // value: data.series[0].data[i], // }; // }); }); incomeMonthStatistics(this.queryParams).then((resp) => { // this.rightTopEchart(this.genChartData(resp.data)); }); incomeBookRank(this.queryParams).then((resp) => { this.incomeBookRankList = resp.data; }); if (mask & YEAR_CHANGED) { incomeTownRank(this.queryParams).then((resp) => { this.incomeTownRankList = resp.data; }); financeSummaryOverview(this.queryParams).then((resp) => { let data = resp.data; this.financeSummaryOverview.zeroIncomeBook = data.zeroIncomeBook; this.financeSummaryOverview.areaTotalIncome = data.areaTotalIncome; this.financeSummaryOverview.townAvgIncome = data.townAvgIncome; this.financeSummaryOverview.bookAvgIncome = data.bookAvgIncome; // this.dashboardZeroincome(); // this.dashboardZeroincome2(); // this.dashboardZeroincome3(); // this.dashboardZeroincome4(); }); } }, selectAddress (value, isLocated = true) { // isLocated 控制地图是否跳转 this.queryParams.deptId = value[value.length - 1]; this.getData(DEPT_CHANGED); let node = this.$refs["cascader2"].panel.getNodeByValue(value); this.drawMap(node, isLocated); }, // 查找指定deptId的所有父节点id findParentNodeIds (tree, deptId, result) { for (let node of tree) { if (node.id === deptId) { result.unshift(node.id); return true; } if (node.children && node.children.length > 0) { let isFind = this.findParentNodeIds(node.children, deptId, result); if (isFind) { result.unshift(node.id); return true; } } } return false; }, // 添加坐标点图层 addDeptLayer (nextDeptSet) { let features = []; nextDeptSet.forEach(item => { let fs = gis.getFeature(item, this.yellowIcon) features.push(fs); }); gis.getVectorLayerByFs(features) gis.mapSetFit(features) }, // 添加区县边界 addCountyBorder (deptIds) { gis.addImageLayer(this.mapGeoServerUrl, this.countyBorderLayerName, deptIds) }, // 添加乡镇边界 addTownBorder (deptIds) { gis.addImageLayer(this.mapGeoServerUrl, this.townBorderLayerName, deptIds) }, // 添加村边界 addVillageBorder (deptIds) { gis.addImageLayer(this.mapGeoServerUrl, this.villageBorderLayerName, deptIds) }, // 获取geoserver的地址 getGeoServerUrl () { // 获取geoserver的地址 getConfigKey("system.geoServer.url").then(response => { this.mapGeoServerUrl = response.msg; }); // 获取区县边界图层名称 getConfigKey("geoserver.layer.countyBorder").then(response => { this.countyBorderLayerName = response.msg; }); // 获取乡镇边界的图层名称 getConfigKey("geoserver.layer.townBorder").then(response => { this.townBorderLayerName = response.msg; }); // 获取村边界的图层名称 getConfigKey("geoserver.layer.villageBorder").then(response => { this.villageBorderLayerName = response.msg; }); // 获取组边界的图层名称 getConfigKey("geoserver.layer.groupBorder").then(response => { this.groupBorderLayerName = response.msg; }); } } };