Browse Source

地质灾害接口联调

maxiaoxiao 7 months ago
parent
commit
3074597f12

+ 8 - 1
src/utils/MapHelper/help.js

@@ -39,6 +39,13 @@ export function listToMatrix(list, elementsPerSubArray) {
   }
   return matrix;
 }
+export function getHight(lon, lat, fun) {
+  var polycenter = [Cesium.Cartographic.fromDegrees(Number(lon), Number(lat))];
+  viewer.scene.sampleHeightMostDetailed(polycenter).then(function (data) {
+    let gcHight = data[0].height ? Number(data[0].height.toFixed(2)) : 0;
+    fun(gcHight > -100 ? gcHight : 0)
+  });
+}
 // 加载GeoJSON数据
 export function loadGeoJSON(geom, yanse, adata, fun) {
   let geojson = typeof geom === 'string' ? parse(geom) : geom;
@@ -63,7 +70,7 @@ export function loadGeoJSON(geom, yanse, adata, fun) {
       if (!geojson.type.includes("Polygon")) {
         if (entity.billboard) {
           entity.billboard = new Cesium.BillboardGraphics({
-            image: "@/.././static/images/flypng/hos_point.png",
+            image: `@/.././static/images/flypng/${adata.point || 'hos_point'}.png`,
             height: 40,
             width: 40,
             scale: 1.0,

+ 32 - 32
src/views/geologyDisaster/config.js

@@ -24,53 +24,53 @@ export const zzForm = [
 ]
 
 export const TableHeader = [
-  { label: "隐患点名称", prop: "xmmc", align: 'center' },
-  { label: "所在行政村", prop: "zgbm", width: '120px' },// slot: "mj"
-  { label: "规模等级", prop: "gm", width: '80px ', slot: "mj", align: 'center' },
+  { label: "隐患点名称", prop: "zhmc", align: 'center' },
+  { label: "行政村", prop: "szxzc", width: '80px' },
+  { label: "等级", prop: "gmdj", width: '50px ', align: 'center' },
   { label: "操作", slot: "action", width: '80px', align: 'center' },
 ]
 
 
 // 基本信息详情
 export const jbxxInfos = [
-  { label: '地质灾害隐患点名称', value: 'tbbh', span: 12 },
-  { label: '所在辖区', value: 'dlbm', span: 12 },
-  { label: '所在行政村', value: 'dlmc', span: 12 },
-  { label: '规模等级', value: 'qsxz', span: 12 },
-  { label: '经度', value: 'tbmj', span: 12 },
-  { label: '纬度', value: 'kcdlbm', span: 12 },
-  { label: '威胁人数(人)', value: 'kcxs', span: 12 },
-  { label: '防灾责任划分', value: 'kcmj', span: 12 },
-  { label: '事权划分', value: 'tbdlmj', span: 12 },
+  { label: '地质灾害隐患点名称', value: 'zhmc', },
+  { label: '所在辖区', value: 'szxq', },
+  { label: '所在行政村', value: 'szxzc', },
+  { label: '规模等级', value: 'gmdj', },
+  { label: '经度', value: 'lzb', },
+  { label: '纬度', value: 'bzb', },
+  { label: '威胁人数(人)', value: 'wxrs', },
+  { label: '防灾责任划分', value: 'fzzrhf', },
+  { label: '事权划分', value: 'sqhf', },
 ]
 export const zgdwInfos = [
-  { label: '主管单位名称', value: 'gdlx' },
-  { label: '责任领导/职务/电话', value: 'gdpdjb' },
-  { label: '直接责任人/职务/电话', value: 'frdbs' },
-
+  { label: '主管单位名称', value: 'zgdw_mc' },
+  { label: '责任领导/职务/电话', value: 'fzr', isslot: true },//zgdw_zrld/zgdw_zrldzw/zgdw_zrlddh
+  { label: '直接责任人/职务/电话', value: 'zjfzr', isslot: true },//zgdw_zjfzr/zgdw_zjfzrzw/zgdw_zjfzrdh
 ]
 export const qcqfInfos = [
-  { label: '群测群防员', value: 'czcsxm' },
-  { label: '联系电话', value: 'sjnf' },
+  { label: '群测群防员', prop: 'qf_fzr' },
+  { label: '联系电话', prop: 'qf_fzrdh' },
 ]
+
 // 检测资料
 // 隐患排查与整改情况
 export const yhpcInfos = [
-  { label: '排查责任单位', value: 'bz' },
-  { label: '排查负责人/联系电话', value: 'bsm' },
-  { label: '警示标志', value: 'ysdm' },
-  { label: '群测群防员配备', value: '项目类型' },
-  { label: '隔离防护设施', value: 'xmmc', isslot: true },
-  { label: '其他问题隐患', value: 'zzhdlmc' },
+  { label: '排查责任单位', value: 'pc_pczrdw' },
+  { label: '排查负责人/联系电话', value: 'pcfzr', isslot: true },//pc_fzr/pc_fzrdh
+  { label: '警示标志', value: 'pc_jsbz' },
+  { label: '群测群防员配备', value: 'pc_qcqfypb' },
+  { label: '隔离防护设施', value: 'pc_glfhcs' },
+  { label: '其他问题隐患', value: 'pc_qtwtyh' },
 ]
 
 export const yhzgInfos = [
-  { label: '整改责任单位', value: 'zzhdlbm' },
-  { label: '整改负责人/联系电话', value: 'qsdwdm' },
-  { label: '整改措施', value: 'qsdwmc' },
-  { label: '整改进展情况', value: 'zldwmc' },
-  { label: '整改完成/预计整改完成时间', value: 'zldwdm' },
-  { label: '下一步防治整改计划', value: 'xzgdlydlbm' },
+  { label: '整改责任单位', value: 'zg_zrdw' },
+  { label: '整改负责人/联系电话', value: 'zgfzr', isslot: true },//zg_fzr/zg_fzrdh
+  { label: '整改措施', value: 'zg_cs' },
+  { label: '整改进展情况', value: 'zg_jzqk' },
+  { label: '整改完成/预计整改完成时间', value: 'zg_jd' },
+  { label: '下一步防治整改计划', value: 'zg_xybfa' },
 ]
 
 //应急预案
@@ -97,8 +97,8 @@ export const timeInfos = [
 ]
 
 export const fileHeader = [
-  { label: "资料名称", prop: "xmmc", align: 'center' },
-  { label: "时间", prop: "zgbm", width: '120px' },
+  { label: "资料名称", prop: "bz", align: 'center' },
+  { label: "时间", prop: "jc_date", width: '120px' },
   { label: "操作", slot: "action", width: '80px', align: 'center' },
 ]
 export const fzrHeader = [

+ 71 - 23
src/views/geologyDisaster/details.vue

@@ -15,18 +15,24 @@
             <div class="echartTitle">
               <div class="block-title">主管单位</div>
             </div>
-            <DesInfo :model="formData" :config="zgdwInfos"></DesInfo>
+            <DesInfo :model="formData" :config="zgdwInfos">
+              <template #fzr> {{ `${formData.zgdw_zrld}/${formData.zgdw_zrldzw}/${formData.zgdw_zrlddh}` }}</template>
+              <template #zjfzr>
+                {{ `${formData.zgdw_zjfzr}/${formData.zgdw_zjfzrzw}/${formData.zgdw_zjfzrdh}` }}
+              </template>
+            </DesInfo>
             <div class="echartTitle">
               <div class="block-title">群测群防</div>
             </div>
-            <DesInfo :model="formData" :config="qcqfInfos"></DesInfo>
+            <tablePage class="tablePage" :cloumn="qcqfInfos" :table="qfqclist" :indexed="false" layout="">
+            </tablePage>
             <div class="echartTitle">
               <div class="block-title">检测资料</div>
             </div>
             <tablePage class="tablePage" :cloumn="fileHeader" :table="fileList" :indexed="false" layout="">
               <template #action="{ row }">
-                <span class="usable" @click="detail(row)">详情</span>
-                <span class="usable" @click="download(row)"> 查看 </span>
+                <span class="usable" @click="preview(row)">查看</span>
+                <span class="usable" @click="download(row)"> 下载 </span>
               </template>
             </tablePage>
 
@@ -37,16 +43,20 @@
             <div class="echartTitle">
               <div class="block-title">隐患排查情况</div>
             </div>
-            <DesInfo :model="formData" :config="yhpcInfos"></DesInfo>
+            <DesInfo :model="formData" :config="yhpcInfos">
+              <template #pcfzr> {{ `${formData.pc_fzr}/${formData.pc_fzrdh}` }}</template>
+            </DesInfo>
             <div class="echartTitle">
               <div class="block-title">隐患整改情况</div>
             </div>
-            <DesInfo :model="formData" :config="yhzgInfos"></DesInfo>
-            <div @click="bigimg = true">
+            <DesInfo :model="formData" :config="yhzgInfos">
+              <template #zgfzr> {{ `${formData.zg_fzr}/${formData.zg_fzrdh}` }}</template>
+            </DesInfo>
+            <div @click="bigimg = true" v-show="imgList.length">
               <el-carousel indicator-position="outside" @change="(v) => imgIndex = v">
-                <el-carousel-item v-for="(item, i) in monitorList" :key="item">
+                <el-carousel-item v-for="(item, i) in imgList" :key="item">
                   <div class="imgi"> {{ imgIndex }}</div>
-                  <!-- <div class="imgi">{{ `${i + 1} / ${monitorList.length}` }}</div> -->
+                  <!-- <div class="imgi">{{ `${i + 1} / ${imgList.length}` }}</div> -->
                   <img :src="item.imgUrl" />
                   <div class="imgInfo"> {{ item.info }} </div>
                 </el-carousel-item>
@@ -58,8 +68,8 @@
             <tablePage class="tablePage" :cloumn="fzrHeader" :table="zzfiletable" :indexed="false" layout=""
               ref="tableDialogRef">
               <template #action="{ row }">
-                <span class="usable" @click="detail(row)">详情</span>
-                <span class="usable" @click="download(row)"> 对比 </span>
+                <span class="usable" @click="preview(row)">查看</span>
+                <span class="usable" @click="download(row)"> 下载 </span>
               </template>
             </tablePage>
           </div>
@@ -91,15 +101,14 @@
         <i class="el-icon-close" @click="bigimg = false"></i>
       </div>
       <el-carousel trigger="click" indicator-position="outside" :autoplay="false" :initial-index="imgIndex">
-        <el-carousel-item v-for="(item, i) in monitorList" :key="i">
-          <div class="imgi">{{ `${i + 1} / ${monitorList.length}` }}</div>
+        <el-carousel-item v-for="(item, i) in imgList" :key="i">
+          <div class="imgi">{{ `${i + 1} / ${imgList.length}` }}</div>
           <img :src="item.imgUrl" />
           <div class="imgInfo"> {{ item.info }} </div>
         </el-carousel-item>
       </el-carousel>
 
     </div>
-
   </div>
 </template>
 <script>
@@ -107,7 +116,7 @@
 // import CustomDetails from "@/components/mapView/custom-detailsInfo.vue";
 import DesInfo from "@/components/mapView/descriptionsInfo.vue";
 import tablePage from "@/components/mapView/tablePage.vue";
-import { getXm } from "@/api/stxf/tdzz.js";
+import { QueryOne, QueryList } from "@/api/cockpitNew";
 import { jbxxInfos, zgdwInfos, qcqfInfos, fileHeader, yhpcInfos, yhzgInfos, yjyaInfos, fzrHeader, jszdInfos, timeInfos } from "./config.js";
 export default {
   props: {
@@ -122,12 +131,12 @@ export default {
       activeTabs: "jbxx",
       isShallow: false,
       formData: { tbbh: 'skmdslcmdrvnfjkvn就是当你发觉的女第就是当你发觉的三次多少地方' },
-      fileList: { data: [{}] },
-      rdData: [],
+      qfqclist: { data: [] },
+      fileList: { data: [] },
       type: "",
       bigimg: false,
       imgIndex: 0,
-      monitorList: [
+      imgList: [
         {
           imgUrl:
             "https://b0.bdstatic.com/ugc/Gr0RkpztmAdvrxnS4n54Iw49d04e3484c9bb1a11f03b38a819d893.jpg@h_1280",
@@ -153,8 +162,8 @@ export default {
           info: "育才生态区那阳小组(治理后)"
         },
       ],
-      fzrtable: { data: [{}] },
-      zzfiletable: { data: [{}] },
+      fzrtable: { data: [] },
+      zzfiletable: { data: [] },
       jbxxInfos: jbxxInfos,
       zgdwInfos: zgdwInfos,
       qcqfInfos: qcqfInfos,
@@ -178,11 +187,25 @@ export default {
         viewer.entities.removeAll();
       });
     },
-    handleView({ parts, queryData, geoms, e }, type) {
-      this.type = type;
+    download(row) {
+      window.open(`${window.axiosURI}/file/upload/attachment/ ${row.path}`);
+    },
+    preview(row) {
+      window.open(
+        ` ${window.axiosURI}/analyse/fzss/ShowReport?filePath=${row.path}`,
+        "_blank"
+      );
+    },
+    handleView({ bsm }, type) {
+      // this.type = type;
       this.activeTabs = "jbxx";
-      this.jbxxData = [];
       this.isShallow = true;
+      this.getjbxxData(bsm)
+      this.getqfqc(bsm)
+      this.getJcfile(bsm)
+      this.getPhotos(bsm)
+      this.getZzfile(bsm)
+
       // if (!e.features[0].fieldNames) {
       //   this.$message({
       //     message: "查询结果为空!",
@@ -196,6 +219,31 @@ export default {
       //   addGeomParts(false, geoms, parts);
       // }
     },
+    getjbxxData(id) {
+      QueryOne({ jscType: "t_zhd_sjxq", id }).then((res) => {
+        this.formData = res.data
+      });
+    },
+    getqfqc(id) {
+      QueryList({ jscType: "t_zhd_qflb", id }).then((res) => {
+        this.qfqclist = res
+      });
+    },
+    getJcfile(id) {
+      QueryList({ jscType: "t_zhd_jczl", id }).then((res) => {
+        this.fileList = res
+      });
+    },
+    getPhotos(id) {
+      QueryList({ jscType: "t_zhd_zgphoto", id }).then((res) => {
+        this.imgList = res.data
+      });
+    },
+    getZzfile(id) {
+      QueryList({ jscType: "t_zhd_zzxmzl", id }).then((res) => {
+        this.zzfiletable = res
+      });
+    },
   },
   mounted() { },
   watch: {},

+ 55 - 78
src/views/geologyDisaster/index.vue

@@ -3,27 +3,26 @@
     <div class="innerContainer leftPane" v-drag>
       <h2 class="Pangetitle darg-div">
         <span class="pange_text"> 地质灾害隐患点 </span>
-        <div class="totalnum">共:{{ total }}个</div>
+        <div class="totalnum">共:{{ table.total }}个</div>
       </h2>
-      <div class="xz_box">
+      <div class="xz_box" v-loading="loading">
         <div class="el-col headerSelect">
-          <el-input clearable v-model="pageObj.LA" @input="searchFun()" class="search" placeholder="请输入查询内容"
+          <el-input clearable v-model="pageObj.val0" @change="searchFun()" class="search" placeholder="请输入查询名称"
             size="mini"></el-input>
-          <el-cascader v-model="pageObj.xzqh" :show-all-levels="false" :options="store.state.region_tree"
+          <el-cascader v-model="pageObj.id" :show-all-levels="false" :options="store.state.region_tree"
             @change="searchFun()" placeholder="行政区" size="mini" :props="{
               checkStrictly: true,
               expandTrigger: 'hover',
               emitPath: false,
             }"></el-cascader>
         </div>
-        <tablePage class="tablePage" :cloumn="cloumn" :table="table" :indexed="false" layout="" ref="tableDialogRef"
-          @currentChange="searchFun">
+        <tablePage class="tablePage" :cloumn="cloumn" :table="table" :indexed="false" layout="" ref="tableDialogRef">
           <template #mj="{ row }">
             {{ Number(row.gm).toFixed(2) }}
           </template>
           <template #action="{ row }">
+            <span class="usable" @click="flyTo(row)"> 定位 </span>
             <span class="usable" @click="detail(row)">详情</span>
-            <span class="usable" @click="handle(row)"> 对比 </span>
           </template>
         </tablePage>
       </div>
@@ -38,9 +37,8 @@ import tablePage from "@/components/mapView/tablePage.vue";
 import customForm from "@/components/mapView/custom-form.vue";
 import Details from "./details.vue";
 import { QueryList } from "@/api/cockpitNew";
-import { getXmList } from "@/api/stxf/tdzz.js";
-import { zzForm, TableHeader } from "./config";
-import { loadGeoJSON, removeGeoJSON } from "@/utils/MapHelper/help.js";
+import { TableHeader } from "./config";
+import { loadGeoJSON, removeGeoJSON, getHight } from "@/utils/MapHelper/help.js";
 let geoSources = {};
 export default {
   components: {
@@ -58,119 +56,98 @@ export default {
   },
   data() {
     return {
+      loading: false,
       pageObj: {
-        xzqdm: "",
-        xmmc: "",
-        lxfl: "",
-        pageNum: 1,
-        pageSize: 10,
+        id: '4602',
+        val0: "",
+        // pageNum: 1,
+        // pageSize: 10,
       },
-      region: "",
-      formConfig: zzForm,
       cloumn: TableHeader,
       table: {
-        data: [{}],
-        total: 20,
+        data: [],
+        total: 0,
       },
-      now: "",
+
       tempdataLayerId: "",
     };
   },
   mounted() {
     this.reset();
+    this.searchFun();
   },
   methods: {
     cockpit() {
       this.$emit("cockpit");
     },
     regionChange(region) {
-      this.region = region;
-      this.pageObj.xzqdm = region;
       this.searchFun();
     },
     searchFun(page = {}) {
-      this.pageObj.pageNum = page.pageIndex || 1;
-      this.pageObj.pageSize = page.size || 10;
+      // this.pageObj.pageNum = page.pageIndex || 1;
+      // this.pageObj.pageSize = page.size || 10;
       this.getTableData();
     },
     getTableData() {
-      this.$emit("updateParent", "loading", true);
-      removeGeoJSON("zzxm");
-      getXmList(this.pageObj).then((res) => {
-        this.$emit("updateParent", "loading", false);
-        this.table = { total: res.total, data: res.rows };
-        this.active_tableData(res.rows);
+      this.loading = true
+      removeGeoJSON("dzzh");
+      QueryList({
+        jscType: "t_zhd_sjlb",
+        ... this.pageObj
+      }).then((res) => {
+        this.loading = false
+        this.table = { total: res.data.length, data: res.data };
+        this.active_tableData(res.data);
       });
     },
-
-    tableRowClassName({ row, rowIndex }) {
-      // if (rowIndex === this.scrollTop_index) {
-      //   return "warning-row";
-      // }
-      // return "";
-    },
     active_tableData(newVal) {
       newVal.forEach((item, index) => {
-        item.tQytdzzZzxm.forEach((res) => {
-          if (res.geom)
-            loadGeoJSON(res.geom, "#facd91", { isfly: false }, (data) => {
-              geoSources[res.pid + res.id] = data;
-              data.name = "zzxm";
-              res.entity = "整治图斑";
-              data.entities.values.forEach((entity) => {
-                entity.properties = { type: "图斑上图", res };
-              });
-            });
-        });
-      });
-    },
-    flyTo(item, fill_a = 0.4) {
-      // let xzqdm = "h_" + item.xzqdm;
-      // this.tempdataLayerId = xzqdm;
-      // if (geoSources[xzqdm]) return;
-      removeGeoJSON("zzxmhig");
-      item.tQytdzzZzxm.forEach((res) => {
-        if (res.geom)
-          loadGeoJSON(res.geom, "#ff0000", { isfly: true, fill_a }, (data) => {
-            data.name = "zzxmhig";
-            geoSources[res.pid + res.id + "h"] = data;
-            res.entity = "整治图斑";
-            data.entities.values.forEach((entity) => {
-              entity.properties = { type: "图斑上图", res };
-            });
+        getHight(item.lzb_x, item.bzb_y, (gcHight) => {
+          let geom = `POINT (${item.lzb_x} ${item.bzb_y} ${gcHight || ''})`
+          loadGeoJSON(geom, "#facd91", { isfly: false, point: 'landslide' }, (data) => {
+            geoSources[item.bsm] = data;
+            data.name = "dzzh";
           });
+        })
+
       });
     },
+    flyTo(item) {
+      viewer.flyTo(geoSources[item.bsm],);
+      // removeGeoJSON("dzzhhig");
+      // loadGeoJSON(res.geom, "#ff0000", { isfly: true, fill_a }, (data) => {
+      //   data.name = "dzzhhig";
+      //   geoSources[res.pid + res.id + "h"] = data;
+      //   res.entity = "整治图斑";
+      // });
+    },
+
 
     reset(xzqh) {
       this.pageObj = {
-        xzqdm: this.region,
-        xmmc: "",
-        lxfl: "",
-        pageNum: 1,
-        pageSize: 10,
+        id: '4602',
+        val0: "",
+
+        // pageNum: 1,
+        // pageSize: 10,
       };
-      removeGeoJSON("zzxm");
-      removeGeoJSON("zzxmhig");
+      removeGeoJSON("dzzh");
+      removeGeoJSON("dzzhhig");
     },
     detail(row) {
       this.$refs.detailModal.handleView(row);
     },
     async handle(row) {
-      removeGeoJSON("zzxm");
+      removeGeoJSON("dzzh");
       this.flyTo(row, 0.01);
       let res = await QueryList({
-        jscType: "qytuzz_zzxm_qhdb",
+        jscType: "t_zhd_sjlb",
         id: row.id,
       });
       console.log("----", res);
-      this.$emit("contrast", { id: this.region, fp: res.data });
-    },
 
-    changerdxz() {
-      this.pageObj.isConfirm = !this.pageObj.isConfirm;
-      this.searchFun();
     },
+
   },
   watch: {
     tempdataLayerId(newVal, oldVal) {

BIN
static/images/flypng/landslide.png