<template>
|
<div>
|
<el-collapse v-model="activeName" accordion>
|
<el-collapse-item title="量算工具" name="1">
|
<div style="width: 100%; text-align: center">
|
<el-row>
|
<div class="opt_button" @click="measure(1)">
|
<div><i class="el-icon-film"></i></div>
|
<span>距离量算</span>
|
</div>
|
<div class="opt_button" @click="measure(2)">
|
<div><i class="el-icon-film"></i></div>
|
<span>面积量算</span>
|
</div>
|
</el-row>
|
<el-row>
|
<div class="opt_button" @click="measure(3)">
|
<div><i class="el-icon-film"></i></div>
|
<span>高度量算</span>
|
</div>
|
<div class="opt_button" @click="measure(4)">
|
<div><i class="el-icon-film"></i></div>
|
<span>测表面积</span>
|
</div>
|
</el-row>
|
<el-row>
|
<div class="opt_button" @click="measure(5)">
|
<div><i class="el-icon-film"></i></div>
|
<span>表面距离</span>
|
</div>
|
<div class="opt_button" @click="measure(6)">
|
<div><i class="el-icon-film"></i></div>
|
<span>清除</span>
|
</div>
|
</el-row>
|
</div>
|
</el-collapse-item>
|
<el-collapse-item title="地上地下" name="3">
|
<el-form style="padding: 10px">
|
<el-form-item label="地表透明">
|
<el-switch v-model="dxmsParams.turnon" active-color="#13ce66" inactive-color="#a9a9a9"
|
@change="turnonChange">
|
</el-switch>
|
</el-form-item>
|
<el-form-item label="透明度:">
|
<el-slider style="width: 50%; margin-left: 80px" size="mini" v-model="dxmsParams.terropacity"
|
@change="terropacityChange" :disabled="dxmsParams.sliderDisabled"></el-slider>
|
</el-form-item>
|
</el-form>
|
</el-collapse-item>
|
<el-collapse-item title="地面开挖" name="4">
|
<el-form :inline="true" style="font-color: 0; text-align: center" label-position="right">
|
<el-form-item label="挖开深度(m):" class="input-item">
|
<el-input size="small" placeholder="请输入内容" v-model="dmkwParams.dmkwdeep" clearable>
|
</el-input>
|
</el-form-item>
|
</el-form>
|
<div class="buttongroups">
|
<el-button size="small" @click="startKW">绘制开挖范围</el-button>
|
<el-button size="small" @click="clearKW">清除</el-button>
|
</div>
|
|
</el-collapse-item>
|
<el-collapse-item title="地面压平" name="5">
|
<el-form :inline="true" style="font-color: 0; text-align: center" label-position="right">
|
<el-form-item label="压平高度(m):" class="input-item">
|
<el-input size="small" placeholder="请输入内容" v-model="dmypParams.dmypdeep" clearable>
|
</el-input>
|
</el-form-item>
|
</el-form>
|
<div class="buttongroups">
|
<el-button size="small" @click="startDMYP">绘制压平范围</el-button>
|
<el-button size="small" @click="clearYP">清除</el-button>
|
</div>
|
</el-collapse-item>
|
<el-collapse-item title="模型压平" name="6">
|
<el-form :inline="true" style="font-color: 0; text-align: center" label-position="right">
|
<el-form-item label="压平高度(m):" class="input-item">
|
<el-input size="small" placeholder="请输入内容" v-model="mxypParams.mxypdeep" clearable>
|
</el-input>
|
</el-form-item>
|
</el-form>
|
<div class="buttongroups">
|
<el-button size="small" @click="startMXYP">绘制压平范围</el-button>
|
<el-button size="small" @click="clearMXYP">清除</el-button>
|
</div>
|
</el-collapse-item>
|
<!-- <el-collapse-item title="分层分户" name="7">
|
<div></div>
|
</el-collapse-item> -->
|
<el-collapse-item title="地形分析" name="8">
|
<el-switch active-text="开始分析" inactive-text="关闭分析" v-model="value" active-color="#13ce66"
|
inactive-color="#a9a9a9"
|
@change="dxfx">
|
</el-switch>
|
</el-collapse-item>
|
<el-collapse-item title="材质工具" name="9" class="collapse-item" style="position: relative">
|
<div class="modelTool">
|
<div style="position: absolute;right: 30px;top: 4px;z-index: 996;color:#fff">
|
<el-switch v-model="showMaterialCaseList" active-color="#3384C6" inactive-color="#BEC2C6" active-text="材质模式"
|
inactive-text="普通模式" @change="startMaterialModel">
|
</el-switch>
|
</div>
|
<material-tool-box ref="materialtoolboxRef"></material-tool-box>
|
</div>
|
</el-collapse-item>
|
<el-collapse-item title="分层工具" name="10" style="margin-bottom: 80px">
|
<div v-if="louceng.length==0" style="color: darkgray;text-align: center">
|
请在目录中选择Bim模型并双击飞到模型
|
</div>
|
<div v-for="(item, index) in louceng" :key="index">
|
<div class="floor_button">
|
<span style="text-align: center; display: inline-block" @click="openStructure(item)">{{
|
item.name
|
}}</span>
|
</div>
|
</div>
|
</el-collapse-item>
|
</el-collapse>
|
<div class="funcBox layui-form" v-show="false">
|
<div class="layui-form-item">
|
<label class="layui-form-label">地表渲染</label>
|
<div class="layui-input-block">
|
<input type="radio" name="sex" value="无" title="无" checked/>
|
<input type="radio" name="sex" value="坡度" title="坡度"/>
|
</div>
|
</div>
|
<div class="layui-form-item">
|
<label class="layui-form-label">等高线</label>
|
<div class="layui-input-block">
|
<input type="checkbox" lay-skin="switch" lay-filter="open" lay-text="开|关"/>
|
<div id="lineColor"></div>
|
</div>
|
</div>
|
<div class="layui-form-item lineValue">
|
<label class="layui-form-label">间距</label>
|
<div class="layui-input-block">
|
<div id="spacing" class="slider"></div>
|
</div>
|
</div>
|
<div class="layui-form-item lineValue">
|
<label class="layui-form-label">线宽</label>
|
<div class="layui-input-block">
|
<div id="width" class="slider"></div>
|
</div>
|
</div>
|
</div>
|
<div></div>
|
|
|
<div class="drag_black scrollbar" v-draw v-if="isInstallationOn" style="background-color: #272727B2">
|
<div class="pop-header">
|
<i class="el-icon-menu"></i>属性
|
<div style="float: right; cursor: pointer" @click="closePopouDlg">
|
<i class="el-icon-close"></i>
|
</div>
|
</div>
|
<div class="scrollbar" style="overflow-y: auto;width:100%;">
|
<div style="margin: 20px">
|
<el-row>
|
<el-col :span="12">
|
当前构件:
|
<el-select @change="modelListChange" size="small" placeholder="请选择" style="width: 200px;margin: 10px;"
|
v-model="nowModel.id" class="selectStyle">
|
<el-option v-for="item in componentIdList" :key="item" :label="item" :value="item">
|
</el-option>
|
</el-select>
|
</el-col>
|
<el-col :span="12" style="line-height: 50px;text-align: right">
|
<el-button size="small" class="bimBtn" @click="editAttributes()">编辑</el-button>
|
<el-button size="small" class="bimBtn" @click="saveAttributes()">保存</el-button>
|
<el-button size="small" class="bimBtn" @click="openAddAttributes()">批量增加属性</el-button>
|
<!-- <el-button size="small" class="bimBtn" @click="openEncode()">批量编码</el-button> -->
|
</el-col>
|
</el-row>
|
<el-form ref="attributeForm" :model="attributeForm" label-width="120px" style="margin:20px;">
|
<el-row>
|
<el-form-item v-for="(val, key, i) in attributeForm" :key="i" :label="key">
|
<el-input v-model="attributeForm[key]" :disabled="editAttribute" class="inputStyle"
|
style="width: 610px">
|
</el-input>
|
</el-form-item>
|
</el-row>
|
</el-form>
|
</div>
|
</div>
|
</div>
|
|
<div class="drag_black1 scrollbar" v-draw v-if="addAttributesD">
|
<div class="pop-header">
|
<i class="el-icon-menu"></i>新增属性
|
<div style="float: right; cursor: pointer" @click="OffAddAttributes()">
|
<i class="el-icon-close"></i>
|
</div>
|
</div>
|
<div class="scrollbar" style="overflow-y: auto;width:100%;">
|
<div v-for="(item, i) in inputList" :key="i">
|
<el-form ref="AddAttributeForm" :rules="rules" :model="item" label-width="80px"
|
style="margin:30px 20px 20px 20px;">
|
<el-row>
|
<el-col :span="12">
|
<el-form-item label="属性名称" prop="name">
|
<el-input v-model="inputList[i].name" class="inputStyle"></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="12">
|
<el-form-item label="属性值">
|
<el-input v-model="inputList[i].value" class="inputStyle"></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="12">
|
<el-form-item label="属性类型">
|
<!--<el-input v-model="inputList[i].type" class="inputStyle"></el-input>-->
|
<el-select placeholder="请选择" style="width: 240px;" v-model="inputList[i].type" class="selectStyle">
|
<el-option label="string" value="string"></el-option>
|
<el-option label="int" value="int"></el-option>
|
<el-option label="double" value="double"></el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="12">
|
<el-form-item label="属性长度">
|
<!-- <el-input v-model="inputList[i].length" class="inputStyle"></el-input>-->
|
<el-input-number v-model="inputList[i].length" :min="1" :max="1000"></el-input-number>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</el-form>
|
</div>
|
|
|
<div style="margin: 20px;text-align: center">
|
<el-button size="small" class="bimBtn" @click="addInput()">新增</el-button>
|
<el-button size="small" class="bimBtn" @click="addAttributes()">保存</el-button>
|
<el-button size="small" class="bimBtn" @click="OffAddAttributes()">取消</el-button>
|
</div>
|
</div>
|
</div>
|
<div class="drag_black1 scrollbar" v-draw v-if="encode">
|
<div class="pop-header">
|
<i class="el-icon-menu"></i>自定义批量编码
|
<div style="float: right; cursor: pointer" @click="closeEncode">
|
<i class="el-icon-close"></i>
|
</div>
|
</div>
|
<div class="scrollbar" style="overflow-y: auto;width:100%;">
|
<el-form ref="CustomCoding" :rules="rules" :model="encodeList" label-width="100px" style="margin-top: 20px">
|
<el-row>
|
<el-col :span="12">
|
<el-form-item label="属性名称" prop="name">
|
<el-input v-model="encodeList.name" class="inputStyle"></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="12">
|
<el-form-item label="编码前缀">
|
<el-input v-model="encodeList.prefix" class="inputStyle"></el-input>
|
</el-form-item>
|
</el-col>
|
|
</el-row>
|
<el-row>
|
<el-col :span="12">
|
<el-form-item label="编码连接符">
|
<el-input v-model="encodeList.connector" class="inputStyle"></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="12">
|
<el-form-item label="编码位数">
|
<!-- <el-input :placeholder="'至少不小于'+componentIdList.length.toString().length+'位!'"-->
|
<!-- v-model="encodeList.number" class="inputStyle"></el-input>-->
|
<el-input-number v-model="encodeList.number" :min="componentIdList.length.toString().length" :max="100">
|
</el-input-number>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</el-form>
|
<div style="margin: 20px;text-align: center;box-sizing: border-box">
|
<el-button size="small" class="bimBtn" @click="saveEncode()">保存</el-button>
|
<el-button size="small" class="bimBtn" @click="closeEncode()">取消</el-button>
|
</div>
|
</div>
|
</div>
|
</div>
|
</template>
|
<script>
|
import axios from "axios";
|
import * as SmartEarth from "../../../../public/CimSDK/index.js"
|
import MaterialToolBox from './MaterialToolBox.vue';
|
// CIMSDK中layui 注册
|
// import layui from "../../../../public/CimSDK/Workers/layui/layui.js"
|
|
let Cesium = SmartEarth.Cesium;
|
let measureData = [];
|
let colorAll = {
|
point: Cesium.Color.fromCssColorString("#ff0000"),
|
polyline: Cesium.Color.fromCssColorString("#ffff0050"),
|
polygon: Cesium.Color.fromCssColorString("#ffff0050"),
|
};
|
let test = null;
|
let testmodel = [
|
{
|
id: 0,
|
modulename: "bim",
|
urls: "http://103.85.165.99:9001/gisserver/c3dserver/js_a67_mx/tileset.json",
|
},
|
];
|
let dxkw = null
|
let terrainFlatten = null
|
let currentModel = null
|
export default {
|
components: {
|
MaterialToolBox
|
},
|
data() {
|
this.dxms = {
|
UndergroundMode: null
|
};
|
//地面开挖
|
this.dmkw = {
|
Excavation: null
|
};
|
this.dmyp = {
|
TerrainFlattening: null, positions: [],
|
};
|
this.mxyp = {
|
ModelFlattening: null,
|
};
|
return {
|
radiusSize: 0.4,
|
bimFCFH: false,
|
louceng: [],
|
//地下模式
|
dxmsParams: {
|
turnon: false,
|
terropacity: 100,
|
sliderDisabled: true,
|
},
|
//地面开挖
|
dmkwParams: {
|
dmkwdeep: 0
|
},
|
dmypParams: {
|
dmypdeep: 0
|
}, mxypParams: {
|
mxypdeep: 0
|
},
|
value: false,
|
showElevation: false,
|
activeName: "1",
|
cutdistance: 0,
|
radiovalue: 6,
|
isInstallationOn: false,
|
// modelList:[],//多选构件列表
|
nowModel: {},
|
attributeForm: {},
|
attributeFormOld: {},
|
editAttribute: true,
|
selectPosition: null,
|
bimModelID: null,
|
setCompoent: null,//设置框选显示状态
|
componentIdList: [],//构件id列表
|
clickComponentId: [],
|
saveGuid: null,
|
addAttributesD: false,
|
// addAttributeForm: null,
|
inputList: [{
|
name: '',
|
type: '',
|
value: '',
|
length: ''
|
}],
|
encode: false,
|
encodeList: {
|
prefix: '',
|
connector: '',
|
number: '',
|
name: ''
|
},
|
rules: {
|
name: [
|
{required: true, message: '请输入属性名称', trigger: 'blur'},
|
],
|
},
|
serviceName: null,
|
flattenPolygon: null,
|
// currentModel: null,
|
componentId: null,
|
showMaterialCaseList: false,
|
};
|
},
|
methods: {
|
async getModelPosition(modelId) {
|
let res = await axios.get(BIM_SERVER_GET + "getPosition?modelId=" + modelId);
|
return res.data;
|
},
|
async getModelByFloorstorey(modelid, storey) {
|
let res = await axios.get(BIM_SERVER_GET + "getComponentIds?modelId=" + modelid + "&storey=" + storey);
|
return res.data
|
},
|
async _aloop(x, y, z, bim, icTran, _Cesium, modelId) {
|
let that = this;
|
bim.SetComponentTransform(_Cesium.Matrix4.toArray(_Cesium.Matrix4.fromTranslation(new _Cesium.Cartesian3(x, y, z))),
|
new Int32Array(icTran),
|
false
|
);
|
let res = await this.getModelPosition(modelId);
|
if (res.code !== 200) {
|
return
|
}
|
let lng = Number(res.data.x), lat = Number(res.data.y), height = Number(res.data.height);
|
var position = Cesium.Cartesian3.fromDegrees(lng || 118.70647245037493, lat || 31.973898289550043, height || 0);
|
let modelTransform = Cesium.Matrix4.toArray(Cesium.Transforms.eastNorthUpToFixedFrame(position));
|
if (res.data.roll) {
|
let rz = Cesium.Math.toRadians(res.data.roll);
|
var rotationZ = Cesium.Matrix4.fromRotationTranslation(Cesium.Matrix3.fromRotationZ(rz));
|
Cesium.Matrix4.multiply(modelTransform, rotationZ, modelTransform);
|
}
|
let currentModel = this.$store.state.bimModelListAll[modelId]
|
let boxMin = currentModel.boxMin;
|
let boxMax = currentModel.boxMax;
|
boxMin = Cesium.Cartesian3.fromArray(boxMin, 0);
|
boxMax = Cesium.Cartesian3.fromArray(boxMax, 0);
|
boxMin = Cesium.Matrix4.multiplyByPoint(modelTransform, boxMin, {})
|
boxMax = Cesium.Matrix4.multiplyByPoint(modelTransform, boxMax, {})
|
let boundingSphere = Cesium.BoundingSphere.fromPoints([boxMin, boxMax], new Cesium.BoundingSphere())
|
let offset = 0
|
if (y > -22) {
|
this.isMoveing = true
|
let moveTimer = setInterval(() => {
|
if (offset >= (boundingSphere.radius) * this.radiusSize) {
|
clearInterval(moveTimer)
|
this.isMoveing = false
|
}
|
offset += 10;
|
bim.SetComponentTransform(_Cesium.Matrix4.toArray(_Cesium.Matrix4.fromTranslation(new _Cesium.Cartesian3(x, y - offset, z))),
|
new Int32Array(icTran),
|
false
|
);
|
}, 30);
|
}
|
},
|
async openStructure(index) {
|
let item = this.$store.state.currentSelectNode;
|
if (item) {
|
this.bimFCFH = !this.bimFCFH;
|
let modelId = this.getModelIdByUniqueId();
|
//展开分层分户
|
let that = this;
|
let bim = window.BIM;
|
if (bim) {
|
// window.canGL = level === 9;
|
let icTran = [];
|
let res = await this.getModelByFloorstorey(modelId, index.name);
|
for (let i = 0; i < res.data.length; i++) {
|
icTran.push(modelId, res.data[i].id);
|
}
|
if (!index.isOpen) {
|
this._aloop(0, 0, 0, bim, icTran, Cesium, modelId);
|
index.isOpen = true;
|
} else {
|
bim.SetComponentTransform(Cesium.Matrix4.toArray(Cesium.Matrix4.fromTranslation(new Cesium.Cartesian3(0, 0, 0))),
|
new Int32Array(icTran),
|
false
|
);
|
index.isOpen = false;
|
}
|
}
|
}
|
},
|
startMaterialModel(val) {
|
if (window.handler) {
|
console.log(val)
|
this.showMaterialCaseList = false;
|
this.$message.error("请先结束批注!");
|
return;
|
}
|
this.$nextTick(() => {
|
this.$refs.materialtoolboxRef.startMaterialModel(val)
|
})
|
},
|
measure(tag) {
|
let colorAll = {};
|
switch (tag) {
|
case 1:
|
let m1 = window.sgworld.Command.execute(0, 10, colorAll, () => {
|
});
|
measureData.push(m1);
|
break;
|
case 2:
|
sgworld.analysis.getPlaneArea()
|
break;
|
case 3:
|
let m3 = sgworld.Command.execute(0, 5, colorAll, () => {
|
});
|
measureData.push(m3);
|
break;
|
case 4:
|
sgworld.analysis.getSurfaceArea3d()
|
break;
|
case 5:
|
let m5 = sgworld.Command.execute(0, 2, colorAll, () => {
|
});
|
measureData.push(m5);
|
break;
|
case 6:
|
// 清除
|
measureData.forEach((item) => {
|
item.deleteObject();
|
});
|
sgworld.analysis.deleteObject();
|
measureData = [];
|
break;
|
}
|
},
|
turnonChange(val) {
|
if (val === true) {
|
this.dxmsParams.terropacity = 50;
|
this.dxmsParams.sliderDisabled = false;
|
} else {
|
this.dxmsParams.terropacity = 100;
|
this.dxmsParams.sliderDisabled = true;
|
}
|
this.dxms.UndergroundMode = sgworld.Analysis.UndergroundMode(
|
val,
|
this.dxmsParams.terropacity / 100
|
);
|
},
|
terropacityChange(val) {
|
this.dxms.UndergroundMode &&
|
(this.dxms.UndergroundMode.alpha = val / 100);
|
},
|
// 模型切割
|
clippingModel() {
|
var model = this.$store.state.modelData;
|
if (model) {
|
model && model.clippingModel();
|
} else {
|
this.$message.error("请选择模型");
|
}
|
},
|
// 全球地形分析
|
dxfx(val) {
|
console.log(val)
|
if (val) {
|
this.showElevation = true;
|
//跳转视角
|
sgworld.camera.flyTo(107.5, 32.5, 5000, 0, -20, 0.0, 5);
|
// sgworld.Navigate.jumpTo({
|
// //跳转视角
|
// destination: {
|
// x: 311837.3471863137,
|
// y: 5628280.936629815,
|
// z: 2992581.921482893,
|
// },
|
// orientation: {
|
// heading: 2.5028896264234364,
|
// pitch: -0.2201285642360813,
|
// roll: 0.0,
|
// },
|
// });
|
//添加cts地形
|
if (test == null) {
|
test = sgworld.factory.createTerrainLayer({
|
sourceType: "ctb",
|
url: 'http://103.85.165.99:9001/gisserver/ctsserver/srtm_cts'
|
});
|
}
|
} else {
|
this.showElevation = false;
|
test.removeFromMap();
|
test = null;
|
}
|
let elevationTool = new SmartEarth.ElevationTool(window.sgworld);
|
layui.use(["form", "slider", "colorpicker"], function () {
|
var slider = layui.slider;
|
var form = layui.form;
|
var colorpicker = layui.colorpicker;
|
form.on("radio", function (data) {
|
if (data.value === "无") {
|
elevationTool.type = "none";
|
$(".renderValue").hide();
|
} else {
|
elevationTool.type = "slope";
|
$(".renderValue").show();
|
}
|
elevationTool.render();
|
});
|
// 等高线开关
|
form.on("switch(open)", function (data) {
|
// 是否显示等高线
|
elevationTool.tf = this.checked;
|
elevationTool.render();
|
if (this.checked) {
|
$(".lineValue").show();
|
} else {
|
$(".lineValue").hide();
|
}
|
});
|
|
//间距
|
slider.render({
|
elem: "#spacing",
|
max: 500,
|
min: 20,
|
value: elevationTool.spacing,
|
change: function (value) {
|
elevationTool.setSpacing(value);
|
},
|
});
|
//线宽
|
slider.render({
|
elem: "#width",
|
max: 10,
|
min: 1,
|
value: elevationTool.width,
|
change: function (value) {
|
elevationTool.setWidth(value);
|
},
|
});
|
//等高线颜色
|
colorpicker.render({
|
elem: "#lineColor", //绑定元素
|
color: elevationTool.contourColor,
|
done: function (color) {
|
elevationTool.setContourColor(color);
|
},
|
});
|
});
|
|
},
|
|
startKW() {
|
// this.clearKW()
|
// if (!this.isLoadTerrain()) {
|
// this.$message.error("请先加载地形");
|
// return;
|
// }
|
let deepVal = parseFloat(this.dmkwParams.dmkwdeep);
|
if (isNaN(deepVal)) {
|
this.$message.error("请输入数字");
|
} else {
|
dxkw = sgworld.analysis.createTerrainExcavation({
|
height: deepVal,
|
callback: function (a) {
|
},
|
})
|
}
|
},
|
isLoadTerrain() {
|
for (let i of sgworld.userScene.rootNode.childNodes) {
|
if (i.name === "terrainProviders") {
|
if (i.childNodes.length !== 0) {
|
return true;
|
} else {
|
return false;
|
}
|
}
|
}
|
},
|
startDMYP() {
|
// if (!this.isLoadTerrain()) {
|
// this.$message.error("请先加载地形");
|
// return;
|
// }
|
let that = this;
|
let deepVal = parseFloat(this.dmypParams.dmypdeep);
|
if (isNaN(deepVal)) {
|
this.$message.error("请输入数字");
|
} else {
|
terrainFlatten = new SmartEarth.Cesium.TerrainFlatten(
|
sgworld.coreMap.scene
|
)
|
let draw = sgworld.shapeTool.createDrawShapeTool((e) => {
|
let polygonI = []
|
for (let i of e.result) {
|
let ellipsoid = sgworld.coreMap.scene.globe.ellipsoid
|
let cartographic = ellipsoid.cartesianToCartographic(i)
|
let lon = SmartEarth.Cesium.Math.toDegrees(cartographic.longitude) // 经度
|
let lat = SmartEarth.Cesium.Math.toDegrees(cartographic.latitude) // 纬度
|
let height = SmartEarth.Cesium.Math.toDegrees(cartographic.height) // 纬度
|
polygonI.push(lon, lat, deepVal)
|
}
|
terrainFlatten.addPolygon(polygonI) //添加压平面
|
terrainFlatten.update() //更新地形
|
draw.removeFromMap()
|
})
|
}
|
},
|
clearYP() {
|
// if (this.dmyp.TerrainFlattening) {
|
// earthCtrl.TerrainFlattening.remove();
|
// this.dmyp.TerrainFlattening = undefined;
|
// }
|
if (terrainFlatten) {
|
terrainFlatten.clearPolygon()
|
}
|
},
|
clearKW() {
|
// if (this.dmyp.TerrainFlattening) {
|
// earthCtrl.TerrainFlattening.remove();
|
// this.dmyp.TerrainFlattening = undefined;
|
// }
|
if (Object.keys(dxkw).length > 0) {
|
dxkw.removeFromMap()
|
dxkw = {}
|
}
|
},
|
createTerrainModifier(name, positions, deep) {
|
let viewer = sgworld._Viewer;
|
let findDirectParent = function (e) {
|
try {
|
var t = [];
|
if (e.width == Math.PI)
|
return null;
|
for (var i = 0; i < viewer.scene.globe._surface._tilesToRender.length; i++) {
|
var o = viewer.scene.globe._surface._tilesToRender[i], r = o._rectangle;
|
Cesium.Rectangle.intersection(r, e) && t.push(o)
|
}
|
return t;
|
} catch (e) {
|
|
}
|
return null;
|
}
|
if (positions && positions.length > 0) {
|
var ellipsoid = viewer.scene.globe.ellipsoid;
|
for (let i = 0; i < positions.length; ++i) {
|
const position = positions[i];
|
|
let h = viewer.scene.globe.getHeight(
|
Cesium.Cartographic.fromCartesian(position));
|
|
console.log(h)
|
}
|
|
// let _heightArray = new Array(positions.length);
|
// _heightArray.fill(deep);
|
|
// let _id = Cesium.createGuid();
|
// let _now = Date.now();
|
// let _rectangle = Cesium.Rectangle.fromCartesianArray(positions);
|
|
// let _parent = findDirectParent(_rectangle);
|
|
// viewer.terrainProvider && void 0 === viewer.terrainProvider._modifyTerrainObjects && (viewer.terrainProvider._modifyTerrainObjects = []);
|
|
// let a = { id: _id, name: name, show: true, rectangle: _rectangle, vertices: positions, heights: _heightArray, timeStamp: _now };
|
// a.remove = function () {
|
// if (viewer.terrainProvider && viewer.terrainProvider._modifyTerrainObjects)
|
// for (var i = viewer.terrainProvider._modifyTerrainObjects.length - 1; 0 <= i; i--)
|
// viewer.terrainProvider._modifyTerrainObjects[i].id == n && viewer.terrainProvider._modifyTerrainObjects.splice(i, 1);
|
// if (_parent)
|
// try {
|
// for (let j = 0; j < _parent.length; j++)
|
// try {
|
// _parent[j]._parent.freeResources()
|
// } catch (e) { }
|
|
// } catch (e) { }
|
// }
|
|
// if (viewer.terrainProvider._modifyTerrainObjects.push(a), _parent)
|
// try {
|
// for (let l = 0; l < _parent.length; l++)
|
// try {
|
// _parent[l]._parent.freeResources()
|
// } catch (e) { }
|
// } catch (e) { }
|
// return a;
|
}
|
|
},
|
startMXYP() {
|
this.clearMXYP()
|
|
let item = this.$store.state.currentSelectNode;
|
if (!item) {
|
this.$message.warning("先选中需要压平的模型!")
|
return;
|
}
|
|
let model = sgworld.userScene.getChildById(item.id)
|
if (!model) {
|
this.$message.warning("请重新选择模型!")
|
return;
|
}
|
currentModel = model
|
let deepVal = parseFloat(this.mxypParams.mxypdeep);
|
if (isNaN(deepVal)) {
|
this.$message.error('请输入数字');
|
} else {
|
sgworld.drawObj = sgworld.Creator.createSimpleGraphic(
|
'polygon',
|
{
|
clampToGround: true,
|
},
|
entity => {
|
let positions = window.positions = entity.polygon.hierarchy.getValue().positions;
|
sgworld.Creator.SimpleGraphic.remove(entity.id);
|
let coord = []
|
positions.forEach(position => {
|
let cartographic = Cesium.Cartographic.fromCartesian(position)
|
coord.push(Cesium.Math.toDegrees(cartographic.longitude), Cesium.Math.toDegrees(cartographic.latitude))
|
});
|
this.flattenPolygon = window.Cesium.PolygonGeometry.fromPositions({
|
positions: window.Cesium.Cartesian3.fromDegreesArray(coord),
|
height: deepVal,
|
});
|
if (model._primitive && model._primitive.hasOwnProperty('addFlattenPolygon')) {
|
model._primitive.addFlattenPolygon(this.flattenPolygon);
|
model._primitive._needUpdateFlatten = true;
|
}
|
// that.mxyp.ModelFlattening = sgworld.Creator.createModelModifier("模型压平", positions, deepVal, {});
|
}
|
);
|
}
|
|
},
|
clearMXYP() {
|
if (currentModel) {
|
if (currentModel._primitive && currentModel._primitive.hasOwnProperty('removeFlattenPolygon') && this.flattenPolygon) {
|
currentModel._primitive.removeFlattenPolygon(this.flattenPolygon);
|
this.flattenPolygon = null
|
currentModel = null
|
}
|
}
|
},
|
clearPQ() {
|
this.changeDirection("");
|
},
|
clearTS() {
|
this.tsfx.lineOfSight.forEach((line) => {
|
line && line.deleteObject();
|
});
|
this.tsfx.lineOfSight = [];
|
},
|
clearPQDM() {
|
let id = sgworld.ProjectTree.findItem("测量结果");
|
if (id) {
|
sgworld.ProjectTree.deleteItem(id);
|
}
|
this.$emit("pmfxshow", {ison: false, data: {}});
|
},
|
addInput() {
|
this.inputList.push({
|
name: '',
|
type: '',
|
value: '',
|
length: ''
|
})
|
},
|
OffAddAttributes() {
|
this.addAttributesD = false
|
this.inputList = [{
|
name: '',
|
type: '',
|
value: '',
|
length: ''
|
}]
|
},
|
bimSelect() {
|
var _that = this
|
this.bimSelectEnd()
|
if (this.componentIdList.length > 0) {
|
this.isInstallationOn = true
|
} else {
|
this.$message.error("请先选择构件!")
|
}
|
|
},
|
clickAddCompoent() {
|
let _that = this;
|
window.ClickHandler = new Cesium.ScreenSpaceEventHandler(sgworld._Viewer.canvas);
|
// window.bimClickHandler = new Geoworld.ScreenSpaceEventHandler(earthCtrl.coreMap.canvas);
|
window.ClickHandler.setInputAction(function onLeftClick(movement) {
|
// 拾取:模型id,实例id,构件id
|
window.BIM.PickId(movement.position.x, movement.position.y).then(idArr => {
|
let modelId = idArr[0];
|
_that.bimModelID = idArr[0];
|
let instancesId = idArr[1]
|
let componentId = idArr[2]
|
_that.clickComponentId.push(modelId, instancesId)
|
_that.componentIdList.push(componentId)
|
console.log("模型id", modelId, "实例id", instancesId, "构件id", componentId)
|
window.BIM.SetInstancesStatus(2, new Int32Array([modelId, instancesId]))
|
})
|
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
|
},
|
bimSelectShow() {
|
var _that = this
|
_that.$store.commit("START_LOADING");
|
if (window.BIM) {
|
window.BIM.FrameSelection(_that.selectPosition.sx, _that.selectPosition.sy, _that.selectPosition.ex, _that.selectPosition.ey).then(result => {
|
//返回的内容是数组[modelId, componentId, instancesId,...]
|
_that.bimModelID = result[0]
|
var setCompoent = []
|
var compoentList = []
|
for (let i = 0; i < result.length; i += 3) {
|
setCompoent.push(result[i], result[i + 2])
|
compoentList.push(result[i + 1])
|
}
|
_that.setCompoent = setCompoent
|
_that.componentIdList = [...new Set(compoentList)]
|
window.BIM.SetInstancesStatus(2, new Int32Array(setCompoent));
|
_that.$store.commit("CLOSE_LOADING");
|
})
|
}
|
},
|
bimSelectOff() {
|
let setCompoent = []
|
let _that = this
|
if (_that.setCompoent) {
|
for (let i = 0; i < _that.setCompoent.length; i += 2) {
|
setCompoent.push(_that.setCompoent[i], _that.setCompoent[i + 1])
|
}
|
window.BIM.SetInstancesStatus(1, new Int32Array(setCompoent));
|
_that.setCompoent = null
|
}
|
// for(let i = 0;i< _that.clickComponentId.length;i++){
|
// window.BIM.SetInstancesStatus(new Int32Array(_that.clickComponentId[i]));
|
// }
|
console.log('点击列表', _that.clickComponentId)
|
if (_that.clickComponentId.length > 0) {
|
window.BIM.SetInstancesStatus(1, new Int32Array(_that.clickComponentId));
|
_that.clickComponentId = []
|
}
|
|
},
|
bimSelectEnd() {
|
// var handler = new Cesium.ScreenSpaceEventHandler(sgworld._Viewer.canvas);
|
// handler.removeInputAction(Cesium.ScreenSpaceEventType.RIGHT_DOWN);
|
// handler.removeInputAction(Cesium.ScreenSpaceEventType.RIGHT_UP);
|
// handler.removeInputAction(Cesium.ScreenSpaceEventType.MOUSE_MOVE);
|
// sgworld._Viewer.scene.screenSpaceCameraController.zoomEventTypes=[Cesium.CameraEventType.RIGHT_DRAG, Cesium.CameraEventType.WHEEL,Cesium.CameraEventType.PINCH]
|
if (window.SelectHandler) {
|
window.SelectHandler.destroy()
|
window.SelectHandler = undefined
|
}
|
if (window.ClickHandler) {
|
window.ClickHandler.destroy()
|
window.ClickHandler = undefined
|
}
|
},
|
bimSelectBegin() {
|
let item = this.$store.state.currentSelectNode;
|
if (!item) return this.$message.error("请先选择需模型!")
|
this.serviceName = item.num
|
this.clickAddCompoent()
|
var _that = this
|
_that.setCompoent = null
|
let viewer = sgworld._Viewer;
|
//cesium默认右键为放大缩小,此处给zoomEventTypes设置新值
|
viewer.scene.screenSpaceCameraController.zoomEventTypes = [Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK]
|
//earthsdk默认右键为改变视角,此处禁止。
|
viewer.scene.screenSpaceCameraController.lookEventTypes = {
|
eventType: Cesium.CameraEventType.LEFT_DRAG,
|
modifier: Cesium.KeyboardEventModifier.SHIFT,
|
}
|
//右键按下标识
|
var flag = false
|
//起点终点x,y
|
var startX = null;
|
var startY = null;
|
var endX = null;
|
var endY = null;
|
//创建框选元素
|
var selDiv = document.createElement("div")
|
window.SelectHandler = new Cesium.ScreenSpaceEventHandler(viewer.canvas);
|
//右键按下事件,设置起点,div设置样式和位置,添加到页面
|
window.SelectHandler.setInputAction(function (event) {
|
flag = true
|
_that.bimSelectOff()
|
startX = event.position.x
|
startY = event.position.y
|
|
selDiv.style.cssText = "position:absolute;width:0px;height:0px;font-size:0px;margin:0px;padding:0px;border:1px dashed #0099FF;background-color:#C3D5ED;z-index:1000;filter:alpha(opacity:30);opacity:0.3;";
|
selDiv.id = "selectDiv";
|
selDiv.style.left = startX + "px";
|
selDiv.style.top = startY + "px";
|
document.getElementById('sdkContainer').appendChild(selDiv);
|
}, Cesium.ScreenSpaceEventType.RIGHT_DOWN);
|
|
//鼠标抬起事件,获取div坐上和右下的x,y 转为经纬度坐标
|
window.SelectHandler.setInputAction(function (event) {
|
flag = false
|
var l = parseInt(selDiv.style.left);
|
var t = parseInt(selDiv.style.top);
|
var w = parseInt(selDiv.style.width);
|
var h = parseInt(selDiv.style.height);
|
// var earthPosition = viewer.camera.pickEllipsoid({x:l,y:t}, viewer.scene.globe.ellipsoid);
|
// var cartographic = Cesium.Cartographic.fromCartesian(earthPosition, viewer.scene.globe.ellipsoid, new Cesium.Cartographic());
|
// console.log("左上坐标为:"+[Cesium.Math.toDegrees(cartographic.longitude),Cesium.Math.toDegrees(cartographic.latitude)])
|
// earthPosition = viewer.camera.pickEllipsoid({x:l+w,y:t+h}, viewer.scene.globe.ellipsoid);
|
// cartographic = Cesium.Cartographic.fromCartesian(earthPosition, viewer.scene.globe.ellipsoid, new Cesium.Cartographic());
|
// console.log("右下坐标为:"+[Cesium.Math.toDegrees(cartographic.longitude),Cesium.Math.toDegrees(cartographic.latitude)])
|
_that.bimSelectShow()
|
//根据业务确定是否删除框选div
|
document.getElementById("selectDiv").parentNode.removeChild(document.getElementById("selectDiv"))
|
}, Cesium.ScreenSpaceEventType.RIGHT_UP);
|
|
//鼠标移动事件,处理位置css
|
window.SelectHandler.setInputAction(function (event) {
|
if (flag) {
|
endX = event.endPosition.x
|
endY = event.endPosition.y
|
|
selDiv.style.left = Math.min(endX, startX) + "px";
|
selDiv.style.top = Math.min(endY, startY) + "px";
|
selDiv.style.width = Math.abs(endX - startX) + "px";
|
selDiv.style.height = Math.abs(endY - startY) + "px";
|
_that.selectPosition = {
|
sx: startX,
|
sy: startY,
|
ex: endX,
|
ey: endY
|
}
|
|
}
|
|
}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
|
},
|
clearBimSelect() {
|
this.bimSelectEnd()
|
this.bimSelectOff()
|
this.isInstallationOn = false
|
this.componentIdList = []
|
},
|
modelListChange(val) {
|
this.componentId = val
|
let deleteAttributes = ['GlobalId', 'guid', 'function', 'pid', 'fileName', 'Guid']
|
let serviceName = this.serviceName
|
var _that = this
|
//切换显示属性
|
let modelId = _that.bimModelID;
|
let sqldb = window.BIM.GetModelSqlDb(modelId);
|
console.log("aaa")
|
let ifcurl = BIM_SERVER_GET + "getProperty?modelId=" + modelId + "&id=" + val;
|
axios.get(ifcurl).then((res) => {
|
console.log(res)
|
if (res.status == 200) {
|
let attr = res.data.data.attributes
|
console.log(attr)
|
// _that.attributeForm = attr
|
deleteAttributes.map(e => {
|
delete attr[e]
|
})
|
console.log(attr)
|
let attrs = {}
|
Object.keys(attr).map(key => {
|
if (typeof (attr[key]) === 'object') {
|
attrs = {...attr[key]}
|
attrs = JSON.parse(JSON.stringify(attrs))
|
// attrName = key
|
attr = {...attr, ...attrs}
|
delete attr[key]
|
}
|
})
|
_that.attributeForm = attr
|
_that.attributeFormOld = JSON.parse(JSON.stringify(attr))
|
}
|
})
|
return
|
sqldb.then(modelDb => {
|
modelDb.each(`select component.*,modelChild.md5 from component left join modelChild on component.modelChildId = modelChild.id where component.id = ?`, [val], (component) => {
|
let guid = component.md5 + '_' + component.ifcId
|
// let ifcurl =
|
// BIM_PROPERTY_URL +
|
// serviceName + "/query?keyValues=(gmlid:$eq:" +
|
// guid +
|
// ")&type=installation";
|
let ifcurl =
|
BIM_LIST_URL + "api/v1/" + serviceName + "/bim/" + guid;
|
axios.get(ifcurl).then(res => {
|
if (res.data.code !== 200) return _that.$message.error(res.data.msg)
|
// _that.attributeForm = res.data[0].attributes
|
_that.saveGuid = res.data.data.attributes.GlobalId
|
let attr = res.data.data.attributes
|
deleteAttributes.map(e => {
|
delete attr[e]
|
})
|
let attrs = {}
|
// let attrName = null
|
Object.keys(attr).map(key => {
|
if (typeof (attr[key]) === 'object') {
|
attrs = {...attr[key]}
|
attrs = JSON.parse(JSON.stringify(attrs))
|
// attrName = key
|
attr = {...attr, ...attrs}
|
delete attr[key]
|
}
|
})
|
|
_that.attributeForm = attr
|
})
|
})
|
})
|
},
|
editAttributes() {
|
this.editAttribute = false
|
},
|
//存储属性
|
saveAttributes() {
|
this.editAttribute = true
|
//获取所有属性键值
|
var keys = Object.keys(this.attributeFormOld);
|
let url = BIM_SERVER_GET + "updateProperty?modelId=" + this.bimModelID;
|
keys.forEach((item) => {
|
//判断新旧属性是否做出更改
|
if (this.attributeFormOld[item] != this.attributeForm[item]) {
|
axios.post(url,
|
[{
|
"id": this.componentId,
|
"attributes": [{
|
"name": item,
|
"value": this.attributeForm[item]
|
}]
|
}
|
]
|
).then(res => {
|
if (res.data.code === 200) {
|
this.attributeFormOld.item = this.attributeForm.item
|
this.$message({
|
message: "编辑成功!",
|
type: "success",
|
});
|
} else {
|
this.$message.error(res.data.msg)
|
}
|
})
|
}
|
})
|
},
|
//打开添加属性对话框
|
openAddAttributes() {
|
this.OffAddAttributes()
|
this.addAttributesD = true
|
},
|
// 批量添加构建属性
|
addAttributes() {
|
this.$refs.AddAttributeForm[0].validate(e => {
|
if (!e) return this.$message.error('请输入属性名称!')
|
let url = BIM_SERVER_GET + "addProperty?modelId=" + this.bimModelID;
|
//post data构件属性编辑
|
let attributes = []
|
this.inputList.forEach((item) => {
|
attributes.push({
|
"name": item.name,
|
"value": item.value,
|
"type": item.type,
|
"length": item.length
|
})
|
})
|
//批量增加构件属性
|
axios.post(url, [{"id": this.componentId, "attributes": attributes}]
|
).then(res => {
|
if (res.data.code === 200) {
|
console.log(attributes)
|
attributes.forEach((item => {
|
console.log(item)
|
this.attributeForm[item.name] = item.value
|
this.attributeFormOld = JSON.parse(JSON.stringify(this.attributeForm))
|
console.log(this.attributeForm)
|
}))
|
this.$message({
|
message: "编辑成功!",
|
type: "success",
|
});
|
this.OffAddAttributes()
|
} else this.$message.error(res.data.msg)
|
})
|
})
|
},
|
closePopouDlg() {
|
this.isInstallationOn = false
|
this.clearBimSelect()
|
this.componentIdList = []
|
},
|
openEncode() {
|
this.encode = true
|
},
|
closeEncode() {
|
this.encode = false
|
this.encodeList = {
|
prefix: '',
|
connector: '',
|
number: '',
|
name: ''
|
}
|
},
|
formatZero(num, len) {
|
if (String(num).length > len) {
|
return num;
|
}
|
return (Array(len).join('0') + num).slice(-len)
|
},
|
saveEncode() {
|
var _that = this
|
this.$refs.CustomCoding.validate(e => {
|
if (!e) return
|
let serviceName = _that.serviceName
|
let url = BIM_LIST_URL + "api/v1/" + serviceName + "/bim";
|
let ifcid1000 = []
|
let num = 0
|
for (let i = 0; i < _that.componentIdList.length; i += 1000) {
|
ifcid1000.push(_that.componentIdList.slice(i, i + 1000))
|
}
|
for (let i = 0; i < ifcid1000.length; i++) {
|
let modelId = _that.bimModelID;
|
let sqldb = window.BIM.GetModelSqlDb(modelId);
|
let ids = ifcid1000[i].toString()
|
sqldb.then(modelDb => {
|
let values = []
|
modelDb.each(`select component.*,modelChild.md5 from component left join modelChild on component.modelChildId = modelChild.id where component.id in (${ids})`, [], (component) => {
|
let guid = component.md5 + '_' + component.ifcId
|
num = num + 1
|
var zeroNum = _that.formatZero(num, Number(_that.encodeList.number))
|
var code = _that.encodeList.prefix + _that.encodeList.connector + zeroNum
|
values.push({
|
guid: guid,
|
attributes: [{
|
name: _that.encodeList.name,
|
value: code,
|
type: 'string',
|
length: 10000
|
}]
|
})
|
})
|
axios.post(url, values).then(res => {
|
if (res.data.code === 200) {
|
// this.$message({
|
// message: "编辑成功!",
|
// type: "success",
|
// });
|
} else {
|
this.$message.error(res.data.msg)
|
}
|
})
|
})
|
}
|
})
|
|
},
|
getModelIdByUniqueId() {
|
let item = this.$store.state.currentSelectNode;
|
for (let model in this.$store.state.bimModelListAll) {
|
if (this.$store.state.bimModelListAll[model].uniqueId == item.uniqueId) {
|
return model
|
}
|
}
|
}
|
},
|
created() {
|
const _this = this;
|
layui.use(["layer"], function () {
|
_this.layer = layui.layer;
|
});
|
this.$bus.$on("BimChange", obj => {
|
let item = this.$store.state.currentSelectNode;
|
_this.louceng = [];
|
if (item.sourceType == "bim") {
|
for (let model in this.$store.state.bimModelListAll) {
|
if (this.$store.state.bimModelListAll[model].uniqueId == item.uniqueId) {
|
let url = BIM_SERVER_GET + "getStorey?modelId=" + parseInt(model);
|
axios.get(url).then((floor) => {
|
console.log(floor)
|
_this.louceng = floor.data.data.map((d) => {
|
return d.storey
|
}).filter((value, index, self) => {
|
return self.indexOf(value) === index
|
})
|
_this.louceng.sort()
|
_this.louceng = _this.louceng.map(item => {
|
return {name: item, isOpen: false}
|
})
|
})
|
}
|
}
|
}
|
})
|
},
|
|
};
|
</script>
|
<style lang="less" scoped>
|
.modelTool {
|
/deep/ .el-switch__label {
|
color: #bbb !important;
|
}
|
|
/deep/ .el-switch__label.is-active {
|
color: #409EFF !important;
|
}
|
}
|
|
.drag_black {
|
width: 800px;
|
height: 520px;
|
background: rgba(39, 39, 39, 0.38);
|
position: absolute;
|
top: 80px;
|
left: 500px;
|
border: #00000090 2px solid;
|
overflow-y: auto;
|
}
|
|
.drag_black1 {
|
width: 800px;
|
min-height: 240px;
|
background: rgba(39, 39, 39, 0.90);
|
position: absolute;
|
top: 80px;
|
left: 500px;
|
border: #00000090 2px solid;
|
overflow-y: auto;
|
|
.pop-header {
|
font-weight: 600;
|
font-size: 16px;
|
padding: 10px;
|
background: rgba(0, 0, 0, 0.7);
|
color: rgb(232, 232, 232);
|
}
|
}
|
|
.opt_button {
|
display: inline-block;
|
height: 50px;
|
width: 60px;
|
margin: 10px;
|
border-radius: 5px;
|
color: white;
|
border: 1px solid rgb(212, 212, 212);
|
padding: 5px;
|
cursor: pointer;
|
}
|
|
.opt_button_disabled {
|
display: inline-block;
|
height: 50px;
|
width: 60px;
|
margin: 10px;
|
border-radius: 5px;
|
color: rgb(143, 143, 143);
|
border: 1px solid rgb(212, 212, 212);
|
padding: 5px;
|
background: rgb(196, 196, 196);
|
}
|
|
.opt_button:hover {
|
border: 1px solid rgb(224, 224, 255);
|
box-shadow: 2px 2px 3px rgb(207, 207, 207);
|
}
|
|
.funcBox {
|
position: absolute;
|
top: 100px;
|
padding: 10px;
|
width: 300px;
|
background-color: rgba(0, 0, 0, 0.7);
|
border-radius: 4px;
|
left: 80px;
|
color: #fff;
|
}
|
|
|
.item {
|
display: inline-block;
|
}
|
|
|
#spacing,
|
#width {
|
padding-top: 16px;
|
margin-right: 20px;
|
}
|
|
.lineValue {
|
display: none;
|
}
|
|
#lineColor {
|
height: 25px;
|
margin-left: 20px;
|
}
|
|
.layui-form-label {
|
width: 60px;
|
}
|
|
.layui-input-block {
|
margin-left: 90px;
|
}
|
|
.box-card {
|
color: white;
|
border: 0 !important;
|
overflow: auto;
|
border-radius: 0 !important;
|
background: rgba(30, 44, 69, 0.5);
|
|
/deep/ .el-card__header {
|
background: rgba(0, 166, 226, 0.6) !important;
|
// box-shadow: 0px 0px 4px 0px rgba(14, 22, 32, 0.2);
|
// border-radius: 6px 6px 0px 0px;
|
height: 30px;
|
font-size: 16px;
|
font-weight: 400;
|
border-bottom: 0;
|
padding: 5px;
|
}
|
|
|
.rzxfBtn {
|
background: rgba(61, 190, 253, 0.1) !important;
|
border: 1px solid #00A6E2 !important;
|
color: white
|
}
|
|
.rzxfBtn:hover {
|
background: #3DBEFD !important;
|
color: white
|
}
|
}
|
|
.input-item {
|
margin: 0px;
|
color: white;
|
|
/deep/ .el-input__inner {
|
-webkit-appearance: none;
|
background-color: #1b1b1b;
|
background-image: none;
|
border-radius: 0px;
|
border: 0;
|
box-sizing: border-box;
|
color: #ffffff;
|
display: inline-block;
|
font-size: inherit;
|
height: 30px;
|
line-height: 30px;
|
outline: 0;
|
padding: 0 15px;
|
transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
|
width: 100%;
|
}
|
|
/deep/ .el-form-item__label {
|
color: #ffffff;
|
}
|
|
/deep/ .el-range-input {
|
color: #ffffff;
|
background: transparent;
|
}
|
}
|
|
.buttongroups {
|
margin: 8px auto;
|
text-align: center;
|
display: flex;
|
flex-direction: column;
|
align-items: center;
|
gap: 6px;
|
|
/deep/ .el-button {
|
width: 140px;
|
background: transparent;
|
border: none;
|
color: #ffffff;
|
border-radius: 0px;
|
|
width: 199px;
|
height: 26px;
|
background: url("../../../assets/img/small_btn_back.png") no-repeat;
|
background-size: 100% 100%;
|
|
font-size: 11px;
|
font-family: Microsoft YaHei;
|
font-weight: 400;
|
color: #E0E5FA;
|
text-shadow: 0px 1px 4px rgba(5, 28, 55, 0.42);
|
display: flex;
|
flex-direction: row;
|
justify-content: center;
|
align-items: center;
|
margin: 0px;
|
}
|
}
|
|
.bimBtn {
|
width: auto !important;
|
|
&:hover {
|
background: rgba(24, 164, 240, 0.8);
|
color: #fff;
|
border: 1px solid #7596fa;
|
}
|
}
|
|
.inputStyle {
|
width: 80%;
|
|
/deep/ .el-input__inner {
|
color: #fff;
|
background-color: transparent !important;
|
}
|
}
|
|
.selectStyle {
|
/deep/ .el-input__inner {
|
color: #fff;
|
background-color: transparent !important;
|
}
|
}
|
|
.floor_button {
|
height: 24px;
|
text-align: center;
|
color: aliceblue;
|
background-color: #666;
|
padding-top: 10px;
|
vertical-align: middle;
|
margin: 1px;
|
}
|
|
.floor_button:hover {
|
cursor: pointer;
|
opacity: 0.8;
|
}
|
</style>
|