This commit is contained in:
fan 2020-08-04 13:30:52 +08:00
commit a385aa72c9
11 changed files with 348 additions and 15 deletions

View File

@ -103,7 +103,7 @@ export function Jl3dDrivingNew(mixers,updatemmi,sound,translation,routegroup,sta
return;
}
if(data.type == "Train_Hmi_3D"){
// console.log(data.body);
console.log(data.body);
updatestatus(data.body);
// if(data.body.trust){

View File

@ -108,7 +108,6 @@ export function JLmap3d(dom, data,skinCode,storemod,routegroup,project) {
getPublishMapDetail(skinCode).then(data => {
let mapnetdata = data.data;
getPublish3dMapDetail(skinCode).then(netdata => {
console.log(netdata);
let assetsdata = JSON.parse(netdata.data.sections);
if(assetsdata.link){
scope.datatype = "old";

View File

@ -143,6 +143,13 @@ export function SimulationLoadNew(data,scope,netdata,mapdata,camera,controls,sce
});
})
.then(function(data){
camera.position.x = stationstandlist.group.children[0].position.x;
camera.position.y = stationstandlist.group.children[0].position.y+500;
camera.position.z = stationstandlist.group.children[0].position.z+800;
//更新相机方向
controls.target = new THREE.Vector3(stationstandlist.group.children[0].position.x,stationstandlist.group.children[0].position.y,stationstandlist.group.children[0].position.z);
controls.upmodeldirect(stationstandlist,trainlisttest);
controls.update();
backdata.loaderdata(sectionlist,linklist,signallist,stationstandlist,trainlisttest,realsectionlist,rails);
scope.Subscribe.updatamap(sectionlist,linklist,signallist,stationstandlist,trainlisttest,realsectionlist,rails,scope.materiallist,scope.actions,scope.sceneload);

View File

@ -2,9 +2,9 @@ export function getBaseUrl() {
let BASE_API;
if (process.env.NODE_ENV === 'development') {
// BASE_API = 'https://joylink.club/jlcloud';
// BASE_API = 'https://test.joylink.club/jlcloud';
BASE_API = 'https://test.joylink.club/jlcloud';
// BASE_API = 'http://192.168.3.5:9000'; // 袁琪
BASE_API = 'http://192.168.3.6:9000'; // 旭强
// BASE_API = 'http://192.168.3.6:9000'; // 旭强
// BASE_API = 'http://192.168.3.41:9000'; // 张赛
// BASE_API = 'http://192.168.3.82:9000'; // 杜康
// BASE_API = 'http://b29z135112.zicp.vip';

View File

@ -144,6 +144,7 @@ export default {
width:80%;
height:30px;
margin:0px 0px 50px 0px;
cursor:pointer;
}
.modelpic{
left:0;

View File

@ -67,7 +67,7 @@ import EditTable from '@/views/components/editTable/index';
//
export default {
name: 'AddQuest',
name: 'Scheduling',
components: {
EditTable
},

View File

@ -0,0 +1,302 @@
<template>
<div>
<el-dialog
v-dialogDrag
:title="title"
:visible.sync="show"
top="50px"
width="95%"
:before-do-close="doClose"
:close-on-click-modal="false"
:z-index="2000"
>
<div class="scheduling">
<el-card class="scheduling_header">
<el-form>
<el-row>
<el-col :span="6">
<el-form-item :label="$t('display.schedule.scheduleSelect')">
<el-date-picker
v-model="formModel.planDate"
clearable
size="small"
type="date"
value-format="yyyy-MM-dd"
:picker-options="pickerOptions"
@change="handleQuery"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('display.schedule.runDiagramName')">
<!--<el-select v-model="formModel.runPlanName" size="small" style="display: inline-block">-->
<!--<el-option-->
<!--v-for="item in runPlanList"-->
<!--:key="item.value"-->
<!--:label="item.label"-->
<!--:value="item.value"-->
<!--/>-->
<!--</el-select>-->
<el-input v-model="formModel.runPlanName" size="small" style="width:140px;" />
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
<div class="scheduling_body">
<div class="scheduling_body-table">
<edit-table ref="table" v-loading="loading" border stripe :table-data="tableData" :table-form="tableForm" :row-style="handleRowStyle" />
</div>
</div>
</div>
</el-dialog>
</div>
</template>
<script>
import { querySechedulingNew } from '@/api/scheduling';
import { hexColor } from '@/utils/runPlan';
import EditTable from '@/views/components/editTable/index';
//
export default {
name: 'AddQuest',
components: {
EditTable
},
props: {
group: {
type: String,
required: true
}
},
data() {
return {
show: false,
loading: false,
runPlanList: [],
groupNumberList: [],
pickerOptions: {
disabledDate(time) {
return time.getTime() < Date.now() - 24 * 3600 * 1000;
}
},
formModel: {
id: '',
mode: '',
planDate: '',
runPlanName: ''
},
tableForm: {
index: true,
columns: [
// {
// title: this.$t('display.schedule.driverNumber'),
// prop: 'driverCode',
// type: 'text'
// },
{
title: this.$t('display.schedule.trainNumber'),
prop: 'groupNumber',
type: 'select',
width: '150',
options: () => { return this.groupNumberList; },
editable: false,
editing: false
},
{
title: this.$t('display.schedule.onlineSection'),
prop: 'outDepotTrip.outDepotSectionCode',
type: 'text',
format: (row) => { return this.handleDeviceName(row.outDepotTrip.outDepotSectionCode); }
},
{
title: this.$t('display.schedule.onlineServerNumber'),
prop: 'outDepotTrip.serviceNumber',
type: 'text',
format: (row) => { return row.outDepotTrip.serviceNumber; }
},
{
title: this.$t('display.schedule.onlineTargetNumber'),
prop: 'outDepotTrip.destinationCode',
type: 'text',
format: (row) => { return row.outDepotTrip.destinationCode; }
},
{
title: this.$t('display.schedule.onlineTime'),
prop: 'outDepotTrip.outDepotTime',
type: 'text',
format: (row) => { return row.outDepotTrip.outDepotTime; }
},
{
title: this.$t('display.schedule.onlineTripNumber'),
prop: 'outDepotTrip.tripNumber',
type: 'text',
format: (row) => { return row.outDepotTrip.tripNumber; }
},
{
title: this.$t('display.schedule.outDepot'),
prop: 'outDepotTrip.outDepotCode',
type: 'text',
format: (row) => { return this.handleDeviceName(row.outDepotTrip.outDepotCode); }
},
{
title: this.$t('display.schedule.outDepotStatus'),
prop: 'outDepotTrip.status',
type: 'tag',
columnValue: (row) => { return this.$ConstSelect.translate(row.outDepotTrip.status, 'Whether'); },
tagType: (row) => {
switch (row.outDepotTrip.status) {
case true: return 'success';
case false: return 'danger';
}
}
},
{
title: this.$t('display.schedule.offlineSection'),
prop: 'offlineSection',
type: 'text',
format: (row) => { return this.handleDeviceName(row.inDepotTrip.inDepotSectionCode); }
},
{
title: this.$t('display.schedule.offlineServerNumber'),
prop: 'offlineServerNumber',
type: 'text',
format: (row) => { return row.inDepotTrip.serviceNumber; }
},
{
title: this.$t('display.schedule.offlineTargetNumber'),
prop: 'offlineTargetNumber',
type: 'text',
format: (row) => { return row.inDepotTrip.destinationCode; }
},
{
title: this.$t('display.schedule.offlineTime'),
prop: 'offlineTime',
type: 'text',
format: (row) => { return row.inDepotTrip.inDepotTime; }
},
{
title: this.$t('display.schedule.offlineTripNumber'),
prop: 'offlineTripNumber',
type: 'text',
format: (row) => { return row.inDepotTrip.tripNumber; }
},
{
title: this.$t('display.schedule.inDepot'),
prop: 'inDepot',
type: 'text',
format: (row) => { return this.handleDeviceName(row.inDepotTrip.inDepotCode); }
},
{
title: this.$t('display.schedule.inDepotStatus'),
prop: 'inStatus',
type: 'tag',
columnValue: (row) => { return this.$ConstSelect.translate(row.inDepotTrip.status, 'Whether'); },
tagType: (row) => {
switch (row.inDepotTrip.status) {
case true: return 'success';
case false: return 'danger';
}
}
}
]
},
tableData: []
};
},
computed: {
title() {
return '派班计划预览';
}
},
watch: {
'$store.state.map.mapDataLoadedCount': function () {
const trainList = this.$store.state.map.map.trainList || [];
this.groupNumberList = [];
trainList.forEach(item => {
this.groupNumberList.push({value: item.code, label: item.groupNumber});
});
}
},
methods: {
doShow() {
this.formModel.day = '';
this.show = true;
},
doClose() {
this.show = false;
},
handleQuery(day) {
if (day) {
this.loading = true;
querySechedulingNew(this.group, {day}).then(resp => {
this.tableData = [];
if (resp.data) {
this.tableData = this.initTableData(resp.data.planList || []);
this.formModel.id = resp.data.id;
this.formModel.planDate = resp.data.planDate;
this.formModel.runPlanName = resp.data.runPlanName;
this.$message.success(`${this.$t('display.schedule.loadData')} ${day} ${this.$t('display.schedule.schedulePlanSuccess')}`);
}
this.loading = false;
}).catch(error => {
this.$messageBox(`${error.message}`);
this.loading = false;
});
}
},
handleRowStyle({row, rowIndex}) {
return row['$conflict'] ? {background: row.$conflict} : {background: '#FFF'};
},
setConflictList(list) {
this.tableData.forEach(elem => { elem['$conflict'] = null; });
if (list && list.length) {
list.forEach(idList => {
const color = hexColor.colorRandom();
this.tableData.forEach(elem => {
if (idList.includes(parseInt(elem.id))) {
elem['$conflict'] = color;
}
});
});
}
this.tableData = [...this.tableData];
},
initTableData(tableData) {
tableData.forEach(elem => {
this.$set(elem, '$conflict', null);
});
return tableData;
},
handleDeviceName(code) {
const device = this.$store.getters['map/getDeviceByCode'](code) || {};
return device.name;
}
}
};
</script>
<style scoped rel="stylesheet/scss" lang="scss">
.scheduling {
&_header {
background: #fff;
padding: 30px 30px 0;
}
&_body {
margin-top: 30px;
background: #ffff;
border: 1px solid #F1F1F1;
width: 100%;
overflow: auto;
}
}
/deep/ .el-dialog__body {
background: #fafafa;
}
/deep/ label {
font-weight: 0;
}
</style>

View File

@ -19,6 +19,7 @@
@jl3dstation="jl3dstation"
@devicemodel="devicemodel"
@showScheduling="showScheduling"
@schedulingView="schedulingView"
@switchStationMode="switchStationMode"
/>
<menu-lesson
@ -89,6 +90,7 @@
<Jl3d-Drive v-show="drivingShow" ref="Jl3dDrive" :panel-show="drivingShow" @showdriving="showdriving" />
<scheduling v-if="isShowScheduling" ref="scheduling" :group="group" />
<scheduling-view v-if="isShowScheduling" ref="schedulingView" :group="group" />
</div>
</template>
<script>
@ -107,6 +109,7 @@ import MenuPractice from '@/views/newMap/displayNew/menuPractice';
import Jl3dDrive from '@/views/jlmap3d/drive/jl3ddrive';
import Jl3dDevice from '@/views/jlmap3d/device/jl3ddevice';
import Scheduling from './demon/scheduling';
import SchedulingView from './demon/schedulingView';
import { clearSimulation, getSimulationInfoNew, getSimulationMemberList } from '@/api/simulation';
import { getTrainingDetailNew } from '@/api/jmap/training';
import { mapGetters } from 'vuex';
@ -133,7 +136,8 @@ export default {
// Jl3dSimulation,
Jl3dDrive,
Jl3dDevice,
Scheduling
Scheduling,
SchedulingView
},
data() {
return {
@ -491,6 +495,9 @@ export default {
showScheduling() {
this.$refs.scheduling.doShow();
},
schedulingView() {
this.$refs.schedulingView.doShow();
},
showdriving() {
this.panelShow = true;
this.drivingShow = false;

View File

@ -17,7 +17,8 @@
<!-- cctv视图 -->
<el-button v-if="!isShowScheduling" size="small" @click="jumpjl3dpassflow">{{ jl3dpassflow }}</el-button>
<!-- 排班计划 -->
<el-button v-if="isShowScheduling" type="primary" size="small" @click="jumpScheduling">{{ $t('display.demon.dispatchingPlan') }}</el-button>
<el-button v-if="isShowScheduling && !runing" type="primary" size="small" @click="jumpScheduling">派班计划加载</el-button>
<el-button v-if="isShowScheduling && runing" type="primary" size="small" @click="schedulingView">派班计划预览</el-button>
</el-button-group>
</div>
<div class="display-draft" :class="{'haerbin_btn_box': $route.query.lineCode == '07'}" :style="{bottom: offsetBottom + 'px'}">
@ -107,7 +108,8 @@ export default {
isShow3dmodel :false,
isGoback: false,
hoverBtn: false,
btnWidth: 0
btnWidth: 0,
runing:false
};
},
computed: {
@ -153,6 +155,9 @@ export default {
},
'$store.state.socket.simulationOver':function(val) {
!this.isGoback && this.back();
},
'$store.state.training.started': function (val) {
this.setRuning(val);
}
},
beforeDestroy() {
@ -247,6 +252,9 @@ export default {
}
});
},
setRuning(run) {
this.runing = run;
},
end() {
this.isDisable = false;
exitRunPlan(this.group).then(() => {
@ -316,6 +324,9 @@ export default {
jumpScheduling() {
this.$emit('showScheduling');
},
schedulingView() {
this.$emit('schedulingView');
},
setTryTime() {
if (this.try) {
const data = { time: this.tryTime, goodsId: this.goodsId };

View File

@ -74,10 +74,11 @@ export default {
});
this.editModel.logicSectionCodeList.forEach(logicCode => {
const section = this.$store.getters['map/getDeviceByCode'](logicCode);
if (section) {
models.push(deepAssign(section, {_dispose: true}));
const trainWindowModel = this.$store.getters['map/getDeviceByCode'](section.trainWindowCode);
models.push(deepAssign(trainWindowModel, {_dispose: true}));
trainWindowModel && models.push(deepAssign(trainWindowModel, {_dispose: true}));
}
});
if (this.logicNum === 0) {
logicSectionCodeList = [];

View File

@ -169,12 +169,14 @@ export default {
};
this.tableData.push(param);
});
this.tableData.sort((a, b) => Number(a.position) - Number(b.position)); //
this.formData = {
width: data.width,
height: data.height
};
}
data.offsetList.length = data.bigScreenSplitConfig.length + 1;
}
if (data.offsetList && data.offsetList.length) {
this.list = [];
data.offsetList.forEach(item => {
@ -270,17 +272,20 @@ export default {
this.addModel.sectionCode = '';
this.index = '';
},
generateOverlab() {
generateOverlab() { //
if (!this.addModel.sectionCode) {
this.$messageBox('请选择区段!');
} else {
const section = this.$store.getters['map/getDeviceByCode'](this.addModel.sectionCode);
const position = section.points[section.points.length - 1].x;
this.tableData.push({
position: String(section.points[section.points.length - 1].x),
position: String(position),
offsetTop: 0,
name: `${section.name}(${section.code})`,
sectionCode: section.code
});
this.tableData.sort((a, b) => Number(a.position) - Number(b.position)); //
this.list = this.list.concat({offsetTop: 0});
this.clear();
}