Merge branch 'test_dispaly' of https://git.code.tencent.com/lian-cbtc/jl-client into test_dispaly

This commit is contained in:
joylink_cuiweidong 2022-10-12 11:29:55 +08:00
commit c6af3c8027
45 changed files with 3239 additions and 491 deletions

View File

@ -2,6 +2,8 @@
<div id="app">
<router-view />
<deomon-topic ref="deomonTopic" />
<deomon-list ref="deomonList" @enterQcode="qcodeEntry" />
<qcode ref="qcode" />
<img v-show="loading" :src="loadingImg" class="AppAll">
<div
v-if="!$store.state.user.baseUrl"
@ -25,11 +27,15 @@ import WindowResizeHandler from '@/mixin/WindowResizeHandler';
import LoadingImg from '@/assets/loading.gif';
import AppLoading from '@/assets/appLoading.png';
import { openIndexedDB } from '@/utils/indexedDb';
import DeomonList from '@/views/demonstration/deomonList/index';
import Qcode from '@/layout/components/Qcode.vue';
export default {
name: 'App',
components: {
DeomonTopic
DeomonTopic,
DeomonList,
Qcode
},
mixins: [
WindowResizeHandler
@ -67,6 +73,11 @@ export default {
},
'$store.state.app.animationsCloseCount': function(val) {
this.loading = false;
},
'$route': function(val) {
if (val.path == '/simulation/multiplayerSimulation') {
this.quickEntry();
}
}
},
created() {
@ -100,6 +111,12 @@ export default {
this.$store.dispatch('subscribe_un', {});
},
methods: {
quickEntry() {
this.$refs.deomonList.doShow();
},
qcodeEntry() {
this.$refs.qcode.doShow();
},
resizeHandler() {
this.$store.dispatch('app/resize', { width: this._clientWidth, height: this._clientHeight });
},

View File

@ -0,0 +1,36 @@
import request from '@/utils/request.js'
/** 获取文件列表 */
export function getFileList(params) {
return request({
url: `/api/minio/file/list`,
method: 'get',
params,
})
}
/** 检查资源是否已存在 */
export function checkIsExist(params) {
return request({
url: `/api/minio/checkIsExist`,
method: 'get',
params,
})
}
/** 保存文件 */
export function saveFileInfo(data) {
return request({
url: `/api/minio/file/save`,
method: 'post',
data,
})
}
/** 删除文件 */
export function deleteFile(id) {
return request({
url: `api/minio/file/del/${id}`,
method: 'delete',
})
}

View File

@ -537,3 +537,11 @@ export function queryPaTimedList(group, params) {
params
});
}
/** 创建仿真 */
export function createSimulation(data) {
return request({
url: `/simulation/new`,
method: 'post',
data
});
}

View File

@ -75,4 +75,34 @@ export function getSubSystemByProjectCode() {
method: 'get'
});
}
/** 创建地图系统 */
export function createMapSystem(data) {
return request({
url: `/api/mapSystem/new`,
method: 'post',
data
});
}
/** 列表查询地图系统 */
export function queryMapSystemList(params) {
return request({
url: `/api/mapSystem/new/list`,
method: 'get',
params
});
}
/** 更新地图系统 */
export function updateMapSystem(data) {
return request({
url: `/api/mapSystem/new/${data.id}`,
method: 'post',
data
});
}
/** 删除地图系统 */
export function deleteMapSystem(id) {
return request({
url: `/api/mapSystem/new/${id}`,
method: 'delete'
});
}

View File

@ -29,6 +29,7 @@ import systemGenerate from './systemGenerate';
import login from './login';
import designPlatform from './designPlatform';
import trainingManage from './trainingManage';
import newRouter from './newRouter';
export default {
enLocale,
@ -61,5 +62,6 @@ export default {
systemGenerate,
login,
designPlatform,
trainingManage
trainingManage,
newRouter
};

View File

@ -0,0 +1,44 @@
export default {
simulation: 'simulation',
multiplayerSimulation: 'Many simulation',
regulationSimulation: 'Regulation of the simulation',
teachingManagement: 'teaching management',
classroom: 'classroom management',
student: 'student management',
theory: 'The theory of management',
training: 'Practical teaching management',
exam: 'examination management',
lineDesign: 'track design',
case: 'case',
SystemManagement: 'System management',
SystemDataManagement: 'System data management',
dataDictionary: 'Data dictionary',
SystemAccountManagement: 'System Account Management',
ThirdPartyAccounts: 'Configuring Third-Party Accounts',
OnlineInformationManagement: 'Online information management',
loginUser: 'Online users',
cacheDataManage: 'Cache data management',
simulationManage: 'simulation management',
companyUserManage: 'Organization User Management',
companyManage: 'Company manage',
lineDataManage: 'Line data management',
lineTypeManage: 'Line type management',
linePacketManage: 'Line packet management',
teachingDataManage: 'Teaching data management',
theoryData: 'Theoretical topic data management',
trainingDataManage: 'Training data management',
examData: 'Examination data management',
userTrainingDataManage: 'User training data management',
userExamData: 'User test data management',
projectDataManage: 'Project data management',
projectManage: 'Project Manage',
projectConfig: 'Project client configuration',
projectDeviceManage: 'Project equipment management',
permissionDataManage: 'Permission Data Management',
permissionManage: 'Permission',
authorityTransferManage: 'Privilege distribution management',
userRulesManage: 'User Rights Statistics',
fileManage: 'File Manage',
frontResourceManage: 'Front-end Resource Management',
iscsPrerecordManage: 'ISCS Advance record management'
};

View File

@ -1,110 +1,111 @@
export default {
homePage: 'Home',
homePage: 'Home',
mapManage: 'Map',
skinManage: 'Skin management',
mapDraw: 'Map draw',
runPlanManage: 'Run plan',
productEdit: 'Product editor',
mapManage: 'Map',
skinManage: 'Skin management',
mapDraw: 'Map draw',
runPlanManage: 'Run plan',
productEdit: 'Product editor',
newDesignEditor: 'Editor',
newDesignEditorList: 'Editor List',
newDesignDraftEditorList: 'Draft Editor List',
uploadPdf: 'Upload Pdf',
fileManage:'File Manage',
newDesignEditor: 'Editor',
newDesignEditorList: 'Editor List',
newDesignDraftEditorList: 'Draft Editor List',
uploadPdf: 'Upload Pdf',
fileManage: 'File Manage',
designhomePage: 'Public map',
designUserPage: 'Personal map',
newDesignUserPage: 'Personal map',
designhomePage: 'Public map',
designUserPage: 'Personal map',
newDesignUserPage: 'Personal map',
lessaonManage: 'Lesson',
lessonEdit: 'Lesson editor',
trainingRecord: 'Trainning recording',
trainingRule: 'Training rules',
trainingManage: 'Training management',
taskManage: 'Task management',
scriptManage: 'Script',
lessaonManage: 'Lesson',
lessonEdit: 'Lesson editor',
trainingRecord: 'Trainning recording',
trainingRule: 'Training rules',
trainingManage: 'Training management',
taskManage: 'Task management',
scriptManage: 'Script',
teachSystem: 'Teaching',
teachSystem: 'Teaching',
examSystem: 'Examination',
examSystem: 'Examination',
demonstrationSystem: 'Simulation',
demonstrationSystem: 'Simulation',
dpSystem: 'Large screen',
dpSystem: 'Large screen',
planSystem: 'Lian plan',
planSystem: 'Lian plan',
replayManage: 'Playback',
replayManage: 'Playback',
permissionManage: 'Permission',
selfPermission: 'My Permission',
permissionManage: 'Permission',
selfPermission: 'My Permission',
pulishManage: 'Publication',
publishMapManage: 'Publishing map management',
productStateManage: 'Product state management',
publishLessonManage: 'Publishing lesson management',
runPlanTemplateManage: 'Template plan management',
runPlanCommonManage: 'Loading Plan Managemen',
runPlanEveryDayManage: 'Daily plan Management',
examRuleManage: 'Management of examination rules',
pulishManage: 'Publication',
publishMapManage: 'Publishing map management',
productStateManage: 'Product state management',
publishLessonManage: 'Publishing lesson management',
runPlanTemplateManage: 'Template plan management',
runPlanCommonManage: 'Loading Plan Managemen',
runPlanEveryDayManage: 'Daily plan Management',
examRuleManage: 'Management of examination rules',
orderAuthorityManage: 'Order&Authority',
commodityManage: 'Commodity management',
orderManage: 'Order management',
authorityManage: 'authority management',
authorityTransferManage: 'Privilege distribution management',
userRulesManage: 'User Rights Statistics',
addCommodity: 'Adding goods',
addOrder: 'Adding orders',
addCoursePermissions: 'Adding course permissions',
orderAuthorityManage: 'Order&Authority',
commodityManage: 'Commodity management',
orderManage: 'Order management',
authorityManage: 'authority management',
authorityTransferManage: 'Privilege distribution management',
userRulesManage: 'User Rights Statistics',
addCommodity: 'Adding goods',
addOrder: 'Adding orders',
addCoursePermissions: 'Adding course permissions',
systemManage: 'System',
dataDictionary: 'Data dictionary',
dataDictionaryDetails: 'Data dictionary details',
userManage: 'user management',
loginUserManage:'login user Manage',
cacheManage: 'cache management',
userTrainingManage: 'User training management',
userExamManage: 'User examination management',
userSimulationManage: 'User simulation management',
existingSimulation: 'Existence simulation management',
ibpDraw: 'Ibp Draw',
trainingPlatform: 'trainingPlatform',
releaseApplication: 'Release application',
courseApplication: 'Course release application',
scriptReleaseApplication: 'Script release application',
runGraphReleaseApplication: 'Run graph release application',
subsystemGeneration: 'Subsystem generation',
newsBulletin: 'New bulletin',
notificationBulletin: 'Systematic notification',
commandDictionary: 'Command dictionary',
configLine: 'Line management',
deviceManage: 'Device management',
iscsDraw: 'Iscs Draw',
iscsSystem: 'Iscs System',
studentManage: 'Student manage',
examDetail: 'Exam detail',
raceManage: 'Race manage',
practiceManage:'Practice manage',
bankManage: 'Bank manage',
sceneManage:'Scene manage',
companyManage: 'Company manage',
authorApply: 'Grant application',
AuthorList: 'Authorization code list',
questionsRuleManage: 'Question rule manage',
preTheoryData: 'Pre Theory Data',
boardManage: 'Message Board Manage',
publishIBPManage:'publish IBP Manage',
publishISCSManage:'publish ISCS Manage',
publishTrainingManage: 'publish Training Manage',
voiceTraining: 'Voice Training',
mapGroup: 'Map Group',
drawingMange:'Drawing Mange',
projectServer: 'Project Server',
audioResourcesManage: 'Audio Resources Manage',
iscsDeviceManage: 'ISCS Device Manage',
iscsResourcesManage: 'ISCS Resources Manage',
projectManage: 'Project Manage',
frontProjectConfigManage:'Front Project Config Manage'
};
systemManage: 'System',
dataDictionary: 'Data dictionary',
dataDictionaryDetails: 'Data dictionary details',
userManage: 'user management',
loginUserManage: 'login user Manage',
cacheManage: 'cache management',
userTrainingManage: 'User training management',
userExamManage: 'User examination management',
userSimulationManage: 'User simulation management',
existingSimulation: 'Existence simulation management',
ibpDraw: 'Ibp Draw',
trainingPlatform: 'trainingPlatform',
releaseApplication: 'Release application',
courseApplication: 'Course release application',
scriptReleaseApplication: 'Script release application',
runGraphReleaseApplication: 'Run graph release application',
subsystemGeneration: 'Subsystem generation',
newsBulletin: 'New bulletin',
notificationBulletin: 'Systematic notification',
commandDictionary: 'Command dictionary',
configLine: 'Line management',
deviceManage: 'Device management',
iscsDraw: 'Iscs Draw',
iscsSystem: 'Iscs System',
studentManage: 'Student manage',
examDetail: 'Exam detail',
raceManage: 'Race manage',
practiceManage: 'Practice manage',
bankManage: 'Bank manage',
sceneManage: 'Scene manage',
companyManage: 'Company manage',
authorApply: 'Grant application',
AuthorList: 'Authorization code list',
questionsRuleManage: 'Question rule manage',
preTheoryData: 'Pre Theory Data',
boardManage: 'Message Board Manage',
publishIBPManage: 'publish IBP Manage',
publishISCSManage: 'publish ISCS Manage',
publishTrainingManage: 'publish Training Manage',
voiceTraining: 'Voice Training',
mapGroup: 'Map Group',
drawingMange: 'Drawing Mange',
projectServer: 'Project Server',
audioResourcesManage: 'Audio Resources Manage',
iscsDeviceManage: 'ISCS Device Manage',
iscsResourcesManage: 'ISCS Resources Manage',
projectManage: 'Project Manage',
frontProjectConfigManage: 'Front Project Config Manage',
fileUploadManage: 'File Uplaod Manage',
}

View File

@ -29,6 +29,7 @@ import systemGenerate from './systemGenerate';
import login from './login';
import designPlatform from './designPlatform';
import trainingManage from './trainingManage';
import newRouter from './newRouter';
export default {
cnLocale,
@ -61,5 +62,6 @@ export default {
systemGenerate,
login,
designPlatform,
trainingManage
trainingManage,
newRouter
};

View File

@ -0,0 +1,44 @@
export default {
simulation: '仿真',
multiplayerSimulation: '多人仿真',
regulationSimulation: '监管仿真',
teachingManagement: '教学管理',
classroom: '班级管理',
student: '学生管理',
theory: '理论题目管理',
training: '实训教学管理',
exam: '考试管理',
lineDesign: '线路设计',
case: '案例管理',
SystemManagement: '系统管理',
SystemDataManagement: '系统数据管理',
dataDictionary: '数据字典',
SystemAccountManagement: '系统账户管理',
ThirdPartyAccounts: '第三方账户配置',
OnlineInformationManagement: '在线信息管理',
loginUser: '在线用户',
cacheDataManage: '缓存数据管理',
simulationManage: '仿真管理',
companyUserManage: '组织用户管理',
companyManage: '组织管理',
lineDataManage: '线路数据管理',
lineTypeManage: '线路类型管理',
linePacketManage: '线路分组管理',
teachingDataManage: '教学数据管理',
theoryData: '理论题数据管理',
trainingDataManage: '实训数据管理',
examData: '考试数据管理',
userTrainingDataManage: '用户实训数据管理',
userExamData: '用户考试数据管理',
projectDataManage: '项目数据管理',
projectManage: '项目管理',
projectConfig: '项目客户端配置',
projectDeviceManage: '项目设备管理',
permissionDataManage: '权限数据管理',
permissionManage: '权限管理',
authorityTransferManage: '权限分发管理',
userRulesManage: '用户权限管理',
fileManage: '文件管理',
frontResourceManage: '前端资源管理',
iscsPrerecordManage: 'ISCS预录管理'
};

View File

@ -1,114 +1,115 @@
export default {
homePage: '首页',
homePage: '首页',
designhomePage: '公共地图',
designUserPage: '个人地图',
newDesignUserPage: '地图绘制',
newDesignEditor: '编辑器',
newDesignEditorList: '图文列表',
newDesignDraftEditorList: '文章草稿',
uploadPdf: 'PDF上传',
fileManage:'文件管理',
designhomePage: '公共地图',
designUserPage: '个人地图',
newDesignUserPage: '地图绘制',
newDesignEditor: '编辑器',
newDesignEditorList: '图文列表',
newDesignDraftEditorList: '文章草稿',
uploadPdf: 'PDF上传',
fileManage: '文件管理',
mapManage: '地图管理',
skinManage: '皮肤管理',
mapDraw: '地图绘制',
runPlanManage: '运行图管理',
productEdit: '产品编辑',
mapManage: '地图管理',
skinManage: '皮肤管理',
mapDraw: '地图绘制',
runPlanManage: '运行图管理',
productEdit: '产品编辑',
lessaonManage: '课程管理',
trainingRecord: '实训录制',
taskManage: '任务管理',
trainingRule: '操作定义',
trainingManage: '实训管理',
lessonEdit: '课程编辑',
scriptManage: '剧本管理',
lessaonManage: '课程管理',
trainingRecord: '实训录制',
taskManage: '任务管理',
trainingRule: '操作定义',
trainingManage: '实训管理',
lessonEdit: '课程编辑',
scriptManage: '剧本管理',
teachSystem: '教学系统',
teachSystem: '教学系统',
examSystem: '考试系统',
examSystem: '考试系统',
demonstrationSystem: '仿真系统',
demonstrationSystem: '仿真系统',
dpSystem: '大屏系统',
dpSystem: '大屏系统',
planSystem: '琏计划',
planSystem: '琏计划',
replayManage: '回放管理',
replayManage: '回放管理',
permissionManage: '权限管理',
selfPermission: '我的权限',
permissionManage: '权限管理',
selfPermission: '我的权限',
pulishManage: '发布内容管理',
publishMapManage: '发布地图管理',
productStateManage: '产品状态管理',
publishLessonManage: '发布课程管理',
runPlanTemplateManage: '模板运行图管理',
runPlanCommonManage: '加载计划运行图管理',
runPlanEveryDayManage: '每日运行图管理',
examRuleManage: '试卷规则管理',
pulishManage: '发布内容管理',
publishMapManage: '发布地图管理',
productStateManage: '产品状态管理',
publishLessonManage: '发布课程管理',
runPlanTemplateManage: '模板运行图管理',
runPlanCommonManage: '加载计划运行图管理',
runPlanEveryDayManage: '每日运行图管理',
examRuleManage: '试卷规则管理',
orderAuthorityManage: '订单权限管理',
commodityManage: '商品管理',
orderManage: '订单管理',
authorityManage: '权限管理',
authorityTransferManage: '权限分发管理',
userRulesManage: '用户权限统计',
addCommodity: '添加商品',
addOrder: '添加订单',
addCoursePermissions: '添加课程权限',
orderAuthorityManage: '订单权限管理',
commodityManage: '商品管理',
orderManage: '订单管理',
authorityManage: '权限管理',
authorityTransferManage: '权限分发管理',
userRulesManage: '用户权限统计',
addCommodity: '添加商品',
addOrder: '添加订单',
addCoursePermissions: '添加课程权限',
systemManage: '系统管理',
dataDictionary: '数据字典',
dataDictionaryDetails: '数据字典明细',
userManage: '用户管理',
loginUserManage:'在线用户管理',
cacheManage: '缓存管理',
userTrainingManage: '用户实训统计',
userExamManage: '用户考试统计',
userSimulationManage: '用户仿真统计',
existingSimulation: '存在仿真管理',
systemManage: '系统管理',
dataDictionary: '数据字典',
dataDictionaryDetails: '数据字典明细',
userManage: '用户管理',
loginUserManage: '在线用户管理',
cacheManage: '缓存管理',
userTrainingManage: '用户实训统计',
userExamManage: '用户考试统计',
userSimulationManage: '用户仿真统计',
existingSimulation: '存在仿真管理',
ibpDraw: 'Ibp盘绘制',
trainingPlatform: '实训平台',
releaseApplication: '发布申请',
courseApplication: '课程发布申请',
scriptReleaseApplication: '剧本发布申请',
runGraphReleaseApplication: '运行图发布申请',
subsystemGeneration: '子系统生成',
newsBulletin: '消息公告',
notificationBulletin: '系统通知',
commandDictionary: '指令字典',
configLine: '线路管理',
deviceManage: '设备管理',
iscsDraw: 'Iscs绘制',
iscsSystem: 'Iscs系统',
studentManage: '学生管理',
competitionManage: '竞赛管理',
refereeJManage: '仿真管理',
homeJsxt: '首页',
examDetail: '考试详情',
raceManage: '竞赛管理',
recaList: '报名列表',
bankManage: '题库列表',
practiceManage:'实操列表',
sceneManage:'场景列表',
companyManage: '组织管理',
authorApply: '授权申请',
AuthorList: '授权列表',
questionsRuleManage: '出题规则管理',
preTheoryData: '理论导入预处理',
boardManage: '留言板管理',
publishIBPManage:'发布IBP盘管理',
publishISCSManage:'发布ISCS管理',
publishTrainingManage: '发布实训管理',
voiceTraining: '语音训练',
mapGroup: '地图分组',
drawingMange:'图纸管理',
projectServer: '项目域名',
audioResourcesManage: '音频资源管理',
iscsDeviceManage: 'ISCS设备管理',
iscsResourcesManage: 'ISCS资源管理',
projectManage: '项目管理',
frontProjectConfigManage:'前端项目配置管理'
};
ibpDraw: 'Ibp盘绘制',
trainingPlatform: '实训平台',
releaseApplication: '发布申请',
courseApplication: '课程发布申请',
scriptReleaseApplication: '剧本发布申请',
runGraphReleaseApplication: '运行图发布申请',
subsystemGeneration: '子系统生成',
newsBulletin: '消息公告',
notificationBulletin: '系统通知',
commandDictionary: '指令字典',
configLine: '线路管理',
deviceManage: '设备管理',
iscsDraw: 'Iscs绘制',
iscsSystem: 'Iscs系统',
studentManage: '学生管理',
competitionManage: '竞赛管理',
refereeJManage: '仿真管理',
homeJsxt: '首页',
examDetail: '考试详情',
raceManage: '竞赛管理',
recaList: '报名列表',
bankManage: '题库列表',
practiceManage: '实操列表',
sceneManage: '场景列表',
companyManage: '组织管理',
authorApply: '授权申请',
AuthorList: '授权列表',
questionsRuleManage: '出题规则管理',
preTheoryData: '理论导入预处理',
boardManage: '留言板管理',
publishIBPManage: '发布IBP盘管理',
publishISCSManage: '发布ISCS管理',
publishTrainingManage: '发布实训管理',
voiceTraining: '语音训练',
mapGroup: '地图分组',
drawingMange: '图纸管理',
projectServer: '项目域名',
audioResourcesManage: '音频资源管理',
iscsDeviceManage: 'ISCS设备管理',
iscsResourcesManage: 'ISCS资源管理',
projectManage: '项目管理',
frontProjectConfigManage: '前端项目配置管理',
fileUploadManage: '文件上传管理',
}

View File

@ -105,10 +105,10 @@ export default {
},
hookClick(item, event) {
this.$store.dispatch('menuOperation/setPopMenu', { position: null, menu: null });
if (item && typeof item.click == 'function') {
if (item ) {
if (item.children && item.children.length > 0) {
this.selectedClass(item, this.id);
} else {
} else if (typeof item.click == 'function') {
item.click(item.operate);
this.doClose(-1);
this.$store.dispatch('menuOperation/changeMenuBar', '');

View File

@ -16,7 +16,6 @@
</div>
</template>
<script>
import { TrainingMode } from '@/scripts/ConstDic';
import { State2SimulationMap } from '@/scripts/cmdPlugin/Config';
import MenuContextHandler from '@/scripts/cmdPlugin/MenuContextHandler';
import EachChildMenu from './eachChildMenu';

View File

@ -0,0 +1,120 @@
<template>
<div id="menuBar" :style="{'z-index': zIndex}">
<div class="nav">
<each-child-menu
v-for="(item,i) in menu"
:id="i"
:key="i"
ref="eachChildMenu"
:item="item"
:is-next-btn="isNextBtn"
:index="index"
@active="doActie"
@close="doClose"
/>
</div>
</div>
</template>
<script>
import MenuContextHandler from '@/scripts/cmdPlugin/MenuContextHandler';
import EachChildMenu from './eachChildMenu';
export default {
name: 'MenuBar',
components:{
EachChildMenu
},
props: {
zIndex: {
type: Number,
default: 11
},
menuNormal:{
type: Array,
default() {
return [];
}
},
isNextBtn:{
type: Boolean,
default() {
return false;
}
}
},
data() {
return {
index: -1,
menu: []
};
},
watch: {
'$store.state.training.operatemode': function () {
this.initMenu();
}
},
mounted() {
this.initMenu();
},
methods: {
handleShow(item) {
if (item.hide) {
return false;
}
return true;
},
initMenu() {
this.menu = MenuContextHandler.menuBarConvert(this.menuNormal, this.$store.state.training.operatemode);
},
noShowingChildren(children) {
if (!children || children.length <= 0) {
return true;
}
return false;
},
hasShowingChildren(children) {
if (children && children.length > 0) {
return true;
}
return false;
},
doActie(index) {
this.index = index;
},
doClose() {
this.index = -1;
},
closeMenu() {
//
}
}
};
</script>
<style scoped rel="stylesheet/scss" lang="scss">
@import "src/styles/mixin.scss";
$height: 30px;
$menuItemHeight: 30px;
$menuItemPadding: 5px;
#menuBar {
position: absolute;
width: inherit;
height: $height;
line-height: $height;
}
.nav {
display: block;
cursor: pointer;
color: #0000;
background: -webkit-linear-gradient(#FDFDFE, #DEE3F3);
background: -o-linear-gradient(#FDFDFE, #DEE3F3);
background: -moz-linear-gradient(#FDFDFE, #DEE3F3);
background: linear-gradient(#FDFDFE, #DEE3F3);
border: 1px solid #B6BCCC !important;
border-bottom: 2px solid #B6BCCC !important;
list-style: none;
}
</style>

View File

@ -107,7 +107,17 @@ class Theme {
loadMenuComponent(code) {
return Object.assign({}, require(`./${this._mapMenu[code || this._code]}/menus/index`).default);
}
// 加载行调菜单组件
loadDispatchWorkMenuComponent(code) {
if (code == '02') {
return Object.assign({}, require(`./${this._mapMenu[code || this._code]}/menus/dispatchWorkMenu`).default);
}
}
loadLocalWorkMenuComponent(code) {
if (code == '02') {
return Object.assign({}, require(`./${this._mapMenu[code || this._code]}/menus/localWorkMenu`).default);
}
}
// 新版本
loadPlanParser(code) {
return PlanParser.load(require(`./${this._runplan[code || this._code]}/planConfig`).default);

View File

@ -0,0 +1,355 @@
<template>
<div class="menus" :style="{width: width + 'px'}">
<menu-bar ref="menuBar" :selected="selected" />
<menu-deplot-button ref="menuDeplotButton" />
<menu-station-stand ref="menuStationStand" :selected="selected" />
<menu-switch ref="menuSwitch" :selected="selected" />
<menu-signal ref="menuSignal" :selected="selected" />
<menu-section ref="menuSection" :selected="selected" />
<menu-train ref="menuTrain" :selected="selected" />
<menu-station ref="menuStation" :selected="selected" />
<passive-alarm ref="passiveAlarm" />
<passive-contorl ref="passiveControl" pop-class="fuzhou-01__systerm" />
<passive-Timeout ref="passiveTimeout" />
</div>
</template>
<script>
import { mapGetters } from 'vuex';
import MenuDeplotButton from './menuDeplotButton';
import MenuSignal from './menuSignal';
import MenuStationStand from './menuStationStand';
import MenuSwitch from './menuSwitch';
import MenuSection from './menuSection';
import MenuTrain from './menuTrain';
import MenuStation from './menuStation';
import MenuBar from './dispatchWorkMenuBar';
import PassiveAlarm from './passiveDialog/alarm';
import PassiveContorl from '@/jmapNew/theme/components/menus/passiveDialog/control';
import PassiveTimeout from './passiveDialog/timeout';
export default {
name: 'DispatchWorkMenu',
components: {
MenuBar,
MenuDeplotButton,
MenuSignal,
MenuSwitch,
MenuSection,
MenuStationStand,
MenuStation,
MenuTrain,
PassiveAlarm,
PassiveContorl,
PassiveTimeout
},
props: {
selected: {
type: Object,
default() {
return null;
}
}
},
computed: {
...mapGetters('config', [
'width'
])
},
watch: {},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('config/updateMenuBar');
const _that = this;
window.onclick = function (e) {
if (!_that.$store.state.training.trainingStart) {
_that.$refs.menuBar && _that.$refs.menuBar.blankClickClose();
}
_that.$refs.menuStationStand.doClose();
_that.$refs.menuSwitch.doClose();
_that.$refs.menuSignal.doClose();
_that.$refs.menuSection.doClose();
_that.$refs.menuTrain.doClose();
_that.$refs.menuStation.doClose();
};
});
},
beforeDestroy() {
window.onclick = function (e) {};
}
};
</script>
<style>
.menus .pop-menu {
background: #F0F0F0;
}
.menus .pop-menu span {
color: #000;
}
.menus .pop-menu .is-disabled span {
color: #B4B3B8;
}
.fuzhou-01__systerm {
overflow: hidden !important;
}
.fuzhou-01__systerm .el-dialog {
background: rgba(100, 100, 100, 0.3);
border: 2px solid rgb(144, 144, 144, 0.8);
border-radius: 6px;
color: #000;
font-size: 14px;
}
.fuzhou-01__systerm .el-dialog .el-dialog__header {
padding: 5px;
height: 26px;
}
.fuzhou-01__systerm .el-dialog .el-dialog__footer {
background: #F0F0F0;
opacity: 1;
}
.fuzhou-01__systerm .el-dialog .el-dialog__body {
padding-top: 10px;
padding-bottom: 10px;
padding-left: 5px;
padding-right: 5px;
margin: 0px 5px 5px;
border: 2px solid rgba(120, 121, 123, 0.5);
box-shadow: 1px hsla(240, 0%, 100%, 0.5) inset;
background: #F0F0F0;
opacity: 1;
}
.fuzhou-01__systerm .el-dialog .el-dialog__title {
position: absolute;
top: 4px;
color: #000;
border-radius: 4px;
padding: 0px 2px;
height: 20px;
line-height: 20px
}
.fuzhou-01__systerm .el-dialog .el-dialog__title::before {
content: '';
position: absolute;
top: 0;
left: 0;
-webkit-filter: blur(10px);
filter: blur(10px);
height: 20px;
width: -webkit-fill-available;
background: rgba(128, 128, 128, 0.8);
z-index: -1;
}
.fuzhou-01__systerm .el-dialog .el-dialog__headerbtn {
background: linear-gradient(#CD98A0, #C27D6E, #B63022, #C68770);
border: 1px solid #fff;
border-radius: 4px;
top: 4px;
right: 5px;
line-height: 16px;
}
.fuzhou-01__systerm .el-dialog .el-dialog__headerbtn .el-icon-close:before {
font-size: 16px;
}
.fuzhou-01__systerm .el-dialog .el-dialog__headerbtn .el-dialog__close {
color: #fff;
}
.fuzhou-01__systerm .el-dialog .el-button {
height: 32px;
line-height: 32px;
padding: 0px;
width: 80px;
border: 2px outset #E2E2E2;
border-radius: 0px !important;
color: #000;
background: #F0F0F0;
}
.fuzhou-01__systerm .el-dialog .el-button:focus span {
border: 1px dashed gray;
}
.fuzhou-01__systerm .el-dialog .el-button:active {
border: 2px inset #E2E2E2;
}
.fuzhou-01__systerm .el-dialog .el-button:disabled {
border: 2px inset #E2E2E2;
}
.fuzhou-01__systerm .el-dialog .el-button:disabled span {
border: 0px;
}
.fuzhou-01__systerm .el-dialog .el-input {
border: 2px inset #E9E9E9;
}
.fuzhou-01__systerm .el-dialog .el-input .el-input__inner {
color: #000;
background: #fff !important;
border: 0px;
border-radius: 0px !important;
box-sizing: border-box;
}
.fuzhou-01__systerm .el-dialog .el-input.is-disabled .el-input__inner {
background: #F0F0F0 !important;
}
.fuzhou-01__systerm .el-dialog .el-textarea {
border: 2px inset #E9E9E9;
border-radius: 0px;
}
.fuzhou-01__systerm .el-dialog .el-textarea .el-textarea__inner {
color: #000;
background: #fff !important;
border: 0px;
border-radius: 0px !important;
box-sizing: border-box;
}
.fuzhou-01__systerm .el-dialog .el-textarea.is-disabled .el-textarea__inner {
background: #F0F0F0 !important;
}
.fuzhou-01__systerm .el-dialog .el-table {
border: 2px inset #E9E9E9;
color: #000 !important;
}
.fuzhou-01__systerm .el-dialog .el-table .cell {
line-height: unset !important;
}
.fuzhou-01__systerm .el-dialog .el-table th.is-leaf {
background: #F0F0F0 !important;
border-right: 1px solid #BDBDBD !important;
border-bottom: 1px solid #BDBDBD !important;
color: #000 !important;
height: 20px !important;
padding: 0px;
}
.fuzhou-01__systerm .el-dialog .el-table tr td {
height: 20px !important;
padding: 0px;
}
.fuzhou-01__systerm .el-dialog .el-table .el-table__empty-text {
top: 15px !important;
}
.fuzhou-01__systerm .el-dialog .current-row>td {
background: #3399FF !important;
color: #fff !important;
}
.fuzhou-01__systerm .el-dialog .el-checkbox__inner {
border: 1px inset #dcdfe6 !important;
}
.fuzhou-01__systerm .el-dialog .el-checkbox__label {
color: #000 !important;
}
.fuzhou-01__systerm .el-dialog .el-checkbox.is-disabled .el-checkbox__inner {
background: #E6E6E6 !important;
}
.fuzhou-01__systerm .el-dialog .el-checkbox.is-disabled .el-checkbox__label {
color: #C5C9CC !important;
}
.fuzhou-01__systerm .el-dialog .el-checkbox__input.is-checked .el-checkbox__inner {
background: #fff !important;
border: 1px inset #dcdfe6 !important;
}
.fuzhou-01__systerm .el-dialog .el-checkbox__input.is-checked .el-checkbox__inner::after {
position: absolute;
-webkit-box-sizing: content-box;
box-sizing: content-box;
content: "";
border: 1px solid #000;
border-left: 0;
border-top: 0;
height: 7px;
left: 4px;
top: 1px;
}
.fuzhou-01__systerm .el-dialog .el-radio__inner {
border: 1px inset #dcdfe6 !important;
}
.fuzhou-01__systerm .el-dialog .el-radio__label {
color: #000 !important;
}
.fuzhou-01__systerm .el-dialog .el-radio__input.is-checked .el-radio__inner {
background: #fff !important;
border: 1px inset #dcdfe6 !important;
}
.fuzhou-01__systerm .el-dialog .el-radio__input.is-checked .el-radio__inner::after {
width: 4px;
height: 4px;
border-radius: 100%;
background-color: #000 !important;
position: absolute;
left: 50%;
top: 50%;
}
.fuzhou-01__systerm .el-dialog .el-radio.is-disabled .el-radio__inner {
background: #E6E6E6 !important;
}
.fuzhou-01__systerm .el-dialog .el-radio.is-disabled .el-radio__label {
color: #C5C9CC !important;
}
.fuzhou-01__systerm .el-dialog .base-label {
background: rgb(240 240 240);
position: relative;
}
.fuzhou-01__systerm .el-dialog .el-form-item label {
font-weight: normal !important;
color: #000 !important;
}
.fuzhou-01__systerm .el-dialog .context {
height: 100px;
border: 2px inset #E2E2E2;
overflow-y: scroll;
}
.fuzhou-01__systerm .el-dialog .table {
margin-top: 10px;
}
.fuzhou-01__systerm .el-dialog .notice {
margin-left: 62px;
line-height: 30px;
}
.fuzhou-01__systerm .el-dialog .button-group {
margin-top: 10px;
}
</style>

View File

@ -0,0 +1,374 @@
<template>
<div id="menuBarFuzhou">
<menu-bar ref="menuBar" :menu-normal="menuNormal" style="width:100%" />
<station-control-convert ref="stationControlConvert" pop-class="fuzhou-01__systerm" />
<password-box ref="passwordBox" @setLoginResult="getLoginResult" />
<view-train-id ref="viewTrainId" />
<view-name ref="viewName" />
<view-device ref="viewDevice" />
<train-transtalet ref="trainTranstalet" />
<add-runplan-line ref="addRunplanLine" />
<delete-runplan-line ref="deleteRunplanLine" />
<manage-user ref="manageUser" />
<help-about ref="helpAbout" />
</div>
</template>
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler.js';
import MenuBar from '@/jmapNew/theme/components/menus/menuBarNew';
import StationControlConvert from './menuDialog/stationControlConvert';
import TrainTranstalet from './menuDialog/trainTranstalet';
import AddRunplanLine from './menuDialog/addRunplanLine';
import DeleteRunplanLine from './menuDialog/deleteRunplanLine';
import PasswordBox from './menuDialog/passwordBox';
import ViewTrainId from './menuDialog/viewTrainId';
import ViewName from './menuDialog/viewName';
import ViewDevice from './menuDialog/viewDevice';
import ManageUser from './menuDialog/manageUser';
import HelpAbout from './menuDialog/helpAbout';
import { EventBus } from '@/scripts/event-bus';
export default {
name: 'DispatchWorkMenuBar',
components: {
MenuBar,
StationControlConvert,
PasswordBox,
ViewTrainId,
ViewName,
ViewDevice,
TrainTranstalet,
AddRunplanLine,
DeleteRunplanLine,
ManageUser,
HelpAbout
},
data() {
return {
menuNormal: [
{
title: this.$t('menu.menuBar.system'),
operate: OperationEvent.Command.mBar.system,
click: this.undeveloped,
children: [
]
},
{
title: this.$t('menu.menuBar.view'),
operate: OperationEvent.Command.mBar.check,
click: this.undeveloped,
children: [
]
},
{
title: this.$t('menu.menuBar.refresh'),
operate: OperationEvent.Command.mBar.fresh,
click: this.refresh,
children: [
]
},
{
title: this.$t('menu.menuBar.display'),
operate: OperationEvent.Command.mBar.view,
click: this.undeveloped,
children: [
{
title: this.$t('menu.menuBar.setTrainIdDisplay'),
click: this.setTrainIdDisplay,
operate: OperationEvent.Command.view.setTrainIdDisplay
},
{
title: this.$t('menu.menuBar.setNameDisplay'),
click: this.setNameDisplay,
operate: OperationEvent.Command.view.setNameDisplay
},
{
title: this.$t('menu.menuBar.setDeviceDisplay'),
click: this.setDeviceDisplay,
operate: OperationEvent.Command.view.setDeviceDisplay
}
]
},
{
title: this.$t('menu.menuBar.stationMapSwitch'),
operate: '',
click: this.undeveloped,
children: [
]
},
{
title: this.$t('menu.menuBar.planCarOperation'),
operate: OperationEvent.Command.mBar.planTrain,
children: [
{
title: this.$t('menu.menuBar.addPlanCar'),
click: this.addPlanTrain,
operate: OperationEvent.Command.planTrain.addPlanTrain
},
{
title: this.$t('menu.menuBar.panPlanCar'),
click: this.translatPlanTrain,
operate: OperationEvent.Command.planTrain.translatPlanTrain
},
{
title: this.$t('menu.menuBar.deletePlanCar'),
click: this.delPlanTrain,
operate: OperationEvent.Command.planTrain.delPlanTrain
}
]
},
{
title: this.$t('menu.menuBar.trainNumberMaintenance'),
operate: '',
click: this.undeveloped,
children: [
]
},
{
title: this.$t('menu.menuBar.controlModeSwitch'),
operate: OperationEvent.Command.mBar.remoteControl,
children: [
{
title: this.$t('menu.menuBar.toStationControl'),
click: this.turnToStationControl,
operate: OperationEvent.StationControl.requestStationControl.mbar,
force: true
},
{
title: this.$t('menu.menuBar.forcedStationControl'),
click: this.mandatoryStationControl,
operate: OperationEvent.StationControl.forcedStationControl.password,
force: true
},
{
title: this.$t('menu.menuBar.toCentralControl'),
click: this.conterStationControl,
operate: OperationEvent.StationControl.requestCentralControl.mbar
}
]
},
{
title: this.$t('menu.menuBar.requestOperationArea'),
operate: OperationEvent.Command.mBar.requestZone,
click: this.undeveloped,
children: [
]
},
{
title: this.$t('menu.menuBar.schedulingLog'),
operate: '',
click: this.undeveloped,
children: [
]
},
{
title: this.$t('menu.menuBar.systemAnalysis'),
operate: '',
click: this.undeveloped,
children: [
]
},
{
title: this.$t('menu.menuBar.userManage'),
operate: OperationEvent.Command.mBar.userManage,
children: [
{
title: this.$t('menu.menuBar.userManage'),
click: this.userManage,
operate: OperationEvent.Command.manage.userManage
}
]
},
{
title: this.$t('menu.menuBar.historyQuery'),
operate: OperationEvent.Command.mBar.historyQuery,
click: this.undeveloped,
children: [
]
},
{
title: this.$t('menu.menuBar.help'),
operate: OperationEvent.Command.mBar.help,
children: [
{
title: this.$t('menu.menuBar.about'),
click: this.about,
operate: OperationEvent.Command.help.about
}
]
}
]
};
},
methods: {
//
turnToStationControl(order) {
const operate = {
operation: order.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.stationControlConvert.doShow(operate);
}
});
},
//
mandatoryStationControl(order) {
const operate = {
operation: order.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.passwordBox.doShow(operate);
}
});
},
//
conterStationControl(order) {
const operate = {
operation: order.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.stationControlConvert.doShow(operate);
}
});
},
//
setTrainIdDisplay(order) {
const operate = {
operation: order.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.viewTrainId.doShow(operate);
}
});
},
//
setNameDisplay(order) {
const operate = {
operation: order.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.viewName.doShow(operate);
}
});
},
//
setDeviceDisplay(order) {
const operate = {
operation: order.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.viewDevice.doShow(operate);
}
});
},
//
addPlanTrain(order) {
const operate = {
operation: order.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
// this.$refs.trainAdd.doShow(operate);
this.$refs.addRunplanLine.doShow(operate);
}
});
},
//
translatPlanTrain(order) {
const operate = {
operation: order.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.trainTranstalet.doShow(operate);
}
});
},
//
delPlanTrain(order) {
const operate = {
operation: order.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
// this.$refs.trainDelete.doShow(operate);
this.$refs.deleteRunplanLine.doShow(operate);
}
});
},
//
userManage(order) {
const operate = {
operation: order.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.manageUser.doShow(operate);
}
});
},
//
about(order) {
const operate = {
operation: order.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.helpAbout.doShow(operate);
}
});
},
//
refresh() {
EventBus.$emit('refresh');
},
getLoginResult(operate) {
/** 密码校验*/
if (operate.operation == OperationEvent.StationControl.forcedStationControl.passwordConfirm.operation) {
if (operate.success) {
/** 校验成功*/
this.$refs.stationControlConvert.doShow({ operation: OperationEvent.StationControl.forcedStationControl.mbar.operation });
}
}
},
undeveloped() {
this.$refs.menuBar.doClose();
this.$alert(this.$t('menu.menuBar.implemented'), this.$t('global.tips'), {
confirmButtonText: this.$t('global.confirm'),
callback: action => {
}
});
},
blankClickClose() {
this.$refs.menuBar.doClose();
}
}
};
</script>
<style rel="stylesheet/scss" lang="scss">
#menuBarFuzhou{
line-height:30px;
}
#menuBarChengdu3 #menuBar .menu-li-block .label{
padding: 0px 30px 0px 5px !important;
}
</style>

View File

@ -1,6 +1,6 @@
<template>
<div class="menus" :style="{width: width + 'px'}">
<menu-bar v-show="isShowBar" ref="menuBar" :selected="selected" />
<menu-bar ref="menuBar" :selected="selected" />
<menu-deplot-button ref="menuDeplotButton" />
<menu-station-stand ref="menuStationStand" :selected="selected" />
<menu-switch ref="menuSwitch" :selected="selected" />
@ -54,16 +54,9 @@ export default {
computed: {
...mapGetters('config', [
'width'
]),
isShowBar() {
return this.$store.state.training.prdType && this.$store.state.training.prdType !== '07' && this.$store.state.training.prdType != '09';
}
},
watch: {
isShowBar(val) {
val && this.$store.dispatch('config/updateMenuBar');
}
])
},
watch: {},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('config/updateMenuBar');

View File

@ -0,0 +1,355 @@
<template>
<div class="menus" :style="{width: width + 'px'}">
<menu-bar ref="menuBar" :selected="selected" />
<menu-deplot-button ref="menuDeplotButton" />
<menu-station-stand ref="menuStationStand" :selected="selected" />
<menu-switch ref="menuSwitch" :selected="selected" />
<menu-signal ref="menuSignal" :selected="selected" />
<menu-section ref="menuSection" :selected="selected" />
<menu-train ref="menuTrain" :selected="selected" />
<menu-station ref="menuStation" :selected="selected" />
<passive-alarm ref="passiveAlarm" />
<passive-contorl ref="passiveControl" pop-class="fuzhou-01__systerm" />
<passive-Timeout ref="passiveTimeout" />
</div>
</template>
<script>
import { mapGetters } from 'vuex';
import MenuDeplotButton from './menuDeplotButton';
import MenuSignal from './menuSignal';
import MenuStationStand from './menuStationStand';
import MenuSwitch from './menuSwitch';
import MenuSection from './menuSection';
import MenuTrain from './menuTrain';
import MenuStation from './menuStation';
import MenuBar from './localWorkMenuBar';
import PassiveAlarm from './passiveDialog/alarm';
import PassiveContorl from '@/jmapNew/theme/components/menus/passiveDialog/control';
import PassiveTimeout from './passiveDialog/timeout';
export default {
name: 'DispatchWorkMenu',
components: {
MenuBar,
MenuDeplotButton,
MenuSignal,
MenuSwitch,
MenuSection,
MenuStationStand,
MenuStation,
MenuTrain,
PassiveAlarm,
PassiveContorl,
PassiveTimeout
},
props: {
selected: {
type: Object,
default() {
return null;
}
}
},
computed: {
...mapGetters('config', [
'width'
])
},
watch: {},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('config/updateMenuBar');
const _that = this;
window.onclick = function (e) {
if (!_that.$store.state.training.trainingStart) {
_that.$refs.menuBar && _that.$refs.menuBar.blankClickClose();
}
_that.$refs.menuStationStand.doClose();
_that.$refs.menuSwitch.doClose();
_that.$refs.menuSignal.doClose();
_that.$refs.menuSection.doClose();
_that.$refs.menuTrain.doClose();
_that.$refs.menuStation.doClose();
};
});
},
beforeDestroy() {
window.onclick = function (e) {};
}
};
</script>
<style>
.menus .pop-menu {
background: #F0F0F0;
}
.menus .pop-menu span {
color: #000;
}
.menus .pop-menu .is-disabled span {
color: #B4B3B8;
}
.fuzhou-01__systerm {
overflow: hidden !important;
}
.fuzhou-01__systerm .el-dialog {
background: rgba(100, 100, 100, 0.3);
border: 2px solid rgb(144, 144, 144, 0.8);
border-radius: 6px;
color: #000;
font-size: 14px;
}
.fuzhou-01__systerm .el-dialog .el-dialog__header {
padding: 5px;
height: 26px;
}
.fuzhou-01__systerm .el-dialog .el-dialog__footer {
background: #F0F0F0;
opacity: 1;
}
.fuzhou-01__systerm .el-dialog .el-dialog__body {
padding-top: 10px;
padding-bottom: 10px;
padding-left: 5px;
padding-right: 5px;
margin: 0px 5px 5px;
border: 2px solid rgba(120, 121, 123, 0.5);
box-shadow: 1px hsla(240, 0%, 100%, 0.5) inset;
background: #F0F0F0;
opacity: 1;
}
.fuzhou-01__systerm .el-dialog .el-dialog__title {
position: absolute;
top: 4px;
color: #000;
border-radius: 4px;
padding: 0px 2px;
height: 20px;
line-height: 20px
}
.fuzhou-01__systerm .el-dialog .el-dialog__title::before {
content: '';
position: absolute;
top: 0;
left: 0;
-webkit-filter: blur(10px);
filter: blur(10px);
height: 20px;
width: -webkit-fill-available;
background: rgba(128, 128, 128, 0.8);
z-index: -1;
}
.fuzhou-01__systerm .el-dialog .el-dialog__headerbtn {
background: linear-gradient(#CD98A0, #C27D6E, #B63022, #C68770);
border: 1px solid #fff;
border-radius: 4px;
top: 4px;
right: 5px;
line-height: 16px;
}
.fuzhou-01__systerm .el-dialog .el-dialog__headerbtn .el-icon-close:before {
font-size: 16px;
}
.fuzhou-01__systerm .el-dialog .el-dialog__headerbtn .el-dialog__close {
color: #fff;
}
.fuzhou-01__systerm .el-dialog .el-button {
height: 32px;
line-height: 32px;
padding: 0px;
width: 80px;
border: 2px outset #E2E2E2;
border-radius: 0px !important;
color: #000;
background: #F0F0F0;
}
.fuzhou-01__systerm .el-dialog .el-button:focus span {
border: 1px dashed gray;
}
.fuzhou-01__systerm .el-dialog .el-button:active {
border: 2px inset #E2E2E2;
}
.fuzhou-01__systerm .el-dialog .el-button:disabled {
border: 2px inset #E2E2E2;
}
.fuzhou-01__systerm .el-dialog .el-button:disabled span {
border: 0px;
}
.fuzhou-01__systerm .el-dialog .el-input {
border: 2px inset #E9E9E9;
}
.fuzhou-01__systerm .el-dialog .el-input .el-input__inner {
color: #000;
background: #fff !important;
border: 0px;
border-radius: 0px !important;
box-sizing: border-box;
}
.fuzhou-01__systerm .el-dialog .el-input.is-disabled .el-input__inner {
background: #F0F0F0 !important;
}
.fuzhou-01__systerm .el-dialog .el-textarea {
border: 2px inset #E9E9E9;
border-radius: 0px;
}
.fuzhou-01__systerm .el-dialog .el-textarea .el-textarea__inner {
color: #000;
background: #fff !important;
border: 0px;
border-radius: 0px !important;
box-sizing: border-box;
}
.fuzhou-01__systerm .el-dialog .el-textarea.is-disabled .el-textarea__inner {
background: #F0F0F0 !important;
}
.fuzhou-01__systerm .el-dialog .el-table {
border: 2px inset #E9E9E9;
color: #000 !important;
}
.fuzhou-01__systerm .el-dialog .el-table .cell {
line-height: unset !important;
}
.fuzhou-01__systerm .el-dialog .el-table th.is-leaf {
background: #F0F0F0 !important;
border-right: 1px solid #BDBDBD !important;
border-bottom: 1px solid #BDBDBD !important;
color: #000 !important;
height: 20px !important;
padding: 0px;
}
.fuzhou-01__systerm .el-dialog .el-table tr td {
height: 20px !important;
padding: 0px;
}
.fuzhou-01__systerm .el-dialog .el-table .el-table__empty-text {
top: 15px !important;
}
.fuzhou-01__systerm .el-dialog .current-row>td {
background: #3399FF !important;
color: #fff !important;
}
.fuzhou-01__systerm .el-dialog .el-checkbox__inner {
border: 1px inset #dcdfe6 !important;
}
.fuzhou-01__systerm .el-dialog .el-checkbox__label {
color: #000 !important;
}
.fuzhou-01__systerm .el-dialog .el-checkbox.is-disabled .el-checkbox__inner {
background: #E6E6E6 !important;
}
.fuzhou-01__systerm .el-dialog .el-checkbox.is-disabled .el-checkbox__label {
color: #C5C9CC !important;
}
.fuzhou-01__systerm .el-dialog .el-checkbox__input.is-checked .el-checkbox__inner {
background: #fff !important;
border: 1px inset #dcdfe6 !important;
}
.fuzhou-01__systerm .el-dialog .el-checkbox__input.is-checked .el-checkbox__inner::after {
position: absolute;
-webkit-box-sizing: content-box;
box-sizing: content-box;
content: "";
border: 1px solid #000;
border-left: 0;
border-top: 0;
height: 7px;
left: 4px;
top: 1px;
}
.fuzhou-01__systerm .el-dialog .el-radio__inner {
border: 1px inset #dcdfe6 !important;
}
.fuzhou-01__systerm .el-dialog .el-radio__label {
color: #000 !important;
}
.fuzhou-01__systerm .el-dialog .el-radio__input.is-checked .el-radio__inner {
background: #fff !important;
border: 1px inset #dcdfe6 !important;
}
.fuzhou-01__systerm .el-dialog .el-radio__input.is-checked .el-radio__inner::after {
width: 4px;
height: 4px;
border-radius: 100%;
background-color: #000 !important;
position: absolute;
left: 50%;
top: 50%;
}
.fuzhou-01__systerm .el-dialog .el-radio.is-disabled .el-radio__inner {
background: #E6E6E6 !important;
}
.fuzhou-01__systerm .el-dialog .el-radio.is-disabled .el-radio__label {
color: #C5C9CC !important;
}
.fuzhou-01__systerm .el-dialog .base-label {
background: rgb(240 240 240);
position: relative;
}
.fuzhou-01__systerm .el-dialog .el-form-item label {
font-weight: normal !important;
color: #000 !important;
}
.fuzhou-01__systerm .el-dialog .context {
height: 100px;
border: 2px inset #E2E2E2;
overflow-y: scroll;
}
.fuzhou-01__systerm .el-dialog .table {
margin-top: 10px;
}
.fuzhou-01__systerm .el-dialog .notice {
margin-left: 62px;
line-height: 30px;
}
.fuzhou-01__systerm .el-dialog .button-group {
margin-top: 10px;
}
</style>

View File

@ -0,0 +1,285 @@
<template>
<div id="menuBarFuzhou">
<menu-bar ref="menuBar" :menu-normal="menuNormal" style="width:100%" />
<station-control-convert ref="stationControlConvert" pop-class="fuzhou-01__systerm" />
<password-box ref="passwordBox" @setLoginResult="getLoginResult" />
<view-train-id ref="viewTrainId" />
<view-name ref="viewName" />
<view-device ref="viewDevice" />
<manage-user ref="manageUser" />
<help-about ref="helpAbout" />
</div>
</template>
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler.js';
import MenuBar from '@/jmapNew/theme/components/menus/menuBarNew';
import StationControlConvert from './menuDialog/stationControlConvert';
import PasswordBox from './menuDialog/passwordBox';
import ViewTrainId from './menuDialog/viewTrainId';
import ViewName from './menuDialog/viewName';
import ViewDevice from './menuDialog/viewDevice';
import ManageUser from './menuDialog/manageUser';
import HelpAbout from './menuDialog/helpAbout';
import { EventBus } from '@/scripts/event-bus';
export default {
name: 'LocalWorkMenu',
components: {
MenuBar,
StationControlConvert,
PasswordBox,
ViewTrainId,
ViewName,
ViewDevice,
ManageUser,
HelpAbout
},
data() {
return {
menuNormal: [
{
title: this.$t('menu.menuBar.system'),
operate: OperationEvent.Command.mBar.system,
click: this.undeveloped,
children: [
]
},
{
title: this.$t('menu.menuBar.view'),
operate: OperationEvent.Command.mBar.check,
click: this.undeveloped,
children: [
]
},
{
title: this.$t('menu.menuBar.refresh'),
operate: OperationEvent.Command.mBar.fresh,
click: this.refresh,
children: [
]
},
{
title: this.$t('menu.menuBar.display'),
operate: OperationEvent.Command.mBar.view,
click: this.undeveloped,
children: [
{
title: this.$t('menu.menuBar.setTrainIdDisplay'),
click: this.setTrainIdDisplay,
operate: OperationEvent.Command.view.setTrainIdDisplay
},
{
title: this.$t('menu.menuBar.setNameDisplay'),
click: this.setNameDisplay,
operate: OperationEvent.Command.view.setNameDisplay
},
{
title: this.$t('menu.menuBar.setDeviceDisplay'),
click: this.setDeviceDisplay,
operate: OperationEvent.Command.view.setDeviceDisplay
}
]
},
{
title: this.$t('menu.menuBar.stationMapSwitch'),
operate: '',
click: this.undeveloped,
children: [
]
},
{
title: this.$t('menu.menuBar.controlModeSwitch'),
operate: OperationEvent.Command.mBar.remoteControl,
click: this.undeveloped,
children: [
{
title: this.$t('menu.menuBar.toStationControl'),
click: this.turnToStationControl,
operate: OperationEvent.StationControl.requestStationControl.mbar
},
{
title: this.$t('menu.menuBar.forcedStationControl'),
click: this.mandatoryStationControl,
operate: OperationEvent.StationControl.forcedStationControl.password
},
{
title: this.$t('menu.menuBar.toCentralControl'),
click: this.conterStationControl,
operate: OperationEvent.StationControl.requestCentralControl.mbar,
force: true
}
]
},
{
title: this.$t('menu.menuBar.requestOperationArea'),
operate: OperationEvent.Command.mBar.requestZone,
click: this.undeveloped,
children: [
]
},
{
title: this.$t('menu.menuBar.historyQuery'),
operate: OperationEvent.Command.mBar.historyQuery,
click: this.undeveloped,
children: [
]
},
{
title: this.$t('menu.menuBar.userManage'),
operate: OperationEvent.Command.mBar.userManage,
children: [
{
title: this.$t('menu.menuBar.userManage'),
click: this.userManage,
operate: OperationEvent.Command.manage.userManage
}
]
},
{
title: this.$t('menu.menuBar.help'),
operate: OperationEvent.Command.mBar.help,
children: [
{
title: this.$t('menu.menuBar.about'),
click: this.about,
operate: OperationEvent.Command.help.about
}
]
}
]
};
},
methods: {
//
turnToStationControl(order) {
const operate = {
operation: order.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.stationControlConvert.doShow(operate);
}
});
},
//
mandatoryStationControl(order) {
const operate = {
operation: order.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.passwordBox.doShow(operate);
}
});
},
//
conterStationControl(order) {
const operate = {
operation: order.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.stationControlConvert.doShow(operate);
}
});
},
//
setTrainIdDisplay(order) {
const operate = {
operation: order.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.viewTrainId.doShow(operate);
}
});
},
//
setNameDisplay(order) {
const operate = {
operation: order.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.viewName.doShow(operate);
}
});
},
//
setDeviceDisplay(order) {
const operate = {
operation: order.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.viewDevice.doShow(operate);
}
});
},
//
userManage(order) {
const operate = {
operation: order.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.manageUser.doShow(operate);
}
});
},
//
about(order) {
const operate = {
operation: order.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.helpAbout.doShow(operate);
}
});
},
//
refresh() {
EventBus.$emit('refresh');
},
getLoginResult(operate) {
/** 密码校验*/
if (operate.operation == OperationEvent.StationControl.forcedStationControl.passwordConfirm.operation) {
if (operate.success) {
/** 校验成功*/
this.$refs.stationControlConvert.doShow({ operation: OperationEvent.StationControl.forcedStationControl.mbar.operation });
}
}
},
undeveloped() {
this.$refs.menuBar.doClose();
this.$alert(this.$t('menu.menuBar.implemented'), this.$t('global.tips'), {
confirmButtonText: this.$t('global.confirm'),
callback: action => {
}
});
},
blankClickClose() {
this.$refs.menuBar.doClose();
}
}
};
</script>
<style rel="stylesheet/scss" lang="scss">
#menuBarFuzhou{
line-height:30px;
}
#menuBarChengdu3 #menuBar .menu-li-block .label{
padding: 0px 30px 0px 5px !important;
}
</style>

View File

