Merge remote-tracking branch 'remotes/origin/dev' into test
This commit is contained in:
commit
9851ac01a1
10
src/App.vue
10
src/App.vue
@ -10,7 +10,9 @@ import { handleToken } from '@/utils/auth';
|
||||
import { creatSubscribe, perpetualTopic, commonTopic } from '@/utils/stomp';
|
||||
import DeomonTopic from '@/views/demonstration/deomonTopic';
|
||||
import WindowResizeHandler from '@/mixin/WindowResizeHandler';
|
||||
import Cookies from 'js-cookie';
|
||||
import { ProjectIcon } from '@/scripts/ConstDic';
|
||||
import { logout } from '@/api/login';
|
||||
|
||||
export default {
|
||||
name: 'App',
|
||||
@ -32,6 +34,14 @@ export default {
|
||||
this.subscribe();
|
||||
const project = window.sessionStorage.getItem('project');
|
||||
document.querySelector("link[rel*='icon']").href = ProjectIcon[project];
|
||||
window.addEventListener('beforeunload', async e => {
|
||||
const token = handleToken();
|
||||
Cookies.remove('UserDesignName');
|
||||
Cookies.remove('UserDesignToken');
|
||||
Cookies.remove('UserName');
|
||||
Cookies.remove('UserToken');
|
||||
await logout(token);
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
resizeHandler() {
|
||||
|
@ -56,16 +56,6 @@ export function putLessonOffLine(id) {
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取地图产品下的课程列表
|
||||
*/
|
||||
export function getCommodityProductLesson(prdId) {
|
||||
return request({
|
||||
url: `/api/lesson/${prdId}/list`,
|
||||
method: 'get'
|
||||
});
|
||||
}
|
||||
|
||||
/** 更新发布课程信息*/
|
||||
export function updatePublishLesson(data) {
|
||||
return request({
|
||||
|
@ -30,7 +30,7 @@
|
||||
@selection-change="onSelectionChange"
|
||||
>
|
||||
<el-table-column v-if="queryList.selectCheckShow" type="selection" width="55" />
|
||||
<el-table-column v-if="queryList.indexShow" type="index" width="50" />
|
||||
<el-table-column v-if="queryList.indexShow" type="index" width="50" :label="this.$t('global.index')" />
|
||||
<el-table-column v-if="queryList.radioShow" :label="`#${$t('global.select')}`" width="60">
|
||||
<template slot-scope="scope">
|
||||
<el-radio v-model="choose" :label="scope.row">{{ `` }}</el-radio>
|
||||
|
@ -197,5 +197,6 @@ export default {
|
||||
companyInfo:'Beijing Jiulian Technology Co., Ltd',
|
||||
companyTel:'Tel: +86 13289398171',
|
||||
companyICP:'Copyright ©2018 Beijing Jiulian Technology Co., Ltd ICP: 18028522',
|
||||
enterPermissionNum:'please input permission number'
|
||||
enterPermissionNum:'please input number',
|
||||
enterPermissionNumInt:'number must interger'
|
||||
};
|
||||
|
@ -73,7 +73,7 @@ export default {
|
||||
transferScreenPermission: '大屏权限转赠',
|
||||
today: '今天',
|
||||
total: '合计',
|
||||
index: '索引',
|
||||
index: '序号',
|
||||
startTime: '开始时间',
|
||||
endTime: '结束时间',
|
||||
isForever: '是否永久',
|
||||
@ -197,5 +197,6 @@ export default {
|
||||
companyInfo:'北京玖琏科技有限公司',
|
||||
companyTel:'联系电话: 13289398171',
|
||||
companyICP:'Copyright ©2018 北京玖琏科技有限公司 京ICP备18028522号',
|
||||
enterPermissionNum:'请输入权限数量'
|
||||
enterPermissionNum:'请输入权限数量',
|
||||
enterPermissionNumInt:'权限数量需为整数'
|
||||
};
|
||||
|
@ -10,10 +10,10 @@ export default {
|
||||
permissionStatus: '权限状态',
|
||||
permissionUseType: '公用/专用',
|
||||
permissionTotal: '权限总数',
|
||||
permissionRemains: '剩余权限',
|
||||
permissionRemains: '剩余数量',
|
||||
isForever: '是否永久',
|
||||
startTime: '开始时间',
|
||||
endTime: '结束时间',
|
||||
startTime: '获得时间',
|
||||
endTime: '到期时间',
|
||||
belonger: '归属人',
|
||||
userList: '用户列表',
|
||||
customPackageRules: '定制打包规则',
|
||||
|
@ -108,7 +108,7 @@ export default {
|
||||
publishScriptFailed: '发布失败',
|
||||
releaseScriptTip: '此操作将申请发布剧本, 是否继续?',
|
||||
revokeScriptTip: '此操作将撤销发布剧本申请, 是否继续?',
|
||||
inputScriptName: '请输入剧本',
|
||||
inputScriptName: '请输入剧本名称',
|
||||
selectMap: '请选择地图',
|
||||
inputScriptDescription: '请输入剧本描述'
|
||||
};
|
||||
|
@ -1,11 +1,11 @@
|
||||
const mapDeviceStyle = {
|
||||
'01': 'chengdu_04',
|
||||
'02': 'fuzhou_01',
|
||||
'03': 'bejing_01',
|
||||
'04': 'chengdu_03',
|
||||
'05': 'batong_01' // 暂时没有画北京八通线
|
||||
'01': 'chengdu_04',
|
||||
'02': 'fuzhou_01',
|
||||
'03': 'bejing_01',
|
||||
'04': 'chengdu_03',
|
||||
'05': 'batong_01' // 暂时没有画北京八通线
|
||||
};
|
||||
|
||||
export function selectSkinCode(code) {
|
||||
return Object.assign({}, require(`./skinCode/${mapDeviceStyle[code || '02']}`).default);
|
||||
export function selectLineCode(code) {
|
||||
return Object.assign({}, require(`./skinCode/${mapDeviceStyle[code || '02']}`).default);
|
||||
}
|
||||
|
@ -7,7 +7,7 @@ import MouseController from './mouseController';
|
||||
import KeyboardController from './keyboardController';
|
||||
import deviceState from './constant/deviceState';
|
||||
import deviceType from './constant/deviceType';
|
||||
import { selectSkinCode } from './config/deviceStyle';
|
||||
import { selectLineCode } from './config/deviceStyle';
|
||||
import { deviceFactory, createBoundingRect, calculateDCenter } from './utils/parser';
|
||||
import { deepAssign } from '@/utils/index';
|
||||
|
||||
@ -22,8 +22,8 @@ class Jlmap {
|
||||
// 鼠标事件
|
||||
this.events = { __Pan: 'pan', __Zoom: 'zoom', Selected: 'selected', Contextmenu: 'contextmenu', DataZoom: 'dataZoom', Keyboard: 'keyboard'};
|
||||
|
||||
// 皮肤参数
|
||||
this.skinCode = '';
|
||||
// 线路参数
|
||||
this.lineCode = '';
|
||||
|
||||
// 皮肤风格
|
||||
this.style = {};
|
||||
@ -62,9 +62,9 @@ class Jlmap {
|
||||
this.$keyboardController.enable();
|
||||
}
|
||||
|
||||
loadStyle(skinCode) {
|
||||
return selectSkinCode(skinCode);
|
||||
}
|
||||
loadStyle(lineCode) {
|
||||
return selectLineCode(lineCode);
|
||||
}ine
|
||||
|
||||
loadDefaultState() {
|
||||
const defaultStateDict = {};
|
||||
@ -82,7 +82,7 @@ class Jlmap {
|
||||
setMap(map, mapDevice) {
|
||||
// 保存皮肤类型
|
||||
if (map.skinVO) {
|
||||
this.skinCode = map.skinVO.code;
|
||||
this.lineCode = map.skinVO.code;
|
||||
this.$options.scaleRate = map.skinVO.scaling || 1;
|
||||
this.$options.offsetX = map.skinVO.origin ? map.skinVO.origin.x : 0;
|
||||
this.$options.offsetY = map.skinVO.origin ? map.skinVO.origin.y : 0;
|
||||
@ -95,7 +95,7 @@ class Jlmap {
|
||||
this.mapDevice = mapDevice;
|
||||
|
||||
// 加载对应皮肤
|
||||
this.style = this.loadStyle(this.skinCode);
|
||||
this.style = this.loadStyle(this.lineCode);
|
||||
|
||||
// 数据加载完成 回调
|
||||
if (this.methods.dataLoaded instanceof Function) { this.methods.dataLoaded(this.mapDevice); }
|
||||
@ -315,7 +315,7 @@ class Jlmap {
|
||||
}
|
||||
|
||||
clear() {
|
||||
this.skinCode = '';
|
||||
this.lineCode = '';
|
||||
this.style = {};
|
||||
this.mapDevice = {};
|
||||
this.$painter.clear();
|
||||
|
@ -19,7 +19,7 @@
|
||||
|
||||
<script>
|
||||
import { runPlanTemplateList } from '@/api/runplan';
|
||||
import { getLineCodeList } from '@/api/management/mapline';
|
||||
import { listPublishMap } from '@/api/jmap/map';
|
||||
|
||||
export default {
|
||||
name: 'ChooseTemplatePlan',
|
||||
@ -27,7 +27,7 @@ export default {
|
||||
return {
|
||||
dialogShow: false,
|
||||
loading: false,
|
||||
skinCodeList: [],
|
||||
mapList: [],
|
||||
pagerConfig: {
|
||||
pageSize: 'pageSize',
|
||||
pageIndex: 'pageNum'
|
||||
@ -52,11 +52,11 @@ export default {
|
||||
prop: 'name'
|
||||
},
|
||||
{
|
||||
title: '线路类型',
|
||||
prop: 'skinCode',
|
||||
title: '地图名称',
|
||||
prop: 'mapId',
|
||||
type: 'tag',
|
||||
columnValue: (row) => {
|
||||
return this.$convertField(row.skinCode, this.skinCodeList, ['code', 'name']);
|
||||
return this.$convertField(row.mapId, this.mapList, ['id', 'name']);
|
||||
},
|
||||
tagType: (row) => { return 'success'; }
|
||||
}
|
||||
@ -73,9 +73,9 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
loadInitData() {
|
||||
this.skinCodeList = [];
|
||||
getLineCodeList().then(response => {
|
||||
this.skinCodeList = response.data;
|
||||
this.mapList = [];
|
||||
listPublishMap().then(response => {
|
||||
this.mapList = response.data;
|
||||
});
|
||||
},
|
||||
doShow() {
|
||||
@ -88,7 +88,8 @@ export default {
|
||||
},
|
||||
queryFunction(params) {
|
||||
if (this.$store.state.map && this.$store.state.map.map) {
|
||||
params['skinCode'] = this.$store.getters['map/skinCode'];
|
||||
params['mapId'] = this.$route.query.mapId;
|
||||
// params['lineCode'] = this.$store.getters['map/lineCode'];
|
||||
}
|
||||
return runPlanTemplateList(params);
|
||||
},
|
||||
|
@ -21,7 +21,7 @@
|
||||
import { runPlanTemplateList } from '@/api/runplan';
|
||||
import { getStationList } from '@/api/runplan';
|
||||
import { getEveryDayRunPlanData, generateDayRunPlan } from '@/api/simulation';
|
||||
import { getLineCodeList } from '@/api/management/mapline';
|
||||
import { listPublishMap, getPublishMapInfo } from '@/api/jmap/map';
|
||||
|
||||
export default {
|
||||
name: 'ReloadTodayPlan',
|
||||
@ -29,7 +29,7 @@ export default {
|
||||
return {
|
||||
dialogShow: false,
|
||||
loading: false,
|
||||
skinCodeList: [],
|
||||
mapList: [],
|
||||
pagerConfig: {
|
||||
pageSize: 'pageSize',
|
||||
pageIndex: 'pageNum'
|
||||
@ -54,11 +54,11 @@ export default {
|
||||
prop: 'name'
|
||||
},
|
||||
{
|
||||
title: '线路类型',
|
||||
prop: 'skinCode',
|
||||
title: '地图名称',
|
||||
prop: 'mapId',
|
||||
type: 'tag',
|
||||
columnValue: (row) => {
|
||||
return this.$convertField(row.skinCode, this.skinCodeList, ['code', 'name']);
|
||||
return this.$convertField(row.mapId, this.mapList, ['id', 'name']);
|
||||
},
|
||||
tagType: (row) => { return 'success'; }
|
||||
}
|
||||
@ -75,9 +75,9 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
loadInitData() {
|
||||
this.skinCodeList = [];
|
||||
getLineCodeList().then(response => {
|
||||
this.skinCodeList = response.data;
|
||||
this.mapList = [];
|
||||
listPublishMap().then(response => {
|
||||
this.mapList = response.data;
|
||||
});
|
||||
},
|
||||
doShow() {
|
||||
@ -90,7 +90,8 @@ export default {
|
||||
},
|
||||
queryFunction(params) {
|
||||
if (this.$store.state.map && this.$store.state.map.map) {
|
||||
params['skinCode'] = this.$store.getters['map/skinCode'];
|
||||
// params['lineCode'] = this.$store.getters['map/lineCode'];
|
||||
params['mapId'] = this.$route.query.mapId;
|
||||
}
|
||||
return runPlanTemplateList(params);
|
||||
},
|
||||
@ -117,19 +118,21 @@ export default {
|
||||
}
|
||||
},
|
||||
loadRunData() {
|
||||
const skinCode = this.$route.query.skinCode;
|
||||
// const skinCode = this.$route.query.skinCode;
|
||||
const mapId = this.$route.query.mapId;
|
||||
this.$store.dispatch('runPlan/clear');
|
||||
if (mapId) {
|
||||
getStationList(mapId).then(response => {
|
||||
const stations = response.data;
|
||||
this.PlanConvert = this.$theme.loadPlanConvert(skinCode);
|
||||
this.$store.dispatch('runPlan/setStations', stations).then(() => {
|
||||
getEveryDayRunPlanData(this.$route.query.group).then(resp => {
|
||||
this.$store.dispatch('runPlan/setPlanData', resp.data);
|
||||
}).catch(() => {
|
||||
this.$store.dispatch('runPlan/setPlanData', []);
|
||||
this.$messageBox(`获取运行图数据失败`);
|
||||
getPublishMapInfo(this.$route.query.mapId).then(res=>{
|
||||
this.PlanConvert = this.$theme.loadPlanConvert(res.data.lineCode);
|
||||
this.$store.dispatch('runPlan/setStations', stations).then(() => {
|
||||
getEveryDayRunPlanData(this.$route.query.group).then(resp => {
|
||||
this.$store.dispatch('runPlan/setPlanData', resp.data);
|
||||
}).catch(() => {
|
||||
this.$store.dispatch('runPlan/setPlanData', []);
|
||||
this.$messageBox(`获取运行图数据失败`);
|
||||
});
|
||||
});
|
||||
});
|
||||
}).catch(() => {
|
||||
|
@ -19,7 +19,7 @@
|
||||
|
||||
<script>
|
||||
import { runPlanTemplateList } from '@/api/runplan';
|
||||
import { getLineCodeList } from '@/api/management/mapline';
|
||||
import { listPublishMap } from '@/api/jmap/map';
|
||||
|
||||
export default {
|
||||
name: 'ChooseTemplatePlan',
|
||||
@ -27,7 +27,7 @@ export default {
|
||||
return {
|
||||
dialogShow: false,
|
||||
loading: false,
|
||||
skinCodeList: [],
|
||||
mapList: [],
|
||||
pagerConfig: {
|
||||
pageSize: 'pageSize',
|
||||
pageIndex: 'pageNum'
|
||||
@ -52,11 +52,11 @@ export default {
|
||||
prop: 'name'
|
||||
},
|
||||
{
|
||||
title: '线路类型',
|
||||
prop: 'skinCode',
|
||||
title: '地图名称',
|
||||
prop: 'mapId',
|
||||
type: 'tag',
|
||||
columnValue: (row) => {
|
||||
return this.$convertField(row.skinCode, this.skinCodeList, ['code', 'name']);
|
||||
return this.$convertField(row.mapId, this.mapList, ['id', 'name']);
|
||||
},
|
||||
tagType: (row) => { return 'success'; }
|
||||
}
|
||||
@ -73,9 +73,9 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
loadInitData() {
|
||||
this.skinCodeList = [];
|
||||
getLineCodeList().then(response => {
|
||||
this.skinCodeList = response.data;
|
||||
this.mapList = [];
|
||||
listPublishMap().then(response => {
|
||||
this.mapList = response.data;
|
||||
});
|
||||
},
|
||||
doShow() {
|
||||
@ -88,7 +88,8 @@ export default {
|
||||
},
|
||||
queryFunction(params) {
|
||||
if (this.$store.state.map && this.$store.state.map.map) {
|
||||
params['skinCode'] = this.$store.getters['map/skinCode'];
|
||||
// params['lineCode'] = this.$store.getters['map/lineCode'];
|
||||
params['mapId'] = this.$route.query.mapId;
|
||||
}
|
||||
return runPlanTemplateList(params);
|
||||
},
|
||||
|
@ -21,7 +21,7 @@
|
||||
import { runPlanTemplateList } from '@/api/runplan';
|
||||
import { getStationList } from '@/api/runplan';
|
||||
import { getEveryDayRunPlanData, generateDayRunPlan } from '@/api/simulation';
|
||||
import { getLineCodeList } from '@/api/management/mapline';
|
||||
import { listPublishMap, getPublishMapInfo } from '@/api/jmap/map';
|
||||
|
||||
export default {
|
||||
name: 'ReloadTodayPlan',
|
||||
@ -29,7 +29,7 @@ export default {
|
||||
return {
|
||||
dialogShow: false,
|
||||
loading: false,
|
||||
skinCodeList: [],
|
||||
mapList: [],
|
||||
pagerConfig: {
|
||||
pageSize: 'pageSize',
|
||||
pageIndex: 'pageNum'
|
||||
@ -54,11 +54,11 @@ export default {
|
||||
prop: 'name'
|
||||
},
|
||||
{
|
||||
title: '线路类型',
|
||||
prop: 'skinCode',
|
||||
title: '地图名称',
|
||||
prop: 'mapId',
|
||||
type: 'tag',
|
||||
columnValue: (row) => {
|
||||
return this.$convertField(row.skinCode, this.skinCodeList, ['code', 'name']);
|
||||
return this.$convertField(row.mapId, this.mapList, ['id', 'name']);
|
||||
},
|
||||
tagType: (row) => { return 'success'; }
|
||||
}
|
||||
@ -75,9 +75,9 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
loadInitData() {
|
||||
this.skinCodeList = [];
|
||||
getLineCodeList().then(response => {
|
||||
this.skinCodeList = response.data;
|
||||
this.mapList = [];
|
||||
listPublishMap().then(response => {
|
||||
this.mapList = response.data;
|
||||
});
|
||||
},
|
||||
doShow() {
|
||||
@ -90,7 +90,8 @@ export default {
|
||||
},
|
||||
queryFunction(params) {
|
||||
if (this.$store.state.map && this.$store.state.map.map) {
|
||||
params['skinCode'] = this.$store.getters['map/skinCode'];
|
||||
// params['lineCode'] = this.$store.getters['map/lineCode'];
|
||||
params['mapId'] = this.$route.query.mapId;
|
||||
}
|
||||
return runPlanTemplateList(params);
|
||||
},
|
||||
@ -118,19 +119,21 @@ export default {
|
||||
}
|
||||
},
|
||||
loadRunData() {
|
||||
const skinCode = this.$route.query.skinCode;
|
||||
// const skinCode = this.$route.query.skinCode;
|
||||
const mapId = this.$route.query.mapId;
|
||||
this.$store.dispatch('runPlan/clear');
|
||||
if (mapId) {
|
||||
getStationList(mapId).then(response => {
|
||||
const stations = response.data;
|
||||
this.PlanConvert = this.$theme.loadPlanConvert(skinCode);
|
||||
this.$store.dispatch('runPlan/setStations', stations).then(() => {
|
||||
getEveryDayRunPlanData(this.$route.query.group).then(resp => {
|
||||
this.$store.dispatch('runPlan/setPlanData', resp.data);
|
||||
}).catch(() => {
|
||||
this.$store.dispatch('runPlan/setPlanData', []);
|
||||
this.$messageBox(`获取运行图数据失败`);
|
||||
getPublishMapInfo(this.$route.query.mapId).then(res=>{
|
||||
this.PlanConvert = this.$theme.loadPlanConvert(res.data.lineCode);
|
||||
this.$store.dispatch('runPlan/setStations', stations).then(() => {
|
||||
getEveryDayRunPlanData(this.$route.query.group).then(resp => {
|
||||
this.$store.dispatch('runPlan/setPlanData', resp.data);
|
||||
}).catch(() => {
|
||||
this.$store.dispatch('runPlan/setPlanData', []);
|
||||
this.$messageBox(`获取运行图数据失败`);
|
||||
});
|
||||
});
|
||||
});
|
||||
}).catch(() => {
|
||||
|
@ -19,7 +19,7 @@
|
||||
|
||||
<script>
|
||||
import { runPlanTemplateList } from '@/api/runplan';
|
||||
import { getLineCodeList } from '@/api/management/mapline';
|
||||
import { listPublishMap } from '@/api/jmap/map';
|
||||
|
||||
export default {
|
||||
name: 'ChooseTemplatePlan',
|
||||
@ -27,7 +27,7 @@ export default {
|
||||
return {
|
||||
dialogShow: false,
|
||||
loading: false,
|
||||
skinCodeList: [],
|
||||
mapList: [],
|
||||
pagerConfig: {
|
||||
pageSize: 'pageSize',
|
||||
pageIndex: 'pageNum'
|
||||
@ -52,11 +52,11 @@ export default {
|
||||
prop: 'name'
|
||||
},
|
||||
{
|
||||
title: '线路类型',
|
||||
prop: 'skinCode',
|
||||
title: '地图名称',
|
||||
prop: 'mapId',
|
||||
type: 'tag',
|
||||
columnValue: (row) => {
|
||||
return this.$convertField(row.skinCode, this.skinCodeList, ['code', 'name']);
|
||||
return this.$convertField(row.mapId, this.mapList, ['id', 'name']);
|
||||
},
|
||||
tagType: (row) => { return 'success'; }
|
||||
}
|
||||
@ -73,9 +73,9 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
loadInitData() {
|
||||
this.skinCodeList = [];
|
||||
getLineCodeList().then(response => {
|
||||
this.skinCodeList = response.data;
|
||||
this.mapList = [];
|
||||
listPublishMap().then(response => {
|
||||
this.mapList = response.data;
|
||||
});
|
||||
},
|
||||
doShow() {
|
||||
@ -88,7 +88,8 @@ export default {
|
||||
},
|
||||
queryFunction(params) {
|
||||
if (this.$store.state.map && this.$store.state.map.map) {
|
||||
params['skinCode'] = this.$store.getters['map/skinCode'];
|
||||
// params['lineCode'] = this.$store.getters['map/lineCode'];
|
||||
params['mapId'] = this.$route.query.mapId;
|
||||
}
|
||||
return runPlanTemplateList(params);
|
||||
},
|
||||
|
@ -21,7 +21,7 @@
|
||||
import { runPlanTemplateList } from '@/api/runplan';
|
||||
import { getStationList } from '@/api/runplan';
|
||||
import { getEveryDayRunPlanData, generateDayRunPlan } from '@/api/simulation';
|
||||
import { getLineCodeList } from '@/api/management/mapline';
|
||||
import { listPublishMap, getPublishMapInfo} from '@/api/jmap/map';
|
||||
|
||||
export default {
|
||||
name: 'ReloadTodayPlan',
|
||||
@ -29,7 +29,7 @@ export default {
|
||||
return {
|
||||
dialogShow: false,
|
||||
loading: false,
|
||||
skinCodeList: [],
|
||||
mapList: [],
|
||||
pagerConfig: {
|
||||
pageSize: 'pageSize',
|
||||
pageIndex: 'pageNum'
|
||||
@ -54,11 +54,11 @@ export default {
|
||||
prop: 'name'
|
||||
},
|
||||
{
|
||||
title: '线路类型',
|
||||
prop: 'skinCode',
|
||||
title: '地图名称',
|
||||
prop: 'mapId',
|
||||
type: 'tag',
|
||||
columnValue: (row) => {
|
||||
return this.$convertField(row.skinCode, this.skinCodeList, ['code', 'name']);
|
||||
return this.$convertField(row.mapId, this.mapList, ['id', 'name']);
|
||||
},
|
||||
tagType: (row) => { return 'success'; }
|
||||
}
|
||||
@ -75,9 +75,9 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
loadInitData() {
|
||||
this.skinCodeList = [];
|
||||
getLineCodeList().then(response => {
|
||||
this.skinCodeList = response.data;
|
||||
this.mapList = [];
|
||||
listPublishMap().then(response => {
|
||||
this.mapList = response.data;
|
||||
});
|
||||
},
|
||||
doShow() {
|
||||
@ -90,7 +90,8 @@ export default {
|
||||
},
|
||||
queryFunction(params) {
|
||||
if (this.$store.state.map && this.$store.state.map.map) {
|
||||
params['skinCode'] = this.$store.getters['map/skinCode'];
|
||||
// params['lineCode'] = this.$store.getters['map/lineCode'];
|
||||
params['mapId'] = this.$route.query.mapId;
|
||||
}
|
||||
return runPlanTemplateList(params);
|
||||
},
|
||||
@ -117,19 +118,21 @@ export default {
|
||||
}
|
||||
},
|
||||
loadRunData() {
|
||||
const skinCode = this.$route.query.skinCode;
|
||||
// const skinCode = this.$route.query.skinCode;
|
||||
const mapId = this.$route.query.mapId;
|
||||
this.$store.dispatch('runPlan/clear');
|
||||
if (mapId) {
|
||||
getStationList(mapId).then(response => {
|
||||
const stations = response.data;
|
||||
this.PlanConvert = this.$theme.loadPlanConvert(skinCode);
|
||||
this.$store.dispatch('runPlan/setStations', stations).then(() => {
|
||||
getEveryDayRunPlanData(this.$route.query.group).then(resp => {
|
||||
this.$store.dispatch('runPlan/setPlanData', resp.data);
|
||||
}).catch(() => {
|
||||
this.$store.dispatch('runPlan/setPlanData', []);
|
||||
this.$messageBox(`获取运行图数据失败`);
|
||||
getPublishMapInfo(this.$route.query.mapId).then(res=>{
|
||||
this.PlanConvert = this.$theme.loadPlanConvert(res.data.lineCode);
|
||||
this.$store.dispatch('runPlan/setStations', stations).then(() => {
|
||||
getEveryDayRunPlanData(this.$route.query.group).then(resp => {
|
||||
this.$store.dispatch('runPlan/setPlanData', resp.data);
|
||||
}).catch(() => {
|
||||
this.$store.dispatch('runPlan/setPlanData', []);
|
||||
this.$messageBox(`获取运行图数据失败`);
|
||||
});
|
||||
});
|
||||
});
|
||||
}).catch(() => {
|
||||
|
@ -19,7 +19,7 @@
|
||||
|
||||
<script>
|
||||
import { runPlanTemplateList } from '@/api/runplan';
|
||||
import { getLineCodeList } from '@/api/management/mapline';
|
||||
import { listPublishMap } from '@/api/jmap/map';
|
||||
|
||||
export default {
|
||||
name: 'ChooseTemplatePlan',
|
||||
@ -27,7 +27,7 @@ export default {
|
||||
return {
|
||||
dialogShow: false,
|
||||
loading: false,
|
||||
skinCodeList: [],
|
||||
mapList: [],
|
||||
pagerConfig: {
|
||||
pageSize: 'pageSize',
|
||||
pageIndex: 'pageNum'
|
||||
@ -52,11 +52,11 @@ export default {
|
||||
prop: 'name'
|
||||
},
|
||||
{
|
||||
title: this.$t('menu.lineCode'),
|
||||
prop: 'skinCode',
|
||||
title: this.$t('menu.mapName'),
|
||||
prop: 'mapId',
|
||||
type: 'tag',
|
||||
columnValue: (row) => {
|
||||
return this.$convertField(row.skinCode, this.skinCodeList, ['code', 'name']);
|
||||
return this.$convertField(row.mapId, this.mapList, ['id', 'name']);
|
||||
},
|
||||
tagType: (row) => { return 'success'; }
|
||||
}
|
||||
@ -73,9 +73,9 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
loadInitData() {
|
||||
this.skinCodeList = [];
|
||||
getLineCodeList().then(response => {
|
||||
this.skinCodeList = response.data;
|
||||
this.mapList = [];
|
||||
listPublishMap().then(response => {
|
||||
this.mapList = response.data;
|
||||
});
|
||||
},
|
||||
doShow() {
|
||||
@ -88,7 +88,8 @@ export default {
|
||||
},
|
||||
queryFunction(params) {
|
||||
if (this.$store.state.map && this.$store.state.map.map) {
|
||||
params['skinCode'] = this.$store.getters['map/skinCode'];
|
||||
// params['lineCode'] = this.$store.getters['map/lineCode'];
|
||||
params['mapId'] = this.$route.query.mapId;
|
||||
}
|
||||
return runPlanTemplateList(params);
|
||||
},
|
||||
|
@ -21,7 +21,7 @@
|
||||
import { runPlanTemplateList } from '@/api/runplan';
|
||||
import { getStationList } from '@/api/runplan';
|
||||
import { getEveryDayRunPlanData, generateDayRunPlan } from '@/api/simulation';
|
||||
import { getLineCodeList } from '@/api/management/mapline';
|
||||
import { listPublishMap, getPublishMapInfo } from '@/api/jmap/map';
|
||||
|
||||
export default {
|
||||
name: 'ReloadTodayPlan',
|
||||
@ -29,7 +29,7 @@ export default {
|
||||
return {
|
||||
dialogShow: false,
|
||||
loading: false,
|
||||
skinCodeList: [],
|
||||
mapList: [],
|
||||
pagerConfig: {
|
||||
pageSize: 'pageSize',
|
||||
pageIndex: 'pageNum'
|
||||
@ -54,11 +54,11 @@ export default {
|
||||
prop: 'name'
|
||||
},
|
||||
{
|
||||
title: this.$t('menu.lineCode'),
|
||||
prop: 'skinCode',
|
||||
title: this.$t('menu.mapName'),
|
||||
prop: 'mapId',
|
||||
type: 'tag',
|
||||
columnValue: (row) => {
|
||||
return this.$convertField(row.skinCode, this.skinCodeList, ['code', 'name']);
|
||||
return this.$convertField(row.mapId, this.mapList, ['id', 'name']);
|
||||
},
|
||||
tagType: (row) => { return 'success'; }
|
||||
}
|
||||
@ -75,9 +75,9 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
loadInitData() {
|
||||
this.skinCodeList = [];
|
||||
getLineCodeList().then(response => {
|
||||
this.skinCodeList = response.data;
|
||||
this.mapList = [];
|
||||
listPublishMap().then(response => {
|
||||
this.mapList = response.data;
|
||||
});
|
||||
},
|
||||
doShow() {
|
||||
@ -90,7 +90,8 @@ export default {
|
||||
},
|
||||
queryFunction(params) {
|
||||
if (this.$store.state.map && this.$store.state.map.map) {
|
||||
params['skinCode'] = this.$store.getters['map/skinCode'];
|
||||
// params['lineCode'] = this.$store.getters['map/lineCode'];
|
||||
params['mapId'] = this.$route.query.mapId;
|
||||
}
|
||||
return runPlanTemplateList(params);
|
||||
},
|
||||
@ -117,21 +118,24 @@ export default {
|
||||
}
|
||||
},
|
||||
loadRunData() {
|
||||
const skinCode = this.$route.query.skinCode;
|
||||
// const skinCode = this.$route.query.skinCode;
|
||||
const mapId = this.$route.query.mapId;
|
||||
this.$store.dispatch('runPlan/clear');
|
||||
if (mapId) {
|
||||
getStationList(mapId).then(response => {
|
||||
const stations = response.data;
|
||||
this.PlanConvert = this.$theme.loadPlanConvert(skinCode);
|
||||
this.$store.dispatch('runPlan/setStations', stations).then(() => {
|
||||
getEveryDayRunPlanData(this.$route.query.group).then(resp => {
|
||||
this.$store.dispatch('runPlan/setPlanData', resp.data);
|
||||
}).catch(() => {
|
||||
this.$store.dispatch('runPlan/setPlanData', []);
|
||||
this.$messageBox(this.$t('error.getRunGraphDataFailed'));
|
||||
getPublishMapInfo(this.$route.query.mapId).then(res=>{
|
||||
this.PlanConvert = this.$theme.loadPlanConvert(res.data.lineCode);
|
||||
this.$store.dispatch('runPlan/setStations', stations).then(() => {
|
||||
getEveryDayRunPlanData(this.$route.query.group).then(resp => {
|
||||
this.$store.dispatch('runPlan/setPlanData', resp.data);
|
||||
}).catch(() => {
|
||||
this.$store.dispatch('runPlan/setPlanData', []);
|
||||
this.$messageBox(this.$t('error.getRunGraphDataFailed'));
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
}).catch(() => {
|
||||
this.$messageBox(this.$t('error.getStationListFail'));
|
||||
});
|
||||
|
@ -189,7 +189,6 @@ export default {
|
||||
this.visible = true;
|
||||
const token = getToken() || getDesignToken();
|
||||
getInfo(token).then(response => {
|
||||
debugger;
|
||||
const user = response.data;
|
||||
this.userInfo = {
|
||||
name: user.name,
|
||||
|
@ -1,17 +1,17 @@
|
||||
const getters = {
|
||||
routers: state => state.permission.routes,
|
||||
addRouters: state => state.permission.addRouters,
|
||||
sidebar: state => state.app.sidebar,
|
||||
lessonbar: state => state.app.lessonBar,
|
||||
device: state => state.app.device,
|
||||
token: state => state.user.token,
|
||||
avatar: state => state.user.avatar,
|
||||
name: state => state.user.name,
|
||||
nickname: state => state.user.nickname,
|
||||
roles: state => state.user.roles,
|
||||
canvasWidth: state => state.config.width,
|
||||
canvasHeight: state => state.config.height,
|
||||
id: state => state.user.id,
|
||||
permission_routes: state => state.permission.routes
|
||||
routers: state => state.permission.routes,
|
||||
addRouters: state => state.permission.addRouters,
|
||||
sidebar: state => state.app.sidebar,
|
||||
lessonbar: state => state.app.lessonBar,
|
||||
device: state => state.app.device,
|
||||
token: state => state.user.token,
|
||||
avatar: state => state.user.avatar,
|
||||
name: state => state.user.name,
|
||||
nickname: state => state.user.nickname,
|
||||
roles: state => state.user.roles,
|
||||
canvasWidth: state => state.config.width,
|
||||
canvasHeight: state => state.config.height,
|
||||
id: state => state.user.id,
|
||||
permission_routes: state => state.permission.routes
|
||||
};
|
||||
export default getters;
|
||||
|
@ -20,23 +20,23 @@ import getters from './getters';
|
||||
Vue.use(Vuex);
|
||||
|
||||
const store = new Vuex.Store({
|
||||
modules: {
|
||||
app,
|
||||
settings,
|
||||
user,
|
||||
permission,
|
||||
config,
|
||||
map,
|
||||
menuOperation,
|
||||
training,
|
||||
trainingList,
|
||||
exam,
|
||||
runPlan,
|
||||
socket,
|
||||
scriptRecord,
|
||||
ibp
|
||||
},
|
||||
getters
|
||||
modules: {
|
||||
app,
|
||||
settings,
|
||||
user,
|
||||
permission,
|
||||
config,
|
||||
map,
|
||||
menuOperation,
|
||||
training,
|
||||
trainingList,
|
||||
exam,
|
||||
runPlan,
|
||||
socket,
|
||||
scriptRecord,
|
||||
ibp
|
||||
},
|
||||
getters
|
||||
});
|
||||
|
||||
export default store;
|
||||
|
@ -315,7 +315,7 @@ const map = {
|
||||
map: (state) => {
|
||||
return state.map;
|
||||
},
|
||||
skinCode: (state) => {
|
||||
lineCode: (state) => {
|
||||
if (state.map && state.map.skinVO) {
|
||||
return state.map.skinVO.code;
|
||||
}
|
||||
|
@ -3,9 +3,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'; // 杜康
|
||||
} else {
|
||||
|
@ -53,7 +53,7 @@
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<!-- :label="$t('global.permissionList')" -->
|
||||
<el-form-item key="permissionList" :prop="'permissionList.' + scope.$index + '.chooseNumber'" :required="false" :rules="rules.chooseNumber">
|
||||
<el-form-item :prop="'permissionList.' + scope.$index + '.chooseNumber'" :required="false" :rules="rules.chooseNumber">
|
||||
<el-input-number v-model="scope.row.chooseNumber" size="mini" :max="scope.row.remains" :min="0" />
|
||||
</el-form-item>
|
||||
</template>
|
||||
@ -91,11 +91,24 @@ export default {
|
||||
mapId: '',
|
||||
numberMessage: '',
|
||||
PermissionType: '',
|
||||
isLoading:false
|
||||
isLoading:false,
|
||||
errorTip:this.$t('global.enterPermissionNum'),
|
||||
errorIntTip:this.$t('global.enterPermissionNumInt')
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
rules() {
|
||||
const validateChoose = (rule, value, callback)=> {
|
||||
if (value || value === 0) {
|
||||
if (Number.isInteger(value)) {
|
||||
callback();
|
||||
} else {
|
||||
callback(new Error(this.errorIntTip));
|
||||
}
|
||||
} else {
|
||||
callback(new Error(this.errorTip));
|
||||
}
|
||||
};
|
||||
const crules = {
|
||||
startTime: [
|
||||
{ required: true, message: this.$t('global.enterStartTime'), trigger: 'change' }
|
||||
@ -107,7 +120,14 @@ export default {
|
||||
{ required: true, message: this.$t('global.chooseTime'), trigger: 'blur' }
|
||||
],
|
||||
chooseNumber:[
|
||||
{ required: true, message: this.$t('global.enterPermissionNum'), trigger: 'blur'}
|
||||
{
|
||||
validator:validateChoose,
|
||||
trigger: 'blur'
|
||||
},
|
||||
{
|
||||
validator:validateChoose,
|
||||
trigger: 'change'
|
||||
}
|
||||
]
|
||||
};
|
||||
return crules;
|
||||
@ -157,7 +177,10 @@ export default {
|
||||
this.isLoading = false;
|
||||
if (res.data && res.data.length > 0) {
|
||||
this.isDisabled = false;
|
||||
this.formModel.permissionList = res.data;
|
||||
let jsonData = JSON.stringify(res.data);
|
||||
jsonData = jsonData.replace(/\"id\"/g, '"chooseNumber":0,"id"');
|
||||
jsonData = JSON.parse(jsonData);
|
||||
this.formModel.permissionList = jsonData;
|
||||
} else {
|
||||
this.isDisabled = true;
|
||||
}
|
||||
|
@ -8,18 +8,17 @@
|
||||
style="width: 100%; margin-top: 20px"
|
||||
>
|
||||
<el-table-column prop="index" :label="`${$t('global.index')}`" />
|
||||
<el-table-column prop="startTime" :label="`${$t('global.startTime')}`" />
|
||||
<el-table-column prop="endTime" :label="`${$t('global.endTime')}`" />
|
||||
<el-table-column prop="forever" :label="`${$t('global.isForever')}`">
|
||||
<el-table-column prop="startTime" :label="`${$t('permission.startTime')}`" />
|
||||
<el-table-column prop="endTime" :label="`${$t('permission.endTime')}`">
|
||||
<template slot-scope="scope">
|
||||
<el-tag :type="scope.row.forever? 'success': 'primary'" disable-transitions>{{ $ConstSelect.translate(scope.row.forever, 'Whether') }}</el-tag>
|
||||
<span>{{ scope.row.endTime? scope.row.endTime: '永久' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="amount" :label="$t('global.total')" />
|
||||
<el-table-column prop="remains" :label="$t('global.remains')" />
|
||||
<el-table-column prop="canDistribute" :label="$t('global.status')" width="100">
|
||||
<template slot-scope="scope">
|
||||
<el-tag :type="scope.row.canDistribute == true ? 'success':'primary'" disable-transitions>
|
||||
<el-tag :type="scope.row.canDistribute == true ? 'success':'danger'" disable-transitions>
|
||||
{{ computedName(scope.row.canDistribute, 'PermissionUseList') }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
@ -53,7 +53,7 @@
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<!-- :label="$t('global.permissionList')" -->
|
||||
<el-form-item key="permissionList" :prop="'permissionList.' + scope.$index + '.chooseNumber'" :required="false" :rules="rules.chooseNumber">
|
||||
<el-form-item :prop="'permissionList.' + scope.$index + '.chooseNumber'" :required="false" :rules="rules.chooseNumber">
|
||||
<el-input-number v-model="scope.row.chooseNumber" size="mini" :max="scope.row.remains" :min="0" />
|
||||
</el-form-item>
|
||||
</template>
|
||||
@ -91,11 +91,24 @@ export default {
|
||||
mapId: '',
|
||||
numberMessage: '',
|
||||
PermissionType: '',
|
||||
isLoading : false
|
||||
isLoading : false,
|
||||
errorTip:this.$t('global.enterPermissionNum'),
|
||||
errorIntTip:this.$t('global.enterPermissionNumInt')
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
rules() {
|
||||
const validateChoose = (rule, value, callback)=> {
|
||||
if (value || value === 0) {
|
||||
if (Number.isInteger(value)) {
|
||||
callback();
|
||||
} else {
|
||||
callback(new Error(this.errorIntTip));
|
||||
}
|
||||
} else {
|
||||
callback(new Error(this.errorTip));
|
||||
}
|
||||
};
|
||||
const crules = {
|
||||
startTime: [
|
||||
{ required: true, message: this.$t('global.enterStartTime'), trigger: 'change' }
|
||||
@ -107,7 +120,14 @@ export default {
|
||||
{ required: true, message: this.$t('global.chooseTime'), trigger: 'blur' }
|
||||
],
|
||||
chooseNumber:[
|
||||
{ required: true, message: this.$t('global.enterPermissionNum'), trigger: 'blur'}
|
||||
{
|
||||
validator:validateChoose,
|
||||
trigger: 'blur'
|
||||
},
|
||||
{
|
||||
validator:validateChoose,
|
||||
trigger: 'change'
|
||||
}
|
||||
]
|
||||
};
|
||||
return crules;
|
||||
@ -131,6 +151,7 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
setTotalMax() {
|
||||
let endTime;
|
||||
let startTime;
|
||||
@ -157,7 +178,10 @@ export default {
|
||||
this.isLoading = false;
|
||||
if (res.data && res.data.length > 0) {
|
||||
this.isDisabled = false;
|
||||
this.formModel.permissionList = res.data;
|
||||
let jsonData = JSON.stringify(res.data);
|
||||
jsonData = jsonData.replace(/\"id\"/g, '"chooseNumber":0,"id"');
|
||||
jsonData = JSON.parse(jsonData);
|
||||
this.formModel.permissionList = jsonData;
|
||||
} else {
|
||||
this.isDisabled = true;
|
||||
}
|
||||
|
@ -47,6 +47,12 @@ export default {
|
||||
'$store.state.app.windowSizeCount': function() {
|
||||
this.setWindowSize();
|
||||
}
|
||||
// '$store.state.socket.simulationReset': function (val) {
|
||||
// debugger;
|
||||
// // if (val) {
|
||||
// // this.simulationReset(val);
|
||||
// // }
|
||||
// }
|
||||
},
|
||||
async beforeDestroy() {
|
||||
await this.$store.dispatch('map/mapClear');
|
||||
@ -67,11 +73,12 @@ export default {
|
||||
async loadMapDataById(mapId) {
|
||||
try {
|
||||
await this.$store.dispatch('training/changeMode', { mode: null });
|
||||
await loadMapDataById(mapId);
|
||||
await this.$store.dispatch('training/over');
|
||||
await this.$store.dispatch('training/setMapDefaultState');
|
||||
await this.$store.dispatch('map/clearJlmapTrainView');
|
||||
await this.$store.dispatch('map/setTrainWindowShow', false);
|
||||
loadMapDataById(mapId).then(()=>{
|
||||
this.$store.dispatch('training/over');
|
||||
this.$store.dispatch('training/setMapDefaultState');
|
||||
this.$store.dispatch('map/clearJlmapTrainView');
|
||||
this.$store.dispatch('map/setTrainWindowShow', false);
|
||||
});
|
||||
} catch (error) {
|
||||
this.$messageBox(`获取地图数据失败: ${error.message}`);
|
||||
this.endViewLoading();
|
||||
|
@ -119,7 +119,7 @@ export default {
|
||||
}
|
||||
},
|
||||
'$store.state.map.mapDataLoadedCount': function () {
|
||||
if (this.$jlmap.skinCode) {
|
||||
if (this.$jlmap.lineCode) {
|
||||
this.isUpdate = true;
|
||||
}
|
||||
}
|
||||
|
@ -16,337 +16,341 @@
|
||||
<script>
|
||||
import { mapGetters } from 'vuex';
|
||||
import { runDiagramGetTime } from '@/api/simulation';
|
||||
import { getPublishMapInfo } from '@/api/jmap/map';
|
||||
import { timeFormat } from '@/utils/date';
|
||||
|
||||
export default {
|
||||
name: 'RunPlanView',
|
||||
props: {
|
||||
group: {
|
||||
type: String,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
dialogShow: false,
|
||||
loading: false,
|
||||
runPlanId: 'run-plan-view',
|
||||
myChart: null,
|
||||
PlanConvert: {},
|
||||
series: [],
|
||||
option: {
|
||||
title: {
|
||||
text: '',
|
||||
left: 'center'
|
||||
},
|
||||
grid: {
|
||||
top: '30px',
|
||||
left: '120px',
|
||||
right: '40px',
|
||||
bottom: '80px',
|
||||
containLabel: true,
|
||||
backgroundColor: 'floralwhite'
|
||||
},
|
||||
toolbox: {
|
||||
right: '20px',
|
||||
feature: {
|
||||
dataZoom: {
|
||||
yAxisIndex: 'none'
|
||||
},
|
||||
restore: {},
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
tooltip: {
|
||||
axisPointer: {
|
||||
trigger: 'item',
|
||||
type: 'cross'
|
||||
},
|
||||
formatter: this.axisTooltip,
|
||||
borderWidth: 1
|
||||
},
|
||||
xAxis: [
|
||||
{
|
||||
type: 'category',
|
||||
boundaryGap: false,
|
||||
data: [],
|
||||
axisLine: {
|
||||
onZero: false,
|
||||
lineStyle: {
|
||||
width: 2,
|
||||
color: '#d14a61'
|
||||
}
|
||||
},
|
||||
axisLabel: {
|
||||
formatter: this.xAxisLableFormat,
|
||||
textStyle: {
|
||||
color: '#333'
|
||||
}
|
||||
},
|
||||
axisPointer: {
|
||||
snap: true,
|
||||
label: {
|
||||
formatter: this.xAxisPointFormat,
|
||||
backgroundColor: 'rgb(255,0,0,0.5)',
|
||||
color: 'white'
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
yAxis: {
|
||||
type: 'value',
|
||||
splitLine: {
|
||||
show: false
|
||||
},
|
||||
axisTick: {
|
||||
show: false
|
||||
},
|
||||
axisLine: {
|
||||
onZero: false,
|
||||
lineStyle: {
|
||||
width: 2,
|
||||
color: '#d14a61'
|
||||
}
|
||||
},
|
||||
axisLabel: {
|
||||
interval: 'auto',
|
||||
formatter: this.yAxisLableFormat
|
||||
},
|
||||
axisPointer: {
|
||||
xAxisIndex: 'all',
|
||||
label: {
|
||||
formatter: this.yAxisPointFormat,
|
||||
backgroundColor: 'rgb(0,100,0,0.5)',
|
||||
color: 'white'
|
||||
}
|
||||
},
|
||||
min: 0,
|
||||
max: 0
|
||||
},
|
||||
// graphic: {
|
||||
// type: 'line',
|
||||
// progressive: true
|
||||
// },
|
||||
series: [],
|
||||
dataZoom: [
|
||||
{
|
||||
type: 'inside'
|
||||
},
|
||||
{
|
||||
fiterMode: 'filter',
|
||||
handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z',
|
||||
handleSize: '80%',
|
||||
handleStyle: {
|
||||
color: '#fff',
|
||||
shadowBlur: 3,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.6)',
|
||||
shadowOffsetX: 2,
|
||||
shadowOffsetY: 2
|
||||
},
|
||||
bottom: '25px'
|
||||
}
|
||||
]
|
||||
},
|
||||
absoluteTime: 2 * 3600,
|
||||
indexKmRangeMap: {},
|
||||
runPlanData: {}
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapGetters('runPlan', [
|
||||
'stations'
|
||||
]),
|
||||
title() {
|
||||
return this.$t('display.runPlan.previewRunDiagram');
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'$store.state.runPlan.planLoadedCount': function () {
|
||||
this.loadChartPage();
|
||||
if (this.dialogShow) {
|
||||
this.loadInitData(this.series);
|
||||
}
|
||||
},
|
||||
'$store.state.runPlan.planUpdateCount': function () {
|
||||
this.updateRunPlanData(this.$store.state.runPlan.updateData);
|
||||
},
|
||||
'$store.state.app.windowSizeCount': function() {
|
||||
this.reSize({ width: this.$store.state.app.width, height: this.$store.state.app.height - 55 });
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.PlanConvert = this.$theme.loadPlanConvert(this.$route.query.skinCode);
|
||||
this.loadChartPage();
|
||||
},
|
||||
beforeDestroy() {
|
||||
if (this.myChart && this.myChart.isDisposed) {
|
||||
this.myChart.dispose();
|
||||
this.myChart = null;
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
doShow() {
|
||||
this.dialogShow = true;
|
||||
this.loadInitData(this.series);
|
||||
},
|
||||
doClose() {
|
||||
this.dialogShow = false;
|
||||
},
|
||||
loadChartPage() {
|
||||
const stations = this.$store.state.runPlan.stations;
|
||||
const planData = this.$store.state.runPlan.planData;
|
||||
this.series = [];
|
||||
this.kmRangeCoordMap = this.PlanConvert.convertStationsToMap(stations);
|
||||
this.pushModels(this.series, [this.PlanConvert.initializeYaxis(stations)]);
|
||||
this.pushModels(this.series, this.PlanConvert.convertDataToModels(planData, stations, this.kmRangeCoordMap, { width: 1, color: '#000' }));
|
||||
},
|
||||
async loadInitData(series) {
|
||||
this.myChart && this.myChart.showLoading();
|
||||
await this.xAxisInit();
|
||||
await this.yAxisInit();
|
||||
await this.loadInitChart(series);
|
||||
this.myChart && this.myChart.hideLoading();
|
||||
},
|
||||
loadInitChart(series) {
|
||||
return new Promise((resolve, reject) => {
|
||||
try {
|
||||
const that = this;
|
||||
// 加载echart配置
|
||||
require.config(
|
||||
{
|
||||
paths: {
|
||||
echarts: './js/dist'
|
||||
}
|
||||
}
|
||||
);
|
||||
// 按需加载所需图表,如需动态类型切换功能,别忘了同时加载相应图表
|
||||
require(
|
||||
[
|
||||
'echarts',
|
||||
'echarts/lib/chart/line'
|
||||
],
|
||||
function (ec) {
|
||||
if (that.myChart && that.myChart.isDisposed) {
|
||||
that.myChart.clear();
|
||||
}
|
||||
name: 'RunPlanView',
|
||||
props: {
|
||||
group: {
|
||||
type: String,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
dialogShow: false,
|
||||
loading: false,
|
||||
runPlanId: 'run-plan-view',
|
||||
myChart: null,
|
||||
PlanConvert: {},
|
||||
series: [],
|
||||
option: {
|
||||
title: {
|
||||
text: '',
|
||||
left: 'center'
|
||||
},
|
||||
grid: {
|
||||
top: '30px',
|
||||
left: '120px',
|
||||
right: '40px',
|
||||
bottom: '80px',
|
||||
containLabel: true,
|
||||
backgroundColor: 'floralwhite'
|
||||
},
|
||||
toolbox: {
|
||||
right: '20px',
|
||||
feature: {
|
||||
dataZoom: {
|
||||
yAxisIndex: 'none'
|
||||
},
|
||||
restore: {},
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
tooltip: {
|
||||
axisPointer: {
|
||||
trigger: 'item',
|
||||
type: 'cross'
|
||||
},
|
||||
formatter: this.axisTooltip,
|
||||
borderWidth: 1
|
||||
},
|
||||
xAxis: [
|
||||
{
|
||||
type: 'category',
|
||||
boundaryGap: false,
|
||||
data: [],
|
||||
axisLine: {
|
||||
onZero: false,
|
||||
lineStyle: {
|
||||
width: 2,
|
||||
color: '#d14a61'
|
||||
}
|
||||
},
|
||||
axisLabel: {
|
||||
formatter: this.xAxisLableFormat,
|
||||
textStyle: {
|
||||
color: '#333'
|
||||
}
|
||||
},
|
||||
axisPointer: {
|
||||
snap: true,
|
||||
label: {
|
||||
formatter: this.xAxisPointFormat,
|
||||
backgroundColor: 'rgb(255,0,0,0.5)',
|
||||
color: 'white'
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
yAxis: {
|
||||
type: 'value',
|
||||
splitLine: {
|
||||
show: false
|
||||
},
|
||||
axisTick: {
|
||||
show: false
|
||||
},
|
||||
axisLine: {
|
||||
onZero: false,
|
||||
lineStyle: {
|
||||
width: 2,
|
||||
color: '#d14a61'
|
||||
}
|
||||
},
|
||||
axisLabel: {
|
||||
interval: 'auto',
|
||||
formatter: this.yAxisLableFormat
|
||||
},
|
||||
axisPointer: {
|
||||
xAxisIndex: 'all',
|
||||
label: {
|
||||
formatter: this.yAxisPointFormat,
|
||||
backgroundColor: 'rgb(0,100,0,0.5)',
|
||||
color: 'white'
|
||||
}
|
||||
},
|
||||
min: 0,
|
||||
max: 0
|
||||
},
|
||||
// graphic: {
|
||||
// type: 'line',
|
||||
// progressive: true
|
||||
// },
|
||||
series: [],
|
||||
dataZoom: [
|
||||
{
|
||||
type: 'inside'
|
||||
},
|
||||
{
|
||||
fiterMode: 'filter',
|
||||
handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z',
|
||||
handleSize: '80%',
|
||||
handleStyle: {
|
||||
color: '#fff',
|
||||
shadowBlur: 3,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.6)',
|
||||
shadowOffsetX: 2,
|
||||
shadowOffsetY: 2
|
||||
},
|
||||
bottom: '25px'
|
||||
}
|
||||
]
|
||||
},
|
||||
absoluteTime: 2 * 3600,
|
||||
indexKmRangeMap: {},
|
||||
runPlanData: {}
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapGetters('runPlan', [
|
||||
'stations'
|
||||
]),
|
||||
title() {
|
||||
return this.$t('display.runPlan.previewRunDiagram');
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'$store.state.runPlan.planLoadedCount': function () {
|
||||
this.loadChartPage();
|
||||
if (this.dialogShow) {
|
||||
this.loadInitData(this.series);
|
||||
}
|
||||
},
|
||||
'$store.state.runPlan.planUpdateCount': function () {
|
||||
this.updateRunPlanData(this.$store.state.runPlan.updateData);
|
||||
},
|
||||
'$store.state.app.windowSizeCount': function() {
|
||||
this.reSize({ width: this.$store.state.app.width, height: this.$store.state.app.height - 55 });
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
getPublishMapInfo(this.$route.query.mapId).then(res=>{
|
||||
// this.PlanConvert = this.$theme.loadPlanConvert(this.$route.query.lineCode);
|
||||
this.PlanConvert = this.$theme.loadPlanConvert(res.data.lineCode);
|
||||
this.loadChartPage();
|
||||
});
|
||||
},
|
||||
beforeDestroy() {
|
||||
if (this.myChart && this.myChart.isDisposed) {
|
||||
this.myChart.dispose();
|
||||
this.myChart = null;
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
doShow() {
|
||||
this.dialogShow = true;
|
||||
this.loadInitData(this.series);
|
||||
},
|
||||
doClose() {
|
||||
this.dialogShow = false;
|
||||
},
|
||||
loadChartPage() {
|
||||
const stations = this.$store.state.runPlan.stations;
|
||||
const planData = this.$store.state.runPlan.planData;
|
||||
this.series = [];
|
||||
this.kmRangeCoordMap = this.PlanConvert.convertStationsToMap(stations);
|
||||
this.pushModels(this.series, [this.PlanConvert.initializeYaxis(stations)]);
|
||||
this.pushModels(this.series, this.PlanConvert.convertDataToModels(planData, stations, this.kmRangeCoordMap, { width: 1, color: '#000' }));
|
||||
},
|
||||
async loadInitData(series) {
|
||||
this.myChart && this.myChart.showLoading();
|
||||
await this.xAxisInit();
|
||||
await this.yAxisInit();
|
||||
await this.loadInitChart(series);
|
||||
this.myChart && this.myChart.hideLoading();
|
||||
},
|
||||
loadInitChart(series) {
|
||||
return new Promise((resolve, reject) => {
|
||||
try {
|
||||
const that = this;
|
||||
// 加载echart配置
|
||||
require.config(
|
||||
{
|
||||
paths: {
|
||||
echarts: './js/dist'
|
||||
}
|
||||
}
|
||||
);
|
||||
// 按需加载所需图表,如需动态类型切换功能,别忘了同时加载相应图表
|
||||
require(
|
||||
[
|
||||
'echarts',
|
||||
'echarts/lib/chart/line'
|
||||
],
|
||||
function (ec) {
|
||||
if (that.myChart && that.myChart.isDisposed) {
|
||||
that.myChart.clear();
|
||||
}
|
||||
|
||||
let startValue = 3600 + that.PlanConvert.TranslationTime;
|
||||
const offsetTime = 3600;
|
||||
runDiagramGetTime(that.group).then(resp => {
|
||||
startValue = resp.data - that.PlanConvert.TranslationTime;
|
||||
that.option.dataZoom[0].startValue = that.option.dataZoom[1].startValue = startValue - offsetTime;
|
||||
that.option.dataZoom[0].endValue = that.option.dataZoom[1].endValue = startValue + offsetTime;
|
||||
that.option.series = series;
|
||||
that.myChart = ec.init(document.getElementById(that.runPlanId));
|
||||
if (that.myChart) {
|
||||
that.myChart.setOption(that.option);
|
||||
that.reSize({ width: document.documentElement.clientWidth, height: document.documentElement.clientHeight - 55 });
|
||||
}
|
||||
resolve(true);
|
||||
});
|
||||
}
|
||||
);
|
||||
} catch (error) {
|
||||
reject(error);
|
||||
}
|
||||
});
|
||||
},
|
||||
updateRunPlanData(data) {
|
||||
const stations = this.$store.state.runPlan.stations;
|
||||
const planData = this.$store.state.runPlan.planData;
|
||||
this.series = this.PlanConvert.updateDataToModels(data, stations, this.kmRangeCoordMap,
|
||||
planData, this.series, { color: '#FF00DE', width: 0.5 }
|
||||
);
|
||||
this.myChart && this.myChart.setOption({ series: this.series });
|
||||
},
|
||||
pushModels(series, models) {
|
||||
if (models && models.length) {
|
||||
models.forEach(elem => {
|
||||
if (elem) {
|
||||
series.push(elem);
|
||||
}
|
||||
});
|
||||
}
|
||||
let startValue = 3600 + that.PlanConvert.TranslationTime;
|
||||
const offsetTime = 3600;
|
||||
runDiagramGetTime(that.group).then(resp => {
|
||||
startValue = resp.data - that.PlanConvert.TranslationTime;
|
||||
that.option.dataZoom[0].startValue = that.option.dataZoom[1].startValue = startValue - offsetTime;
|
||||
that.option.dataZoom[0].endValue = that.option.dataZoom[1].endValue = startValue + offsetTime;
|
||||
that.option.series = series;
|
||||
that.myChart = ec.init(document.getElementById(that.runPlanId));
|
||||
if (that.myChart) {
|
||||
that.myChart.setOption(that.option);
|
||||
that.reSize({ width: document.documentElement.clientWidth, height: document.documentElement.clientHeight - 55 });
|
||||
}
|
||||
resolve(true);
|
||||
});
|
||||
}
|
||||
);
|
||||
} catch (error) {
|
||||
reject(error);
|
||||
}
|
||||
});
|
||||
},
|
||||
updateRunPlanData(data) {
|
||||
const stations = this.$store.state.runPlan.stations;
|
||||
const planData = this.$store.state.runPlan.planData;
|
||||
this.series = this.PlanConvert.updateDataToModels(data, stations, this.kmRangeCoordMap,
|
||||
planData, this.series, { color: '#FF00DE', width: 0.5 }
|
||||
);
|
||||
this.myChart && this.myChart.setOption({ series: this.series });
|
||||
},
|
||||
pushModels(series, models) {
|
||||
if (models && models.length) {
|
||||
models.forEach(elem => {
|
||||
if (elem) {
|
||||
series.push(elem);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return series;
|
||||
},
|
||||
popModels(series, models) {
|
||||
if (models && models.length) {
|
||||
models.forEach(elem => {
|
||||
const index = series.indexOf(elem);
|
||||
if (index >= 0) {
|
||||
series.split(index, 1);
|
||||
}
|
||||
});
|
||||
}
|
||||
return series;
|
||||
},
|
||||
popModels(series, models) {
|
||||
if (models && models.length) {
|
||||
models.forEach(elem => {
|
||||
const index = series.indexOf(elem);
|
||||
if (index >= 0) {
|
||||
series.split(index, 1);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return series;
|
||||
},
|
||||
xAxisPointFormat(params) {
|
||||
return timeFormat(params.value);
|
||||
},
|
||||
yAxisPointFormat(params) {
|
||||
return this.PlanConvert.computedFormatYAxis(this.stations, params);
|
||||
},
|
||||
xAxisLableFormat(value, index) {
|
||||
if (value % 60 === 0) {
|
||||
return timeFormat(value);
|
||||
}
|
||||
},
|
||||
yAxisLableFormat(value, index) {
|
||||
return '';
|
||||
},
|
||||
xAxisInit() {
|
||||
const list = [];
|
||||
for (var time = this.PlanConvert.TranslationTime; time < 3600 * 24 + this.PlanConvert.TranslationTime; time++) {
|
||||
list.push(time);
|
||||
}
|
||||
this.option.xAxis[0].data = list;
|
||||
},
|
||||
yAxisInit() {
|
||||
if (Object.keys(this.PlanConvert).length) {
|
||||
this.option.yAxis.min = this.PlanConvert.computedYaxisMinValue(this.stations);
|
||||
this.option.yAxis.max = this.PlanConvert.computedYaxisMaxValue(this.stations);
|
||||
}
|
||||
},
|
||||
axisTooltip(param) {
|
||||
const station = this.stations[Math.floor((param.data[1] - this.PlanConvert.EdgeHeight) / this.PlanConvert.CoordMultiple)] || { name: '', kmRange: '' };
|
||||
return [
|
||||
`Point Data <hr size=1 style="margin: 3px 0">`,
|
||||
`${this.$t('display.runPlan.stationName')}: ${station.name}<br>`,
|
||||
`${this.$t('display.runPlan.stationMark')}: ${station.kmRange} km <br>`,
|
||||
`${this.$t('display.runPlan.arrivalTime')}: ${timeFormat(param.data[0] + this.PlanConvert.TranslationTime)} (${param.data[0]})<br>`
|
||||
].join('');
|
||||
},
|
||||
settingExac(data) {
|
||||
this.absoluteTime = Math.abs(parseInt(data.endValue) - parseInt(data.startValue)) / 1000;
|
||||
this.myChart && this.myChart.setOption({
|
||||
xAxis: this.option.xAxis,
|
||||
yAxis: this.option.yAxis
|
||||
});
|
||||
return series;
|
||||
},
|
||||
xAxisPointFormat(params) {
|
||||
return timeFormat(params.value);
|
||||
},
|
||||
yAxisPointFormat(params) {
|
||||
return this.PlanConvert.computedFormatYAxis(this.stations, params);
|
||||
},
|
||||
xAxisLableFormat(value, index) {
|
||||
if (value % 60 === 0) {
|
||||
return timeFormat(value);
|
||||
}
|
||||
},
|
||||
yAxisLableFormat(value, index) {
|
||||
return '';
|
||||
},
|
||||
xAxisInit() {
|
||||
const list = [];
|
||||
for (var time = this.PlanConvert.TranslationTime; time < 3600 * 24 + this.PlanConvert.TranslationTime; time++) {
|
||||
list.push(time);
|
||||
}
|
||||
this.option.xAxis[0].data = list;
|
||||
},
|
||||
yAxisInit() {
|
||||
if (Object.keys(this.PlanConvert).length) {
|
||||
this.option.yAxis.min = this.PlanConvert.computedYaxisMinValue(this.stations);
|
||||
this.option.yAxis.max = this.PlanConvert.computedYaxisMaxValue(this.stations);
|
||||
}
|
||||
},
|
||||
axisTooltip(param) {
|
||||
const station = this.stations[Math.floor((param.data[1] - this.PlanConvert.EdgeHeight) / this.PlanConvert.CoordMultiple)] || { name: '', kmRange: '' };
|
||||
return [
|
||||
`Point Data <hr size=1 style="margin: 3px 0">`,
|
||||
`${this.$t('display.runPlan.stationName')}: ${station.name}<br>`,
|
||||
`${this.$t('display.runPlan.stationMark')}: ${station.kmRange} km <br>`,
|
||||
`${this.$t('display.runPlan.arrivalTime')}: ${timeFormat(param.data[0] + this.PlanConvert.TranslationTime)} (${param.data[0]})<br>`
|
||||
].join('');
|
||||
},
|
||||
settingExac(data) {
|
||||
this.absoluteTime = Math.abs(parseInt(data.endValue) - parseInt(data.startValue)) / 1000;
|
||||
this.myChart && this.myChart.setOption({
|
||||
xAxis: this.option.xAxis,
|
||||
yAxis: this.option.yAxis
|
||||
});
|
||||
|
||||
this.myChart && this.myChart.dispatchAction({
|
||||
type: 'dataZoom',
|
||||
dataZoomIndex: [0, 1],
|
||||
startValue: parseInt(data.startValue / 1000),
|
||||
endValue: parseInt(data.endValue / 1000)
|
||||
});
|
||||
},
|
||||
run(start) {
|
||||
this.myChart && this.myChart.dispatchAction({
|
||||
type: 'dataZoom',
|
||||
dataZoomIndex: [0, 1],
|
||||
startValue: parseInt(start - this.absoluteTime / 2),
|
||||
endValue: parseInt(start + this.absoluteTime / 2)
|
||||
});
|
||||
this.loadInitData(this.series);
|
||||
},
|
||||
reSize(opt) {
|
||||
if (this.myChart) {
|
||||
this.myChart.resize({ width: opt.width, height: opt.height, silent: false });
|
||||
}
|
||||
}
|
||||
}
|
||||
this.myChart && this.myChart.dispatchAction({
|
||||
type: 'dataZoom',
|
||||
dataZoomIndex: [0, 1],
|
||||
startValue: parseInt(data.startValue / 1000),
|
||||
endValue: parseInt(data.endValue / 1000)
|
||||
});
|
||||
},
|
||||
run(start) {
|
||||
this.myChart && this.myChart.dispatchAction({
|
||||
type: 'dataZoom',
|
||||
dataZoomIndex: [0, 1],
|
||||
startValue: parseInt(start - this.absoluteTime / 2),
|
||||
endValue: parseInt(start + this.absoluteTime / 2)
|
||||
});
|
||||
this.loadInitData(this.series);
|
||||
},
|
||||
reSize(opt) {
|
||||
if (this.myChart) {
|
||||
this.myChart.resize({ width: opt.width, height: opt.height, silent: false });
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style scoped rel="stylesheet/scss" lang="scss">
|
||||
|
@ -31,7 +31,6 @@ import { Notification } from 'element-ui';
|
||||
import { getGoodsTryUse } from '@/api/management/goods';
|
||||
import { runDiagramStart, runDiagramOver, runDiagramGetTime } from '@/api/simulation';
|
||||
import { PermissionType } from '@/scripts/ConstDic';
|
||||
import { exitFullscreen } from '@/utils/screen';
|
||||
import { getCountTime } from '@/utils/index';
|
||||
import { runDiagramIsStart, quitScript } from '@/api/simulation';
|
||||
import { timeFormat } from '@/utils/date';
|
||||
@ -191,7 +190,6 @@ export default {
|
||||
EventBus.$emit('chatSubscribeStop');
|
||||
history.go(-1);
|
||||
Notification.closeAll();
|
||||
// exitFullscreen();
|
||||
});
|
||||
},
|
||||
jumpjlmap3d() {
|
||||
|
@ -7,9 +7,9 @@
|
||||
<el-button type="danger" @click="dumpScenesData">重置剧本</el-button>
|
||||
</el-button-group> -->
|
||||
<el-button-group>
|
||||
<el-button type="success" :disabled="isDisable" @click="selectBeginTime">{{$t('scriptRecord.drivingByPlan')}}</el-button>
|
||||
<el-button type="success" :disabled="isDisable" @click="selectBeginTime">{{ $t('scriptRecord.drivingByPlan') }}</el-button>
|
||||
<!-- <el-button type="danger" :disabled="!isDisable" @click="end">退出计划</el-button> -->
|
||||
<el-button type="primary" @click="back">{{$t('scriptRecord.scriptBack')}}</el-button>
|
||||
<el-button type="primary" @click="back">{{ $t('scriptRecord.scriptBack') }}</el-button>
|
||||
</el-button-group>
|
||||
</div>
|
||||
<set-time ref="setTime" @ConfirmSelectBeginTime="start" />
|
||||
@ -23,7 +23,6 @@ import SetTime from './demon/setTime';
|
||||
import { Notification } from 'element-ui';
|
||||
import { runDiagramStart, runDiagramOver, runDiagramGetTime } from '@/api/simulation';
|
||||
// import { OperateMode, PermissionType } from '@/scripts/ConstDic';
|
||||
import { exitFullscreen } from '@/utils/screen';
|
||||
// import { getCountTime } from '@/utils/index';
|
||||
// import { loadMapData } from '@/utils/loaddata';
|
||||
import { runDiagramIsStart } from '@/api/simulation';
|
||||
@ -31,122 +30,121 @@ import { timeFormat } from '@/utils/date';
|
||||
import { EventBus } from '@/scripts/event-bus';
|
||||
|
||||
export default {
|
||||
name: 'MenuTask',
|
||||
components: {
|
||||
SetTime
|
||||
},
|
||||
props: {
|
||||
group: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
offset: {
|
||||
type: Number,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isDisable: false,
|
||||
tryTime: 0, // 进入页面多少秒
|
||||
timeNow: 0, // 进入页面 相对时间
|
||||
time: null, // 定时器
|
||||
countTime: 0, // 显示 倒计时
|
||||
remainingTime: 0,
|
||||
goodsId: this.$route.query.goodsId,
|
||||
// isSaveStage: true,
|
||||
training: {
|
||||
id: '',
|
||||
name: '',
|
||||
remarks: ''
|
||||
}
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
scriptId() {
|
||||
return this.$route.query.scriptId;
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'$store.state.training.subscribeCount': function () {
|
||||
this.group && this.initLoadPage();
|
||||
}
|
||||
},
|
||||
beforeDestroy() {
|
||||
if (this.time) {
|
||||
this.setTryTime();
|
||||
clearTimeout(this.time);
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async initLoadPage() {
|
||||
try {
|
||||
const resp = await runDiagramIsStart(this.group);
|
||||
if (resp && resp.data) {
|
||||
this.isDisable = true;
|
||||
this.$store.dispatch('training/simulationStart');
|
||||
} else {
|
||||
this.isDisable = false;
|
||||
this.$store.dispatch('training/over');
|
||||
}
|
||||
name: 'MenuTask',
|
||||
components: {
|
||||
SetTime
|
||||
},
|
||||
props: {
|
||||
group: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
offset: {
|
||||
type: Number,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isDisable: false,
|
||||
tryTime: 0, // 进入页面多少秒
|
||||
timeNow: 0, // 进入页面 相对时间
|
||||
time: null, // 定时器
|
||||
countTime: 0, // 显示 倒计时
|
||||
remainingTime: 0,
|
||||
goodsId: this.$route.query.goodsId,
|
||||
// isSaveStage: true,
|
||||
training: {
|
||||
id: '',
|
||||
name: '',
|
||||
remarks: ''
|
||||
}
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
scriptId() {
|
||||
return this.$route.query.scriptId;
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'$store.state.training.subscribeCount': function () {
|
||||
this.group && this.initLoadPage();
|
||||
}
|
||||
},
|
||||
beforeDestroy() {
|
||||
if (this.time) {
|
||||
this.setTryTime();
|
||||
clearTimeout(this.time);
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async initLoadPage() {
|
||||
try {
|
||||
const resp = await runDiagramIsStart(this.group);
|
||||
if (resp && resp.data) {
|
||||
this.isDisable = true;
|
||||
this.$store.dispatch('training/simulationStart');
|
||||
} else {
|
||||
this.isDisable = false;
|
||||
this.$store.dispatch('training/over');
|
||||
}
|
||||
|
||||
await this.loadSystemTime();
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
}
|
||||
},
|
||||
selectBeginTime() {
|
||||
this.$refs.setTime.doShow();
|
||||
},
|
||||
resetBeginTime() {
|
||||
this.isDisable = false;
|
||||
},
|
||||
start(model) {
|
||||
this.isDisable = true;
|
||||
runDiagramStart(model, this.group).then(res => {
|
||||
this.$store.dispatch('training/simulationStart').then(() => {
|
||||
this.$store.dispatch('training/setInitTime', +new Date(`${new Date().getFullYear()} ${model.initTime}`));
|
||||
});
|
||||
}).catch(() => {
|
||||
this.isDisable = false;
|
||||
this.$messageBox('开始仿真失败,请返回重试');
|
||||
});
|
||||
},
|
||||
end() {
|
||||
this.isDisable = false;
|
||||
runDiagramOver(this.group).then(() => {
|
||||
this.$store.dispatch('training/over').then(() => {
|
||||
this.$store.dispatch('training/setMapDefaultState').then(() => {
|
||||
this.$store.dispatch('map/clearJlmapTrainView');
|
||||
this.$store.dispatch('map/setTrainWindowShow', false);
|
||||
});
|
||||
});
|
||||
}).catch(() => {
|
||||
this.isDisable = true;
|
||||
this.$messageBox('结束仿真失败,请返回');
|
||||
});
|
||||
},
|
||||
setTryTime() {
|
||||
if (this.try) {
|
||||
this.$emit('tryTime', { time: this.tryTime, goodsId: this.goodsId });
|
||||
}
|
||||
},
|
||||
back() {
|
||||
this.$store.dispatch('training/over').then(() => {
|
||||
EventBus.$emit('runPlanStop');
|
||||
EventBus.$emit('chatSubscribeStop');
|
||||
history.go(-1);
|
||||
Notification.closeAll();
|
||||
// exitFullscreen();
|
||||
});
|
||||
},
|
||||
async loadSystemTime() {
|
||||
const rest = await runDiagramGetTime(this.group);
|
||||
if (rest && rest.code == 200) {
|
||||
this.$store.dispatch('training/setInitTime', +new Date(`${new Date().getFullYear()} ${timeFormat(rest.data)}`));
|
||||
}
|
||||
}
|
||||
}
|
||||
await this.loadSystemTime();
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
}
|
||||
},
|
||||
selectBeginTime() {
|
||||
this.$refs.setTime.doShow();
|
||||
},
|
||||
resetBeginTime() {
|
||||
this.isDisable = false;
|
||||
},
|
||||
start(model) {
|
||||
this.isDisable = true;
|
||||
runDiagramStart(model, this.group).then(res => {
|
||||
this.$store.dispatch('training/simulationStart').then(() => {
|
||||
this.$store.dispatch('training/setInitTime', +new Date(`${new Date().getFullYear()} ${model.initTime}`));
|
||||
});
|
||||
}).catch(() => {
|
||||
this.isDisable = false;
|
||||
this.$messageBox('开始仿真失败,请返回重试');
|
||||
});
|
||||
},
|
||||
end() {
|
||||
this.isDisable = false;
|
||||
runDiagramOver(this.group).then(() => {
|
||||
this.$store.dispatch('training/over').then(() => {
|
||||
this.$store.dispatch('training/setMapDefaultState').then(() => {
|
||||
this.$store.dispatch('map/clearJlmapTrainView');
|
||||
this.$store.dispatch('map/setTrainWindowShow', false);
|
||||
});
|
||||
});
|
||||
}).catch(() => {
|
||||
this.isDisable = true;
|
||||
this.$messageBox('结束仿真失败,请返回');
|
||||
});
|
||||
},
|
||||
setTryTime() {
|
||||
if (this.try) {
|
||||
this.$emit('tryTime', { time: this.tryTime, goodsId: this.goodsId });
|
||||
}
|
||||
},
|
||||
back() {
|
||||
this.$store.dispatch('training/over').then(() => {
|
||||
EventBus.$emit('runPlanStop');
|
||||
EventBus.$emit('chatSubscribeStop');
|
||||
history.go(-1);
|
||||
Notification.closeAll();
|
||||
});
|
||||
},
|
||||
async loadSystemTime() {
|
||||
const rest = await runDiagramGetTime(this.group);
|
||||
if (rest && rest.code == 200) {
|
||||
this.$store.dispatch('training/setInitTime', +new Date(`${new Date().getFullYear()} ${timeFormat(rest.data)}`));
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||
|
@ -45,106 +45,104 @@ import { getPublishLessonDetail } from '@/api/jmap/lesson';
|
||||
import { launchFullscreen } from '@/utils/screen';
|
||||
|
||||
export default {
|
||||
name: 'TipTrainingDetail',
|
||||
props: {
|
||||
trainingObj: {
|
||||
type: Object,
|
||||
default() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
training: {
|
||||
id: '',
|
||||
name: '',
|
||||
remarks: ''
|
||||
},
|
||||
isShrink: false,
|
||||
lessonName: '',
|
||||
courseModel: {
|
||||
id: '',
|
||||
name: '',
|
||||
skinCode: '',
|
||||
maxDuration: '',
|
||||
minDuration: '',
|
||||
remarks: '',
|
||||
updateTime: ''
|
||||
},
|
||||
showSumbit: false,
|
||||
lessonIndex: 0
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapGetters('trainingList', [
|
||||
'trainingList'
|
||||
])
|
||||
},
|
||||
watch: {
|
||||
'trainingObj': function (val) {
|
||||
if (val) {
|
||||
this.courseModel = {
|
||||
id: val.id,
|
||||
name: val.name,
|
||||
skinCode: val.skinCode,
|
||||
maxDuration: val.maxDuration,
|
||||
minDuration: val.minDuration,
|
||||
remarks: val.remarks,
|
||||
updateTime: val.updateTime
|
||||
};
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.loadInitData(this.$route.query);
|
||||
},
|
||||
methods: {
|
||||
loadInitData(obj) {
|
||||
this.showSumbit = false;
|
||||
this.lessonName = '';
|
||||
this.courseModel = {
|
||||
id: '',
|
||||
name: '',
|
||||
maxDuration: '',
|
||||
minDuration: '',
|
||||
remarks: '',
|
||||
updateTime: ''
|
||||
};
|
||||
name: 'TipTrainingDetail',
|
||||
props: {
|
||||
trainingObj: {
|
||||
type: Object,
|
||||
default() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
training: {
|
||||
id: '',
|
||||
name: '',
|
||||
remarks: ''
|
||||
},
|
||||
isShrink: false,
|
||||
lessonName: '',
|
||||
courseModel: {
|
||||
id: '',
|
||||
name: '',
|
||||
maxDuration: '',
|
||||
minDuration: '',
|
||||
remarks: '',
|
||||
updateTime: ''
|
||||
},
|
||||
showSumbit: false,
|
||||
lessonIndex: 0
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapGetters('trainingList', [
|
||||
'trainingList'
|
||||
])
|
||||
},
|
||||
watch: {
|
||||
'trainingObj': function (val) {
|
||||
if (val) {
|
||||
this.courseModel = {
|
||||
id: val.id,
|
||||
name: val.name,
|
||||
maxDuration: val.maxDuration,
|
||||
minDuration: val.minDuration,
|
||||
remarks: val.remarks,
|
||||
updateTime: val.updateTime
|
||||
};
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.loadInitData(this.$route.query);
|
||||
},
|
||||
methods: {
|
||||
loadInitData(obj) {
|
||||
this.showSumbit = false;
|
||||
this.lessonName = '';
|
||||
this.courseModel = {
|
||||
id: '',
|
||||
name: '',
|
||||
maxDuration: '',
|
||||
minDuration: '',
|
||||
remarks: '',
|
||||
updateTime: ''
|
||||
};
|
||||
|
||||
if (parseInt(obj.lessonId)) {
|
||||
getPublishLessonDetail({ id: obj.lessonId }).then(response => {
|
||||
this.lessonName = response.data.name;
|
||||
}).catch(error => {
|
||||
this.$message.error(this.$t('display.training.getCourseInformationFail')+':' + error.message);
|
||||
});
|
||||
}
|
||||
if (parseInt(obj.lessonId)) {
|
||||
getPublishLessonDetail({ id: obj.lessonId }).then(response => {
|
||||
this.lessonName = response.data.name;
|
||||
}).catch(error => {
|
||||
this.$message.error(this.$t('display.training.getCourseInformationFail') + ':' + error.message);
|
||||
});
|
||||
}
|
||||
|
||||
this.shrink();
|
||||
},
|
||||
jump(obj) {
|
||||
const query = {
|
||||
group: this.$route.query.group,
|
||||
trainingId: this.$route.query.trainingId,
|
||||
lessonId: this.$route.query.lessonId
|
||||
};
|
||||
this.$router.push({ path: `/display/${this.$route.params.mode}`, query: query });
|
||||
launchFullscreen();
|
||||
},
|
||||
shrink() {
|
||||
const height = this.$refs.dragBody.offsetHeight + 40;
|
||||
const top = this.$refs.drapBox.style.top;
|
||||
if (this.isShrink) {
|
||||
this.$refs.drapBox.style.height = '40px';
|
||||
this.$refs.drapBox.style.top = '';
|
||||
this.isShrink = false;
|
||||
} else {
|
||||
this.$refs.drapBox.style.height = height + 'px';
|
||||
this.$refs.drapBox.style.top = top;
|
||||
this.isShrink = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
this.shrink();
|
||||
},
|
||||
jump(obj) {
|
||||
const query = {
|
||||
group: this.$route.query.group,
|
||||
trainingId: this.$route.query.trainingId,
|
||||
lessonId: this.$route.query.lessonId
|
||||
};
|
||||
this.$router.push({ path: `/display/${this.$route.params.mode}`, query: query });
|
||||
launchFullscreen();
|
||||
},
|
||||
shrink() {
|
||||
const height = this.$refs.dragBody.offsetHeight + 40;
|
||||
const top = this.$refs.drapBox.style.top;
|
||||
if (this.isShrink) {
|
||||
this.$refs.drapBox.style.height = '40px';
|
||||
this.$refs.drapBox.style.top = '';
|
||||
this.isShrink = false;
|
||||
} else {
|
||||
this.$refs.drapBox.style.height = height + 'px';
|
||||
this.$refs.drapBox.style.top = top;
|
||||
this.isShrink = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||
|
@ -1,155 +0,0 @@
|
||||
<template>
|
||||
<el-card>
|
||||
<div slot="header" style="text-align: center;">
|
||||
<span class="title">{{ this.$t('exam.trainingName') }}: {{ courseModel.name }}</span>
|
||||
</div>
|
||||
<div style="margin:50px" :style="{ height: height - 150 +'px' }">
|
||||
<p class="time-item">
|
||||
<span class="time-label">{{ this.$t('exam.examinationTiming') }}:</span>
|
||||
<span class="time-elem">{{ formatExamUsedTime }}</span>
|
||||
</p>
|
||||
<p class="list-item">
|
||||
<span class="list-label">{{ this.$t('exam.maximumTimeToCompleteThisQuestion') }}:</span>
|
||||
<span class="list-elem">{{ courseModel.maxDuration | setTime }}{{ this.$t('global.second') }} </span>
|
||||
</p>
|
||||
<p class="list-item">
|
||||
<span class="list-label">{{ this.$t('exam.theBestTimeToCompleteTheQuestion') }}:</span>
|
||||
<span class="list-elem">{{ courseModel.minDuration | setTime }}{{ this.$t('global.second') }}</span>
|
||||
</p>
|
||||
<p class="list-item">
|
||||
<span class="list-label"> {{ this.$t('exam.trainingNotes') }}:</span>
|
||||
<span class="list-elem">{{ courseModel.remarks }}</span>
|
||||
</p>
|
||||
<p>
|
||||
<span class="list-label" />
|
||||
<el-button :loading="loading" type="primary" @click="start">{{ this.$t('exam.startTheExam') }}</el-button>
|
||||
<el-button :loading="loading" type="danger" @click="back">{{ this.$t('exam.giveUpTheExam') }}</el-button>
|
||||
</p>
|
||||
</div>
|
||||
</el-card>
|
||||
</template>
|
||||
<script>
|
||||
import { setExamGive } from '@/api/management/userexam';
|
||||
import { getTrainingDetail } from '@/api/jmap/training';
|
||||
import { launchFullscreen } from '@/utils/screen';
|
||||
import { timeFormat } from '@/utils/date';
|
||||
|
||||
export default {
|
||||
name: 'ExamDetailList',
|
||||
filters: {
|
||||
setTime(val) {
|
||||
return val;
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
courseModel: {
|
||||
id: '',
|
||||
name: '',
|
||||
skinCode: '',
|
||||
maxDuration: '',
|
||||
minDuration: '',
|
||||
remarks: '',
|
||||
updateTime: ''
|
||||
}
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
formatExamUsedTime() {
|
||||
return timeFormat(this.$store.state.exam.usedTime);
|
||||
},
|
||||
height() {
|
||||
return this.$store.state.app.height;
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
$route(newVal) {
|
||||
this.initLoadPage();
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.initLoadPage();
|
||||
},
|
||||
methods: {
|
||||
initLoadPage() {
|
||||
const trainingId = this.$route.query.trainingId;
|
||||
if (parseInt(trainingId)) {
|
||||
getTrainingDetail(trainingId).then(res => {
|
||||
this.courseModel = {
|
||||
id: res.data.id,
|
||||
name: res.data.name,
|
||||
skinCode: res.data.skinCode,
|
||||
maxDuration: res.data.maxDuration,
|
||||
remarks: res.data.remarks,
|
||||
minDuration: res.data.minDuration,
|
||||
updateTime: res.data.updateTime
|
||||
};
|
||||
}).catch(error => {
|
||||
this.$message.error( this.$t('error.getTestInformationFailed') + ':' + error.message);
|
||||
});
|
||||
}
|
||||
},
|
||||
start() {
|
||||
this.loading = true;
|
||||
const query = { skinCode: this.$route.query.skinCode, trainingId: this.$route.query.trainingId, userExamId: this.$route.query.userExamId, examQuestionId: this.$route.params.examQuestionId };
|
||||
this.$router.push({ path: '/display/exam', query: query });
|
||||
launchFullscreen();
|
||||
},
|
||||
back() {
|
||||
this.loading = true;
|
||||
this.$confirm( this.$t('tip.giveUpTheExamTip'), this.$t('tip.hint'), {
|
||||
confirmButtonText: this.$t('global.confirm'),
|
||||
cancelButtonText: this.$t('global.cancel'),
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
// 放弃试卷接口
|
||||
setExamGive(this.$route.query.userExamId).then(() => {
|
||||
this.$router.back();
|
||||
});
|
||||
}).catch(() => {
|
||||
this.loading = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||
@import "src/styles/mixin.scss";
|
||||
|
||||
.title {
|
||||
font-weight: bold
|
||||
}
|
||||
|
||||
.time-item {
|
||||
font-size: 24px;
|
||||
color: black !important;
|
||||
}
|
||||
|
||||
.time-label {
|
||||
display: -moz-inline-box;
|
||||
display: inline-block;
|
||||
text-align: right;
|
||||
margin-left: 14px;
|
||||
}
|
||||
|
||||
.time-elem {
|
||||
color: rgb(90, 89, 89) !important;
|
||||
}
|
||||
|
||||
.list-item {
|
||||
font-size: 16px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.list-label {
|
||||
display: -moz-inline-box;
|
||||
display: inline-block;
|
||||
text-align: right;
|
||||
width: 160px;
|
||||
}
|
||||
|
||||
.list-elem {
|
||||
color: #808080 !important;
|
||||
}
|
||||
</style>
|
@ -231,16 +231,16 @@ export default {
|
||||
this.dataZoom.offsetY = dataZoom.offsetY.toFixed(1) + '';
|
||||
this.dataZoom.scaleRate = dataZoom.scaleRate + '';
|
||||
|
||||
const skinCode = this.$store.getters['map/skinCode'];
|
||||
if (skinCode) {
|
||||
const lineCode = this.$store.getters['map/lineCode'];
|
||||
if (lineCode) {
|
||||
const param = {
|
||||
scaleRate: this.dataZoom.scaleRate,
|
||||
offsetY: this.dataZoom.offsetY,
|
||||
offsetX: this.dataZoom.offsetX,
|
||||
skinCode: skinCode
|
||||
lineCode: lineCode
|
||||
};
|
||||
this.$store.dispatch('map/updateZoom', this.dataZoom);
|
||||
localStore.set(`scaleRate_${skinCode}`, JSON.stringify(param)); // 保存缩放倍数
|
||||
localStore.set(`scaleRate_${lineCode}`, JSON.stringify(param)); // 保存缩放倍数
|
||||
}
|
||||
|
||||
this.$store.dispatch('training/emitTipFresh');
|
||||
|
@ -73,7 +73,7 @@ export default {
|
||||
deviceCode: '',
|
||||
group: '',
|
||||
mapId: '',
|
||||
skinCode: '',
|
||||
lineCode: '',
|
||||
simulationShow: false,
|
||||
drivingShow: false,
|
||||
ibpShow: false,
|
||||
@ -153,7 +153,7 @@ export default {
|
||||
async created() {
|
||||
this.group = this.$route.query.group;
|
||||
this.mapId = this.$route.query.mapId;
|
||||
this.skinCode = this.$route.query.skinCode;
|
||||
this.lineCode = this.$route.query.lineCode;
|
||||
this.subSystem = this.$route.query.subSystem;
|
||||
Message.closeAll();
|
||||
},
|
||||
@ -302,7 +302,7 @@ export default {
|
||||
this.$store.dispatch('training/end', TrainingMode.NORMAL);
|
||||
this.$store.dispatch('training/changeOperateMode', { mode: OperateMode.NORMAL }); // 默认为正常模式
|
||||
|
||||
if (this.skinCode) {
|
||||
if (this.lineCode) {
|
||||
// 01 现地 02 行调 '' 观众
|
||||
const resp = await this.getUserRole();
|
||||
if (resp && resp.code == 200) {
|
||||
|
@ -298,7 +298,7 @@ export default {
|
||||
back() {
|
||||
this.$store.dispatch('training/over').then(() => {
|
||||
putJointTrainingSimulationUser(this.group).then(() => {
|
||||
this.$router.replace({ path: `/trainroom`, query: { skinCode: this.$route.query.skinCode, group: this.group, subSystem: this.$route.query.subSystem } });
|
||||
this.$router.replace({ path: `/trainroom`, query: { lineCode: this.$route.query.lineCode, group: this.group, subSystem: this.$route.query.subSystem } });
|
||||
exitFullscreen();
|
||||
});
|
||||
});
|
||||
|
@ -1,17 +1,16 @@
|
||||
<template>
|
||||
<div style="height: 100%; overflow-y: auto;">
|
||||
<el-card>
|
||||
<div class="button_group">
|
||||
<div class="joylink-card">
|
||||
<div class="lesson-header">
|
||||
<div class="lesson-list">{{ $t('lesson.courseList') }}</div>
|
||||
<div class="but-group">
|
||||
<el-button v-if="hasRelease" size="mini" @click="operationManage">{{ $t('lesson.trainingRule') }}</el-button>
|
||||
<el-button v-if="hasRelease" size="mini" @click="trainingManage">{{ $t('lesson.trainingManage') }}</el-button>
|
||||
<el-button v-if="hasRelease" size="mini" @click="taskManage">{{ $t('lesson.taskManage') }}</el-button>
|
||||
<el-button size="mini" type="primary" @click="lessonCreateByPublish">{{ $t('lesson.createNewCoursesFromRelease') }}</el-button>
|
||||
<el-button size="mini" type="primary" @click="lessonCreate">{{ $t('lesson.newConstruction') }}</el-button>
|
||||
</div>
|
||||
</el-card>
|
||||
<el-card v-loading="loading">
|
||||
<QueryListPage ref="queryListPage" :query-form="queryForm" :pager-config="pagerConfig" :query-list="queryList" />
|
||||
</el-card>
|
||||
</div>
|
||||
<QueryListPage ref="queryListPage" :query-form="queryForm" :pager-config="pagerConfig" :query-list="queryList" style="width: 91%;margin-left:4%;margin-top:20px;" />
|
||||
<publish-create ref="publishCreate" @refresh="refresh" />
|
||||
<publish-lesson ref="publishLesson" @refresh="refresh" />
|
||||
<lesson-detail ref="lessonDetail" />
|
||||
@ -242,13 +241,19 @@ export default {
|
||||
};
|
||||
</script>
|
||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||
.draft {
|
||||
width: 400px;
|
||||
text-align: center;
|
||||
margin: 20px auto;
|
||||
@import "src/styles/mixin.scss";
|
||||
.joylink-card{
|
||||
height: 100%;
|
||||
overflow: auto;
|
||||
}
|
||||
.button_group {
|
||||
.lesson-header{
|
||||
display:inline-block;margin-top:40px;width: 90%;margin-left:5%;
|
||||
}
|
||||
.lesson-list{
|
||||
display:inline-block;padding:7px 0px
|
||||
}
|
||||
.but-group{
|
||||
float: right;
|
||||
margin: 20px 10px;
|
||||
margin-right:20px;
|
||||
}
|
||||
</style>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div style="height: 100%; overflow-y: auto;">
|
||||
<QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" />
|
||||
<QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" style="width: 98%;margin-left:1%;margin-top:20px;" />
|
||||
<create-task ref="CreateTask" @reloadTable="reloadTable" />
|
||||
<div class="draft">
|
||||
<el-button-group>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div style="height: 100%; overflow-y: auto;">
|
||||
<QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" />
|
||||
<QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" style="width: 98%;margin-left:1%;margin-top:20px;" />
|
||||
<training-edit ref="create" type="ADD" @reloadTable="reloadTable" />
|
||||
<training-edit ref="edit" type="EDIT" @reloadTable="reloadTable" />
|
||||
<add-batch ref="addBatch" @reloadTable="reloadTable" />
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div style="height: 100%; overflow-y: auto;">
|
||||
<QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" />
|
||||
<QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" style="width: 98%;margin-left:1%;margin-top:20px;" />
|
||||
<training-draft
|
||||
ref="draftTrain"
|
||||
:map-id-list="mapIdList"
|
||||
@ -67,13 +67,6 @@ export default {
|
||||
data: []
|
||||
}
|
||||
},
|
||||
/* generateType: {
|
||||
type: 'select',
|
||||
label: this.$t('lesson.automaticOrManual'),
|
||||
config: {
|
||||
data: [{ value: '02', label: this.$t('lesson.manual') }, { value: '01', label: this.$t('lesson.automatic') }]
|
||||
}
|
||||
},*/
|
||||
name: {
|
||||
type: 'text',
|
||||
label: this.$t('lesson.trainingName')
|
||||
@ -144,7 +137,6 @@ export default {
|
||||
{ text: this.$t('lesson.generateTraining'), btnCode: 'employee_auto', handler: this.autoMaticTrainging },
|
||||
{ text: this.$t('lesson.updateTraining'), btnCode: 'employee_edit', handler: this.editTrainingByType, type: 'warning'},
|
||||
{ text: this.$t('lesson.deleteTraining'), btnCode: 'employee_delete', handler: this.delAutoMaticTrainging, type: 'danger'}
|
||||
/* { text: this.$t('lesson.addTraining'), btnCode: 'employee_add', handler: this.addingTraining, type: 'primary' }*/
|
||||
]
|
||||
},
|
||||
|
||||
@ -174,8 +166,6 @@ export default {
|
||||
this.queryForm.queryObject.prdId.config.data.push({ value: elem.id, label: elem.name });
|
||||
}
|
||||
});
|
||||
debugger;
|
||||
this.typeChoose({type:this.queryForm.queryObject.prdId.config.data[0].id});
|
||||
}
|
||||
});
|
||||
|
||||
@ -237,9 +227,6 @@ export default {
|
||||
delAutoMaticTrainging() {
|
||||
this.$refs.draftTrain.show({ event: '03', title: this.$t('lesson.deleteAutoGeneratedTraining') });
|
||||
},
|
||||
// addingTraining() {
|
||||
// this.$refs.draftTrain.show({ event: '04', title: this.$t('lesson.addTraining') });
|
||||
// },
|
||||
demoDisplay(index, node) {
|
||||
trainingNotify({ trainingId: node.id }).then(resp => {
|
||||
/** 区分演示和正式,需要在演示时设置lessonId为0*/
|
||||
|
@ -97,7 +97,7 @@ export default {
|
||||
...mapGetters('map', [
|
||||
'counterList',
|
||||
'stationList',
|
||||
'skinCode'
|
||||
'lineCode'
|
||||
]),
|
||||
createRules: function () {
|
||||
return {
|
||||
|
@ -82,7 +82,7 @@ export default {
|
||||
...mapGetters('map', [
|
||||
'delayShowList',
|
||||
'stationList',
|
||||
'skinCode'
|
||||
'lineCode'
|
||||
]),
|
||||
createRules: function () {
|
||||
return {
|
||||
|
@ -111,7 +111,7 @@ export default {
|
||||
'sectionList',
|
||||
'trainModelList',
|
||||
'lcList',
|
||||
'skinCode'
|
||||
'lineCode'
|
||||
]),
|
||||
createRules: function () {
|
||||
return {
|
||||
|
@ -90,7 +90,7 @@ export default {
|
||||
'sectionList',
|
||||
'trainModelList',
|
||||
'tempSpeedLimitList',
|
||||
'skinCode'
|
||||
'lineCode'
|
||||
]),
|
||||
form() {
|
||||
const form = {
|
||||
|
@ -143,7 +143,7 @@ export default {
|
||||
...mapGetters('map', [
|
||||
'lineList',
|
||||
'stationList',
|
||||
'skinCode'
|
||||
'lineCode'
|
||||
]),
|
||||
form() {
|
||||
const form = {
|
||||
|
@ -320,7 +320,7 @@ export default {
|
||||
'switchList',
|
||||
'stationList',
|
||||
'stationStandList',
|
||||
'skinCode'
|
||||
'lineCode'
|
||||
]),
|
||||
form() {
|
||||
const form = {
|
||||
|
@ -192,7 +192,7 @@ export default {
|
||||
'signalList',
|
||||
'sectionList',
|
||||
'stationList',
|
||||
'skinCode'
|
||||
'lineCode'
|
||||
]),
|
||||
PhysicalSectionList() {
|
||||
let list = [];
|
||||
|
@ -104,7 +104,7 @@ export default {
|
||||
'stationList',
|
||||
'sectionList',
|
||||
'zcList',
|
||||
'skinCode'
|
||||
'lineCode'
|
||||
]),
|
||||
form() {
|
||||
return {
|
||||
|
@ -90,7 +90,7 @@ export default {
|
||||
...mapGetters('map', [
|
||||
'stationList',
|
||||
'stationControlList',
|
||||
'skinCode'
|
||||
'lineCode'
|
||||
]),
|
||||
form() {
|
||||
const form = {
|
||||
|
@ -119,7 +119,7 @@ export default {
|
||||
...mapGetters('map', [
|
||||
'stationList',
|
||||
'stationStandList',
|
||||
'skinCode'
|
||||
'lineCode'
|
||||
]),
|
||||
form() {
|
||||
const form = {
|
||||
|
@ -139,7 +139,7 @@ export default {
|
||||
'sectionList',
|
||||
'switchList',
|
||||
'stationList',
|
||||
'skinCode'
|
||||
'lineCode'
|
||||
])
|
||||
},
|
||||
watch: {
|
||||
|
@ -132,7 +132,7 @@ export default {
|
||||
...mapGetters('map', [
|
||||
'textList',
|
||||
'stationList',
|
||||
'skinCode'
|
||||
'lineCode'
|
||||
]),
|
||||
form() {
|
||||
const form = {
|
||||
|
@ -75,7 +75,7 @@ export default {
|
||||
...mapGetters('map', [
|
||||
'trainList',
|
||||
'trainModelList',
|
||||
'skinCode'
|
||||
'lineCode'
|
||||
])
|
||||
},
|
||||
watch: {
|
||||
|
@ -95,7 +95,7 @@ export default {
|
||||
'sectionList',
|
||||
'trainModelList',
|
||||
'zcList',
|
||||
'skinCode'
|
||||
'lineCode'
|
||||
]),
|
||||
form() {
|
||||
const form = {
|
||||
|
@ -46,9 +46,9 @@ export default {
|
||||
},
|
||||
watch: {
|
||||
'$store.state.map.mapDataLoadedCount': function () {
|
||||
const skinCode = this.$jlmap.skinCode;
|
||||
if (skinCode) {
|
||||
this.menus = this.$theme.loadMenuComponent(skinCode);
|
||||
const lineCode = this.$jlmap.lineCode;
|
||||
if (lineCode) {
|
||||
this.menus = this.$theme.loadMenuComponent(lineCode);
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -67,10 +67,10 @@ export default {
|
||||
return device;
|
||||
},
|
||||
// 根据皮肤类型转换激活的菜单类型
|
||||
getSelectedBySkinCode(device) {
|
||||
const switchSectionIsWitchSkinCodeList = ['03'];
|
||||
const skinCode = this.$store.getters['map/skinCode'];
|
||||
if (switchSectionIsWitchSkinCodeList.includes(skinCode) && device._type == deviceType.Section) {
|
||||
getSelectedByLineCode(device) {
|
||||
const switchSectionIsWitchLineCodeList = ['03'];
|
||||
const lineCode = this.$store.getters['map/lineCode'];
|
||||
if (switchSectionIsWitchLineCodeList.includes(lineCode) && device._type == deviceType.Section) {
|
||||
const section = this.$store.getters['map/getDeviceByCode'](device._code);
|
||||
if (section) {
|
||||
device = this.$store.getters['map/getDeviceByCode'](section.relSwitchCode);
|
||||
@ -117,7 +117,7 @@ export default {
|
||||
}
|
||||
|
||||
if (device) {
|
||||
this.selected = device = this.getSelectedBySkinCode(device);
|
||||
this.selected = device = this.getSelectedByLineCode(device);
|
||||
if (!this.buttonOperation) {
|
||||
this.$store.dispatch('menuOperation/setSelected', device);
|
||||
if (!this.checkShouldPop(device)) {
|
||||
@ -134,10 +134,10 @@ export default {
|
||||
this.$store.dispatch('training/emitTipFresh');
|
||||
},
|
||||
checkShouldPop(device) {
|
||||
const skinCode = this.$store.getters['map/skinCode'];
|
||||
const lineCode = this.$store.getters['map/lineCode'];
|
||||
if (device._type === 'Signal') {
|
||||
return device._viewVal === '3';
|
||||
} else if (device._type === 'StationControl' && skinCode == '01') { // 中控模式显示范围
|
||||
} else if (device._type === 'StationControl' && lineCode == '01') { // 中控模式显示范围
|
||||
return device._viewVal === '1';
|
||||
} else {
|
||||
return true;
|
||||
|
@ -26,9 +26,9 @@ export default {
|
||||
labelWidth: '120px',
|
||||
reset: true,
|
||||
queryObject: {
|
||||
type: {
|
||||
type: 'select',
|
||||
label: this.$t('permission.permissionType'),
|
||||
userName: {
|
||||
type: 'text',
|
||||
label: this.$t('permission.userName'),
|
||||
config: {
|
||||
data: []
|
||||
}
|
||||
@ -182,14 +182,14 @@ export default {
|
||||
});
|
||||
});
|
||||
|
||||
this.$Dictionary.permissionType().then(list => {
|
||||
list.forEach(elem => {
|
||||
this.queryForm.queryObject.type.config.data.push({ value: elem.code, label: elem.name });
|
||||
});
|
||||
this.$convertList(list, this.PermissionTypeList, elem => {
|
||||
return true;
|
||||
});
|
||||
});
|
||||
// this.$Dictionary.permissionType().then(list => {
|
||||
// list.forEach(elem => {
|
||||
// this.queryForm.queryObject.type.config.data.push({ value: elem.code, label: elem.name });
|
||||
// });
|
||||
// this.$convertList(list, this.PermissionTypeList, elem => {
|
||||
// return true;
|
||||
// });
|
||||
// });
|
||||
},
|
||||
formatterDate(row, porpInfo) {
|
||||
return row[porpInfo.property] ? row[porpInfo.property] : '---';
|
||||
|
@ -143,19 +143,18 @@ export default {
|
||||
loadInitData() {
|
||||
this.queryForm.queryObject.canDistribute.config.data = this.$ConstSelect.PermissionUseList;
|
||||
this.$Dictionary.permissionType().then(list => {
|
||||
console.log(LangStorage.getLang() == 'en');
|
||||
if (LangStorage.getLang() == 'en') {
|
||||
if (LangStorage.getLang() === 'en') {
|
||||
list.forEach(elem => {
|
||||
elem.value = elem.code;
|
||||
switch (elem.value) {
|
||||
case '01':
|
||||
elem.label = 'Teaching permissions';
|
||||
elem.label = 'Teaching system';
|
||||
break;
|
||||
case '02':
|
||||
elem.label = 'Exam permissions';
|
||||
elem.label = 'Exam system';
|
||||
break;
|
||||
case '03':
|
||||
elem.label = 'Simulation permissions';
|
||||
elem.label = 'Simulation system';
|
||||
break;
|
||||
case '04':
|
||||
elem.label = elem.name;
|
||||
@ -170,11 +169,7 @@ export default {
|
||||
});
|
||||
list.push({value: '', label: '万能权限'});
|
||||
}
|
||||
console.log(list, 111);
|
||||
this.PermissionTypeList = list;
|
||||
// this.$convertList(list, this.PermissionTypeList, elem => {
|
||||
// return true;
|
||||
// });
|
||||
});
|
||||
},
|
||||
formatterDate(row, porpInfo) {
|
||||
|
@ -1,48 +1,51 @@
|
||||
<template>
|
||||
<el-card :style="{height: height+'px'}" style="overflow-y:scroll;padding-bottom:20px;">
|
||||
<div class="runPlanHeader" style="width: 90%;margin-left:5%;margin-top:20px;display: inline-block;">
|
||||
<div class="joylink-card">
|
||||
<div class="runPlanHeader" style="width: 90%;margin-left:5%;margin-top:40px;display: inline-block;">
|
||||
<div class="runPlanList">{{ $t('planMonitor.openRunPlan.runPlanList') }}</div>
|
||||
<el-button v-if="isCreate" size="small" type="primary" class="createRunPlan" @click="handleCreate">{{ $t('planMonitor.createRunningDiagram') }}</el-button>
|
||||
<el-button v-if="isCreate" size="mini" type="primary" class="createRunPlan" @click="handleCreate">{{ $t('planMonitor.createRunningDiagram') }}</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
:data="runPlanList"
|
||||
height="500"
|
||||
stripe
|
||||
border
|
||||
style="width: 90%;margin-left:5%;margin-top:20px;display: inline-block;"
|
||||
>
|
||||
<el-table-column prop="name" :label="this.$t('planMonitor.runGraphName')" />
|
||||
<el-table-column v-if="!(/^\/design\/userlist/.test(this.$route.fullPath))" :label="this.$t('global.status')">
|
||||
<template slot-scope="scope">
|
||||
<el-tag>{{ handlerStatus(scope.row) }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
v-if="!(/^\/design\/userlist/.test(this.$route.fullPath))"
|
||||
prop="explanation"
|
||||
show-overflow-tooltip
|
||||
:label="this.$t('planMonitor.explanation')"
|
||||
/>
|
||||
<el-table-column :label="this.$t('planMonitor.creationDate')">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="success">{{ handleTime(scope.row.createTime) }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :label="this.$t('global.operate')" width="400">
|
||||
<template slot-scope="scope">
|
||||
<el-button v-if="scope.row.status !=='1'" size="mini" class="button_box" type="success" @click="handleConfirm(scope.row)">{{ $t('planMonitor.load') }}</el-button>
|
||||
<el-button v-if="isCreate && scope.row.status !=='1'" size="mini" class="button_box" type="primary" @click="handleEdit(scope.row)">{{ $t('planMonitor.modifyName') }}</el-button>
|
||||
<el-button v-if="isCreate && scope.row.status !=='1'" size="mini" class="button_box" type="danger" @click="handleDelete(scope.row)">{{ $t('global.delete') }}</el-button>
|
||||
<el-button v-if="isCreate && scope.row.status ==='0'" size="mini" class="button_box" type="primary" @click="handlePublish(scope.row)">{{ hasRelease?$t('global.release'):$t('planMonitor.applyRelease') }}</el-button>
|
||||
<el-button v-if="scope.row.status === '1'" size="mini" class="button_box" type="primary" @click="handlePreview(scope.row)">{{ $t('planMonitor.preview') }}</el-button>
|
||||
<el-button v-if="scope.row.status === '1'" size="mini" class="button_box" type="danger" @click="handelRevert(scope.row)">{{ $t('planMonitor.revoke') }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--<QueryListPage ref="queryListPage" :query-form="queryForm" :pager-config="pagerConfig" :query-list="queryList" style="width: 91%;margin-left:4%;margin-top:20px;" />-->
|
||||
<el-card v-loading="loading" style="width: 91%;margin-left:4%;margin-top:20px;">
|
||||
<el-table
|
||||
:data="runPlanList"
|
||||
highlight-current-row
|
||||
:header-cell-style="headerCellStyle"
|
||||
size="medium"
|
||||
stripe
|
||||
border
|
||||
>
|
||||
<el-table-column prop="name" :label="this.$t('planMonitor.runGraphName')" />
|
||||
<el-table-column v-if="!(/^\/design\/userlist/.test(this.$route.fullPath))" :label="this.$t('global.status')">
|
||||
<template slot-scope="scope">
|
||||
<el-tag>{{ handlerStatus(scope.row) }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
v-if="!(/^\/design\/userlist/.test(this.$route.fullPath))"
|
||||
prop="explanation"
|
||||
show-overflow-tooltip
|
||||
:label="this.$t('planMonitor.explanation')"
|
||||
/>
|
||||
<el-table-column :label="this.$t('planMonitor.creationDate')">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="success">{{ handleTime(scope.row.createTime) }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :label="this.$t('global.operate')" width="400">
|
||||
<template slot-scope="scope">
|
||||
<el-button v-if="scope.row.status !=='1'" size="mini" class="button_box" type="success" @click="handleConfirm(scope.row)">{{ $t('planMonitor.load') }}</el-button>
|
||||
<el-button v-if="isCreate && scope.row.status !=='1'" size="mini" class="button_box" type="primary" @click="handleEdit(scope.row)">{{ $t('planMonitor.modifyName') }}</el-button>
|
||||
<el-button v-if="isCreate && scope.row.status !=='1'" size="mini" class="button_box" type="danger" @click="handleDelete(scope.row)">{{ $t('global.delete') }}</el-button>
|
||||
<el-button v-if="isCreate && scope.row.status ==='0'" size="mini" class="button_box" type="primary" @click="handlePublish(scope.row)">{{ hasRelease?$t('global.release'):$t('planMonitor.applyRelease') }}</el-button>
|
||||
<el-button v-if="scope.row.status === '1'" size="mini" class="button_box" type="primary" @click="handlePreview(scope.row)">{{ $t('planMonitor.preview') }}</el-button>
|
||||
<el-button v-if="scope.row.status === '1'" size="mini" class="button_box" type="danger" @click="handelRevert(scope.row)">{{ $t('planMonitor.revoke') }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-card>
|
||||
<create-empty-plan ref="createEmptyPlan" :plan-convert="PlanConvert" @dispatchDialog="dispatchDialog" @refresh="refresh" />
|
||||
<!-- @dispatchOperate="dispatchOperate" -->
|
||||
<edit-plan-name ref="editPlan" @renewal="getRunPlanList" />
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import EditPlanName from './editTool/menus/editPlanName';
|
||||
@ -56,7 +59,6 @@ export default {
|
||||
components: {
|
||||
CreateEmptyPlan,
|
||||
EditPlanName
|
||||
// LimitList
|
||||
},
|
||||
filters: {
|
||||
},
|
||||
@ -64,14 +66,93 @@ export default {
|
||||
return {
|
||||
dialogShow: false,
|
||||
loading: false,
|
||||
// height: 260,
|
||||
// planId: '',
|
||||
// planName: '',
|
||||
type: 'add',
|
||||
runPlanList: [],
|
||||
runPlanDict: {},
|
||||
isCreate:false,
|
||||
PlanConvert: {}
|
||||
PlanConvert: {},
|
||||
headerCellStyle: {
|
||||
}
|
||||
// pagerConfig: {
|
||||
// pageSize: 'pageSize',
|
||||
// pageIndex: 'pageNum'
|
||||
// },
|
||||
// queryForm: {
|
||||
// show: false
|
||||
// },
|
||||
// queryList: {
|
||||
// query: this.queryFunction,
|
||||
// afterQuery: this.afterQuery,
|
||||
// selectCheckShow: false,
|
||||
// indexShow: false,
|
||||
// columns: [
|
||||
// {
|
||||
// title: this.$t('planMonitor.runGraphName'),
|
||||
// prop: 'name'
|
||||
// },
|
||||
// {
|
||||
// title: this.$t('global.status'),
|
||||
// prop: 'status'
|
||||
// },
|
||||
// {
|
||||
// title: this.$t('planMonitor.explanation'),
|
||||
// prop: 'explanation'
|
||||
// },
|
||||
// {
|
||||
// title: this.$t('planMonitor.creationDate'),
|
||||
// prop: 'createTime'
|
||||
// },
|
||||
// {
|
||||
// type: 'button',
|
||||
// title: this.$t('global.operate'),
|
||||
// width: '450',
|
||||
// buttons: [
|
||||
// {
|
||||
// name: this.$t('planMonitor.load'),
|
||||
// handleClick: this.handleConfirm,
|
||||
// showControl: (row) => {
|
||||
// return row.status !== '1';
|
||||
// }
|
||||
// },
|
||||
// {
|
||||
// name: this.$t('planMonitor.modifyName'),
|
||||
// handleClick: this.handleEdit,
|
||||
// showControl: (row) => {
|
||||
// return this.isCreate && row.status !== '1';
|
||||
// }
|
||||
// },
|
||||
// {
|
||||
// name: this.$t('global.delete'),
|
||||
// handleClick: this.handleDelete,
|
||||
// showControl: (row) => {
|
||||
// return this.isCreate && row.status !== '1';
|
||||
// }
|
||||
// },
|
||||
// {
|
||||
// name: this.hasRelease ? this.$t('global.release') : this.$t('planMonitor.applyRelease'),
|
||||
// handleClick: this.handlePublish,
|
||||
// showControl: (row) => {
|
||||
// return this.isCreate && row.status === '0';
|
||||
// }
|
||||
// },
|
||||
// {
|
||||
// name: this.$t('planMonitor.preview'),
|
||||
// handleClick: this.handlePreview,
|
||||
// showControl: (row) => {
|
||||
// return row.status === '1';
|
||||
// }
|
||||
// },
|
||||
// {
|
||||
// name: this.$t('planMonitor.revoke'),
|
||||
// handleClick: this.handelRevert,
|
||||
// showControl: (row) => {
|
||||
// return row.status === '1';
|
||||
// }
|
||||
// }
|
||||
// ]
|
||||
// }
|
||||
// ]
|
||||
// }
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -98,7 +179,12 @@ export default {
|
||||
refresh() {
|
||||
this.getRunPlanList();
|
||||
},
|
||||
// queryFunction(params) {
|
||||
// this.isCreate = !/^\/design\/userlist/.test(this.$route.fullPath);
|
||||
// return this.isCreate ? getRpListByMapId(this.$route.params.mapId) : getRpListByUserMapId(this.$route.params.mapId);
|
||||
// },
|
||||
getRunPlanList() {
|
||||
this.loading = true;
|
||||
if (/^\/design\/userlist/.test(this.$route.fullPath)) {
|
||||
this.isCreate = false;
|
||||
getRpListByUserMapId(this.$route.params.mapId).then((resp) => {
|
||||
@ -106,9 +192,10 @@ export default {
|
||||
this.runPlanList.forEach(elem => {
|
||||
this.runPlanDict[elem.id] = elem.name;
|
||||
});
|
||||
// this.dialogShow = true;
|
||||
this.loading = false;
|
||||
}).catch(() => {
|
||||
this.$messageBox(this.$t('planMonitor.openRunPlan.getRunPlanListFail'));
|
||||
this.loading = false;
|
||||
});
|
||||
} else {
|
||||
this.isCreate = true;
|
||||
@ -117,15 +204,13 @@ export default {
|
||||
this.runPlanList.forEach(elem => {
|
||||
this.runPlanDict[elem.id] = elem.name;
|
||||
});
|
||||
// this.dialogShow = true;
|
||||
this.loading = false;
|
||||
}).catch(() => {
|
||||
this.$messageBox(this.$t('planMonitor.openRunPlan.getRunPlanListFail'));
|
||||
this.loading = false;
|
||||
});
|
||||
}
|
||||
},
|
||||
// dispatchOperate(){
|
||||
// this.$refs[operateObj.dialogName][operateObj.operate](operateObj.params);
|
||||
// },
|
||||
dispatchDialog() {
|
||||
this.$refs['createEmptyPlan'].doShow();
|
||||
},
|
||||
@ -168,12 +253,7 @@ export default {
|
||||
}).then(() => {
|
||||
deleteRunPlan(row.id).then(Response => {
|
||||
this.$message.success(this.$t('planMonitor.openRunPlan.deleteSuccess'));
|
||||
// if (row.id === this.$route.query.planId) {
|
||||
// const query = { skinCode: this.$route.query.skinCode, mapId: this.$route.query.mapId };
|
||||
// this.$router.push({ path: `${UrlConfig.plan.tool}`, query: query });
|
||||
// }
|
||||
this.refresh();
|
||||
// this.doClose();
|
||||
}).catch(() => {
|
||||
this.$messageBox(this.$t('tip.deleteOperationGraphFailed'));
|
||||
});
|
||||
@ -262,7 +342,10 @@ export default {
|
||||
</style>
|
||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||
@import "src/styles/mixin.scss";
|
||||
|
||||
.joylink-card{
|
||||
height: 100%;
|
||||
overflow: auto;
|
||||
}
|
||||
.el-button+.el-button{
|
||||
margin-top:5px;
|
||||
margin-left: 0px;
|
||||
|
@ -3,7 +3,7 @@
|
||||
<menu-bar ref="menuBar" :plan-convert="PlanConvert" @dispatchDialog="dispatchDialog" />
|
||||
<schedule
|
||||
ref="schedule"
|
||||
:skin-code="skinCode"
|
||||
:line-code="lineCode"
|
||||
:plan-convert="PlanConvert"
|
||||
:max-height="height"
|
||||
:max-width="width"
|
||||
@ -91,8 +91,8 @@ export default {
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
skinCode() {
|
||||
return this.$route.query.skinCode || '02';
|
||||
lineCode() {
|
||||
return this.$route.query.lineCode || '02';
|
||||
},
|
||||
width() {
|
||||
return this.$store.state.app.width;
|
||||
@ -102,7 +102,7 @@ export default {
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.PlanConvert = this.$theme.loadPlanConvert(this.skinCode);
|
||||
this.PlanConvert = this.$theme.loadPlanConvert(this.lineCode);
|
||||
|
||||
},
|
||||
mounted() {
|
||||
|
@ -144,188 +144,188 @@ import { formatTime, formatName } from '@/utils/runPlan';
|
||||
import { getUID } from '@/jmap/utils/Uid';
|
||||
|
||||
export default {
|
||||
name: 'AddTask',
|
||||
components: {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
dialogShow: false,
|
||||
loading: false,
|
||||
isPlan: false,
|
||||
showDefault: true,
|
||||
stopStationMap: {},
|
||||
params: {},
|
||||
addModel: {
|
||||
taskIndex: '',
|
||||
addToFront: false,
|
||||
routingCode: '',
|
||||
endStationCode: '',
|
||||
startStationCode: '',
|
||||
endSectionCode: '',
|
||||
startSectionCode: '',
|
||||
startTime: '00:00:00',
|
||||
endTime: '',
|
||||
planId: '',
|
||||
tripNumber: '',
|
||||
serviceNumber: '',
|
||||
defaultStopTime: '30',
|
||||
defaultSpeedLevel: 'level3',
|
||||
routingList: [],
|
||||
arriveConfigList: []
|
||||
},
|
||||
tripNumberList: [{ value: '', label: this.$t('planMonitor.automatic') }],
|
||||
defaultStopTimeList: [{ value: '30', label: this.$t('planMonitor.default') }, { value: '0', label: '0' }],
|
||||
defaultSpeedLevelList: [{ value: 'level3', label: this.$t('planMonitor.default') }]
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
title() {
|
||||
return this.$t('planMonitor.addTask');
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'addModel.routingCode': function () {
|
||||
this.computedDetailList();
|
||||
},
|
||||
'addModel.startTime': function () {
|
||||
this.computedDetailList();
|
||||
},
|
||||
'addModel.defaultStopTime': function () {
|
||||
this.computedDetailList();
|
||||
},
|
||||
'addModel.defaultSpeedLevel': function () {
|
||||
this.computedDetailList();
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
loadInitData(params) {
|
||||
this.isPlan = params.isPlan;
|
||||
this.addModel.taskIndex = getUID('task_');
|
||||
this.addModel.serviceNumber = params.serviceNumber;
|
||||
this.addModel.planId = this.$route.query.planId;
|
||||
name: 'AddTask',
|
||||
components: {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
dialogShow: false,
|
||||
loading: false,
|
||||
isPlan: false,
|
||||
showDefault: true,
|
||||
stopStationMap: {},
|
||||
params: {},
|
||||
addModel: {
|
||||
taskIndex: '',
|
||||
addToFront: false,
|
||||
routingCode: '',
|
||||
endStationCode: '',
|
||||
startStationCode: '',
|
||||
endSectionCode: '',
|
||||
startSectionCode: '',
|
||||
startTime: '00:00:00',
|
||||
endTime: '',
|
||||
planId: '',
|
||||
tripNumber: '',
|
||||
serviceNumber: '',
|
||||
defaultStopTime: '30',
|
||||
defaultSpeedLevel: 'level3',
|
||||
routingList: [],
|
||||
arriveConfigList: []
|
||||
},
|
||||
tripNumberList: [{ value: '', label: this.$t('planMonitor.automatic') }],
|
||||
defaultStopTimeList: [{ value: '30', label: this.$t('planMonitor.default') }, { value: '0', label: '0' }],
|
||||
defaultSpeedLevelList: [{ value: 'level3', label: this.$t('planMonitor.default') }]
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
title() {
|
||||
return this.$t('planMonitor.addTask');
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'addModel.routingCode': function () {
|
||||
this.computedDetailList();
|
||||
},
|
||||
'addModel.startTime': function () {
|
||||
this.computedDetailList();
|
||||
},
|
||||
'addModel.defaultStopTime': function () {
|
||||
this.computedDetailList();
|
||||
},
|
||||
'addModel.defaultSpeedLevel': function () {
|
||||
this.computedDetailList();
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
loadInitData(params) {
|
||||
this.isPlan = params.isPlan;
|
||||
this.addModel.taskIndex = getUID('task_');
|
||||
this.addModel.serviceNumber = params.serviceNumber;
|
||||
this.addModel.planId = this.$route.query.planId;
|
||||
|
||||
const planId = this.$route.query.planId;
|
||||
if (planId) {
|
||||
getRoutingList(planId).then(resp => {
|
||||
this.addModel.routingList = resp.data;
|
||||
});
|
||||
}
|
||||
const planId = this.$route.query.planId;
|
||||
if (planId) {
|
||||
getRoutingList(planId).then(resp => {
|
||||
this.addModel.routingList = resp.data;
|
||||
});
|
||||
}
|
||||
|
||||
const mapId = this.$route.query.mapId;
|
||||
if (skinCode) {
|
||||
getStationRunning(mapId).then(resp => { // 查询是否有站间运行时间
|
||||
const list = resp.data;
|
||||
list.forEach(elem => {
|
||||
this.stopStationMap[[elem.startSectionCode, elem.endSectionCode].toString()] = elem;
|
||||
});
|
||||
if (list && list.length) {
|
||||
list.forEach(elem => {
|
||||
if (!elem.runPlanLevelVO) {
|
||||
this.$alert(`${this.$t('planMonitor.tipOperationTime')}`, {
|
||||
confirmButtonText: this.$t('global.confirm'),
|
||||
callback: action => {
|
||||
this.doClose();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
const mapId = this.$route.query.mapId;
|
||||
if (mapId) {
|
||||
getStationRunning(mapId).then(resp => { // 查询是否有站间运行时间
|
||||
const list = resp.data;
|
||||
list.forEach(elem => {
|
||||
this.stopStationMap[[elem.startSectionCode, elem.endSectionCode].toString()] = elem;
|
||||
});
|
||||
if (list && list.length) {
|
||||
list.forEach(elem => {
|
||||
if (!elem.runPlanLevelVO) {
|
||||
this.$alert(`${this.$t('planMonitor.tipOperationTime')}`, {
|
||||
confirmButtonText: this.$t('global.confirm'),
|
||||
callback: action => {
|
||||
this.doClose();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
doShow(params) {
|
||||
this.loadInitData(params);
|
||||
this.dialogShow = true;
|
||||
},
|
||||
doClose() {
|
||||
this.loading = false;
|
||||
this.dialogShow = false;
|
||||
},
|
||||
formatName(code) {
|
||||
return formatName(code);
|
||||
},
|
||||
computedTimeByString(timeStr) {
|
||||
const bTime = +new Date(`2019-01-01 00:00:00`);
|
||||
const eTime = +new Date(`2019-01-01 ${timeStr}`);
|
||||
return Number(eTime) - Number(bTime);
|
||||
},
|
||||
compuntedRunTime(list, index, runLevel) {
|
||||
let runTime = 0;
|
||||
if (index < list.length - 1) {
|
||||
const stopStationObj = this.stopStationMap[[list[index].sectionCode, list[index + 1].sectionCode].toString()];
|
||||
if (stopStationObj) {
|
||||
if (stopStationObj.runPlanLevelVO) {
|
||||
runTime = parseInt(stopStationObj.runPlanLevelVO[runLevel]);
|
||||
} else {
|
||||
this.$messageBox(this.$t('planMonitor.addTaskHint1')+stopStationObj.startSectionCode+this.$t('planMonitor.addTaskHint2')+stopStationObj.endSectionCode+this.$t('planMonitor.addTaskHint3'));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
doShow(params) {
|
||||
this.loadInitData(params);
|
||||
this.dialogShow = true;
|
||||
},
|
||||
doClose() {
|
||||
this.loading = false;
|
||||
this.dialogShow = false;
|
||||
},
|
||||
formatName(code) {
|
||||
return formatName(code);
|
||||
},
|
||||
computedTimeByString(timeStr) {
|
||||
const bTime = +new Date(`2019-01-01 00:00:00`);
|
||||
const eTime = +new Date(`2019-01-01 ${timeStr}`);
|
||||
return Number(eTime) - Number(bTime);
|
||||
},
|
||||
compuntedRunTime(list, index, runLevel) {
|
||||
let runTime = 0;
|
||||
if (index < list.length - 1) {
|
||||
const stopStationObj = this.stopStationMap[[list[index].sectionCode, list[index + 1].sectionCode].toString()];
|
||||
if (stopStationObj) {
|
||||
if (stopStationObj.runPlanLevelVO) {
|
||||
runTime = parseInt(stopStationObj.runPlanLevelVO[runLevel]);
|
||||
} else {
|
||||
this.$messageBox(this.$t('planMonitor.addTaskHint1') + stopStationObj.startSectionCode + this.$t('planMonitor.addTaskHint2') + stopStationObj.endSectionCode + this.$t('planMonitor.addTaskHint3'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return runTime;
|
||||
},
|
||||
changeStopTime(indexs, time) {
|
||||
let tempTime = this.computedTimeByString(this.addModel.startTime) / 1000 - 30;
|
||||
const runLevel = this.addModel.defaultSpeedLevel || 'level3'; // 默认等级三
|
||||
this.addModel.arriveConfigList.forEach((elem, index) => {
|
||||
if (indexs == index) {
|
||||
elem.stopTime = time ? Number(time) : 0;
|
||||
}
|
||||
elem.arriveTime = index ? formatTime(tempTime) : '';
|
||||
elem.departureTime = index == this.addModel.arriveConfigList.length - 1 ? '' : formatTime(tempTime + elem.stopTime);
|
||||
elem.speedLevel = this.addModel.defaultSpeedLevel == 'level3' ? this.$t('planMonitor.default') : '';
|
||||
tempTime = tempTime + elem.stopTime + this.compuntedRunTime(this.addModel.arriveConfigList, index, runLevel);
|
||||
});
|
||||
this.addModel.endTime = formatTime(tempTime - this.addModel.arriveConfigList[this.addModel.arriveConfigList.length - 1].stopTime);
|
||||
},
|
||||
computedDetailList() {
|
||||
if (this.addModel.routingCode) {
|
||||
querySectionListByRouting({ planId: this.$route.query.planId, routingCode: this.addModel.routingCode }).then(resp => {
|
||||
const list = resp.data;
|
||||
const waitTime = Number(this.addModel.defaultStopTime) || 0; // 默认三十秒
|
||||
let tempTime = this.computedTimeByString(this.addModel.startTime) / 1000 - 30;
|
||||
const runLevel = this.addModel.defaultSpeedLevel || 'level3'; // 默认等级三
|
||||
list.forEach((elem, index) => {
|
||||
elem.arriveTime = index ? formatTime(tempTime) : '';
|
||||
elem.departureTime = index == list.length - 1 ? '' : formatTime(tempTime + waitTime);
|
||||
elem.speedLevel = this.addModel.defaultSpeedLevel == 'level3' ? this.$t('planMonitor.default') : '';
|
||||
elem.stopTime = this.addModel.defaultStopTime != '0' ? 30 : 0;
|
||||
tempTime = tempTime + waitTime + this.compuntedRunTime(list, index, runLevel);
|
||||
});
|
||||
return runTime;
|
||||
},
|
||||
changeStopTime(indexs, time) {
|
||||
let tempTime = this.computedTimeByString(this.addModel.startTime) / 1000 - 30;
|
||||
const runLevel = this.addModel.defaultSpeedLevel || 'level3'; // 默认等级三
|
||||
this.addModel.arriveConfigList.forEach((elem, index) => {
|
||||
if (indexs == index) {
|
||||
elem.stopTime = time ? Number(time) : 0;
|
||||
}
|
||||
elem.arriveTime = index ? formatTime(tempTime) : '';
|
||||
elem.departureTime = index == this.addModel.arriveConfigList.length - 1 ? '' : formatTime(tempTime + elem.stopTime);
|
||||
elem.speedLevel = this.addModel.defaultSpeedLevel == 'level3' ? this.$t('planMonitor.default') : '';
|
||||
tempTime = tempTime + elem.stopTime + this.compuntedRunTime(this.addModel.arriveConfigList, index, runLevel);
|
||||
});
|
||||
this.addModel.endTime = formatTime(tempTime - this.addModel.arriveConfigList[this.addModel.arriveConfigList.length - 1].stopTime);
|
||||
},
|
||||
computedDetailList() {
|
||||
if (this.addModel.routingCode) {
|
||||
querySectionListByRouting({ planId: this.$route.query.planId, routingCode: this.addModel.routingCode }).then(resp => {
|
||||
const list = resp.data;
|
||||
const waitTime = Number(this.addModel.defaultStopTime) || 0; // 默认三十秒
|
||||
let tempTime = this.computedTimeByString(this.addModel.startTime) / 1000 - 30;
|
||||
const runLevel = this.addModel.defaultSpeedLevel || 'level3'; // 默认等级三
|
||||
list.forEach((elem, index) => {
|
||||
elem.arriveTime = index ? formatTime(tempTime) : '';
|
||||
elem.departureTime = index == list.length - 1 ? '' : formatTime(tempTime + waitTime);
|
||||
elem.speedLevel = this.addModel.defaultSpeedLevel == 'level3' ? this.$t('planMonitor.default') : '';
|
||||
elem.stopTime = this.addModel.defaultStopTime != '0' ? 30 : 0;
|
||||
tempTime = tempTime + waitTime + this.compuntedRunTime(list, index, runLevel);
|
||||
});
|
||||
|
||||
this.addModel.arriveConfigList = list;
|
||||
this.addModel.endTime = formatTime(tempTime - list[list.length - 1].stopTime);
|
||||
});
|
||||
}
|
||||
},
|
||||
handleClick(row, column, event) {
|
||||
this.addModel.startStationCode = row.startStationCode;
|
||||
this.addModel.endStationCode = row.endStationCode;
|
||||
this.addModel.startSectionCode = row.startSectionCode;
|
||||
this.addModel.endSectionCode = row.endSectionCode;
|
||||
this.addModel.routingCode = row.code;
|
||||
},
|
||||
handleCommit() {
|
||||
if (this.isPlan) {
|
||||
// 计划添加任务
|
||||
this.$emit('dispatchOperate', { dialogName: 'editPlanningTrain', operate: 'handleConfirmAddTask', params: Object.assign({}, this.addModel) });
|
||||
} else {
|
||||
// 直接添加任务
|
||||
addPlanTrip(this.addModel).then(resp => {
|
||||
// this.$emit('dispatchOperate', {
|
||||
// dialogName: 'openRunPlan', operate: 'loadRunPlanData', params: Object.assign({refresh: true}, this.$route.query)
|
||||
// });
|
||||
this.$emit('refresh');
|
||||
this.$message.success(this.$t('tip.addTaskSuccessfully'));
|
||||
}).catch(() => {
|
||||
this.$messageBox(this.$t('tip.addTaskFailed'));
|
||||
});
|
||||
}
|
||||
this.addModel.arriveConfigList = list;
|
||||
this.addModel.endTime = formatTime(tempTime - list[list.length - 1].stopTime);
|
||||
});
|
||||
}
|
||||
},
|
||||
handleClick(row, column, event) {
|
||||
this.addModel.startStationCode = row.startStationCode;
|
||||
this.addModel.endStationCode = row.endStationCode;
|
||||
this.addModel.startSectionCode = row.startSectionCode;
|
||||
this.addModel.endSectionCode = row.endSectionCode;
|
||||
this.addModel.routingCode = row.code;
|
||||
},
|
||||
handleCommit() {
|
||||
if (this.isPlan) {
|
||||
// 计划添加任务
|
||||
this.$emit('dispatchOperate', { dialogName: 'editPlanningTrain', operate: 'handleConfirmAddTask', params: Object.assign({}, this.addModel) });
|
||||
} else {
|
||||
// 直接添加任务
|
||||
addPlanTrip(this.addModel).then(resp => {
|
||||
// this.$emit('dispatchOperate', {
|
||||
// dialogName: 'openRunPlan', operate: 'loadRunPlanData', params: Object.assign({refresh: true}, this.$route.query)
|
||||
// });
|
||||
this.$emit('refresh');
|
||||
this.$message.success(this.$t('tip.addTaskSuccessfully'));
|
||||
}).catch(() => {
|
||||
this.$messageBox(this.$t('tip.addTaskFailed'));
|
||||
});
|
||||
}
|
||||
|
||||
this.doClose();
|
||||
}
|
||||
}
|
||||
this.doClose();
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||
|
@ -65,7 +65,6 @@
|
||||
|
||||
<script>
|
||||
import { createEmptyPlan, queryRunPlanList, postCreatePlan, importRunPlan } from '@/api/runplan';
|
||||
import { UrlConfig } from '@/router/index';
|
||||
import XLSX from 'xlsx';
|
||||
|
||||
export default {
|
||||
@ -168,7 +167,6 @@ export default {
|
||||
this.loading = true;
|
||||
postCreatePlan(this.pullModel).then(resp => {
|
||||
this.$message.success(this.$t('tip.createARunGraphSuccessfully'));
|
||||
// this.jump(resp.data, this.pullModel.name);
|
||||
this.$emit('refresh');
|
||||
this.doClose();
|
||||
}).catch((error) => {
|
||||
@ -251,10 +249,6 @@ export default {
|
||||
}, 200);
|
||||
}
|
||||
this.doClose();
|
||||
},
|
||||
jump(planId, planName) {
|
||||
const query = { skinCode: this.$route.query.skinCode, mapId: this.$route.query.mapId, planId: planId, planName: planName };
|
||||
this.$router.push({ path: `${UrlConfig.plan.tool}`, query: query });
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -30,75 +30,75 @@
|
||||
import { putRunPlanDetail } from '@/api/runplan';
|
||||
|
||||
export default {
|
||||
name: 'CreateEmptyPlan',
|
||||
components: {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeTab: 'first',
|
||||
dialogShow: false,
|
||||
loading: false,
|
||||
publishMapList: [],
|
||||
editModel: {
|
||||
planId: '',
|
||||
name: ''
|
||||
}
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
title() {
|
||||
return this.$t('planMonitor.modifyRunningDiagramName');
|
||||
},
|
||||
rules() {
|
||||
return {
|
||||
name: [
|
||||
{ required: true, message: this.$t('rules.enterTheNameOfTheRunGraph'), trigger: 'blur' }
|
||||
]
|
||||
};
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
name: 'CreateEmptyPlan',
|
||||
components: {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeTab: 'first',
|
||||
dialogShow: false,
|
||||
loading: false,
|
||||
publishMapList: [],
|
||||
editModel: {
|
||||
planId: '',
|
||||
name: ''
|
||||
}
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
title() {
|
||||
return this.$t('planMonitor.modifyRunningDiagramName');
|
||||
},
|
||||
rules() {
|
||||
return {
|
||||
name: [
|
||||
{ required: true, message: this.$t('rules.enterTheNameOfTheRunGraph'), trigger: 'blur' }
|
||||
]
|
||||
};
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
|
||||
},
|
||||
methods: {
|
||||
doShow(data) {
|
||||
this.dialogShow = true;
|
||||
if (data && data.name) {
|
||||
this.editModel.name = data.name;
|
||||
this.editModel.planId = data.id;
|
||||
}
|
||||
},
|
||||
doClose() {
|
||||
this.loading = false;
|
||||
this.dialogShow = false;
|
||||
this.editModel.name = '';
|
||||
if (this.$refs.form) {
|
||||
this.$refs.form.resetFields();
|
||||
}
|
||||
},
|
||||
handleEdit() {
|
||||
this.$refs['form'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.loading = true;
|
||||
putRunPlanDetail(this.editModel).then(resp => {
|
||||
const params = {
|
||||
dialogName: 'openRunPlan',
|
||||
operate: 'loadRunPlanData',
|
||||
params: { planId: resp.data, skinCode: this.$route.query.skinCode, planName: this.editModel.name, refresh: true }
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
doShow(data) {
|
||||
this.dialogShow = true;
|
||||
if (data && data.name) {
|
||||
this.editModel.name = data.name;
|
||||
this.editModel.planId = data.id;
|
||||
}
|
||||
},
|
||||
doClose() {
|
||||
this.loading = false;
|
||||
this.dialogShow = false;
|
||||
this.editModel.name = '';
|
||||
if (this.$refs.form) {
|
||||
this.$refs.form.resetFields();
|
||||
}
|
||||
},
|
||||
handleEdit() {
|
||||
this.$refs['form'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.loading = true;
|
||||
putRunPlanDetail(this.editModel).then(resp => {
|
||||
const params = {
|
||||
dialogName: 'openRunPlan',
|
||||
operate: 'loadRunPlanData',
|
||||
params: { planId: resp.data, lineCode: this.$route.query.lineCode, planName: this.editModel.name, refresh: true }
|
||||
};
|
||||
|
||||
this.$emit('dispatchOperate', params);
|
||||
this.$message.success(this.$t('tip.runGraphNameModifiedSuccessfully'));
|
||||
this.$emit('renewal');
|
||||
this.doClose();
|
||||
}).catch(() => {
|
||||
this.$messageBox(this.$t('tip.modifyRunGraphNameFailed'));
|
||||
this.doClose();
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
this.$emit('dispatchOperate', params);
|
||||
this.$message.success(this.$t('tip.runGraphNameModifiedSuccessfully'));
|
||||
this.$emit('renewal');
|
||||
this.doClose();
|
||||
}).catch(() => {
|
||||
this.$messageBox(this.$t('tip.modifyRunGraphNameFailed'));
|
||||
this.doClose();
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||
|
@ -102,97 +102,97 @@ import { getStationRunning, setStationRunning } from '@/api/runplan';
|
||||
import UpdateStationIntervalTime from './updateStationIntervalTime';
|
||||
|
||||
export default {
|
||||
name: 'ModifyingStationIntervalTime',
|
||||
components: {
|
||||
UpdateStationIntervalTime
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
dialogShow: false,
|
||||
loading: false,
|
||||
DirectionCodeMap: {},
|
||||
stationIntervalData: [],
|
||||
params: {},
|
||||
runSpeedLevels: {
|
||||
level1: 42,
|
||||
level2: 37,
|
||||
level3: 32,
|
||||
level4: 27,
|
||||
level5: 22
|
||||
}
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
title() {
|
||||
return this.$t('planMonitor.modifying.modifyRunLevel');
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.loadInitData();
|
||||
},
|
||||
methods: {
|
||||
formatName(code) {
|
||||
return formatName(code);
|
||||
},
|
||||
loadInitData() {
|
||||
this.DirectionCodeMap = {};
|
||||
this.$ConstSelect.DirectionCodeList.forEach(elem => {
|
||||
this.DirectionCodeMap[elem.value] = elem.label;
|
||||
});
|
||||
name: 'ModifyingStationIntervalTime',
|
||||
components: {
|
||||
UpdateStationIntervalTime
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
dialogShow: false,
|
||||
loading: false,
|
||||
DirectionCodeMap: {},
|
||||
stationIntervalData: [],
|
||||
params: {},
|
||||
runSpeedLevels: {
|
||||
level1: 42,
|
||||
level2: 37,
|
||||
level3: 32,
|
||||
level4: 27,
|
||||
level5: 22
|
||||
}
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
title() {
|
||||
return this.$t('planMonitor.modifying.modifyRunLevel');
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.loadInitData();
|
||||
},
|
||||
methods: {
|
||||
formatName(code) {
|
||||
return formatName(code);
|
||||
},
|
||||
loadInitData() {
|
||||
this.DirectionCodeMap = {};
|
||||
this.$ConstSelect.DirectionCodeList.forEach(elem => {
|
||||
this.DirectionCodeMap[elem.value] = elem.label;
|
||||
});
|
||||
|
||||
this.stationIntervalData = [];
|
||||
if (this.$route.query.skinCode) {
|
||||
getStationRunning(this.$route.query.mapId).then(resp => {
|
||||
const list = resp.data;
|
||||
list.forEach(elem => {
|
||||
elem.isEditStatus = false;
|
||||
if (!elem.runPlanLevelVO || elem.runPlanLevelVO.length <= 0) {
|
||||
elem.runPlanLevelVO = { stationRunningId: elem.id };
|
||||
Object.keys(this.runSpeedLevels).forEach(key => {
|
||||
elem.runPlanLevelVO[key] = parseInt((elem.distance / 100) / (this.runSpeedLevels[key] / 3.6));
|
||||
elem.isEditStatus = true;
|
||||
});
|
||||
}
|
||||
});
|
||||
this.stationIntervalData = list;
|
||||
});
|
||||
}
|
||||
},
|
||||
doShow(params) {
|
||||
this.params = params || {};
|
||||
this.loadInitData();
|
||||
this.dialogShow = true;
|
||||
},
|
||||
doClose() {
|
||||
this.loading = false;
|
||||
this.dialogShow = false;
|
||||
},
|
||||
handleUpdate(row) {
|
||||
this.$refs.updateStationIntervalTime.doShow(row);
|
||||
},
|
||||
handleConfirm(model) {
|
||||
this.stationIntervalData.forEach(elem => {
|
||||
if (elem.id == model.stationRunningId) {
|
||||
elem.isEditStatus = true;
|
||||
elem.runPlanLevelVO = model;
|
||||
}
|
||||
});
|
||||
},
|
||||
handleSave() {
|
||||
const data = [];
|
||||
this.stationIntervalData.forEach(elem => {
|
||||
data.push(elem.runPlanLevelVO);
|
||||
});
|
||||
setStationRunning(this.$route.query.mapId, data).then(resp => {
|
||||
this.stationIntervalData.forEach(elem => {
|
||||
elem.isEditStatus = false;
|
||||
});
|
||||
this.$message.success(this.$t('planMonitor.modifying.modifySuccess'));
|
||||
}).catch(() => {
|
||||
this.$messageBox(this.$t('planMonitor.modifying.modifyFailed'));
|
||||
});
|
||||
}
|
||||
}
|
||||
this.stationIntervalData = [];
|
||||
if (this.$route.query.lineCode) {
|
||||
getStationRunning(this.$route.query.mapId).then(resp => {
|
||||
const list = resp.data;
|
||||
list.forEach(elem => {
|
||||
elem.isEditStatus = false;
|
||||
if (!elem.runPlanLevelVO || elem.runPlanLevelVO.length <= 0) {
|
||||
elem.runPlanLevelVO = { stationRunningId: elem.id };
|
||||
Object.keys(this.runSpeedLevels).forEach(key => {
|
||||
elem.runPlanLevelVO[key] = parseInt((elem.distance / 100) / (this.runSpeedLevels[key] / 3.6));
|
||||
elem.isEditStatus = true;
|
||||
});
|
||||
}
|
||||
});
|
||||
this.stationIntervalData = list;
|
||||
});
|
||||
}
|
||||
},
|
||||
doShow(params) {
|
||||
this.params = params || {};
|
||||
this.loadInitData();
|
||||
this.dialogShow = true;
|
||||
},
|
||||
doClose() {
|
||||
this.loading = false;
|
||||
this.dialogShow = false;
|
||||
},
|
||||
handleUpdate(row) {
|
||||
this.$refs.updateStationIntervalTime.doShow(row);
|
||||
},
|
||||
handleConfirm(model) {
|
||||
this.stationIntervalData.forEach(elem => {
|
||||
if (elem.id == model.stationRunningId) {
|
||||
elem.isEditStatus = true;
|
||||
elem.runPlanLevelVO = model;
|
||||
}
|
||||
});
|
||||
},
|
||||
handleSave() {
|
||||
const data = [];
|
||||
this.stationIntervalData.forEach(elem => {
|
||||
data.push(elem.runPlanLevelVO);
|
||||
});
|
||||
setStationRunning(this.$route.query.mapId, data).then(resp => {
|
||||
this.stationIntervalData.forEach(elem => {
|
||||
elem.isEditStatus = false;
|
||||
});
|
||||
this.$message.success(this.$t('planMonitor.modifying.modifySuccess'));
|
||||
}).catch(() => {
|
||||
this.$messageBox(this.$t('planMonitor.modifying.modifyFailed'));
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||
|
@ -347,13 +347,13 @@ export default {
|
||||
}
|
||||
},
|
||||
loadInitData(params) {
|
||||
const skinCode = this.$route.query.skinCode;
|
||||
const lineCode = this.$route.query.lineCode;
|
||||
const mapId = this.$route.query.mapId;
|
||||
this.isPlan = params.isPlan;
|
||||
this.editModel.taskIndex = params.taskIndex;
|
||||
this.editModel.serviceNumber = params.serviceNumber;
|
||||
this.editModel.tripNumber = params.tripNumber;
|
||||
this.PlanConvert = this.$theme.loadPlanConvert(skinCode);
|
||||
this.PlanConvert = this.$theme.loadPlanConvert(lineCode);
|
||||
|
||||
const editData = this.$store.state.runPlan.editData[this.editModel.serviceNumber];
|
||||
if (editData) {
|
||||
|
@ -50,117 +50,117 @@ import { UrlConfig } from '@/router/index';
|
||||
import EditPlanName from './editPlanName';
|
||||
|
||||
export default {
|
||||
name: 'OpenRunPlan',
|
||||
components: {
|
||||
EditPlanName
|
||||
},
|
||||
props: {
|
||||
skinCode: {
|
||||
type: String,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
dialogShow: false,
|
||||
loading: false,
|
||||
height: 260,
|
||||
// planId: '',
|
||||
// planName: '',
|
||||
type: 'add',
|
||||
// defaultShowKeys: [],
|
||||
runPlanList: [],
|
||||
runPlanDict: {}
|
||||
// defaultProps: {
|
||||
// label: 'name'
|
||||
// }
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
show() {
|
||||
return this.dialogShow;
|
||||
},
|
||||
title() {
|
||||
return this.$t('planMonitor.openRunPlan.runPlanList');
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.loadRunPlanData({
|
||||
planId: this.$route.query.planId,
|
||||
skinCode: this.$route.query.skinCode,
|
||||
planName: this.$route.query.planName
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
// handleNodeClick(data) {
|
||||
// this.planId = data.id;
|
||||
// this.planName = data.name;
|
||||
// },
|
||||
loadRunPlanData({ refresh, planId, skinCode, planName }) {
|
||||
if (refresh) {
|
||||
this.$store.dispatch('runPlan/refresh');
|
||||
} else {
|
||||
const query = { skinCode: skinCode, mapId: this.$route.query.mapId, planId: planId, planName: planName };
|
||||
this.$router.push({ path: `${UrlConfig.plan.tool}`, query: query });
|
||||
}
|
||||
},
|
||||
getRunPlanList() {
|
||||
getRpListByMapId(this.$route.query.mapId).then((resp) => {
|
||||
this.runPlanList = resp.data;
|
||||
this.runPlanList.forEach(elem => {
|
||||
this.runPlanDict[elem.id] = elem.name;
|
||||
});
|
||||
this.dialogShow = true;
|
||||
}).catch(() => {
|
||||
this.$messageBox(this.$t('planMonitor.openRunPlan.getRunPlanListFail'));
|
||||
});
|
||||
},
|
||||
doShow(data) {
|
||||
this.type = data.type || 'add';
|
||||
this.getRunPlanList();
|
||||
},
|
||||
doClose() {
|
||||
this.dialogShow = false;
|
||||
// this.planId = '';
|
||||
// this.planName = '';
|
||||
},
|
||||
// 跳转到对应运行图
|
||||
handleConfirm(row) {
|
||||
this.loadRunPlanData({
|
||||
planId: row.id,
|
||||
skinCode: this.$route.query.skinCode,
|
||||
planName: row.name
|
||||
});
|
||||
this.doClose();
|
||||
},
|
||||
// 删除运行图
|
||||
handleDelete(row) {
|
||||
this.$confirm(this.$t('planMonitor.openRunPlan.confirmDeleteRunPlan'), this.$t('tip.hint'), {
|
||||
confirmButtonText: this.$t('tip.confirm'),
|
||||
cancelButtonText: this.$t('tip.cancel'),
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
deleteRunPlan(row.id).then(Response => {
|
||||
this.$message.success(this.$t('planMonitor.openRunPlan.deleteSuccess'));
|
||||
if (row.id === this.$route.query.planId) {
|
||||
const query = { skinCode: this.$route.query.skinCode, mapId: this.$route.query.mapId };
|
||||
this.$router.push({ path: `${UrlConfig.plan.tool}`, query: query });
|
||||
}
|
||||
this.doClose();
|
||||
}).catch(() => {
|
||||
this.$messageBox(this.$t('tip.deleteOperationGraphFailed'));
|
||||
});
|
||||
}).catch(() => { });
|
||||
},
|
||||
// 修改运行图名称
|
||||
handleEdit(row) {
|
||||
if (row.id && row.name) {
|
||||
this.$refs.editPlan.doShow({id: row.id, name: row.name});
|
||||
} else {
|
||||
this.$message.info(this.$t('planMonitor.openRunPlan.pleaseSelectRunplan'));
|
||||
}
|
||||
}
|
||||
}
|
||||
name: 'OpenRunPlan',
|
||||
components: {
|
||||
EditPlanName
|
||||
},
|
||||
props: {
|
||||
skinCode: {
|
||||
type: String,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
dialogShow: false,
|
||||
loading: false,
|
||||
height: 260,
|
||||
// planId: '',
|
||||
// planName: '',
|
||||
type: 'add',
|
||||
// defaultShowKeys: [],
|
||||
runPlanList: [],
|
||||
runPlanDict: {}
|
||||
// defaultProps: {
|
||||
// label: 'name'
|
||||
// }
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
show() {
|
||||
return this.dialogShow;
|
||||
},
|
||||
title() {
|
||||
return this.$t('planMonitor.openRunPlan.runPlanList');
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.loadRunPlanData({
|
||||
planId: this.$route.query.planId,
|
||||
skinCode: this.$route.query.skinCode,
|
||||
planName: this.$route.query.planName
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
// handleNodeClick(data) {
|
||||
// this.planId = data.id;
|
||||
// this.planName = data.name;
|
||||
// },
|
||||
loadRunPlanData({ refresh, planId, skinCode, planName }) {
|
||||
if (refresh) {
|
||||
this.$store.dispatch('runPlan/refresh');
|
||||
} else {
|
||||
const query = { skinCode: skinCode, mapId: this.$route.query.mapId, planId: planId, planName: planName };
|
||||
this.$router.push({ path: `${UrlConfig.plan.tool}`, query: query });
|
||||
}
|
||||
},
|
||||
getRunPlanList() {
|
||||
getRpListByMapId(this.$route.query.mapId).then((resp) => {
|
||||
this.runPlanList = resp.data;
|
||||
this.runPlanList.forEach(elem => {
|
||||
this.runPlanDict[elem.id] = elem.name;
|
||||
});
|
||||
this.dialogShow = true;
|
||||
}).catch(() => {
|
||||
this.$messageBox(this.$t('planMonitor.openRunPlan.getRunPlanListFail'));
|
||||
});
|
||||
},
|
||||
doShow(data) {
|
||||
this.type = data.type || 'add';
|
||||
this.getRunPlanList();
|
||||
},
|
||||
doClose() {
|
||||
this.dialogShow = false;
|
||||
// this.planId = '';
|
||||
// this.planName = '';
|
||||
},
|
||||
// 跳转到对应运行图
|
||||
handleConfirm(row) {
|
||||
this.loadRunPlanData({
|
||||
planId: row.id,
|
||||
skinCode: this.$route.query.skinCode,
|
||||
planName: row.name
|
||||
});
|
||||
this.doClose();
|
||||
},
|
||||
// 删除运行图
|
||||
handleDelete(row) {
|
||||
this.$confirm(this.$t('planMonitor.openRunPlan.confirmDeleteRunPlan'), this.$t('tip.hint'), {
|
||||
confirmButtonText: this.$t('tip.confirm'),
|
||||
cancelButtonText: this.$t('tip.cancel'),
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
deleteRunPlan(row.id).then(Response => {
|
||||
this.$message.success(this.$t('planMonitor.openRunPlan.deleteSuccess'));
|
||||
if (row.id === this.$route.query.planId) {
|
||||
const query = { skinCode: this.$route.query.skinCode, mapId: this.$route.query.mapId };
|
||||
this.$router.push({ path: `${UrlConfig.plan.tool}`, query: query });
|
||||
}
|
||||
this.doClose();
|
||||
}).catch(() => {
|
||||
this.$messageBox(this.$t('tip.deleteOperationGraphFailed'));
|
||||
});
|
||||
}).catch(() => { });
|
||||
},
|
||||
// 修改运行图名称
|
||||
handleEdit(row) {
|
||||
if (row.id && row.name) {
|
||||
this.$refs.editPlan.doShow({id: row.id, name: row.name});
|
||||
} else {
|
||||
this.$message.info(this.$t('planMonitor.openRunPlan.pleaseSelectRunplan'));
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
|
@ -37,7 +37,7 @@ export default {
|
||||
DataTable
|
||||
},
|
||||
props: {
|
||||
skinCode: {
|
||||
lineCode: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
@ -367,7 +367,7 @@ export default {
|
||||
this.mapName = `${resp.data.name} (${this.$route.query.planName || ''})`;
|
||||
});
|
||||
}
|
||||
this.planConvert = this.$theme.loadPlanConvert(this.skinCode);
|
||||
this.planConvert = this.$theme.loadPlanConvert(this.lineCode);
|
||||
this.$store.dispatch('runPlan/clear').then(() => {
|
||||
this.loadInitChart().then(() => {
|
||||
if (this.$route.query.mapId) {
|
||||
|
@ -3,7 +3,7 @@
|
||||
<menu-bar ref="menuBar" :plan-convert="PlanConvert" @dispatchDialog="dispatchDialog" />
|
||||
<schedule
|
||||
ref="schedule"
|
||||
:skin-code="skinCode"
|
||||
:line-code="lineCode"
|
||||
:plan-convert="PlanConvert"
|
||||
:max-height="height"
|
||||
:max-width="width"
|
||||
@ -91,8 +91,8 @@ export default {
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
skinCode() {
|
||||
return this.$route.query.skinCode || '02';
|
||||
lineCode() {
|
||||
return this.$route.query.lineCode || '02';
|
||||
},
|
||||
width() {
|
||||
return this.$store.state.app.width;
|
||||
@ -102,7 +102,7 @@ export default {
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.PlanConvert = this.$theme.loadPlanConvert(this.skinCode);
|
||||
this.PlanConvert = this.$theme.loadPlanConvert(this.lineCode);
|
||||
},
|
||||
methods: {
|
||||
setPosition() {
|
||||
|
@ -41,7 +41,6 @@ export default {
|
||||
id: '',
|
||||
name: '',
|
||||
cityCode: '',
|
||||
skinCode: '',
|
||||
project: false,
|
||||
projectCode: ''
|
||||
},
|
||||
@ -59,7 +58,6 @@ export default {
|
||||
this.formModel.id = row.id;
|
||||
this.formModel.name = row.name;
|
||||
this.formModel.cityCode = row.cityCode;
|
||||
this.formModel.skinCode = row.skinCode;
|
||||
},
|
||||
doSave() {
|
||||
this.$refs['form'].validate((valid) => {
|
||||
|
@ -202,8 +202,6 @@ export default {
|
||||
});
|
||||
}
|
||||
return lastData.status;
|
||||
// let explanation=lastData.explanation?'{ 说明:'+lastData.explanation+'}':'';
|
||||
// return lastData.status+explanation;
|
||||
},
|
||||
handleConfirmPublish(data) {
|
||||
publishQuest(data.id, {'scriptName':data.scriptName}).then(resp => {
|
||||
@ -261,7 +259,6 @@ export default {
|
||||
}).catch(error => {
|
||||
this.$messageBox(`${this.$t('scriptRecord.createSimulationFail')}: ${error.message}`);
|
||||
});
|
||||
// skinCode=02&group=16-128-757&prdType=02&mapId=18&code=JLFZZX-1&goodsId=&try=0
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -237,7 +237,7 @@ export default {
|
||||
const room = this.room;
|
||||
await putJointTrainingSimulationEntrance(room.group);
|
||||
const rest = await getPublishMapInfo(room.mapId);
|
||||
const query = { skinCode: rest.data.lineCode, mapId: room.mapId, group: room.group, subSystem: this.$route.query.subSystem };
|
||||
const query = { lineCode: rest.data.lineCode, mapId: room.mapId, group: room.group, subSystem: this.$route.query.subSystem };
|
||||
this.$router.replace({ path: `/jointTraining`, query: query });
|
||||
launchFullscreen();
|
||||
// 清空房间信息
|
||||
|
Loading…
Reference in New Issue
Block a user