Browse Source

模型数据

tianyabing 3 years ago
parent
commit
07af03d31f

+ 3 - 3
src/components/dataManage/dataDetail/BusinessDataDetail.vue

@@ -94,9 +94,9 @@ export default {
         geometryStr: [
           { required: true, message: '请输入Geojson数据', trigger: 'blur' },
         ],
-        address: [
-          { required: true, message: '请输入地名地址库名称', trigger: 'change' },
-        ]
+        // address: [
+        //   { required: true, message: '请输入地名地址库名称', trigger: 'change' },
+        // ]
       },
       category: [],
       isMapShow: false,

+ 231 - 0
src/components/dataManage/dataDetail/MetaDataDetail.vue

@@ -0,0 +1,231 @@
+<template>
+  <el-dialog v-if="isShow"
+             :model-value="isShow"
+             title="编辑数据"
+             :width="700"
+             :close-on-click-modal="false"
+             :before-close="handleClose"
+  >
+    <div id="addData">
+      <el-form ref="form" :model="formData" :rules="formDataRules" style="margin: 0 15px" :label-width="110">
+        <el-form-item label="ID:" v-show="false">
+          <el-input v-model="formData.id" />
+        </el-form-item>
+        <el-form-item label="标题:" prop="title" >
+          <el-input v-model="formData.title" placeholder="请输入标题" :disabled="formData.isDataView" />
+        </el-form-item>
+        <el-form-item label="描述:" prop="content">
+          <el-input v-model="formData.content" placeholder="请输入描述" :disabled="formData.isDataView" />
+        </el-form-item>
+        <el-form-item label="类别:" prop="menuId">
+          <el-select v-model="formData.menuId" placeholder="请选择类别" :disabled="formData.isDataView" >
+            <el-option
+                v-for="item in category"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="数据类型:" prop="dataType">
+          <el-select v-model="formData.dataType" placeholder="请选择数据类型" :disabled="formData.isDataView" >
+            <el-option v-for="item in dataType" :key="item.value" :label="item.label" :value="item.value" ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="数据ID:" prop="dataId" v-if="formData.dataType && formData.dataType !== ''">
+          <el-select style="width: 80%" v-model="formData.dataId" placeholder="请选择数据ID,输入ID/标题/描述进行搜索"
+                     :filterable="true"
+                     :remote="true"
+                     :remote-method="searchForDataId"
+                     :remote-show-suffix="true"
+                     :loading="searchDataLoading"
+                     :disabled="formData.isDataView" >
+            <el-option v-for="item in dataList" :key="item.id" :label="item.title" :value="item.id">
+
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="地名地址库:" prop="address" >
+          <el-input v-model="formData.address" placeholder="请输入地名地址库名称" :disabled="formData.isDataView" />
+        </el-form-item>
+      </el-form>
+    </div>
+    <template #footer>
+      <el-button type="primary" @click="submit" v-show="!formData.isDataView">保存</el-button>
+    </template>
+  </el-dialog>
+
+</template>
+
+<script>
+import OlMap from "@/components/map/OlMap";
+import JsonDataView from "@/components/json/JsonDataView";
+import api from "@/api/data/BusinessData";
+import menuApi from "@/api/data/MenuData";
+
+export default {
+  data() {
+    return {
+      formData: {},
+      oriFormData: {},
+      formDataRules: {
+        title: [
+          { required: true, message: '请输入标题', trigger: 'change' },
+        ],
+        content: [
+          { required: true, message: '请输入描述', trigger: 'change' },
+        ],
+        menuId: [
+          { required: true, message: '请选择类别', trigger: 'change' },
+        ],
+        geometryStr: [
+          { required: true, message: '请输入Geojson数据', trigger: 'blur' },
+        ],
+        dataType: [
+          { required: true, message: '请选择数据类型', trigger: 'blur' },
+          { required: true, message: '请选择数据类型', trigger: 'change' },
+        ],
+        dataId: [
+          { required: true, message: '请输入数据Id', trigger: 'blur' },
+          { required: true, message: '请输入数据Id', trigger: 'change' },
+        ]
+        // address: [
+        //   { required: true, message: '请输入地名地址库名称', trigger: 'change' },
+        // ]
+      },
+      dataType: [
+        {
+          label: '二维数据',
+          value: 1
+        }, {
+          label: '三维数据',
+          value: 2
+        },{
+          label: '业务数据',
+          value: 3
+        },{
+          label: '模型数据',
+          value: 4
+        },{
+          label: '物联感知数据',
+          value: 6
+        },
+      ],
+      dataList: [],
+      searchDataLoading: false,
+      category: [],
+      isMapShow: false,
+
+      isJsonDataView: false,
+
+    }
+  },
+  props: {
+    isShow: Boolean,
+    item: Object,
+    close: Function
+  },
+  watch: {
+    "formData.menuId": function (newVal, oldVal) {
+      let app = this;
+      if (app.formData.isEdit) {
+        if (newVal!==app.oriFormData.menuId) {
+          app.$msgbox.confirm('修改类型需重新设置地理信息,确定要修改吗?','Warning', {
+            confirmButtonText: '确认修改',
+            cancelButtonText: '恢复原始类别及地理信息',
+            type: 'warning',
+          }).then(()=>{
+            app.formData.geometryStr = ''
+          }).catch(()=>{
+            app.formData.menuId = app.oriFormData.menuId;
+            app.formData.geometryStr = app.oriFormData.geometryStr;
+          })
+        } else {
+          app.formData.geometryStr = app.oriFormData.geometryStr;
+        }
+
+      }
+    }
+  },
+  mounted() {
+    this.getMenuData()
+    this.formData = this.item;
+    this.oriFormData = JSON.parse(JSON.stringify(this.formData))
+  },
+  components: {
+  },
+  methods: {
+    getMenuData() {
+      let app = this;
+      let params = {
+        type: "1",
+        parentId: "3",
+      }
+      menuApi.getMenuData(params).then(res=>{
+        if (res.code===200) {
+          app.category = res.content
+        }
+      })
+    },
+    handleClose() {
+      this.close();
+    },
+    submit() {
+      let app = this;
+      app.$refs.form.validate(valid=>{
+        if (valid) {
+          if (app.formData.isEdit){
+            app.updateData();
+          } else {
+            app.addData();
+          }
+        } else {
+          app.$message({message: '请完善数据', type: 'warning'})
+        }
+      })
+    },
+    searchForDataId(val) {
+      this.searchDataLoading = true;
+      if (val && val !== '') {
+        this.dataList = []
+        this.searchDataLoading = false;
+      } else {
+        this.dataList = []
+        this.searchDataLoading = false;
+      }
+    },
+    // 数据录入
+    addData() {
+      let app = this;
+      let params = JSON.parse(JSON.stringify(app.formData));
+      params['menuNameOne'] = '二维数据'
+      api.addData(params).then(res=>{
+        if (res.code===200) {
+          app.$message({message: '录入成功', type: 'success'})
+          app.close(true);
+        }
+      })
+    },
+    // 编辑数据
+    updateData() {
+      let app = this;
+      let params = JSON.parse(JSON.stringify(app.formData));
+      delete params.createDate;
+      delete params.updateDate;
+      api.updateData(params).then(res=>{
+        if (res.code===200) {
+          app.$message({message: '修改成功', type: 'success'})
+          app.close(true);
+        }
+      })
+    },
+  }
+}
+</script>
+
+<style>
+#addData {
+  width: 100%;
+  height: 100%;
+}
+</style>

