BIM交底功能开发
parent
8b6ae4daf5
commit
e0b57d70b0
|
@ -15,6 +15,8 @@
|
||||||
"element-ui": "^2.15.13",
|
"element-ui": "^2.15.13",
|
||||||
"emittery": "^0.8.1",
|
"emittery": "^0.8.1",
|
||||||
"file-saver": "2.0.5",
|
"file-saver": "2.0.5",
|
||||||
|
"gantt-elastic": "^1.0.12",
|
||||||
|
"gantt-elastic-header": "^0.1.11",
|
||||||
"gsap": "^3.12.2",
|
"gsap": "^3.12.2",
|
||||||
"js-cookie": "^3.0.5",
|
"js-cookie": "^3.0.5",
|
||||||
"less": "^4.1.3",
|
"less": "^4.1.3",
|
||||||
|
@ -34,10 +36,10 @@
|
||||||
"@vue/cli-plugin-babel": "~5.0.0",
|
"@vue/cli-plugin-babel": "~5.0.0",
|
||||||
"@vue/cli-plugin-eslint": "~5.0.0",
|
"@vue/cli-plugin-eslint": "~5.0.0",
|
||||||
"@vue/cli-service": "~5.0.0",
|
"@vue/cli-service": "~5.0.0",
|
||||||
"svg-sprite-loader": "^6.0.11",
|
|
||||||
"eslint": "^7.32.0",
|
"eslint": "^7.32.0",
|
||||||
"eslint-plugin-vue": "^8.0.3",
|
"eslint-plugin-vue": "^8.0.3",
|
||||||
"javascript-obfuscator": "^4.1.1",
|
"javascript-obfuscator": "^4.1.1",
|
||||||
|
"svg-sprite-loader": "^6.0.11",
|
||||||
"vue-template-compiler": "^2.6.14",
|
"vue-template-compiler": "^2.6.14",
|
||||||
"webpack-obfuscator": "^3.5.1"
|
"webpack-obfuscator": "^3.5.1"
|
||||||
},
|
},
|
||||||
|
|
|
@ -235,7 +235,7 @@ export default {
|
||||||
this.showMenus = objs;
|
this.showMenus = objs;
|
||||||
this.showMenusNavIds = this.showMenus.map((d) => d.navId);
|
this.showMenusNavIds = this.showMenus.map((d) => d.navId);
|
||||||
let tmps = this.showMenusNavIds.filter((item) => [1, 2, 3, 4, 5, 6, 7].includes(+item));
|
let tmps = this.showMenusNavIds.filter((item) => [1, 2, 3, 4, 5, 6, 7].includes(+item));
|
||||||
if (!tmps.includes(2) && !this.showMenusNavIds.includes(""+this.nav)) {
|
if (!tmps.includes(2) && !this.showMenusNavIds.includes("" + this.nav)) {
|
||||||
let nav = tmps[0];
|
let nav = tmps[0];
|
||||||
nav = tmps[0];
|
nav = tmps[0];
|
||||||
tmps = this.showMenusNavIds.filter((item) => String(item).startsWith(nav + ""));
|
tmps = this.showMenusNavIds.filter((item) => String(item).startsWith(nav + ""));
|
||||||
|
@ -296,6 +296,9 @@ export default {
|
||||||
case 704:
|
case 704:
|
||||||
this.$router.push("/bimBriefing");
|
this.$router.push("/bimBriefing");
|
||||||
break;
|
break;
|
||||||
|
case 705:
|
||||||
|
this.$router.push("/bim4DSimulation");
|
||||||
|
break;
|
||||||
case 701:
|
case 701:
|
||||||
this.$router.push("/bimManage");
|
this.$router.push("/bimManage");
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
import Vue from "vue";
|
import Vue from "vue";
|
||||||
import VueRouter from "vue-router";
|
import VueRouter from "vue-router";
|
||||||
|
|
||||||
const originalPush = VueRouter.prototype.push
|
const originalPush = VueRouter.prototype.push;
|
||||||
// 解决ElementUI导航栏中的vue-router在3.0版本以上重复点菜单报错问题
|
// 解决ElementUI导航栏中的vue-router在3.0版本以上重复点菜单报错问题
|
||||||
VueRouter.prototype.push = function push(location) {
|
VueRouter.prototype.push = function push(location) {
|
||||||
return originalPush.call(this, location).catch(err => err)
|
return originalPush.call(this, location).catch((err) => err);
|
||||||
}
|
};
|
||||||
Vue.use(VueRouter);
|
Vue.use(VueRouter);
|
||||||
|
|
||||||
const routes = [
|
const routes = [
|
||||||
|
@ -13,143 +13,115 @@ const routes = [
|
||||||
path: "/",
|
path: "/",
|
||||||
name: "index",
|
name: "index",
|
||||||
meta: { nav: 1 },
|
meta: { nav: 1 },
|
||||||
component: () =>
|
component: () => import(/* webpackChunkName: "index" */ "../views/index.vue"),
|
||||||
import(/* webpackChunkName: "index" */ "../views/index.vue"),
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/detail",
|
path: "/detail",
|
||||||
name: "detail",
|
name: "detail",
|
||||||
meta: { nav: 101 },
|
meta: { nav: 101 },
|
||||||
component: () =>
|
component: () => import(/* webpackChunkName: "detail" */ "../views/projectDetail.vue"),
|
||||||
import(/* webpackChunkName: "detail" */ "../views/projectDetail.vue"),
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/labor",
|
path: "/labor",
|
||||||
name: "labor",
|
name: "labor",
|
||||||
meta: { nav: 102 },
|
meta: { nav: 102 },
|
||||||
component: () =>
|
component: () => import(/* webpackChunkName: "labor" */ "../views/projectLabor.vue"),
|
||||||
import(/* webpackChunkName: "labor" */ "../views/projectLabor.vue"),
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/prjSafety",
|
path: "/prjSafety",
|
||||||
name: "prjSafety",
|
name: "prjSafety",
|
||||||
meta: { nav: 21 },
|
meta: { nav: 21 },
|
||||||
component: () =>
|
component: () => import(/* webpackChunkName: "safety" */ "../views/projectSafety.vue"),
|
||||||
import(/* webpackChunkName: "safety" */ "../views/projectSafety.vue"),
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/prjQuality",
|
path: "/prjQuality",
|
||||||
name: "prjQuality",
|
name: "prjQuality",
|
||||||
meta: { nav: 22 },
|
meta: { nav: 22 },
|
||||||
component: () =>
|
component: () => import(/* webpackChunkName: "quality" */ "../views/projectQuality.vue"),
|
||||||
import(/* webpackChunkName: "quality" */ "../views/projectQuality.vue"),
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/prjProgress",
|
path: "/prjProgress",
|
||||||
name: "prjProgress",
|
name: "prjProgress",
|
||||||
meta: { nav: 23 },
|
meta: { nav: 23 },
|
||||||
component: () =>
|
component: () => import(/* webpackChunkName: "progress" */ "../views/projectProgress.vue"),
|
||||||
import(/* webpackChunkName: "progress" */ "../views/projectProgress.vue"),
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/greenCarbon",
|
path: "/greenCarbon",
|
||||||
name: "greenCarbon",
|
name: "greenCarbon",
|
||||||
meta: { nav: 6 },
|
meta: { nav: 6 },
|
||||||
component: () =>
|
component: () => import(/* webpackChunkName: "greenCarbon" */ "../views/greenCarbon.vue"),
|
||||||
import(/* webpackChunkName: "greenCarbon" */ "../views/greenCarbon.vue"),
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/bimManage",
|
path: "/bimManage",
|
||||||
name: "bimManage",
|
name: "bimManage",
|
||||||
meta: { nav: 701 },
|
meta: { nav: 701 },
|
||||||
component: () =>
|
component: () => import(/* webpackChunkName: "bimManage" */ "../views/bimManage.vue"),
|
||||||
import(/* webpackChunkName: "bimManage" */ "../views/bimManage.vue"),
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/bimRoaming",
|
path: "/bimRoaming",
|
||||||
name: "bimRoaming",
|
name: "bimRoaming",
|
||||||
meta: { nav: 702 },
|
meta: { nav: 702 },
|
||||||
component: () =>
|
component: () => import(/* webpackChunkName: "bimRoaming" */ "../views/bimRoaming.vue"),
|
||||||
import(/* webpackChunkName: "bimRoaming" */ "../views/bimRoaming.vue"),
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/bimBriefing",
|
path: "/bimBriefing",
|
||||||
name: "bimBriefing",
|
name: "bimBriefing",
|
||||||
meta: { nav: 704 },
|
meta: { nav: 704 },
|
||||||
component: () =>
|
component: () => import(/* webpackChunkName: "bimBriefing" */ "../views/bimBriefing.vue"),
|
||||||
import(/* webpackChunkName: "bimBriefing" */ "../views/bimBriefing.vue"),
|
},
|
||||||
|
{
|
||||||
|
path: "/bim4DSimulation",
|
||||||
|
name: "bim4DSimulation",
|
||||||
|
meta: { nav: 7045 },
|
||||||
|
component: () => import(/* webpackChunkName: "bim4DSimulation" */ "../views/bim4DSimulation.vue"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/videoMonitor",
|
path: "/videoMonitor",
|
||||||
name: "videoMonitor",
|
name: "videoMonitor",
|
||||||
meta: { nav: 309 },
|
meta: { nav: 309 },
|
||||||
component: () =>
|
component: () => import(/* webpackChunkName: "videoMonitor" */ "../views/videoMonitor.vue"),
|
||||||
import(
|
|
||||||
/* webpackChunkName: "videoMonitor" */ "../views/videoMonitor.vue"
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/safetyCheck",
|
path: "/safetyCheck",
|
||||||
name: "safetyCheck",
|
name: "safetyCheck",
|
||||||
meta: { nav: 301 },
|
meta: { nav: 301 },
|
||||||
component: () =>
|
component: () => import(/* webpackChunkName: "safetyCheck" */ "../views/safety/safetyCheck.vue"),
|
||||||
import(
|
|
||||||
/* webpackChunkName: "safetyCheck" */ "../views/safety/safetyCheck.vue"
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/towerCrane",
|
path: "/towerCrane",
|
||||||
name: "towerCrane",
|
name: "towerCrane",
|
||||||
meta: { nav: 304 },
|
meta: { nav: 304 },
|
||||||
component: () =>
|
component: () => import(/* webpackChunkName: "safetyCheck" */ "../views/safety/towerCrane.vue"),
|
||||||
import(
|
|
||||||
/* webpackChunkName: "safetyCheck" */ "../views/safety/towerCrane.vue"
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/powerIot",
|
path: "/powerIot",
|
||||||
name: "powerIot",
|
name: "powerIot",
|
||||||
meta: { nav: 306 },
|
meta: { nav: 306 },
|
||||||
component: () =>
|
component: () => import(/* webpackChunkName: "safetyCheck" */ "../views/safety/powerIot.vue"),
|
||||||
import(
|
|
||||||
/* webpackChunkName: "safetyCheck" */ "../views/safety/powerIot.vue"
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/dumbwaiter",
|
path: "/dumbwaiter",
|
||||||
name: "dumbwaiter",
|
name: "dumbwaiter",
|
||||||
meta: { nav: 308 },
|
meta: { nav: 308 },
|
||||||
component: () =>
|
component: () => import(/* webpackChunkName: "safetyCheck" */ "../views/safety/dumbwaiter.vue"),
|
||||||
import(
|
|
||||||
/* webpackChunkName: "safetyCheck" */ "../views/safety/dumbwaiter.vue"
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/aiWarning",
|
path: "/aiWarning",
|
||||||
name: "aiWarning",
|
name: "aiWarning",
|
||||||
meta: { nav: 310 },
|
meta: { nav: 310 },
|
||||||
component: () =>
|
component: () => import(/* webpackChunkName: "safetyCheck" */ "../views/safety/aiWarning.vue"),
|
||||||
import(
|
|
||||||
/* webpackChunkName: "safetyCheck" */ "../views/safety/aiWarning.vue"
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/photography",
|
path: "/photography",
|
||||||
name: "photography",
|
name: "photography",
|
||||||
meta: { nav: 501 },
|
meta: { nav: 501 },
|
||||||
component: () =>
|
component: () => import(/* webpackChunkName: "safetyCheck" */ "../views/schedule/photography.vue"),
|
||||||
import(
|
|
||||||
/* webpackChunkName: "safetyCheck" */ "../views/schedule/photography.vue"
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/planSchedule",
|
path: "/planSchedule",
|
||||||
name: "planSchedule",
|
name: "planSchedule",
|
||||||
meta: { nav: 502 },
|
meta: { nav: 502 },
|
||||||
component: () =>
|
component: () => import(/* webpackChunkName: "safetyCheck" */ "../views/schedule/planSchedule.vue"),
|
||||||
import(
|
|
||||||
/* webpackChunkName: "safetyCheck" */ "../views/schedule/planSchedule.vue"
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
const router = new VueRouter({
|
const router = new VueRouter({
|
||||||
|
|
|
@ -51,7 +51,6 @@ function dataFiltering(that, id) {
|
||||||
function getProperty(that) {
|
function getProperty(that) {
|
||||||
let api = bimBriefingApi;
|
let api = bimBriefingApi;
|
||||||
api.Feature.getByEvent(true, (n) => {
|
api.Feature.getByEvent(true, (n) => {
|
||||||
console.log(n);
|
|
||||||
if (n && n["id"]) {
|
if (n && n["id"]) {
|
||||||
let featureId = n.id;
|
let featureId = n.id;
|
||||||
if (featureId.split("^")[1]) {
|
if (featureId.split("^")[1]) {
|
||||||
|
@ -108,15 +107,6 @@ function subFeatureSize(that) {
|
||||||
api.Feature.setColor(featureId, "rgba(255,0,255,1)", modelId);
|
api.Feature.setColor(featureId, "rgba(255,0,255,1)", modelId);
|
||||||
that.selFeatureId = featureId;
|
that.selFeatureId = featureId;
|
||||||
that.info = result;
|
that.info = result;
|
||||||
// api.Measurement.featureArea(featureId, (res) => {
|
|
||||||
// result[1].data = [{ name: "面积", value: ((+res || 0) * unit * unit * 1.0).toFixed(2) + "" }];
|
|
||||||
// api.Measurement.featureVolume(featureId, (res) => {
|
|
||||||
// result[2].data = [{ name: "体积", value: ((+res || 0) * unit * unit * unit * 1.0).toFixed(2) }];
|
|
||||||
// api.Feature.setColor(featureId, "rgba(255,0,255,1)", modelId);
|
|
||||||
// that.selFeatureId = featureId;
|
|
||||||
// that.info=result
|
|
||||||
// });
|
|
||||||
// });
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -145,26 +135,85 @@ function measurementArea(that) {
|
||||||
function measuringVolume(that) {}
|
function measuringVolume(that) {}
|
||||||
//构件距离
|
//构件距离
|
||||||
function distance(that) {
|
function distance(that) {
|
||||||
let api = bimBriefingApi;
|
let api = bimBriefingApi;
|
||||||
that.info = [];
|
let result = [{ name: "测量结果", data: [] }];
|
||||||
|
that.$message.info("请在模型中点击两点,右键结束测量");
|
||||||
api.Public.clearHandler();
|
api.Public.clearHandler();
|
||||||
api.Measurement.clearAllTrace();
|
api.Measurement.clearAllTrace();
|
||||||
//开始测量,左键选点
|
let unit = 1;
|
||||||
api.Measurement.distance(true, (data) => {
|
api.Feature.getByEvent(true, (n) => {
|
||||||
console.log(data);
|
if (n && n["id"]) {
|
||||||
});
|
let featureId = n.id;
|
||||||
|
let modelId = featureId.split("^")[0];
|
||||||
|
unit = getModelUnit(that, modelId);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//开始测量,左键选点
|
||||||
|
api.Measurement.distance(true, (data) => {
|
||||||
|
result[0].data = [
|
||||||
|
{
|
||||||
|
name: "距离",
|
||||||
|
value: (data.distance * unit).toFixed(2),
|
||||||
|
},
|
||||||
|
{ name: "X", value: data.x.toFixed(2) },
|
||||||
|
{ name: "Y", value: data.y.toFixed(2) },
|
||||||
|
{ name: "Z", value: data.z.toFixed(2) },
|
||||||
|
];
|
||||||
|
that.info = result;
|
||||||
|
});
|
||||||
|
|
||||||
//右键结束测量
|
api.Public.event("LEFT_CLICK", (res) => {
|
||||||
api.Public.event("RIGHT_CLICK", (res) => {
|
api.Measurement.clearAllTrace();
|
||||||
api.Measurement.distance(false);
|
});
|
||||||
});
|
//右键结束测量
|
||||||
|
api.Public.event("RIGHT_CLICK", (res) => {
|
||||||
|
api.Measurement.distance(false);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function getModels(that) {
|
||||||
|
return that.models.map((d) => d.modelId);
|
||||||
|
}
|
||||||
|
//剖切
|
||||||
|
function initClipping(that) {
|
||||||
|
let api = bimBriefingApi;
|
||||||
|
api.Model.clipByBox(getModels(that));
|
||||||
}
|
}
|
||||||
|
|
||||||
//剖切
|
|
||||||
function initClipping(that) {}
|
|
||||||
|
|
||||||
//构件隐藏
|
//构件隐藏
|
||||||
function actorVisible() {}
|
function actorVisible() {
|
||||||
|
let api = bimBriefingApi;
|
||||||
|
api.Feature.getByEvent(true, (n) => {
|
||||||
|
if (n && n["id"]) {
|
||||||
|
let featureId = n.id;
|
||||||
|
let modelId = featureId.split("^")[0];
|
||||||
|
api.Feature.setVisible(featureId, false);
|
||||||
|
that.hideFeatureIds.push(featureId);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function clearEvent(that) {
|
||||||
|
let api = bimBriefingApi;
|
||||||
|
if (api) {
|
||||||
|
actorShow(that);
|
||||||
|
api.Feature.getByEvent(false);
|
||||||
|
api.Model.closeClip();
|
||||||
|
api.Model.clearBoundsBox();
|
||||||
|
api.Measurement.setFaceToFaceState(!1);
|
||||||
|
api.Measurement.setPointToFaceVerticalDistanceState(!1);
|
||||||
|
api.Public.clearAllDrawObject();
|
||||||
|
api.Feature.getByEvent(!1);
|
||||||
|
api.Measurement.angle(!1);
|
||||||
|
api.Measurement.distance(!1);
|
||||||
|
api.Measurement.clearAllTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function actorShow(that) {
|
||||||
|
let api = bimBriefingApi;
|
||||||
|
getModels(that).forEach((id) => {
|
||||||
|
api.Model.original(id);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
measurementArea,
|
measurementArea,
|
||||||
|
@ -175,4 +224,6 @@ export default {
|
||||||
distance,
|
distance,
|
||||||
initClipping,
|
initClipping,
|
||||||
actorVisible,
|
actorVisible,
|
||||||
|
actorShow,
|
||||||
|
clearEvent,
|
||||||
};
|
};
|
||||||
|
|
|
@ -0,0 +1,360 @@
|
||||||
|
<template>
|
||||||
|
<div class="bim-4d-simulation main-page">
|
||||||
|
<div v-if="hasLoad">
|
||||||
|
<gantt-elastic :options="options" :tasks="taskList" @tasks-changed="tasksUpdate" @options-changed="optionsUpdate" @dynamic-style-changed="styleUpdate">
|
||||||
|
<gantt-header slot="header" :options="optionList" v-if="1==2"></gantt-header>
|
||||||
|
</gantt-elastic>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import debounce from "lodash.debounce";
|
||||||
|
import ganttElastic from "gantt-elastic";
|
||||||
|
import ganttHeader from "gantt-elastic-header";
|
||||||
|
let options = {
|
||||||
|
taskMapping: {
|
||||||
|
progress: "percent",
|
||||||
|
},
|
||||||
|
maxRows: 100,
|
||||||
|
maxHeight: 500,
|
||||||
|
title: {
|
||||||
|
label: "Your project title as html (link or whatever...)",
|
||||||
|
html: false,
|
||||||
|
},
|
||||||
|
row: {
|
||||||
|
height: 24,
|
||||||
|
},
|
||||||
|
calendar: {
|
||||||
|
hour: {
|
||||||
|
display: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
chart: {
|
||||||
|
progress: {
|
||||||
|
bar: false,
|
||||||
|
},
|
||||||
|
expander: {
|
||||||
|
display: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
taskList: {
|
||||||
|
expander: {
|
||||||
|
straight: false,
|
||||||
|
},
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
label: "ID",
|
||||||
|
value: "id",
|
||||||
|
width: 40,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
label: "Description",
|
||||||
|
value: "label",
|
||||||
|
width: 200,
|
||||||
|
expander: true,
|
||||||
|
html: true,
|
||||||
|
events: {
|
||||||
|
click({ data, column }) {
|
||||||
|
alert("description clicked!\n" + data.label);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
label: "Assigned to",
|
||||||
|
value: "user",
|
||||||
|
width: 130,
|
||||||
|
html: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
label: "Start",
|
||||||
|
value: (task) => dayjs(task.start).format("YYYY-MM-DD"),
|
||||||
|
width: 78,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 4,
|
||||||
|
label: "Type",
|
||||||
|
value: "type",
|
||||||
|
width: 68,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 5,
|
||||||
|
label: "%",
|
||||||
|
value: "progress",
|
||||||
|
width: 35,
|
||||||
|
style: {
|
||||||
|
"task-list-header-label": {
|
||||||
|
"text-align": "center",
|
||||||
|
width: "100%",
|
||||||
|
},
|
||||||
|
"task-list-item-value-container": {
|
||||||
|
"text-align": "center",
|
||||||
|
width: "100%",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
locale: {
|
||||||
|
name: "en",
|
||||||
|
Now: "当前时间",
|
||||||
|
"X-Scale": "缩放宽度",
|
||||||
|
"Y-Scale": "缩放高度",
|
||||||
|
"Task list width": "列头宽度",
|
||||||
|
"Before/After": "时间跨度",
|
||||||
|
"Display task list": "显示列头",
|
||||||
|
weekdays: ["周日", "周一", "周二", "周三", "周四", "周五", "周六"],
|
||||||
|
months: [
|
||||||
|
"一月",
|
||||||
|
"二月",
|
||||||
|
"三月",
|
||||||
|
"四月",
|
||||||
|
"五月",
|
||||||
|
"六月",
|
||||||
|
"七月",
|
||||||
|
"八月",
|
||||||
|
"九月",
|
||||||
|
"十月",
|
||||||
|
"十一月",
|
||||||
|
"十二月",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
ganttElastic,
|
||||||
|
ganttHeader,
|
||||||
|
},
|
||||||
|
name: "Bim4DSimulation",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
dpi: "",
|
||||||
|
elId: 1,
|
||||||
|
taskList: [],
|
||||||
|
options,
|
||||||
|
hasLoad: false,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
beforeDestroy() {
|
||||||
|
document.body.classList.remove("is-sapi");
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.$store.dispatch("ChangeNav", 705);
|
||||||
|
this.dpi = this.$dpi();
|
||||||
|
window.addEventListener("resize", () => {
|
||||||
|
if (this.dpi != this.$dpi()) {
|
||||||
|
this.dpi = this.$dpi();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.$bus.$on(
|
||||||
|
"projectChange",
|
||||||
|
debounce((prj) => {
|
||||||
|
this.selProject = prj;
|
||||||
|
this.elId++;
|
||||||
|
//this.initEngine();
|
||||||
|
})
|
||||||
|
);
|
||||||
|
this.selProject = this.$store.getters.selProject;
|
||||||
|
document.body.classList.add("is-sapi");
|
||||||
|
//this.initEngine();
|
||||||
|
function getDate(hours) {
|
||||||
|
const currentDate = new Date();
|
||||||
|
const currentYear = currentDate.getFullYear();
|
||||||
|
const currentMonth = currentDate.getMonth();
|
||||||
|
const currentDay = currentDate.getDate();
|
||||||
|
const timeStamp = new Date(currentYear, currentMonth, currentDay, 0, 0, 0).getTime();
|
||||||
|
return new Date(timeStamp + hours * 60 * 60 * 1000).getTime();
|
||||||
|
}
|
||||||
|
this.taskList = [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
label: "Make some noise",
|
||||||
|
user: '<a href="https://www.google.com/search?q=John+Doe" target="_blank" style="color:#0077c0;">John Doe</a>',
|
||||||
|
start: getDate(-24 * 5),
|
||||||
|
duration: 15 * 24 * 60 * 60 * 1000,
|
||||||
|
percent: 85,
|
||||||
|
type: "project",
|
||||||
|
//collapsed: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
label: "With great power comes great responsibility",
|
||||||
|
user: '<a href="https://www.google.com/search?q=Peter+Parker" target="_blank" style="color:#0077c0;">Peter Parker</a>',
|
||||||
|
parentId: 1,
|
||||||
|
start: getDate(-24 * 4),
|
||||||
|
duration: 4 * 24 * 60 * 60 * 1000,
|
||||||
|
percent: 50,
|
||||||
|
type: "milestone",
|
||||||
|
collapsed: true,
|
||||||
|
style: {
|
||||||
|
base: {
|
||||||
|
fill: "#1EBC61",
|
||||||
|
stroke: "#0EAC51",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
label: "Courage is being scared to death, but saddling up anyway.",
|
||||||
|
user: '<a href="https://www.google.com/search?q=John+Wayne" target="_blank" style="color:#0077c0;">John Wayne</a>',
|
||||||
|
parentId: 2,
|
||||||
|
start: getDate(-24 * 3),
|
||||||
|
duration: 2 * 24 * 60 * 60 * 1000,
|
||||||
|
percent: 100,
|
||||||
|
type: "task",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 4,
|
||||||
|
label: "Put that toy AWAY!",
|
||||||
|
user: '<a href="https://www.google.com/search?q=Clark+Kent" target="_blank" style="color:#0077c0;">Clark Kent</a>',
|
||||||
|
start: getDate(-24 * 2),
|
||||||
|
duration: 2 * 24 * 60 * 60 * 1000,
|
||||||
|
percent: 50,
|
||||||
|
type: "task",
|
||||||
|
dependentOn: [3],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 5,
|
||||||
|
label: "One billion, gajillion, fafillion... shabadylu...mil...shabady......uh, Yen.",
|
||||||
|
user: '<a href="https://www.google.com/search?q=Austin+Powers" target="_blank" style="color:#0077c0;">Austin Powers</a>',
|
||||||
|
parentId: 4,
|
||||||
|
start: getDate(0),
|
||||||
|
duration: 2 * 24 * 60 * 60 * 1000,
|
||||||
|
percent: 10,
|
||||||
|
type: "milestone",
|
||||||
|
style: {
|
||||||
|
base: {
|
||||||
|
fill: "#0287D0",
|
||||||
|
stroke: "#0077C0",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 6,
|
||||||
|
label: "Butch Mario and the Luigi Kid",
|
||||||
|
user: '<a href="https://www.google.com/search?q=Mario+Bros" target="_blank" style="color:#0077c0;">Mario Bros</a>',
|
||||||
|
parentId: 5,
|
||||||
|
start: getDate(24),
|
||||||
|
duration: 1 * 24 * 60 * 60 * 1000,
|
||||||
|
percent: 50,
|
||||||
|
type: "task",
|
||||||
|
collapsed: true,
|
||||||
|
style: {
|
||||||
|
base: {
|
||||||
|
fill: "#8E44AD",
|
||||||
|
stroke: "#7E349D",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 7,
|
||||||
|
label: "Devon, the old man wanted me, it was his dying request",
|
||||||
|
user: '<a href="https://www.google.com/search?q=Knight+Rider" target="_blank" style="color:#0077c0;">Knight Rider</a>',
|
||||||
|
parentId: 2,
|
||||||
|
dependentOn: [6],
|
||||||
|
start: getDate(24 * 2),
|
||||||
|
duration: 4 * 60 * 60 * 1000,
|
||||||
|
percent: 20,
|
||||||
|
type: "task",
|
||||||
|
collapsed: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 8,
|
||||||
|
label: "Hey, Baby! Anybody ever tell you I have beautiful eyes?",
|
||||||
|
user: '<a href="https://www.google.com/search?q=Johhny+Bravo" target="_blank" style="color:#0077c0;">Johhny Bravo</a>',
|
||||||
|
parentId: 7,
|
||||||
|
dependentOn: [7],
|
||||||
|
start: getDate(24 * 3),
|
||||||
|
duration: 1 * 24 * 60 * 60 * 1000,
|
||||||
|
percent: 0,
|
||||||
|
type: "task",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 9,
|
||||||
|
label: "This better be important, woman. You are interrupting my very delicate calculations.",
|
||||||
|
user: '<a href="https://www.google.com/search?q=Dexter\'s+Laboratory" target="_blank" style="color:#0077c0;">Dexter\'s Laboratory</a>',
|
||||||
|
parentId: 8,
|
||||||
|
dependentOn: [8, 7],
|
||||||
|
start: getDate(24 * 4),
|
||||||
|
duration: 4 * 60 * 60 * 1000,
|
||||||
|
percent: 20,
|
||||||
|
type: "task",
|
||||||
|
style: {
|
||||||
|
base: {
|
||||||
|
fill: "#8E44AD",
|
||||||
|
stroke: "#7E349D",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 10,
|
||||||
|
label: "current task",
|
||||||
|
user: '<a href="https://www.google.com/search?q=Johnattan+Owens" target="_blank" style="color:#0077c0;">Johnattan Owens</a>',
|
||||||
|
start: getDate(24 * 5),
|
||||||
|
duration: 24 * 60 * 60 * 1000,
|
||||||
|
percent: 0,
|
||||||
|
type: "task",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 11,
|
||||||
|
label: "test task",
|
||||||
|
user: '<a href="https://www.google.com/search?q=Johnattan+Owens" target="_blank" style="color:#0077c0;">Johnattan Owens</a>',
|
||||||
|
start: getDate(24 * 6),
|
||||||
|
duration: 24 * 60 * 60 * 1000,
|
||||||
|
percent: 0,
|
||||||
|
type: "task",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 12,
|
||||||
|
label: "test task",
|
||||||
|
user: '<a href="https://www.google.com/search?q=Johnattan+Owens" target="_blank" style="color:#0077c0;">Johnattan Owens</a>',
|
||||||
|
start: getDate(24 * 7),
|
||||||
|
duration: 24 * 60 * 60 * 1000,
|
||||||
|
percent: 0,
|
||||||
|
type: "task",
|
||||||
|
parentId: 11,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 13,
|
||||||
|
label: "test task",
|
||||||
|
user: '<a href="https://www.google.com/search?q=Johnattan+Owens" target="_blank" style="color:#0077c0;">Johnattan Owens</a>',
|
||||||
|
start: getDate(24 * 8),
|
||||||
|
duration: 24 * 60 * 60 * 1000,
|
||||||
|
percent: 0,
|
||||||
|
type: "task",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 14,
|
||||||
|
label: "test task",
|
||||||
|
user: '<a href="https://www.google.com/search?q=Johnattan+Owens" target="_blank" style="color:#0077c0;">Johnattan Owens</a>',
|
||||||
|
start: getDate(24 * 9),
|
||||||
|
duration: 24 * 60 * 60 * 1000,
|
||||||
|
percent: 0,
|
||||||
|
type: "task",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 15,
|
||||||
|
label: "test task",
|
||||||
|
user: '<a href="https://www.google.com/search?q=Johnattan+Owens" target="_blank" style="color:#0077c0;">Johnattan Owens</a>',
|
||||||
|
start: getDate(24 * 16),
|
||||||
|
duration: 24 * 60 * 60 * 1000,
|
||||||
|
percent: 0,
|
||||||
|
type: "task",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
this.hasLoad = true;
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
tasksUpdate() {},
|
||||||
|
optionsUpdate() {},
|
||||||
|
styleUpdate() {},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less"></style>
|
|
@ -65,7 +65,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template v-if="selectMenu == 1 || selectMenu == 2">
|
<template v-if="selectMenu == 1 || selectMenu == 4">
|
||||||
<div class="info-list">
|
<div class="info-list">
|
||||||
<div v-for="(item, index) in info" :key="index">
|
<div v-for="(item, index) in info" :key="index">
|
||||||
<div class="group-info">
|
<div class="group-info">
|
||||||
|
@ -73,18 +73,44 @@
|
||||||
<span>{{ item.name }}</span>
|
<span>{{ item.name }}</span>
|
||||||
</div>
|
</div>
|
||||||
<table class="model-property-table my-table">
|
<table class="model-property-table my-table">
|
||||||
<tr v-for="(item2, index2) in item.data" :key="index2+'-'+index">
|
<tr v-for="(item2, index2) in item.data" :key="index2 + '-' + index">
|
||||||
<th width="50%">{{ item2.name }}</th>
|
<th width="50%">{{ item2.name }}</th>
|
||||||
<td width="50%">{{ item2.value }}
|
<td width="50%">
|
||||||
<span v-if="index==0">米</span>
|
{{ item2.value }}
|
||||||
<span v-if="index==1">米<sup>2</sup></span>
|
<span v-if="index == 0">米</span>
|
||||||
<span v-if="index==2">米<sup>3</sup></span>
|
<span v-if="index == 1">米<sup>2</sup></span>
|
||||||
|
<span v-if="index == 2">米<sup>3</sup></span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<div class="clipping-tip" v-if="showClipping">
|
||||||
|
<div class="info-list">
|
||||||
|
<div>
|
||||||
|
<div class="group-info">
|
||||||
|
<svg-icon icon-class="info" />
|
||||||
|
<span>操作指南</span>
|
||||||
|
</div>
|
||||||
|
<table class="clipping-tip-table my-table">
|
||||||
|
<tr>
|
||||||
|
<th>鼠标左键按住剖面框中心箭头线</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>拖动可平移剖面框,移出剖面框的部分将被剖切掉</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>鼠标左键按住剖面框中心箭头线之间的弧线</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>拖动可旋转剖面框,移出剖面框的部分将被剖切掉</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -133,7 +159,7 @@
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="tool-item" :class="{ 'is-selected': selectMenu == 2 }" @click="doSelectMenu(2)" v-if="1==2">
|
<div class="tool-item" :class="{ 'is-selected': selectMenu == 2 }" @click="doSelectMenu(2)" v-if="1 == 2">
|
||||||
<el-tooltip content="构建面积" placement="top">
|
<el-tooltip content="构建面积" placement="top">
|
||||||
<div class="icon">
|
<div class="icon">
|
||||||
<svg-icon icon-class="area2" />
|
<svg-icon icon-class="area2" />
|
||||||
|
@ -141,7 +167,7 @@
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="tool-item" :class="{ 'is-selected': selectMenu == 3 }" @click="doSelectMenu(3)" v-if="1==2">
|
<div class="tool-item" :class="{ 'is-selected': selectMenu == 3 }" @click="doSelectMenu(3)" v-if="1 == 2">
|
||||||
<el-tooltip content="构建体积" placement="top">
|
<el-tooltip content="构建体积" placement="top">
|
||||||
<div class="icon">
|
<div class="icon">
|
||||||
<svg-icon icon-class="volume" />
|
<svg-icon icon-class="volume" />
|
||||||
|
@ -212,6 +238,7 @@ export default {
|
||||||
viewPoint: [],
|
viewPoint: [],
|
||||||
info: [],
|
info: [],
|
||||||
title: "属性",
|
title: "属性",
|
||||||
|
showClipping: false,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
@ -236,10 +263,8 @@ export default {
|
||||||
methods: {
|
methods: {
|
||||||
doSelectMenu(index) {
|
doSelectMenu(index) {
|
||||||
this.selectMenu = index;
|
this.selectMenu = index;
|
||||||
if (window.bimBriefingApi) {
|
briefingTools.clearEvent(this);
|
||||||
let api = bimBriefingApi;
|
this.showClipping = false;
|
||||||
api.Feature.getByEvent(false);
|
|
||||||
}
|
|
||||||
briefingTools.clearSelectFeature(this);
|
briefingTools.clearSelectFeature(this);
|
||||||
switch (index) {
|
switch (index) {
|
||||||
case 0:
|
case 0:
|
||||||
|
@ -264,6 +289,7 @@ export default {
|
||||||
case 5:
|
case 5:
|
||||||
briefingTools.initClipping(this);
|
briefingTools.initClipping(this);
|
||||||
this.title = "剖切";
|
this.title = "剖切";
|
||||||
|
this.showClipping = true;
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
briefingTools.actorVisible(this);
|
briefingTools.actorVisible(this);
|
||||||
|
@ -360,7 +386,7 @@ export default {
|
||||||
this.propertyAttr = [];
|
this.propertyAttr = [];
|
||||||
this.propertyType = [];
|
this.propertyType = [];
|
||||||
this.viewPoint = [];
|
this.viewPoint = [];
|
||||||
this.info=[];
|
this.info = [];
|
||||||
this.attributeInformation = "";
|
this.attributeInformation = "";
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
this.loadEngine();
|
this.loadEngine();
|
||||||
|
@ -732,5 +758,82 @@ export default {
|
||||||
color: #22d3f4;
|
color: #22d3f4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@media (min-width: 2561px) {
|
||||||
|
.data-content {
|
||||||
|
.div-row {
|
||||||
|
&.r33 {
|
||||||
|
height: 210px;
|
||||||
|
}
|
||||||
|
&.r66 {
|
||||||
|
height: calc(100% - 210px);
|
||||||
|
}
|
||||||
|
.row-title {
|
||||||
|
height: 48px;
|
||||||
|
line-height: 48px;
|
||||||
|
font-size: 28px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.div-tools {
|
||||||
|
margin-left: -300px;
|
||||||
|
border-radius: 10px;
|
||||||
|
.tool-item {
|
||||||
|
padding: 10px 20px;
|
||||||
|
.icon {
|
||||||
|
width: 60px;
|
||||||
|
height: 60px;
|
||||||
|
border-radius: 30px;
|
||||||
|
.svg-icon {
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.sp-text {
|
||||||
|
margin-top: 10px;
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.model-tree {
|
||||||
|
.el-tree {
|
||||||
|
font-size: 24px;
|
||||||
|
.el-tree-node__content {
|
||||||
|
height: 36px;
|
||||||
|
}
|
||||||
|
.el-tree-node__expand-icon {
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
.el-checkbox {
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
.el-tree-node__label {
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
.el-tree__empty-text {
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.group-info {
|
||||||
|
.svg-icon {
|
||||||
|
width: 30px;
|
||||||
|
height: 30px;
|
||||||
|
}
|
||||||
|
span {
|
||||||
|
font-size: 20px;
|
||||||
|
position: relative;
|
||||||
|
top:-6px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.my-table {
|
||||||
|
td,
|
||||||
|
th {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -1,398 +0,0 @@
|
||||||
<template>
|
|
||||||
<div class="bim-roaming main-page">
|
|
||||||
<div id="bimRoaming" :key="elId">
|
|
||||||
<div id="bimRoamingContainer" class="bimRoamingContainer"></div>
|
|
||||||
|
|
||||||
<div class="div-left" :class="{ isShow: leftShow, isHide: !leftShow }">
|
|
||||||
<transition name="left">
|
|
||||||
<div class="data-content" v-show="leftShow">
|
|
||||||
<div class="div-row">
|
|
||||||
<div class="row-title">
|
|
||||||
<svg-icon icon-class="signal"></svg-icon>
|
|
||||||
模型结构树
|
|
||||||
</div>
|
|
||||||
<div class="model-tree">
|
|
||||||
<el-tree
|
|
||||||
v-if="showTree"
|
|
||||||
ref="tree"
|
|
||||||
:default-expanded-keys="[0, 1]"
|
|
||||||
:props="{
|
|
||||||
children: 'children',
|
|
||||||
label: 'title',
|
|
||||||
}"
|
|
||||||
node-key="key"
|
|
||||||
@check="onCheckTree"
|
|
||||||
:load="loadTreeNode" lazy
|
|
||||||
show-checkbox></el-tree>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</transition>
|
|
||||||
<img :src="leftSrc" class="toSafety-fixed-left-img" @click="arrowRetract" id="arrowLeft" />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="div-right" :class="{ isShow: leftShow, isHide: !leftShow }">
|
|
||||||
<transition name="right">
|
|
||||||
<div class="data-content" v-show="leftShow">
|
|
||||||
<div class="div-row r33">
|
|
||||||
<div class="row-title">
|
|
||||||
<svg-icon icon-class="signal"></svg-icon>
|
|
||||||
漫游方案
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="div-row r66">
|
|
||||||
<div class="row-title">
|
|
||||||
<svg-icon icon-class="signal"></svg-icon>
|
|
||||||
视点列表
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</transition>
|
|
||||||
<img :src="rightSrc" class="toSafety-fixed-right-img" @click="arrowRetract" id="arrowRight" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="div-tools">
|
|
||||||
<div class="tool-item" @click="resetScene">
|
|
||||||
<div class="icon">
|
|
||||||
<svg-icon icon-class="home" />
|
|
||||||
</div>
|
|
||||||
<span class="sp-text">默认视点</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import debounce from "lodash.debounce";
|
|
||||||
export default {
|
|
||||||
name: "BIMRoaming",
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
dpi: "",
|
|
||||||
selProject: null,
|
|
||||||
leftSrc: "./bimImages/arrow_left_retract.png",
|
|
||||||
rightSrc: "./bimImages/arrow_right_retract.png",
|
|
||||||
leftShow: true,
|
|
||||||
models: [],
|
|
||||||
showTree:false,
|
|
||||||
modelTrees: [],
|
|
||||||
};
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
this.$store.dispatch("ChangeNav", 702);
|
|
||||||
this.dpi = this.$dpi();
|
|
||||||
window.addEventListener("resize", () => {
|
|
||||||
if (this.dpi != this.$dpi()) {
|
|
||||||
this.dpi = this.$dpi();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
this.$bus.$on(
|
|
||||||
"projectChange",
|
|
||||||
debounce((prj) => {
|
|
||||||
this.selProject = prj;
|
|
||||||
this.elId++;
|
|
||||||
this.initEngine();
|
|
||||||
})
|
|
||||||
);
|
|
||||||
this.selProject = this.$store.getters.selProject;
|
|
||||||
this.initEngine();
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
onCheckTree() {},
|
|
||||||
arrowRetract() {
|
|
||||||
if (this.leftShow == true) {
|
|
||||||
this.rightSrc = "./images/arrow_right_open.png";
|
|
||||||
this.leftSrc = "./images/arrow_left_open.png";
|
|
||||||
$("#arrowLeft").animate({ left: 10 + "px" }, 300);
|
|
||||||
$("#arrowRight").animate({ right: 10 + "px" }, 300);
|
|
||||||
} else {
|
|
||||||
this.rightSrc = "./images/arrow_right_retract.png";
|
|
||||||
this.leftSrc = "./images/arrow_left_retract.png";
|
|
||||||
|
|
||||||
$("#arrowLeft").animate({ left: 490 + "px" }, 300);
|
|
||||||
$("#arrowRight").animate({ right: 490 + "px" }, 300);
|
|
||||||
}
|
|
||||||
this.leftShow = !this.leftShow;
|
|
||||||
},
|
|
||||||
initEngine() {
|
|
||||||
this.elId++;
|
|
||||||
this.activeMenu = 0;
|
|
||||||
setTimeout(() => {
|
|
||||||
this.loadEngine();
|
|
||||||
}, 10);
|
|
||||||
},
|
|
||||||
loadEngine() {
|
|
||||||
window.bimMgrApi = new SAPI(
|
|
||||||
{
|
|
||||||
serverIP: window.config.serverIP, //服务ip地址
|
|
||||||
port: window.config.port, //HTTP端口
|
|
||||||
useHttps: window.config.useHttps, //使用Https
|
|
||||||
container: "bimRoamingContainer", //[必须]容器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("初始化成功");
|
|
||||||
setTimeout(() => {
|
|
||||||
this.initLoadModel();
|
|
||||||
}, 10);
|
|
||||||
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轴线
|
|
||||||
};
|
|
||||||
bimMgrApi.Plugin.initNavCube(mapOptions);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
},
|
|
||||||
initLoadModel() {
|
|
||||||
this.$api.bim
|
|
||||||
.listBimModel({
|
|
||||||
pageNum: 1,
|
|
||||||
pageSize: 100,
|
|
||||||
comId: this.currentComId,
|
|
||||||
projectId: this.currentPrjId,
|
|
||||||
})
|
|
||||||
.then((d) => {
|
|
||||||
this.models = d.rows || [];
|
|
||||||
if (this.models.length == 0) {
|
|
||||||
this.$modal.msgError("暂无模型,请先关联模型");
|
|
||||||
} else {
|
|
||||||
this.models.forEach((item) => {
|
|
||||||
this.addModel(item.lightweightName);
|
|
||||||
});
|
|
||||||
this.loadModelTree();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
loadModelTree() {
|
|
||||||
this.modelTrees = [
|
|
||||||
{
|
|
||||||
title: "项目模型",
|
|
||||||
level: 0,
|
|
||||||
type: "root",
|
|
||||||
key: "root",
|
|
||||||
children: [],
|
|
||||||
hadLoad: true,
|
|
||||||
},
|
|
||||||
];
|
|
||||||
this.models
|
|
||||||
.map((d) => {
|
|
||||||
d.gis = JSON.parse(d.gisJson);
|
|
||||||
return d;
|
|
||||||
})
|
|
||||||
.forEach((d) => {
|
|
||||||
this.modelTrees[0].children.push({
|
|
||||||
title: d.modelName,
|
|
||||||
level: 1,
|
|
||||||
type: "model",
|
|
||||||
hasLoad: false,
|
|
||||||
modelId: d.lightweightName,
|
|
||||||
key: d.lightweightName,
|
|
||||||
externalId: "0",
|
|
||||||
glid: "",
|
|
||||||
children: [],
|
|
||||||
data: d,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
this.showTree=true;
|
|
||||||
},
|
|
||||||
loadTreeNode(node, resolve, reject){
|
|
||||||
if(node.level==0){
|
|
||||||
resolve([this.modelTrees[0]])
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if(node.level==1){
|
|
||||||
let objs=this.modelTrees[0].children;
|
|
||||||
resolve(objs)
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
resolve([{title:'aaa'}])
|
|
||||||
return;
|
|
||||||
|
|
||||||
console.log(nd)
|
|
||||||
// this.$api.bim.getModelTree(nd.modelId,nd.glid).then(res=>{
|
|
||||||
// console.log(res)
|
|
||||||
// })
|
|
||||||
},
|
|
||||||
addModel(modelId, cb) {
|
|
||||||
let url = `${window.config.modelUrl}/Tools/output/model/${modelId}/root.glt`;
|
|
||||||
console.log(modelId, url);
|
|
||||||
bimMgrApi.Model.add(
|
|
||||||
url,
|
|
||||||
modelId,
|
|
||||||
() => {},
|
|
||||||
() => {
|
|
||||||
cb && cb();
|
|
||||||
console.log("加载模型成功");
|
|
||||||
setTimeout(() => {
|
|
||||||
bimMgrApi.Camera.getViewPort((p) => {
|
|
||||||
this.viewPoint = p;
|
|
||||||
});
|
|
||||||
}, 1000);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
},
|
|
||||||
resetScene() {
|
|
||||||
bimMgrApi.Camera.stopImmersiveRoam();
|
|
||||||
bimMgrApi.Model.location(bimMgrApi.m_model.keys().toArray()[0]);
|
|
||||||
bimMgrApi.Plugin.deleteMiniMap();
|
|
||||||
if (this.viewPoint) {
|
|
||||||
bimMgrApi.Camera.setViewPort(this.viewPoint);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="less">
|
|
||||||
.bim-roaming {
|
|
||||||
height: 100%;
|
|
||||||
position: relative;
|
|
||||||
#bimRoaming {
|
|
||||||
height: 100%;
|
|
||||||
#bimRoamingContainer {
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.div-left {
|
|
||||||
top: 10vh;
|
|
||||||
left: 5%;
|
|
||||||
position: absolute;
|
|
||||||
height: 70vh;
|
|
||||||
width: 14%;
|
|
||||||
&.isHide {
|
|
||||||
left: 0%;
|
|
||||||
wdith: 0%;
|
|
||||||
#arrowLeft {
|
|
||||||
left: 0px !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#arrowLeft {
|
|
||||||
top: calc(50% - 50px);
|
|
||||||
right: -21px;
|
|
||||||
left: unset !important;
|
|
||||||
}
|
|
||||||
.div-row {
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.div-right {
|
|
||||||
top: 10vh;
|
|
||||||
right: 5%;
|
|
||||||
position: absolute;
|
|
||||||
height: 70vh;
|
|
||||||
width: 14%;
|
|
||||||
&.isHide {
|
|
||||||
right: 0%;
|
|
||||||
width: 0%;
|
|
||||||
}
|
|
||||||
#arrowRight {
|
|
||||||
top: calc(50% - 50px);
|
|
||||||
left: -21px;
|
|
||||||
}
|
|
||||||
.div-row {
|
|
||||||
&.r33 {
|
|
||||||
height: 33.33%;
|
|
||||||
}
|
|
||||||
&.r66 {
|
|
||||||
height: 66.66%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.data-content {
|
|
||||||
height: 100%;
|
|
||||||
.div-row {
|
|
||||||
border: solid 1px #75fbfdaa;
|
|
||||||
background-color: #06445b81;
|
|
||||||
.row-title {
|
|
||||||
background: linear-gradient(0deg, #105696, #c0dafb00, #1765ae);
|
|
||||||
padding-left: 10px;
|
|
||||||
height: 36px;
|
|
||||||
line-height: 36px;
|
|
||||||
.svg-icon {
|
|
||||||
fill: #75fbfd;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.div-tools {
|
|
||||||
position: absolute;
|
|
||||||
bottom: 25vh;
|
|
||||||
left: 50%;
|
|
||||||
margin-left: -34px;
|
|
||||||
display: flex;
|
|
||||||
background: #00000080;
|
|
||||||
border-radius: 10px;
|
|
||||||
.tool-item {
|
|
||||||
display: flex;
|
|
||||||
flex-flow: column;
|
|
||||||
padding: 10px;
|
|
||||||
align-items: center;
|
|
||||||
cursor: pointer;
|
|
||||||
&.is-active {
|
|
||||||
.icon {
|
|
||||||
background: #097fca94;
|
|
||||||
.svg-icon {
|
|
||||||
fill: #75fbfd;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.sp-text {
|
|
||||||
color: #75fbfd;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.icon {
|
|
||||||
width: 30px;
|
|
||||||
height: 30px;
|
|
||||||
background: #c0c4cca1;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
border-radius: 15px;
|
|
||||||
.svg-icon {
|
|
||||||
width: 20px;
|
|
||||||
height: 20px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.sp-text {
|
|
||||||
margin-top: 4px;
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
|
@ -354,8 +354,8 @@ export default {
|
||||||
comId: this.selProject.comId,
|
comId: this.selProject.comId,
|
||||||
}
|
}
|
||||||
let ajaxs = [
|
let ajaxs = [
|
||||||
this.$api.safety.groupByProblemType(postData),
|
this.$api.safety.groupByProblemType({...postData,infoType: 0}),
|
||||||
this.$api.safety.groupByDangerType(postData),
|
this.$api.safety.groupByDangerType({...postData,infoType: 0}),
|
||||||
this.$api.safety.listCountForBG({ ...postData, problemType: 1, infoType: 0 }),
|
this.$api.safety.listCountForBG({ ...postData, problemType: 1, infoType: 0 }),
|
||||||
this.$api.safety.listForBG({ ...postData, problemType: 1, infoType: 0, pageNum: 1, pageSize: 5 }),
|
this.$api.safety.listForBG({ ...postData, problemType: 1, infoType: 0, pageNum: 1, pageSize: 5 }),
|
||||||
this.$api.safety.listCountForBG({ ...postData, problemType: 2, infoType: 0 }),
|
this.$api.safety.listCountForBG({ ...postData, problemType: 2, infoType: 0 }),
|
||||||
|
|
|
@ -252,11 +252,21 @@
|
||||||
resolved "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz"
|
resolved "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz"
|
||||||
integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==
|
integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==
|
||||||
|
|
||||||
|
"@babel/helper-string-parser@^7.27.1":
|
||||||
|
version "7.27.1"
|
||||||
|
resolved "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687"
|
||||||
|
integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==
|
||||||
|
|
||||||
"@babel/helper-validator-identifier@^7.22.5":
|
"@babel/helper-validator-identifier@^7.22.5":
|
||||||
version "7.22.5"
|
version "7.22.5"
|
||||||
resolved "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz"
|
resolved "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz"
|
||||||
integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==
|
integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==
|
||||||
|
|
||||||
|
"@babel/helper-validator-identifier@^7.27.1":
|
||||||
|
version "7.27.1"
|
||||||
|
resolved "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8"
|
||||||
|
integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==
|
||||||
|
|
||||||
"@babel/helper-validator-option@^7.22.5":
|
"@babel/helper-validator-option@^7.22.5":
|
||||||
version "7.22.5"
|
version "7.22.5"
|
||||||
resolved "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz"
|
resolved "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz"
|
||||||
|
@ -295,6 +305,13 @@
|
||||||
resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.22.5.tgz"
|
resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.22.5.tgz"
|
||||||
integrity sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==
|
integrity sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==
|
||||||
|
|
||||||
|
"@babel/parser@^7.23.5":
|
||||||
|
version "7.27.5"
|
||||||
|
resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.27.5.tgz#ed22f871f110aa285a6fd934a0efed621d118826"
|
||||||
|
integrity sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==
|
||||||
|
dependencies:
|
||||||
|
"@babel/types" "^7.27.3"
|
||||||
|
|
||||||
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.5":
|
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.5":
|
||||||
version "7.22.5"
|
version "7.22.5"
|
||||||
resolved "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz"
|
resolved "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz"
|
||||||
|
@ -1027,6 +1044,14 @@
|
||||||
"@babel/helper-validator-identifier" "^7.22.5"
|
"@babel/helper-validator-identifier" "^7.22.5"
|
||||||
to-fast-properties "^2.0.0"
|
to-fast-properties "^2.0.0"
|
||||||
|
|
||||||
|
"@babel/types@^7.27.3":
|
||||||
|
version "7.27.6"
|
||||||
|
resolved "https://registry.npmmirror.com/@babel/types/-/types-7.27.6.tgz#a434ca7add514d4e646c80f7375c0aa2befc5535"
|
||||||
|
integrity sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==
|
||||||
|
dependencies:
|
||||||
|
"@babel/helper-string-parser" "^7.27.1"
|
||||||
|
"@babel/helper-validator-identifier" "^7.27.1"
|
||||||
|
|
||||||
"@discoveryjs/json-ext@0.5.7":
|
"@discoveryjs/json-ext@0.5.7":
|
||||||
version "0.5.7"
|
version "0.5.7"
|
||||||
resolved "https://registry.npmmirror.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz"
|
resolved "https://registry.npmmirror.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz"
|
||||||
|
@ -1650,6 +1675,17 @@
|
||||||
postcss "^8.4.14"
|
postcss "^8.4.14"
|
||||||
source-map "^0.6.1"
|
source-map "^0.6.1"
|
||||||
|
|
||||||
|
"@vue/compiler-sfc@2.7.16":
|
||||||
|
version "2.7.16"
|
||||||
|
resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz#ff81711a0fac9c68683d8bb00b63f857de77dc83"
|
||||||
|
integrity sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==
|
||||||
|
dependencies:
|
||||||
|
"@babel/parser" "^7.23.5"
|
||||||
|
postcss "^8.4.14"
|
||||||
|
source-map "^0.6.1"
|
||||||
|
optionalDependencies:
|
||||||
|
prettier "^1.18.2 || ^2.0.0"
|
||||||
|
|
||||||
"@vue/component-compiler-utils@^3.1.0", "@vue/component-compiler-utils@^3.3.0":
|
"@vue/component-compiler-utils@^3.1.0", "@vue/component-compiler-utils@^3.3.0":
|
||||||
version "3.3.0"
|
version "3.3.0"
|
||||||
resolved "https://registry.npmmirror.com/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz"
|
resolved "https://registry.npmmirror.com/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz"
|
||||||
|
@ -2739,6 +2775,11 @@ core-js@^2.4.0:
|
||||||
resolved "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz"
|
resolved "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz"
|
||||||
integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
|
integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
|
||||||
|
|
||||||
|
core-js@^3.6.5:
|
||||||
|
version "3.43.0"
|
||||||
|
resolved "https://registry.npmmirror.com/core-js/-/core-js-3.43.0.tgz#f7258b156523208167df35dea0cfd6b6ecd4ee88"
|
||||||
|
integrity sha512-N6wEbTTZSYOY2rYAn85CuvWWkCK6QweMn7/4Nr3w+gDBeBhk/x4EJeY6FPo4QzDoJZxVTv8U7CMvgWk6pOHHqA==
|
||||||
|
|
||||||
core-js@^3.8.3:
|
core-js@^3.8.3:
|
||||||
version "3.31.0"
|
version "3.31.0"
|
||||||
resolved "https://registry.npmmirror.com/core-js/-/core-js-3.31.0.tgz"
|
resolved "https://registry.npmmirror.com/core-js/-/core-js-3.31.0.tgz"
|
||||||
|
@ -2947,6 +2988,11 @@ dayjs@^1.11.9:
|
||||||
resolved "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.9.tgz"
|
resolved "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.9.tgz"
|
||||||
integrity sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==
|
integrity sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==
|
||||||
|
|
||||||
|
dayjs@^1.8.16:
|
||||||
|
version "1.11.13"
|
||||||
|
resolved "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c"
|
||||||
|
integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==
|
||||||
|
|
||||||
de-indent@^1.0.2:
|
de-indent@^1.0.2:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz"
|
resolved "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz"
|
||||||
|
@ -3951,6 +3997,24 @@ functions-have-names@^1.2.3:
|
||||||
resolved "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
|
resolved "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
|
||||||
integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
|
integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
|
||||||
|
|
||||||
|
gantt-elastic-header@^0.1.11:
|
||||||
|
version "0.1.11"
|
||||||
|
resolved "https://registry.npmmirror.com/gantt-elastic-header/-/gantt-elastic-header-0.1.11.tgz#8b9fec8e51709b82ff59a0386f066850ae69c6d1"
|
||||||
|
integrity sha512-mDzraF/ZxrY9Pmp2Kjb1Hm8pFSeH2Ze5S0Lw/qiW63qyYxj0uLMp8w6xJq4rt2aB0lcHhonf0YMOjCjAk1WZfQ==
|
||||||
|
dependencies:
|
||||||
|
vue "^2.6.10"
|
||||||
|
vue-slider-component "^3.0.31"
|
||||||
|
vue-switches "^2.0.1"
|
||||||
|
|
||||||
|
gantt-elastic@^1.0.12:
|
||||||
|
version "1.0.12"
|
||||||
|
resolved "https://registry.npmmirror.com/gantt-elastic/-/gantt-elastic-1.0.12.tgz#d95cd3a750712fa56f4a12dca807a1c9bf10fe8a"
|
||||||
|
integrity sha512-PZHbADMGlVcTHKVqtvLNg8bvUGqeeSmDMVCQscyVBxNKd4Wwmvht4eNiTlasLW2ceufLN7BKziGZ9AJP28nJiw==
|
||||||
|
dependencies:
|
||||||
|
dayjs "^1.8.16"
|
||||||
|
resize-observer-polyfill "^1.5.1"
|
||||||
|
vue "^2.6.10"
|
||||||
|
|
||||||
gensync@^1.0.0-beta.2:
|
gensync@^1.0.0-beta.2:
|
||||||
version "1.0.0-beta.2"
|
version "1.0.0-beta.2"
|
||||||
resolved "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz"
|
resolved "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz"
|
||||||
|
@ -6547,7 +6611,7 @@ requires-port@^1.0.0:
|
||||||
resolved "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz"
|
resolved "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz"
|
||||||
integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==
|
integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==
|
||||||
|
|
||||||
resize-observer-polyfill@^1.5.0:
|
resize-observer-polyfill@^1.5.0, resize-observer-polyfill@^1.5.1:
|
||||||
version "1.5.1"
|
version "1.5.1"
|
||||||
resolved "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz"
|
resolved "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz"
|
||||||
integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==
|
integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==
|
||||||
|
@ -7680,7 +7744,7 @@ uuid@^8.3.2:
|
||||||
lodash.throttle "^4.1.1"
|
lodash.throttle "^4.1.1"
|
||||||
logt "^1.4.1"
|
logt "^1.4.1"
|
||||||
nprogress "0.2.0"
|
nprogress "0.2.0"
|
||||||
v3 "file:../../../../../nodejs/ychache/v6/npm-v3-0.1.0-79a5b82f-3c66-4b7d-9d42-75e31e17f6e9-1732983849891/node_modules/v3"
|
v3 "file:../../../mac/Library/Caches/Yarn/v6/npm-v3-0.1.0-e11d73e8-2cd1-4553-bbaf-faabaffe5d9b-1750672432590/node_modules/v3"
|
||||||
vue "^2.6.14"
|
vue "^2.6.14"
|
||||||
vue-router "^3.1.3"
|
vue-router "^3.1.3"
|
||||||
vuex "3.6.0"
|
vuex "3.6.0"
|
||||||
|
@ -7708,6 +7772,11 @@ vary@~1.1.2:
|
||||||
resolved "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz"
|
resolved "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz"
|
||||||
integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==
|
integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==
|
||||||
|
|
||||||
|
vue-class-component@^7.1.0:
|
||||||
|
version "7.2.6"
|
||||||
|
resolved "https://registry.npmmirror.com/vue-class-component/-/vue-class-component-7.2.6.tgz#8471e037b8e4762f5a464686e19e5afc708502e4"
|
||||||
|
integrity sha512-+eaQXVrAm/LldalI272PpDe3+i4mPis0ORiMYxF6Ae4hyuCh15W8Idet7wPUEs4N4YptgFHGys4UrgNQOMyO6w==
|
||||||
|
|
||||||
vue-eslint-parser@^8.0.1:
|
vue-eslint-parser@^8.0.1:
|
||||||
version "8.3.0"
|
version "8.3.0"
|
||||||
resolved "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz"
|
resolved "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz"
|
||||||
|
@ -7735,11 +7804,26 @@ vue-loader@^17.0.0:
|
||||||
hash-sum "^2.0.0"
|
hash-sum "^2.0.0"
|
||||||
watchpack "^2.4.0"
|
watchpack "^2.4.0"
|
||||||
|
|
||||||
|
vue-property-decorator@^8.0.0:
|
||||||
|
version "8.5.1"
|
||||||
|
resolved "https://registry.npmmirror.com/vue-property-decorator/-/vue-property-decorator-8.5.1.tgz#571a91cf8d2b507f537d79bf8275af3184572fff"
|
||||||
|
integrity sha512-O6OUN2OMsYTGPvgFtXeBU3jPnX5ffQ9V4I1WfxFQ6dqz6cOUbR3Usou7kgFpfiXDvV7dJQSFcJ5yUPgOtPPm1Q==
|
||||||
|
dependencies:
|
||||||
|
vue-class-component "^7.1.0"
|
||||||
|
|
||||||
vue-router@^3.1.3:
|
vue-router@^3.1.3:
|
||||||
version "3.6.5"
|
version "3.6.5"
|
||||||
resolved "https://registry.npmmirror.com/vue-router/-/vue-router-3.6.5.tgz"
|
resolved "https://registry.npmmirror.com/vue-router/-/vue-router-3.6.5.tgz"
|
||||||
integrity sha512-VYXZQLtjuvKxxcshuRAwjHnciqZVoXAjTjcqBTz4rKc8qih9g9pI3hbDjmqXaHdgL3v8pV6P8Z335XvHzESxLQ==
|
integrity sha512-VYXZQLtjuvKxxcshuRAwjHnciqZVoXAjTjcqBTz4rKc8qih9g9pI3hbDjmqXaHdgL3v8pV6P8Z335XvHzESxLQ==
|
||||||
|
|
||||||
|
vue-slider-component@^3.0.31:
|
||||||
|
version "3.2.24"
|
||||||
|
resolved "https://registry.npmmirror.com/vue-slider-component/-/vue-slider-component-3.2.24.tgz#9c931da3d10d0efde361138626a76d21c4359fd5"
|
||||||
|
integrity sha512-28hfotAL/CPXPwqHgVFyUwUEV0zweoc2wW0bgraGkoIcRZGlFjk8caYJLE8+Luug5t3b9tJm/NyDXpyIdmcYZg==
|
||||||
|
dependencies:
|
||||||
|
core-js "^3.6.5"
|
||||||
|
vue-property-decorator "^8.0.0"
|
||||||
|
|
||||||
vue-style-loader@^4.1.0, vue-style-loader@^4.1.3:
|
vue-style-loader@^4.1.0, vue-style-loader@^4.1.3:
|
||||||
version "4.1.3"
|
version "4.1.3"
|
||||||
resolved "https://registry.npmmirror.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz"
|
resolved "https://registry.npmmirror.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz"
|
||||||
|
@ -7748,6 +7832,13 @@ vue-style-loader@^4.1.0, vue-style-loader@^4.1.3:
|
||||||
hash-sum "^1.0.2"
|
hash-sum "^1.0.2"
|
||||||
loader-utils "^1.0.2"
|
loader-utils "^1.0.2"
|
||||||
|
|
||||||
|
vue-switches@^2.0.1:
|
||||||
|
version "2.0.1"
|
||||||
|
resolved "https://registry.npmmirror.com/vue-switches/-/vue-switches-2.0.1.tgz#f23436259c7fe4ffca9c4a6df49ac78941e20a20"
|
||||||
|
integrity sha512-rDqBtK3TKy1pEvyZeWmnSHVeXqAcn+ozch7LiNThBzr1QMjg5rhvqBY7uWeli/baDDslf6CXmBJbHPwASJLqoA==
|
||||||
|
dependencies:
|
||||||
|
vue "^2.2.6"
|
||||||
|
|
||||||
vue-template-compiler@^2.6.14:
|
vue-template-compiler@^2.6.14:
|
||||||
version "2.7.14"
|
version "2.7.14"
|
||||||
resolved "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz"
|
resolved "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz"
|
||||||
|
@ -7761,6 +7852,14 @@ vue-template-es2015-compiler@^1.9.0:
|
||||||
resolved "https://registry.npmmirror.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz"
|
resolved "https://registry.npmmirror.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz"
|
||||||
integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==
|
integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==
|
||||||
|
|
||||||
|
vue@^2.2.6, vue@^2.6.10:
|
||||||
|
version "2.7.16"
|
||||||
|
resolved "https://registry.npmmirror.com/vue/-/vue-2.7.16.tgz#98c60de9def99c0e3da8dae59b304ead43b967c9"
|
||||||
|
integrity sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==
|
||||||
|
dependencies:
|
||||||
|
"@vue/compiler-sfc" "2.7.16"
|
||||||
|
csstype "^3.1.0"
|
||||||
|
|
||||||
vue@^2.6.14:
|
vue@^2.6.14:
|
||||||
version "2.7.14"
|
version "2.7.14"
|
||||||
resolved "https://registry.npmmirror.com/vue/-/vue-2.7.14.tgz"
|
resolved "https://registry.npmmirror.com/vue/-/vue-2.7.14.tgz"
|
||||||
|
|
|
@ -63,7 +63,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<sql id="selectUserVo">
|
<sql id="selectUserVo">
|
||||||
select u.user_id, u.com_id, com.dept_name as com_name, u.dept_id, u.user_name, u.nick_name, ex.user_type,ex.work_type, u.card_code, u.email
|
select u.user_id, d.com_id, com.dept_name as com_name, u.dept_id, u.user_name, u.nick_name, ex.user_type,ex.work_type, u.card_code, u.email
|
||||||
, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
|
, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
|
||||||
d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.dept_short_name, d.dept_code, d.dept_type, d.order_num, d.leader, d.status as dept_status,
|
d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.dept_short_name, d.dept_code, d.dept_type, d.order_num, d.leader, d.status as dept_status,
|
||||||
r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status,com.dept_name com_dept_name,u.user_infos
|
r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status,com.dept_name com_dept_name,u.user_infos
|
||||||
|
|
|
@ -1744,7 +1744,7 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Map<String,List<ProProjectInfoSubdeptsUsers>> subMap= list.stream().collect(Collectors.groupingBy(ProProjectInfoSubdeptsUsers::getComName));
|
Map<String,List<ProProjectInfoSubdeptsUsers>> subMap= list.stream().filter(d->StringUtils.isNotEmpty(d.getComName())).collect(Collectors.groupingBy(ProProjectInfoSubdeptsUsers::getComName));
|
||||||
JSONObject joOut=new JSONObject();
|
JSONObject joOut=new JSONObject();
|
||||||
JSONArray arrNav=new JSONArray();
|
JSONArray arrNav=new JSONArray();
|
||||||
subMap.forEach((k,v)->{
|
subMap.forEach((k,v)->{
|
||||||
|
@ -1754,7 +1754,7 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu
|
||||||
arrNav.add(jo);
|
arrNav.add(jo);
|
||||||
});
|
});
|
||||||
joOut.put("native",arrNav);
|
joOut.put("native",arrNav);
|
||||||
Map<Long,List<ProProjectInfoSubdeptsUsers>> subMap2= list.stream().collect(Collectors.groupingBy(ProProjectInfoSubdeptsUsers::getId));
|
Map<Long,List<ProProjectInfoSubdeptsUsers>> subMap2= list.stream().filter(d->d.getId()!=null).collect(Collectors.groupingBy(ProProjectInfoSubdeptsUsers::getId));
|
||||||
JSONArray arrAge=new JSONArray();
|
JSONArray arrAge=new JSONArray();
|
||||||
subMap2.forEach((k,v)->{
|
subMap2.forEach((k,v)->{
|
||||||
JSONObject jo=new JSONObject();
|
JSONObject jo=new JSONObject();
|
||||||
|
|
|
@ -337,7 +337,8 @@ public class SurProjectAttendanceUserServiceImpl implements ISurProjectAttendanc
|
||||||
}
|
}
|
||||||
d.setNativePlace(nav);
|
d.setNativePlace(nav);
|
||||||
});
|
});
|
||||||
Map<String,List<SurProjectAttendanceUser>> subMap= list.stream().collect(Collectors.groupingBy(SurProjectAttendanceUser::getNativePlace));
|
Map<String,List<SurProjectAttendanceUser>> subMap= list.stream().filter(d-> StringUtils.isNotEmpty( d.getNativePlace()))
|
||||||
|
.collect(Collectors.groupingBy(SurProjectAttendanceUser::getNativePlace));
|
||||||
JSONObject joOut=new JSONObject();
|
JSONObject joOut=new JSONObject();
|
||||||
JSONArray arrNav=new JSONArray();
|
JSONArray arrNav=new JSONArray();
|
||||||
subMap.forEach((k,v)->{
|
subMap.forEach((k,v)->{
|
||||||
|
@ -347,7 +348,7 @@ public class SurProjectAttendanceUserServiceImpl implements ISurProjectAttendanc
|
||||||
arrNav.add(jo);
|
arrNav.add(jo);
|
||||||
});
|
});
|
||||||
joOut.put("native",arrNav);
|
joOut.put("native",arrNav);
|
||||||
Map<Long,List<SurProjectAttendanceUser>> subMap2= list.stream().collect(Collectors.groupingBy(SurProjectAttendanceUser::getId));
|
Map<Long,List<SurProjectAttendanceUser>> subMap2= list.stream().filter(d->d.getId()!=null).collect(Collectors.groupingBy(SurProjectAttendanceUser::getId));
|
||||||
JSONArray arrAge=new JSONArray();
|
JSONArray arrAge=new JSONArray();
|
||||||
subMap2.forEach((k,v)->{
|
subMap2.forEach((k,v)->{
|
||||||
JSONObject jo=new JSONObject();
|
JSONObject jo=new JSONObject();
|
||||||
|
|
|
@ -30,7 +30,7 @@ const userStore = useUserStore();
|
||||||
const sidebarRouters = computed(() => {
|
const sidebarRouters = computed(() => {
|
||||||
let tmps = permissionStore.sidebarRouters;
|
let tmps = permissionStore.sidebarRouters;
|
||||||
tmps.forEach((item) => {
|
tmps.forEach((item) => {
|
||||||
if (item.meta && item.meta.title == "项目大屏") {
|
if (item.meta && item.meta.title == "项目大屏" && item.path.indexOf("prjId=") == -1) {
|
||||||
item.name += "?prjId=" + userStore.currentPrjId;
|
item.name += "?prjId=" + userStore.currentPrjId;
|
||||||
item.path = location.origin + item.path + "?prjId=" + userStore.currentPrjId;
|
item.path = location.origin + item.path + "?prjId=" + userStore.currentPrjId;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue