Merge branch 'test' of https://git.code.tencent.com/lian-cbtc/jl-client into test
This commit is contained in:
commit
56eae6302a
File diff suppressed because one or more lines are too long
@ -1,5 +1,7 @@
|
||||
import Group from 'zrender/src/container/Group';
|
||||
import Line from 'zrender/src/graphic/shape/Line';
|
||||
import Polygon from 'zrender/src/graphic/shape/Polygon';
|
||||
import JTriangle from '../utils/JTriangle';
|
||||
|
||||
export default class line extends Group {
|
||||
constructor(device) {
|
||||
@ -36,6 +38,60 @@ export default class line extends Group {
|
||||
if (model.classify == 'dashed') {
|
||||
this.iscsLine.setStyle('lineDash', [8, 6]);
|
||||
}
|
||||
|
||||
if (model.arrowShow == 'star') {
|
||||
const traingle = new JTriangle(this.model.point1, this.model.point2);
|
||||
let rotation = Math.PI * 2 - Math.atan2(traingle.absy, traingle.absx) * traingle.drictx * traingle.dricty;
|
||||
if (this.model.point1.x >= this.model.point2.x) {
|
||||
rotation += Math.PI;
|
||||
}
|
||||
this.arrows = new Polygon({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
origin: [0, 0],
|
||||
rotation: rotation,
|
||||
shape: {
|
||||
points: [
|
||||
[0, 0],
|
||||
[model.arrowSize * 2.8, -model.arrowSize],
|
||||
[model.arrowSize * 2.8, model.arrowSize]
|
||||
],
|
||||
smooth: 0
|
||||
},
|
||||
style: {
|
||||
lineWidth: 0,
|
||||
fill: model.fillColor
|
||||
}
|
||||
});
|
||||
this.grouper.add(this.arrows);
|
||||
} else if (model.arrowShow == 'end') {
|
||||
const traingle = new JTriangle(this.model.point2, this.model.point1);
|
||||
let rotation = Math.PI * 2 - Math.atan2(traingle.absy, traingle.absx) * traingle.drictx * traingle.dricty;
|
||||
if (this.model.point1.x <= this.model.point2.x) {
|
||||
rotation += Math.PI;
|
||||
}
|
||||
const x = model.point2.x - model.point1.x;
|
||||
const y = model.point2.y - model.point1.y;
|
||||
this.arrows = new Polygon({
|
||||
zlevel: model.zlevel,
|
||||
z: model.z,
|
||||
origin: [x, y],
|
||||
rotation: rotation,
|
||||
shape: {
|
||||
points: [
|
||||
[x, y],
|
||||
[x + model.arrowSize * 2.8, y - model.arrowSize],
|
||||
[x + model.arrowSize * 2.8, y + model.arrowSize]
|
||||
],
|
||||
smooth: 0
|
||||
},
|
||||
style: {
|
||||
lineWidth: 0,
|
||||
fill: model.fillColor
|
||||
}
|
||||
});
|
||||
this.grouper.add(this.arrows);
|
||||
}
|
||||
this.grouper.add(this.iscsLine);
|
||||
this.add(this.grouper);
|
||||
}
|
||||
|
73
src/iscs/utils/JTriangle.js
Normal file
73
src/iscs/utils/JTriangle.js
Normal file
@ -0,0 +1,73 @@
|
||||
/** 三角函数计算 */
|
||||
function JTriangle(beg, end) {
|
||||
this.init(beg, end);
|
||||
}
|
||||
JTriangle.prototype = {
|
||||
constructor: JTriangle,
|
||||
beg: null,
|
||||
end: null,
|
||||
abspowx: 0,
|
||||
abspowy: 0,
|
||||
abspowz: 0,
|
||||
drictx: 0,
|
||||
dricty: 0,
|
||||
drict: 0,
|
||||
|
||||
init (beg, end) {
|
||||
this.beg = beg;
|
||||
this.end = end;
|
||||
this.abspowx = Math.pow(this.end.x - this.beg.x, 2);
|
||||
this.abspowy = Math.pow(this.end.y - this.beg.y, 2);
|
||||
this.abspowz = this.abspowx + this.abspowy;
|
||||
this.absx = Math.abs(this.end.x - this.beg.x);
|
||||
this.absy = Math.abs(this.end.y - this.beg.y);
|
||||
this.absz = Math.sqrt(Math.pow(this.end.x - this.beg.x, 2), Math.pow(this.end.y - this.beg.y, 2));
|
||||
this.drictx = this.end.x > this.beg.x ? 1 : -1;
|
||||
this.dricty = this.end.y > this.beg.y ? 1 : -1;
|
||||
this.drict = this.drictx * this.dricty;
|
||||
this.diff_x = end.x - beg.x;
|
||||
this.diff_y = end.y - beg.y;
|
||||
},
|
||||
getRotation () {
|
||||
return Math.atan(this.diff_y / this.diff_x);
|
||||
},
|
||||
getAngle () {
|
||||
return 360 * Math.atan(this.diff_y / this.diff_x) / (2 * Math.PI);
|
||||
},
|
||||
getCos (n) {
|
||||
return this.drictx * Math.sqrt(Math.pow(n, 2) * this.abspowx / this.abspowz);
|
||||
},
|
||||
getSin (n) {
|
||||
return this.dricty * Math.sqrt(Math.pow(n, 2) * this.abspowy / this.abspowz);
|
||||
},
|
||||
getAbsCos(n) {
|
||||
return Math.sqrt(Math.pow(n, 2) * this.abspowx / this.abspowz);
|
||||
},
|
||||
getAbsSin(n) {
|
||||
return Math.sqrt(Math.pow(n, 2) * this.abspowy / this.abspowz);
|
||||
},
|
||||
getCosRate () {
|
||||
return Math.sqrt(this.abspowx / this.abspowz);
|
||||
},
|
||||
getSinRate () {
|
||||
return Math.sqrt(this.abspowy / this.abspowz);
|
||||
},
|
||||
getTanRate () {
|
||||
var diff_x = this.end.x - this.beg.x;
|
||||
var diff_y = this.end.y - this.beg.y;
|
||||
return Math.abs(diff_y / diff_x);
|
||||
},
|
||||
getCotRate () {
|
||||
var diff_x = this.end.x - this.beg.x;
|
||||
var diff_y = this.end.y - this.beg.y;
|
||||
return Math.abs(diff_x / diff_y);
|
||||
},
|
||||
middlePoint () {
|
||||
return {
|
||||
x: Math.min(this.end.x, this.beg.x) + Math.abs(this.end.x - this.beg.x) / 2,
|
||||
y: Math.min(this.end.y, this.beg.y) + Math.abs(this.end.y - this.beg.y) / 2
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
export default JTriangle;
|
@ -7,8 +7,6 @@ export function PassflowConnect(jl3dpass,deviceaction,toptrain,downtrain,routegr
|
||||
const scope = this;
|
||||
this.teststomp = new StompClient();
|
||||
|
||||
let traintopnow = null;
|
||||
let traindownnow = null;
|
||||
let topic = '/user/queue/simulation/jl3d/'+routegroup;
|
||||
let header = {'X-Token': getToken() };
|
||||
|
||||
@ -40,6 +38,7 @@ export function PassflowConnect(jl3dpass,deviceaction,toptrain,downtrain,routegr
|
||||
deviceaction.top.action.timeScale = -1;
|
||||
deviceaction.top.action.play();
|
||||
}else{
|
||||
jl3dpass.passerout("top")
|
||||
deviceaction.top.action.reset();
|
||||
deviceaction.top.action.time = 0;
|
||||
deviceaction.top.action.timeScale = 1;
|
||||
@ -53,6 +52,7 @@ export function PassflowConnect(jl3dpass,deviceaction,toptrain,downtrain,routegr
|
||||
deviceaction.down.action.timeScale = -1;
|
||||
deviceaction.down.action.play();
|
||||
}else{
|
||||
jl3dpass.passerout("down");
|
||||
deviceaction.down.action.reset();
|
||||
deviceaction.down.action.time = 0;
|
||||
deviceaction.down.action.timeScale = 1;
|
||||
@ -62,25 +62,25 @@ export function PassflowConnect(jl3dpass,deviceaction,toptrain,downtrain,routegr
|
||||
}
|
||||
}
|
||||
if(data.body.type == "TRAIN_DOOR"){
|
||||
if(traintopnow == data.body.code){
|
||||
if(toptrain.nowcode == data.body.code){
|
||||
|
||||
if(data.body.open == "0"){
|
||||
closetraindoor(toptrain,data.body.doorCode,"top");
|
||||
|
||||
}else{
|
||||
opentraindoor(toptrain,data.body.doorCode,"top");
|
||||
jl3dpass.passerout("top");
|
||||
;
|
||||
}
|
||||
|
||||
}
|
||||
if(traindownnow == data.body.code){
|
||||
if(downtrain.nowcode == data.body.code){
|
||||
// console.log(data.body);
|
||||
if(data.body.open == "0"){
|
||||
closetraindoor(downtrain,data.body.doorCode,"down");
|
||||
|
||||
}else{
|
||||
opentraindoor(downtrain,data.body.doorCode,"down");
|
||||
jl3dpass.passerout("down");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -91,8 +91,8 @@ export function PassflowConnect(jl3dpass,deviceaction,toptrain,downtrain,routegr
|
||||
|
||||
for(let i=0,leni = data.body.length;i<leni;i++){
|
||||
if(data.body[i].section == jl3dpass.nowstation.topsection){
|
||||
if(traintopnow != data.body[i].code){
|
||||
traintopnow = data.body[i].code;
|
||||
if(toptrain.nowcode != data.body[i].code){
|
||||
toptrain.nowcode = data.body[i].code;
|
||||
}
|
||||
toptrain.position.copy(toptrain.curve.getPointAt(data.body[i].offset));
|
||||
|
||||
@ -101,20 +101,20 @@ export function PassflowConnect(jl3dpass,deviceaction,toptrain,downtrain,routegr
|
||||
//
|
||||
// }
|
||||
}else{
|
||||
if(traindownnow == data.body[i].code){
|
||||
if(downtrain.nowcode == data.body[i].code){
|
||||
toptrain.position.x -= 1;
|
||||
}
|
||||
}
|
||||
|
||||
if(data.body[i].section == jl3dpass.nowstation.downsection){
|
||||
if(traindownnow != data.body[i].code){
|
||||
traindownnow = data.body[i].code;
|
||||
if(downtrain.nowcode != data.body[i].code){
|
||||
downtrain.nowcode = data.body[i].code;
|
||||
}
|
||||
|
||||
downtrain.position.copy(downtrain.curve.getPointAt(data.body[i].offset));
|
||||
|
||||
}else{
|
||||
if(traindownnow == data.body[i].code){
|
||||
if(downtrain.nowcode == data.body[i].code){
|
||||
downtrain.position.x += 1;
|
||||
}
|
||||
}
|
||||
@ -151,26 +151,23 @@ export function PassflowConnect(jl3dpass,deviceaction,toptrain,downtrain,routegr
|
||||
}
|
||||
}
|
||||
function closetraindoor(train,doorcode,direct){
|
||||
|
||||
if(direct == "top"){
|
||||
if(doorcode == "1"){
|
||||
actions = train.action.down;
|
||||
}
|
||||
|
||||
if(doorcode == "2"){
|
||||
actions = train.action.top;
|
||||
}
|
||||
|
||||
|
||||
toptrain.nowcode = null;
|
||||
}else{
|
||||
if(doorcode == "1"){
|
||||
actions = train.action.top;
|
||||
}
|
||||
|
||||
if(doorcode == "2"){
|
||||
actions = train.action.down;
|
||||
}
|
||||
|
||||
|
||||
downtrain.nowcode = null;
|
||||
}
|
||||
|
||||
for(let an=actions.length-1;an>=0;an--){
|
||||
|
@ -482,6 +482,9 @@ export function Jl3dpassflow(dom,skinCode,routegroup) {
|
||||
//下车控制开关
|
||||
toppasseron = false;
|
||||
downpasseron = false;
|
||||
|
||||
toptrain.nowcode = null;
|
||||
downtrain.nowcode = null;
|
||||
// humanlist = new THREE.Group();
|
||||
for(let j=0; j<humanlist.children.length;j++){
|
||||
// scope.uncache(humanlist.children[j]);
|
||||
@ -520,7 +523,6 @@ export function Jl3dpassflow(dom,skinCode,routegroup) {
|
||||
// actions[an].timeScale = -1;
|
||||
// actions[an].play();
|
||||
// }
|
||||
setTimeout
|
||||
setTimeout(function(){
|
||||
initpasser();
|
||||
aiswitch = 0;
|
||||
@ -995,6 +997,9 @@ export function Jl3dpassflow(dom,skinCode,routegroup) {
|
||||
|
||||
newhuman.stage = stage;
|
||||
if(direct){
|
||||
if(direct == "top"){
|
||||
newhuman.rotation.y = Math.PI;
|
||||
}
|
||||
newhuman.direct = direct;
|
||||
}else{
|
||||
newhuman.direct = null;
|
||||
@ -1081,6 +1086,7 @@ export function Jl3dpassflow(dom,skinCode,routegroup) {
|
||||
|
||||
|
||||
toptrain = object.clone(true);
|
||||
toptrain.nowcode = null;
|
||||
toptrain.action = {
|
||||
top:[],
|
||||
down:[]
|
||||
@ -1093,6 +1099,7 @@ export function Jl3dpassflow(dom,skinCode,routegroup) {
|
||||
toptrain.curve = new THREE.CatmullRomCurve3(points1);
|
||||
|
||||
downtrain = object.clone(true);
|
||||
downtrain.nowcode = null;
|
||||
downtrain.action = {
|
||||
top:[],
|
||||
down:[]
|
||||
|
@ -5,7 +5,7 @@
|
||||
<el-input v-model="form.code" :disabled="true" />
|
||||
</el-form-item>
|
||||
<el-form-item label="图形宽度" prop="width">
|
||||
<el-input-number v-model="form.width" :min="40" />
|
||||
<el-input-number v-model="form.width" :min="20" />
|
||||
</el-form-item>
|
||||
<el-form-item label="X轴坐标" prop="x">
|
||||
<el-input-number v-model="form.x" controls-position="right" :min="1" />
|
||||
|
@ -5,7 +5,7 @@
|
||||
<el-input v-model="form.code" :disabled="true" />
|
||||
</el-form-item>
|
||||
<el-form-item label="图形宽度" prop="width">
|
||||
<el-input-number v-model="form.width" :min="15" />
|
||||
<el-input-number v-model="form.width" :min="10" />
|
||||
</el-form-item>
|
||||
<el-form-item label="方向" prop="direction">
|
||||
<el-select v-model="form.direction" placeholder="请选择类型">
|
||||
|
@ -8,10 +8,7 @@
|
||||
<el-input-number v-model="form.width" :min="15" />
|
||||
</el-form-item>
|
||||
<el-form-item label="旋转角度" prop="rotateAngle">
|
||||
<el-select v-model="form.rotateAngle" placeholder="请选择类型">
|
||||
<el-option label="0度" value="0" />
|
||||
<el-option label="90度" value="90" />
|
||||
</el-select>
|
||||
<el-input-number v-model="form.rotateAngle" />
|
||||
</el-form-item>
|
||||
<el-form-item label="X轴坐标" prop="x">
|
||||
<el-input-number v-model="form.x" controls-position="right" :min="1" />
|
||||
@ -39,7 +36,7 @@ export default {
|
||||
buttonText: '立即创建',
|
||||
form:{
|
||||
code:'',
|
||||
rotateAngle:'0',
|
||||
rotateAngle: 0,
|
||||
width: 20,
|
||||
x: 10,
|
||||
y: 10
|
||||
@ -76,7 +73,7 @@ export default {
|
||||
this.form.width = model.width;
|
||||
this.form.x = model.point.x;
|
||||
this.form.y = model.point.y;
|
||||
this.form.rotateAngle = model.rotateAngle;
|
||||
this.form.rotateAngle = model.rotateAngle || 0;
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -112,7 +109,7 @@ export default {
|
||||
this.showDeleteButton = false;
|
||||
this.form = {
|
||||
code:'',
|
||||
rotateAngle:'0',
|
||||
rotateAngle: 0,
|
||||
width: 20,
|
||||
x: 10,
|
||||
y: 10
|
||||
@ -128,7 +125,7 @@ export default {
|
||||
_type: 'VolumeControlDamper',
|
||||
code: this.form.code,
|
||||
width: this.form.width,
|
||||
rotateAngle:this.form.rotateAngle,
|
||||
rotateAngle: this.form.rotateAngle,
|
||||
color:'#00ff00'
|
||||
};
|
||||
this.$emit('deleteDataModel', newModel );
|
||||
|
@ -13,6 +13,16 @@
|
||||
<el-form-item label="线段颜色" prop="fillColor">
|
||||
<el-color-picker v-model="form.fillColor" />
|
||||
</el-form-item>
|
||||
<el-form-item label="箭头显示" prop="arrowShow">
|
||||
<el-select v-model="form.arrowShow" placeholder="请选择">
|
||||
<el-option label="无" value="none" />
|
||||
<el-option label="始端" value="star" />
|
||||
<el-option label="终端" value="end" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="form.arrowShow != 'none'" label="箭头大小" prop="arrowSize">
|
||||
<el-input-number v-model="form.arrowSize" controls-position="right" :min="1" />
|
||||
</el-form-item>
|
||||
<el-form-item label="起始X轴坐标">
|
||||
<el-input-number v-model="form.x1" controls-position="right" :min="0" />
|
||||
</el-form-item>
|
||||
@ -49,6 +59,8 @@ export default {
|
||||
code: '',
|
||||
lineWidth: '',
|
||||
fillColor: '#fff',
|
||||
arrowShow: 'none',
|
||||
arrowSize: 5,
|
||||
x1: 10,
|
||||
y1: 10,
|
||||
x2: 20,
|
||||
@ -84,6 +96,8 @@ export default {
|
||||
this.form.x2 = model.point2.x;
|
||||
this.form.y2 = model.point2.y;
|
||||
this.form.classify = model.classify;
|
||||
this.form.arrowShow = model.arrowShow || 'none';
|
||||
this.form.arrowSize = model.arrowSize || 5;
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -105,7 +119,9 @@ export default {
|
||||
_type: 'IscsLine',
|
||||
lineWidth: this.form.lineWidth,
|
||||
fillColor: this.form.fillColor,
|
||||
classify:this.form.classify
|
||||
classify: this.form.classify,
|
||||
arrowShow: this.form.arrowShow,
|
||||
arrowSize: this.form.arrowSize
|
||||
};
|
||||
this.$emit('createDataModel', lineModel);
|
||||
this.initPage();
|
||||
@ -128,7 +144,9 @@ export default {
|
||||
_type: 'IscsLine',
|
||||
lineWidth: this.form.lineWidth,
|
||||
fillColor: this.form.fillColor,
|
||||
classify:this.form.classify
|
||||
classify: this.form.classify,
|
||||
arrowShow: this.form.arrowShow,
|
||||
arrowSize: this.form.arrowSize
|
||||
};
|
||||
this.$emit('deleteDataModel', lineModel);
|
||||
},
|
||||
@ -140,6 +158,8 @@ export default {
|
||||
code: '',
|
||||
lineWidth: '',
|
||||
fillColor: '#fff',
|
||||
arrowShow: 'none',
|
||||
arrowSize: 5,
|
||||
x1: 10,
|
||||
y1: 10,
|
||||
x2: 20,
|
||||
|
35
src/views/iscs/iscsSystem/config/bas/tunnelVentilation.vue
Normal file
35
src/views/iscs/iscsSystem/config/bas/tunnelVentilation.vue
Normal file
@ -0,0 +1,35 @@
|
||||
<template>
|
||||
<div class="bigSystemBox">
|
||||
<div class="title-name">{{ $route.query.stationName }}机电隧道通风</div>
|
||||
<div class="">
|
||||
<iscsSystem ref="iscsPlate" :width-canvas="1300" :canvas-height="700" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import iscsSystem from '../canvas/iscsCanvas';
|
||||
export default {
|
||||
components: {
|
||||
iscsSystem
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.$refs.iscsPlate.show('28');
|
||||
},
|
||||
methods: {
|
||||
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.title-name{
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
font-size: 26px;
|
||||
margin-top: 30px;
|
||||
color: #56E5DE;
|
||||
}
|
||||
</style>
|
@ -109,7 +109,7 @@ export default {
|
||||
title: '',
|
||||
meaning: '',
|
||||
width: '480px',
|
||||
doubleRowList: ['bigSystem', 'waterSystem']
|
||||
doubleRowList: ['bigSystem', 'waterSystem', 'tunnelVentilation']
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -144,6 +144,7 @@ export default {
|
||||
break;
|
||||
case 'bigSystem':
|
||||
case 'waterSystem':
|
||||
case 'tunnelVentilation' :
|
||||
this.title = 'BAS通风空调图元详情';
|
||||
this.width = '600px';
|
||||
this.tableData = this.basData;
|
||||
|
@ -30,6 +30,8 @@
|
||||
<lighting-system v-else-if="mode === 'lighting'" />
|
||||
<electric-escalator v-else-if="mode === 'electricEscalator'" />
|
||||
<water-supply v-else-if="mode === 'waterSupply'" />
|
||||
<tunnel-ventilation v-else-if="mode === 'tunnelVentilation'" />
|
||||
|
||||
<graphic-ele ref="graphicEle" />
|
||||
<device-control ref="deviceControl" />
|
||||
</div>
|
||||
@ -68,6 +70,7 @@ import GraphicEle from './graphicEle';
|
||||
import DeviceControl from './deviceControl';
|
||||
import ElectricEscalator from './bas/electricEscalator';
|
||||
import WaterSupply from './bas/waterSupply';
|
||||
import TunnelVentilation from './bas/tunnelVentilation';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
@ -102,7 +105,8 @@ export default {
|
||||
waterSystem,
|
||||
LightingSystem,
|
||||
ElectricEscalator,
|
||||
WaterSupply
|
||||
WaterSupply,
|
||||
TunnelVentilation
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
Binary file not shown.
BIN
static/model/passflow/station1.FBX
Normal file
BIN
static/model/passflow/station1.FBX
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user