+ 116 - 42
src/components/dataManage/dataDetail/ModelDataDetail.vue

@@ -7,21 +7,22 @@
              :before-close="handleClose"
   >
     <div id="addData">
-      <el-form ref="form" :model="formData" :rules="formDataRules" style="margin: 0 15px" :label-width="110">
+      <el-form ref="form" :inline="true" :model="formData" :rules="formDataRules" style="margin: 0 15px"
+               :label-width="110">
         <el-form-item label="ID:" v-show="false">
-          <el-input v-model="formData.id" />
+          <el-input v-model="formData.id"/>
         </el-form-item>
-        <el-form-item label="标题:" prop="title" >
-          <el-input v-model="formData.title" placeholder="请输入标题" :disabled="formData.isDataView" />
+        <el-form-item label="标题:" prop="title" style="width: 100%">
+          <el-input v-model="formData.title" placeholder="请输入标题" :disabled="formData.isDataView"/>
         </el-form-item>
-        <el-form-item label="描述:" prop="content">
-          <el-input v-model="formData.content" placeholder="请输入描述" :disabled="formData.isDataView" />
+        <el-form-item label="描述:" prop="content" style="width: 100%">
+          <el-input v-model="formData.content" placeholder="请输入描述" :disabled="formData.isDataView"/>
         </el-form-item>
-        <el-form-item label="类型:" prop="modelType">
-          <el-input v-model="formData.modelType" placeholder="请输入类型" :disabled="formData.isDataView" />
+        <el-form-item label="类型:" prop="modelType" style="width: 100%">
+          <el-input v-model="formData.modelType" placeholder="请输入类型" :disabled="formData.isDataView"/>
         </el-form-item>
         <el-form-item label="类别:" prop="menuId">
-          <el-select v-model="formData.menuId" placeholder="请选择类别" :disabled="formData.isDataView" >
+          <el-select v-model="formData.menuId" placeholder="请选择类别" :disabled="formData.isDataView">
             <el-option
                 v-for="item in category"
                 :key="item.id"
@@ -30,12 +31,23 @@
             />
           </el-select>
         </el-form-item>
-        <el-form-item label="位置" v-if="formData.isDataView" >
-          <el-input :model-value="formData.lon+', '+formData.lat" :disabled="true" >
+        <br/>
+        <el-form-item label="经度:" style="width: 40%" prop="lon">
+          <el-input :model-value="formData.lon" placeholder="经度" :disabled="formData.isDataView">
           </el-input>
         </el-form-item>
-        <el-form-item label="模型数据:" prop="url" >
-          <el-input v-model="formData.url" placeholder="请设置模型地址" :disabled="formData.isDataView" >
+        <el-form-item label="纬度:" style="width: 35%" :label-width="70" prop="lat">
+          <el-input :model-value="formData.lat" placeholder="纬度" :disabled="formData.isDataView">
+          </el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button style="font-size: 18px" @click="handleLonlatSelect" >
+            <el-icon><ElIconLocation/></el-icon>
+          </el-button>
+        </el-form-item>
+        <br/>
+        <el-form-item label="模型数据:" prop="url" style="width: 100%">
+          <el-input v-model="formData.url" placeholder="请设置模型地址" :disabled="formData.isDataView">
             <template #append>
               <el-button @click="handleMapShow(true)">
                 查看模型
@@ -43,8 +55,8 @@
             </template>
           </el-input>
         </el-form-item>
-        <el-form-item label="地名地址库:" prop="address" >
-          <el-input v-model="formData.address" placeholder="请输入地名地址库名称" :disabled="formData.isDataView" />
+        <el-form-item label="地名地址库:" prop="address" style="width: 100%">
+          <el-input v-model="formData.address" placeholder="请输入地名地址库名称" :disabled="formData.isDataView"/>
         </el-form-item>
       </el-form>
     </div>
@@ -52,11 +64,20 @@
       <el-button type="primary" @click="submit" v-show="!formData.isDataView">保存</el-button>
     </template>
   </el-dialog>
-    <CesiumMap v-if="isMapShow"
-           :is-show="isMapShow"
-           :item="formData"
-           :close="handleMapShow">
-    </CesiumMap>
+  <CesiumMap v-if="isMapShow"
+             :is-show="isMapShow"
+             :item="formData"
+             :close="handleMapShow">
+  </CesiumMap>
+
+  <OlMap v-if="isLonLatShow"
+         :is-show="isLonLatShow"
+         :is-view="formData.isDataView"
+         :geometry-str="formData.geometryStr"
+         :menuId="1"
+         :callback="setLonLatData"
+         :close="handleLonlatSelect">
+  </OlMap>
 
   <JsonDataView v-if="isJsonDataView"
                 :is-show="isJsonDataView"
@@ -69,6 +90,7 @@
 
 <script>
 import CesiumMap from "@/components/map/CesiumMap";
+import OlMap from "@/components/map/OlMap";
 import JsonDataView from "@/components/json/JsonDataView";
 import api from "@/api/data/ModelData";
 import menuApi from "@/api/data/MenuData";
