iscs 代码调整
This commit is contained in:
parent
d7ac074608
commit
62eb86e5ec
414
src/views/iscs_new/iscsDraw/iscsCanvas.vue
Normal file
414
src/views/iscs_new/iscsDraw/iscsCanvas.vue
Normal file
@ -0,0 +1,414 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<!-- <div>
|
||||||
|
<el-row>
|
||||||
|
<el-input v-model="json" type="textarea" :rows="4" />
|
||||||
|
<el-button @click="doRemove"> 删除 </el-button>
|
||||||
|
<el-button @click="doUnbinding">解绑</el-button>
|
||||||
|
<el-button @click="doSource"> 源数据 </el-button>
|
||||||
|
</el-row>
|
||||||
|
</div> -->
|
||||||
|
<div :id="iscsId" v-loading="loading" :style="{ width: width +'px', height: height +'px',background:'#425a74' }" class="iscs-canvas" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import Vue from 'vue';
|
||||||
|
import Iscs from '@/iscs_new/map';
|
||||||
|
// import orders from '@/iscs_new/utils/orders';
|
||||||
|
// import shapeType from '@/iscs_new/constant/shapeType';
|
||||||
|
import { mapGetters } from 'vuex';
|
||||||
|
// import { exitFullscreen } from '@/utils/screen';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
json: '{}',
|
||||||
|
dataZoom: {
|
||||||
|
offsetX: '0',
|
||||||
|
offsetY: '0',
|
||||||
|
scaleRate: '1'
|
||||||
|
},
|
||||||
|
config: {
|
||||||
|
scaleRate: '1',
|
||||||
|
origin: {
|
||||||
|
x: 0,
|
||||||
|
y: 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
selected: null, // 选择复制元素
|
||||||
|
loading: false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapGetters('iscs', [
|
||||||
|
'iscs'
|
||||||
|
]),
|
||||||
|
iscsId() {
|
||||||
|
return ['iscs', (Math.random().toFixed(5)) * 100000].join('_');
|
||||||
|
},
|
||||||
|
width() {
|
||||||
|
return document.documentElement.clientWidth;
|
||||||
|
},
|
||||||
|
height() {
|
||||||
|
return document.documentElement.clientHeight;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
'$store.state.config.canvasSizeCount': function (val) {
|
||||||
|
this.resize();
|
||||||
|
},
|
||||||
|
'$store.state.socket.equipmentStatus': function (val) {
|
||||||
|
if (val.length) {
|
||||||
|
this.stateMessage(val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.init();
|
||||||
|
this.$iscs.modelBuilder.addEventListener();
|
||||||
|
},
|
||||||
|
beforeDestroy() {
|
||||||
|
this.$iscs.modelBuilder.removeEventListener();
|
||||||
|
this.destroy();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
init() {
|
||||||
|
document.getElementById(this.iscsId).oncontextmenu = function (e) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
this.$iscs = new Iscs({
|
||||||
|
dom: document.getElementById(this.iscsId),
|
||||||
|
draw: true,
|
||||||
|
config: {
|
||||||
|
renderer: 'canvas',
|
||||||
|
width: this.width,
|
||||||
|
height: this.height
|
||||||
|
},
|
||||||
|
options: {
|
||||||
|
scaleRate: 1,
|
||||||
|
offsetX: 0,
|
||||||
|
offsetY: 0
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Vue.prototype.$iscs = this.$iscs;
|
||||||
|
this.$iscs.on('viewLoaded', this.onUpdate, this);
|
||||||
|
this.$iscs.on('contextmenu', this.onContextMenu, this);
|
||||||
|
this.$iscs.on('selected', this.onSelected, this);
|
||||||
|
this.$iscs.on('keyboard', this.onKeyboard, this);
|
||||||
|
|
||||||
|
// this.$iscs.setMap([
|
||||||
|
// {
|
||||||
|
// type: 'Device',
|
||||||
|
// name: 'test',
|
||||||
|
// isActive: false,
|
||||||
|
// isFocus: false,
|
||||||
|
// shapeList: [
|
||||||
|
// { name: 'a',
|
||||||
|
// type: 'Rect',
|
||||||
|
// shape: {},
|
||||||
|
// style: {
|
||||||
|
// fill: 'red',
|
||||||
|
// stroke: 'black'
|
||||||
|
// },
|
||||||
|
// stateList: [
|
||||||
|
// { status: 'st1', sightless: false, shape: {}, style:{ fill: 'yellow', stroke: 'black'} },
|
||||||
|
// { status: 'st2', sightless: false, shape: {}, style:{ fill: 'blue', stroke: 'black'} }
|
||||||
|
// ]
|
||||||
|
// },
|
||||||
|
// { name: 'b',
|
||||||
|
// type: 'Circle',
|
||||||
|
// shape: {},
|
||||||
|
// style: {
|
||||||
|
// fill: 'red',
|
||||||
|
// stroke: 'black'
|
||||||
|
// },
|
||||||
|
// stateList: [
|
||||||
|
// { status: 'st1', sightless: false, shape: {}, style:{ fill: 'yellow', stroke: 'black'} },
|
||||||
|
// { status: 'st2', sightless: false, shape: {}, style:{ fill: 'blue', stroke: 'black'} }
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
|
// ],
|
||||||
|
// stateList: [
|
||||||
|
// { status: 's1', frameList: [[{name: 'a', status: 'st1'}, {name: 'b', status: 'st1'}], [{name: 'a', status: 'st2'}]], weight: 2, loop: true, delay: 2000, time: 200, needDefault: true },
|
||||||
|
// { status: 's2', frameList: [[{name: 'a', status: 'st2'}, {name: 'b', status: 'st1'}], [{name: 'a', status: 'st1'}, {name: 'b', status: 'st2'}]], weight: 1, loop: true, delay: 5000, time: 500, needDefault: false }
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
|
// ], {
|
||||||
|
// elementList: [
|
||||||
|
// {
|
||||||
|
// code: '1',
|
||||||
|
// name: 'a',
|
||||||
|
// type: 'Rect',
|
||||||
|
// scale: [1, 1],
|
||||||
|
// position: [0, 0],
|
||||||
|
// rotation: 0,
|
||||||
|
// shape: {
|
||||||
|
// x: 100,
|
||||||
|
// y: 100,
|
||||||
|
// width: 30,
|
||||||
|
// height: 30
|
||||||
|
// },
|
||||||
|
// style: {
|
||||||
|
// fill: 'red',
|
||||||
|
// stroke: 'black'
|
||||||
|
// },
|
||||||
|
// sightless: false,
|
||||||
|
// composeCode: '100'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// code: '2',
|
||||||
|
// name: 'b',
|
||||||
|
// type: 'Circle',
|
||||||
|
// scale: [1, 1],
|
||||||
|
// position: [0, 0],
|
||||||
|
// rotation: 0,
|
||||||
|
// shape: {
|
||||||
|
// cx: 100,
|
||||||
|
// cy: 100,
|
||||||
|
// r: 10
|
||||||
|
// },
|
||||||
|
// style: {
|
||||||
|
// fill: 'red',
|
||||||
|
// stroke: 'black'
|
||||||
|
// },
|
||||||
|
// sightless: false,
|
||||||
|
// composeCode: '100'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// code: '3',
|
||||||
|
// name: 'a',
|
||||||
|
// type: 'Rect',
|
||||||
|
// scale: [1, 1],
|
||||||
|
// position: [0, 0],
|
||||||
|
// rotation: Math.PI / 4,
|
||||||
|
// shape: {
|
||||||
|
// x: 200,
|
||||||
|
// y: 100,
|
||||||
|
// width: 30,
|
||||||
|
// height: 30
|
||||||
|
// },
|
||||||
|
// style: {
|
||||||
|
// fill: 'red',
|
||||||
|
// stroke: 'black'
|
||||||
|
// },
|
||||||
|
// sightless: false,
|
||||||
|
// composeCode: '101'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// code: '4',
|
||||||
|
// name: 'b',
|
||||||
|
// type: 'Circle',
|
||||||
|
// scale: [1, 1],
|
||||||
|
// position: [0, 0],
|
||||||
|
// rotation: 0,
|
||||||
|
// scale: [0.5, 0.5],
|
||||||
|
// shape: {
|
||||||
|
// cx: 200,
|
||||||
|
// cy: 100,
|
||||||
|
// r: 10
|
||||||
|
// },
|
||||||
|
// style: {
|
||||||
|
// fill: 'red',
|
||||||
|
// stroke: 'black'
|
||||||
|
// },
|
||||||
|
// sightless: false,
|
||||||
|
// composeCode: '101'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// code: '5',
|
||||||
|
// name: 'c',
|
||||||
|
// type: 'Droplet',
|
||||||
|
// scale: [0.5, 0.5],
|
||||||
|
// position: [0, 0],
|
||||||
|
// rotation: 0,
|
||||||
|
// shape: {
|
||||||
|
// cx: 300,
|
||||||
|
// cy: 200,
|
||||||
|
// width: 30,
|
||||||
|
// height: 30
|
||||||
|
// },
|
||||||
|
// style: {
|
||||||
|
// fill: 'red',
|
||||||
|
// stroke: 'black'
|
||||||
|
// },
|
||||||
|
// sightless: false,
|
||||||
|
// composeCode: ''
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// code: '6',
|
||||||
|
// name: 'd',
|
||||||
|
// type: 'Droplet',
|
||||||
|
// scale: [1, 1],
|
||||||
|
// position: [0, 0],
|
||||||
|
// rotation: Math.PI / 2,
|
||||||
|
// shape: {
|
||||||
|
// cx: 400,
|
||||||
|
// cy: 200,
|
||||||
|
// width: 20,
|
||||||
|
// height: 20
|
||||||
|
// },
|
||||||
|
// style: {
|
||||||
|
// fill: 'red',
|
||||||
|
// stroke: 'black'
|
||||||
|
// },
|
||||||
|
// sightless: false,
|
||||||
|
// composeCode: ''
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// code: '7',
|
||||||
|
// name: 'a',
|
||||||
|
// type: 'Rect',
|
||||||
|
// scale: [1, 1],
|
||||||
|
// position: [100, 0],
|
||||||
|
// rotation: Math.PI / 2,
|
||||||
|
// shape: {
|
||||||
|
// x: 100,
|
||||||
|
// y: 100,
|
||||||
|
// width: 30,
|
||||||
|
// height: 60
|
||||||
|
// },
|
||||||
|
// style: {
|
||||||
|
// fill: 'red',
|
||||||
|
// stroke: 'black'
|
||||||
|
// },
|
||||||
|
// sightless: false,
|
||||||
|
// composeCode: ''
|
||||||
|
// }
|
||||||
|
// ],
|
||||||
|
// composeList: [
|
||||||
|
// {
|
||||||
|
// code: '100',
|
||||||
|
// type: 'Device',
|
||||||
|
// elementCodes: ['1', '2'],
|
||||||
|
// scale: [0.5, 0.5],
|
||||||
|
// position: [100, 100],
|
||||||
|
// rotation: Math.PI / 2,
|
||||||
|
// sightless: false,
|
||||||
|
// composeCode: '1000'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// code: '101',
|
||||||
|
// type: 'Device',
|
||||||
|
// elementCodes: ['3', '4'],
|
||||||
|
// scale: [1, 1],
|
||||||
|
// position: [200, 0],
|
||||||
|
// rotation: 0,
|
||||||
|
// sightless: false,
|
||||||
|
// composeCode: '1000'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// code: '1000',
|
||||||
|
// type: 'Device',
|
||||||
|
// scale: [1, 1],
|
||||||
|
// position: [0, 0],
|
||||||
|
// rotation: 0,
|
||||||
|
// elementCodes: ['100', '101'],
|
||||||
|
// sightless: false,
|
||||||
|
// composeCode: ''
|
||||||
|
// }
|
||||||
|
// ]
|
||||||
|
// }, {
|
||||||
|
// panEnable: true,
|
||||||
|
// zoomEnable: true,
|
||||||
|
// keyEnable: true,
|
||||||
|
// draggle: true,
|
||||||
|
// selecting: true,
|
||||||
|
// selectable: true,
|
||||||
|
// reflect: true
|
||||||
|
// });
|
||||||
|
|
||||||
|
window.document.oncontextmenu = function () {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
},
|
||||||
|
onUpdate(e) {
|
||||||
|
// this.$iscs.update([
|
||||||
|
// { status: 's1', code: '100', type: 'Device' },
|
||||||
|
// { status: 's2', code: '101', type: 'Device' }
|
||||||
|
// ]);
|
||||||
|
setTimeout(e => {
|
||||||
|
// this.$iscs.update([
|
||||||
|
// { status: 's0', code: '100', type: 'Device' },
|
||||||
|
// { status: 's0', code: '101', type: 'Device' },
|
||||||
|
// ])
|
||||||
|
}, 15000);
|
||||||
|
},
|
||||||
|
// 键盘快捷键事件
|
||||||
|
onKeyboard(hook) {
|
||||||
|
console.log(hook);
|
||||||
|
},
|
||||||
|
// 点击选择事件
|
||||||
|
onSelected(em) {
|
||||||
|
this.selected = em;
|
||||||
|
console.log(em, 'selected');
|
||||||
|
},
|
||||||
|
// 右键点击事件
|
||||||
|
onContextMenu(em) {
|
||||||
|
this.selected = em;
|
||||||
|
console.log(em, 'contextMenu');
|
||||||
|
},
|
||||||
|
resize() {
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$iscs && this.$iscs.resize({ width: this.width, height: this.height });
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// back() {
|
||||||
|
// this.group = this.$route.query.group;
|
||||||
|
// this.$store.dispatch('training/over').then(() => {
|
||||||
|
// putJointTrainingSimulationUserNew(this.group).then(() => {
|
||||||
|
// this.$router.replace({ path: `/trainroom`, query: { group: this.group, lineCode:this.$route.query.lineCode } });
|
||||||
|
// exitFullscreen();
|
||||||
|
// });
|
||||||
|
|
||||||
|
// });
|
||||||
|
// },
|
||||||
|
destroy() {
|
||||||
|
if (this.$iscs) {
|
||||||
|
this.$iscs.destroy();
|
||||||
|
this.$iscs = null;
|
||||||
|
Vue.prototype.$iscs = null;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
stateMessage(val) {
|
||||||
|
this.$iscs && this.$iscs.setDeviceStatus(val);
|
||||||
|
}
|
||||||
|
// doRemove() {
|
||||||
|
// if (this.selected) {
|
||||||
|
// this.$iscs.render([
|
||||||
|
// {
|
||||||
|
// model: this.selected.model,
|
||||||
|
// action: { order: orders.DELETE, shapeType: shapeType.Compose }
|
||||||
|
// }
|
||||||
|
// ]);
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// doUnbinding() {
|
||||||
|
// if (this.selected) {
|
||||||
|
// this.$iscs.render([
|
||||||
|
// {
|
||||||
|
// model: this.selected.model,
|
||||||
|
// action: { order: orders.UNBINDING, shapeType: shapeType.Compose }
|
||||||
|
// }
|
||||||
|
// ]);
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// doSource() {
|
||||||
|
// console.log(this.$iscs.getSource());
|
||||||
|
// this.json = JSON.stringify(this.$iscs.getSource());
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||||
|
.iscs-button{
|
||||||
|
position: absolute;
|
||||||
|
float: right;
|
||||||
|
right: 20px;
|
||||||
|
bottom: 15px;
|
||||||
|
}
|
||||||
|
.iscs-canvas{
|
||||||
|
}
|
||||||
|
</style>
|
Loading…
Reference in New Issue
Block a user