Merge branch 'test_dispaly' of https://git.code.tencent.com/lian-cbtc/jl-client into test_dispaly
This commit is contained in:
commit
c6af3c8027
19
src/App.vue
19
src/App.vue
@ -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 });
|
||||
},
|
||||
|
36
src/api/management/fileManage.js
Normal file
36
src/api/management/fileManage.js
Normal 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',
|
||||
})
|
||||
}
|
@ -537,3 +537,11 @@ export function queryPaTimedList(group, params) {
|
||||
params
|
||||
});
|
||||
}
|
||||
/** 创建仿真 */
|
||||
export function createSimulation(data) {
|
||||
return request({
|
||||
url: `/simulation/new`,
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
|
@ -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'
|
||||
});
|
||||
}
|
||||
|
@ -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
|
||||
};
|
||||
|
44
src/i18n/langs/en/newRouter.js
Normal file
44
src/i18n/langs/en/newRouter.js
Normal 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'
|
||||
};
|
@ -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',
|
||||
}
|
||||
|
@ -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
|
||||
};
|
||||
|
44
src/i18n/langs/zh/newRouter.js
Normal file
44
src/i18n/langs/zh/newRouter.js
Normal 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预录管理'
|
||||
};
|
@ -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: '文件上传管理',
|
||||
}
|
||||
|
@ -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', '');
|
||||
|
@ -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';
|
||||
|
120
src/jmapNew/theme/components/menus/menuBarNew.vue
Normal file
120
src/jmapNew/theme/components/menus/menuBarNew.vue
Normal 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>
|
@ -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);
|
||||
|
355
src/jmapNew/theme/fuzhou_01/menus/dispatchWorkMenu.vue
Normal file
355
src/jmapNew/theme/fuzhou_01/menus/dispatchWorkMenu.vue
Normal 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>
|
374
src/jmapNew/theme/fuzhou_01/menus/dispatchWorkMenuBar.vue
Normal file
374
src/jmapNew/theme/fuzhou_01/menus/dispatchWorkMenuBar.vue
Normal 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>
|
@ -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');
|
||||
|
355
src/jmapNew/theme/fuzhou_01/menus/localWorkMenu.vue
Normal file
355
src/jmapNew/theme/fuzhou_01/menus/localWorkMenu.vue
Normal 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>
|
285
src/jmapNew/theme/fuzhou_01/menus/localWorkMenuBar.vue
Normal file
285
src/jmapNew/theme/fuzhou_01/menus/localWorkMenuBar.vue
Normal 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>
|
@ -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>
|
||||
|
@ -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();
|
||||
|
@ -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顺序 */
|
||||
|
@ -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) => {
|
||||
|
@ -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
75
src/views/case/index.vue
Normal 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>
|
@ -124,6 +124,7 @@ export default {
|
||||
},
|
||||
// 完成跳转处理
|
||||
finish(data) {
|
||||
console.log('finish');
|
||||
this.active = 0;
|
||||
const type = this.$route.query.permissionType;
|
||||
if (type === PermissionType.LESSON) {
|
||||
|
@ -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);
|
||||
|
@ -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 });
|
||||
}
|
||||
}
|
||||
|
@ -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>
|
||||
|
@ -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');
|
||||
|
@ -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) {
|
||||
|
@ -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();
|
||||
|
@ -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) {
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -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() {
|
||||
|
@ -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>
|
||||
|
@ -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;
|
||||
|
292
src/views/publish/publishMap/subsystem.vue
Normal file
292
src/views/publish/publishMap/subsystem.vue
Normal 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>
|
186
src/views/system/fileUploadManage/create.vue
Normal file
186
src/views/system/fileUploadManage/create.vue
Normal 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>
|
2
src/views/system/fileUploadManage/dirs.js
Normal file
2
src/views/system/fileUploadManage/dirs.js
Normal file
@ -0,0 +1,2 @@
|
||||
export const directories = ['logo', 'recognition', 'txt', 'image', 'pdf']
|
||||
|
117
src/views/system/fileUploadManage/index.vue
Normal file
117
src/views/system/fileUploadManage/index.vue
Normal 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>
|
22
src/views/temporary/index.vue
Normal file
22
src/views/temporary/index.vue
Normal 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>
|
12
src/views/temporary/transitionIndex.vue
Normal file
12
src/views/temporary/transitionIndex.vue
Normal file
@ -0,0 +1,12 @@
|
||||
<template>
|
||||
<router-view />
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
name: 'NullIndex',
|
||||
components: {},
|
||||
data() {
|
||||
return {};
|
||||
}
|
||||
};
|
||||
</script>
|
@ -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"> {{ node.data.name+ $t('global.simulationSystem') }}</span>
|
||||
<span v-else-if="node.data.id ==='Lesson'" :id="node.data.key"> {{ node.data.name+ $t('global.lessonSystem') }}</span>
|
||||
<span v-else-if="node.data.id ==='Exam'" :id="node.data.key"> {{ node.data.name+ $t('global.examSystem') }}</span>
|
||||
<span v-else-if="node.data.id ==='Plan'" :id="node.data.key"> {{ node.data.name+ $t('global.runPlanSystem') }}</span>
|
||||
<span v-else :id="node.data.key"> {{ node.data.name }}</span>
|
||||
<span :id="node.data.id"> {{ 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user