feat: 部分功能新增

This commit is contained in:
kun 2023-11-01 16:14:26 +08:00
parent c4b0411f73
commit 7d35ff1814
7 changed files with 416 additions and 349 deletions

View File

@ -22,6 +22,10 @@ export const updateSystemConfig = (params: any) => {
export const baseMapPage = (params: any) => { export const baseMapPage = (params: any) => {
return http.post(BASEURL + `/base/baseMap/page`, params); return http.post(BASEURL + `/base/baseMap/page`, params);
}; };
// 底图图层列表
export const baseMapList = (params: any) => {
return http.post(BASEURL + `/base/baseMap/list`, params);
};
// 底图图层新增 // 底图图层新增
export const baseMapAdd = (params: any) => { export const baseMapAdd = (params: any) => {
return http.post(BASEURL + `/base/baseMap/add`, params); return http.post(BASEURL + `/base/baseMap/add`, params);
@ -38,3 +42,28 @@ export const baseMapEdit = (params: any) => {
export const baseMapDelete = (params: any) => { export const baseMapDelete = (params: any) => {
return http.post(BASEURL + `/base/baseMap/delete`, params); return http.post(BASEURL + `/base/baseMap/delete`, params);
}; };
// 白膜图层分页列表
export const albugineaMapPage = (params: any) => {
return http.post(BASEURL + `/base/tilesetLayer/page`, params);
};
// 白膜图层列表
export const albugineaMapList = (params: any) => {
return http.post(BASEURL + `/base/tilesetLayer/list`, params);
};
// 白膜图层新增
export const albugineaMapAdd = (params: any) => {
return http.post(BASEURL + `/base/tilesetLayer/add`, params);
};
// 白膜图层详细信息
export const albugineaMapDetails = (params: any) => {
return http.post(BASEURL + `/base/tilesetLayer/queryById`, params);
};
// 白膜图层编辑
export const albugineaMapEdit = (params: any) => {
return http.post(BASEURL + `/base/tilesetLayer/edit`, params);
};
// 白膜图层删除
export const albugineaMapDelete = (params: any) => {
return http.post(BASEURL + `/base/tilesetLayer/delete`, params);
};

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="map-content" id="map-content"> <div class="map-content" id="map-content">
<div id="mars3dContainer" class="mars3d-container"></div> <div id="mars3dContainer" class="mars3d-container"></div>
<div class="layer-config"> <div class="layer-config" v-if="props.type == '底图'">
<div class="property-column-item"> <div class="property-column-item">
<span>饱和度{{ formData.saturation ? formData.saturation : 0 }}</span> <span>饱和度{{ formData.saturation ? formData.saturation : 0 }}</span>
<el-slider v-model="formData.saturation" :step="0.5" :max="5" :min="-5" @change="e => layerOperate(e, 'saturation')" /> <el-slider v-model="formData.saturation" :step="0.5" :max="5" :min="-5" @change="e => layerOperate(e, 'saturation')" />
@ -31,7 +31,32 @@
<el-color-picker v-model="formData.filterColor" @change="e => layerOperate(e, 'filterColor')" /> <el-color-picker v-model="formData.filterColor" @change="e => layerOperate(e, 'filterColor')" />
</div> </div>
<div class="operate-btn"> <div class="operate-btn">
<el-button>保存当前配置</el-button> <el-button @click="editBaseMapsConfig">保存当前配置</el-button>
</div>
</div>
<div class="layer-config" v-if="props.type == '白膜'">
<div class="property-column-item">
<span>偏移量lon经度{{ formData.lng ? formData.lng : 0 }}</span>
<el-slider v-model="formData.lng" :step="0.0001" :max="0.01" :min="-0.01" @change="e => albugineaOperate(e, 'lng')" />
</div>
<div class="property-column-item">
<span>偏移量lat纬度{{ formData.lat ? formData.lat : 0 }}</span>
<el-slider v-model="formData.lat" :step="0.0001" :max="0.01" :min="-0.01" @change="e => albugineaOperate(e, 'lat')" />
</div>
<div class="property-column-item">
<span>偏移量height高度(){{ formData.alt ? formData.alt : 0 }}</span>
<el-slider v-model="formData.alt" :step="10" :max="500" :min="-500" @change="e => albugineaOperate(e, 'alt')" />
</div>
<!-- <div class="property-row-item">
<span>是否反色</span>
<el-switch v-model="formData.invertColor" @change="e => layerOperate(e, 'invertColor')" />
</div> -->
<div class="property-row-item">
<span>白膜颜色{{ formData.color ? formData.color : "" }}</span>
<el-color-picker v-model="formData.color" @change="e => albugineaOperate(e, 'color')" />
</div>
<div class="operate-btn">
<el-button @click="editAlbugineaConfig">保存当前配置</el-button>
</div> </div>
</div> </div>
<div class="close-btn" @click="$emit('confirm')"> <div class="close-btn" @click="$emit('confirm')">
@ -48,10 +73,12 @@ import * as Cesium from "mars3d-cesium";
//mars3d //mars3d
import "mars3d/dist/mars3d.css"; import "mars3d/dist/mars3d.css";
import * as mars3d from "mars3d"; import * as mars3d from "mars3d";
import { baseMapDetails } from "@/api/modules/mapCommon"; import { baseMapDetails, baseMapEdit, albugineaMapDetails, albugineaMapEdit } from "@/api/modules/mapCommon";
import { ElMessage } from "element-plus";
const props = defineProps({ const props = defineProps({
testMapVisible: Boolean, testMapVisible: Boolean,
relativeId: String relativeId: String,
type: String
}); });
const emits = defineEmits(["confirm"]); const emits = defineEmits(["confirm"]);
const formData: any = ref({}); const formData: any = ref({});
@ -80,21 +107,124 @@ const configJson = ref<any>({
let map: any; let map: any;
let graphicLayer: any; let graphicLayer: any;
let thisLayer: any; // let thisLayer: any; //
let thisAlbuginea: any; //
//
const editAlbugineaConfig = async () => {
let requestData = {
id: props.relativeId,
...formData.value
};
const res: any = await albugineaMapEdit(requestData);
if (res.code == 200) {
ElMessage.success("操作成功");
}
};
//
const editBaseMapsConfig = async () => {
let requestData = {
id: props.relativeId,
...formData.value
};
const res: any = await baseMapEdit(requestData);
if (res.code == 200) {
ElMessage.success("操作成功");
}
};
let initCenter: any; //
let requestNum: number = 0; //
//
const albugineaOperate = (e: any, label: any) => {
console.log(formData.value);
thisAlbuginea = map.getLayerById(formData.value.id);
if (requestNum == 0) {
initCenter = {
lng: thisAlbuginea.orginCenterPoint.lng,
lat: thisAlbuginea.orginCenterPoint.lat,
alt: thisAlbuginea.orginCenterPoint.alt
};
++requestNum;
}
console.log(thisAlbuginea);
if (label == "color") {
console.log(e, label);
if (e) {
thisAlbuginea.style = {
color: {
conditions: [["true", "color('" + e + "')"]]
}
};
} else {
thisAlbuginea.style = {
color: {
conditions: [["true", "color('#fff')"]]
}
};
}
} else {
thisAlbuginea.position = {
lng: initCenter.lng + formData.value.lng,
lat: initCenter.lat + formData.value.lat,
alt: initCenter.alt + formData.value.alt
};
console.log(thisAlbuginea);
}
};
// //
const layerOperate = (e: any, label: any) => { const layerOperate = (e: any, label: any) => {
thisLayer = map.getLayerById(formData.value.id); thisLayer = map.getLayerById(formData.value.id);
console.log(thisLayer); console.log(thisLayer);
if (label == "filterColor") { if (label == "filterColor") {
console.log(e, label); console.log(e, label);
thisLayer.layer[label] = Cesium.Color.fromCssColorString(e); if (e) {
thisLayer.layer[label] = Cesium.Color.fromCssColorString(e);
// thisLayer.layer[label] = e;
} else {
thisLayer.layer[label] = Cesium.Color.fromCssColorString("#FBFBFB");
// thisLayer.layer[label] = "#FBFBFB";
}
} else if (label == "invertColor") { } else if (label == "invertColor") {
thisLayer.layer[label] = e; thisLayer.layer[label] = e;
} else { } else {
thisLayer[label] = e; thisLayer[label] = e;
} }
}; };
// //
const getInfo = async () => { const getAlbugineaInfo = async () => {
let requestData = {
id: props.relativeId
};
const { result }: { result: any } = await albugineaMapDetails(requestData);
console.log(result, "--------白膜");
if (result) {
formData.value = {
...result
};
configJson.value.layers = [
{
id: result.id,
name: result.name,
icon:
result.layer == "gaode"
? "src/assets/images/Mars3DImg/basemaps/gaode_img.png"
: "src/assets/images/Mars3DImg/basemaps/bd-img.png",
type: "3dtiles",
url: result.url,
maximumScreenSpaceError: 1,
style: {
color: {
conditions: [["true", "color('" + result.color + "')"]]
}
},
show: result.show ? result.show : false,
flyTo: result.flyTo ? result.flyTo : false
}
];
initMars3d(configJson.value);
}
};
//
const getBaseMapsInfo = async () => {
let requestData = { let requestData = {
id: props.relativeId id: props.relativeId
}; };
@ -131,7 +261,11 @@ const initMars3d = (option: any) => {
map.addLayer(graphicLayer); map.addLayer(graphicLayer);
}; };
onMounted(async () => { onMounted(async () => {
await getInfo(); if (props.type == "底图") {
await getBaseMapsInfo();
} else if (props.type == "白膜") {
await getAlbugineaInfo();
}
}); });
onUnmounted(() => { onUnmounted(() => {
map = null; map = null;

View File

@ -74,6 +74,7 @@
:data="treeData" :data="treeData"
:props="props" :props="props"
show-checkbox show-checkbox
node-key="id"
@check-change="handleCheckChange" @check-change="handleCheckChange"
/> />
</div> </div>
@ -105,6 +106,7 @@
:data="treeData" :data="treeData"
:props="props" :props="props"
show-checkbox show-checkbox
node-key="id"
@check-change="handleCheckChange" @check-change="handleCheckChange"
/> />
</div> </div>
@ -243,7 +245,7 @@ import MapPrint from "./components/mapPrint.vue";
import FlyRoam from "./components/flyRoam.vue"; import FlyRoam from "./components/flyRoam.vue";
import MapMark from "./components/mapMark.vue"; import MapMark from "./components/mapMark.vue";
import RouteNavigation from "./components/routeNavigation.vue"; import RouteNavigation from "./components/routeNavigation.vue";
import { getSystemConfig } from "@/api/modules/mapCommon"; import { getSystemConfig, baseMapList, albugineaMapList } from "@/api/modules/mapCommon";
const configJson = ref<any>({}); const configJson = ref<any>({});
const screenComparisonShow = ref(false); // const screenComparisonShow = ref(false); //
const leftRollerList = ref<any>([]); const leftRollerList = ref<any>([]);
@ -342,6 +344,56 @@ onMounted(async () => {
} else { } else {
configJson.value = ConfigJson.map3d; configJson.value = ConfigJson.map3d;
} }
//
const resBaseMaps: any = await baseMapList({});
console.log(resBaseMaps, "6666666666");
if (resBaseMaps.result && resBaseMaps.result.length > 0) {
let initBasemaps: any = [{ id: 10, name: "地图底图", type: "group" }];
resBaseMaps.result.map((item: any) => {
initBasemaps.push({
pid: 10,
id: item.id,
name: item.name,
icon:
item.layer == "gaode"
? "src/assets/images/Mars3DImg/basemaps/gaode_img.png"
: "src/assets/images/Mars3DImg/basemaps/bd-img.png",
type: item.layer,
layer: item.layer == "gaode" ? "img_d" : "img_z",
saturation: item.saturation ? item.saturation : 0,
brightness: item.brightness ? item.brightness : 0,
contrast: item.contrast ? item.contrast : 0,
hue: item.hue ? item.hue : 0,
gamma: item.gamma ? item.gamma : 0,
show: item.show ? item.show : false
});
});
configJson.value.basemaps = initBasemaps;
}
//
const resAlbuginea: any = await albugineaMapList({});
console.log(resAlbuginea, "白膜666666");
if (resAlbuginea.result && resAlbuginea.result.length > 0) {
let initAlbugineamaps: any = [{ id: 2040, name: "城市白模", type: "group" }];
resAlbuginea.result.map((item: any) => {
initAlbugineamaps.push({
pid: 2040,
id: item.id,
name: item.name,
type: "3dtiles",
url: item.url,
maximumScreenSpaceError: 1,
style: {
color: {
conditions: [["true", "color('" + item.color + "')"]]
}
},
show: item.show ? item.show : false,
flyTo: item.flyTo ? item.flyTo : false
});
configJson.value.layers = initAlbugineamaps;
});
}
await initMars3d(configJson.value); await initMars3d(configJson.value);
await initTree(); await initTree();
}); });
@ -791,7 +843,7 @@ const initMars3d = (option: any) => {
// map.addEffect(snowCover); // map.addEffect(snowCover);
}; };
// config.json // config.json
const getBasicMaps = () => { const getBasicMaps = async () => {
const layers = { const layers = {
baseMaps: map.getBasemaps(true), baseMaps: map.getBasemaps(true),
hasTerrain: map.hasTerrain hasTerrain: map.hasTerrain
@ -807,14 +859,18 @@ const getBasicMaps = () => {
options: markRaw(m.options) options: markRaw(m.options)
}; };
}); });
rollerVal.value.leftRollerVal = baseMaps.value[0].id; if (baseMaps.value.length > 1) {
rollerVal.value.rightRollerVal = baseMaps.value[1].id; rollerVal.value.leftRollerVal = baseMaps.value[0].id;
leftRollerList.value = baseMaps.value.filter((item: any) => { rollerVal.value.rightRollerVal = baseMaps.value[1].id;
return item.id != rollerVal.value.rightRollerVal; leftRollerList.value = baseMaps.value.filter((item: any) => {
}); return item.id != rollerVal.value.rightRollerVal;
rightRollerList.value = baseMaps.value.filter((item: any) => { });
return item.id != rollerVal.value.leftRollerVal; rightRollerList.value = baseMaps.value.filter((item: any) => {
}); return item.id != rollerVal.value.leftRollerVal;
});
} else if (baseMaps.value.length > 0) {
rollerVal.value.leftRollerVal = baseMaps.value[0].id;
}
chkHasTerrain.value = layers.hasTerrain || false; chkHasTerrain.value = layers.hasTerrain || false;
}; };
const addRandomGraphicByCount = (graphicLayer: any, position: any) => { const addRandomGraphicByCount = (graphicLayer: any, position: any) => {
@ -845,12 +901,13 @@ const addRandomGraphicByCount = (graphicLayer: any, position: any) => {
}; };
const handleCheckChange = (e: any, isCheck: any) => { const handleCheckChange = (e: any, isCheck: any) => {
const layer = layersObj[e.key]; const layer = layersObj[e.key];
console.log(e);
console.log(layer);
console.log(isCheck);
if (layer) { if (layer) {
if (!layer.isAdded) { if (!layer.isAdded) {
map.addLayer(layer); map.addLayer(layer);
} }
// //
if (e.children && e.children.length) { if (e.children && e.children.length) {
renderChildNode(isCheck, e.children); renderChildNode(isCheck, e.children);
@ -889,6 +946,7 @@ const initTree = () => {
basemaps: true, // config.jsonbasempas basemaps: true, // config.jsonbasempas
layers: true // config.jsonlayers layers: true // config.jsonlayers
}); });
console.log(layers);
// config.jsonbasempaslayers // config.jsonbasempaslayers
for (let i = layers.length - 1; i >= 0; i--) { for (let i = layers.length - 1; i >= 0; i--) {
const layer = layers[i]; const layer = layers[i];

View File

@ -1,10 +1,10 @@
<template> <template>
<div class="overview"> <div class="overview">
<el-dialog :show-close="false" v-model="visible1" width="60%" @close="closeMain"> <el-dialog :show-close="false" v-model="visible1" width="60%" @close="closeMain" v-if="!testMapVisible">
<template #title> <template #title>
<div class="title-detail"> <div class="title-detail">
<img src="@/assets/images/tableIcon/look.png" alt="" /> <img src="@/assets/images/tableIcon/look.png" alt="" />
<span>新增白膜</span> <span>{{ props.title }}</span>
<el-icon> <el-icon>
<close @click="closeMain" /> <close @click="closeMain" />
</el-icon> </el-icon>
@ -14,72 +14,96 @@
<div class="basic-info"> <div class="basic-info">
<div class="form-content"> <div class="form-content">
<div class="row"> <div class="row">
<el-form-item label="名称:" prop="engineeringName"> <el-form-item label="名称:" prop="name">
<el-input v-model="formData.engineeringName" placeholder="请输入" disabled /> <el-input v-model="formData.name" placeholder="请输入" />
</el-form-item> </el-form-item>
</div> </div>
<div class="row"> <div class="row">
<el-form-item label="地址:" prop="engineeringName"> <el-form-item label="地址:" prop="url">
<el-input v-model="formData.engineeringName" placeholder="请输入" disabled /> <el-input v-model="formData.url" placeholder="请输入" />
</el-form-item> </el-form-item>
</div> </div>
<div class="row"> <div class="row">
<el-form-item label="偏移量lon经度:" prop="engineeringName"> <el-form-item label="偏移量lon经度:">
<el-input-number v-model="formData.engineeringName" placeholder="请输入" controls-position="right" disabled /> <el-input-number
v-model="formData.lng"
:step="0.0001"
:max="0.01"
:min="-0.01"
placeholder="请输入"
controls-position="right"
/>
</el-form-item> </el-form-item>
</div> </div>
<div class="row"> <div class="row">
<el-form-item label="偏移量lat维度:" prop="engineeringName"> <el-form-item label="偏移量lat维度:">
<el-input-number v-model="formData.engineeringName" placeholder="请输入" controls-position="right" disabled /> <el-input-number
v-model="formData.lat"
:step="0.0001"
:max="0.01"
:min="-0.01"
placeholder="请输入"
controls-position="right"
/>
</el-form-item> </el-form-item>
</div> </div>
<div class="row"> <div class="row">
<el-form-item label="偏移量高z米:" prop="engineeringName"> <el-form-item label="偏移量高z米:">
<el-input-number v-model="formData.engineeringName" placeholder="请输入" controls-position="right" disabled /> <el-input-number
v-model="formData.alt"
:step="10"
:max="500"
:min="-500"
placeholder="请输入"
controls-position="right"
/>
</el-form-item> </el-form-item>
</div> </div>
<div class="row"> <div class="row">
<el-form-item label="是否启用:" prop="engineeringName"> <el-form-item label="是否启用:">
<el-switch v-model="formData.show" style="--el-switch-on-color: #13ce66" />
</el-form-item>
</div>
<div class="row">
<el-form-item label="飞到该白膜:">
<el-switch v-model="formData.flyTo" style="--el-switch-on-color: #13ce66" />
</el-form-item>
</div>
<div class="row">
<el-form-item label="白膜颜色:">
<el-color-picker v-model="formData.color" />
</el-form-item>
</div>
<!-- <div class="row">
<el-form-item label="开启打光效果:">
<el-switch v-model="formData.engineeringName" style="--el-switch-on-color: #13ce66" /> <el-switch v-model="formData.engineeringName" style="--el-switch-on-color: #13ce66" />
</el-form-item> </el-form-item>
</div> </div>
<div class="row"> <div class="row">
<el-form-item label="飞到该白膜:" prop="engineeringName"> <el-form-item label="光环的高度范围:">
<el-switch v-model="formData.engineeringName" style="--el-switch-on-color: #13ce66" /> <el-input-number v-model="formData.engineeringName" placeholder="请输入" controls-position="right" />
</el-form-item> </el-form-item>
</div> </div>
<div class="row"> <div class="row">
<el-form-item label="白膜颜色:" prop="engineeringName"> <el-form-item label="打光颜色:">
<el-color-picker v-model="formData.engineeringName" /> <el-color-picker v-model="formData.engineeringName" />
</el-form-item> </el-form-item>
</div> </div> -->
<div class="row"> <div class="row">
<el-form-item label="开启打光效果:" prop="engineeringName"> <el-form-item label="可视化设置预览:" v-if="props.title == '编辑白膜图层'">
<el-switch v-model="formData.engineeringName" style="--el-switch-on-color: #13ce66" /> <el-button type="primary" @click="openTestMap">编辑</el-button>
</el-form-item>
</div>
<div class="row">
<el-form-item label="光环的高度范围:" prop="engineeringName">
<el-input-number v-model="formData.engineeringName" placeholder="请输入" controls-position="right" disabled />
</el-form-item>
</div>
<div class="row">
<el-form-item label="打光颜色:" prop="engineeringName">
<el-color-picker v-model="formData.engineeringName" />
</el-form-item>
</div>
<div class="row">
<el-form-item label="可视化设置预览:" prop="engineeringName">
<el-button type="primary" @click="visible1 = false">编辑</el-button>
</el-form-item> </el-form-item>
</div> </div>
</div> </div>
</div> </div>
</el-form> </el-form>
<template #footer> <template #footer>
<el-button type="primary" @click="visible1 = false">确定</el-button> <el-button type="primary" @click="confirmSubmit">确定</el-button>
<el-button class="cancelButtonStyle" @click="visible1 = false">取消</el-button>
</template> </template>
</el-dialog> </el-dialog>
<!-- 图层效果编辑 -->
<testMap v-if="testMapVisible" :relativeId="props.relativeId" @confirm="requestDetails" type="白膜"></testMap>
</div> </div>
</template> </template>
@ -87,66 +111,25 @@
import { onMounted, ref, watch } from "vue"; import { onMounted, ref, watch } from "vue";
import type { FormInstance } from "element-plus"; import type { FormInstance } from "element-plus";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import { getDicList } from "@/api/modules/jxjview"; import { albugineaMapAdd, albugineaMapDetails, albugineaMapEdit } from "@/api/modules/mapCommon";
import FilesUploadPlus from "@/components/FilesUploadPlus/FilesUpload.vue"; import testMap from "@/components/testMap/index.vue";
import { const testMapVisible = ref(false);
dangerousEngineerDetails,
constructionSchemeList,
constructionSchemeFile,
constructionProgressList,
localInspectList,
engineerAcceptList
} from "@/api/modules/goverment";
import DownLoad from "@/utils/annexDowload.ts";
const layerTypeList = ref([
{ label: "ArcGisMapServerImageryProvider", value: "ArcGisMapServerImageryProvider" },
{ label: "BingMapsImageryProvider", value: "BingMapsImageryProvider" },
{ label: "OpenStreetMapImageryProvider", value: "OpenStreetMapImageryProvider" },
{ label: "TileMapServiceImageryProvider", value: "TileMapServiceImageryProvider" },
{ label: "GoogleEarthEnterpriseImageryProvider", value: "GoogleEarthEnterpriseImageryProvider" },
{ label: "GoogleEarthEnterpriseMapsProvider", value: "GoogleEarthEnterpriseMapsProvider" },
{ label: "GridImageryProvider", value: "GridImageryProvider" },
{ label: "IonImageryProvider", value: "IonImageryProvider" },
{ label: "MapboxImageryProvider", value: "MapboxImageryProvider" },
{ label: "MapboxStyleImageryProvider", value: "MapboxStyleImageryProvider" },
{ label: "SingleTileImageryProvider", value: "SingleTileImageryProvider" },
{ label: "TileCoordinatesImageryProvider", value: "TileCoordinatesImageryProvider" },
{ label: "UrlTemplateImageryProvider", value: "UrlTemplateImageryProvider" },
{ label: "WebMapServiceImageryProvider", value: "WebMapServiceImageryProvider" },
{ label: "WebMapTileServiceImageryProvider", value: "WebMapTileServiceImageryProvider" }
]);
const props = defineProps({ const props = defineProps({
operateVisible: Boolean, operateVisible: Boolean,
relativeId: String relativeId: String,
title: String
}); });
const emits = defineEmits(["update:operateVisible"]); const emits = defineEmits(["update:operateVisible", "confirm"]);
const arrOne = ref<any>([]);
const arrFive = ref<any>([]);
const arrSeven = ref<any>([]);
const arrEight = ref<any>([]);
const tabPosition = ref(0); const tabPosition = ref(0);
const documentDataIndex = ref(0);
const current = ref({
files: []
});
const typeList = ref([]);
const acceptTypeList = ref([]);
const rules = ref({ const rules = ref({
engineeringName: [ name: [
{ {
required: true, required: true,
message: "请输入", message: "请输入",
trigger: "blur" trigger: "blur"
} }
], ],
type: [ url: [
{
required: true,
message: "请输入",
trigger: "change"
}
],
typeDescribe: [
{ {
required: true, required: true,
message: "请输入", message: "请输入",
@ -155,145 +138,54 @@ const rules = ref({
] ]
}); });
const formRef = ref<FormInstance>(); const formRef = ref<FormInstance>();
const formData = ref<any>({ const formData = ref<any>({});
technicalDisclosureFile: [],
securityConstructionSchemeFile: [],
specialConstructionSchemeFile: []
});
const visible1 = ref(false); const visible1 = ref(false);
// ;
const textTransform = (id: any) => { //
let findItem: any = acceptTypeList.value.find(item => item.value == id); const openTestMap = () => {
return findItem?.label; testMapVisible.value = true;
}; };
// //
const getConstructionSchemeList = async () => { const requestDetails = async () => {
const res = await constructionSchemeList({ dangerousEngineeringId: props.relativeId, type: tabPosition.value }); testMapVisible.value = false;
console.log(res); getInfo();
if (res.result && res.result.length > 0) {
arrOne.value = res.result;
} else {
arrOne.value = [];
}
}; };
// //
const getConstructionProgressList = async () => { const getInfo = async () => {
const res = await constructionProgressList({ dangerousEngineeringId: props.relativeId });
console.log(res);
if (res.result && res.result.length > 0) {
arrFive.value = res.result;
} else {
arrFive.value = [];
}
};
//
const getLocalInspectList = async () => {
const res = await localInspectList({ dangerousEngineeringId: props.relativeId });
console.log(res);
if (res.result && res.result.length > 0) {
arrSeven.value = res.result;
} else {
arrSeven.value = [];
}
};
//
const getengineerAcceptList = async () => {
const res = await engineerAcceptList({ dangerousEngineeringId: props.relativeId });
console.log(res);
if (res.result && res.result.length > 0) {
arrEight.value = res.result;
} else {
arrEight.value = [];
}
};
//
const getDetailsData = async () => {
const res = await dangerousEngineerDetails({ id: props.relativeId });
console.log(res);
if (res && res.result) {
formData.value = { ...res.result };
}
if (formData.value.constructionPlanStartTime && formData.value.constructionPlanEndTime) {
formData.value.planRange = [formData.value.constructionPlanStartTime, formData.value.constructionPlanEndTime];
}
if (formData.value.constructionStartTime && formData.value.constructionEndTime) {
formData.value.constructionRange = [formData.value.constructionStartTime, formData.value.constructionEndTime];
}
};
// tabs
const handleClick = (pane: any) => {
tabPosition.value = pane.props.name;
const listOperation = [getConstructionSchemeList, getConstructionProgressList, getLocalInspectList, getengineerAcceptList];
if (tabPosition.value < 5 || tabPosition.value == 8) {
listOperation[0]();
} else {
listOperation[tabPosition.value - 4]();
}
};
//
const handlechange = e => {
console.log(e);
current.value.files = e.map(item => {
item.label = current.value.dictLabel;
return item;
});
console.log(current.value.files);
arrOne.value[documentDataIndex.value].fileList = current.value.files;
};
//
const onDownLoad = (key: any) => {
console.log(key);
console.log(formData.value[key]);
let val = JSON.parse(formData.value[key]);
if (val && val.length > 0) {
DownLoad(val);
} else {
ElMessage.error("暂无可下载文件");
}
};
//
const onTableDownLoad = async (row: any) => {
console.log(row);
let requestData = { let requestData = {
id: row.id id: props.relativeId
}; };
const { result } = await constructionSchemeFile(requestData); const { result }: { result: any } = await albugineaMapDetails(requestData);
console.log(result); if (result) {
if (result && result.length > 0) { formData.value = { ...result, lng: result.lng || 0, lat: result.lat || 0, alt: result.alt || 0 };
DownLoad(result);
} else {
ElMessage.error("暂无可下载文件");
} }
}; };
// //
const getAcceptTypeList = async () => { const confirmSubmit = () => {
const { result } = await getDicList({ dictType: "check_accept_type" }); const formEl = formRef.value;
if (result.length > 0) { if (!formEl) return;
let arr: any = []; formEl.validate(async (valid, fields) => {
result.map(item => { if (valid) {
arr.push({ let requestData = {
label: item.dictValue, ...formData.value
value: item.dictLabel };
}); if (props.title == "新增白膜图层") {
}); const res: any = await albugineaMapAdd(requestData);
acceptTypeList.value.length = 0; if (res.code == 200) {
acceptTypeList.value.push(...arr); ElMessage.success("操作成功");
} }
}; } else if (props.title == "编辑白膜图层") {
const getTypeDicMainList = async () => { const res: any = await albugineaMapEdit(requestData);
// if (res.code == 200) {
const { result } = await getDicList({ dictType: "dangerous_engineer_type" }); ElMessage.success("操作成功");
if (result.length > 0) { }
let arr: any = []; }
result.map(item => { visible1.value = false;
arr.push({ emits("confirm");
label: item.dictValue, } else {
value: item.dictLabel console.log("error submit!", fields);
}); }
}); });
typeList.value.length = 0;
typeList.value.push(...arr);
}
}; };
// //
const closeMain = () => { const closeMain = () => {
@ -304,15 +196,15 @@ watch(
() => props.operateVisible, () => props.operateVisible,
n => { n => {
if (n) { if (n) {
getAcceptTypeList(); if (props.title == "新增白膜图层") {
getTypeDicMainList(); formData.value = {};
getDetailsData(); } else if (props.title == "编辑白膜图层") {
getConstructionSchemeList(); getInfo();
}
visible1.value = n;
setTimeout(function () { setTimeout(function () {
formRef.value?.clearValidate(); formRef.value?.clearValidate();
}, 200); }, 20);
visible1.value = n;
tabPosition.value = 0;
} }
} }
); );
@ -471,51 +363,4 @@ onMounted(() => {});
} }
} }
} }
:deep(.el-tabs--card > .el-tabs__header) {
border-bottom: none;
}
:deep(.el-tabs--card > .el-tabs__header .el-tabs__nav) {
width: 100%;
background: #f8f8f8;
border: 0;
}
:deep(.el-tabs__nav-scroll) {
display: flex;
.el-tabs__item {
width: 50%;
text-align: center;
// background: #f8f8f8;
color: #333;
// border: 1px solid #e5e5e5;
// border-radius: 8px;
}
.el-tabs__item.is-active {
background-color: #008bff;
color: #fff;
}
}
:deep(.el-tabs--card > .el-tabs__header .el-tabs__item.is-active) {
border-bottom-color: #008bff !important;
}
:deep(#tab-0) {
border-radius: 4px 0 0 4px;
border: 1px solid #e5e5e5;
border-right: 0;
}
:deep() {
#tab-1,
#tab-2,
#tab-3,
#tab-4,
#tab-5,
#tab-6,
#tab-7 {
border: 1px solid #e5e5e5;
border-right: 0;
}
}
:deep(#tab-8) {
border: 1px solid #e5e5e5;
border-radius: 0 4px 4px 0;
}
</style> </style>

View File

@ -2,7 +2,7 @@
<div class="table-box"> <div class="table-box">
<ProTable <ProTable
ref="proTable" ref="proTable"
title="用户列表" title="白膜图层列表"
:columns="columns" :columns="columns"
:requestApi="getTableList" :requestApi="getTableList"
:initParam="initParam" :initParam="initParam"
@ -17,22 +17,32 @@
<template #formButton="scope"> <template #formButton="scope">
<el-button class="addButtonStyle" @click="handleAddItem()">新增</el-button> <el-button class="addButtonStyle" @click="handleAddItem()">新增</el-button>
</template> </template>
<!-- 是否启用 -->
<template #show="scope">
<el-switch v-model="scope.row.show" disabled style="--el-switch-on-color: #13ce66" />
</template>
<!-- 是否飞到该白膜 -->
<template #flyTo="scope">
<el-switch v-model="scope.row.flyTo" disabled style="--el-switch-on-color: #13ce66" />
</template>
<!-- 表格操作 --> <!-- 表格操作 -->
<template #operation="scope"> <template #operation="scope">
<div class="operate-option"></div> <div class="operate-option">
</template> <el-button type="primary" link @click="handleEditItem(scope.row)">
<template #state="{ row }"> <img src="@/assets/images/tableIcon/updateIcon.png" alt="" class="configureIcon" />
<span :class="row.state === 1 ? '' : 'redText'">{{ row.state === 1 ? "启用" : "禁用" }}</span> <span>编辑</span>
</template> </el-button>
<template #authProject="{ row }"> <el-button type="danger" link :icon="Delete" @click="handleDeleteItem(scope.row)">删除</el-button>
{{ (row.installProject ? row.installProject : 0) + "/" + row.authProject }} </div>
</template>
<template #diffDay="{ row }">
{{ row.expireTime === null ? "永久有效" : row.diffDay }}
</template> </template>
</ProTable> </ProTable>
<!-- 图层新增/编辑 --> <!-- 图层新增/编辑 -->
<operateDialog v-model:operateVisible="operateVisible" :relativeId="relativeId"></operateDialog> <operateDialog
v-model:operateVisible="operateVisible"
:relativeId="relativeId"
:title="title"
@confirm="requestTable"
></operateDialog>
</div> </div>
</template> </template>
@ -43,8 +53,11 @@ import { useRouter } from "vue-router";
import { User } from "@/api/interface"; import { User } from "@/api/interface";
import { ColumnProps } from "@/components/ProTable/interface"; import { ColumnProps } from "@/components/ProTable/interface";
import ProTable from "@/components/ProTable/index.vue"; import ProTable from "@/components/ProTable/index.vue";
import { getGovermentTreeList } from "@/api/modules/jxjview";
import operateDialog from "./components/operateDialog.vue"; import operateDialog from "./components/operateDialog.vue";
import { Delete } from "@element-plus/icons-vue";
import { useHandleData } from "@/hooks/useHandleData";
import { albugineaMapPage, albugineaMapDelete } from "@/api/modules/mapCommon";
import { jxj_User } from "@/api/types";
const relativeId = ref(""); const relativeId = ref("");
const operateVisible = ref(false); const operateVisible = ref(false);
const treeProps = ref({ children: "children", hasChildren: "hasChildren" }); const treeProps = ref({ children: "children", hasChildren: "hasChildren" });
@ -59,19 +72,18 @@ const formData = ref({});
// //
const columns: ColumnProps[] = [ const columns: ColumnProps[] = [
{ {
prop: "governmentName", prop: "id",
label: "ID", label: "ID"
search: { el: "input" }
}, },
// prop // prop
{ prop: "createTime", label: "名称" }, { prop: "name", label: "名称", search: { el: "input" } },
{ prop: "governmentTel", label: "是否启用" }, { prop: "show", label: "是否启用" },
{ prop: "state", label: "飞到该白膜" }, { prop: "flyTo", label: "飞到该白膜" },
{ prop: "diffDay", label: "白膜颜色" }, { prop: "color", label: "白膜颜色" },
{ prop: "authProject", label: "开启打光效果" }, // { prop: "authProject", label: "" },
{ prop: "authProject", label: "创建时间" }, { prop: "createTime", label: "创建时间" },
{ prop: "authProject", label: "更新时间" }, { prop: "updateTime", label: "更新时间" },
{ prop: "operation", label: "操作", fixed: "right", width: 260 } { prop: "operation", label: "操作", fixed: "right", width: 160 }
]; ];
// const AuthIdData = ref([]); // const AuthIdData = ref([]);
@ -79,10 +91,26 @@ const columns: ColumnProps[] = [
const initParam = reactive({ const initParam = reactive({
// type: 1 // type: 1
}); });
//
const requestTable = () => {
proTable.value.getTableList();
};
//
const handleDeleteItem = async (params: jxj_User.ResUserList) => {
await useHandleData(albugineaMapDelete, { id: params.id }, `删除【${params.name}`);
proTable.value.getTableList();
};
//
const handleEditItem = (row: any) => {
operateVisible.value = true;
title.value = "编辑白膜图层";
relativeId.value = row.id;
};
// //
const handleAddItem = () => { const handleAddItem = () => {
operateVisible.value = true; operateVisible.value = true;
title.value = "新增市级政务"; title.value = "新增白膜图层";
formData.value = reactive({}); formData.value = reactive({});
}; };
// dataCallback list && total && pageNum && pageSize // dataCallback list && total && pageNum && pageSize
@ -101,48 +129,22 @@ const dataCallback = (data: any) => {
// ProTable :requestApi="getUserList" // ProTable :requestApi="getUserList"
const getTableList = (params: any) => { const getTableList = (params: any) => {
let newParams = JSON.parse(JSON.stringify(params)); let newParams = JSON.parse(JSON.stringify(params));
return getGovermentTreeList(newParams); return albugineaMapPage(newParams);
}; };
onMounted(async () => {}); onMounted(async () => {});
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.table-box {
position: relative;
}
.operate-option { .operate-option {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center;
:deep() { :deep() {
.el-button + .el-button { .el-button + .el-button {
margin-left: 0px; margin-left: 0px;
} }
} }
} }
.littleTitle {
border-left: 3px solid #008bff;
padding-left: 6px;
}
.allModular {
width: 100%;
margin: 10px;
display: flex;
flex-wrap: wrap;
.modularItem {
padding-right: 50px;
}
}
.select-all {
display: flex;
flex-direction: column;
.radio-select {
display: flex;
align-items: center;
}
}
:deep(.el-dialog__footer) {
text-align: center;
}
:focus-visible {
outline: none;
}
// .redText {
// color: red;
// }
</style> </style>

View File

@ -126,7 +126,7 @@
</template> </template>
</el-dialog> </el-dialog>
<!-- 图层效果编辑 --> <!-- 图层效果编辑 -->
<testMap v-if="testMapVisible" :relativeId="props.relativeId" @confirm="requestDetails"></testMap> <testMap v-if="testMapVisible" :relativeId="props.relativeId" @confirm="requestDetails" type="底图"></testMap>
</div> </div>
</template> </template>

View File

@ -51,11 +51,10 @@ import { ref, reactive, onMounted } from "vue";
import { ColumnProps } from "@/components/ProTable/interface"; import { ColumnProps } from "@/components/ProTable/interface";
import ProTable from "@/components/ProTable/index.vue"; import ProTable from "@/components/ProTable/index.vue";
import operateDialog from "./components/operateDialog.vue"; import operateDialog from "./components/operateDialog.vue";
import { baseMapPage } from "@/api/modules/mapCommon";
import { Delete } from "@element-plus/icons-vue"; import { Delete } from "@element-plus/icons-vue";
import { useHandleData } from "@/hooks/useHandleData"; import { useHandleData } from "@/hooks/useHandleData";
import { jxj_User } from "@/api/types"; import { jxj_User } from "@/api/types";
import { baseMapDelete } from "@/api/modules/mapCommon"; import { baseMapPage, baseMapDelete } from "@/api/modules/mapCommon";
const relativeId = ref(""); const relativeId = ref("");
const operateVisible = ref(false); const operateVisible = ref(false);
const treeProps = ref({ children: "children", hasChildren: "hasChildren" }); const treeProps = ref({ children: "children", hasChildren: "hasChildren" });