|
@@ -0,0 +1,561 @@
|
|
|
+<template>
|
|
|
+ <div style="width: 100%; padding: 1rem 1rem 0rem 1rem; color: white">
|
|
|
+ <el-row :gutter="10" style="display: flex; align-items: center">
|
|
|
+ <el-col :span="18">
|
|
|
+ {{ info.BenchmarkLandPrice.ProjectName }}
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-button size="mini" type="default">导出报告</el-button>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="10">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-row :gutter="10" class="container_center">
|
|
|
+ <el-col
|
|
|
+ :span="8"
|
|
|
+ class="container_center"
|
|
|
+ style="
|
|
|
+ height: 3rem;
|
|
|
+ background-color: rgba(2, 167, 240, 1);
|
|
|
+ border-radius: 6px;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <i style="font-size: 2rem" class="el-icon-office-building"></i>
|
|
|
+ </el-col>
|
|
|
+ <el-col
|
|
|
+ :span="16"
|
|
|
+ class="container_center"
|
|
|
+ style="justify-content: flex-start"
|
|
|
+ >
|
|
|
+ <div class="con-col" style="align-items: flex-start">
|
|
|
+ <a style="color: white">分析面积(平方米)</a>
|
|
|
+ <a style="font-weight: bold; color: rgba(2, 167, 240, 1)"
|
|
|
+ >66666</a
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-row :gutter="10" class="container_center">
|
|
|
+ <el-col
|
|
|
+ :span="8"
|
|
|
+ class="container_center"
|
|
|
+ style="
|
|
|
+ height: 3rem;
|
|
|
+ background-color: rgba(2, 167, 240, 1);
|
|
|
+ border-radius: 6px;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <i style="font-size: 2rem" class="el-icon-bank-card"></i>
|
|
|
+ </el-col>
|
|
|
+ <el-col
|
|
|
+ :span="16"
|
|
|
+ class="container_center"
|
|
|
+ style="justify-content: flex-start"
|
|
|
+ >
|
|
|
+ <div class="con-col" style="align-items: flex-start">
|
|
|
+ <a style="color: white">总地价(万元)</a>
|
|
|
+ <a style="font-weight: bold; color: rgba(2, 167, 240, 1)"
|
|
|
+ >55555</a
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="10">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-row :gutter="10" class="container_center">
|
|
|
+ <el-col
|
|
|
+ :span="8"
|
|
|
+ class="container_center"
|
|
|
+ style="
|
|
|
+ height: 3rem;
|
|
|
+ background-color: rgba(2, 167, 240, 1);
|
|
|
+ border-radius: 6px;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <i style="font-size: 2rem" class="el-icon-discount"></i>
|
|
|
+ </el-col>
|
|
|
+ <el-col
|
|
|
+ :span="16"
|
|
|
+ class="container_center"
|
|
|
+ style="justify-content: flex-start"
|
|
|
+ >
|
|
|
+ <div class="con-col" style="align-items: flex-start">
|
|
|
+ <a style="color: white">国有建设</a>
|
|
|
+ <a style="color: white">用地地价(万元)</a>
|
|
|
+ <a style="font-weight: bold; color: rgba(2, 167, 240, 1)"
|
|
|
+ >66666</a
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-row :gutter="10" class="container_center">
|
|
|
+ <el-col
|
|
|
+ :span="8"
|
|
|
+ class="container_center"
|
|
|
+ style="
|
|
|
+ height: 3rem;
|
|
|
+ background-color: rgba(2, 167, 240, 1);
|
|
|
+ border-radius: 6px;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <i style="font-size: 2rem" class="el-icon-price-tag"></i>
|
|
|
+ </el-col>
|
|
|
+ <el-col
|
|
|
+ :span="16"
|
|
|
+ class="container_center"
|
|
|
+ style="justify-content: flex-start"
|
|
|
+ >
|
|
|
+ <div class="con-col" style="align-items: flex-start">
|
|
|
+ <a style="color: white">集体建设</a>
|
|
|
+ <a style="color: white">用地地价(万元)</a>
|
|
|
+ <a style="font-weight: bold; color: rgba(2, 167, 240, 1)"
|
|
|
+ >55555</a
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="10" style="display: flex; align-items: center">
|
|
|
+ <el-col :span="24">
|
|
|
+ 土地用途:
|
|
|
+ <el-select
|
|
|
+ size="mini"
|
|
|
+ v-model="jzdj_LandUse"
|
|
|
+ placeholder="请选择土地用途"
|
|
|
+ clearable
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="dict in zt_jzdj_LandUse"
|
|
|
+ :key="dict.value"
|
|
|
+ :label="dict.label"
|
|
|
+ :value="dict.value"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="10">
|
|
|
+ <el-col :span="24">
|
|
|
+ <div id="echartFGY" ref="echartFGY" class="EchartsWH">
|
|
|
+ <div
|
|
|
+ id="GYEcharts"
|
|
|
+ ref="GYEcharts"
|
|
|
+ :style="{ width: '100%', height: '100%' }"
|
|
|
+ ></div>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="10">
|
|
|
+ <el-col :span="24">
|
|
|
+ <div id="echartFJT" ref="echartFJT" class="EchartsWH">
|
|
|
+ <div
|
|
|
+ id="JTEcharts"
|
|
|
+ ref="JTEcharts"
|
|
|
+ :style="{ width: '100%', height: '100%' }"
|
|
|
+ ></div>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+<script>
|
|
|
+import { v4 as uuidv4 } from "uuid";
|
|
|
+import moment from "moment";
|
|
|
+import jzdjfxsmInfo from "./jzdjfxsmInfo.vue";
|
|
|
+import elementResizeDetectorMaker from "element-resize-detector";
|
|
|
+import {
|
|
|
+ cartesian3ToWGS84,
|
|
|
+ mapQuery,
|
|
|
+ flatten,
|
|
|
+ mercator2lonLat,
|
|
|
+ undergroundMode,
|
|
|
+} from "@/utils/MapHelper/MapHelper.js";
|
|
|
+export default {
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ tooltip: createTooltip(document.body),
|
|
|
+ zt_jzdj_LandUse: window.dict.zt_jzdj_LandUse,
|
|
|
+ /**
|
|
|
+ * tabs 标签
|
|
|
+ */
|
|
|
+ activeName: "first",
|
|
|
+ //绘制事件
|
|
|
+ handlerPolygon: null,
|
|
|
+ jzdj_LandUse: "商服用地",
|
|
|
+ rules: {
|
|
|
+ ProjectName: [
|
|
|
+ { required: true, message: "请输入项目名称", trigger: "blur" },
|
|
|
+ ],
|
|
|
+ ProjectScope: [
|
|
|
+ { required: true, message: "请添加项目范围", trigger: "blur" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ BenchmarkLandPriceList: [],
|
|
|
+ GYmyChart: null,
|
|
|
+ JTmyChart: null,
|
|
|
+ };
|
|
|
+ },
|
|
|
+ props: {
|
|
|
+ info: {
|
|
|
+ type: Object,
|
|
|
+ default: () => {
|
|
|
+ return {};
|
|
|
+ },
|
|
|
+ },
|
|
|
+ layerid: {
|
|
|
+ type: String,
|
|
|
+ default: "",
|
|
|
+ },
|
|
|
+ lydata: {
|
|
|
+ type: Object,
|
|
|
+ default: () => {
|
|
|
+ return {};
|
|
|
+ },
|
|
|
+ },
|
|
|
+ lyoption: {
|
|
|
+ type: Object,
|
|
|
+ default: () => {
|
|
|
+ return {};
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ const erd = elementResizeDetectorMaker();
|
|
|
+ let that = this;
|
|
|
+ erd.listenTo([this.$refs.echartFGY, this.$refs.echartFJT], () => {
|
|
|
+ that.$nextTick(() => {
|
|
|
+ //监听到事件后执行的业务逻辑
|
|
|
+ window.echarts.init(this.$refs.GYEcharts).resize();
|
|
|
+ window.echarts.init(this.$refs.JTEcharts).resize();
|
|
|
+ });
|
|
|
+ });
|
|
|
+ this.init();
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ init() {
|
|
|
+ this.BenchmarkLandPriceList = window.BenchmarkLandPriceList;
|
|
|
+ this.initGY();
|
|
|
+ this.initJT();
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * tas切换
|
|
|
+ * @param {String} tab
|
|
|
+ * @param {Object} event
|
|
|
+ */
|
|
|
+ handleClick(tab, event) {
|
|
|
+ console.log(tab, event);
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ *基准地价说明
|
|
|
+ */
|
|
|
+ jzdjsmShow() {
|
|
|
+ var that = this;
|
|
|
+ if (that.layerid) that.$layer.close(that.layerid);
|
|
|
+ var width = "40rem";
|
|
|
+ var height = "30rem";
|
|
|
+
|
|
|
+ that.layerid = that.$layer.iframe({
|
|
|
+ content: {
|
|
|
+ content: jzdjfxsmInfo, //传递的组件对象
|
|
|
+ parent: this, //当前的vue对象
|
|
|
+ data: {}, //props
|
|
|
+ },
|
|
|
+
|
|
|
+ area: [width.toString(), height.toString()],
|
|
|
+ title: "基准地价分析说明",
|
|
|
+ maxmin: false,
|
|
|
+ shade: false, //是否显示遮罩
|
|
|
+ shadeClose: false, //点击遮罩是否关闭
|
|
|
+ cancel: () => {
|
|
|
+ //关闭事件
|
|
|
+ // alert("关闭iframe");
|
|
|
+ },
|
|
|
+ });
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * 绘制范围
|
|
|
+ */
|
|
|
+ getProjectScope() {
|
|
|
+ let that = this;
|
|
|
+ this.clear();
|
|
|
+ this.handlerPolygon = new Cesium.DrawHandler(
|
|
|
+ viewer,
|
|
|
+ Cesium.DrawMode.Polygon,
|
|
|
+ Cesium.ClampMode.Space
|
|
|
+ );
|
|
|
+ this.handlerPolygon.activate();
|
|
|
+ this.handlerPolygon.activeEvt.addEventListener(function (isActive) {
|
|
|
+ if (isActive == true) {
|
|
|
+ viewer.enableCursorStyle = false;
|
|
|
+ viewer._element.style.cursor = "";
|
|
|
+ document.body.classList.add("drawCur");
|
|
|
+ } else {
|
|
|
+ viewer.enableCursorStyle = true;
|
|
|
+ document.body.classList.remove("drawCur");
|
|
|
+ }
|
|
|
+ });
|
|
|
+ this.handlerPolygon.movingEvt.addEventListener((windowPosition) => {
|
|
|
+ that.tooltip.showAt(
|
|
|
+ windowPosition,
|
|
|
+ "<p>点击鼠标左键开始绘制分析区域</p>"
|
|
|
+ );
|
|
|
+ });
|
|
|
+ this.handlerPolygon.drawEvt.addEventListener((result) => {
|
|
|
+ that.tooltip.setVisible(false);
|
|
|
+ var polygon = result.object;
|
|
|
+ if (!polygon) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let points = [];
|
|
|
+ let positions = polygon.positions;
|
|
|
+ //遍历多边形,取出所有点
|
|
|
+ for (var i = 0, len = positions.length; i < len; i++) {
|
|
|
+ let xyz = cartesian3ToWGS84(positions[i]);
|
|
|
+ points.push({ x: xyz.lng, y: xyz.lat, z: xyz.alt });
|
|
|
+ }
|
|
|
+ if (points.length > 0) {
|
|
|
+ if (points[0] != points[points.length - 1]) {
|
|
|
+ points.push(points[0]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ that.form.ProjectScope = points;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ clear() {
|
|
|
+ if (this.handlerPolygon) {
|
|
|
+ this.handlerPolygon.clear();
|
|
|
+ this.handlerPolygon.deactivate();
|
|
|
+ this.handlerPolygon = null;
|
|
|
+ }
|
|
|
+ this.tooltip.setVisible(false);
|
|
|
+ },
|
|
|
+
|
|
|
+ submitForm(formName) {
|
|
|
+ let that = this;
|
|
|
+ this.$refs[formName].validate((valid) => {
|
|
|
+ if (valid) {
|
|
|
+ that.form.id = uuidv4();
|
|
|
+ that.form.analysisDate = moment(new Date()).format(
|
|
|
+ "YYYY-MM-DD HH:mm:ss"
|
|
|
+ );
|
|
|
+ window.BenchmarkLandPriceList.push(that.form);
|
|
|
+ that.resetForm(formName);
|
|
|
+ that.$message({
|
|
|
+ message: "保存成功",
|
|
|
+ type: "success",
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ resetForm(formName) {
|
|
|
+ this.clear();
|
|
|
+ this.$refs[formName].resetFields();
|
|
|
+ },
|
|
|
+
|
|
|
+ // 打开分析结果弹窗
|
|
|
+ openAnalyzeResults() {
|
|
|
+ if (this.FXJGInfolayerid) {
|
|
|
+ this.$layer.close(this.FXJGInfolayerid);
|
|
|
+ }
|
|
|
+ let that = this;
|
|
|
+ let w = document.body.offsetWidth;
|
|
|
+ let h = document.body.offsetHeight;
|
|
|
+ //左上角(left=弹窗宽/2;top=弹窗高/2+header高)
|
|
|
+ //右上角 (left=w-弹窗宽+(弹窗宽/2);top=弹窗高/2+header高);
|
|
|
+ let left = w - 430 + 430 / 2;
|
|
|
+ let top = 430 / 2 + 60;
|
|
|
+ this.FXJGInfolayerid = this.$layer.iframe({
|
|
|
+ content: {
|
|
|
+ content: HighLimitAnalysis, //传递的组件对象
|
|
|
+ parent: this, //当前的vue对象
|
|
|
+ data: { info: {} }, //props
|
|
|
+ },
|
|
|
+ offset: [left, top], //left top
|
|
|
+ area: ["430px", "430px"], //宽 高
|
|
|
+ title: "分析结果",
|
|
|
+ maxmin: false,
|
|
|
+ shade: false, //是否显示遮罩
|
|
|
+ shadeClose: false, //点击遮罩是否关闭
|
|
|
+ cancel: () => {},
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ initGY() {
|
|
|
+ this.GYmyChart = window.echarts.init(this.$refs.GYEcharts);
|
|
|
+
|
|
|
+ var option = {
|
|
|
+ color: [
|
|
|
+ "#5470c6",
|
|
|
+ "#91cc75",
|
|
|
+ "#fac858",
|
|
|
+ "#ee6666",
|
|
|
+ "#73c0de",
|
|
|
+ "#3ba272",
|
|
|
+ "#fc8452",
|
|
|
+ "#9a60b4",
|
|
|
+ "#ea7ccc",
|
|
|
+ ],
|
|
|
+ tooltip: {
|
|
|
+ trigger: "item",
|
|
|
+ },
|
|
|
+
|
|
|
+ legend: {
|
|
|
+ orient: "vertical",
|
|
|
+ left: "right",
|
|
|
+ top: "center",
|
|
|
+ textStyle: {
|
|
|
+ color: "#FFFFFF",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ series: [
|
|
|
+ {
|
|
|
+ name: "Access From",
|
|
|
+ type: "pie",
|
|
|
+ radius: ["40%", "70%"],
|
|
|
+ center: ["35%", "50%"], // 将饼图的中心点向左调整到容器宽度的30%,纵坐标保持在中心
|
|
|
+ avoidLabelOverlap: false,
|
|
|
+ itemStyle: {
|
|
|
+ borderRadius: 10,
|
|
|
+ borderColor: "#fff",
|
|
|
+ borderWidth: 2,
|
|
|
+ },
|
|
|
+ label: {
|
|
|
+ show: false,
|
|
|
+ position: "center",
|
|
|
+ },
|
|
|
+ emphasis: {
|
|
|
+ label: {
|
|
|
+ show: true,
|
|
|
+ fontSize: 20,
|
|
|
+ fontWeight: "bold",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ labelLine: {
|
|
|
+ show: false,
|
|
|
+ },
|
|
|
+ data: [
|
|
|
+ { value: 1048, name: "I" },
|
|
|
+ { value: 735, name: "II" },
|
|
|
+ { value: 580, name: "III" },
|
|
|
+ { value: 484, name: "IV" },
|
|
|
+ { value: 300, name: "V" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ };
|
|
|
+
|
|
|
+ this.GYmyChart.setOption(option);
|
|
|
+ },
|
|
|
+ initJT() {
|
|
|
+ this.JTmyChart = window.echarts.init(this.$refs.JTEcharts);
|
|
|
+
|
|
|
+ var option = {
|
|
|
+ color: [
|
|
|
+ "#5470c6",
|
|
|
+ "#91cc75",
|
|
|
+ "#fac858",
|
|
|
+ "#ee6666",
|
|
|
+ "#73c0de",
|
|
|
+ "#3ba272",
|
|
|
+ "#fc8452",
|
|
|
+ "#9a60b4",
|
|
|
+ "#ea7ccc",
|
|
|
+ ],
|
|
|
+ tooltip: {
|
|
|
+ trigger: "item",
|
|
|
+ },
|
|
|
+ legend: {
|
|
|
+ orient: "vertical",
|
|
|
+ left: "right",
|
|
|
+ top: "center",
|
|
|
+ textStyle: {
|
|
|
+ color: "#FFFFFF",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ series: [
|
|
|
+ {
|
|
|
+ name: "Access From",
|
|
|
+ type: "pie",
|
|
|
+ radius: ["40%", "70%"],
|
|
|
+ center: ["35%", "50%"], // 将饼图的中心点向左调整到容器宽度的30%,纵坐标保持在中心
|
|
|
+ avoidLabelOverlap: false,
|
|
|
+ itemStyle: {
|
|
|
+ borderRadius: 10,
|
|
|
+ borderColor: "#fff",
|
|
|
+ borderWidth: 2,
|
|
|
+ },
|
|
|
+ label: {
|
|
|
+ show: false,
|
|
|
+ position: "center",
|
|
|
+ },
|
|
|
+ emphasis: {
|
|
|
+ label: {
|
|
|
+ show: true,
|
|
|
+ fontSize: 20,
|
|
|
+ fontWeight: "bold",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ labelLine: {
|
|
|
+ show: false,
|
|
|
+ },
|
|
|
+ data: [
|
|
|
+ { value: 1048, name: "I" },
|
|
|
+ { value: 735, name: "II" },
|
|
|
+ { value: 580, name: "III" },
|
|
|
+ { value: 484, name: "IV" },
|
|
|
+ { value: 300, name: "V" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ };
|
|
|
+
|
|
|
+ this.JTmyChart.setOption(option);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ beforeDestroy() {
|
|
|
+ this.clear();
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+<style lang="scss">
|
|
|
+@import "@/../../zt.scss";
|
|
|
+</style>
|
|
|
+<style scoped>
|
|
|
+.el-date-editor--daterange.el-input__inner {
|
|
|
+ width: auto;
|
|
|
+ background-color: rgba(4, 28, 50, 0.5);
|
|
|
+ border: 1px solid rgba(15, 122, 200, 0.4);
|
|
|
+}
|
|
|
+.card_body_style {
|
|
|
+ border: 1px dashed #02a7f0;
|
|
|
+}
|
|
|
+.hover_style:hover {
|
|
|
+ border: 1px solid #02a7f0;
|
|
|
+}
|
|
|
+.con-col {
|
|
|
+ display: flex;
|
|
|
+ flex-flow: column nowrap;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ border-radius: 4px;
|
|
|
+}
|
|
|
+
|
|
|
+.container_center {
|
|
|
+ display: flex;
|
|
|
+ align-items: center; /* 垂直居中 */
|
|
|
+ justify-content: center; /* 水平居中,如果也需要水平居中的话 */
|
|
|
+}
|
|
|
+.EchartsWH {
|
|
|
+ width: 100%;
|
|
|
+ height: 16rem;
|
|
|
+}
|
|
|
+</style>
|