@@ -80,26 +102,43 @@ export default {
       oriFormData: {},
       formDataRules: {
         title: [
-          { required: true, message: '请输入标题', trigger: 'change' },
+          {required: true, message: '请输入标题', trigger: 'blur'},
+          {required: true, message: '请输入标题', trigger: 'change'},
         ],
         content: [
-          { required: true, message: '请输入描述', trigger: 'change' },
+          {required: true, message: '请输入描述', trigger: 'blur'},
+          {required: true, message: '请输入描述', trigger: 'change'},
         ],
         modelType: [
-          { required: true, message: '请输入类型', trigger: 'change' },
+          {required: true, message: '请输入类型', trigger: 'blur'},
+          {required: true, message: '请输入类型', trigger: 'change'},
         ],
         menuId: [
-          { required: true, message: '请选择类别', trigger: 'change' },
+          {required: true, message: '请选择类别', trigger: 'blur'},
+          {required: true, message: '请选择类别', trigger: 'change'},
         ],
         geometryStr: [
-          { required: true, message: '请输入Geojson数据', trigger: 'blur' },
+          {required: true, message: '请输入Geojson数据', trigger: 'blur'},
+        ],
+        url: [
+          {required: true, message: '该字段不能为空', trigger: 'blur'},
+          {required: true, message: '该字段不能为空', trigger: 'change'},
         ],
-        address1: [
-          { required: true, message: '请输入地名地址库名称', trigger: 'change' },
+        lon: [
+          {required: true, message: '该字段不能为空', trigger: 'blur'},
+          {required: true, message: '该字段不能为空', trigger: 'change'},
+        ],
+        lat: [
+          {required: true, message: '该字段不能为空', trigger: 'blur'},
+          {required: true, message: '该字段不能为空', trigger: 'change'},
         ]
+        // address: [
+        //   { required: true, message: '请输入地名地址库名称', trigger: 'change' },
+        // ]
       },
       category: [],
       isMapShow: false,
+      isLonLatShow: false,
 
       isJsonDataView: false,
 
@@ -114,14 +153,14 @@ export default {
     "formData.menuId": function (newVal, oldVal) {
       let app = this;
       if (app.formData.isEdit) {
-        if (oldVal && newVal!==app.oriFormData.menuId) {
-          app.$msgbox.confirm('修改类型需重新设置地理信息,确定要修改吗?','Warning', {
+        if (oldVal && newVal !== app.oriFormData.menuId) {
+          app.$msgbox.confirm('修改类型需重新设置地理信息,确定要修改吗?', 'Warning', {
             confirmButtonText: '确认修改',
             cancelButtonText: '恢复原始类别及地理信息',
             type: 'warning',
-          }).then(()=>{
+          }).then(() => {
             app.formData.geometryStr = ''
-          }).catch(()=>{
+          }).catch(() => {
             app.formData.menuId = app.oriFormData.menuId;
             app.formData.geometryStr = app.oriFormData.geometryStr;
           })
@@ -139,28 +178,56 @@ export default {
   },
   components: {
     CesiumMap,
+    OlMap,
     JsonDataView,
   },
   methods: {
     handleMapShow(flag) {
       if (flag) {
-        if (this.formData.menuId) {
+        if (this.formData.url && this.formData.url !== '') {
           this.isMapShow = true
         } else {
-          this.$message({message: '请先选择类别', type: 'warning'})
+          this.$message({message: '请输入模型地址', type: 'warning'})
         }
       } else {
         this.isMapShow = false
       }
     },
+    handleLonlatSelect(flag) {
+      if (flag) {
+        this.formData.geometryStr = JSON.stringify(this.covertToGeometry())
+        this.isLonLatShow = true
+      } else {
+        this.isLonLatShow = false
+      }
+    },
+    covertToGeometry() {
+      let geometry = {
+        type: 'Point',
+        coordinates: []
+      }
+      if (this.formData.lon && this.formData.lon!=='' && this.formData.lat && this.formData.lat !=='') {
+        geometry.coordinates.push(this.formData.lon)
+        geometry.coordinates.push(this.formData.lat)
+        return geometry;
+      } else {
+        return '';
+      }
+    },
+    setLonLatData(obj) {
+      if (obj.coordinates && obj.coordinates.length>1) {
+        this.formData.lon = obj.coordinates[0];
+        this.formData.lat = obj.coordinates[1];
+      }
+    },
     getMenuData() {
       let app = this;
       let params = {
         type: "1",
         parentId: "4",
       }
-      menuApi.getMenuData(params).then(res=>{
-        if (res.code===200) {
+      menuApi.getMenuData(params).then(res => {
+        if (res.code === 200) {
           app.category = res.content
         }
       })
@@ -173,9 +240,9 @@ export default {
     },
     submit() {
       let app = this;
-      app.$refs.form.validate(valid=>{
+      app.$refs.form.validate(valid => {
         if (valid) {
-          if (app.formData.isEdit){
+          if (app.formData.isEdit) {
             app.updateData();
           } else {
             app.addData();
@@ -189,9 +256,16 @@ export default {
     addData() {
       let app = this;
       let params = JSON.parse(JSON.stringify(app.formData));
-      params['menuNameOne'] = '二维数据'
-      api.addData(params).then(res=>{
-        if (res.code===200) {
+      params['menuNameOne'] = '模型数据'
+      for (let i = 0; i < this.category.length; i++) {
+        let obj = this.category[i];
+        if (obj.id === params.menuId) {
+          params['menuNameTwo'] = obj.title;
+          break;
+        }
+      }
+      api.addData(params).then(res => {
+        if (res.code === 200) {
           app.$message({message: '录入成功', type: 'success'})
           app.close(true);
         }
@@ -203,8 +277,8 @@ export default {
       let params = JSON.parse(JSON.stringify(app.formData));
       delete params.createDate;
       delete params.updateDate;
-      api.updateData(params).then(res=>{
-        if (res.code===200) {
+      api.updateData(params).then(res => {
+        if (res.code === 200) {
           app.$message({message: '修改成功', type: 'success'})
           app.close(true);
         }

+ 3 - 3
src/components/dataManage/dataDetail/ThreeDimensionalDataDetail.vue

@@ -94,9 +94,9 @@ export default {
         geometryStr: [
           { required: true, message: '请输入Geojson数据', trigger: 'blur' },
         ],
-        address: [
-          { required: true, message: '请输入地名地址库名称', trigger: 'change' },
-        ]
+        // address: [
+        //   { required: true, message: '请输入地名地址库名称', trigger: 'change' },
+        // ]
       },
       category: [],
       isMapShow: false,

+ 4 - 3
src/components/dataManage/dataDetail/TwoDimensionalDataDetail.vue

@@ -94,9 +94,9 @@ export default {
         geometryStr: [
           { required: true, message: '请输入Geojson数据', trigger: 'blur' },
         ],
-        address: [
-          { required: true, message: '请输入地名地址库名称', trigger: 'change' },
-        ]
+        // address: [
+        //   { required: true, message: '请输入地名地址库名称', trigger: 'change' },
+        // ]
       },
       category: [],
       isMapShow: false,
@@ -190,6 +190,7 @@ export default {
       let app = this;
       let params = JSON.parse(JSON.stringify(app.formData));
       params['menuNameOne'] = '二维数据'
+      params['username'] = app.$store.state.user.username;
       api.addData(params).then(res=>{
         if (res.code===200) {
           app.$message({message: '录入成功', type: 'success'})

+ 64 - 24
src/components/dataManage/dataShow/BusinessData.vue

@@ -6,7 +6,7 @@
     <div class="operation">
       <el-form :model="filterForm" :inline="true">
         <el-form-item label="地名地址库名称:">
-          <el-input v-model="filterForm.name" placeholder="请输入地名地址库名称"></el-input>
+          <el-input v-model="filterForm.address" placeholder="请输入地名地址库名称"></el-input>
         </el-form-item>
         <el-form-item>
           <el-button type="primary" @click="search">搜索</el-button>
@@ -27,13 +27,13 @@
         <el-table-column prop="content" label="描述" width="250"/>
         <el-table-column prop="menuNameTwo" label="类别" width="80"/>
         <el-table-column prop="importType" label="导入类型" width="150"/>
-        <el-table-column prop="updator" label="修改人"/>
+        <el-table-column prop="address" label="地名地址库" width="150"/>
+        <el-table-column prop="username" label="修改人"/>
         <el-table-column prop="updateDate" label="修改时间" width="160">
           <template #default="scope">
             {{ $util.datetime.format(scope.row.updateDate) }}
           </template>
         </el-table-column>
-        <el-table-column prop="creator" label="创建人"/>
         <el-table-column prop="createDate" label="创建时间" width="160">
           <template #default="scope">
             {{ $util.datetime.format(scope.row.createDate) }}
@@ -80,7 +80,6 @@
 <script>
 import api from '@/api/data/BusinessData'
 import BusinessDataDetail from "@/components/dataManage/dataDetail/BusinessDataDetail";
-import menuApi from "@/api/data/MenuData";
 
 export default {
   data() {
@@ -135,8 +134,9 @@ export default {
     getData() {
       let app = this;
       let params = {
+        address: app.filterForm.address,
         page: app.pageInfo.page,
-        pageSize: app.pageInfo.pageSize
+        pageSize: app.pageInfo.pageSize,
       }
       app.handleLoading(true)
       api.getData(params).then(res => {
@@ -150,7 +150,11 @@ export default {
       })
     },
     search() {
-
+      let app = this;
+      this.pageInfo.pageSize = -1;
+      setTimeout(function () {
+        app.pageInfo.pageSize = 10;
+      })
     },
     handleTableSelect(val) {
       this.selectedRows = val;
@@ -168,43 +172,79 @@ export default {
     },
     // 批量删除数据
     batchDelete() {
+      let app = this;
       if (!this.selectedRows) {
         return;
       }
       let ids = this.selectedRows.map(i=> {return i.id}).join(',');
+      let params = {
+        latlonDataId: ids
+      }
+      this.$msgbox.confirm('确定要删除吗?').then(()=>{
+        api.deleteData(params).then(res=>{
+          if (res.code===200) {
+            app.getData();
+            app.$message({message: '删除成功', type: 'success'})
+          }
+        })
+      })
     },
     // 查看详情
     viewData(item) {
       let app = this;
-      if (item.menuId) {
-        item.menuId = Number(item.menuId);
+      let params = {
+        latlonDataId: item.id
       }
-      app.currRow = JSON.parse(JSON.stringify(item))
-      app.currRow.geometryStr = JSON.stringify(item.geometry)
-      delete app.currRow.geometry
-      this.currRow.isDataView = true;
-      app.isDetailShow = true
+      app.$util.loading.handleLoading(true);
+      api.getDataById(params).then(res=>{
+        if (res.code===200) {
+          if (!res.content.id || res.content.id==='') {
+            app.$message({message: '该数据不存在', type: 'error'})
+            return;
+          }
+          if (res.content.menuId) {
+            res.content.menuId = Number(res.content.menuId);
+            res.content.geometryStr = JSON.stringify(res.content.geometry);
+            delete res.content.geometry;
+          }
+          app.currRow = JSON.parse(JSON.stringify(res.content))
+          this.currRow.isDataView = true;
+          app.isDetailShow = true
+        }
+        app.$util.loading.handleLoading(false);
+      })
     },
     // 编辑数据
     editData(item) {
       let app = this;
-      if (item.menuId) {
-        item.menuId = Number(item.menuId);
+      let params = {
+        latlonDataId: item.id
       }
-      app.currRow = JSON.parse(JSON.stringify(item))
-      app.currRow.geometryStr = JSON.stringify(item.geometry)
-      delete app.currRow.geometry
-      this.currRow.isEdit = true;
-      app.isDetailShow = true
+      app.$util.loading.handleLoading(true);
+      api.getDataById(params).then(res=>{
+        if (!res.content.id || res.content.id==='') {
+          app.$message({message: '该数据不存在', type: 'error'})
+          return;
+        }
+        if (res.code===200) {
+          if (res.content.menuId) {
+            res.content.menuId = Number(res.content.menuId);
+            res.content.geometryStr = JSON.stringify(res.content.geometry);
+            delete res.content.geometry;
+          }
+          app.currRow = JSON.parse(JSON.stringify(res.content))
+          app.currRow.isEdit = true;
+          app.isDetailShow = true
+        }
+        app.$util.loading.handleLoading(false);
+      })
+
     },
     // 删除数据
     deleteData(item) {
       let app = this;
-      let params = {
-        baseDataId: item.id
-      }
       app.$msgbox.confirm('确认要删除此条数据吗?').then(()=>{
-        api.deleteData(params).then(res=>{
+        api.deleteData({latlonDataId: item.id}).then(res=>{
           if (res.code === 200) {
             app.getData();
             app.$message({message: '删除成功', type: 'success'});

+ 4 - 4
src/components/dataManage/dataShow/MetaData.vue

@@ -74,12 +74,12 @@
     </div>
   </div>
 
-  <BusinessDataDetail v-if="isDetailShow" :is-show="isDetailShow" :item="currRow" :close="handleDetailShow"></BusinessDataDetail>
+  <MetaDataDetail v-if="isDetailShow" :is-show="isDetailShow" :item="currRow" :close="handleDetailShow"></MetaDataDetail>
 </template>
 
 <script>
-import api from '@/api/data/BusinessData'
-import BusinessDataDetail from "@/components/dataManage/dataDetail/BusinessDataDetail";
+import api from '@/api/data/MetaData'
+import MetaDataDetail from "@/components/dataManage/dataDetail/MetaDataDetail";
 import menuApi from "@/api/data/MenuData";
 
 export default {
@@ -100,7 +100,7 @@ export default {
     }
   },
   components: {
-    BusinessDataDetail
+    MetaDataDetail
   },
   created() {
   },

+ 1 - 1
src/components/dataManage/dataShow/ModelData.vue

@@ -27,7 +27,7 @@
         <el-table-column prop="content" label="描述" width="250"/>
         <el-table-column prop="modelType" label="类型" width="120"/>
         <el-table-column prop="menuNameTwo" label="类别" width="120"/>
-        <el-table-column prop="lon" label="位置" width="130">
+        <el-table-column prop="lon" label="位置" width="180">
           <template #default="scope">
             [
             <span v-if="scope.row.lon && scope.row.lon!=='' && scope.row.lat && scope.row.lat!==''">

+ 23 - 40
src/components/dataManage/dataShow/ThreeDimensionalData.vue

@@ -25,6 +25,17 @@
         </el-table-column>
         <el-table-column prop="title" label="标题" width="200"/>
         <el-table-column prop="content" label="描述" width="250"/>
+        <el-table-column prop="modelType" label="类型" width="120"/>
+        <el-table-column prop="menuNameTwo" label="类别" width="120"/>
+        <el-table-column prop="lon" label="位置" width="130">
+          <template #default="scope">
+            [
+            <span v-if="scope.row.lon && scope.row.lon!=='' && scope.row.lat && scope.row.lat!==''">
+              {{ scope.row.lon }},<br/> {{ scope.row.lat }}
+            </span>
+            ]
+          </template>
+        </el-table-column>
         <el-table-column prop="address" label="地名地址库" width="150"/>
         <el-table-column prop="updator" label="修改人"/>
         <el-table-column prop="updateDate" label="修改时间" width="160">
@@ -132,8 +143,6 @@ export default {
     },
     getData() {
       let app = this;
-      // app.tableData = mockData;
-      // return;
       let params = {
         page: app.pageInfo.page,
         pageSize: app.pageInfo.pageSize
@@ -176,55 +185,29 @@ export default {
     // 查看详情
     viewData(item) {
       let app = this;
-      let params = {
-        latlonDataId: item.id
+      app.currRow = JSON.parse(JSON.stringify(item))
+      if (app.currRow.menuId) {
+        app.currRow.menuId = Number(app.currRow.menuId)
       }
-      api.getDataById(params).then(res=>{
-        if (res.code===200) {
-          if (!res.content.id || res.content.id==='') {
-            app.$message({message: '该数据不存在', type: 'error'})
-            return;
-          }
-          if (res.content.menuId) {
-            res.content.menuId = Number(res.content.menuId);
-            res.content.geometryStr = JSON.stringify(res.content.geometry);
-            delete res.content.geometry;
-          }
-          app.currRow = JSON.parse(JSON.stringify(res.content))
-          this.currRow.isDataView = true;
-          app.isDetailShow = true
-        }
-      })
+      this.currRow.isDataView = true;
+      app.isDetailShow = true
     },
     // 编辑数据
     editData(item) {
       let app = this;
-      let params = {
-        latlonDataId: item.id
+      app.currRow = JSON.parse(JSON.stringify(item))
+      console.log(app.currRow)
+      if (app.currRow.menuId) {
+        app.currRow.menuId = Number(app.currRow.menuId)
       }
-      api.getDataById(params).then(res=>{
-        if (!res.content.id || res.content.id==='') {
-          app.$message({message: '该数据不存在', type: 'error'})
-          return;
-        }
-        if (res.code===200) {
-          if (res.content.menuId) {
-            res.content.menuId = Number(res.content.menuId);
-            res.content.geometryStr = JSON.stringify(res.content.geometry);
-            delete res.content.geometry;
-          }
-          app.currRow = JSON.parse(JSON.stringify(res.content))
-          app.currRow.isEdit = true;
-          app.isDetailShow = true
-        }
-      })
-
+      app.currRow.isEdit = true;
+      app.isDetailShow = true
     },
     // 删除数据
     deleteData(item) {
       let app = this;
       app.$msgbox.confirm('确认要删除此条数据吗?').then(()=>{
-        api.deleteData({latlonDataId: item.id}).then(res=>{
+        api.deleteData({modelId	: item.id}).then(res=>{
           if (res.code === 200) {
             app.getData();
             app.$message({message: '删除成功', type: 'success'});

+ 21 - 7
src/components/dataManage/dataShow/TwoDimensionalData.vue

@@ -6,7 +6,7 @@
     <div class="operation">
       <el-form :model="filterForm" :inline="true">
         <el-form-item label="地名地址库名称:">
-          <el-input v-model="filterForm.name" placeholder="请输入地名地址库名称"></el-input>
+          <el-input v-model="filterForm.address" placeholder="请输入地名地址库名称"></el-input>
         </el-form-item>
         <el-form-item>
           <el-button type="primary" @click="search">搜索</el-button>
@@ -28,13 +28,12 @@
         <el-table-column prop="menuNameTwo" label="类别" width="80"/>
         <el-table-column prop="importType" label="导入类型" width="150"/>
         <el-table-column prop="address" label="地名地址库" width="150"/>
-        <el-table-column prop="updator" label="修改人"/>
+        <el-table-column prop="userName" label="修改人"/>
         <el-table-column prop="updateDate" label="修改时间" width="160">
           <template #default="scope">
             {{ $util.datetime.format(scope.row.updateDate) }}
           </template>
         </el-table-column>
-        <el-table-column prop="creator" label="创建人"/>
         <el-table-column prop="createDate" label="创建时间" width="160">
           <template #default="scope">
             {{ $util.datetime.format(scope.row.createDate) }}
@@ -135,11 +134,10 @@ export default {
     },
     getData() {
       let app = this;
-      // app.tableData = mockData;
-      // return;
       let params = {
+        address: app.filterForm.address,
         page: app.pageInfo.page,
-        pageSize: app.pageInfo.pageSize
+        pageSize: app.pageInfo.pageSize,
       }
       app.handleLoading(true)
       api.getData(params).then(res => {
@@ -153,7 +151,11 @@ export default {
       })
     },
     search() {
-
+      let app = this;
+      this.pageInfo.pageSize = -1;
+      setTimeout(function () {
+        app.pageInfo.pageSize = 10;
+      })
     },
     handleTableSelect(val) {
       this.selectedRows = val;
@@ -171,10 +173,22 @@ export default {
     },
     // 批量删除数据
     batchDelete() {
+      let app = this;
       if (!this.selectedRows) {
         return;
       }
       let ids = this.selectedRows.map(i=> {return i.id}).join(',');
+      let params = {
+        latlonDataId: ids
+      }
+      this.$msgbox.confirm('确定要删除吗?').then(()=>{
+        api.deleteData(params).then(res=>{
+          if (res.code===200) {
+            app.getData();
+            app.$message({message: '删除成功', type: 'success'})
+          }
+        })
+      })
     },
     // 查看详情
     viewData(item) {

+ 21 - 12
src/components/map/CesiumMap.vue

@@ -95,14 +95,14 @@ export default {
         })
         // 加载模型
         if (app.item.url && app.item.url!=='') {
-          app.add3DTiles(app.viewer, app.item.url, true)
+          app.add3DTiles(app.viewer, app.item.url)
         } else {
           app.$util.loading.handleLoading(false)
         }
       });
     },
     // 添加模型
-    add3DTiles(viewer, url, flyto){
+    add3DTiles(viewer, url){
       let app = this;
       let tileset = new Cesium.Cesium3DTileset({
         url: url,
@@ -112,22 +112,28 @@ export default {
         maximumMemoryUsage: 512,//tileset可以使用的最大内存
         show: true,
         immediatelyLoadDesiredLevelOfDetail: true,
-        // showOutLine : true, // 是否使用 CESIUM_primitive_outline 扩展显示模型的轮廓。为 true 时,将显示轮廓。如果为 false,则不显示轮廓。
-        // debugColorizeTiles : true, // 仅用于调试。如果为 true,则为每个图块分配随机颜色。
-        // debugShowBoundingVolume : true, // 仅用于调试。如果为 true,则为每个图块渲染边界体积。
-        // debugShowContentBoundingVolume : true, // 仅用于调试。如果为 true,则为每个图块的内容渲染边界体积。
-        // lightColor : new Cesium.Cartesian3(100.0,100.0, 100.0),  // 调整模型亮度
       });
       tileset.allTilesLoaded.addEventListener(function() {
         app.$util.loading.handleLoading(false)
       });
+      tileset.tileFailed.addEventListener(function (err) {
+        app.$util.loading.handleLoading(false);
+        app.$message({message: '模型加载失败', type: 'error'});
+        app.handleClose()
+      })
       viewer.scene.primitives.add(tileset);
       tileset.show=true;
-      if(flyto){
-        tileset.readyPromise.then(function () {
-          viewer.zoomTo(tileset);
+      tileset.readyPromise.then(function () {
+        viewer.zoomTo(tileset, {
+          heading: 2.718565,
+          pitch: -0.415366,
+          roll: 0.0,
         });
-      }
+      }).catch(err=>{
+        app.$util.loading.handleLoading(false);
+        app.$message({dangerouslyUseHTMLString: true, message: '模型加载失败,'+err.statusCode+':'+err.response, type: 'error'});
+        app.handleClose()
+      });
       return tileset;
     },
     handleClose() {
@@ -137,7 +143,7 @@ export default {
 }
 </script>
 
-<style>
+<style scoped>
 #mapBox {
   width: 100%;
   height: 100%;
@@ -149,6 +155,9 @@ export default {
 #mapOperation {
   margin-bottom: 10px;
 }
+</style>
+
+<style>
 /*隐藏 cesium logo*/
 .cesium-widget-credits{
   display: none !important;

+ 18 - 3
src/components/map/OlMap.vue

@@ -41,6 +41,9 @@ export default {
       type: '',
       geometry: {},
       category: {
+        1: 'Point',
+        2: 'LineString',
+        3: 'Polygon',
         7: 'MultiPoint',
         8: 'MultiLineString',
         9: 'MultiPolygon'
@@ -100,6 +103,7 @@ export default {
       let app = this;
       app.map = new Map({
         target: app.$refs.map,
+        logo: false,
         layers: [
           new TileLayer({
             source: new OSM()
@@ -140,6 +144,9 @@ export default {
       })
       app.map.addInteraction(app.draw)
       app.draw.on('drawend', e=>{
+        if (app.menuId<7) {
+          app.clearMapDraw();
+        }
         e.feature.setStyle(app.drawStyle);
       })
     },
@@ -154,8 +161,10 @@ export default {
         return geometry;
       } else if (features.length===1) {
         let geometry = new GeoJSON().writeFeatureObject(features[0]).geometry;
-        geometry.type = geometry.type.substring(5);
-        geometry.coordinates = geometry.coordinates[0];
+        if (geometry.type.indexOf('Multi')===0) {
+          geometry.type = geometry.type.substring(5);
+          geometry.coordinates = geometry.coordinates[0];
+        }
         return geometry;
       } else {
         return '';
@@ -172,7 +181,7 @@ export default {
 }
 </script>
 
-<style>
+<style scoped>
 #mapBox {
   width: 100%;
   height: 100%;
@@ -188,7 +197,13 @@ export default {
   top: 5%;
   z-index: 10;
 }
+</style>
+
+<style>
 .el-dialog__body {
   padding-top: 10px;
 }
+.ol-attribution {
+  display: none !important;
+}
 </style>

+ 5 - 1
src/components/pluginManage/PluginDetail.vue

@@ -9,7 +9,11 @@
                         <span class="title">{{ scope.row.title }}</span>
                     </template>
                 </el-table-column>
-                <el-table-column prop="content" label="内容" />
+                <el-table-column prop="content" label="内容" >
+                  <template #default="scope">
+                    <pre>{{ scope.row.content }}</pre>
+                  </template>
+                </el-table-column>
             </el-table>
         </div>
     </div>

+ 1 - 1
src/static/datas/PluginData.json

@@ -1,7 +1,7 @@
 [
     {
         "pluginName": "水面模拟插件",
-        "methods": "测试",
+        "methods": "测试\n1.测试\n2.测试",
         "params": "测试",
         "example": "测试",
         "response": "测试",