@ -11,6 +11,7 @@
@select="handleSelect"
>
<system-title />
<div class="centerNullMenu" />
<template v-for="(item, idx) in routers">
<template v-if="!item.hidden&&item.children">
<template v-if="hasOneScreenShowingChildren(item.children) &&!item.alwaysShow">
@ -41,25 +42,39 @@
<template v-for="(child,cdx) in item.children">
<template v-if="!child.hidden">
<template v-if="child.children&&child.children.length>0&&hasShowingChildren(child.children)">
<el-submenu :key="cdx" :index="child.path" :show-timeout="100">
<el-submenu :key="cdx" :index="item.path+'/'+child.path" :show-timeout="100" :hide-timeout="100" popper-class="grandChildClass">
<template slot="title">
<span v-if="child.meta" slot="title">{{ $t(child.meta.i18n) }}</span>
</template>
<template v-for="(grandchild,gdx) in child.children">
<template v-if="!grandchild.hidden">
<template :to="child.path+'/'+grandchild.path">
<el-menu-item :key="gdx" :index="item.redirect ? item.redirect : (child.path+'/'+grandchild.path)">
<template v-if="!grandchild.children" :to="child.path+'/'+grandchild.path">
<el-menu-item :key="gdx" :index="item.redirect ? item.redirect : (item.path+'/'+child.path+'/'+grandchild.path)">
<span
v-if="grandchild.meta"
slot="title"
>{{ $t(grandchild.meta.i18n) }}</span>
</el-menu-item>
</template>
<template v-else :to="child.path+'/'+grandchild.path">
<el-submenu v-for="(mgChild,mgdx) in grandchild.children" :key="mgdx" :index="item.redirect ? item.redirect : (item.path+'/'+child.path+'/'+grandchild.path+'/'+mgChild.path)" :show-timeout="100" :hide-timeout="100">
<template slot="title">
<span v-if="mgChild.meta" slot="title">{{ $t(mgChild.meta.i18n) }}</span>
</template>
<el-menu-item :key="mgdx" :index="item.redirect ? item.redirect : (item.path+'/'+child.path+'/'+grandchild.path + '/' + mgChild.path)">
<span
v-if="mgChild.meta"
slot="title"
>{{ $t(mgChild.meta.i18n) }}</span>
</el-menu-item>
</el-submenu>
</template>
</template>
</template>
</el-submenu>
</template>
<template v-else :to="item.path+'/'+child.path">
<!-- <el-menu-item :key="cdx" :index="item.redirect ? item.redirect : (item.path+'/'+child.path)" :route="(child.route && child.route()) ? child.route() : null"> -->
<el-menu-item :key="cdx" :index="item.redirect ? item.redirect : (item.path+'/'+child.path)">
<span v-if="child.meta" slot="title">{{ $t(child.meta.i18n) }}</span>
</el-menu-item>
@ -70,7 +85,7 @@
</template>
</template>
<div v-if="!thirdLogin" class="rightGroup">
<quick-entry ref="quickEntry" />
<!-- <quick-entry ref="quickEntry" /> -->
<user-logout ref="userLogout" />
</div>
</el-menu>
@ -171,9 +186,10 @@ export default {
$height: 61px;
.rightGroup{
position: absolute;
right: 35px;
// position: absolute;
// right: 35px;
display: inline-block;
padding: 0 35px;
}
.navbar {
@ -181,7 +197,11 @@ export default {
line-height: $height;
padding-left: 30px;
border-radius: 0px !important;
display: flex;
.centerNullMenu {
display: flex;
flex: 1;
}
.image-container {
line-height: $height;
height: $height;
@ -214,4 +234,7 @@ export default {
margin-right:20px;
font-size:14px;
}
/deep/ .grandChildClass {
left: -210px !important;
}
</style>

View File

@ -63,6 +63,7 @@ function handleRoute(to, next, loginPath) {
// 除没有动态改变权限的需求可直接next() 删下方权限判断
if (to.path === '/404' && to.redirectedFrom === '/') {
const project = getSessionStorage('project');
console.log(localStore.get('trainingPlatformRoute' + store.getters.id + project, '-------------'));
next(localStore.get('trainingPlatformRoute' + store.getters.id + project) || '/trainingPlatform');
} else {
next();

View File

@ -212,11 +212,15 @@ const ProjectServer = () => import('@/views/system/serverManage');
const VoiceManage = () => import('@/views/fileManage/voiceManage');
const ProjectManage = () => import('@/views/system/projectManage');
const FrontProjectConfigManage = () => import('@/views/system/frontProjectConfigManage');
const FileUploadManage = () => import('@/views/system/fileUploadManage');
const IscsDeviceManage = () => import('@/views/system/iscsDeviceManage');
const IscsResourcesManage = () => import('@/views/system/iscsResourcesManage');
const PisScreen = () => import('@/views/pis/index');
const Case = () => import('@/views/case/index');
const TransitionIndex = () => import('@/views/temporary/transitionIndex');
const Temporary = () => import('@/views/temporary/index');
// import { GenerateRouteProjectList } from '@/scripts/ProjectConfig';
// import { getSessionStorage } from '@/utils/auth';
@ -1539,6 +1543,411 @@ export const asyncRouter = [
hidden: true
}
]
},
{ // 新路由-仿真菜单
path: '/simulation',
component: Layout,
meta: {
i18n: 'newRouter.simulation',
roles: [admin, user, userTrainingPlatform]
},
children: [
{ // 仿真
path: 'simulationIndex',
component: TrainingPlatform,
// route: { path: '/simulation/trainingPlatform/detail' },
meta: {
i18n: 'newRouter.simulation'
},
children: [
{
path: 'detail/:subSystem',
component: DemonstrationDetail,
meta: {},
hidden: true
}
]
},
{ // 多人仿真
path: 'multiplayerSimulation',
// component: multiplayerSimulation,
meta: {
i18n: 'newRouter.multiplayerSimulation'
}
},
{ // 监管仿真
path: 'regulationSimulation',
component: ExistingSimulation,
meta: {
i18n: 'newRouter.regulationSimulation'
}
}
]
},
{ // 新路由-教学管理菜单
path: '/info',
component: Layout,
meta: {
i18n: 'newRouter.teachingManagement',
roles: [admin, user, userTrainingPlatform]
},
children: [
{ // 班级管理
path: 'organization',
component: OrganizationManage,
meta: {
i18n: 'newRouter.teachingManagement'
},
children: [
{ // 班级管理
path:'classManage',
component: OrgClassManage,
hidden: true
},
{ // 学生管理
path: 'studentManage',
component: Temporary,
hidden: true
},
{ // 实训教学管理
path: 'trainingManage',
component: Temporary,
hidden: true
},
{ // 理论题目管理
path: 'theoryManage',
component: Temporary,
hidden: true
},
{ // 考试管理
path: 'examManage',
component: Temporary,
hidden: true
}
]
}
]
},
{ // 新路由-线路设计
path: '/design',
component: Layout,
meta: {
i18n: 'newRouter.lineDesign',
roles: [admin, user, userTrainingPlatform]
},
children: [
{
path: 'usermap',
redirect: '/design/usermap/home',
component: NewDesignPlatformUser,
meta: {
i18n: 'newRouter.lineDesign'
},
children: [
{
path: 'home',
component: DesignPlatformHome,
hidden: true,
meta: {
}
}
]
}
]
},
{ // 新路由-案例
path: '/case',
component: Layout,
meta: {
i18n: 'newRouter.case',
roles: [admin, user, userTrainingPlatform]
},
children: [
{
path: 'index',
component: Case,
meta: {
i18n: 'newRouter.case'
}
}
]
},
{ // 新路由-系统管理
path: '/system',
component: Layout,
meta: {
i18n: 'newRouter.SystemManagement',
roles: [admin, userTrainingPlatform]
},
children: [
{ // 系统数据管理
path: 'systemDataManagement',
component: TransitionIndex,
meta: {
i18n: 'newRouter.SystemDataManagement'
},
children: [
{ // 数据字典
path: 'dictionary',
component: Dictionary,
meta: {
i18n: 'newRouter.dataDictionary'
}
},
{ // 系统账户管理
path: 'userManage',
component: UserControl,
meta: {
i18n: 'newRouter.SystemAccountManagement'
}
},
{ // 第三方账户配置
path: 'ThirdPartyAccounts',
component: Temporary,
meta: {
i18n: 'newRouter.ThirdPartyAccounts'
}
}
]
},
{ // 在线信息管理
path: 'OnlineInformationManagement',
component: TransitionIndex,
meta: {
i18n: 'newRouter.OnlineInformationManagement'
},
children: [
{ // 在线用户
path: 'loginUserManage',
component: LoginUserControl,
meta: {
i18n: 'newRouter.loginUser'
}
},
{ // 缓存数据管理
path: 'CacheControl',
component: CacheControl,
meta: {
i18n: 'newRouter.cacheDataManage'
}
},
{ // 仿真管理
path: 'existingSimulation',
component: ExistingSimulation,
meta: {
i18n: 'newRouter.simulationManage'
}
}
]
},
{ // 组织用户管理
path: 'companyUserManage',
component: TransitionIndex,
meta: {
i18n: 'newRouter.companyUserManage'
},
children: [
{
// 组织管理
path: 'companyManage',
component: CompanyManage,
meta: {
i18n: 'newRouter.companyManage'
}
},
{
// 用户管理
path: 'userManage',
component: UserControl,
meta: {
i18n: 'newRouter.companyUserManage'
}
}
]
},
{ // 线路数据管理
path: 'lineDataManage',
component: TransitionIndex,
meta: {
i18n: 'newRouter.lineDataManage'
},
children: [
{
// 线路类型管理
path: 'lineTypeManage',
component: configLine,
meta: {
i18n: 'newRouter.lineTypeManage'
}
},
{
// 线路数据管理
path: 'lineDataManage',
component: PublishMap,
meta: {
i18n: 'newRouter.lineDataManage'
}
},
{
// 线路分组管理
path: 'userManage',
component: Temporary,
meta: {
i18n: 'newRouter.linePacketManage'
}
}
]
},
{ // 教学数据管理
path: 'teachingDataManage',
component: TransitionIndex,
meta: {
i18n: 'newRouter.teachingDataManage'
},
children: [
{
// 理论题数据管理
path: 'theoryData',
component: Temporary,
meta: {
i18n: 'newRouter.theoryData'
}
},
{
// 实训数据管理
path: 'trainingDataManage',
component: Temporary,
meta: {
i18n: 'newRouter.trainingDataManage'
}
},
{
// 考试数据管理
path: 'examData',
component: BankManage,
meta: {
i18n: 'newRouter.examData'
}
},
{
// 用户实训数据管理
path: 'userTrainingDataManage',
component: UserTraining,
meta: {
i18n: 'newRouter.userTrainingDataManage'
}
},
{
// 用户考试数据管理
path: 'userExamData',
component: UserExam,
meta: {
i18n: 'newRouter.userExamData'
}
}
]
},
{ // 项目数据管理
path: 'projectDataManage',
component: TransitionIndex,
meta: {
i18n: 'newRouter.projectDataManage'
},
children: [
{
// 项目管理
path: 'projectManage',
component: ProjectManage,
meta: {
i18n: 'newRouter.projectManage'
}
},
{
// 项目客户端配置
path: 'projectConfig',
component: Temporary,
meta: {
i18n: 'newRouter.projectConfig'
}
},
{
// 项目设备管理
path: 'projectDeviceManage',
component: Temporary,
meta: {
i18n: 'newRouter.projectDeviceManage'
}
}
]
},
{ // 权限数据管理
path: 'permissionDataManage',
component: TransitionIndex,
meta: {
i18n: 'newRouter.permissionDataManage'
},
children: [
{
// 权限管理
path: 'permissionManage',
component: Author,
meta: {
i18n: 'newRouter.permissionManage'
}
},
{
// 权限分发管理
path: 'authorityTransferManage',
component: Permission,
meta: {
i18n: 'newRouter.authorityTransferManage'
}
},
{
// 用户权限管理
path: 'userRulesManage',
component: UserRules,
meta: {
i18n: 'newRouter.userRulesManage'
}
}
]
},
{ // 文件管理
path: 'fileManage',
component: TransitionIndex,
meta: {
i18n: 'newRouter.fileManage'
},
children: [
{
// 前端资源管理
path: 'frontResourceManage',
component: FrontProjectConfigManage,
meta: {
i18n: 'newRouter.frontResourceManage'
}
},
{
// ISCS预录管理
path: 'iscsPrerecordManage',
component: IscsResourcesManage,
meta: {
i18n: 'newRouter.iscsPrerecordManage'
}
},
{
// 文件管理
path: 'fileUploadManage',
component: FileUploadManage,
meta: {
i18n: 'router.fileUploadManage'
}
}
]
}
]
}
];
/* merge 是否再路由处理中与asyncRouter进行合并 mergeIndex合并进入asyncRouter【mergeIndex】 慎重调整asyncRouter顺序 */

View File

@ -190,7 +190,6 @@ const training = {
state.prdType = prdType;
},
setRoles: (state, roles) => {
console.log(roles, '---------------roles');
state.roles = roles;
},
notifyGetCommandDefinition: (state, lineCode) => {
@ -209,6 +208,7 @@ const training = {
if (userId == item.userId) {
state.roles = item.type;
state.roleDeviceCode = item.deviceCode;
console.log(item.deviceCode, '----------', state.roleDeviceCode);
}
});
}
@ -283,6 +283,7 @@ const training = {
},
setRoleDeviceCode :(state, roleDeviceCode) => {
console.log(roleDeviceCode, '---');
state.roleDeviceCode = roleDeviceCode;
},
setOrignalUserRoleId:(state, orignalUserRoleId) => {

View File

@ -123,13 +123,15 @@ StompClient.prototype = {
unsubscribe(topic) {
const subscription = this.subscribeMap.get(topic);
subscription.count--;
if (subscription && subscription.sub && subscription.count < 0) {
subscription.sub.unsubscribe();
this.subscribeMap.delete(topic);
console.log('取消订阅:' + topic);
} else if (subscription && subscription.count < 0) {
this.subscribeMap.delete(topic);
if (subscription && subscription.count > 0) {
subscription.count--;
if (subscription && subscription.sub && subscription.count < 0) {
subscription.sub.unsubscribe();
this.subscribeMap.delete(topic);
console.log('取消订阅:' + topic);
} else if (subscription && subscription.count < 0) {
this.subscribeMap.delete(topic);
}
}
},

75
src/views/case/index.vue Normal file
View File

@ -0,0 +1,75 @@
<template>
<div class="quick-entry">
<QueryListPage ref="queryListPage" :card-padding="10" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" />
</div>
</template>
<script>
export default {
name: 'Case',
components: {},
data() {
return {
caseList: [
{
name: '西安铁路职业技术学院',
url: 'https://joylink.club/oss/portal/cases/西安铁路职业技术学院.pdf'
},
{
name: '贵州装备制造职业学院',
url: 'https://joylink.club/oss/portal/cases/贵州装备制造职业学院机电技术专业实训室建设.pdf'
},
{
name: '江苏电子信息职业学院',
url: 'https://joylink.club/oss/portal/cases/江苏电子信息职业学院-城市轨道交通行车组织综合实训室.pdf'
}
],
pagerConfig: {
pageSize: 'pageSize',
pageIndex: 'pageNum'
},
queryForm: {
labelWidth: '100px',
reset: true,
show:false
},
queryList: {
data: [],
selectCheckShow: false,
paginationHiden: true,
indexShow: true,
height: 500,
columns: [
{
title: '案例名称',
prop: 'name'
},
{
title: '描述',
prop: 'description'
},
{
type: 'button',
title: '操作',
width: '150',
buttons: [
{
name: '查看',
handleClick: this.handleClick,
type: 'primary'
}
]
}
]
}
};
},
created() {
this.queryList.data = this.caseList;
},
methods: {
handleClick(index, row) {
window.open(row.url, '_blank');
}
}
};
</script>

View File

@ -124,6 +124,7 @@ export default {
},
//
finish(data) {
console.log('finish');
this.active = 0;
const type = this.$route.query.permissionType;
if (type === PermissionType.LESSON) {

View File

@ -101,10 +101,12 @@ export default {
try {
let res;
try {
debugger;
res = await getPublishMapInfo(this.mapId);
} catch (error) {
if (error.code == 30001 || error.code == 10007) {
const url = localStore.get('orignalTrainingPlatformRoute' + this.$store.state.user.id + this.project);
console.log('------------------');
localStore.remove();
if (url) {
this.$router.push(url);

View File

@ -760,6 +760,7 @@ export default {
if (this.teacherLogin) {
this.$router.push({ path: '/info/organization/classManage?enter=teacher' });
} else {
console.log(this.path, '00000000000');
this.$router.push({ path: this.path });
}
}

View File

@ -26,7 +26,7 @@ import SimulationControl from './simulationControl.vue';
export default {
name: 'DisplayDraft',
components: {
TerminalsPicture,
TerminalsPicture,
SimulationMenu,
SimulationControl
},
@ -109,21 +109,6 @@ export default {
if (resp && resp.code == 200 && resp.data) {
if (!resp.data.dataError) {
// this.$store.dispatch('scriptRecord/updateSimulationPause', resp.data.pause); //
// this.$store.dispatch('training/setInitTime', +new Date(`${new Date().toLocaleDateString()} ${timeFormat(resp.data.systemTime)}`));
if (resp.data.prodType === '03') {
this.$store.dispatch('training/setPrdType', this.$route.query.prdType);
} else {
this.$store.dispatch('training/setPrdType', resp.data.prodType);
}
// this.$store.dispatch('runPlan/setRunPlanInfo', resp.data.runPlan);
// this.planRunning = resp.data.planRunning;
// if (resp.data.planRunning) {
// this.$store.commit('training/start');
// }
// if (this.isScript) {
// this.$store.dispatch('training/setPrdType', '02');
// }
this.loadMapData();
} else {
this.$messageBox('此地图数据正在维护中,无法运行!');
@ -155,3 +140,8 @@ export default {
}
};
</script>
<style lang="scss" scoped>
.main{
height: 100%;
}
</style>

View File

@ -31,7 +31,6 @@
<script>
import Vue from 'vue';
import localStore from 'storejs';
import Jlmap from '@/jmapNew/map';
import ProgressBar from '@/views/components/progressBar/index';
import { TrainingMode } from '@/scripts/ConstDic';
@ -162,8 +161,6 @@ export default {
if (path.indexOf('map/draw') !== -1 || path.indexOf('mapPreviewNew') !== -1 || path.indexOf('pictureDraw') !== -1) {
this.previewOrMapDraw = true;
}
const prdType = this.$store.state.training.prdType;
const showMode = { '01': '03', '02': '02'}[prdType] || '';
Vue.prototype.$theme = new Theme();
this.selfJlmap = Vue.prototype.$jlmap = new Jlmap({
@ -180,9 +177,7 @@ export default {
zoomOnMouseWheel: mouseWheelFlag
},
showConfig: {
prdType: prdType,
previewOrMapDraw: this.previewOrMapDraw,
showMode: showMode
previewOrMapDraw: this.previewOrMapDraw
},
methods: {
dataLoaded: this.handleDataLoaded,
@ -295,14 +290,7 @@ export default {
this.offset.y = this.dataZoom.offsetY;
if (this.lineCode) {
const param = {
scaleRate: this.dataZoom.scaleRate,
offsetY: this.dataZoom.offsetY,
offsetX: this.dataZoom.offsetX,
lineCode: this.lineCode
};
this.$store.commit('map/setDataZoom', this.dataZoom);
localStore.set(`scaleRate_${this.lineCode}`, JSON.stringify(param)); //
}
//
this.$store.dispatch('training/emitTipFresh');

View File

@ -37,7 +37,7 @@ export default {
'$store.state.map.mapDataLoadedCount': function () {
const lineCode = this.$jlmap.lineCode;
if (lineCode) {
this.menus = this.$theme.loadMenuComponent(lineCode);
this.menus = this.$theme.loadDispatchWorkMenuComponent(lineCode);
}
},
'$store.state.map.initJlmapLoadedCount': function (val) {

View File

@ -1,16 +1,17 @@
<template>
<div>
<div v-loading="loading" style="height: 100%">
<dispatcher-work v-if="picture === 'dispatchWork'" ref="dispatcherWork" />
<local-work v-else-if="picture === 'localWork'" ref="localWork" :centralized-station-map="centralizedStationMap" />
<message-board v-else-if="picture === 'messageBoard'" ref="messageBoard" />
<jl3d-drive v-else-if="picture === 'drivingPlan'" ref="jl3dDrive" />
<jl3d-device v-else-if="picture === 'jl3dModle'" ref="jl3dModle" />
<jl3d-passflow v-else-if="picture === 'cctvView'" ref="cctvView" />
<digital-stand v-else-if="picture === 'digitalStand'" ref="digitalStand" />
<traffic-terminal-work v-else-if="picture === 'trafficTerminal'" ref="trafficTerminalWork" :centralized-station-map="centralizedStationMap" />
<ibp-plate v-else-if="picture === 'ibp'" ref="ibpPlate" />
<big-train-runplan-manage v-else-if="picture === 'trafficManageTerminal'" ref="bigTrainRunplanManage" />
<dispatch-cmd v-if="datie" ref="dispatchCmd" @close="close" />
<dispatcher-loger v-if="datie" ref="dispatcherLoger" @close="close" />
<terminal-menu v-if="menuShow" ref="terminalMenu" @pictureChange="pictureChange" @popupTerminalShow="popupTerminalShow" />
<terminal-menu v-if="menuShow" ref="terminalMenu" @pictureChange="pictureChange" @popupTerminalShow="popupTerminalShow" @loadingChange="loadingChange" />
</div>
</template>
@ -22,35 +23,38 @@ import { defaultCallback, stateCallback } from '@/utils/subscribeCallback';
import DispatcherWork from './dispatchWork';
import LocalWork from './localWork';
import TerminalMenu from './terminalMenu';
import MessageBoard from '../messageBoard';
import DispatchCmd from '@/views/dispatcherStationManage/dispatchCmd';
import DispatcherLoger from '@/views/dispatcherLoger/index';
import Jl3dDrive from '@/views/jlmap3d/drive/jl3ddrive';
import Jl3dDevice from '@/views/jlmap3d/device/jl3ddevice';
import Jl3dPassflow from '@/views/jlmap3d/passflow/jl3dpassflow';
import DigitalStand from '@/views/jlmap3d/simulation/jl3dsimulation';
import IbpPlate from '@/views/ibp/ibpsystem/index';
import TrafficTerminalWork from './trafficTerminalWork';
import BigTrainRunplanManage from '@/views/bigTrainRunplanManage/index';
export default {
name: 'Index',
components: {
DispatcherWork,
LocalWork,
TerminalMenu,
MessageBoard,
DispatchCmd,
DispatcherLoger,
Jl3dDevice,
Jl3dDrive,
Jl3dPassflow,
IbpPlate,
TrafficTerminalWork
TrafficTerminalWork,
DigitalStand,
BigTrainRunplanManage
},
data() {
return {
picture: '',
menuShow: true,
centralizedStationList: [],
centralizedStationMap: {}
centralizedStationMap: {},
loading: false
};
},
computed: {
@ -65,6 +69,9 @@ export default {
},
datie() {
return ['16', '19'].includes(this.$route.query.lineCode);
},
roleDeviceCode() {
return this.$store.state.training.roleDeviceCode;
}
},
watch: {
@ -84,7 +91,6 @@ export default {
console.log('[ERROR] ', error);
this.mapViewLoaded(false);
}
}
},
mounted() {
@ -93,6 +99,7 @@ export default {
beforeDestroy() {
this.clearSubscribe();
this.$store.dispatch('map/mapClear');
this.$store.dispatch('training/setRoles', '');
this.$store.dispatch('map/initJlmapLoadedCountClear');
this.$store.dispatch('socket/clearSimulationRoleList');
},
@ -125,9 +132,15 @@ export default {
clearSubscribe(getTopic('CTC', this.group));
}
},
loadingChange() {
this.loading = true;
},
pictureChange(val) {
console.log(val, '--------------0');
this.picture = val;
if (val === 'ibp') {
this.$nextTick(() => { this.$refs.ibpPlate.show(this.roleDeviceCode, ''); });
}
this.$nextTick(() => { this.loading = false; });
},
popupTerminalShow(val) {
this.$refs[val].doShow();

View File

@ -49,7 +49,7 @@ export default {
'$store.state.map.mapDataLoadedCount': function () {
const lineCode = this.$jlmap.lineCode;
if (lineCode) {
this.menus = this.$theme.loadMenuComponent(lineCode);
this.menus = this.$theme.loadDispatchWorkMenuComponent(lineCode);
}
},
'$store.state.map.initJlmapLoadedCount': function (val) {

View File

@ -22,13 +22,13 @@ export default {
code: 'localWork',
roleList: ['STATION_SUPERVISOR', 'STATION_ASSISTANT', 'STATION_MASTER', 'STATION_SIGNALER', 'STATION_PASSENGER',
'STATION_SWITCH_MAN', 'STATION_FACILITATOR', 'STATION_WORKER', 'DEVICE_MANAGER', 'TRAIN_MASTER'],
click: this.localWorkShow
click: this.changePictureShow
},
{
name: '行调工作站',
code: 'dispatchWork',
roleList: ['DISPATCHER'],
click: this.dispatchWorkShow
click: this.changePictureShow
}
],
terminalMap:{
@ -37,13 +37,13 @@ export default {
name: '车务终端',
code: 'trafficTerminal',
roleList: ['STATION_SUPERVISOR'],
click: this.trafficTerminalShow
click: this.changePictureShow
},
{
name: '车务管理终端',
code: 'trafficManageTerminal',
roleList: ['STATION_SUPERVISOR'],
click: this.noEvent
click: this.changePictureShow
},
{
@ -64,38 +64,31 @@ export default {
name: 'cctv视图',
code: 'cctvView',
roleList: ['STATION_SUPERVISOR'],
click: this.noEvent
},
{
name: '故障设备',
code: 'jlmap3dFault',
roleList: ['STATION_SUPERVISOR'],
click: this.noEvent
click: this.changePictureShow
},
// {
// name: '',
// code: 'jlmap3dFault',
// roleList: ['STATION_SUPERVISOR'],
// click: this.noEvent
// },
{
name: '司机视角',
code: 'drivingPlan',
roleList: ['DRIVER'],
click: this.noEvent
click: this.changePictureShow
},
{
name: 'IBP盘',
code: 'ibp',
roleList: ['STATION_SUPERVISOR'],
click: this.ibpShow
click: this.changePictureShow
},
{
name: '数字沙盘',
code: 'digitalStand',
roleList: ['STATION_SUPERVISOR'],
click: this.noEvent
},
{ // {label:'', name:'messageBoard', click:this.messageBoard, isShow:false},
name: '留言板',
code: 'messageBoard',
roleList: ['DISPATCHER', 'STATION_SUPERVISOR', 'STATION_ASSISTANT', 'STATION_MASTER', 'STATION_SIGNALER', 'STATION_PASSENGER',
'STATION_SWITCH_MAN', 'STATION_FACILITATOR', 'STATION_WORKER', 'DEVICE_MANAGER', 'TRAIN_MASTER'],
click: this.messageBoardShow
click: this.changePictureShow
}
]
}
@ -116,9 +109,6 @@ export default {
},
roles() {
return this.$store.state.training.roles;
},
roleDeviceCode() {
return this.$store.state.trainingNew.roleDeviceCode;
}
},
watch: {
@ -155,15 +145,6 @@ export default {
this.active = code;
this.$emit('popupTerminalShow', 'dispatchCmd');
},
messageBoardShow(code) {
this.active = code;
console.log(this.active, 'messageB', code);
this.$emit('pictureChange', code);
},
ibpShow(code) {
this.active = code;
this.$refs.ibpPlate.show(this.roleDeviceCode, '');
},
close() {
this.active = 0;
},
@ -171,25 +152,20 @@ export default {
const localWorkRoleList = ['STATION_SUPERVISOR', 'STATION_ASSISTANT', 'STATION_MASTER', 'STATION_SIGNALER', 'STATION_PASSENGER', 'STATION_SWITCH_MAN',
'STATION_FACILITATOR', 'STATION_WORKER', 'DEVICE_MANAGER', 'TRAIN_MASTER'];
if (localWorkRoleList.includes(this.roles)) {
this.localWorkShow('localWork');
this.changePictureShow('localWork');
} else if (this.roles === 'DISPATCHER') {
this.dispatchWorkShow('dispatchWork');
this.changePictureShow('dispatchWork');
} else if (this.roles === 'MAINTAINER') {
//
}
},
dispatchWorkShow(code) {
changePictureShow(code) {
this.active = code;
this.$emit('pictureChange', code);
},
trafficTerminalShow(code) {
this.active = code;
this.$emit('pictureChange', code);
},
localWorkShow(code) {
this.active = code;
this.$emit('pictureChange', code);
this.$emit('loadingChange');
setTimeout(() => {
this.$emit('pictureChange', code);
}, 100);
}
}
};

View File

@ -8,7 +8,20 @@
<img :src="classIcon" class="teachMenu">
<span class="teachMenuTitle" :style="{color: $route.path.includes('classManage')?'#5BDBFF': '#000'}">班级管理</span>
</el-menu-item>
<el-submenu index="2">
<el-menu-item index="5" @click="clickMenu">
<!-- <img :src="classIcon" class="teachMenu"> -->
<i class="el-icon-user" />
<span class="teachMenuTitle" :style="{color: $route.path.includes('studentManage')?'#5BDBFF': '#000'}">学生管理</span>
</el-menu-item>
<el-menu-item index="6" @click="clickMenu">
<img :src="ruleIcon" class="teachMenu">
<span class="teachMenuTitle" :style="{color: $route.path.includes('trainingManage')?'#5BDBFF': '#000'}">实训教学管理</span>
</el-menu-item>
<el-menu-item index="7" @click="clickMenu">
<img :src="lessonIcon" class="teachMenu">
<span class="teachMenuTitle" :style="{color: $route.path.includes('theoryManage')?'#5BDBFF': '#000'}">理论题目管理</span>
</el-menu-item>
<!-- <el-submenu index="2">
<template slot="title">
<img :src="lessonIcon" class="teachMenu">
<span class="teachMenuTitle">课程管理</span>
@ -17,15 +30,15 @@
<el-menu-item index="2-1" class="lessonIcon" :style="{color: $route.path.includes('lessonManage')?'#5BDBFF': '#000'}" @click="clickMenu">发布课程管理</el-menu-item>
<el-menu-item index="2-2" class="lessonIcon" :style="{color: $route.path.includes('draftLessonManage')?'#5BDBFF': '#000'}" @click="clickMenu">草稿课程管理</el-menu-item>
</el-menu-item-group>
</el-submenu>
</el-submenu> -->
<el-menu-item index="3" @click="clickMenu">
<img :src="examIcon" class="teachMenu">
<span slot="title" class="teachMenuTitle" :style="{color: $route.path.includes('examManage')?'#5BDBFF': '#000'}">考试管理</span>
</el-menu-item>
<el-menu-item index="4" @click="clickMenu">
<!-- <el-menu-item index="4" @click="clickMenu">
<img :src="ruleIcon" class="teachMenu">
<span slot="title" :style="{color: $route.path.includes('ruleManage')?'#5BDBFF': '#000'}" class="teachMenuTitle">评价管理</span>
</el-menu-item>
</el-menu-item> -->
</el-menu>
<div class="lessonManageOther">
<router-view />
@ -79,6 +92,12 @@ export default {
this.$router.replace('/info/organization/examManage');
} else if (val.index === '4') {
this.$router.replace('/info/organization/ruleManage');
} else if (val.index === '5') {
this.$router.replace('/info/organization/studentManage');
} else if (val.index === '6') {
this.$router.replace('/info/organization/trainingManage');
} else if (val.index === '7') {
this.$router.replace('/info/organization/theoryManage');
}
},
back() {

View File

@ -1,15 +1,49 @@
<template>
<div style="height: 100%; overflow: auto;">
<QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" />
<select-role ref="selectRole" @reloadTable="reloadTable" />
</div>
<el-tabs v-model="activeName" style="height: 100%;margin: 10px;" type="border-card">
<el-tab-pane label="仿真系统" name="first" style="height: 100%;">
<el-collapse v-model="activeNames">
<el-collapse-item title="单客户端" name="1">
<div style="display: flex;flex-wrap:wrap; justify-content:center;height: 100%;overflow-y: auto;">
<template v-for="system in systemList">
<el-card v-if="system.simUsage === 'SINGLE_CLIENT'" :key="system.id" class="box-card">
<div style="text-align: center;font-size: 26px;font-weight: bolder;color: #0C161A;">{{ system.name }}</div>
<div style="font-size: 14px;color: #0C161A;text-indent: 28px;margin-top: 20px;">{{ system.desc }}</div>
<el-button style="position: absolute;bottom: 15px;left: 0;right: 0;margin: 0 auto;width: 60px;" size="small" type="primary" @click="enterSimulation(system)">进入</el-button>
</el-card>
</template>
</div>
</el-collapse-item>
<el-collapse-item title="多客户端" name="2">
<div style="display: flex;flex-wrap:wrap; justify-content:center;height: 100%;overflow-y: auto;">
<template v-for="system in systemList">
<el-card v-if="system.simUsage !== 'SINGLE_CLIENT'" :key="system.id" class="box-card">
<div style="text-align: center;font-size: 26px;font-weight: bolder;color: #0C161A;">{{ system.name }}</div>
<div style="font-size: 14px;color: #0C161A;text-indent: 28px;margin-top: 20px;">{{ system.desc }}</div>
<el-button style="position: absolute;bottom: 15px;left: 0;right: 0;margin: 0 auto;width: 60px;" size="small" type="primary" @click="enterSimulation(system)">进入</el-button>
</el-card>
</template>
</div>
</el-collapse-item>
</el-collapse>
</el-tab-pane>
<el-tab-pane label="地图权限" name="second">
<div style="height: 100%; overflow: auto;">
<QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" />
<select-role ref="selectRole" @reloadTable="reloadTable" />
</div>
</el-tab-pane>
</el-tabs>
</template>
<script>
import { listUserPermision } from '@/api/management/author';
import { queryMapSystemList } from '@/api/trainingPlatform';
import { superAdmin, admin } from '@/router/index';
import selectRole from './selectRole/list';
import LangStorage from '@/utils/lang';
import { launchFullscreen } from '@/utils/screen';
import { createSimulation } from '@/api/simulation';
import { getSessionStorage } from '@/utils/auth';
export default {
name: 'Author',
@ -19,8 +53,11 @@ export default {
data() {
return {
param: '',
loadingProjectList: ['login', 'design', 'xty', 'designxty', 'gzb', 'designxty', 'xadt', 'designxadt', 'drts', 'designdrts', 'hlsdrts', 'designhlsdrts', 'teaching', 'designteaching'],
activeName: 'first',
WhetherTypeList: [],
// EffectiveTypeList: [],
activeNames: ['1', '2'],
systemList: [],
pagerConfig: {
pageSize: 'pageSize',
pageIndex: 'pageNum'
@ -107,18 +144,33 @@ export default {
}
};
},
computed: {
project() {
return getSessionStorage('project');
}
},
watch: {
'$route.params.mapId': function (val) {
this.$refs.queryListPage.refresh(true);
this.initMapSystem();
}
},
mounted() {
this.loadInitData();
this.initMapSystem();
},
methods: {
handleRoleVest(index, row) {
this.$refs.selectRole.doShow(row.id);
},
initMapSystem() {
queryMapSystemList({mapId: this.$route.params.mapId}).then(resp => {
this.systemList = resp.data;
console.log(resp);
}).catch(() => {
this.$message.error('获取地图子系统列表失败!');
});
},
loadInitData() {
this.queryForm.queryObject.canDistribute.config.data = this.$ConstSelect.PermissionUseList;
},
@ -135,7 +187,40 @@ export default {
if (this.queryList && this.queryList.reload) {
this.queryList.reload();
}
},
enterSimulation(system) {
const data = {...system.paramVO, mapId: system.mapId};
createSimulation(data).then(resp => {
const query = { lineCode: this.$route.query.lineCode, group: resp.data, mapId: system.mapId, project: this.project};
if (this.loadingProjectList.includes(this.project)) {
this.$store.dispatch('app/transitionAnimations');
}
this.$router.push({ path: `/display/demon`, query: query });
launchFullscreen();
}).catch(error=>{
if (error.code == 10003) {
this.$messageBox(this.$t('error.createSimulationFailed') + ':您的仿真权限不足!');
} else {
this.$messageBox(this.$t('error.createSimulationFailed') + error.message);
}
this.disabled = false;
});
}
}
};
</script>
<style lang="scss" scoped>
.box-card {
width: 30%;
padding: 20px;
height: 220px;
margin: 20px;
position: relative;
}
/deep/ {
.el-tabs__content {
height: 100%;
}
}
</style>

View File

@ -7,6 +7,7 @@
<local-map ref="localMap" />
<export-map ref="exportMap" />
<map-sort ref="mapSort" />
<subsystem-manage ref="subsystemManage" />
<!--<input ref="files" type="file" class="file_box" accept=".json, application/json" style="display: none" @change="importf">-->
<el-dialog
title="一键领取权限"
@ -39,6 +40,7 @@ import MapSort from './mapSort';
import { superAdmin } from '@/router/index';
import { ProjectList } from '@/scripts/ProjectConfig';
import { getPermissionQuickly } from '@/api/management/author';
import SubsystemManage from './subsystem';
export default {
name: 'PublishMap',
@ -48,7 +50,8 @@ export default {
CopyMap,
LocalMap,
ExportMap,
MapSort
MapSort,
SubsystemManage
},
data() {
return {
@ -186,6 +189,11 @@ export default {
name: '领取权限',
handleClick: this.handlePermission,
type: 'default'
},
{
name: '子系统管理',
handleClick: this.subsystemManage,
type: 'default'
}
]
}
@ -465,6 +473,9 @@ export default {
this.mapId = row.id;
this.dialogVisible = true;
},
subsystemManage(index, row) {
this.$refs.subsystemManage.doShow(row);
},
permissionCommit() {
getPermissionQuickly(this.mapId, this.permissionNum).then(resp => {
this.dialogVisible = false;

View File

@ -0,0 +1,292 @@
<template>
<el-dialog
title="子系统管理"
:visible.sync="dialogVisible"
width="60%"
center
>
<el-button type="primary" size="small" style="position: relative;left: 90%;margin-bottom: 10px;" @click="handleAddSubsystem">新增</el-button>
<el-table v-loading="loading" :data="tableData" border style="width: 100%">
<el-table-column prop="name" label="名称" />
<el-table-column prop="simType" label="类型">
<template slot-scope="scope">
<span>{{ simTypeMap[scope.row.simType] }}</span>
</template>
</el-table-column>
<el-table-column prop="simUsage" label="使用方式">
<template slot-scope="scope">
<span>{{ simUsageMap[scope.row.simUsage] }}</span>
</template>
</el-table-column>
<el-table-column prop="desc" label="描述" width="400px" />
<el-table-column label="操作">
<template slot-scope="scope">
<el-button type="text" size="small" @click="updateRow(scope.row)">更新</el-button>
<el-button type="text" size="small" @click="deleteRow(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<el-dialog
width="30%"
:title="innerTitle"
:visible.sync="innerVisible"
center
append-to-body
>
<el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="120px" class="demo-ruleForm">
<el-form-item label="子系统名称:" prop="name">
<el-input v-model="ruleForm.name" style="width: 200px;" />
</el-form-item>
<el-form-item label="类型:" prop="type">
<el-select v-model="ruleForm.type" placeholder="请选择类型">
<el-option label="地铁" value="METRO" />
<el-option label="铁路/大铁" value="RAILWAY" />
<el-option label="应急调度" value="EMERGENCY" />
</el-select>
</el-form-item>
<el-form-item label="使用方式:" prop="usage">
<el-select v-model="ruleForm.usage" placeholder="请选择使用方式">
<el-option label="单角色仿真" value="SINGLE_MEMBER" />
<el-option label="单客户端仿真" value="SINGLE_CLIENT" />
<el-option label="综合演练" value="JOINT" />
</el-select>
</el-form-item>
<el-form-item v-if="ruleForm.usage === 'SINGLE_MEMBER' || ruleForm.usage === 'JOINT'" label="角色:" prop="memberType">
<el-select v-model="ruleForm.memberType" placeholder="请选择角色">
<el-option v-for="option in roleList" :key="option.value" :label="option.label" :value="option.value" />
</el-select>
</el-form-item>
<el-form-item v-if="stationRoles.includes(ruleForm.memberType)" label="车站:" prop="deviceCode">
<el-select v-model="ruleForm.deviceCode" placeholder="请选择设备">
<el-option v-for="option in stationList" :key="option.code" :label="option.name" :value="option.code" />
</el-select>
</el-form-item>
<el-form-item v-if="ruleForm.memberType === 'DRIVER'" label="列车:" prop="deviceCode">
<el-select v-model="ruleForm.deviceCode" placeholder="请选择设备">
<el-option v-for="option in trainList" :key="option.code" :label="option.code" :value="option.code" />
</el-select>
</el-form-item>
<el-form-item v-if="ruleForm.usage === 'SINGLE_CLIENT'" label="客户端:" prop="client">
<el-select v-model="ruleForm.client" placeholder="请选择使用客户端">
<el-option label="联锁" value="INTERLOCK" />
<el-option label="大屏" value="BIG_SCREEN" />
<el-option label="综合监控" value="ISCS" />
</el-select>
</el-form-item>
<el-form-item label="功能:" prop="function">
<el-select v-model="ruleForm.function" placeholder="请选择功能">
<el-option label="大客流" value="LPF" />
</el-select>
</el-form-item>
<el-form-item label="描述:" prop="desc">
<el-input
v-model="ruleForm.desc"
type="textarea"
:rows="2"
placeholder="请输入内容"
/>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="closeInner"> </el-button>
<el-button type="primary" @click="commit"> </el-button>
</span>
</el-dialog>
</el-dialog>
</template>
<script>
import { getStationListNeedAttendant } from '@/api/jmap/map';
import { queryMapSystemList, updateMapSystem, createMapSystem, deleteMapSystem } from '@/api/trainingPlatform';
export default {
name: 'Subsystem',
data() {
return {
dialogVisible: false,
tableData: [],
mapId: '',
loading: false,
innerVisible: false,
mapSystemId: '',
stationList: [],
trainList: [],
innerTitle: '',
ruleForm: {
name: '',
type: '',
usage: '',
memberType: '',
deviceCode: '',
client: '',
function: ''
},
simTypeMap: {
METRO: '地铁',
RAILWAY: '铁路/大铁',
EMERGENCY: '应急调度'
},
simUsageMap: {
SINGLE_MEMBER: '单角色仿真',
SINGLE_CLIENT: '单客户端仿真',
JOINT: '综合演练'
},
stationRoles: ['STATION_SUPERVISOR', 'STATION_ASSISTANT', 'STATION_MASTER', 'STATION_SIGNALER', 'STATION_PASSENGER', 'STATION_SWITCH_MAN',
'STATION_FACILITATOR', 'STATION_WORKER', 'TRAIN_MASTER'],
rules: {
name: [
{ required: true, message: '请输入子系统名称', trigger: 'blur' }
],
type: [
{ required: true, message: '请选择子系统类型', trigger: 'change' }
],
usage: [
{ required: true, message: '请选择使用方式', trigger: 'change' }
]
},
roleList: [
{label: '行调', value: 'DISPATCHER'},
{label: '行值', value: 'STATION_SUPERVISOR'},
{label: '司机', value: 'DRIVER'},
{label: '通号', value: 'MAINTAINER'},
{label: '车辆段信号楼', value: 'DEPOT_DISPATCHER'},
{label: '停车场信号楼', value: 'PARKING_LOT_SIGNAL_BUILDING'},
{label: '车站助理', value: 'STATION_ASSISTANT'},
{label: '车站站长', value: 'STATION_MASTER'},
{label: '车站信号员', value: 'STATION_SIGNALER'},
{label: '车站客运员', value: 'STATION_PASSENGER'},
{label: '车站扳道员', value: 'STATION_SWITCH_MAN'},
{label: '车站引导员', value: 'STATION_FACILITATOR'},
{label: '车站工务工', value: 'STATION_WORKER'},
{label: '车务段段长', value: 'TRAIN_MASTER'}
]
};
},
methods: {
handleAddSubsystem() {
this.innerTitle = '创建子系统';
this.innerVisible = true;
},
doShow(data) {
if (data && data.id) {
this.mapId = data.id;
this.stationList = [];
getStationListNeedAttendant(data.id).then(resp => {
if (resp.data && resp.data.length) {
this.stationList = resp.data;
}
}).catch(() => {
this.$message.error('获取车站列表失败');
});
this.reload();
this.dialogVisible = true;
}
},
reload() {
this.loading = true;
this.tableData = [];
queryMapSystemList({mapId: this.mapId}).then(resp => {
if (resp.data && resp.data.length) {
this.tableData = resp.data;
}
this.loading = false;
}).catch(() => {
this.loading = false;
this.$message.error('获取地图系统列表!');
});
},
doClose() {
this.dialogVisible = false;
},
deleteRow(row) {
this.$confirm('删除子系统,是否继续?', '提 示', {
confirmButtonText: '确 定',
cancelButtonText: '取 消',
type: 'warning'
}).then(() => {
deleteMapSystem(row.id).then(resp => {
this.reload();
}).catch(error => {
this.$message.error(`删除子系统: ${error.message}`);
});
}).catch( () => { });
},
updateRow(row) {
this.mapSystemId = row.id;
this.ruleForm.name = row.name;
this.ruleForm.desc = row.desc;
this.ruleForm.type = row.paramVO.type;
this.ruleForm.usage = row.paramVO.usageInfo.usage;
this.ruleForm.client = row.paramVO.usageInfo.param.client;
this.ruleForm.memberType = row.paramVO.usageInfo.param.memberType;
this.ruleForm.deviceCode = row.paramVO.usageInfo.param.deviceCode;
const functionList = Object.keys(row.paramVO.functionMap);
if (functionList && functionList.length) {
this.ruleForm.function = functionList[0];
}
this.innerTitle = '修改子系统';
this.innerVisible = true;
},
commit() {
const functionMap = {};
if (this.ruleForm.function) {
functionMap[this.ruleForm.function] = null;
}
const data = {
mapId: this.mapId,
name: this.ruleForm.name,
desc: this.ruleForm.desc,
paramVO: {
type: this.ruleForm.type,
usageInfo: {
usage: this.ruleForm.usage,
param: {
client: this.ruleForm.client,
memberType: this.ruleForm.memberType,
deviceCode: this.ruleForm.deviceCode
}
},
functionMap: functionMap
}
};
if (this.innerTitle === '创建子系统') {
createMapSystem(data).then(resp => {
this.innerVisible = false;
this.reload();
this.$message.success('创建子系统成功!');
this.closeInner();
}).catch(() => {
this.$message.error('创建子系统失败!');
});
} else {
data.id = this.mapSystemId;
updateMapSystem(data).then(resp => {
this.innerVisible = false;
this.reload();
this.closeInner();
this.$message.success('修改子系统成功!');
}).catch(() => {
this.$message.error('修改子系统失败!');
});
}
},
closeInner() {
this.mapSystemId = '';
this.ruleForm = {
name: '',
type: '',
usage: '',
memberType: '',
deviceCode: '',
client: '',
function: ''
};
this.innerVisible = false;
this.$refs.ruleForm.resetFields();
}
}
};
</script>
<style scoped>
</style>

View File

@ -0,0 +1,186 @@
<template>
<el-dialog :visible="show" center :close-on-click-modal="false" title="新增文件" :before-close="doClose" destroy-on-close>
<el-form ref="form" :model="formData" inline :rules="rules">
<el-form-item label="目录" required prop="directory">
<el-select v-model="formData.directory">
<el-option v-for="dir in directories" :key="dir" :label="dir" :value="dir"></el-option>
</el-select>
</el-form-item>
<el-form-item label="标题" required prop="title">
<el-input v-model="formData.title"></el-input>
</el-form-item>
</el-form>
<div class="wrapper">
<label v-show="showUpload" for="file">
<el-card shadow="hover" class="card">
<i class="el-icon-upload"></i>
</el-card>
</label>
<input ref="file" @change="onUploadChange" style="display: none;" type="file" id="file" />
<div v-show="!showUpload" class="preview" @mouseenter="showDelete = true" @mouseleave="showDelete = false">
<el-card shadow="hover" class="card">
<div class="file-type">{{ fileType }}</div>
<div class="file-name">{{ formData.title }}.{{ ext }}</div>
<div class="delete" v-show="showDelete" @click="handleDelete">
<i class="el-icon-delete-solid"></i>
</div>
</el-card>
</div>
</div>
<div class="path-display">文件存储路径: {{ formData.directory }}/{{ formData.title }}.{{ ext }}</div>
<footer>
<el-button type="primary" size="small" @click="handleUpload">上传</el-button>
<el-button size="small" @click="doClose">取消</el-button>
</footer>
</el-dialog>
</template>
<script>
import { directories } from './dirs'
import { getUploadUrl } from '@/api/projectConfig'
import { checkIsExist, saveFileInfo } from '@/api/management/fileManage'
export default {
name: 'CreateFile',
emits: ['close'],
data() {
return {
show: false,
showUpload: true,
showDelete: false,
directories,
fileType: '',
ext: '',
formData: {
directory: '',
title: '',
},
rules: {
directory: [{ required: true, message: '请选择目录', trigger: 'blur' }],
title: [{ required: true, message: '请输入标题', trigger: 'blur' }],
},
}
},
methods: {
doShow() {
this.show = true
},
doClose() {
this.show = false
this.handleDelete()
this.formData.directory = ''
this.formData.title = ''
this.$emit('close')
},
onUploadChange(e) {
const fileList = e.target.files
if (!fileList.length) return
this.showUpload = false
const devideIndex = fileList[0].name.lastIndexOf('.')
this.formData.title = fileList[0].name.slice(0, devideIndex)
this.ext = fileList[0].name.slice(devideIndex + 1)
this.fileType = fileList[0].type.split('/').pop()
},
handleUpload() {
const form = this.$refs.form
const file = this.$refs.file.files[0]
const params = {
directory: this.formData.directory,
fileName: `${this.formData.title}.${this.ext}`,
}
const execUpload = () => {
getUploadUrl({ ...params, method: 'PUT' }).then(res => {
const url = res.data
const xhr = new XMLHttpRequest()
xhr.open('PUT', url)
xhr.upload.onload = () => {
saveFileInfo({ ...params, title: this.formData.title }).then(res => {
this.$message.success('上传成功')
this.doClose()
})
}
xhr.send(file)
})
}
form.validate().then(valid => {
if (valid && file.size > 0) {
checkIsExist(params).then(resp => {
console.log(resp)
if (!resp.data) {
execUpload()
} else {
this.$confirm('该目录下有同名文件, 是否覆盖?', this.$t('global.tips'), {
confirmButtonText: this.$t('global.confirm'),
cancelButtonText: this.$t('global.cancel'),
type: 'warning',
}).then(execUpload)
}
})
}
})
},
handleDelete() {
this.$refs.file.value = ''
this.showUpload = true
this.formData.title = ''
this.fileType = ''
},
},
}
</script>
<style lang="scss" scoped>
footer {
display: flex;
justify-content: space-evenly;
margin-top: 20px;
}
.block {
user-select: none;
padding: 5px;
color: #909399;
}
.wrapper {
display: flex;
justify-content: center;
.card {
display: flex;
justify-content: center;
align-items: center;
position: relative;
color: #909399;
cursor: pointer;
width: 150px;
height: 150px;
.el-icon-upload {
font-size: 4em;
}
.file-type {
text-align: center;
font-size: 4rem;
line-height: 6rem;
}
.file-name {
line-height: 1.2em;
text-align: center;
}
.delete {
position: absolute;
display: flex;
justify-content: center;
align-items: center;
top: 0;
left: 0%;
width: 100%;
height: 100%;
background-color: #000000;
opacity: 0.5;
transition-duration: 1s;
transition-property: all;
font-size: 3em;
}
}
}
.path-display {
margin-top: 10px;
}
</style>

View File

@ -0,0 +1,2 @@
export const directories = ['logo', 'recognition', 'txt', 'image', 'pdf']

View File

@ -0,0 +1,117 @@
<template>
<div class="file-manage">
<QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" />
<CreateFile ref="createFile" @close="refreshList" />
</div>
</template>
<script>
import { getFileList, deleteFile } from '@/api/management/fileManage'
import { getUploadUrl } from '@/api/projectConfig'
import CreateFile from './create'
import { directories } from './dirs'
export default {
name: 'fileManage',
components: { CreateFile },
data() {
return {
pagerConfig: {
pageSize: 'pageSize',
pageIndex: 'pageNum',
},
queryForm: {
queryObject: {
title: {
type: 'text',
label: '名称:',
},
directory: {
type: 'select',
label: '目录:',
config: {
data: directories.map(dir => ({ value: dir, label: dir })),
},
},
},
},
queryList: {
query: this.queryFileList,
columns: [
{
title: '标题',
prop: 'title',
},
{
title: '目录',
prop: 'directory',
},
{
title: '创建时间',
prop: 'createTime',
},
{
type: 'button',
title: this.$t('global.operate'),
width: '180',
buttons: [
{
name: '复制路径',
handleClick: this.copyPath,
type: 'primary',
},
{
name: '删除',
handleClick: this.deleteFile,
type: 'danger',
},
],
},
],
actions: [{ text: this.$t('global.add'), handler: this.createFile }],
},
}
},
methods: {
queryFileList(params) {
return getFileList(params)
},
createFile() {
this.$refs.createFile.doShow()
},
refreshList() {
this.$refs.queryListPage.refresh(true)
},
deleteFile(idx, row) {
this.$confirm(`确认删除 "/${row.directory}/${row.title}" 吗?`, this.$t('global.tips')).then(() => {
getUploadUrl({
directory: row.directory,
fileName: row.fileName,
method: 'DELETE',
}).then(resp => {
const url = resp.data
const xhr = new XMLHttpRequest()
xhr.open('DELETE', url)
xhr.onload = () => {
deleteFile(row.id).then(this.refreshList)
this.$message.success('删除成功')
}
xhr.send()
})
})
},
copyPath(idx, row) {
const path = `${this.$store.state.user.ossUrl}/${row.directory}/${row.fileName}`
console.log(path)
navigator.clipboard.writeText(path).then(() => {
this.$message.success('文件路径已经复制到粘贴板')
})
},
},
}
</script>
<style lang="scss" scoped>
.file-manage {
padding: 20px;
}
</style>

View File

@ -0,0 +1,22 @@
<template>
<div class="temporary">
<span>功能实现中......</span>
</div>
</template>
<script>
export default {
name: 'Temporary',
components: {},
data() {
return {};
}
};
</script>
<style lang="scss" scoped>
.temporary {
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
</style>

View File

@ -0,0 +1,12 @@
<template>
<router-view />
</template>
<script>
export default {
name: 'NullIndex',
components: {},
data() {
return {};
}
};
</script>

View File

@ -11,36 +11,27 @@
<el-tree
ref="tree"
:data="treeList"
node-key="key"
node-key="id"
:props="{children:'children',label:'name'}"
highlight-current
:span="22"
:filter-node-method="filterNode"
:default-expanded-keys="expandList"
@node-click="clickEvent"
@node-expand="nodeExpand"
@node-collapse="nodeCollapse"
>
<span slot-scope="{ node }">
<span
class="el-icon-tickets"
/>
<span v-if="node.data.id ==='Simulation'" :id="node.data.key">&nbsp;{{ node.data.name+ $t('global.simulationSystem') }}</span>
<span v-else-if="node.data.id ==='Lesson'" :id="node.data.key">&nbsp;{{ node.data.name+ $t('global.lessonSystem') }}</span>
<span v-else-if="node.data.id ==='Exam'" :id="node.data.key">&nbsp;{{ node.data.name+ $t('global.examSystem') }}</span>
<span v-else-if="node.data.id ==='Plan'" :id="node.data.key">&nbsp;{{ node.data.name+ $t('global.runPlanSystem') }}</span>
<span v-else :id="node.data.key">&nbsp;{{ node.data.name }}</span>
<span :id="node.data.id">&nbsp;{{ node.data.name }}</span>
</span>
</el-tree>
</div>
</div>
</template>
<script>
import { getTrainingSystemList, getSubSystemInfo, getSubSystemByProjectCode } from '@/api/trainingPlatform';
import { getPublishMapInfo } from '@/api/jmap/map';
import { listPublishMap } from '@/api/jmap/map';
import { UrlConfig } from '@/scripts/ConstDic';
import FilterCity from '@/views/components/filterCity';
import localStore from 'storejs';
import { getSessionStorage } from '@/utils/auth';
import { GetMapListByProjectList } from '@/scripts/ProjectConfig';
@ -55,7 +46,6 @@ export default {
filterText: '',
treeList: [],
mapId: '',
expandList: [],
filterSelect: ''
};
},
@ -86,76 +76,10 @@ export default {
if (!value) return true;
return data.name.includes(value);
},
clickEvent(obj, data, ele, isReplace = false) {
if (ele) {
if ( ele.expanded) {
ele.expanded = false;
} else {
ele.expanded = true;
}
}
localStore.set('trainingPlatformCheckId' + this.filterSelect + this.userId + this.project, obj.key);
this.mapId = obj.key.split('-')[0];
if ( obj.type === 'Map') {
this.mapId = obj.id;
const router = { path: `${UrlConfig.trainingPlatform.permission}/${this.mapId}`};
this.toNextPage(isReplace, router);
} else if ( obj.type === 'System' ) {
const router = { path: `${UrlConfig.trainingPlatform.secondaryHome}`, query: { type: obj.id } };
this.toNextPage(isReplace, router);
} else if ( obj.type === 'MapSystem') {
getSubSystemInfo(obj.id).then(resp => { //
let router = '';
switch (resp.data.type) {
case 'Exam':
// this.setLocalRoute(`${UrlConfig.trainingPlatform.examHome}/${obj.id}`);
// router = localStore.get('examDetail' + obj.id);
// if (!router) { router = { path: `${UrlConfig.trainingPlatform.examHome}/${obj.id}`}; }
// this.toNextPage(isReplace, router);
router = { path: `${UrlConfig.trainingPlatform.examHome}/${obj.id}`};
this.toNextPage(isReplace, router);
break;
case 'Lesson':
this.setLocalRoute(`${UrlConfig.trainingPlatform.teachHome}/${obj.id}`);
router = { path: `${UrlConfig.trainingPlatform.teachHome}/${obj.id}`};
this.toNextPage(isReplace, router);
break;
case 'Simulation':
if (resp.data.prdType == '08') {
//
getPublishMapInfo(this.mapId).then(rest => {
this.setLocalRoute(`${UrlConfig.trainingPlatform.runPlan}/${this.mapId}?lineCode=${rest.data.lineCode}`);
router = { path: `${UrlConfig.trainingPlatform.runPlan}/${this.mapId}`, query: { lineCode: rest.data.lineCode}};
this.toNextPage(isReplace, router);
});
} else {
this.setLocalRoute(`${UrlConfig.trainingPlatform.prodDetail}/${obj.id}?mapId=${this.mapId}`);
router = { path: `${UrlConfig.trainingPlatform.prodDetail}/${obj.id}`, query: { mapId: this.mapId}};
this.toNextPage(isReplace, router);
}
break;
}
}).catch((error) => {
if (error.code === '40004') {
this.$messageBox(this.$t('systemGenerate.getSubSystemInfoFail'));
}
});
}
},
toNextPage(isReplace, router) {
isReplace ? this.$router.replace(router) : this.$router.push(router);
},
setLocalRoute(path) {
localStore.set('trainingPlatformRoute' + this.userId + this.project, path);
},
forTree(item) {
item.children && item.children.forEach(childrenItem => {
childrenItem.key = item.key + '-' + childrenItem.id;
if (childrenItem.children && childrenItem.children.length) {
this.forTree(childrenItem);
}
});
clickEvent(obj, data, ele) {
this.mapId = obj.id;
const router = { path: `${UrlConfig.trainingPlatform.permission}/${this.mapId}`, query: { lineCode: obj.lineCode }};
this.$router.push(router);
},
async refresh(filterSelect) {
this.loading = true;
@ -164,92 +88,20 @@ export default {
try {
let res = {};
if (this.IsProject) {
res = await getSubSystemByProjectCode();
res = await listPublishMap({project: this.project});
} else {
res = await getTrainingSystemList(filterSelect);
}
this.$emit('goRoutePath', res.data);
res.data && res.data.forEach(item =>{
item.key = item.id;
this.forTree(item);
});
if (this.project === 'cgy') {
this.treeList = [];
res.data.forEach(item => {
const childList = [];
if (item && item.children && item.children.length > 3) {
item.children.forEach(elem => {
if (elem.id === 'Lesson') {
childList[0] = elem;
} else if (elem.id === 'Exam') {
childList[3] = elem;
} else if (elem.id === 'Simulation') {
childList[1] = elem;
} else {
childList[2] = elem;
}
});
item.children = childList;
}
});
res = await listPublishMap({ cityCode:filterSelect});
}
this.treeList = res.data;
this.getExpandList(filterSelect);
this.$nextTick(() => {
let checkId = localStore.get('trainingPlatformCheckId' + filterSelect + this.userId + this.project) || null;
checkId = checkId && checkId.includes('-') ? checkId : null;
this.$refs.tree && this.$refs.tree.setCurrentKey(checkId);
if (!this.$route.path.includes('result') && !this.$route.path.includes('/trainingPlatform/teach/')) {
checkId && this.findTree(this.treeList, checkId);
!checkId && this.treeList && this.treeList.length && this.clickEvent(this.treeList[0], {data: this.treeList[0]});
}
setTimeout(()=> {
if (checkId) {
const checkIdDom = document.getElementById(checkId);
const mapTreeDom = document.getElementById('trainingMapTree');
if (checkIdDom && mapTreeDom) {
mapTreeDom.scrollTop = checkIdDom.offsetTop;
}
}
this.loading = false;
}, 200);
this.$refs.tree && this.$refs.tree.setCurrentKey(this.$route.params.mapId + '');
});
this.$emit('goRoutePath', res.data);
this.loading = false;
} catch (error) {
this.loading = false;
this.$message.error(this.$t('error.refreshFailed'));
}
},
/* 根据localstorage缓存的trainingPlatformCheckId跳转右侧显示页面 */
findTree(treeList, checkId, data) {
treeList && treeList.length && treeList.forEach(item =>{
if (item.type === 'Map') {
data = item;
}
if (checkId === item.key) {
this.clickEvent(item, {data: data}, null, true);
} else {
this.findTree(item.children, checkId, data);
}
});
},
nodeExpand(obj, node, ele) {
const key = obj.key;
this.expandList = this.expandList.filter(item => item !== key);
this.expandList.push(key);
localStore.set('trainIngPlatformExpandList' + this.filterSelect + this.userId + this.project, this.expandList);
},
nodeCollapse(obj, node, ele) {
const key = obj.key;
this.expandList = this.expandList.filter(item => (item !== key && !item.startsWith(`${key}-`)));
localStore.set('trainIngPlatformExpandList' + this.filterSelect + this.userId + this.project, this.expandList);
},
getExpandList(filterSelect) {
this.expandList = [];
let expand = localStore.get('trainIngPlatformExpandList' + filterSelect + this.userId + this.project);
expand = expand ? (expand + '').split(',') : '';
if (expand instanceof Array) {
this.expandList = expand;
}
}
}
};

View File

@ -42,15 +42,7 @@ export default {
goRoutePath(data) {
const againEnter = getSessionStorage('againEnter') || null;
if (!againEnter && !this.$route.query.thirdJump) {
const project = getSessionStorage('project');
const userId = this.$store.state.user.id;
const path = localStore.get('trainingPlatformRoute' + userId + project);
if (path && path.startsWith('/trainingPlatform')) {
localStore.set('orignalTrainingPlatformRoute' + userId + project, `/trainingPlatform/permission/${data[0].id}`);
this.$router.push(path);
} else if (data && data[0]) {
this.$router.push(`/trainingPlatform/permission/${data[0].id}`);
}
this.$router.push(`/trainingPlatform/permission/${data[0].id}?lineCode=${data[0].lineCode}`);
setSessionStorage('againEnter', true);
}
}