|
@@ -7,18 +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" 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="请选择类别" @change="handleMenuIdSelect" :disabled="formData.isDataView">
|
|
|
<el-option
|
|
|
v-for="item in category"
|
|
|
:key="item.id"
|
|
@@ -27,24 +31,32 @@
|
|
|
/>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="地理信息:" prop="geometryStr" >
|
|
|
- <el-input v-model="formData.geometryStr" placeholder="请设置地理信息" :disabled="true" >
|
|
|
- <template #prepend>
|
|
|
- <el-button @click="handleMapShow(true)">
|
|
|
- <span v-if="formData.isDataView">查看</span>
|
|
|
- <span v-else>设置</span>
|
|
|
- 地理信息
|
|
|
- </el-button>
|
|
|
- </template>
|
|
|
+ <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="纬度:" 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="handleJsonDataView(true)">
|
|
|
- 查看GeoJson
|
|
|
+ <el-button @click="handleMapShow(true)">
|
|
|
+ 查看模型
|
|
|
</el-button>
|
|
|
</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,14 +64,20 @@
|
|
|
<el-button type="primary" @click="submit" v-show="!formData.isDataView">保存</el-button>
|
|
|
</template>
|
|
|
</el-dialog>
|
|
|
- <OlMap v-if="isMapShow"
|
|
|
- :is-show="isMapShow"
|
|
|
- :is-view="formData.isDataView"
|
|
|
- :menuId="formData.menuId"
|
|
|
- :geometryStr="formData.geometryStr"
|
|
|
- :callback="setMapData"
|
|
|
- :close="handleMapShow">
|
|
|
- </OlMap>
|
|
|
+ <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"
|
|
@@ -71,9 +89,10 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+import CesiumMap from "@/components/map/CesiumMap";
|
|
|
import OlMap from "@/components/map/OlMap";
|
|
|
import JsonDataView from "@/components/json/JsonDataView";
|
|
|
-import api from "@/api/data/TwoDimensionalData";
|
|
|
+import api from "@/api/data/ThreeDimensionalData";
|
|
|
import menuApi from "@/api/data/MenuData";
|
|
|
|
|
|
export default {
|
|
@@ -83,23 +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: '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'},
|
|
|
+ ],
|
|
|
+ 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,
|
|
|
|
|
@@ -111,56 +150,64 @@ export default {
|
|
|
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.getMenuData();
|
|
|
this.formData = this.item;
|
|
|
this.oriFormData = JSON.parse(JSON.stringify(this.formData))
|
|
|
},
|
|
|
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: "2",
|
|
|
}
|
|
|
- menuApi.getMenuData(params).then(res=>{
|
|
|
- if (res.code===200) {
|
|
|
+ menuApi.getMenuData(params).then(res => {
|
|
|
+ if (res.code === 200) {
|
|
|
app.category = res.content
|
|
|
}
|
|
|
})
|
|
@@ -189,9 +236,10 @@ 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'] = '模型数据'
|
|
|
+ params['userName'] = app.$store.state.userInfo.username;
|
|
|
+ api.addData(params).then(res => {
|
|
|
+ if (res.code === 200) {
|
|
|
app.$message({message: '录入成功', type: 'success'})
|
|
|
app.close(true);
|
|
|
}
|
|
@@ -203,8 +251,9 @@ 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) {
|
|
|
+ params['userName'] = app.$store.state.userInfo.username;
|
|
|
+ api.updateData(params).then(res => {
|
|
|
+ if (res.code === 200) {
|
|
|
app.$message({message: '修改成功', type: 'success'})
|
|
|
app.close(true);
|
|
|
}
|
|
@@ -212,7 +261,16 @@ export default {
|
|
|
},
|
|
|
handleJsonDataView(flag) {
|
|
|
this.isJsonDataView = flag;
|
|
|
- }
|
|
|
+ },
|
|
|
+ handleMenuIdSelect(val) {
|
|
|
+ for (let i = 0; i < this.category.length; i++) {
|
|
|
+ let item = this.category[i];
|
|
|
+ if (item.id == val) {
|
|
|
+ this.formData['menuNameTwo'] = item.title
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
}
|
|
|
}
|
|
|
</script>
|