Merge branch 'dev_xd' of http://62.234.3.186:3000/jiangyq/YZProjectCloud into dev_xd
commit
5eba348c3d
|
@ -1 +1 @@
|
||||||
java -Dfile.encoding=utf-8 -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -jar ruoyi-modules/ruoyi-job/target/yanzhu-modules-job.jar
|
java -Dfile.encoding=utf-8 -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -jar yanzhu-modules/yanzhu-job/target/yanzhu-modules-job.jar
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import bimTools from "./bimTools";
|
||||||
|
|
||||||
const options = {
|
const options = {
|
||||||
taskMapping: {
|
taskMapping: {
|
||||||
progress: "percent",
|
progress: "percent",
|
||||||
|
@ -192,6 +194,7 @@ function initEngine(that) {
|
||||||
showAxes: true, // 是否显示XYZ轴线
|
showAxes: true, // 是否显示XYZ轴线
|
||||||
};
|
};
|
||||||
bim4DApi.Plugin.initNavCube(mapOptions);
|
bim4DApi.Plugin.initNavCube(mapOptions);
|
||||||
|
bimTools.initBimGis(that, bim4DApi)
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -231,6 +234,7 @@ function initLoadModel(that) {
|
||||||
item.gis = JSON.parse(item.gisJson);
|
item.gis = JSON.parse(item.gisJson);
|
||||||
addModel(that, item.lightweightName);
|
addModel(that, item.lightweightName);
|
||||||
});
|
});
|
||||||
|
bimTools.initLoadModel(that, bim4DApi)
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -255,7 +259,14 @@ function addModel(that, modelId, cb) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
that.modelLoaded = true;
|
that.modelLoaded = true;
|
||||||
|
let fnInit = () => {
|
||||||
|
if (that.planLoaded) {
|
||||||
that.initPlay();
|
that.initPlay();
|
||||||
|
} else {
|
||||||
|
setTimeout(fnInit, 100);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
fnInit();
|
||||||
}, 1000);
|
}, 1000);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -279,6 +290,7 @@ function showBim(that, index) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
console.log(index, showFeatureIds, currFeatureIds)
|
||||||
if (showFeatureIds.length > 0) {
|
if (showFeatureIds.length > 0) {
|
||||||
setFeatueVisible(showFeatureIds, true);
|
setFeatueVisible(showFeatureIds, true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,94 @@
|
||||||
|
function initBimCfg(that) {
|
||||||
|
if (!that.bimCfg) {
|
||||||
|
that.bimCfg = {}
|
||||||
|
}
|
||||||
|
if (!that.hideParts) {
|
||||||
|
that.hideParts = [];
|
||||||
|
}
|
||||||
|
let config = that.$tryToJson(that.selProject?.bimConfig, {})
|
||||||
|
that.bimCfg.background = config.background || ''
|
||||||
|
that.bimCfg.showGis = config.showGis || false
|
||||||
|
that.bimCfg.clientApi = config.clientApi || false
|
||||||
|
}
|
||||||
|
|
||||||
|
function initBimGis(that, api) {
|
||||||
|
if (that.bimCfg.showGis) {
|
||||||
|
api.Public.setGisState(true);
|
||||||
|
api.Public.setTerrainState(false, "http://113.201.2.107:9304/layer.json", false)
|
||||||
|
api.Public.setGisState(true);
|
||||||
|
} else if (that.bimCfg.background) {
|
||||||
|
api.Public.setGisState(false, that.bimCfg.background);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function initLoadModel(that, api) {
|
||||||
|
let fnInit = () => {
|
||||||
|
if (api.m_model.size > 0) {
|
||||||
|
setTimeout(() => {
|
||||||
|
initModelPosition(that, api)
|
||||||
|
}, 1000)
|
||||||
|
} else {
|
||||||
|
setTimeout(fnInit, 1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fnInit();
|
||||||
|
}
|
||||||
|
|
||||||
|
function initModelPosition(that, api) {
|
||||||
|
that.models.forEach(modelInfo => {
|
||||||
|
if (modelInfo) {
|
||||||
|
let modelId = modelInfo.lightweightName
|
||||||
|
let cfg = that.$tryToJson(modelInfo.bimConfig, {});
|
||||||
|
let x = cfg?.x || 0;
|
||||||
|
let y = cfg?.y || 0;
|
||||||
|
let z = cfg?.z || 0;
|
||||||
|
let rotateZ = cfg?.rotateZ || 0;
|
||||||
|
if (x * 1 + y * 1 + z * 1 != 0) {
|
||||||
|
console.log("移动模型", modelId, x, y, z)
|
||||||
|
api.Model.moveToPosition([x, y, z], 0, modelId)
|
||||||
|
}
|
||||||
|
if (rotateZ * 1 != 0) {
|
||||||
|
api.Model.rotate(0, 0, rotateZ, modelId)
|
||||||
|
}
|
||||||
|
if (cfg && cfg.hideParts) {
|
||||||
|
cfg.hideParts.forEach(it => {
|
||||||
|
that.hideParts.push(it);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
setTimeout(() => {
|
||||||
|
api.Model.location(modelId);
|
||||||
|
setTimeout(() => {
|
||||||
|
that.resetScene();
|
||||||
|
}, 1000);
|
||||||
|
}, 1000);
|
||||||
|
}
|
||||||
|
initHideParts(that, api)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function initHideParts(that, api) {
|
||||||
|
let hideCnt = 0;
|
||||||
|
let hideFn = () => {
|
||||||
|
hideCnt++;
|
||||||
|
if (hideCnt > 30) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
setTimeout(() => {
|
||||||
|
let featureIds = (that.hideParts || []).map(it => it.featureId);
|
||||||
|
if (featureIds.length > 0) {
|
||||||
|
api.Feature.setVisible(featureIds.join("#"), false);
|
||||||
|
}
|
||||||
|
hideFn();
|
||||||
|
}, 100)
|
||||||
|
};
|
||||||
|
hideFn();
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
initBimCfg,
|
||||||
|
initBimGis,
|
||||||
|
initLoadModel,
|
||||||
|
initModelPosition,
|
||||||
|
initHideParts
|
||||||
|
}
|
|
@ -73,6 +73,7 @@ import debounce from "lodash.debounce";
|
||||||
import ganttElastic from "gantt-elastic";
|
import ganttElastic from "gantt-elastic";
|
||||||
import ganttHeader from "gantt-elastic-header";
|
import ganttHeader from "gantt-elastic-header";
|
||||||
import bim4DTools from "./bim/bim4DTools";
|
import bim4DTools from "./bim/bim4DTools";
|
||||||
|
import bimTools from "./bim/bimTools";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
|
@ -98,6 +99,7 @@ export default {
|
||||||
playTime: 500,
|
playTime: 500,
|
||||||
showPlan: true,
|
showPlan: true,
|
||||||
lastFeatureIds: [],
|
lastFeatureIds: [],
|
||||||
|
planLoaded:false,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
beforeDestroy() {
|
beforeDestroy() {
|
||||||
|
@ -166,6 +168,7 @@ export default {
|
||||||
},
|
},
|
||||||
initEngine() {
|
initEngine() {
|
||||||
this.elId++;
|
this.elId++;
|
||||||
|
bimTools.initBimCfg(this);
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
bim4DTools.initEngine(this);
|
bim4DTools.initEngine(this);
|
||||||
}, 10);
|
}, 10);
|
||||||
|
@ -174,11 +177,13 @@ export default {
|
||||||
this.showPlan = !this.showPlan;
|
this.showPlan = !this.showPlan;
|
||||||
},
|
},
|
||||||
initPlay() {
|
initPlay() {
|
||||||
|
|
||||||
if (!bim4DTools.getFirstFeatureId(this)) {
|
if (!bim4DTools.getFirstFeatureId(this)) {
|
||||||
this.$message.error("未配置计划进度,无法播放!");
|
this.$message.error("未配置计划进度,无法播放!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let playIndex = bim4DTools.getCurrentTaskIndex(this);
|
let playIndex = bim4DTools.getCurrentTaskIndex(this);
|
||||||
|
console.log("--初始化播放---",playIndex)
|
||||||
if (playIndex > 0) {
|
if (playIndex > 0) {
|
||||||
bim4DTools.preparePlay(this);
|
bim4DTools.preparePlay(this);
|
||||||
this.doPlayPan(playIndex);
|
this.doPlayPan(playIndex);
|
||||||
|
@ -211,6 +216,7 @@ export default {
|
||||||
return o;
|
return o;
|
||||||
});
|
});
|
||||||
this.hasLoad = true;
|
this.hasLoad = true;
|
||||||
|
this.planLoaded=true;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -12,19 +12,10 @@
|
||||||
模型结构树
|
模型结构树
|
||||||
</div>
|
</div>
|
||||||
<div class="model-tree scroll">
|
<div class="model-tree scroll">
|
||||||
<el-tree
|
<el-tree :key="treeKey" ref="tree" :default-expanded-keys="treeExpendedKeys" :props="{
|
||||||
:key="treeKey"
|
|
||||||
ref="tree"
|
|
||||||
:default-expanded-keys="treeExpendedKeys"
|
|
||||||
:props="{
|
|
||||||
children: 'children',
|
children: 'children',
|
||||||
label: 'title',
|
label: 'title',
|
||||||
}"
|
}" node-key="key" @check="onCheckTree" :load="loadNode" lazy show-checkbox></el-tree>
|
||||||
node-key="key"
|
|
||||||
@check="onCheckTree"
|
|
||||||
:load="loadNode"
|
|
||||||
lazy
|
|
||||||
show-checkbox></el-tree>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -119,7 +110,8 @@
|
||||||
<div class="hide-item-state">{{ item.show ? "隐藏" : "显示" }}</div>
|
<div class="hide-item-state">{{ item.show ? "隐藏" : "显示" }}</div>
|
||||||
<el-switch v-model="item.show" @change="changeSwitch(item)"></el-switch>
|
<el-switch v-model="item.show" @change="changeSwitch(item)"></el-switch>
|
||||||
<div class="hide-item-id">{{ item.id }}</div>
|
<div class="hide-item-id">{{ item.id }}</div>
|
||||||
<div class="hide-item-delete"><i class="el-icon-delete command" @click="deleteFeature(item)" /></div>
|
<div class="hide-item-delete"><i class="el-icon-delete command" @click="deleteFeature(item)" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -227,6 +219,8 @@ import debounce from "lodash.debounce";
|
||||||
import { MergeArray, DelArray } from "@/utils/tools";
|
import { MergeArray, DelArray } from "@/utils/tools";
|
||||||
import briefingTools from "./bim/briefingTools";
|
import briefingTools from "./bim/briefingTools";
|
||||||
import SvgIcon from "@/components/SvgIcon.vue";
|
import SvgIcon from "@/components/SvgIcon.vue";
|
||||||
|
import BimTools from './bim/bimTools'
|
||||||
|
import bimTools from "./bim/bimTools";
|
||||||
export default {
|
export default {
|
||||||
components: { SvgIcon },
|
components: { SvgIcon },
|
||||||
name: "BimBriefing",
|
name: "BimBriefing",
|
||||||
|
@ -513,6 +507,7 @@ export default {
|
||||||
this.viewPoint = [];
|
this.viewPoint = [];
|
||||||
this.info = [];
|
this.info = [];
|
||||||
this.attributeInformation = "";
|
this.attributeInformation = "";
|
||||||
|
bimTools.initBimCfg(this);
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
this.loadEngine();
|
this.loadEngine();
|
||||||
}, 10);
|
}, 10);
|
||||||
|
@ -566,6 +561,7 @@ export default {
|
||||||
showAxes: true, // 是否显示XYZ轴线
|
showAxes: true, // 是否显示XYZ轴线
|
||||||
};
|
};
|
||||||
bimBriefingApi.Plugin.initNavCube(mapOptions);
|
bimBriefingApi.Plugin.initNavCube(mapOptions);
|
||||||
|
bimTools.initBimGis(this, bimBriefingApi)
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
@ -608,6 +604,7 @@ export default {
|
||||||
}, 3000);
|
}, 3000);
|
||||||
});
|
});
|
||||||
this.treeKey++;
|
this.treeKey++;
|
||||||
|
bimTools.initLoadModel(this, bimBriefingApi)
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
this.init();
|
this.init();
|
||||||
|
@ -715,30 +712,37 @@ export default {
|
||||||
.bim-briefing {
|
.bim-briefing {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
#bimBriefing {
|
#bimBriefing {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
||||||
#bimBriefingContainer {
|
#bimBriefingContainer {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.div-left {
|
.div-left {
|
||||||
top: 10vh;
|
top: 10vh;
|
||||||
left: 5%;
|
left: 5%;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
height: 70vh;
|
height: 70vh;
|
||||||
width: 14%;
|
width: 14%;
|
||||||
|
|
||||||
&.isHide {
|
&.isHide {
|
||||||
left: 0%;
|
left: 0%;
|
||||||
wdith: 0%;
|
wdith: 0%;
|
||||||
|
|
||||||
#arrowLeft {
|
#arrowLeft {
|
||||||
left: 0px !important;
|
left: 0px !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#arrowLeft {
|
#arrowLeft {
|
||||||
top: calc(50% - 50px);
|
top: calc(50% - 50px);
|
||||||
right: -21px;
|
right: -21px;
|
||||||
left: unset !important;
|
left: unset !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.div-row {
|
.div-row {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
@ -750,45 +754,56 @@ export default {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
height: 70vh;
|
height: 70vh;
|
||||||
width: 14%;
|
width: 14%;
|
||||||
|
|
||||||
&.isHide {
|
&.isHide {
|
||||||
right: 0%;
|
right: 0%;
|
||||||
width: 0%;
|
width: 0%;
|
||||||
}
|
}
|
||||||
|
|
||||||
#arrowRight {
|
#arrowRight {
|
||||||
top: calc(50% - 50px);
|
top: calc(50% - 50px);
|
||||||
left: -21px;
|
left: -21px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.div-row {
|
.div-row {
|
||||||
&.r33 {
|
&.r33 {
|
||||||
height: 180px;
|
height: 180px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.r66 {
|
&.r66 {
|
||||||
height: calc(100% - 180px);
|
height: calc(100% - 180px);
|
||||||
}
|
}
|
||||||
|
|
||||||
&.r100 {
|
&.r100 {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.clear-all-btn {
|
.clear-all-btn {
|
||||||
margin: 10px;
|
margin: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.hide-list {
|
.hide-list {
|
||||||
height: calc(100% - 60px);
|
height: calc(100% - 60px);
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
padding: 0px 10px;
|
padding: 0px 10px;
|
||||||
|
|
||||||
.hide-item {
|
.hide-item {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
display: flex;
|
display: flex;
|
||||||
margin-bottom: 8px;
|
margin-bottom: 8px;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
.hide-item-state {
|
.hide-item-state {
|
||||||
color: #e4e7edcc;
|
color: #e4e7edcc;
|
||||||
}
|
}
|
||||||
|
|
||||||
.hide-item-id {
|
.hide-item-id {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
margin: 0px 10px;
|
margin: 0px 10px;
|
||||||
color: #22d3f4;
|
color: #22d3f4;
|
||||||
}
|
}
|
||||||
|
|
||||||
.hide-item-delete {
|
.hide-item-delete {
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
color: #48f800;
|
color: #48f800;
|
||||||
|
@ -799,14 +814,17 @@ export default {
|
||||||
|
|
||||||
.data-content {
|
.data-content {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
||||||
.div-row {
|
.div-row {
|
||||||
border: solid 1px #75fbfdaa;
|
border: solid 1px #75fbfdaa;
|
||||||
background-color: #06445b81;
|
background-color: #06445b81;
|
||||||
|
|
||||||
.row-title {
|
.row-title {
|
||||||
background: linear-gradient(0deg, #105696, #c0dafb00, #1765ae);
|
background: linear-gradient(0deg, #105696, #c0dafb00, #1765ae);
|
||||||
padding-left: 10px;
|
padding-left: 10px;
|
||||||
height: 36px;
|
height: 36px;
|
||||||
line-height: 36px;
|
line-height: 36px;
|
||||||
|
|
||||||
.svg-icon {
|
.svg-icon {
|
||||||
fill: #75fbfd;
|
fill: #75fbfd;
|
||||||
}
|
}
|
||||||
|
@ -822,23 +840,28 @@ export default {
|
||||||
display: flex;
|
display: flex;
|
||||||
background: #00000080;
|
background: #00000080;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
|
|
||||||
.tool-item {
|
.tool-item {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-flow: column;
|
flex-flow: column;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
||||||
&.is-selected {
|
&.is-selected {
|
||||||
.icon {
|
.icon {
|
||||||
background: #097fca94;
|
background: #097fca94;
|
||||||
|
|
||||||
.svg-icon {
|
.svg-icon {
|
||||||
fill: #75fbfd;
|
fill: #75fbfd;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.sp-text {
|
.sp-text {
|
||||||
color: #75fbfd;
|
color: #75fbfd;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.icon {
|
.icon {
|
||||||
width: 30px;
|
width: 30px;
|
||||||
height: 30px;
|
height: 30px;
|
||||||
|
@ -847,11 +870,13 @@ export default {
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
border-radius: 15px;
|
border-radius: 15px;
|
||||||
|
|
||||||
.svg-icon {
|
.svg-icon {
|
||||||
width: 20px;
|
width: 20px;
|
||||||
height: 20px;
|
height: 20px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.sp-text {
|
.sp-text {
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
|
@ -862,21 +887,26 @@ export default {
|
||||||
.model-tree {
|
.model-tree {
|
||||||
height: calc(100% - 36px);
|
height: calc(100% - 36px);
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
|
|
||||||
.el-tree {
|
.el-tree {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
color: #eee;
|
color: #eee;
|
||||||
|
|
||||||
.el-checkbox {
|
.el-checkbox {
|
||||||
color: #45fdfe;
|
color: #45fdfe;
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-tree-node {
|
.el-tree-node {
|
||||||
&:focus {
|
&:focus {
|
||||||
&>.el-tree-node__content {
|
&>.el-tree-node__content {
|
||||||
background: #3489d966;
|
background: #3489d966;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background: #3489d966;
|
background: #3489d966;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-tree-node__content:hover {
|
.el-tree-node__content:hover {
|
||||||
background: #3489d966;
|
background: #3489d966;
|
||||||
}
|
}
|
||||||
|
@ -888,19 +918,24 @@ export default {
|
||||||
height: calc(100% - 46px);
|
height: calc(100% - 46px);
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
padding-bottom: 10px;
|
padding-bottom: 10px;
|
||||||
|
|
||||||
.model-property-nav {
|
.model-property-nav {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
margin: 8px;
|
margin: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.model-property-list {
|
.model-property-list {
|
||||||
padding: 0px 10px;
|
padding: 0px 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.info-list {
|
.info-list {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.model-progress {
|
.model-progress {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
|
|
||||||
.el-progress-bar {
|
.el-progress-bar {
|
||||||
.el-progress-bar__innerText {
|
.el-progress-bar__innerText {
|
||||||
color: #fff !important;
|
color: #fff !important;
|
||||||
|
@ -915,17 +950,22 @@ export default {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
color: #edffff85;
|
color: #edffff85;
|
||||||
}
|
}
|
||||||
|
|
||||||
.group-info {
|
.group-info {
|
||||||
padding: 4px 0px;
|
padding: 4px 0px;
|
||||||
|
|
||||||
.svg-icon {
|
.svg-icon {
|
||||||
fill: #45fdfe;
|
fill: #45fdfe;
|
||||||
}
|
}
|
||||||
|
|
||||||
span {
|
span {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.my-table {
|
.my-table {
|
||||||
border-collapse: collapse;
|
border-collapse: collapse;
|
||||||
|
|
||||||
td,
|
td,
|
||||||
th {
|
th {
|
||||||
border: solid 1px #0e0f0f88;
|
border: solid 1px #0e0f0f88;
|
||||||
|
@ -934,19 +974,23 @@ export default {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
th {
|
th {
|
||||||
color: #22d3f4;
|
color: #22d3f4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (min-width: 2561px) {
|
@media (min-width: 2561px) {
|
||||||
.data-content {
|
.data-content {
|
||||||
.div-row {
|
.div-row {
|
||||||
&.r33 {
|
&.r33 {
|
||||||
height: 210px;
|
height: 210px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.r66 {
|
&.r66 {
|
||||||
height: calc(100% - 210px);
|
height: calc(100% - 210px);
|
||||||
}
|
}
|
||||||
|
|
||||||
.row-title {
|
.row-title {
|
||||||
height: 48px;
|
height: 48px;
|
||||||
line-height: 48px;
|
line-height: 48px;
|
||||||
|
@ -954,36 +998,45 @@ export default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.div-right {
|
.div-right {
|
||||||
.clear-all-btn {
|
.clear-all-btn {
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
margin: 12px;
|
margin: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.hide-list {
|
.hide-list {
|
||||||
height: calc(100% - 80px);
|
height: calc(100% - 80px);
|
||||||
|
|
||||||
.hide-item {
|
.hide-item {
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
margin-bottom: 12px;
|
margin-bottom: 12px;
|
||||||
|
|
||||||
.hide-item-delete {
|
.hide-item-delete {
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.div-tools {
|
.div-tools {
|
||||||
margin-left: -300px;
|
margin-left: -300px;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
|
|
||||||
.tool-item {
|
.tool-item {
|
||||||
padding: 10px 20px;
|
padding: 10px 20px;
|
||||||
|
|
||||||
.icon {
|
.icon {
|
||||||
width: 60px;
|
width: 60px;
|
||||||
height: 60px;
|
height: 60px;
|
||||||
border-radius: 30px;
|
border-radius: 30px;
|
||||||
|
|
||||||
.svg-icon {
|
.svg-icon {
|
||||||
width: 40px;
|
width: 40px;
|
||||||
height: 40px;
|
height: 40px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.sp-text {
|
.sp-text {
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
|
@ -994,18 +1047,23 @@ export default {
|
||||||
.model-tree {
|
.model-tree {
|
||||||
.el-tree {
|
.el-tree {
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
|
|
||||||
.el-tree-node__content {
|
.el-tree-node__content {
|
||||||
height: 36px;
|
height: 36px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-tree-node__expand-icon {
|
.el-tree-node__expand-icon {
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-checkbox {
|
.el-checkbox {
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-tree-node__label {
|
.el-tree-node__label {
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-tree__empty-text {
|
.el-tree__empty-text {
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
}
|
}
|
||||||
|
@ -1017,6 +1075,7 @@ export default {
|
||||||
width: 30px;
|
width: 30px;
|
||||||
height: 30px;
|
height: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
span {
|
span {
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
@ -1025,6 +1084,7 @@ export default {
|
||||||
}
|
}
|
||||||
|
|
||||||
.my-table {
|
.my-table {
|
||||||
|
|
||||||
td,
|
td,
|
||||||
th {
|
th {
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -12,20 +12,11 @@
|
||||||
模型结构树
|
模型结构树
|
||||||
</div>
|
</div>
|
||||||
<div class="model-tree scroll">
|
<div class="model-tree scroll">
|
||||||
<el-tree
|
<el-tree :key="treeKey" ref="tree" :default-expanded-keys="treeExpendedKeys" :props="{
|
||||||
:key="treeKey"
|
|
||||||
ref="tree"
|
|
||||||
:default-expanded-keys="treeExpendedKeys"
|
|
||||||
:props="{
|
|
||||||
children: 'children',
|
children: 'children',
|
||||||
label: 'title',
|
label: 'title',
|
||||||
isLeaf: 'leaf',
|
isLeaf: 'leaf',
|
||||||
}"
|
}" node-key="key" @check="onCheckTree" :load="loadNode" lazy show-checkbox></el-tree>
|
||||||
node-key="key"
|
|
||||||
@check="onCheckTree"
|
|
||||||
:load="loadNode"
|
|
||||||
lazy
|
|
||||||
show-checkbox></el-tree>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -43,7 +34,8 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="roaming-list scroll">
|
<div class="roaming-list scroll">
|
||||||
<div v-if="roamingLoading" class="loading">暂无数据</div>
|
<div v-if="roamingLoading" class="loading">暂无数据</div>
|
||||||
<div v-for="(item, index) in roamingList" :key="index" :class="{ 'is-selected': item.play != 0 }" class="roaming-item">
|
<div v-for="(item, index) in roamingList" :key="index" :class="{ 'is-selected': item.play != 0 }"
|
||||||
|
class="roaming-item">
|
||||||
<el-tooltip :content="item.name">
|
<el-tooltip :content="item.name">
|
||||||
<span class="roam-text">{{ item.name }}</span>
|
<span class="roam-text">{{ item.name }}</span>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
|
@ -72,7 +64,9 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="view-point-list scroll">
|
<div class="view-point-list scroll">
|
||||||
<div v-if="viewPointLoading" class="loading">暂无数据</div>
|
<div v-if="viewPointLoading" class="loading">暂无数据</div>
|
||||||
<div v-for="(item, index) in viewpointList" :key="index" :class="{ 'is-selected': selectedViewpoint == item }" class="viewpoint-item" @click="ZoomViewpoint(item)">
|
<div v-for="(item, index) in viewpointList" :key="index"
|
||||||
|
:class="{ 'is-selected': selectedViewpoint == item }" class="viewpoint-item"
|
||||||
|
@click="ZoomViewpoint(item)">
|
||||||
<div class="viewpoint-content">
|
<div class="viewpoint-content">
|
||||||
<el-image :src="item.imgPath" alt class="viewpoint-image" fit="scale-down" />
|
<el-image :src="item.imgPath" alt class="viewpoint-image" fit="scale-down" />
|
||||||
<el-tooltip :content="item.remark" v-if="item.remark">
|
<el-tooltip :content="item.remark" v-if="item.remark">
|
||||||
|
@ -102,6 +96,7 @@
|
||||||
<script>
|
<script>
|
||||||
import debounce from "lodash.debounce";
|
import debounce from "lodash.debounce";
|
||||||
import { MergeArray, DelArray } from "@/utils/tools";
|
import { MergeArray, DelArray } from "@/utils/tools";
|
||||||
|
import bimTools from './bim/bimTools'
|
||||||
export default {
|
export default {
|
||||||
name: "BIMRoaming",
|
name: "BIMRoaming",
|
||||||
data() {
|
data() {
|
||||||
|
@ -377,8 +372,12 @@ export default {
|
||||||
initEngine() {
|
initEngine() {
|
||||||
this.elId++;
|
this.elId++;
|
||||||
this.activeMenu = 0;
|
this.activeMenu = 0;
|
||||||
|
bimTools.initBimCfg(this);
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
|
if (this.bimCfg.clientApi) {
|
||||||
|
} else {
|
||||||
this.loadEngine();
|
this.loadEngine();
|
||||||
|
}
|
||||||
}, 10);
|
}, 10);
|
||||||
},
|
},
|
||||||
loadEngine() {
|
loadEngine() {
|
||||||
|
@ -430,6 +429,7 @@ export default {
|
||||||
showAxes: true, // 是否显示XYZ轴线
|
showAxes: true, // 是否显示XYZ轴线
|
||||||
};
|
};
|
||||||
bimRoadmApi.Plugin.initNavCube(mapOptions);
|
bimRoadmApi.Plugin.initNavCube(mapOptions);
|
||||||
|
bimTools.initBimGis(this, bimRoadmApi)
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
@ -471,6 +471,9 @@ export default {
|
||||||
}, 3000);
|
}, 3000);
|
||||||
});
|
});
|
||||||
this.treeKey++;
|
this.treeKey++;
|
||||||
|
|
||||||
|
bimTools.initLoadModel(this, bimRoadmApi)
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
this.init();
|
this.init();
|
||||||
|
@ -621,8 +624,10 @@ export default {
|
||||||
.bim-roaming {
|
.bim-roaming {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
#bimRoaming {
|
#bimRoaming {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
||||||
#bimRoamingContainer {
|
#bimRoamingContainer {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
@ -634,40 +639,49 @@ export default {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
height: 70vh;
|
height: 70vh;
|
||||||
width: 14%;
|
width: 14%;
|
||||||
|
|
||||||
&.isHide {
|
&.isHide {
|
||||||
left: 0%;
|
left: 0%;
|
||||||
wdith: 0%;
|
wdith: 0%;
|
||||||
|
|
||||||
#arrowLeft {
|
#arrowLeft {
|
||||||
left: 0px !important;
|
left: 0px !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#arrowLeft {
|
#arrowLeft {
|
||||||
top: calc(50% - 50px);
|
top: calc(50% - 50px);
|
||||||
right: -21px;
|
right: -21px;
|
||||||
left: unset !important;
|
left: unset !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.div-row {
|
.div-row {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.div-right {
|
.div-right {
|
||||||
top: 10vh;
|
top: 10vh;
|
||||||
right: 5%;
|
right: 5%;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
height: 70vh;
|
height: 70vh;
|
||||||
width: 14%;
|
width: 14%;
|
||||||
|
|
||||||
&.isHide {
|
&.isHide {
|
||||||
right: 0%;
|
right: 0%;
|
||||||
width: 0%;
|
width: 0%;
|
||||||
}
|
}
|
||||||
|
|
||||||
#arrowRight {
|
#arrowRight {
|
||||||
top: calc(50% - 50px);
|
top: calc(50% - 50px);
|
||||||
left: -21px;
|
left: -21px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.div-row {
|
.div-row {
|
||||||
&.r33 {
|
&.r33 {
|
||||||
height: 33.33%;
|
height: 33.33%;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.r66 {
|
&.r66 {
|
||||||
height: 66.66%;
|
height: 66.66%;
|
||||||
}
|
}
|
||||||
|
@ -676,14 +690,17 @@ export default {
|
||||||
|
|
||||||
.data-content {
|
.data-content {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
||||||
.div-row {
|
.div-row {
|
||||||
border: solid 1px #75fbfdaa;
|
border: solid 1px #75fbfdaa;
|
||||||
background-color: #06445b81;
|
background-color: #06445b81;
|
||||||
|
|
||||||
.row-title {
|
.row-title {
|
||||||
background: linear-gradient(0deg, #105696, #c0dafb00, #1765ae);
|
background: linear-gradient(0deg, #105696, #c0dafb00, #1765ae);
|
||||||
padding-left: 10px;
|
padding-left: 10px;
|
||||||
height: 36px;
|
height: 36px;
|
||||||
line-height: 36px;
|
line-height: 36px;
|
||||||
|
|
||||||
.svg-icon {
|
.svg-icon {
|
||||||
fill: #75fbfd;
|
fill: #75fbfd;
|
||||||
}
|
}
|
||||||
|
@ -699,23 +716,28 @@ export default {
|
||||||
display: flex;
|
display: flex;
|
||||||
background: #00000080;
|
background: #00000080;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
|
|
||||||
.tool-item {
|
.tool-item {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-flow: column;
|
flex-flow: column;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
||||||
&.is-active {
|
&.is-active {
|
||||||
.icon {
|
.icon {
|
||||||
background: #097fca94;
|
background: #097fca94;
|
||||||
|
|
||||||
.svg-icon {
|
.svg-icon {
|
||||||
fill: #75fbfd;
|
fill: #75fbfd;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.sp-text {
|
.sp-text {
|
||||||
color: #75fbfd;
|
color: #75fbfd;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.icon {
|
.icon {
|
||||||
width: 30px;
|
width: 30px;
|
||||||
height: 30px;
|
height: 30px;
|
||||||
|
@ -724,61 +746,74 @@ export default {
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
border-radius: 15px;
|
border-radius: 15px;
|
||||||
|
|
||||||
.svg-icon {
|
.svg-icon {
|
||||||
width: 20px;
|
width: 20px;
|
||||||
height: 20px;
|
height: 20px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.sp-text {
|
.sp-text {
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.model-tree {
|
.model-tree {
|
||||||
height: calc(100% - 36px);
|
height: calc(100% - 36px);
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
|
|
||||||
.el-tree {
|
.el-tree {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
color: #eee;
|
color: #eee;
|
||||||
|
|
||||||
.el-checkbox {
|
.el-checkbox {
|
||||||
color: #75fbfd;
|
color: #75fbfd;
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-tree-node {
|
.el-tree-node {
|
||||||
&:focus {
|
&:focus {
|
||||||
&>.el-tree-node__content {
|
&>.el-tree-node__content {
|
||||||
background: #3489d966;
|
background: #3489d966;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background: #3489d966;
|
background: #3489d966;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-tree-node__content:hover {
|
.el-tree-node__content:hover {
|
||||||
background: #3489d966;
|
background: #3489d966;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.view-point-list {
|
.view-point-list {
|
||||||
height: calc(100% - 36px);
|
height: calc(100% - 36px);
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
|
|
||||||
.viewpoint-item {
|
.viewpoint-item {
|
||||||
margin: 10px 10px 0px;
|
margin: 10px 10px 0px;
|
||||||
|
|
||||||
&.is-selected {
|
&.is-selected {
|
||||||
.viewpoint-content {
|
.viewpoint-content {
|
||||||
background: #3489d966;
|
background: #3489d966;
|
||||||
border: solid 1px #75fbfd;
|
border: solid 1px #75fbfd;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.viewpoint-content {
|
.viewpoint-content {
|
||||||
position: relative;
|
position: relative;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
background: #ffffff2e;
|
background: #ffffff2e;
|
||||||
|
|
||||||
.el-image {
|
.el-image {
|
||||||
height: 120px;
|
height: 120px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.viewpoint-title {
|
.viewpoint-title {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 0px;
|
bottom: 0px;
|
||||||
|
@ -796,9 +831,11 @@ export default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.roaming-list {
|
.roaming-list {
|
||||||
height: calc(100% - 36px);
|
height: calc(100% - 36px);
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
|
|
||||||
.roaming-item {
|
.roaming-item {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-flow: row;
|
flex-flow: row;
|
||||||
|
@ -809,9 +846,11 @@ export default {
|
||||||
padding: 0px 10px;
|
padding: 0px 10px;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
&.is-selected {
|
&.is-selected {
|
||||||
background: #00aaff;
|
background: #00aaff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.roam-text {
|
.roam-text {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
|
@ -819,10 +858,12 @@ export default {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
}
|
}
|
||||||
|
|
||||||
.roam-tool {
|
.roam-tool {
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
.svg-icon {
|
.svg-icon {
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
fill: #75fbfd;
|
fill: #75fbfd;
|
||||||
|
@ -830,6 +871,7 @@ export default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.loading {
|
.loading {
|
||||||
height: 50px;
|
height: 50px;
|
||||||
margin: 10px;
|
margin: 10px;
|
||||||
|
@ -838,12 +880,13 @@ export default {
|
||||||
color: #edffff85;
|
color: #edffff85;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 1920px) {
|
@media (max-width: 1920px) {}
|
||||||
}
|
|
||||||
@media (min-width: 2561px) {
|
@media (min-width: 2561px) {
|
||||||
.data-content {
|
.data-content {
|
||||||
.div-row {
|
.div-row {
|
||||||
min-height: 420px;
|
min-height: 420px;
|
||||||
|
|
||||||
.row-title {
|
.row-title {
|
||||||
height: 48px;
|
height: 48px;
|
||||||
line-height: 48px;
|
line-height: 48px;
|
||||||
|
@ -851,20 +894,25 @@ export default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.div-tools {
|
.div-tools {
|
||||||
margin-left: -68px;
|
margin-left: -68px;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
|
|
||||||
.tool-item {
|
.tool-item {
|
||||||
padding: 10px 20px;
|
padding: 10px 20px;
|
||||||
|
|
||||||
.icon {
|
.icon {
|
||||||
width: 60px;
|
width: 60px;
|
||||||
height: 60px;
|
height: 60px;
|
||||||
border-radius: 30px;
|
border-radius: 30px;
|
||||||
|
|
||||||
.svg-icon {
|
.svg-icon {
|
||||||
width: 40px;
|
width: 40px;
|
||||||
height: 40px;
|
height: 40px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.sp-text {
|
.sp-text {
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
|
@ -875,23 +923,29 @@ export default {
|
||||||
.model-tree {
|
.model-tree {
|
||||||
.el-tree {
|
.el-tree {
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
|
|
||||||
.el-tree-node__content {
|
.el-tree-node__content {
|
||||||
height: 36px;
|
height: 36px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-tree-node__expand-icon {
|
.el-tree-node__expand-icon {
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-checkbox {
|
.el-checkbox {
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-tree-node__label {
|
.el-tree-node__label {
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-tree__empty-text {
|
.el-tree__empty-text {
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.view-point-list {
|
.view-point-list {
|
||||||
height: calc(100% - 48px);
|
height: calc(100% - 48px);
|
||||||
|
|
||||||
|
@ -900,10 +954,12 @@ export default {
|
||||||
|
|
||||||
.viewpoint-content {
|
.viewpoint-content {
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
|
|
||||||
.el-image {
|
.el-image {
|
||||||
height: 160px;
|
height: 160px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.viewpoint-title {
|
.viewpoint-title {
|
||||||
width: calc(100% - 10px);
|
width: calc(100% - 10px);
|
||||||
line-height: 30px;
|
line-height: 30px;
|
||||||
|
@ -915,20 +971,25 @@ export default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.roaming-list {
|
.roaming-list {
|
||||||
height: calc(100% - 48px);
|
height: calc(100% - 48px);
|
||||||
|
|
||||||
.roaming-item {
|
.roaming-item {
|
||||||
margin: 10px;
|
margin: 10px;
|
||||||
line-height: 48px;
|
line-height: 48px;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
padding: 0px 10px;
|
padding: 0px 10px;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
|
|
||||||
.roam-text {
|
.roam-text {
|
||||||
max-width: calc(100% - 40px);
|
max-width: calc(100% - 40px);
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.roam-tool {
|
.roam-tool {
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
|
|
||||||
.svg-icon {
|
.svg-icon {
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
width: 24px;
|
width: 24px;
|
||||||
|
@ -937,6 +998,7 @@ export default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.loading {
|
.loading {
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,6 +68,16 @@ public class BimModelInfo extends BaseEntity
|
||||||
private String projectName;
|
private String projectName;
|
||||||
private String deptName;
|
private String deptName;
|
||||||
|
|
||||||
|
private String bimConfig;
|
||||||
|
|
||||||
|
public String getBimConfig() {
|
||||||
|
return bimConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBimConfig(String bimConfig) {
|
||||||
|
this.bimConfig = bimConfig;
|
||||||
|
}
|
||||||
|
|
||||||
public Double getUnit() {
|
public Double getUnit() {
|
||||||
return unit;
|
return unit;
|
||||||
}
|
}
|
||||||
|
|
|
@ -97,6 +97,16 @@ public class ProPlan extends BaseEntity
|
||||||
@Excel(name = "班组ID")
|
@Excel(name = "班组ID")
|
||||||
private Long groupId;
|
private Long groupId;
|
||||||
|
|
||||||
|
private String noBim;
|
||||||
|
|
||||||
|
public String getNoBim() {
|
||||||
|
return noBim;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNoBim(String noBim) {
|
||||||
|
this.noBim = noBim;
|
||||||
|
}
|
||||||
|
|
||||||
/** 班组名称 */
|
/** 班组名称 */
|
||||||
@Excel(name = "班组名称")
|
@Excel(name = "班组名称")
|
||||||
private String groupName;
|
private String groupName;
|
||||||
|
|
|
@ -55,10 +55,6 @@ public class ProPlanSchedule extends BaseEntity
|
||||||
@Excel(name = "任务名称")
|
@Excel(name = "任务名称")
|
||||||
private String taskName;
|
private String taskName;
|
||||||
|
|
||||||
/** BIM构建 */
|
|
||||||
@Excel(name = "BIM构建")
|
|
||||||
private String bimId;
|
|
||||||
|
|
||||||
/** 进度百分比 */
|
/** 进度百分比 */
|
||||||
@Excel(name = "进度百分比")
|
@Excel(name = "进度百分比")
|
||||||
private Long schedulePercent;
|
private Long schedulePercent;
|
||||||
|
@ -184,15 +180,7 @@ public class ProPlanSchedule extends BaseEntity
|
||||||
{
|
{
|
||||||
return taskName;
|
return taskName;
|
||||||
}
|
}
|
||||||
public void setBimId(String bimId)
|
|
||||||
{
|
|
||||||
this.bimId = bimId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getBimId()
|
|
||||||
{
|
|
||||||
return bimId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Double getTaskDuation() {
|
public Double getTaskDuation() {
|
||||||
return taskDuation;
|
return taskDuation;
|
||||||
|
@ -325,7 +313,6 @@ public class ProPlanSchedule extends BaseEntity
|
||||||
.append("taskId", getTaskId())
|
.append("taskId", getTaskId())
|
||||||
.append("taskUniqueId", getTaskUniqueId())
|
.append("taskUniqueId", getTaskUniqueId())
|
||||||
.append("taskName", getTaskName())
|
.append("taskName", getTaskName())
|
||||||
.append("bimId", getBimId())
|
|
||||||
.append("schedulePercent", getSchedulePercent())
|
.append("schedulePercent", getSchedulePercent())
|
||||||
.append("finishDate", getFinishDate())
|
.append("finishDate", getFinishDate())
|
||||||
.append("description", getDescription())
|
.append("description", getDescription())
|
||||||
|
|
|
@ -238,6 +238,19 @@ public class ProProjectInfo extends BaseEntity
|
||||||
@Excel(name = "删除标识")
|
@Excel(name = "删除标识")
|
||||||
private Long isDel;
|
private Long isDel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BIM 设置
|
||||||
|
*/
|
||||||
|
private String bimConfig;
|
||||||
|
|
||||||
|
public String getBimConfig() {
|
||||||
|
return bimConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBimConfig(String bimConfig) {
|
||||||
|
this.bimConfig = bimConfig;
|
||||||
|
}
|
||||||
|
|
||||||
private ProProjectInfoSetting setting;
|
private ProProjectInfoSetting setting;
|
||||||
private List<ProProjectInfoDepts> projectDeptsList;
|
private List<ProProjectInfoDepts> projectDeptsList;
|
||||||
|
|
||||||
|
|
|
@ -91,4 +91,20 @@ public interface ProProjectInfoMapper
|
||||||
* @param sysRoleDept
|
* @param sysRoleDept
|
||||||
*/
|
*/
|
||||||
public void insertProRoleDept(SysRoleDept sysRoleDept);
|
public void insertProRoleDept(SysRoleDept sysRoleDept);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目BIM信息
|
||||||
|
*
|
||||||
|
* @param id 项目信息主键
|
||||||
|
* @return 项目信息
|
||||||
|
*/
|
||||||
|
public String getProjectBimConfig(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新项目BIM信息
|
||||||
|
*
|
||||||
|
* @param proProjectInfo 项目信息
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int updateProjectBimConfig(ProProjectInfo proProjectInfo);
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<result property="createTime" column="create_time" />
|
<result property="createTime" column="create_time" />
|
||||||
<result property="updateBy" column="update_by" />
|
<result property="updateBy" column="update_by" />
|
||||||
<result property="updateTime" column="update_time" />
|
<result property="updateTime" column="update_time" />
|
||||||
|
<result property="bimConfig" column="bim_config" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<sql id="selectBimModelInfoVo">
|
<sql id="selectBimModelInfoVo">
|
||||||
|
@ -35,7 +36,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
sp.dept_name projectName,
|
sp.dept_name projectName,
|
||||||
sd.dept_name com_name,pd.sub_dept_name dept_name,bmi.unit,
|
sd.dept_name com_name,pd.sub_dept_name dept_name,bmi.unit,
|
||||||
bmi.dept_id, bmi.model_name, bmi.lightweightName, bmi.gis_json, bmi.model_status, bmi.model_type,
|
bmi.dept_id, bmi.model_name, bmi.lightweightName, bmi.gis_json, bmi.model_status, bmi.model_type,
|
||||||
bmi.file_type, bmi.file_size, bmi.show_sand, bmi.status, bmi.remark, bmi.create_by, bmi.create_time, bmi.update_by, bmi.update_time,bmi.is_del
|
bmi.file_type, bmi.file_size, bmi.show_sand, bmi.status, bmi.remark, bmi.create_by, bmi.create_time, bmi.update_by, bmi.update_time,bmi.is_del,bmi.bim_config
|
||||||
from bim_model_info bmi
|
from bim_model_info bmi
|
||||||
left join sys_dept sp on sp.dept_id = bmi.project_id
|
left join sys_dept sp on sp.dept_id = bmi.project_id
|
||||||
left join sys_dept sd on sd.dept_id = bmi.com_id
|
left join sys_dept sd on sd.dept_id = bmi.com_id
|
||||||
|
@ -117,7 +118,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<if test="projectId != null">project_id = #{projectId},</if>
|
<if test="projectId != null">project_id = #{projectId},</if>
|
||||||
<if test="deptId != null">dept_id = #{deptId},</if>
|
<if test="deptId != null">dept_id = #{deptId},</if>
|
||||||
<if test="modelName != null">model_name = #{modelName},</if>
|
<if test="modelName != null">model_name = #{modelName},</if>
|
||||||
<if test="lightweightName != null">lightweightName = #{lightweightName},</if>
|
|
||||||
<if test="gisJson != null">gis_json = #{gisJson},</if>
|
<if test="gisJson != null">gis_json = #{gisJson},</if>
|
||||||
<if test="modelStatus != null">model_status = #{modelStatus},</if>
|
<if test="modelStatus != null">model_status = #{modelStatus},</if>
|
||||||
<if test="modelType != null">model_type = #{modelType},</if>
|
<if test="modelType != null">model_type = #{modelType},</if>
|
||||||
|
@ -132,8 +132,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<if test="createTime != null">create_time = #{createTime},</if>
|
<if test="createTime != null">create_time = #{createTime},</if>
|
||||||
<if test="updateBy != null">update_by = #{updateBy},</if>
|
<if test="updateBy != null">update_by = #{updateBy},</if>
|
||||||
<if test="updateTime != null">update_time = #{updateTime},</if>
|
<if test="updateTime != null">update_time = #{updateTime},</if>
|
||||||
|
<if test="bimConfig != null">bim_config = #{bimConfig},</if>
|
||||||
</trim>
|
</trim>
|
||||||
where model_id = #{modelId}
|
where lightweightName = #{lightweightName}
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<delete id="deleteBimModelInfoByModelId" parameterType="Long">
|
<delete id="deleteBimModelInfoByModelId" parameterType="Long">
|
||||||
|
|
|
@ -38,10 +38,53 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<result property="nowMonth" column="nowMonth" />
|
<result property="nowMonth" column="nowMonth" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
|
<sql id="selectProPlanVoNoBim">
|
||||||
|
select pp.id, pp.comid, pp.project_id, pp.task_id, pp.task_unique_id, pp.parent_id, pp.task_type,
|
||||||
|
pp.task_outline_level, pp.task_name, pp.task_duation, pp.start_date, pp.finish_date,
|
||||||
|
pp.predecessors, pp.plan_start_date, pp.plan_finish_date,
|
||||||
|
<if test="not (noBim != null and noBim != '')">
|
||||||
|
pp.bim_id,
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="noBim != null and noBim != ''">
|
||||||
|
left(ifnull(pp.bim_id,''),10) bim_id,
|
||||||
|
</if>
|
||||||
|
pp.operator, pp.operator_id,
|
||||||
|
pp.group_id, pp.group_name, pp.schedule_node, pp.is_del, pp.create_by, pp.create_time, pp.update_by, pp.update_time, pp.remark,
|
||||||
|
dp.`dept_name` comp_name,pi.`project_name`,
|
||||||
|
CASE
|
||||||
|
WHEN pp.start_date IS NULL THEN
|
||||||
|
'wks'
|
||||||
|
WHEN pp.start_date IS NOT NULL
|
||||||
|
AND pp.finish_date IS NOT NULL
|
||||||
|
AND date(pp.plan_finish_date) <![CDATA[ >= ]]> date(pp.finish_date) THEN
|
||||||
|
'zcwc'
|
||||||
|
WHEN pp.start_date IS NOT NULL
|
||||||
|
AND pp.finish_date IS NOT NULL
|
||||||
|
AND date(pp.plan_finish_date) <![CDATA[ < ]]> date(pp.finish_date) THEN
|
||||||
|
'zhwc'
|
||||||
|
WHEN pp.start_date IS NOT NULL
|
||||||
|
AND pp.finish_date IS NULL
|
||||||
|
AND date(pp.plan_finish_date) <![CDATA[ >= ]]> date(NOW()) THEN
|
||||||
|
'zcjxz'
|
||||||
|
WHEN pp.start_date IS NOT NULL
|
||||||
|
AND pp.finish_date IS NULL
|
||||||
|
AND date(pp.plan_finish_date) <![CDATA[ < ]]> date(NOW()) THEN
|
||||||
|
'zhjxz'
|
||||||
|
END AS task_status
|
||||||
|
from pro_plan pp
|
||||||
|
LEFT JOIN sys_dept dp ON pp.`comid`=dp.`dept_id`
|
||||||
|
LEFT JOIN pro_project_info pi ON pp.`project_id`=pi.`id`
|
||||||
|
</sql>
|
||||||
|
|
||||||
<sql id="selectProPlanVo">
|
<sql id="selectProPlanVo">
|
||||||
select pp.id, pp.comid, pp.project_id, pp.task_id, pp.task_unique_id, pp.parent_id, pp.task_type,
|
select pp.id, pp.comid, pp.project_id, pp.task_id, pp.task_unique_id, pp.parent_id, pp.task_type,
|
||||||
pp.task_outline_level, pp.task_name, pp.task_duation, pp.start_date, pp.finish_date,
|
pp.task_outline_level, pp.task_name, pp.task_duation, pp.start_date, pp.finish_date,
|
||||||
pp.predecessors, pp.plan_start_date, pp.plan_finish_date, pp.bim_id, pp.operator, pp.operator_id,
|
pp.predecessors, pp.plan_start_date, pp.plan_finish_date,
|
||||||
|
|
||||||
|
pp.bim_id,
|
||||||
|
|
||||||
|
pp.operator, pp.operator_id,
|
||||||
pp.group_id, pp.group_name, pp.schedule_node, pp.is_del, pp.create_by, pp.create_time, pp.update_by, pp.update_time, pp.remark,
|
pp.group_id, pp.group_name, pp.schedule_node, pp.is_del, pp.create_by, pp.create_time, pp.update_by, pp.update_time, pp.remark,
|
||||||
dp.`dept_name` comp_name,pi.`project_name`,
|
dp.`dept_name` comp_name,pi.`project_name`,
|
||||||
CASE
|
CASE
|
||||||
|
@ -70,7 +113,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
<select id="selectProPlanList" parameterType="ProPlan" resultMap="ProPlanResult">
|
<select id="selectProPlanList" parameterType="ProPlan" resultMap="ProPlanResult">
|
||||||
<include refid="selectProPlanVo"/>
|
<include refid="selectProPlanVoNoBim"/>
|
||||||
<where>
|
<where>
|
||||||
<if test="comid != null "> and pp.comid = #{comid}</if>
|
<if test="comid != null "> and pp.comid = #{comid}</if>
|
||||||
<if test="projectId != null "> and pp.project_id = #{projectId}</if>
|
<if test="projectId != null "> and pp.project_id = #{projectId}</if>
|
||||||
|
@ -97,7 +140,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectProPlanListView" parameterType="ProPlan" resultMap="ProPlanResult">
|
<select id="selectProPlanListView" parameterType="ProPlan" resultMap="ProPlanResult">
|
||||||
<include refid="selectProPlanVo"/>
|
<include refid="selectProPlanVoNoBim"/>
|
||||||
<where>
|
<where>
|
||||||
<if test="comid != null "> and pp.comid = #{comid}</if>
|
<if test="comid != null "> and pp.comid = #{comid}</if>
|
||||||
<if test="projectId != null "> and pp.project_id = #{projectId}</if>
|
<if test="projectId != null "> and pp.project_id = #{projectId}</if>
|
||||||
|
@ -280,8 +323,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<if test="taskName != null and taskName != ''"> concat(#{taskName}, ' / ', task_name) as task_name,</if>
|
<if test="taskName != null and taskName != ''"> concat(#{taskName}, ' / ', task_name) as task_name,</if>
|
||||||
<if test="taskName == null or taskName == ''"> task_name,</if>
|
<if test="taskName == null or taskName == ''"> task_name,</if>
|
||||||
task_duation, start_date, finish_date,
|
task_duation, start_date, finish_date,
|
||||||
predecessors, plan_start_date, plan_finish_date, bim_id, operator, operator_id,
|
predecessors, plan_start_date, plan_finish_date, operator, operator_id,
|
||||||
group_id, group_name, schedule_node, is_del from pro_plan
|
<if test="not (noBim != null and noBim != '')">
|
||||||
|
bim_id,
|
||||||
|
</if>
|
||||||
|
group_id, group_name, schedule_node, is_del
|
||||||
|
from pro_plan
|
||||||
<where>
|
<where>
|
||||||
<if test="projectId != null "> and project_id = #{projectId}</if>
|
<if test="projectId != null "> and project_id = #{projectId}</if>
|
||||||
<if test="taskId != null "> and task_id = #{taskId}</if>
|
<if test="taskId != null "> and task_id = #{taskId}</if>
|
||||||
|
|
|
@ -15,7 +15,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<result property="taskId" column="task_id" />
|
<result property="taskId" column="task_id" />
|
||||||
<result property="taskUniqueId" column="task_unique_id" />
|
<result property="taskUniqueId" column="task_unique_id" />
|
||||||
<result property="taskName" column="task_name" />
|
<result property="taskName" column="task_name" />
|
||||||
<result property="bimId" column="bim_id" />
|
|
||||||
<result property="schedulePercent" column="schedule_percent" />
|
<result property="schedulePercent" column="schedule_percent" />
|
||||||
<result property="taskDuation" column="task_duation" />
|
<result property="taskDuation" column="task_duation" />
|
||||||
<result property="planStartDate" column="plan_start_date" />
|
<result property="planStartDate" column="plan_start_date" />
|
||||||
|
@ -33,7 +32,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<sql id="selectProPlanScheduleVo">
|
<sql id="selectProPlanScheduleVo">
|
||||||
select pps.id, (select max(mp.id) from pro_plan_schedule mp where mp.project_id = pps.project_id and mp.is_del=0) as max_id, pps.com_id, sd.dept_name as com_name, pps.project_id, pi.project_name, pps.plan_id, pps.task_id, pps.task_unique_id, pps.task_name, pps.bim_id, pps.schedule_percent, pp.task_duation, pp.plan_start_date, pp.plan_finish_date, pps.finish_date, pps.description, pps.images, pps.is_del, pps.create_by, pps.create_user_id, pps.create_date, pps.update_by, pps.update_date, pps.total_schedule
|
select pps.id, (select max(mp.id) from pro_plan_schedule mp where mp.project_id = pps.project_id and mp.is_del=0) as max_id, pps.com_id, sd.dept_name as com_name, pps.project_id, pi.project_name, pps.plan_id, pps.task_id, pps.task_unique_id, pps.task_name, pps.schedule_percent, pp.task_duation, pp.plan_start_date, pp.plan_finish_date, pps.finish_date, pps.description, pps.images, pps.is_del, pps.create_by, pps.create_user_id, pps.create_date, pps.update_by, pps.update_date, pps.total_schedule
|
||||||
from pro_plan_schedule pps
|
from pro_plan_schedule pps
|
||||||
left join pro_project_info pi on pi.id = pps.project_id
|
left join pro_project_info pi on pi.id = pps.project_id
|
||||||
left join sys_dept sd on sd.dept_id = pps.com_id
|
left join sys_dept sd on sd.dept_id = pps.com_id
|
||||||
|
@ -52,7 +51,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<if test="taskId != null "> and pps.task_id = #{taskId}</if>
|
<if test="taskId != null "> and pps.task_id = #{taskId}</if>
|
||||||
<if test="taskUniqueId != null and taskUniqueId != ''"> and pps.task_unique_id = #{taskUniqueId}</if>
|
<if test="taskUniqueId != null and taskUniqueId != ''"> and pps.task_unique_id = #{taskUniqueId}</if>
|
||||||
<if test="taskName != null and taskName != ''"> and pps.task_name like concat('%', #{taskName}, '%')</if>
|
<if test="taskName != null and taskName != ''"> and pps.task_name like concat('%', #{taskName}, '%')</if>
|
||||||
<if test="bimId != null and bimId != ''"> and pps.bim_id = #{bimId}</if>
|
|
||||||
<if test="isDel != null "> and pps.is_del = #{isDel}</if>
|
<if test="isDel != null "> and pps.is_del = #{isDel}</if>
|
||||||
<if test="createUserId != null "> and pps.create_user_id = #{createUserId}</if>
|
<if test="createUserId != null "> and pps.create_user_id = #{createUserId}</if>
|
||||||
<if test="params.beginTime != null and params.beginTime != '' and params.endTime != null and params.endTime != ''"> and date(pps.create_date) between #{params.beginTime} and #{params.endTime}</if>
|
<if test="params.beginTime != null and params.beginTime != '' and params.endTime != null and params.endTime != ''"> and date(pps.create_date) between #{params.beginTime} and #{params.endTime}</if>
|
||||||
|
@ -76,7 +74,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<if test="taskId != null">task_id,</if>
|
<if test="taskId != null">task_id,</if>
|
||||||
<if test="taskUniqueId != null">task_unique_id,</if>
|
<if test="taskUniqueId != null">task_unique_id,</if>
|
||||||
<if test="taskName != null">task_name,</if>
|
<if test="taskName != null">task_name,</if>
|
||||||
<if test="bimId != null">bim_id,</if>
|
|
||||||
<if test="schedulePercent != null">schedule_percent,</if>
|
<if test="schedulePercent != null">schedule_percent,</if>
|
||||||
<if test="finishDate != null">finish_date,</if>
|
<if test="finishDate != null">finish_date,</if>
|
||||||
<if test="description != null">description,</if>
|
<if test="description != null">description,</if>
|
||||||
|
@ -96,7 +93,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<if test="taskId != null">#{taskId},</if>
|
<if test="taskId != null">#{taskId},</if>
|
||||||
<if test="taskUniqueId != null">#{taskUniqueId},</if>
|
<if test="taskUniqueId != null">#{taskUniqueId},</if>
|
||||||
<if test="taskName != null">#{taskName},</if>
|
<if test="taskName != null">#{taskName},</if>
|
||||||
<if test="bimId != null">#{bimId},</if>
|
|
||||||
<if test="schedulePercent != null">#{schedulePercent},</if>
|
<if test="schedulePercent != null">#{schedulePercent},</if>
|
||||||
<if test="finishDate != null">#{finishDate},</if>
|
<if test="finishDate != null">#{finishDate},</if>
|
||||||
<if test="description != null">#{description},</if>
|
<if test="description != null">#{description},</if>
|
||||||
|
@ -120,7 +116,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<if test="taskId != null">task_id = #{taskId},</if>
|
<if test="taskId != null">task_id = #{taskId},</if>
|
||||||
<if test="taskUniqueId != null">task_unique_id = #{taskUniqueId},</if>
|
<if test="taskUniqueId != null">task_unique_id = #{taskUniqueId},</if>
|
||||||
<if test="taskName != null">task_name = #{taskName},</if>
|
<if test="taskName != null">task_name = #{taskName},</if>
|
||||||
<if test="bimId != null">bim_id = #{bimId},</if>
|
|
||||||
<if test="schedulePercent != null">schedule_percent = #{schedulePercent},</if>
|
<if test="schedulePercent != null">schedule_percent = #{schedulePercent},</if>
|
||||||
<if test="finishDate != null">finish_date = #{finishDate},</if>
|
<if test="finishDate != null">finish_date = #{finishDate},</if>
|
||||||
<if test="description != null">description = #{description},</if>
|
<if test="description != null">description = #{description},</if>
|
||||||
|
|
|
@ -47,6 +47,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<result property="projectStatus" column="project_status" />
|
<result property="projectStatus" column="project_status" />
|
||||||
<result property="projectSort" column="project_sort" />
|
<result property="projectSort" column="project_sort" />
|
||||||
<result property="isDel" column="is_del" />
|
<result property="isDel" column="is_del" />
|
||||||
|
<result property="bimConfig" column="bim_config" />
|
||||||
<result property="createBy" column="create_by" />
|
<result property="createBy" column="create_by" />
|
||||||
<result property="createTime" column="create_time" />
|
<result property="createTime" column="create_time" />
|
||||||
<result property="updateBy" column="update_by" />
|
<result property="updateBy" column="update_by" />
|
||||||
|
@ -82,7 +83,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<sql id="selectProProjectInfoVo">
|
<sql id="selectProProjectInfoVo">
|
||||||
select pi.id, pi.com_id, sd.dept_name as com_name, pi.dis_dept_id, pi.project_name, pi.project_code,
|
select pi.id, pi.com_id, sd.dept_name as com_name, pi.dis_dept_id, pi.project_name, pi.project_code,
|
||||||
pi.tech_leader,pi.tech_leader_phone,pi.province,pi.city,pi.district,
|
pi.tech_leader,pi.tech_leader_phone,pi.province,pi.city,pi.district,
|
||||||
pi.simple_name, pi.project_type, pi.project_level, pi.project_regional, pi.project_package, pi.project_address, pi.project_nature, pi.licence_number, pi.project_person, pi.project_person_phone, pi.longitude, pi.latitude, pi.project_time_limit, pi.total_investment, pi.floor_area, pi.total_output_value, pi.planned_completion_time, pi.scheduled_start_time, pi.actual_operating_time, pi.actual_completion_time, pi.contract_amount, pi.paid_amount, pi.on_account_amount, pi.project_schedule, pi.project_summarize, pi.project_qr_code, pi.project_status, pi.project_sort, pi.is_del, pi.create_by, pi.create_time, pi.update_by, pi.update_time, pi.remark
|
pi.simple_name, pi.project_type, pi.project_level, pi.project_regional, pi.project_package, pi.project_address, pi.project_nature, pi.licence_number, pi.project_person, pi.project_person_phone, pi.longitude, pi.latitude, pi.project_time_limit, pi.total_investment, pi.floor_area, pi.total_output_value, pi.planned_completion_time, pi.scheduled_start_time, pi.actual_operating_time, pi.actual_completion_time, pi.contract_amount, pi.paid_amount, pi.on_account_amount, pi.project_schedule, pi.project_summarize, pi.project_qr_code, pi.project_status, pi.project_sort, pi.is_del, pi.create_by, pi.create_time, pi.update_by, pi.update_time
|
||||||
|
, pi.remark,pi.bim_config
|
||||||
from pro_project_info pi
|
from pro_project_info pi
|
||||||
left join sys_dept sd on sd.dept_id = pi.com_id
|
left join sys_dept sd on sd.dept_id = pi.com_id
|
||||||
</sql>
|
</sql>
|
||||||
|
@ -123,7 +125,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
pi.floor_area, pi.total_output_value, pi.planned_completion_time, pi.scheduled_start_time, pi.actual_operating_time, pi.actual_completion_time,
|
pi.floor_area, pi.total_output_value, pi.planned_completion_time, pi.scheduled_start_time, pi.actual_operating_time, pi.actual_completion_time,
|
||||||
pi.contract_amount, pi.paid_amount, pi.on_account_amount, pi.project_schedule, pi.project_summarize, pi.project_qr_code, pi.project_status,
|
pi.contract_amount, pi.paid_amount, pi.on_account_amount, pi.project_schedule, pi.project_summarize, pi.project_qr_code, pi.project_status,
|
||||||
pi.project_sort, pi.is_del, pi.create_by, pi.create_time, pi.update_by, pi.update_time, pi.remark,
|
pi.project_sort, pi.is_del, pi.create_by, pi.create_time, pi.update_by, pi.update_time, pi.remark,
|
||||||
pd.id pd_id,pd.dept_type pd_type,pd.dept_name pd_name,pd.dept_code pd_code,pd.leader pd_leader,pd.phone pd_phone,
|
pd.id pd_id,pd.dept_type pd_type,pd.dept_name pd_name,pd.dept_code pd_code,pd.leader pd_leader,pd.phone pd_phone,pi.bim_config,
|
||||||
ps.id ps_id,ps.org_name ps_org_name,ps.org_logo ps_org_logo,ps.org_image ps_org_image,ps.org_video ps_org_video,ps.org_plane ps_org_plane,ac.vendors_code
|
ps.id ps_id,ps.org_name ps_org_name,ps.org_logo ps_org_logo,ps.org_image ps_org_image,ps.org_video ps_org_video,ps.org_plane ps_org_plane,ac.vendors_code
|
||||||
from pro_project_info pi
|
from pro_project_info pi
|
||||||
left join sys_dept sd on sd.dept_id = pi.com_id
|
left join sys_dept sd on sd.dept_id = pi.com_id
|
||||||
|
@ -396,7 +398,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
pi.licence_number, pi.project_person, pi.project_person_phone, pi.longitude, pi.latitude, pi.project_time_limit, pi.total_investment,
|
pi.licence_number, pi.project_person, pi.project_person_phone, pi.longitude, pi.latitude, pi.project_time_limit, pi.total_investment,
|
||||||
pi.floor_area, pi.total_output_value, pi.planned_completion_time, pi.scheduled_start_time, pi.actual_operating_time, pi.actual_completion_time,
|
pi.floor_area, pi.total_output_value, pi.planned_completion_time, pi.scheduled_start_time, pi.actual_operating_time, pi.actual_completion_time,
|
||||||
pi.contract_amount, pi.paid_amount, pi.on_account_amount, pi.project_schedule, pi.project_summarize, pi.project_qr_code, pi.project_status,
|
pi.contract_amount, pi.paid_amount, pi.on_account_amount, pi.project_schedule, pi.project_summarize, pi.project_qr_code, pi.project_status,
|
||||||
pi.project_sort, pi.is_del, pi.create_by, pi.create_time, pi.update_by, pi.update_time, pi.remark,
|
pi.project_sort, pi.is_del, pi.create_by, pi.create_time, pi.update_by, pi.update_time, pi.remark,pi.bim_config,
|
||||||
ps.id ps_id,ps.org_name ps_org_name,ps.org_logo ps_org_logo,ps.org_image ps_org_image,ps.org_video ps_org_video,ps.org_plane ps_org_plane,cfg.vendors_code
|
ps.id ps_id,ps.org_name ps_org_name,ps.org_logo ps_org_logo,ps.org_image ps_org_image,ps.org_video ps_org_video,ps.org_plane ps_org_plane,cfg.vendors_code
|
||||||
from pro_project_info pi
|
from pro_project_info pi
|
||||||
left join pro_project_info_setting ps on pi.id=ps.project_id
|
left join pro_project_info_setting ps on pi.id=ps.project_id
|
||||||
|
@ -429,4 +431,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<if test="currentUserId != null "> order by psu.sort_by, pi.id desc</if>
|
<if test="currentUserId != null "> order by psu.sort_by, pi.id desc</if>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="getProjectBimConfig" parameterType="Long" resultType="String">
|
||||||
|
select bim_config from pro_project_info where id = #{id}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<update id="updateProjectBimConfig" parameterType="ProProjectInfo">
|
||||||
|
update pro_project_info set bim_config = #{bimConfig} where id = #{id}
|
||||||
|
</update>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
|
@ -1,173 +0,0 @@
|
||||||
package com.yanzhu.job.domain;
|
|
||||||
|
|
||||||
import com.yanzhu.common.core.annotation.Excel;
|
|
||||||
import com.yanzhu.common.core.web.domain.BaseEntity;
|
|
||||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
|
||||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 系统应用注册对象 sys_apply_config
|
|
||||||
*
|
|
||||||
* @author JiangYuQi
|
|
||||||
* @date 2024-01-13
|
|
||||||
*/
|
|
||||||
public class SysApplyConfig extends BaseEntity
|
|
||||||
{
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/** 主键 */
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
/** 服务配置主键 */
|
|
||||||
private Long cfgId;
|
|
||||||
|
|
||||||
/** 服务配置类型 */
|
|
||||||
private String cfgType;
|
|
||||||
|
|
||||||
/** 应用主键 */
|
|
||||||
@Excel(name = "应用主键")
|
|
||||||
private String appId;
|
|
||||||
|
|
||||||
/** 公钥 */
|
|
||||||
private String publicKey;
|
|
||||||
|
|
||||||
/** 私钥 */
|
|
||||||
private String privateKey;
|
|
||||||
|
|
||||||
/** 项目主键 */
|
|
||||||
@Excel(name = "项目主键")
|
|
||||||
private Long projectId;
|
|
||||||
|
|
||||||
/** 项目名称 */
|
|
||||||
@Excel(name = "项目名称")
|
|
||||||
private String projectName;
|
|
||||||
|
|
||||||
/** 部门主键 */
|
|
||||||
@Excel(name = "部门主键")
|
|
||||||
private Long deptId;
|
|
||||||
|
|
||||||
/** 部门名称 */
|
|
||||||
@Excel(name = "部门名称")
|
|
||||||
private String deptName;
|
|
||||||
|
|
||||||
/** 是否删除 */
|
|
||||||
@Excel(name = "是否删除")
|
|
||||||
private String isDel;
|
|
||||||
|
|
||||||
public void setId(Long id)
|
|
||||||
{
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getId()
|
|
||||||
{
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
public void setAppId(String appId)
|
|
||||||
{
|
|
||||||
this.appId = appId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getAppId()
|
|
||||||
{
|
|
||||||
return appId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPublicKey(String publicKey)
|
|
||||||
{
|
|
||||||
this.publicKey = publicKey;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getPublicKey()
|
|
||||||
{
|
|
||||||
return publicKey;
|
|
||||||
}
|
|
||||||
public void setPrivateKey(String privateKey)
|
|
||||||
{
|
|
||||||
this.privateKey = privateKey;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getPrivateKey()
|
|
||||||
{
|
|
||||||
return privateKey;
|
|
||||||
}
|
|
||||||
public void setProjectId(Long projectId)
|
|
||||||
{
|
|
||||||
this.projectId = projectId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getProjectId()
|
|
||||||
{
|
|
||||||
return projectId;
|
|
||||||
}
|
|
||||||
public void setDeptId(Long deptId)
|
|
||||||
{
|
|
||||||
this.deptId = deptId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getDeptId()
|
|
||||||
{
|
|
||||||
return deptId;
|
|
||||||
}
|
|
||||||
public void setIsDel(String isDel)
|
|
||||||
{
|
|
||||||
this.isDel = isDel;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getIsDel()
|
|
||||||
{
|
|
||||||
return isDel;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getProjectName() {
|
|
||||||
return projectName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProjectName(String projectName) {
|
|
||||||
this.projectName = projectName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getDeptName() {
|
|
||||||
return deptName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDeptName(String deptName) {
|
|
||||||
this.deptName = deptName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getCfgId() {
|
|
||||||
return cfgId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCfgId(Long cfgId) {
|
|
||||||
this.cfgId = cfgId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCfgType() {
|
|
||||||
return cfgType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCfgType(String cfgType) {
|
|
||||||
this.cfgType = cfgType;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
|
||||||
.append("id", getId())
|
|
||||||
.append("cfgId", getCfgId())
|
|
||||||
.append("cfgType", getCfgType())
|
|
||||||
.append("appId", getAppId())
|
|
||||||
.append("publicKey", getPublicKey())
|
|
||||||
.append("privateKey", getPrivateKey())
|
|
||||||
.append("projectId", getProjectId())
|
|
||||||
.append("deptId", getDeptId())
|
|
||||||
.append("isDel", getIsDel())
|
|
||||||
.append("createBy", getCreateBy())
|
|
||||||
.append("createTime", getCreateTime())
|
|
||||||
.append("updateBy", getUpdateBy())
|
|
||||||
.append("updateTime", getUpdateTime())
|
|
||||||
.append("remark", getRemark())
|
|
||||||
.toString();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,62 +0,0 @@
|
||||||
package com.yanzhu.job.mapper;
|
|
||||||
|
|
||||||
import com.yanzhu.job.domain.SysApplyConfig;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 系统应用注册Mapper接口
|
|
||||||
*
|
|
||||||
* @author JiangYuQi
|
|
||||||
* @date 2024-01-13
|
|
||||||
*/
|
|
||||||
public interface SysApplyConfigMapper
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* 查询系统应用注册
|
|
||||||
*
|
|
||||||
* @param id 系统应用注册主键
|
|
||||||
* @return 系统应用注册
|
|
||||||
*/
|
|
||||||
public SysApplyConfig selectSysApplyConfigById(Long id);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询系统应用注册列表
|
|
||||||
*
|
|
||||||
* @param sysApplyConfig 系统应用注册
|
|
||||||
* @return 系统应用注册集合
|
|
||||||
*/
|
|
||||||
public List<SysApplyConfig> selectSysApplyConfigList(SysApplyConfig sysApplyConfig);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增系统应用注册
|
|
||||||
*
|
|
||||||
* @param sysApplyConfig 系统应用注册
|
|
||||||
* @return 结果
|
|
||||||
*/
|
|
||||||
public int insertSysApplyConfig(SysApplyConfig sysApplyConfig);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改系统应用注册
|
|
||||||
*
|
|
||||||
* @param sysApplyConfig 系统应用注册
|
|
||||||
* @return 结果
|
|
||||||
*/
|
|
||||||
public int updateSysApplyConfig(SysApplyConfig sysApplyConfig);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除系统应用注册
|
|
||||||
*
|
|
||||||
* @param id 系统应用注册主键
|
|
||||||
* @return 结果
|
|
||||||
*/
|
|
||||||
public int deleteSysApplyConfigById(Long id);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量删除系统应用注册
|
|
||||||
*
|
|
||||||
* @param ids 需要删除的数据主键集合
|
|
||||||
* @return 结果
|
|
||||||
*/
|
|
||||||
public int deleteSysApplyConfigByIds(Long[] ids);
|
|
||||||
}
|
|
|
@ -1,67 +0,0 @@
|
||||||
package com.yanzhu.job.service;
|
|
||||||
|
|
||||||
import com.yanzhu.job.domain.SysApplyConfig;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 系统应用注册Service接口
|
|
||||||
*
|
|
||||||
* @author JiangYuQi
|
|
||||||
* @date 2024-01-13
|
|
||||||
*/
|
|
||||||
public interface ISysApplyConfigService
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* 查询系统应用注册
|
|
||||||
*
|
|
||||||
* @param id 系统应用注册主键
|
|
||||||
* @return 系统应用注册
|
|
||||||
*/
|
|
||||||
public SysApplyConfig selectSysApplyConfigById(Long id);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询系统应用注册列表
|
|
||||||
*
|
|
||||||
* @param sysApplyConfig 系统应用注册
|
|
||||||
* @return 系统应用注册集合
|
|
||||||
*/
|
|
||||||
public List<SysApplyConfig> selectSysApplyConfigList(SysApplyConfig sysApplyConfig);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增系统应用注册
|
|
||||||
*
|
|
||||||
* @param sysApplyConfig 系统应用注册
|
|
||||||
* @return 结果
|
|
||||||
*/
|
|
||||||
public int insertSysApplyConfig(SysApplyConfig sysApplyConfig);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改系统应用注册
|
|
||||||
*
|
|
||||||
* @param sysApplyConfig 系统应用注册
|
|
||||||
* @return 结果
|
|
||||||
*/
|
|
||||||
public int updateSysApplyConfig(SysApplyConfig sysApplyConfig);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量删除系统应用注册
|
|
||||||
*
|
|
||||||
* @param ids 需要删除的系统应用注册主键集合
|
|
||||||
* @return 结果
|
|
||||||
*/
|
|
||||||
public int deleteSysApplyConfigByIds(Long[] ids);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除系统应用注册信息
|
|
||||||
*
|
|
||||||
* @param id 系统应用注册主键
|
|
||||||
* @return 结果
|
|
||||||
*/
|
|
||||||
public int deleteSysApplyConfigById(Long id);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 加载注册应用
|
|
||||||
*/
|
|
||||||
public void loadingSysApplyConfigCache();
|
|
||||||
}
|
|
|
@ -1,161 +0,0 @@
|
||||||
package com.yanzhu.job.service.impl;
|
|
||||||
|
|
||||||
import com.yanzhu.common.core.constant.CacheConstants;
|
|
||||||
import com.yanzhu.common.core.exception.ServiceException;
|
|
||||||
import com.yanzhu.common.core.utils.DateUtils;
|
|
||||||
import com.yanzhu.common.core.utils.RSAUtil;
|
|
||||||
import com.yanzhu.common.redis.service.RedisService;
|
|
||||||
import com.yanzhu.common.security.utils.SecurityUtils;
|
|
||||||
import com.yanzhu.job.domain.SysApplyConfig;
|
|
||||||
import com.yanzhu.job.mapper.SysApplyConfigMapper;
|
|
||||||
import com.yanzhu.job.service.ISysApplyConfigService;
|
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
|
||||||
import java.security.KeyPair;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 系统应用注册Service业务层处理
|
|
||||||
*
|
|
||||||
* @author JiangYuQi
|
|
||||||
* @date 2024-01-13
|
|
||||||
*/
|
|
||||||
@Service
|
|
||||||
public class SysApplyConfigServiceImpl implements ISysApplyConfigService
|
|
||||||
{
|
|
||||||
@Autowired
|
|
||||||
private RedisService redisCache;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private SysApplyConfigMapper sysApplyConfigMapper;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 项目启动时,初始化注册应用到缓存
|
|
||||||
*/
|
|
||||||
@PostConstruct
|
|
||||||
public void init()
|
|
||||||
{
|
|
||||||
loadingSysApplyConfigCache();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 加载注册应用
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void loadingSysApplyConfigCache()
|
|
||||||
{
|
|
||||||
List<SysApplyConfig> configList = sysApplyConfigMapper.selectSysApplyConfigList(new SysApplyConfig());
|
|
||||||
if(CollectionUtils.isNotEmpty(configList)){
|
|
||||||
for (SysApplyConfig sysApplyConfig : configList) {
|
|
||||||
redisCache.setCacheObject(CacheConstants.YANZHU_SYSTEM_CONFIG + sysApplyConfig.getAppId(), sysApplyConfig);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询系统应用注册
|
|
||||||
*
|
|
||||||
* @param id 系统应用注册主键
|
|
||||||
* @return 系统应用注册
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public SysApplyConfig selectSysApplyConfigById(Long id)
|
|
||||||
{
|
|
||||||
return sysApplyConfigMapper.selectSysApplyConfigById(id);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询系统应用注册列表
|
|
||||||
*
|
|
||||||
* @param sysApplyConfig 系统应用注册
|
|
||||||
* @return 系统应用注册
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public List<SysApplyConfig> selectSysApplyConfigList(SysApplyConfig sysApplyConfig)
|
|
||||||
{
|
|
||||||
return sysApplyConfigMapper.selectSysApplyConfigList(sysApplyConfig);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增系统应用注册
|
|
||||||
*
|
|
||||||
* @param sysApplyConfig 系统应用注册
|
|
||||||
* @return 结果
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public int insertSysApplyConfig(SysApplyConfig sysApplyConfig)
|
|
||||||
{
|
|
||||||
sysApplyConfig.setCreateBy(SecurityUtils.getUsername());
|
|
||||||
sysApplyConfig.setCreateTime(DateUtils.getNowDate());
|
|
||||||
try {
|
|
||||||
// 生成密钥对
|
|
||||||
KeyPair keyPair = RSAUtil.getKeyPair();
|
|
||||||
// 公匙
|
|
||||||
String publicKey = RSAUtil.getPublicKeyBase64(keyPair);
|
|
||||||
sysApplyConfig.setPublicKey(publicKey);
|
|
||||||
// 私匙
|
|
||||||
String privateKey = RSAUtil.getPrivateKeyBase64(keyPair);
|
|
||||||
sysApplyConfig.setPrivateKey(privateKey);
|
|
||||||
}catch (Exception e){
|
|
||||||
throw new ServiceException();
|
|
||||||
}
|
|
||||||
int res = sysApplyConfigMapper.insertSysApplyConfig(sysApplyConfig);
|
|
||||||
if(res>0){
|
|
||||||
this.loadingSysApplyConfigCache();
|
|
||||||
}
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改系统应用注册
|
|
||||||
*
|
|
||||||
* @param sysApplyConfig 系统应用注册
|
|
||||||
* @return 结果
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public int updateSysApplyConfig(SysApplyConfig sysApplyConfig)
|
|
||||||
{
|
|
||||||
sysApplyConfig.setUpdateBy(SecurityUtils.getUsername());
|
|
||||||
sysApplyConfig.setUpdateTime(DateUtils.getNowDate());
|
|
||||||
int res = sysApplyConfigMapper.updateSysApplyConfig(sysApplyConfig);
|
|
||||||
if(res>0){
|
|
||||||
this.loadingSysApplyConfigCache();
|
|
||||||
}
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量删除系统应用注册
|
|
||||||
*
|
|
||||||
* @param ids 需要删除的系统应用注册主键
|
|
||||||
* @return 结果
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public int deleteSysApplyConfigByIds(Long[] ids)
|
|
||||||
{
|
|
||||||
int res = sysApplyConfigMapper.deleteSysApplyConfigByIds(ids);
|
|
||||||
if(res>0){
|
|
||||||
this.loadingSysApplyConfigCache();
|
|
||||||
}
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除系统应用注册信息
|
|
||||||
*
|
|
||||||
* @param id 系统应用注册主键
|
|
||||||
* @return 结果
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public int deleteSysApplyConfigById(Long id)
|
|
||||||
{
|
|
||||||
int res = sysApplyConfigMapper.deleteSysApplyConfigById(id);
|
|
||||||
if(res>0){
|
|
||||||
this.loadingSysApplyConfigCache();
|
|
||||||
}
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,117 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
|
||||||
<!DOCTYPE mapper
|
|
||||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|
||||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
|
||||||
<mapper namespace="com.yanzhu.job.mapper.SysApplyConfigMapper">
|
|
||||||
|
|
||||||
<resultMap type="com.yanzhu.job.domain.SysApplyConfig" id="SysApplyConfigResult">
|
|
||||||
<result property="id" column="id" />
|
|
||||||
<result property="cfgType" column="cfg_type" />
|
|
||||||
<result property="cfgId" column="cfg_id" />
|
|
||||||
<result property="appId" column="app_id" />
|
|
||||||
<result property="publicKey" column="public_key" />
|
|
||||||
<result property="privateKey" column="private_key" />
|
|
||||||
<result property="projectId" column="project_id" />
|
|
||||||
<result property="projectName" column="projectName" />
|
|
||||||
<result property="deptId" column="dept_id" />
|
|
||||||
<result property="deptName" column="deptName" />
|
|
||||||
<result property="isDel" column="is_del" />
|
|
||||||
<result property="createBy" column="create_by" />
|
|
||||||
<result property="createTime" column="create_time" />
|
|
||||||
<result property="updateBy" column="update_by" />
|
|
||||||
<result property="updateTime" column="update_time" />
|
|
||||||
<result property="remark" column="remark" />
|
|
||||||
</resultMap>
|
|
||||||
|
|
||||||
<sql id="selectSysApplyConfigVo">
|
|
||||||
select sac.id, sac.cfg_type, sac.cfg_id, sac.app_id, sac.public_key, sac.private_key, sac.project_id, sp.project_name, sac.dept_id, sd.dept_name as deptName, sac.is_del, sac.create_by, sac.create_time, sac.update_by, sac.update_time, sac.remark from sys_apply_config sac
|
|
||||||
left join pro_project_info sp on sac.project_id = sp.id
|
|
||||||
left join sys_dept sd on sac.dept_id = sd.dept_id
|
|
||||||
</sql>
|
|
||||||
|
|
||||||
<select id="selectSysApplyConfigList" parameterType="com.yanzhu.job.domain.SysApplyConfig" resultMap="SysApplyConfigResult">
|
|
||||||
<include refid="selectSysApplyConfigVo"/>
|
|
||||||
<where>
|
|
||||||
<if test="cfgId != null "> and sac.cfg_id = #{cfgId}</if>
|
|
||||||
<if test="cfgType != null "> and sac.cfg_type = #{cfgType}</if>
|
|
||||||
<if test="appId != null "> and sac.app_id like concat('%', #{appId}, '%')</if>
|
|
||||||
<if test="projectName != null "> and sp.project_name like concat('%', #{projectName}, '%')</if>
|
|
||||||
<if test="deptName != null "> and sd.dept_name like concat('%', #{deptName}, '%')</if>
|
|
||||||
<if test="isDel != null and isDel != ''"> and sac.is_del = #{isDel}</if>
|
|
||||||
</where>
|
|
||||||
order by sac.id desc
|
|
||||||
</select>
|
|
||||||
|
|
||||||
<select id="selectSysApplyConfigById" parameterType="Long" resultMap="SysApplyConfigResult">
|
|
||||||
<include refid="selectSysApplyConfigVo"/>
|
|
||||||
where sac.id = #{id}
|
|
||||||
</select>
|
|
||||||
|
|
||||||
<insert id="insertSysApplyConfig" parameterType="com.yanzhu.job.domain.SysApplyConfig">
|
|
||||||
insert into sys_apply_config
|
|
||||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
|
||||||
<if test="id != null">id,</if>
|
|
||||||
<if test="cfgType != null">cfg_type,</if>
|
|
||||||
<if test="cfgId != null">cfg_id,</if>
|
|
||||||
<if test="appId != null">app_id,</if>
|
|
||||||
<if test="publicKey != null">public_key,</if>
|
|
||||||
<if test="privateKey != null">private_key,</if>
|
|
||||||
<if test="projectId != null">project_id,</if>
|
|
||||||
<if test="deptId != null">dept_id,</if>
|
|
||||||
<if test="isDel != null">is_del,</if>
|
|
||||||
<if test="createBy != null">create_by,</if>
|
|
||||||
<if test="createTime != null">create_time,</if>
|
|
||||||
<if test="updateBy != null">update_by,</if>
|
|
||||||
<if test="updateTime != null">update_time,</if>
|
|
||||||
<if test="remark != null">remark,</if>
|
|
||||||
</trim>
|
|
||||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
|
||||||
<if test="id != null">#{id},</if>
|
|
||||||
<if test="cfgType != null">#{cfgType},</if>
|
|
||||||
<if test="cfgId != null">#{cfgId},</if>
|
|
||||||
<if test="appId != null">#{appId},</if>
|
|
||||||
<if test="publicKey != null">#{publicKey},</if>
|
|
||||||
<if test="privateKey != null">#{privateKey},</if>
|
|
||||||
<if test="projectId != null">#{projectId},</if>
|
|
||||||
<if test="deptId != null">#{deptId},</if>
|
|
||||||
<if test="isDel != null">#{isDel},</if>
|
|
||||||
<if test="createBy != null">#{createBy},</if>
|
|
||||||
<if test="createTime != null">#{createTime},</if>
|
|
||||||
<if test="updateBy != null">#{updateBy},</if>
|
|
||||||
<if test="updateTime != null">#{updateTime},</if>
|
|
||||||
<if test="remark != null">#{remark},</if>
|
|
||||||
</trim>
|
|
||||||
</insert>
|
|
||||||
|
|
||||||
<update id="updateSysApplyConfig" parameterType="com.yanzhu.job.domain.SysApplyConfig">
|
|
||||||
update sys_apply_config
|
|
||||||
<trim prefix="SET" suffixOverrides=",">
|
|
||||||
<if test="cfgType != null">cfg_type = #{cfgType},</if>
|
|
||||||
<if test="cfgId != null">cfg_id = #{cfgId},</if>
|
|
||||||
<if test="appId != null">app_id = #{appId},</if>
|
|
||||||
<if test="publicKey != null">public_key = #{publicKey},</if>
|
|
||||||
<if test="privateKey != null">private_key = #{privateKey},</if>
|
|
||||||
<if test="projectId != null">project_id = #{projectId},</if>
|
|
||||||
<if test="deptId != null">dept_id = #{deptId},</if>
|
|
||||||
<if test="isDel != null">is_del = #{isDel},</if>
|
|
||||||
<if test="createBy != null">create_by = #{createBy},</if>
|
|
||||||
<if test="createTime != null">create_time = #{createTime},</if>
|
|
||||||
<if test="updateBy != null">update_by = #{updateBy},</if>
|
|
||||||
<if test="updateTime != null">update_time = #{updateTime},</if>
|
|
||||||
<if test="remark != null">remark = #{remark},</if>
|
|
||||||
</trim>
|
|
||||||
where id = #{id}
|
|
||||||
</update>
|
|
||||||
|
|
||||||
<delete id="deleteSysApplyConfigById" parameterType="Long">
|
|
||||||
delete from sys_apply_config where id = #{id}
|
|
||||||
</delete>
|
|
||||||
|
|
||||||
<delete id="deleteSysApplyConfigByIds" parameterType="String">
|
|
||||||
delete from sys_apply_config where id in
|
|
||||||
<foreach item="id" collection="array" open="(" separator="," close=")">
|
|
||||||
#{id}
|
|
||||||
</foreach>
|
|
||||||
</delete>
|
|
||||||
|
|
||||||
</mapper>
|
|
|
@ -220,10 +220,11 @@ public class ProPlanController extends BaseController
|
||||||
* 获取计划管理详细信息
|
* 获取计划管理详细信息
|
||||||
*/
|
*/
|
||||||
@GetMapping(value = "/findPlanDatas/{proId}")
|
@GetMapping(value = "/findPlanDatas/{proId}")
|
||||||
public AjaxResult findPlanDatas(@PathVariable("proId") Long proId)
|
public AjaxResult findPlanDatas(@PathVariable("proId") Long proId,String noBim)
|
||||||
{
|
{
|
||||||
ProPlan planQuery = new ProPlan();
|
ProPlan planQuery = new ProPlan();
|
||||||
planQuery.setProjectId(proId);
|
planQuery.setProjectId(proId);
|
||||||
|
planQuery.setNoBim(noBim);
|
||||||
List<ProPlan> proPlans = proPlanService.findPlanDatas(planQuery);
|
List<ProPlan> proPlans = proPlanService.findPlanDatas(planQuery);
|
||||||
return success(proPlans);
|
return success(proPlans);
|
||||||
}
|
}
|
||||||
|
|
|
@ -151,4 +151,16 @@ public class ProProjectInfoController extends BaseController
|
||||||
return getDataTable(list);
|
return getDataTable(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/getProjectBimConfig/{id}")
|
||||||
|
public AjaxResult getProjectBimConfig(@PathVariable("id") Long id)
|
||||||
|
{
|
||||||
|
return success(proProjectInfoService.getProjectBimConfig(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/updateProjectBimConfig")
|
||||||
|
public AjaxResult updateProjectBimConfig(@RequestBody ProProjectInfo proProjectInfo)
|
||||||
|
{
|
||||||
|
return toAjax(proProjectInfoService.updateProjectBimConfig(proProjectInfo));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -77,4 +77,18 @@ public interface IProProjectInfoService
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public List<ProProjectInfo> selectMyProjectList(com.yanzhu.manage.domain.ProProjectInfo proProjectInfo);
|
public List<ProProjectInfo> selectMyProjectList(com.yanzhu.manage.domain.ProProjectInfo proProjectInfo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目BIM信息
|
||||||
|
* @param id
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
String getProjectBimConfig(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新项目BIM信息
|
||||||
|
* @param proProjectInfo
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
int updateProjectBimConfig(ProProjectInfo proProjectInfo);
|
||||||
}
|
}
|
||||||
|
|
|
@ -100,6 +100,28 @@ public class ProProjectInfoServiceImpl implements IProProjectInfoService
|
||||||
return proProjectInfoMapper.selectMyProjectList(proProjectInfo);
|
return proProjectInfoMapper.selectMyProjectList(proProjectInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目BIM信息
|
||||||
|
*
|
||||||
|
* @param id 项目信息主键
|
||||||
|
* @return 项目信息
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String getProjectBimConfig(Long id) {
|
||||||
|
return proProjectInfoMapper.getProjectBimConfig(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新项目BIM信息
|
||||||
|
*
|
||||||
|
* @param proProjectInfo 项目信息
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int updateProjectBimConfig(ProProjectInfo proProjectInfo) {
|
||||||
|
return proProjectInfoMapper.updateProjectBimConfig(proProjectInfo);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询项目信息
|
* 查询项目信息
|
||||||
*
|
*
|
||||||
|
|
|
@ -20,6 +20,13 @@
|
||||||
<script src="/cdn/echarts/echarts.min.js"></script>
|
<script src="/cdn/echarts/echarts.min.js"></script>
|
||||||
<script src="/cdn/bim/sapi/BIMGISEngine.js"></script>
|
<script src="/cdn/bim/sapi/BIMGISEngine.js"></script>
|
||||||
<script src="/cdn/bim/sapi/config.js?v=20240415"></script>
|
<script src="/cdn/bim/sapi/config.js?v=20240415"></script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="/cesium/Widgets/widgets.css" />
|
||||||
|
<!-- <script src="/cesium/jquery-3.0.0.min.js"></script> -->
|
||||||
|
<script src="/cesium/Cesium.js?v=20230913"></script>
|
||||||
|
<script src="/cesium/BIMGISEngine-min.js?v=20230920"></script>
|
||||||
|
<script src="/cesium/initApi.js?v=20230920"></script>
|
||||||
|
|
||||||
<!--[if lt IE 11
|
<!--[if lt IE 11
|
||||||
]><script>
|
]><script>
|
||||||
window.location.href = "/html/ie.html";
|
window.location.href = "/html/ie.html";
|
||||||
|
|
|
@ -52,9 +52,9 @@ export function findOnlyPlan(proId) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询计划管理
|
// 查询计划管理
|
||||||
export function findPlanDatas(proId) {
|
export function findPlanDatas(proId,noBim) {
|
||||||
return request({
|
return request({
|
||||||
url: '/manage/plan/findPlanDatas/' + proId,
|
url: '/manage/plan/findPlanDatas/' + proId+"?noBim="+(noBim||''),
|
||||||
method: 'get'
|
method: 'get'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,3 +51,23 @@ export function delProProjectInfo(id) {
|
||||||
method: 'delete'
|
method: 'delete'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获取项目BIM配置信息
|
||||||
|
export function getProjectBimConfig(id){
|
||||||
|
return request({
|
||||||
|
url: '/manage/proProjectInfo/getProjectBimConfig/'+id,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取项目BIM配置信息
|
||||||
|
export function updateProjectBimConfig(id,data){
|
||||||
|
return request({
|
||||||
|
url: '/manage/proProjectInfo/updateProjectBimConfig',
|
||||||
|
method: 'post',
|
||||||
|
data: {
|
||||||
|
id:id,
|
||||||
|
bimConfig:JSON.stringify(data)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
|
@ -42,8 +42,8 @@ export default {
|
||||||
openStatus: 2,
|
openStatus: 2,
|
||||||
},
|
},
|
||||||
form: {
|
form: {
|
||||||
longitude: '108.88',
|
longitude: '34.2',
|
||||||
latitude: '34.2',
|
latitude: '108.88',
|
||||||
},
|
},
|
||||||
formRules: {
|
formRules: {
|
||||||
longitude: [{ required: true, message: '请输入经度值' }],
|
longitude: [{ required: true, message: '请输入经度值' }],
|
||||||
|
|
|
@ -0,0 +1,75 @@
|
||||||
|
<template>
|
||||||
|
<el-dialog title="项目BIM设置" width="300" :modal-append-to-body="false" :close-on-click-modal="false" v-model="show"
|
||||||
|
class="bim-config-dialog footer-center noscroll">
|
||||||
|
<el-form ref="form" :model="cfg" label-width="120px">
|
||||||
|
<el-form-item label="是否显示GIS" prop="showGis">
|
||||||
|
<el-switch v-model="cfg.showGis" active-text="是" inactive-text="否"></el-switch>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="背景色" prop="background" v-show="!cfg.showGis" :key="cfg.showGis">
|
||||||
|
<el-color-picker v-model="cfg.background" show-alpha />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="客户端渲染" prop="clientApi">
|
||||||
|
<el-switch v-model="cfg.clientApi" active-text="是" inactive-text="否"></el-switch>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<div class="footer-btn" style="text-align: center;">
|
||||||
|
<el-button type="primary" @click="onSubmit">保存</el-button>
|
||||||
|
<el-button @click="onCancel">取消</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import useUserStore from "@/store/modules/user";
|
||||||
|
import { getProjectBimConfig,updateProjectBimConfig } from "@/api/manage/proProjectInfo.js";
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
show: false,
|
||||||
|
currentPrjId: null,
|
||||||
|
cfg:{
|
||||||
|
showGis:false,
|
||||||
|
background:"",
|
||||||
|
clientApi:false,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onSubmit(){
|
||||||
|
this.$modal.confirm("确定保存吗?").then(() => {
|
||||||
|
updateProjectBimConfig(this.currentPrjId,{
|
||||||
|
showGis:this.cfg.showGis,
|
||||||
|
background:this.cfg.background,
|
||||||
|
clientApi:this.cfg.clientApi,
|
||||||
|
}).then(res=>{
|
||||||
|
this.$message.success("保存成功");
|
||||||
|
this.show=false;
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
onCancel(){
|
||||||
|
this.show=false;
|
||||||
|
},
|
||||||
|
showDialog() {
|
||||||
|
this.userStore = useUserStore();
|
||||||
|
this.currentPrjId = this.userStore.currentPrjId;
|
||||||
|
this.show = true
|
||||||
|
this.loadData();
|
||||||
|
},
|
||||||
|
loadData(){
|
||||||
|
getProjectBimConfig(this.currentPrjId).then(d=>{
|
||||||
|
|
||||||
|
if(d.msg){
|
||||||
|
let config=this.$tryToJson(d.msg,{});
|
||||||
|
this.cfg.background=config.background||"";
|
||||||
|
this.cfg.showGis=config.showGis||false;
|
||||||
|
this.cfg.clientApi=config.clientApi||false;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style></style>
|
|
@ -24,6 +24,7 @@
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button type="primary" plain icon="Plus" v-if="data.isAdmin" @click="handleAdd">绑定模型</el-button>
|
<el-button type="primary" plain icon="Plus" v-if="data.isAdmin" @click="handleAdd">绑定模型</el-button>
|
||||||
<el-button type="primary" plain icon="Plus" v-if="data.isAdmin" @click="handleUpload">上传模型</el-button>
|
<el-button type="primary" plain icon="Plus" v-if="data.isAdmin" @click="handleUpload">上传模型</el-button>
|
||||||
|
<el-button type="primary" plain icon="Plus" v-if="data.isAdmin" @click="doBimConfig">BIM设置</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
@ -101,6 +102,7 @@
|
||||||
<modelSelectDialog ref="selDlg" @select="doModelSelect" />
|
<modelSelectDialog ref="selDlg" @select="doModelSelect" />
|
||||||
<uploadModelDialog ref="uploadDlg" />
|
<uploadModelDialog ref="uploadDlg" />
|
||||||
<modelDialog ref="mDlg"></modelDialog>
|
<modelDialog ref="mDlg"></modelDialog>
|
||||||
|
<bimConfigDialog ref="configDlg"></bimConfigDialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -113,6 +115,7 @@ import { onMounted } from "vue";
|
||||||
import modelSelectDialog from "./modelSelectDialog.vue";
|
import modelSelectDialog from "./modelSelectDialog.vue";
|
||||||
import uploadModelDialog from "./uploadModelDialog.vue";
|
import uploadModelDialog from "./uploadModelDialog.vue";
|
||||||
import modelDialog from "./modelDialog2.vue";
|
import modelDialog from "./modelDialog2.vue";
|
||||||
|
import bimConfigDialog from "./bimConfigDialog.vue";
|
||||||
import { fileSize } from "@/utils";
|
import { fileSize } from "@/utils";
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const unitInfos = [
|
const unitInfos = [
|
||||||
|
@ -137,6 +140,7 @@ const title = ref("");
|
||||||
const selDlg = ref();
|
const selDlg = ref();
|
||||||
const uploadDlg = ref();
|
const uploadDlg = ref();
|
||||||
const mDlg = ref();
|
const mDlg = ref();
|
||||||
|
const configDlg = ref();
|
||||||
const data = reactive({
|
const data = reactive({
|
||||||
form: {},
|
form: {},
|
||||||
queryParams: {
|
queryParams: {
|
||||||
|
@ -167,6 +171,10 @@ const data = reactive({
|
||||||
});
|
});
|
||||||
|
|
||||||
const { queryParams, form, rules } = toRefs(data);
|
const { queryParams, form, rules } = toRefs(data);
|
||||||
|
|
||||||
|
function doBimConfig(){
|
||||||
|
configDlg.value.showDialog();
|
||||||
|
}
|
||||||
function showModel(row) {
|
function showModel(row) {
|
||||||
mDlg.value.showDialog(JSON.parse(row.gisJson));
|
mDlg.value.showDialog(JSON.parse(row.gisJson));
|
||||||
}
|
}
|
||||||
|
|
|
@ -398,8 +398,8 @@ export default {
|
||||||
if (that.srs.split(":").length == 2) {
|
if (that.srs.split(":").length == 2) {
|
||||||
let current = that.srs.split(":")[1].split(",");
|
let current = that.srs.split(":")[1].split(",");
|
||||||
if (current.length == 2) {
|
if (current.length == 2) {
|
||||||
_paras.longitude = (Math.PI / 180) * current[1];
|
_paras.longitude = (Math.PI / 180) * current[0];
|
||||||
_paras.latitude = (Math.PI / 180) * current[0];
|
_paras.latitude = (Math.PI / 180) * current[1];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -437,6 +437,7 @@ export default {
|
||||||
// _paras.draco = that.draco;
|
// _paras.draco = that.draco;
|
||||||
// _paras.compressionLevel = values.compressionLevel;
|
// _paras.compressionLevel = values.compressionLevel;
|
||||||
_paras.isLod = that.isLod;
|
_paras.isLod = that.isLod;
|
||||||
|
_paras.srs = ""
|
||||||
if (_paras.isLod) {
|
if (_paras.isLod) {
|
||||||
_paras.lodNAryTreeXYZ = [
|
_paras.lodNAryTreeXYZ = [
|
||||||
that.modelValue.xCount,
|
that.modelValue.xCount,
|
||||||
|
|
|
@ -0,0 +1,165 @@
|
||||||
|
<template>
|
||||||
|
<div class="hide-features">
|
||||||
|
<div style="padding: 0px 10px 10px" v-show="hideParts.length > 0">
|
||||||
|
<el-button @click="delAllDelList">删除所有</el-button>
|
||||||
|
<el-button @click="doSaveHide">保存</el-button>
|
||||||
|
</div>
|
||||||
|
<div class="sel-list scroll hide-list" :key="hideEl">
|
||||||
|
<div v-for="(it, idx) in hideParts" :key="idx" class="div-sel-item">
|
||||||
|
<el-tooltip placement="bottom" :content="it.info">
|
||||||
|
<div class="sel-item-info">{{ it.info }}</div>
|
||||||
|
</el-tooltip>
|
||||||
|
<el-button link @click="delHideItem(idx)">删除</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
getModelFeatureInfos,updateBimModel
|
||||||
|
} from "@/api/bim/bimModel";
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
me: {
|
||||||
|
type: Object,
|
||||||
|
default: () => ({}),
|
||||||
|
},
|
||||||
|
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
hideParts: [],
|
||||||
|
hideEl: 0,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch:{
|
||||||
|
hideParts(val){
|
||||||
|
this.me.hideParts=val;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
doSaveHide(){
|
||||||
|
this.$modal.confirm("确定保存吗?").then(() => {
|
||||||
|
let obj={};
|
||||||
|
this.hideParts.forEach(it=>{
|
||||||
|
let modelId=it.modelId;
|
||||||
|
if(!obj[modelId]){
|
||||||
|
obj[modelId]=[];
|
||||||
|
}
|
||||||
|
obj[modelId].push({
|
||||||
|
featureId:it.featureId,
|
||||||
|
externalId:it.externalId,
|
||||||
|
modelId:it.modelId,
|
||||||
|
info:it.info
|
||||||
|
});
|
||||||
|
})
|
||||||
|
for(let modelId in obj){
|
||||||
|
let modelInfo=this.me.models.find(it=>it.modelId==modelId);
|
||||||
|
if(modelInfo){
|
||||||
|
modelInfo.bimCfg.hideParts=obj[modelId];
|
||||||
|
modelInfo.bimConfig=JSON.stringify(modelInfo.bimCfg);
|
||||||
|
updateBimModel(modelInfo).then(res => {
|
||||||
|
this.$message.success("保存成功");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
delAllDelList() {
|
||||||
|
this.$modal.confirm("确定删除吗?").then(() => {
|
||||||
|
api.Feature.setVisible(this.hideParts.map(it => it.featureId).join("#"), true);
|
||||||
|
this.hideParts = [];
|
||||||
|
this.hideEl++;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
delHideItem(idx) {
|
||||||
|
api.Feature.setVisible(this.hideParts[idx].featureId, true);
|
||||||
|
this.hideParts.splice(idx, 1);
|
||||||
|
},
|
||||||
|
doHideFeatures(hideParts) {
|
||||||
|
let that = this;
|
||||||
|
this.hideParts=hideParts||[];
|
||||||
|
api.Public.clearHandler();
|
||||||
|
api.Feature.getByEvent(false);
|
||||||
|
api.Feature.getByEvent(true, async (n) => {
|
||||||
|
if (n && n["id"]) {
|
||||||
|
let featureId = n.id;
|
||||||
|
let datas = await that.getServerFeatureInfos(that, [featureId]);
|
||||||
|
datas.forEach(it => {
|
||||||
|
that.hideParts.push(it);
|
||||||
|
});
|
||||||
|
//that.hideParts.push(featureId);
|
||||||
|
api.Feature.setVisible(featureId, false);
|
||||||
|
that.hideEl++;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
async getServerFeatureInfos(that, ids) {
|
||||||
|
if (ids.length == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let tmps = ids[0].split("^");
|
||||||
|
if (tmps.length < 2) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let modelId = tmps[0];
|
||||||
|
let externalIds = ids.map((it) => it.split("^")[1]);
|
||||||
|
let res = await getModelFeatureInfos(modelId, externalIds);
|
||||||
|
return (res.data || []).map((o) => {
|
||||||
|
o = this.convertFeatureInfo(o, modelId);
|
||||||
|
return o;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
convertFeatureInfo(o, modelId) {
|
||||||
|
o.modelId = modelId;
|
||||||
|
o.featureId = o.modelId + "^" + o.externalId;
|
||||||
|
o.name = o.name || "";
|
||||||
|
o.name = o.name.replaceAll('"', "").replaceAll("'", "").replaceAll("\\", "");
|
||||||
|
o.info = `[${o.externalId}]${o.groupname}-${o.name}`;
|
||||||
|
return o;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
.hide-features {
|
||||||
|
padding: 0px 0px 20px;
|
||||||
|
height: 80vh;
|
||||||
|
.sel-list {
|
||||||
|
padding: 0px 10px 10px;
|
||||||
|
height: 100%;
|
||||||
|
overflow-y: auto;
|
||||||
|
|
||||||
|
&.hide-list {
|
||||||
|
height: calc(100% - 40px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.div-sel-item {
|
||||||
|
background-color: #f7f7f975;
|
||||||
|
position: relative;
|
||||||
|
color: #555;
|
||||||
|
line-height: 30px;
|
||||||
|
padding: 0px 10px;
|
||||||
|
margin-top: 5px;
|
||||||
|
|
||||||
|
.sel-item-info {
|
||||||
|
width: calc(100% - 40px);
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-button {
|
||||||
|
position: absolute;
|
||||||
|
right: 10px;
|
||||||
|
top: 4px;
|
||||||
|
color: #f40606;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -10,19 +10,11 @@
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="scroll-box model-tree">
|
<div class="scroll-box model-tree">
|
||||||
<el-tree
|
<el-tree :key="treeKey" ref="tree" :props="{
|
||||||
:key="treeKey"
|
|
||||||
ref="tree"
|
|
||||||
:props="{
|
|
||||||
children: 'children',
|
children: 'children',
|
||||||
label: 'title',
|
label: 'title',
|
||||||
isLeaf: 'leaf',
|
isLeaf: 'leaf',
|
||||||
}"
|
}" node-key="key" @check="onCheckTree" :load="loadNode" lazy show-checkbox></el-tree>
|
||||||
node-key="key"
|
|
||||||
@check="onCheckTree"
|
|
||||||
:load="loadNode"
|
|
||||||
lazy
|
|
||||||
show-checkbox></el-tree>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -31,6 +23,10 @@
|
||||||
import { getModelTree, getTreeAllLeafChild } from "@/api/bim/bimModel";
|
import { getModelTree, getTreeAllLeafChild } from "@/api/bim/bimModel";
|
||||||
export default {
|
export default {
|
||||||
props: {
|
props: {
|
||||||
|
me: {
|
||||||
|
type: Object,
|
||||||
|
default: () => ({}),
|
||||||
|
},
|
||||||
projectMessage: {
|
projectMessage: {
|
||||||
type: Object,
|
type: Object,
|
||||||
default: undefined,
|
default: undefined,
|
||||||
|
@ -148,7 +144,6 @@ export default {
|
||||||
let o = this.convertFeatureInfo(it, data.modelId);
|
let o = this.convertFeatureInfo(it, data.modelId);
|
||||||
return o;
|
return o;
|
||||||
});
|
});
|
||||||
//addToAllFeatures(that, tmps);
|
|
||||||
resolve(tmps);
|
resolve(tmps);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -194,12 +189,34 @@ export default {
|
||||||
api.Model.add(
|
api.Model.add(
|
||||||
url,
|
url,
|
||||||
modelId,
|
modelId,
|
||||||
() => {},
|
() => {
|
||||||
|
console.log("加载模型成功2");
|
||||||
|
},
|
||||||
() => {
|
() => {
|
||||||
console.log("加载模型成功");
|
console.log("加载模型成功");
|
||||||
|
let modelInfo = this.projectMessage.find(m => m.modelId == modelId);
|
||||||
|
if (modelInfo) {
|
||||||
|
let cfg = modelInfo.bimCfg;
|
||||||
|
let x = cfg?.x || 0;
|
||||||
|
let y = cfg?.y || 0;
|
||||||
|
let z = cfg?.z || 0;
|
||||||
|
let rotateZ = cfg?.rotateZ || 0;
|
||||||
|
if (x * 1 + y * 1 + z * 1 != 0) {
|
||||||
|
api.Model.moveToPosition([x, y, z], 0, modelId)
|
||||||
|
}
|
||||||
|
if (rotateZ * 1 != 0) {
|
||||||
|
api.Model.rotate(0, 0, rotateZ, modelId)
|
||||||
|
}
|
||||||
|
if (cfg && cfg.hideParts) {
|
||||||
|
cfg.hideParts.forEach(it => {
|
||||||
|
this.me.hideParts.push(it);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
cb && cb();
|
cb && cb();
|
||||||
this.$emit("change");
|
this.$emit("change");
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
|
api.Model.location(modelId);
|
||||||
if (this.$parent.viewPoint) {
|
if (this.$parent.viewPoint) {
|
||||||
api.Camera.setViewPort(this.$parent.viewPoint);
|
api.Camera.setViewPort(this.$parent.viewPoint);
|
||||||
} else {
|
} else {
|
||||||
|
@ -207,6 +224,22 @@ export default {
|
||||||
this.$emit("modelAdd", p);
|
this.$emit("modelAdd", p);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
let hideCnt = 0;
|
||||||
|
let hideFn = () => {
|
||||||
|
hideCnt++;
|
||||||
|
if(hideCnt>30){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
setTimeout(() => {
|
||||||
|
let featureIds = (this.me.hideParts || []).map(it => it.featureId);
|
||||||
|
if (featureIds.length > 0) {
|
||||||
|
console.log(featureIds.join("#"))
|
||||||
|
api.Feature.setVisible(featureIds.join("#"), false);
|
||||||
|
}
|
||||||
|
hideFn();
|
||||||
|
}, 100)
|
||||||
|
};
|
||||||
|
hideFn();
|
||||||
}, 1000);
|
}, 1000);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -235,6 +268,7 @@ export default {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (checkNode.type == "model") {
|
if (checkNode.type == "model") {
|
||||||
|
let func = () => {
|
||||||
if (checked) {
|
if (checked) {
|
||||||
api.Model.setVisible(checkNode.modelId, true);
|
api.Model.setVisible(checkNode.modelId, true);
|
||||||
api.Model.original(checkNode.modelId);
|
api.Model.original(checkNode.modelId);
|
||||||
|
@ -245,6 +279,13 @@ export default {
|
||||||
this.projectMessage.find((mm) => mm.modelId == checkNode.modelId).visible = false;
|
this.projectMessage.find((mm) => mm.modelId == checkNode.modelId).visible = false;
|
||||||
this.$emit("change");
|
this.$emit("change");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if (!api.m_model.has(checkNode.modelId)) {
|
||||||
|
this.addModel(checkNode.modelId, func);
|
||||||
|
} else {
|
||||||
|
func();
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.showItem(checkNode, event);
|
this.showItem(checkNode, event);
|
||||||
|
@ -324,33 +365,41 @@ export default {
|
||||||
left: 20px;
|
left: 20px;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
background: #274754;
|
background: #274754;
|
||||||
|
|
||||||
&.hide-tree {
|
&.hide-tree {
|
||||||
height: 50px;
|
height: 50px;
|
||||||
|
|
||||||
.ant-tree {
|
.ant-tree {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-header {
|
.nav-header {
|
||||||
border-bottom: solid 1px #fff;
|
border-bottom: solid 1px #fff;
|
||||||
line-height: 40px;
|
line-height: 40px;
|
||||||
padding: 0px 10px;
|
padding: 0px 10px;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
.title {
|
.title {
|
||||||
color: rgb(0, 255, 212);
|
color: rgb(0, 255, 212);
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.toolbar {
|
.toolbar {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 10px;
|
right: 10px;
|
||||||
|
|
||||||
.el-icon {
|
.el-icon {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.ant-tree {
|
.ant-tree {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.scroll-box {
|
.scroll-box {
|
||||||
margin-top: 15px;
|
margin-top: 15px;
|
||||||
height: 64vh;
|
height: 64vh;
|
||||||
|
@ -379,6 +428,7 @@ export default {
|
||||||
.ant-tree-node-content-wrapper {
|
.ant-tree-node-content-wrapper {
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
|
|
||||||
&.ant-tree-node-selected {
|
&.ant-tree-node-selected {
|
||||||
background: #409eff54 !important;
|
background: #409eff54 !important;
|
||||||
}
|
}
|
||||||
|
@ -389,24 +439,30 @@ export default {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.model-tree {
|
.model-tree {
|
||||||
height: calc(100% - 60px);
|
height: calc(100% - 60px);
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
|
|
||||||
.el-tree {
|
.el-tree {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
color: #eee;
|
color: #eee;
|
||||||
|
|
||||||
.el-checkbox {
|
.el-checkbox {
|
||||||
color: #45fdfe;
|
color: #45fdfe;
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-tree-node {
|
.el-tree-node {
|
||||||
&:focus {
|
&:focus {
|
||||||
&>.el-tree-node__content {
|
&>.el-tree-node__content {
|
||||||
background: #3489d966;
|
background: #3489d966;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background: #3489d966;
|
background: #3489d966;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-tree-node__content:hover {
|
.el-tree-node__content:hover {
|
||||||
background: #3489d966;
|
background: #3489d966;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,194 @@
|
||||||
|
<template>
|
||||||
|
<div class="move-model">
|
||||||
|
<el-form ref="form" :model="form" label-width="40px">
|
||||||
|
<div class="move-button">
|
||||||
|
<el-button type="primary" @click="doModelMove">
|
||||||
|
<svg-icon icon-class="position" /> 在地图上移动模型
|
||||||
|
</el-button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="nav-title">位置
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<el-form-item label="经度">
|
||||||
|
<el-input v-model="form.x"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="纬度">
|
||||||
|
<el-input v-model="form.y"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="高度">
|
||||||
|
<el-input v-model="form.z"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<div class="button-group">
|
||||||
|
<el-button type="primary" @click="updatePosition">更新位置</el-button>
|
||||||
|
</div>
|
||||||
|
<div class="nav-title">旋转</div>
|
||||||
|
<el-form-item label="绕X轴">
|
||||||
|
<el-slider v-model="form.rotateZ" :min="-180" :max="180"></el-slider>
|
||||||
|
<el-input-number v-model="form.rotateZ" placeholder="请输入旋转角度" :min="-180" :max="180"></el-input-number>
|
||||||
|
</el-form-item>
|
||||||
|
<div class="button-group">
|
||||||
|
<el-button type="primary" @click="updateRotate">更新旋转角度</el-button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="footer-btn">
|
||||||
|
<el-button @click="resetRotate">清除模型偏移和旋转</el-button>
|
||||||
|
<el-button type="primary" @click="onSubmit">保存</el-button>
|
||||||
|
<el-button @click="onCancel">取消</el-button>
|
||||||
|
</div>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { ElMessage, ElTooltip } from 'element-plus';
|
||||||
|
import { updateBimModel } from "@/api/bim/bimModel"
|
||||||
|
import SAPITools from './sapiTools.js'
|
||||||
|
import APITools from './apiTools.js'
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
me: {
|
||||||
|
type: Object,
|
||||||
|
default: () => ({}),
|
||||||
|
},
|
||||||
|
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
modelId: null,
|
||||||
|
movePoint: null,
|
||||||
|
form: {
|
||||||
|
x: 0,
|
||||||
|
y: 0,
|
||||||
|
z: 0,
|
||||||
|
rotateZ: 0
|
||||||
|
|
||||||
|
},
|
||||||
|
saveData: {
|
||||||
|
x: 0,
|
||||||
|
y: 0,
|
||||||
|
z: 0,
|
||||||
|
rotateZ: 0
|
||||||
|
},
|
||||||
|
movePoint: null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
doModelMove() {
|
||||||
|
ElMessage.info("左键单击选择移动位置,右键单击结束操作!");
|
||||||
|
if(this.me.bimCfg.clientApi){
|
||||||
|
APITools.moveToPosition(this);
|
||||||
|
}else{
|
||||||
|
APITools.moveToPosition(this);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onCancel() {
|
||||||
|
this.resetPosition();
|
||||||
|
this.me.showMove = false;
|
||||||
|
this.me.activeMenu = -1;
|
||||||
|
},
|
||||||
|
onSubmit() {
|
||||||
|
this.$modal.confirm("确定保存吗?").then(() => {
|
||||||
|
let model = this.me.models.find(model => model.modelId == this.modelId);
|
||||||
|
if (model) {
|
||||||
|
model.bimConfig = JSON.stringify(this.saveData);
|
||||||
|
model.bimCfg = this.saveData;
|
||||||
|
updateBimModel(model).then(res => {
|
||||||
|
this.$message.success("保存成功");
|
||||||
|
this.me.showMove = false;
|
||||||
|
this.me.activeMenu = -1;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
initData(modelId) {
|
||||||
|
this.modelId = modelId;
|
||||||
|
let modelInfo = this.me.models.find(m => m.modelId == modelId);
|
||||||
|
if (modelInfo) {
|
||||||
|
let cfg = modelInfo.bimCfg;
|
||||||
|
this.form.x = cfg?.x || 0;
|
||||||
|
this.form.y = cfg?.y || 0;
|
||||||
|
this.form.z = cfg?.z || 0;
|
||||||
|
this.form.rotateZ = cfg?.rotateZ || 0;
|
||||||
|
|
||||||
|
|
||||||
|
} else {
|
||||||
|
this.$message.error("模型信息不存在");
|
||||||
|
}
|
||||||
|
this.saveData.x = this.form.x;
|
||||||
|
this.saveData.y = this.form.y;
|
||||||
|
this.saveData.z = this.form.z;
|
||||||
|
this.saveData.rotateZ = this.form.rotateZ;
|
||||||
|
|
||||||
|
},
|
||||||
|
resetPosition() {
|
||||||
|
let modelInfo = this.me.models.find(model => model.modelId == this.modelId);
|
||||||
|
if (modelInfo) {
|
||||||
|
let cfg = modelInfo.bimCfg;
|
||||||
|
let x = cfg?.x || 0;
|
||||||
|
let y = cfg?.y || 0;
|
||||||
|
let z = cfg?.z || 0;
|
||||||
|
let rotateZ = cfg?.rotateZ || 0;
|
||||||
|
if (x * 1 + y * 1 + z * 1 != 0) {
|
||||||
|
api.Model.moveToPosition([x, y, z], 0, this.modelId)
|
||||||
|
}
|
||||||
|
if (rotateZ * 1 != 0) {
|
||||||
|
api.Model.rotate(0, 0, rotateZ, this.modelId)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
updatePosition() {
|
||||||
|
api.Model.moveToPosition([this.form.x, this.form.y, this.form.z], 0, this.modelId)
|
||||||
|
this.saveData.x = this.form.x;
|
||||||
|
this.saveData.y = this.form.y;
|
||||||
|
this.saveData.z = this.form.z;
|
||||||
|
if (this.saveData.rotateZ != 0) {
|
||||||
|
api.Model.rotate(0, 0, this.saveData.rotateZ, this.modelId)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
updateRotate() {
|
||||||
|
api.Model.rotate(0, 0, this.form.rotateZ, this.modelId)
|
||||||
|
this.saveData.rotateZ = this.form.rotateZ;
|
||||||
|
},
|
||||||
|
resetRotate() {
|
||||||
|
api.Model.clearRotation(this.modelId)
|
||||||
|
this.saveData = {
|
||||||
|
x: 0,
|
||||||
|
y: 0,
|
||||||
|
z: 0,
|
||||||
|
rotateZ: 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
.move-model {
|
||||||
|
padding: 0px 10px 20px;
|
||||||
|
|
||||||
|
.move-button {
|
||||||
|
position: absolute;
|
||||||
|
right: 10px;
|
||||||
|
top: 45px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-title {
|
||||||
|
background: linear-gradient(45deg, #00000033, transparent);
|
||||||
|
line-height: 40px;
|
||||||
|
padding-left: 10px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-group {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer-btn {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,64 @@
|
||||||
|
import { ElMessage, ElTooltip } from 'element-plus';
|
||||||
|
//初始化
|
||||||
|
function initEngine(that) {
|
||||||
|
let opt = {
|
||||||
|
container: "bimSettingContainer", //[必须]容器id
|
||||||
|
showfps: false, //[可选]显示fps
|
||||||
|
openearth: true, //[可选]开启gis场景
|
||||||
|
// imageryprovider: "tianditu_image", //[可选]gis底图
|
||||||
|
openterrain: false, //[可选]开启gis地形
|
||||||
|
maxspaceerror: 5000, //[可选]模型可视距离; 建议设置:常规BIM时3000或更大、BIM启用LOD时100~1000、倾斜摄影,点云数据时0.1~0.5
|
||||||
|
loading: false, //[可选]gis模式加载动画
|
||||||
|
bgcolor: "#87CEFA", //[可选]bim模式场景背景色
|
||||||
|
selectedcolor: "#FFFF00", //[可选]选中构件颜色
|
||||||
|
throughwall: true, //[可选]相机是否穿墙
|
||||||
|
sitepath: "../Cesium/",//[可选]设置天空盒路径,指向Cesium文件夹
|
||||||
|
editmode: true, //[可选]是否开启编辑模式
|
||||||
|
searchbox: true, //[可选]gis模型是否显示搜索框
|
||||||
|
mapbox: true, //[可选]gis模型是否显示地图选择
|
||||||
|
isRequestWebgl2: true, //[可选]是否使用webgl2进行渲染
|
||||||
|
colorBlendMode: 1, //0:HIGHLIGHT 1:REPLACE 2:MIX ,构件选中后的着色模式
|
||||||
|
secretkey: window.config.secretKey,
|
||||||
|
language: "zh-CN", // 语言国际化 中文简体(zh-CN)、中文繁体(zh-TW)、英文(en), 默认中文简体
|
||||||
|
targetFrameRate: 20, //目标渲染帧率 默认20
|
||||||
|
};
|
||||||
|
window.api = new API(opt);
|
||||||
|
console.log("初始化成功");
|
||||||
|
if (that.bimCfg.showGis) {
|
||||||
|
that.showGis = true;
|
||||||
|
that.doChangeGis();
|
||||||
|
} else if (that.bimCfg.background) {
|
||||||
|
api.Public.setGisState(false, that.bimCfg.background);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//模型偏移管理
|
||||||
|
function doModelMove(that) {
|
||||||
|
api.Public.pickupCoordinate(false);
|
||||||
|
api.Public.event("LEFT_CLICK", (t) => {
|
||||||
|
api.Feature.GetFeatureByEvent(t.position, e => {
|
||||||
|
if (e && e["id"]) {
|
||||||
|
let modelId = e.id.split("^")[0];
|
||||||
|
that.showMove = true;
|
||||||
|
that.$refs.moveModel.initData(modelId)
|
||||||
|
} else {
|
||||||
|
ElMessage.warning("请在模型上选点!");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
//在地图上移动模型
|
||||||
|
function moveToPosition(that){
|
||||||
|
api.Public.event("LEFT_CLICK",(n)=>{
|
||||||
|
api.Public.pickupCoordinate(n.position,e=>{
|
||||||
|
api.Public.convertWorldToCartographicLocation(e,m=>{
|
||||||
|
console.log(e,m)
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
export default {
|
||||||
|
initEngine,
|
||||||
|
doModelMove,
|
||||||
|
moveToPosition
|
||||||
|
}
|
|
@ -1,7 +1,11 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="bim-setting-page app-container2">
|
<div class="bim-setting-page app-container2">
|
||||||
<div id="bimSettingContainer"></div>
|
<div id="bimSettingContainer"></div>
|
||||||
<model-floor-tree ref="modelFloorTree" @change="doChange" @modelAdd="modelAdded" :projectMessage="models" v-if="showTree"></model-floor-tree>
|
<div class="bim-cfg-tools">
|
||||||
|
<el-switch v-model="showGis" @change="doChangeGis"></el-switch>GIS
|
||||||
|
</div>
|
||||||
|
<model-floor-tree ref="modelFloorTree" :me="this" @change="doChange" @modelAdd="modelAdded" :projectMessage="models"
|
||||||
|
v-if="showTree"></model-floor-tree>
|
||||||
<div class="footer-box" v-if="showModels.length > 0">
|
<div class="footer-box" v-if="showModels.length > 0">
|
||||||
<el-tooltip placement="top" content="主视图">
|
<el-tooltip placement="top" content="主视图">
|
||||||
<div class="footer-btn" @click="doMenu(0)" :class="activeMenu == 0 ? 'is-active' : ''">
|
<div class="footer-btn" @click="doMenu(0)" :class="activeMenu == 0 ? 'is-active' : ''">
|
||||||
|
@ -28,8 +32,13 @@
|
||||||
<svg-icon icon-class="hide" />
|
<svg-icon icon-class="hide" />
|
||||||
</div>
|
</div>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
|
<el-tooltip placement="top" content="模型偏移">
|
||||||
|
<div class="footer-btn" @click="doMenu(5)" :class="activeMenu == 5 ? 'is-active' : ''">
|
||||||
|
<svg-icon icon-class="position" />
|
||||||
</div>
|
</div>
|
||||||
<div class="bim-setting-tools" v-show="activeMenu > 0">
|
</el-tooltip>
|
||||||
|
</div>
|
||||||
|
<div class="bim-setting-tools" v-show="(activeMenu > 0 && activeMenu != 5)">
|
||||||
<div class="tools-title">
|
<div class="tools-title">
|
||||||
<svg-icon icon-class="roam" v-if="activeMenu == 1" />
|
<svg-icon icon-class="roam" v-if="activeMenu == 1" />
|
||||||
<svg-icon icon-class="view" v-if="activeMenu == 2" />
|
<svg-icon icon-class="view" v-if="activeMenu == 2" />
|
||||||
|
@ -43,7 +52,20 @@
|
||||||
<person-roaming v-if="activeMenu == 1" ref="personRoaming" :me="this"></person-roaming>
|
<person-roaming v-if="activeMenu == 1" ref="personRoaming" :me="this"></person-roaming>
|
||||||
<custom-viewpoint v-if="activeMenu == 2" ref="customViewpoint" :me="this"></custom-viewpoint>
|
<custom-viewpoint v-if="activeMenu == 2" ref="customViewpoint" :me="this"></custom-viewpoint>
|
||||||
<viewpoint v-if="activeMenu == 3" ref="viewpoint" :me="this"></viewpoint>
|
<viewpoint v-if="activeMenu == 3" ref="viewpoint" :me="this"></viewpoint>
|
||||||
|
<HideFeature v-show="activeMenu == 4" ref="hideFeature" :me="this"></HideFeature>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="bim-setting-tools" v-show="showMove">
|
||||||
|
<div class="tools-title">
|
||||||
|
<svg-icon icon-class="position" />
|
||||||
|
{{ param.title }}
|
||||||
|
</div>
|
||||||
|
<el-icon @click="doCloseMove" style="color: #000; font-size: 20px; cursor: pointer" class="tools-close">
|
||||||
|
<Close />
|
||||||
|
</el-icon>
|
||||||
|
<MoveModel ref="moveModel" :me="this"></MoveModel>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -55,14 +77,21 @@ import ModelFloorTree from "./ModelFloorTree.vue";
|
||||||
import PersonRoaming from "./PersonRoaming.vue";
|
import PersonRoaming from "./PersonRoaming.vue";
|
||||||
import CustomViewpoint from "./CustomViewpoint.vue";
|
import CustomViewpoint from "./CustomViewpoint.vue";
|
||||||
import Viewpoint from "./Viewpoint.vue";
|
import Viewpoint from "./Viewpoint.vue";
|
||||||
|
import MoveModel from "./MoveModel.vue";
|
||||||
|
import HideFeature from "./HideFeature.vue";
|
||||||
import { ElMessage, ElTooltip } from 'element-plus';
|
import { ElMessage, ElTooltip } from 'element-plus';
|
||||||
|
import { getProjectBimConfig } from "@/api/manage/proProjectInfo.js";
|
||||||
|
import SAPITools from './sapiTools.js'
|
||||||
|
import APITools from './apiTools.js'
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
ModelFloorTree,
|
ModelFloorTree,
|
||||||
PersonRoaming,
|
PersonRoaming,
|
||||||
CustomViewpoint,
|
CustomViewpoint,
|
||||||
Viewpoint,
|
Viewpoint,
|
||||||
ElTooltip
|
ElTooltip,
|
||||||
|
MoveModel,
|
||||||
|
HideFeature,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
@ -80,6 +109,13 @@ export default {
|
||||||
showModels: [],
|
showModels: [],
|
||||||
param: {},
|
param: {},
|
||||||
viewPoint: null,
|
viewPoint: null,
|
||||||
|
showGis: false,
|
||||||
|
movePoint: null,
|
||||||
|
moveModelId: null,
|
||||||
|
isMove: false,
|
||||||
|
showMove: false,
|
||||||
|
hideParts: [],
|
||||||
|
bimCfg: {}
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
beforeUnmount() {
|
beforeUnmount() {
|
||||||
|
@ -92,14 +128,47 @@ export default {
|
||||||
this.currentPrjId = this.userStore.currentPrjId;
|
this.currentPrjId = this.userStore.currentPrjId;
|
||||||
this.currentComId = this.userStore.currentComId;
|
this.currentComId = this.userStore.currentComId;
|
||||||
this.initLoadModel();
|
this.initLoadModel();
|
||||||
this.initEngine();
|
|
||||||
|
getProjectBimConfig(this.currentPrjId).then(d => {
|
||||||
|
let config = this.$tryToJson(d.msg, {});
|
||||||
|
this.bimCfg = {
|
||||||
|
background: config.background || "",
|
||||||
|
showGis: config.showGis || false,
|
||||||
|
clientApi: config.clientApi || false
|
||||||
|
}
|
||||||
|
if (this.bimCfg.clientApi) {
|
||||||
|
APITools.initEngine(this);
|
||||||
|
} else {
|
||||||
|
SAPITools.initEngine(this);
|
||||||
|
}
|
||||||
|
});
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
doCloseMove() {
|
||||||
|
this.$refs.moveModel.resetPosition();
|
||||||
|
this.showMove = false;
|
||||||
|
this.activeMenu = -1;
|
||||||
|
},
|
||||||
modelAdded(point) {
|
modelAdded(point) {
|
||||||
if (this.viewPoint != null) {
|
if (this.viewPoint != null) {
|
||||||
this.viewPoint = point;
|
this.viewPoint = point;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
doChangeGis() {
|
||||||
|
if (this.showGis) {
|
||||||
|
if (this.bimCfg.clientApi) {
|
||||||
|
api.Public.setGisState(true);
|
||||||
|
} else {
|
||||||
|
api.Public.setGisState(true);
|
||||||
|
api.Public.setTerrainState(false, "http://113.201.2.107:9304/layer.json", false)
|
||||||
|
api.Public.setGisState(true);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
let color = this.bimCfg.background || "rgba(135 ,206 ,250,1)"
|
||||||
|
api.Public.setGisState(false, color);
|
||||||
|
api.Public.setSkyBoxState(0)
|
||||||
|
}
|
||||||
|
},
|
||||||
doChange() {
|
doChange() {
|
||||||
this.showModels = api.m_model.keys().toArray();
|
this.showModels = api.m_model.keys().toArray();
|
||||||
console.log("--change--");
|
console.log("--change--");
|
||||||
|
@ -116,15 +185,28 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
doMenu(n) {
|
doMenu(n) {
|
||||||
|
if (this.activeMenu == 4) {
|
||||||
|
api.Public.clearHandler();
|
||||||
|
api.Feature.getByEvent(false);
|
||||||
|
}
|
||||||
if (n == this.activeMenu) {
|
if (n == this.activeMenu) {
|
||||||
if (n == 0) {
|
if (n == 0) {
|
||||||
this.resetScene();
|
this.resetScene();
|
||||||
|
if (this.isMove) {
|
||||||
|
this.activeMenu = 5;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (this.activeMenu == 5) {
|
||||||
|
this.doCloseMove()
|
||||||
|
}
|
||||||
this.activeMenu = n;
|
this.activeMenu = n;
|
||||||
if (n == 0) {
|
if (n == 0) {
|
||||||
this.resetScene();
|
this.resetScene();
|
||||||
|
if (this.isMove) {
|
||||||
|
this.activeMenu = 5;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (n == 1) {
|
if (n == 1) {
|
||||||
this.param.title = "第一人称漫游";
|
this.param.title = "第一人称漫游";
|
||||||
|
@ -135,25 +217,38 @@ export default {
|
||||||
if (n == 3) {
|
if (n == 3) {
|
||||||
this.param.title = "视点管理";
|
this.param.title = "视点管理";
|
||||||
}
|
}
|
||||||
|
if (n == 4) {
|
||||||
|
this.param.title = "构件隐藏管理";
|
||||||
|
setTimeout(() => {
|
||||||
|
this.$refs.hideFeature.doHideFeatures(this.hideParts);
|
||||||
|
}, 800);
|
||||||
|
|
||||||
|
}
|
||||||
|
if (n == 5) {
|
||||||
|
this.param.title = "模型偏移管理";
|
||||||
|
this.isMove = true;
|
||||||
|
this.doModelMove();
|
||||||
|
} else {
|
||||||
|
if (this.isMove) {
|
||||||
|
this.isMove = false;
|
||||||
|
this.showMove = false;
|
||||||
|
api.Public.clearHandler(),
|
||||||
|
api.Public.pickupCoordinate(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
doModelMove() {
|
||||||
|
ElMessage.info("请在场景中选择要移动的模型!");
|
||||||
|
if(this.bimCfg.clientApi){
|
||||||
|
APITools.doModelMove(this);
|
||||||
|
}else{
|
||||||
|
SAPITools.doModelMove(this);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
NotificationPopup(parameter) {
|
NotificationPopup(parameter) {
|
||||||
this.param = parameter;
|
this.param = parameter;
|
||||||
// const that = this
|
|
||||||
// that.$notification.open({
|
|
||||||
// key: 'EngineKey',
|
|
||||||
// message: parameter.title,
|
|
||||||
// description: parameter.description,
|
|
||||||
// class: 'engine-notification ' + (parameter.tips ? parameter.tips : ''),
|
|
||||||
// duration: null,
|
|
||||||
// placement: parameter.placement ? parameter.placement : that.isMobile ? 'bottomLeft' : 'topRight',
|
|
||||||
// style: {
|
|
||||||
// top: parameter.top ? parameter.top : '50px',
|
|
||||||
// width: parameter.width ? parameter.width : '360px',
|
|
||||||
// marginRight: `20px`,
|
|
||||||
// borderRadius: '0px',
|
|
||||||
// },
|
|
||||||
// onClose: this.notifClose,
|
|
||||||
// })
|
|
||||||
},
|
},
|
||||||
doToolsClose() {
|
doToolsClose() {
|
||||||
this.activeMenu = 0;
|
this.activeMenu = 0;
|
||||||
|
@ -162,55 +257,7 @@ export default {
|
||||||
notifClose() {
|
notifClose() {
|
||||||
this.activeMenu = -1;
|
this.activeMenu = -1;
|
||||||
},
|
},
|
||||||
initEngine() {
|
|
||||||
window.api = new SAPI(
|
|
||||||
{
|
|
||||||
serverIP: window.config.serverIP, //服务ip地址
|
|
||||||
port: window.config.port, //HTTP端口
|
|
||||||
useHttps: window.config.useHttps, //使用Https
|
|
||||||
container: "bimSettingContainer", //[必须]容器id
|
|
||||||
secretKey: window.config.secretKey,
|
|
||||||
openEarth: window.config.openEarth, //[可选]开启Gis场景
|
|
||||||
bgColor: window.config.bgColor, //[可选]bim场景背景色, 传值即为纯色天空盒
|
|
||||||
tintColor: window.config.tintColor, //[可选]osgb单体化颜色
|
|
||||||
sceneTime: window.config.sceneTime, //[可选]分别为当前时间、日出时间、日落时间
|
|
||||||
cadMode: window.config.cadMode, // 是否是Cad图纸预览模式
|
|
||||||
},
|
|
||||||
() => {
|
|
||||||
this.initSuccess = true;
|
|
||||||
console.log("初始化成功");
|
|
||||||
let mapOptions = {
|
|
||||||
imgs: {
|
|
||||||
// 六面图片
|
|
||||||
top: "/cdn/bim/sapi/img/top.png",
|
|
||||||
bottom: "/cdn/bim/sapi/img/under.png",
|
|
||||||
east: "/cdn/bim/sapi/img/east.png",
|
|
||||||
south: "/cdn/bim/sapi/img/south.png",
|
|
||||||
west: "/cdn/bim/sapi/img/west.png",
|
|
||||||
north: "/cdn/bim/sapi/img/north.png",
|
|
||||||
},
|
|
||||||
offset: {
|
|
||||||
// 屏幕坐标偏移
|
|
||||||
corner: GLENavigationCube.RightTop,
|
|
||||||
x: 25,
|
|
||||||
y: 20,
|
|
||||||
},
|
|
||||||
cube: {
|
|
||||||
hoverColor: "#7193dc", // 立方导航快鼠标移过显示颜色
|
|
||||||
size: 32, // 导航立方尺寸
|
|
||||||
hotPointSize: 7, // 导航立方棱角热点区域尺寸
|
|
||||||
cubeTextColor: "#4c4c4ccc", // cube 各个面文字颜色
|
|
||||||
cubeStrokeColor: "#374769cc", // cube 各个面边框颜色
|
|
||||||
cubeFillColor: "#374769cc", // cube 各个面填充颜色
|
|
||||||
},
|
|
||||||
zoomRatios: 1, // 缩放倍率
|
|
||||||
show: true, // 是否显示
|
|
||||||
showAxes: true, // 是否显示XYZ轴线
|
|
||||||
};
|
|
||||||
api.Plugin.initNavCube(mapOptions);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
},
|
|
||||||
initLoadModel() {
|
initLoadModel() {
|
||||||
getDefaultViewPoint(this.currentPrjId, 1).then(d => {
|
getDefaultViewPoint(this.currentPrjId, 1).then(d => {
|
||||||
let pt = "";
|
let pt = "";
|
||||||
|
@ -230,6 +277,7 @@ export default {
|
||||||
}).then((d) => {
|
}).then((d) => {
|
||||||
this.models = (d.rows || []).map((it) => {
|
this.models = (d.rows || []).map((it) => {
|
||||||
it.modelId = it.lightweightName;
|
it.modelId = it.lightweightName;
|
||||||
|
it.bimCfg = this.$tryToJson(it.bimConfig || "{}", {});
|
||||||
it.visible = false;
|
it.visible = false;
|
||||||
it.checked = true;
|
it.checked = true;
|
||||||
it.gis = this.$tryToJson(it.gisJson || "{}", {});
|
it.gis = this.$tryToJson(it.gisJson || "{}", {});
|
||||||
|
@ -250,9 +298,17 @@ export default {
|
||||||
.bim-setting-page {
|
.bim-setting-page {
|
||||||
position: relative;
|
position: relative;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
||||||
|
.bim-cfg-tools {
|
||||||
|
position: absolute;
|
||||||
|
left: 340px;
|
||||||
|
top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
#bimSettingContainer {
|
#bimSettingContainer {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer-box {
|
.footer-box {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 10vh;
|
bottom: 10vh;
|
||||||
|
@ -260,6 +316,7 @@ export default {
|
||||||
margin-left: -75px;
|
margin-left: -75px;
|
||||||
background: #274754;
|
background: #274754;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
|
|
||||||
.footer-btn {
|
.footer-btn {
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
width: 40px;
|
width: 40px;
|
||||||
|
@ -267,14 +324,17 @@ export default {
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
||||||
svg {
|
svg {
|
||||||
width: 20px;
|
width: 20px;
|
||||||
height: 20px;
|
height: 20px;
|
||||||
fill: #fff;
|
fill: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background: #408edb97;
|
background: #408edb97;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.is-active {
|
&.is-active {
|
||||||
svg {
|
svg {
|
||||||
fill: rgb(0, 255, 174);
|
fill: rgb(0, 255, 174);
|
||||||
|
@ -282,6 +342,7 @@ export default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.bim-setting-tools {
|
.bim-setting-tools {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 80px;
|
top: 80px;
|
||||||
|
@ -290,11 +351,13 @@ export default {
|
||||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
|
||||||
min-width: 300px;
|
min-width: 300px;
|
||||||
min-height: 400px;
|
min-height: 400px;
|
||||||
|
|
||||||
.tools-title {
|
.tools-title {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
color: #114c5f;
|
color: #114c5f;
|
||||||
size: 24px;
|
size: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tools-close {
|
.tools-close {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 10px;
|
top: 10px;
|
||||||
|
|
|
@ -0,0 +1,109 @@
|
||||||
|
import { ElMessage, ElTooltip } from 'element-plus';
|
||||||
|
//初始化
|
||||||
|
function initEngine(that) {
|
||||||
|
window.api = new SAPI(
|
||||||
|
{
|
||||||
|
serverIP: window.config.serverIP, //服务ip地址
|
||||||
|
port: window.config.port, //HTTP端口
|
||||||
|
useHttps: window.config.useHttps, //使用Https
|
||||||
|
container: "bimSettingContainer", //[必须]容器id
|
||||||
|
secretKey: window.config.secretKey,
|
||||||
|
openEarth: window.config.openEarth, //[可选]开启Gis场景
|
||||||
|
bgColor: window.config.bgColor, //[可选]bim场景背景色, 传值即为纯色天空盒
|
||||||
|
tintColor: window.config.tintColor, //[可选]osgb单体化颜色
|
||||||
|
sceneTime: window.config.sceneTime, //[可选]分别为当前时间、日出时间、日落时间
|
||||||
|
cadMode: window.config.cadMode, // 是否是Cad图纸预览模式
|
||||||
|
},
|
||||||
|
() => {
|
||||||
|
that.initSuccess = true;
|
||||||
|
console.log("初始化成功");
|
||||||
|
let mapOptions = {
|
||||||
|
imgs: {
|
||||||
|
// 六面图片
|
||||||
|
top: "/cdn/bim/sapi/img/top.png",
|
||||||
|
bottom: "/cdn/bim/sapi/img/under.png",
|
||||||
|
east: "/cdn/bim/sapi/img/east.png",
|
||||||
|
south: "/cdn/bim/sapi/img/south.png",
|
||||||
|
west: "/cdn/bim/sapi/img/west.png",
|
||||||
|
north: "/cdn/bim/sapi/img/north.png",
|
||||||
|
},
|
||||||
|
offset: {
|
||||||
|
// 屏幕坐标偏移
|
||||||
|
corner: GLENavigationCube.RightTop,
|
||||||
|
x: 25,
|
||||||
|
y: 20,
|
||||||
|
},
|
||||||
|
cube: {
|
||||||
|
hoverColor: "#7193dc", // 立方导航快鼠标移过显示颜色
|
||||||
|
size: 32, // 导航立方尺寸
|
||||||
|
hotPointSize: 7, // 导航立方棱角热点区域尺寸
|
||||||
|
cubeTextColor: "#4c4c4ccc", // cube 各个面文字颜色
|
||||||
|
cubeStrokeColor: "#374769cc", // cube 各个面边框颜色
|
||||||
|
cubeFillColor: "#374769cc", // cube 各个面填充颜色
|
||||||
|
},
|
||||||
|
zoomRatios: 1, // 缩放倍率
|
||||||
|
show: true, // 是否显示
|
||||||
|
showAxes: true, // 是否显示XYZ轴线
|
||||||
|
};
|
||||||
|
api.Plugin.initNavCube(mapOptions);
|
||||||
|
if (that.bimCfg.showGis) {
|
||||||
|
that.showGis = true;
|
||||||
|
that.doChangeGis();
|
||||||
|
} else if (that.bimCfg.background) {
|
||||||
|
api.Public.setGisState(false, that.bimCfg.background);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//模型偏移管理
|
||||||
|
function doModelMove(that) {
|
||||||
|
api.Public.pickupCoordinate(false);
|
||||||
|
api.Public.event("LEFT_CLICK", (e) => {
|
||||||
|
api.Feature.getByPosition([e.x, e.y], (n) => {
|
||||||
|
if (n && n["id"]) {
|
||||||
|
let modelId = n.id.split("^")[0];
|
||||||
|
that.showMove = true;
|
||||||
|
that.$refs.moveModel.initData(modelId)
|
||||||
|
} else {
|
||||||
|
ElMessage.warning("请在模型上选点!");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
//在地图上移动模型
|
||||||
|
function moveToPosition(that){
|
||||||
|
api.Public.event("LEFT_CLICK", ((n) => {
|
||||||
|
api.Public.pickupCoordinate(true, ((n) => {
|
||||||
|
api.Public.convertWorldToCartographicLocation(n, m => {
|
||||||
|
api.Model.moveToPosition(m, 0, that.modelId)
|
||||||
|
if (that.saveData.rotateZ != 0) {
|
||||||
|
api.Model.rotate(0, 0, that.saveData.rotateZ, that.modelId)
|
||||||
|
}
|
||||||
|
that.movePoint = m;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
))
|
||||||
|
}
|
||||||
|
)),
|
||||||
|
api.Public.event("RIGHT_CLICK", ((n) => {
|
||||||
|
api.Public.clearHandler(),
|
||||||
|
api.Public.pickupCoordinate(false);
|
||||||
|
ElMessage.info("已结束模型移动!"),
|
||||||
|
that.activeMenu = -1;
|
||||||
|
let pt = that.movePoint;
|
||||||
|
that.form.x = pt[0]
|
||||||
|
that.form.y = pt[1]
|
||||||
|
that.form.z = pt[2]
|
||||||
|
that.saveData.x = that.form.x;
|
||||||
|
that.saveData.y = that.form.y;
|
||||||
|
that.saveData.z = that.form.z;
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
initEngine,
|
||||||
|
doModelMove,
|
||||||
|
moveToPosition
|
||||||
|
}
|
|
@ -124,6 +124,7 @@ function initBim(that) {
|
||||||
if (that.plan) {
|
if (that.plan) {
|
||||||
planId = that.plan.id;
|
planId = that.plan.id;
|
||||||
}
|
}
|
||||||
|
//let tmps = [that.plan]//that.allBimData.filter((it) => it.id == planId);
|
||||||
let tmps =that.allBimData.filter((it) => it.id == planId);
|
let tmps =that.allBimData.filter((it) => it.id == planId);
|
||||||
if (tmps.length > 0) {
|
if (tmps.length > 0) {
|
||||||
tmps[0].bim.forEach((it) => {
|
tmps[0].bim.forEach((it) => {
|
||||||
|
@ -516,7 +517,7 @@ function makePlanTree(that) {
|
||||||
datas.forEach((data) => {
|
datas.forEach((data) => {
|
||||||
data.checked = false;
|
data.checked = false;
|
||||||
data.bim = that.$tryToJson(data.bimId || "[]", []);
|
data.bim = that.$tryToJson(data.bimId || "[]", []);
|
||||||
data.hasBim = data.bim && data.bim.length > 0;
|
data.hasBim = data.bimId && data.bimId.length > 0;
|
||||||
data.children = that.planList.filter((it) => it.parentId == data.taskId);
|
data.children = that.planList.filter((it) => it.parentId == data.taskId);
|
||||||
func(data.children);
|
func(data.children);
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,47 +1,24 @@
|
||||||
<template>
|
<template>
|
||||||
<el-dialog
|
<el-dialog v-model="show" append-to-body :close-on-click-modal="false" :close-on-press-escape="false" :title="title"
|
||||||
v-model="show"
|
modal-class="bim-selection-dialog3">
|
||||||
append-to-body
|
|
||||||
:close-on-click-modal="false"
|
|
||||||
:close-on-press-escape="false"
|
|
||||||
:title="title"
|
|
||||||
modal-class="bim-selection-dialog3"
|
|
||||||
>
|
|
||||||
<div id="bimSelectionDlg">
|
<div id="bimSelectionDlg">
|
||||||
<div
|
<div id="bimSelectionDlgContainer3" class="bimSelectionDlgContainer"></div>
|
||||||
id="bimSelectionDlgContainer3"
|
|
||||||
class="bimSelectionDlgContainer"
|
|
||||||
></div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="div-left" :class="{ 'is-hide': !leftExpend }">
|
<div class="div-left" :class="{ 'is-hide': !leftExpend }">
|
||||||
<div class="div-left-title">
|
<div class="div-left-title">
|
||||||
<el-tabs v-model="activeTab">
|
<el-tabs v-model="activeTab">
|
||||||
<el-tab-pane label="结构树" name="a1">
|
<el-tab-pane label="结构树" name="a1">
|
||||||
<div class="model-tree scroll" :key="treeKey">
|
<div class="model-tree scroll" :key="treeKey">
|
||||||
<el-tree
|
<el-tree :key="treeKey" ref="tree" :default-expanded-keys="treeExpendedKeys" :props="{
|
||||||
:key="treeKey"
|
|
||||||
ref="tree"
|
|
||||||
:default-expanded-keys="treeExpendedKeys"
|
|
||||||
:props="{
|
|
||||||
children: 'children',
|
children: 'children',
|
||||||
label: 'title',
|
label: 'title',
|
||||||
isLeaf: 'leaf',
|
isLeaf: 'leaf',
|
||||||
}"
|
}" node-key="key" @check="onCheckTree" :load="loadNode" lazy show-checkbox></el-tree>
|
||||||
node-key="key"
|
|
||||||
@check="onCheckTree"
|
|
||||||
:load="loadNode"
|
|
||||||
lazy
|
|
||||||
show-checkbox
|
|
||||||
></el-tree>
|
|
||||||
</div>
|
</div>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="已关联" name="a2">
|
<el-tab-pane label="已关联" name="a2">
|
||||||
<div class="sel-list scroll" :key="selEl">
|
<div class="sel-list scroll" :key="selEl">
|
||||||
<div
|
<div v-for="(it, idx) in selectItems" :key="idx" class="div-sel-item">
|
||||||
v-for="(it, idx) in selectItems"
|
|
||||||
:key="idx"
|
|
||||||
class="div-sel-item"
|
|
||||||
>
|
|
||||||
<el-tooltip placement="bottom" :content="it.info">
|
<el-tooltip placement="bottom" :content="it.info">
|
||||||
<div class="sel-item-info">{{ it.info }}</div>
|
<div class="sel-item-info">{{ it.info }}</div>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
|
@ -54,11 +31,7 @@
|
||||||
<el-button @click="delAllDelList">删除所有</el-button>
|
<el-button @click="delAllDelList">删除所有</el-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="sel-list scroll hide-list" :key="hideEl">
|
<div class="sel-list scroll hide-list" :key="hideEl">
|
||||||
<div
|
<div v-for="(it, idx) in getSelectItems(hideParts)" :key="idx" class="div-sel-item">
|
||||||
v-for="(it, idx) in getSelectItems(hideParts)"
|
|
||||||
:key="idx"
|
|
||||||
class="div-sel-item"
|
|
||||||
>
|
|
||||||
<el-tooltip placement="bottom" :content="it.info">
|
<el-tooltip placement="bottom" :content="it.info">
|
||||||
<div class="sel-item-info">{{ it.info }}</div>
|
<div class="sel-item-info">{{ it.info }}</div>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
|
@ -88,32 +61,18 @@
|
||||||
<span v-else>无选择数据</span>
|
<span v-else>无选择数据</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="plan-tree scroll" :key="planTreeKey" v-if="showPlan">
|
<div class="plan-tree scroll" :key="planTreeKey" v-if="showPlan">
|
||||||
<el-tree
|
<el-tree ref="planTree" :data="planTree" node-key="id" :props="{
|
||||||
ref="planTree"
|
|
||||||
:data="planTree"
|
|
||||||
node-key="id"
|
|
||||||
:props="{
|
|
||||||
children: 'children',
|
children: 'children',
|
||||||
label: 'taskName',
|
label: 'taskName',
|
||||||
isLeaf: 'leaf',
|
isLeaf: 'leaf',
|
||||||
}"
|
}" default-expand-all>
|
||||||
default-expand-all
|
|
||||||
>
|
|
||||||
<template #default="{ node, data }">
|
<template #default="{ node, data }">
|
||||||
<span class="custom-tree-node" @click="nodeClick(node, data)">
|
<span class="custom-tree-node" @click="nodeClick(node, data)">
|
||||||
<span>{{ node.label }}</span>
|
<span>{{ node.label }}</span>
|
||||||
<span
|
<span v-if="node.isLeaf" class="bind-bim" :class="{ 'has-bim': data.hasBim }">
|
||||||
v-if="node.isLeaf"
|
|
||||||
class="bind-bim"
|
|
||||||
:class="{ 'has-bim': data.hasBim }"
|
|
||||||
>
|
|
||||||
<svg-icon icon-class="position" style="cursor: pointer" />
|
<svg-icon icon-class="position" style="cursor: pointer" />
|
||||||
[{{ data.hasBim ? "已" : "未" }}绑定]
|
[{{ data.hasBim ? "已" : "未" }}绑定]
|
||||||
<svg-icon
|
<svg-icon v-if="data.checked" icon-class="checkbox" style="cursor: pointer" />
|
||||||
v-if="data.checked"
|
|
||||||
icon-class="checkbox"
|
|
||||||
style="cursor: pointer"
|
|
||||||
/>
|
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
|
@ -123,65 +82,37 @@
|
||||||
<div v-show="bimLoaded">
|
<div v-show="bimLoaded">
|
||||||
<div class="footer-box" v-if="models.length > 0">
|
<div class="footer-box" v-if="models.length > 0">
|
||||||
<el-tooltip placement="top" content="主视图">
|
<el-tooltip placement="top" content="主视图">
|
||||||
<div
|
<div class="footer-btn" @click="doMenu(0)" :class="activeMenu == 0 ? 'is-active' : ''">
|
||||||
class="footer-btn"
|
|
||||||
@click="doMenu(0)"
|
|
||||||
:class="activeMenu == 0 ? 'is-active' : ''"
|
|
||||||
>
|
|
||||||
<svg-icon icon-class="home" />
|
<svg-icon icon-class="home" />
|
||||||
</div>
|
</div>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<el-tooltip placement="top" content="取消所有关联">
|
<el-tooltip placement="top" content="取消所有关联">
|
||||||
<div
|
<div class="footer-btn" @click="doMenu(1)" :class="activeMenu == 1 ? 'is-active' : ''">
|
||||||
class="footer-btn"
|
|
||||||
@click="doMenu(1)"
|
|
||||||
:class="activeMenu == 1 ? 'is-active' : ''"
|
|
||||||
>
|
|
||||||
<svg-icon icon-class="cancel" />
|
<svg-icon icon-class="cancel" />
|
||||||
</div>
|
</div>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<el-tooltip placement="top" content="点选">
|
<el-tooltip placement="top" content="点选">
|
||||||
<div
|
<div class="footer-btn" @click="doMenu(2)" :class="activeMenu == 2 ? 'is-active' : ''">
|
||||||
class="footer-btn"
|
|
||||||
@click="doMenu(2)"
|
|
||||||
:class="activeMenu == 2 ? 'is-active' : ''"
|
|
||||||
>
|
|
||||||
<svg-icon icon-class="pointselect" />
|
<svg-icon icon-class="pointselect" />
|
||||||
</div>
|
</div>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<el-tooltip placement="top" content="框选">
|
<el-tooltip placement="top" content="框选">
|
||||||
<div
|
<div class="footer-btn" @click="doMenu(3)" :class="activeMenu == 3 ? 'is-active' : ''">
|
||||||
class="footer-btn"
|
|
||||||
@click="doMenu(3)"
|
|
||||||
:class="activeMenu == 3 ? 'is-active' : ''"
|
|
||||||
>
|
|
||||||
<svg-icon icon-class="boundselect" />
|
<svg-icon icon-class="boundselect" />
|
||||||
</div>
|
</div>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<el-tooltip placement="top" content="全选树上所有已选择构件">
|
<el-tooltip placement="top" content="全选树上所有已选择构件">
|
||||||
<div
|
<div class="footer-btn" @click="doMenu(5)" :class="activeMenu == 5 ? 'is-active' : ''">
|
||||||
class="footer-btn"
|
|
||||||
@click="doMenu(5)"
|
|
||||||
:class="activeMenu == 5 ? 'is-active' : ''"
|
|
||||||
>
|
|
||||||
<svg-icon icon-class="skill" />
|
<svg-icon icon-class="skill" />
|
||||||
</div>
|
</div>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<el-tooltip placement="top" content="隐藏构件">
|
<el-tooltip placement="top" content="隐藏构件">
|
||||||
<div
|
<div class="footer-btn" @click="doMenu(4)" :class="activeMenu == 4 ? 'is-active' : ''">
|
||||||
class="footer-btn"
|
|
||||||
@click="doMenu(4)"
|
|
||||||
:class="activeMenu == 4 ? 'is-active' : ''"
|
|
||||||
>
|
|
||||||
<svg-icon icon-class="hide" />
|
<svg-icon icon-class="hide" />
|
||||||
</div>
|
</div>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<el-tooltip placement="top" content="保存绑定">
|
<el-tooltip placement="top" content="保存绑定">
|
||||||
<div
|
<div class="footer-btn" @click="doMenu(6)" :class="activeMenu == 6 ? 'is-active' : ''">
|
||||||
class="footer-btn"
|
|
||||||
@click="doMenu(6)"
|
|
||||||
:class="activeMenu == 6 ? 'is-active' : ''"
|
|
||||||
>
|
|
||||||
<svg-icon icon-class="save" />
|
<svg-icon icon-class="save" />
|
||||||
</div>
|
</div>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
|
@ -189,15 +120,8 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="div-mode">
|
<div class="div-mode">
|
||||||
<el-switch
|
<el-switch v-model="showMode" class="ml-2" inline-prompt active-text="显示模式" inactive-text="隐藏模式"
|
||||||
v-model="showMode"
|
@change="doModeChange" style="--el-switch-off-color: #336699" />
|
||||||
class="ml-2"
|
|
||||||
inline-prompt
|
|
||||||
active-text="显示模式"
|
|
||||||
inactive-text="隐藏模式"
|
|
||||||
@change="doModeChange"
|
|
||||||
style="--el-switch-off-color: #336699"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</template>
|
</template>
|
||||||
|
@ -207,10 +131,12 @@ import { listBimModel } from "@/api/bim/bimModel";
|
||||||
import bimTools from "./bimSelectTools3";
|
import bimTools from "./bimSelectTools3";
|
||||||
import {
|
import {
|
||||||
updateBimInfo,
|
updateBimInfo,
|
||||||
getPlanAllBimInfo,
|
|
||||||
getDefaultViewPoint,
|
getDefaultViewPoint,
|
||||||
} from "@/api/bim/bim";
|
} from "@/api/bim/bim";
|
||||||
import { ElMessage, ElMessageBox, ElStep } from "element-plus";
|
import {
|
||||||
|
getPlan,listPlan
|
||||||
|
} from "@/api/manage/plan";
|
||||||
|
import { ElMessage } from "element-plus";
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
@ -266,8 +192,19 @@ export default {
|
||||||
this.planList.forEach((it) => {
|
this.planList.forEach((it) => {
|
||||||
it.checked = it == data;
|
it.checked = it == data;
|
||||||
});
|
});
|
||||||
|
if (!data.hasLoadBim) {
|
||||||
|
getPlan(data.id).then((response) => {
|
||||||
|
data.bimId = response.data.bimId;
|
||||||
|
data.bim = this.$tryToJson(data.bimId || "[]", []);
|
||||||
|
data.hasBim = data.bim && data.bim.length > 0;
|
||||||
|
data.hadLoadBim = true;
|
||||||
this.plan = data;
|
this.plan = data;
|
||||||
bimTools.showPlanFeatchure(this);
|
bimTools.showPlanFeatchure(this);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.plan = data;
|
||||||
|
bimTools.showPlanFeatchure(this);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
loadNode(node, resolve) {
|
loadNode(node, resolve) {
|
||||||
bimTools.loadNode(this, node, resolve);
|
bimTools.loadNode(this, node, resolve);
|
||||||
|
@ -325,7 +262,7 @@ export default {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
this.plan.bimId = text;
|
this.plan.bimId = text;
|
||||||
this.plan.bim = this.$tryToJson(text || "[]", []);
|
this.plan.bim = this.$tryToJson(text || "[]", []);
|
||||||
this.plan.hasBim = this.plan && this.plan.bim.length > 0;
|
this.plan.hasBim = text && text.length > 0;
|
||||||
ElMessage.success("保存成功");
|
ElMessage.success("保存成功");
|
||||||
bimTools.showPlanFeatchure(this);
|
bimTools.showPlanFeatchure(this);
|
||||||
this.$emit("success");
|
this.$emit("success");
|
||||||
|
@ -397,9 +334,26 @@ export default {
|
||||||
this.loadedModelCount = 0;
|
this.loadedModelCount = 0;
|
||||||
|
|
||||||
bimTools.makePlanTree(this);
|
bimTools.makePlanTree(this);
|
||||||
this.allBimData = this.planList.filter((d) => d.hasBim);
|
//this.allBimData = this.planList.filter((d) => d.hasBim);
|
||||||
|
this.loadAllBimData();
|
||||||
this.initEngine();
|
this.initEngine();
|
||||||
},
|
},
|
||||||
|
loadAllBimData() {
|
||||||
|
let postData={
|
||||||
|
projectId: this.currentPrjId,
|
||||||
|
pageNum:1,
|
||||||
|
pageSize:10000
|
||||||
|
};
|
||||||
|
listPlan(postData).then((d) => {
|
||||||
|
let tmps = (d.data || []).filter(it=>it.bmId).map(it=>{
|
||||||
|
it.bim=this.$tryToJson(it.bimId||"[]",[]);
|
||||||
|
it.hasBim=it.bim && it.bim.length>0;
|
||||||
|
return it;
|
||||||
|
});
|
||||||
|
this.allBimData=tmps.filter(item=>item.hasBim);
|
||||||
|
this.$message.info("数据准备就绪!");
|
||||||
|
});
|
||||||
|
},
|
||||||
initEngine() {
|
initEngine() {
|
||||||
this.elId++;
|
this.elId++;
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
|
@ -568,18 +522,23 @@ export default {
|
||||||
&.plan-list {
|
&.plan-list {
|
||||||
left: unset;
|
left: unset;
|
||||||
right: 96px;
|
right: 96px;
|
||||||
|
|
||||||
&.plan-hide {
|
&.plan-hide {
|
||||||
height: 40px;
|
height: 40px;
|
||||||
|
|
||||||
.plan-tree-icon {
|
.plan-tree-icon {
|
||||||
right: 5px;
|
right: 5px;
|
||||||
top: 5px;
|
top: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.plan-info {
|
.plan-info {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
line-height: 40px;
|
line-height: 40px;
|
||||||
padding-left: 20px;
|
padding-left: 20px;
|
||||||
|
|
||||||
.bind-bim {
|
.bind-bim {
|
||||||
color: #2cff00;
|
color: #2cff00;
|
||||||
|
|
||||||
&.has-bim {
|
&.has-bim {
|
||||||
color: #edfd06;
|
color: #edfd06;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
|
@ -587,12 +546,14 @@ export default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.plan-tree-icon {
|
.plan-tree-icon {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 10px;
|
right: 10px;
|
||||||
top: 10px;
|
top: 10px;
|
||||||
z-index: 999;
|
z-index: 999;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
||||||
.svg-icon {
|
.svg-icon {
|
||||||
width: 30px;
|
width: 30px;
|
||||||
height: 30px;
|
height: 30px;
|
||||||
|
@ -622,6 +583,7 @@ export default {
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-tabs__nav-wrap {
|
.el-tabs__nav-wrap {
|
||||||
|
|
||||||
.el-tabs__nav-prev,
|
.el-tabs__nav-prev,
|
||||||
.el-tabs__nav-next {
|
.el-tabs__nav-next {
|
||||||
display: none;
|
display: none;
|
||||||
|
@ -735,9 +697,11 @@ export default {
|
||||||
.plan-tree {
|
.plan-tree {
|
||||||
height: calc(100% - 0px);
|
height: calc(100% - 0px);
|
||||||
}
|
}
|
||||||
|
|
||||||
.model-tree {
|
.model-tree {
|
||||||
height: calc(100% - 36px);
|
height: calc(100% - 36px);
|
||||||
}
|
}
|
||||||
|
|
||||||
.model-tree,
|
.model-tree,
|
||||||
.plan-tree {
|
.plan-tree {
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
|
@ -749,21 +713,26 @@ export default {
|
||||||
.el-checkbox {
|
.el-checkbox {
|
||||||
color: #45fdfe;
|
color: #45fdfe;
|
||||||
}
|
}
|
||||||
|
|
||||||
.custom-tree-node {
|
.custom-tree-node {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bind-bim {
|
.bind-bim {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
color: #2cff00;
|
color: #2cff00;
|
||||||
|
|
||||||
&.has-bim {
|
&.has-bim {
|
||||||
color: #edfd06;
|
color: #edfd06;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.svg-icon {
|
.svg-icon {
|
||||||
color: #45fdfe;
|
color: #45fdfe;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-text {
|
.el-text {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,34 +1,15 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<el-form
|
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
|
||||||
:model="queryParams"
|
|
||||||
ref="queryRef"
|
|
||||||
:inline="true"
|
|
||||||
v-show="showSearch"
|
|
||||||
label-width="68px"
|
|
||||||
>
|
|
||||||
<el-form-item label="项目" prop="projectId">
|
<el-form-item label="项目" prop="projectId">
|
||||||
<el-select
|
<el-select :disabled="data.projectId ? true : false" v-model="queryParams.projectId" placeholder="请选择项目"
|
||||||
:disabled="data.projectId ? true : false"
|
style="width: 192px" clearable @change="handleQuery">
|
||||||
v-model="queryParams.projectId"
|
<el-option v-for="prj in data.projects" :key="prj.id" :label="prj.projectName" :value="prj.id">
|
||||||
placeholder="请选择项目"
|
|
||||||
style="width: 192px"
|
|
||||||
clearable
|
|
||||||
@change="handleQuery"
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="prj in data.projects"
|
|
||||||
:key="prj.id"
|
|
||||||
:label="prj.projectName"
|
|
||||||
:value="prj.id"
|
|
||||||
>
|
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" icon="Search" @click="handleQuery"
|
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||||
>搜索</el-button
|
|
||||||
>
|
|
||||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
@ -48,109 +29,48 @@
|
||||||
</el-col>
|
</el-col>
|
||||||
-->
|
-->
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-upload
|
<el-upload ref="uploadRef" :limit="1" accept=".mpp" :headers="upload.headers" :action="upload.url +
|
||||||
ref="uploadRef"
|
|
||||||
:limit="1"
|
|
||||||
accept=".mpp"
|
|
||||||
:headers="upload.headers"
|
|
||||||
:action="
|
|
||||||
upload.url +
|
|
||||||
'?compId=' +
|
'?compId=' +
|
||||||
data.compId +
|
data.compId +
|
||||||
'&projectId=' +
|
'&projectId=' +
|
||||||
queryParams.projectId
|
queryParams.projectId
|
||||||
"
|
" :disabled="upload.isUploading" :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess"
|
||||||
:disabled="upload.isUploading"
|
:auto-upload="true">
|
||||||
:on-progress="handleFileUploadProgress"
|
<el-button type="primary" v-loading="upload.isUploading">导入(Project)</el-button>
|
||||||
:on-success="handleFileSuccess"
|
|
||||||
:auto-upload="true"
|
|
||||||
>
|
|
||||||
<el-button type="primary" v-loading="upload.isUploading"
|
|
||||||
>导入(Project)</el-button
|
|
||||||
>
|
|
||||||
</el-upload>
|
</el-upload>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5" v-if="planList.length > 0">
|
<el-col :span="1.5" v-if="planList.length > 0">
|
||||||
<el-button
|
<el-button type="warning" plain icon="Download" @click="handleExport"
|
||||||
type="warning"
|
v-hasPermi="['manage:plan:export']">导出(Project)</el-button>
|
||||||
plain
|
<el-button @click="handleBindBim" v-if="planList.length > 0">关联Bim</el-button>
|
||||||
icon="Download"
|
|
||||||
@click="handleExport"
|
|
||||||
v-hasPermi="['manage:plan:export']"
|
|
||||||
>导出(Project)</el-button
|
|
||||||
>
|
|
||||||
<el-button @click="handleBindBim" v-if="planList.length > 0"
|
|
||||||
>关联Bim</el-button
|
|
||||||
>
|
|
||||||
</el-col>
|
</el-col>
|
||||||
<right-toolbar
|
<right-toolbar :showSearch="showSearch" @queryTable="getList" v-if="1 == 2"></right-toolbar>
|
||||||
:showSearch="showSearch"
|
|
||||||
@queryTable="getList"
|
|
||||||
v-if="1 == 2"
|
|
||||||
></right-toolbar>
|
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-table
|
<el-table v-loading="loading" :data="planList" row-key="taskId" default-expand-all>
|
||||||
v-loading="loading"
|
|
||||||
:data="planList"
|
|
||||||
row-key="taskId"
|
|
||||||
default-expand-all
|
|
||||||
>
|
|
||||||
<el-table-column label="任务名称" align="left" prop="taskName" />
|
<el-table-column label="任务名称" align="left" prop="taskName" />
|
||||||
<el-table-column
|
<el-table-column label="任务工期" align="center" prop="taskDuation" width="120">
|
||||||
label="任务工期"
|
|
||||||
align="center"
|
|
||||||
prop="taskDuation"
|
|
||||||
width="120"
|
|
||||||
>
|
|
||||||
<template #default="scope">{{ scope.row.taskDuation }}d</template>
|
<template #default="scope">{{ scope.row.taskDuation }}d</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column label="计划开始时间" align="center" prop="planStartDate" width="180">
|
||||||
label="计划开始时间"
|
|
||||||
align="center"
|
|
||||||
prop="planStartDate"
|
|
||||||
width="180"
|
|
||||||
>
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ parseTime(scope.row.planStartDate, "{y}-{m}-{d}") }}</span>
|
<span>{{ parseTime(scope.row.planStartDate, "{y}-{m}-{d}") }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column label="计划结束时间" align="center" prop="planFinishDate" width="180">
|
||||||
label="计划结束时间"
|
|
||||||
align="center"
|
|
||||||
prop="planFinishDate"
|
|
||||||
width="180"
|
|
||||||
>
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ parseTime(scope.row.planFinishDate, "{y}-{m}-{d}") }}</span>
|
<span>{{ parseTime(scope.row.planFinishDate, "{y}-{m}-{d}") }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="BIM ID" align="center" prop="bimId" width="120">
|
<el-table-column label="BIM ID" align="center" prop="bimId" width="120">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<template
|
<template v-if="!scope.row.children || scope.row.children.length == 0">
|
||||||
v-if="!scope.row.children || scope.row.children.length == 0"
|
<span @click="handleBim(scope.row)" style="color: red" v-if="scope.row.bimId">已关联BIM</span>
|
||||||
>
|
<span @click="handleBim(scope.row)" v-else style="color: #8e9aaf">未关联BIM</span>
|
||||||
<span
|
<span @click="handleBim(scope.row)" style="margin-left: 8px; cursor: pointer">
|
||||||
@click="handleBim(scope.row)"
|
|
||||||
style="color: red"
|
|
||||||
v-if="scope.row.bimId"
|
|
||||||
>已关联BIM</span
|
|
||||||
>
|
|
||||||
<span @click="handleBim(scope.row)" v-else style="color: #8e9aaf"
|
|
||||||
>未关联BIM</span
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
@click="handleBim(scope.row)"
|
|
||||||
style="margin-left: 8px; cursor: pointer"
|
|
||||||
>
|
|
||||||
<el-tooltip append-to="" content="关联BIM模型" placement="top">
|
<el-tooltip append-to="" content="关联BIM模型" placement="top">
|
||||||
<span>
|
<span>
|
||||||
<svg-icon
|
<svg-icon icon-class="position" style="cursor: pointer" class="icon-blue" />
|
||||||
icon-class="position"
|
|
||||||
style="cursor: pointer"
|
|
||||||
class="icon-blue"
|
|
||||||
@click="handleBim(scope.row)"
|
|
||||||
/>
|
|
||||||
</span>
|
</span>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</span>
|
</span>
|
||||||
|
@ -158,23 +78,10 @@
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column
|
<el-table-column label="负责人" align="center" prop="operator" width="120" />
|
||||||
label="负责人"
|
<el-table-column label="班组名称" align="center" prop="groupName" width="120" />
|
||||||
align="center"
|
|
||||||
prop="operator"
|
|
||||||
width="120"
|
|
||||||
/>
|
|
||||||
<el-table-column
|
|
||||||
label="班组名称"
|
|
||||||
align="center"
|
|
||||||
prop="groupName"
|
|
||||||
width="120"
|
|
||||||
/>
|
|
||||||
</el-table>
|
</el-table>
|
||||||
<bim-selection-dialog
|
<bim-selection-dialog ref="bimDlg" @success="doSelectSuccess"></bim-selection-dialog>
|
||||||
ref="bimDlg"
|
|
||||||
@success="doSelectSuccess"
|
|
||||||
></bim-selection-dialog>
|
|
||||||
<bim-selection-dialog3 ref="bimDlg3" @success="doSelectSuccess" />
|
<bim-selection-dialog3 ref="bimDlg3" @success="doSelectSuccess" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -272,6 +179,7 @@ function buildTree(all, id) {
|
||||||
/** 查询计划管理列表 */
|
/** 查询计划管理列表 */
|
||||||
function getList() {
|
function getList() {
|
||||||
queryParams.value.projectId = userStore.currentPrjId;
|
queryParams.value.projectId = userStore.currentPrjId;
|
||||||
|
queryParams.value.noBim = 'Y'
|
||||||
if (!queryParams.value.projectId) {
|
if (!queryParams.value.projectId) {
|
||||||
planList.value = [];
|
planList.value = [];
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
|
@ -288,7 +196,20 @@ function getList() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleBim(row) {
|
function handleBim(row) {
|
||||||
|
if(row.hasLoadBim){
|
||||||
bimDlg.value.showDialog(row, data.planAll);
|
bimDlg.value.showDialog(row, data.planAll);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
loading.value = true;
|
||||||
|
getPlan(row.id).then((response) => {
|
||||||
|
row.bimId = response.data.bimId;
|
||||||
|
row.hadLoadBim=true;
|
||||||
|
row.bim = proxy.$tryToJson(row.bimId || "[]", []);
|
||||||
|
row.hasBim =row.bimId && row.bimId.length > 0;
|
||||||
|
loading.value = false;
|
||||||
|
bimDlg.value.showDialog(row, data.planAll);
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleBindBim() {
|
function handleBindBim() {
|
||||||
|
|
|
@ -164,7 +164,6 @@ const data = reactive({
|
||||||
taskId: null,
|
taskId: null,
|
||||||
taskUniqueId: null,
|
taskUniqueId: null,
|
||||||
taskName: null,
|
taskName: null,
|
||||||
bimId: null,
|
|
||||||
isDel: null,
|
isDel: null,
|
||||||
createUserId: null,
|
createUserId: null,
|
||||||
},
|
},
|
||||||
|
@ -208,7 +207,6 @@ function reset() {
|
||||||
taskId: null,
|
taskId: null,
|
||||||
taskUniqueId: null,
|
taskUniqueId: null,
|
||||||
taskName: null,
|
taskName: null,
|
||||||
bimId: null,
|
|
||||||
schedulePercent: null,
|
schedulePercent: null,
|
||||||
finishDate: null,
|
finishDate: null,
|
||||||
description: null,
|
description: null,
|
||||||
|
@ -338,7 +336,6 @@ function initPlan(proId) {
|
||||||
form.value.taskId = res.data.taskId;
|
form.value.taskId = res.data.taskId;
|
||||||
form.value.taskUniqueId = res.data.taskUniqueId;
|
form.value.taskUniqueId = res.data.taskUniqueId;
|
||||||
form.value.taskName = res.data.taskName;
|
form.value.taskName = res.data.taskName;
|
||||||
form.value.bimId = res.data.bimId;
|
|
||||||
initPreviousSchedule(res.data.id);
|
initPreviousSchedule(res.data.id);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -355,7 +352,7 @@ function buildTree(all, id) {
|
||||||
|
|
||||||
/** 初始化计划管理 */
|
/** 初始化计划管理 */
|
||||||
function initPlanDatas(proId) {
|
function initPlanDatas(proId) {
|
||||||
findPlanDatas(proId).then((res) => {
|
findPlanDatas(proId,'Y').then((res) => {
|
||||||
data.allData = res.data || [];
|
data.allData = res.data || [];
|
||||||
let treeDatas = buildTree(res.data, 1);
|
let treeDatas = buildTree(res.data, 1);
|
||||||
planOptions.value = treeDatas;
|
planOptions.value = treeDatas;
|
||||||
|
@ -369,7 +366,6 @@ function handleChangePlan(value) {
|
||||||
form.value.taskId = res.data.taskId;
|
form.value.taskId = res.data.taskId;
|
||||||
form.value.taskUniqueId = res.data.taskUniqueId;
|
form.value.taskUniqueId = res.data.taskUniqueId;
|
||||||
form.value.taskName = res.data.taskName;
|
form.value.taskName = res.data.taskName;
|
||||||
form.value.bimId = res.data.bimId;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -55,6 +55,20 @@ export default defineConfig(({ mode, command }) => {
|
||||||
"^/statics": "/",
|
"^/statics": "/",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"/cesium": {
|
||||||
|
target: `http://62.234.3.186`,
|
||||||
|
changeOrigin: true,
|
||||||
|
pathRewrite: {
|
||||||
|
"^/cesium": "/",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"/bimdata": {
|
||||||
|
target: `http://62.234.3.186`,
|
||||||
|
changeOrigin: true,
|
||||||
|
pathRewrite: {
|
||||||
|
"^/bimdata": "/",
|
||||||
|
},
|
||||||
|
},
|
||||||
"/cdn": {
|
"/cdn": {
|
||||||
target: `http://62.234.3.186`,
|
target: `http://62.234.3.186`,
|
||||||
changeOrigin: true,
|
changeOrigin: true,
|
||||||
|
|
Loading…
Reference in New Issue