代码调整
This commit is contained in:
parent
b8ab34b766
commit
8461e49e59
@ -106,3 +106,11 @@ export function deleteMapSystem(id) {
|
|||||||
method: 'delete'
|
method: 'delete'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
/** 分页查询地图系统 */
|
||||||
|
export function queryMapSystemPaged(params) {
|
||||||
|
return request({
|
||||||
|
url: `/api/mapSystem/new/paged`,
|
||||||
|
method: 'get',
|
||||||
|
params
|
||||||
|
});
|
||||||
|
}
|
||||||
|
@ -40,5 +40,6 @@ export default {
|
|||||||
userRulesManage: 'User Rights Statistics',
|
userRulesManage: 'User Rights Statistics',
|
||||||
fileManage: 'File Manage',
|
fileManage: 'File Manage',
|
||||||
frontResourceManage: 'Front-end Resource Management',
|
frontResourceManage: 'Front-end Resource Management',
|
||||||
iscsPrerecordManage: 'ISCS Advance record management'
|
iscsPrerecordManage: 'ISCS Advance record management',
|
||||||
|
subsystemManage: 'Subsystem Manage'
|
||||||
};
|
};
|
||||||
|
@ -40,5 +40,6 @@ export default {
|
|||||||
userRulesManage: '用户权限管理',
|
userRulesManage: '用户权限管理',
|
||||||
fileManage: '文件管理',
|
fileManage: '文件管理',
|
||||||
frontResourceManage: '前端资源管理',
|
frontResourceManage: '前端资源管理',
|
||||||
iscsPrerecordManage: 'ISCS预录管理'
|
iscsPrerecordManage: 'ISCS预录管理',
|
||||||
|
subsystemManage: '子系统管理'
|
||||||
};
|
};
|
||||||
|
@ -63,7 +63,7 @@ function handleRoute(to, next, loginPath) {
|
|||||||
// 除没有动态改变权限的需求可直接next() 删下方权限判断
|
// 除没有动态改变权限的需求可直接next() 删下方权限判断
|
||||||
if (to.path === '/404' && to.redirectedFrom === '/') {
|
if (to.path === '/404' && to.redirectedFrom === '/') {
|
||||||
const project = getSessionStorage('project');
|
const project = getSessionStorage('project');
|
||||||
console.log(localStore.get('trainingPlatformRoute' + store.getters.id + project, '-------------'));
|
console.log(localStore.get('trainingPlatformRoute' + store.getters.id + project, '-------------'));
|
||||||
next(localStore.get('trainingPlatformRoute' + store.getters.id + project) || '/trainingPlatform');
|
next(localStore.get('trainingPlatformRoute' + store.getters.id + project) || '/trainingPlatform');
|
||||||
} else {
|
} else {
|
||||||
next();
|
next();
|
||||||
|
@ -132,9 +132,10 @@ const MapPreviewNew = () => import('@/views/designPlatform/mapPreviewNew');
|
|||||||
const BigScreen = () => import('@/views/designPlatform/bigScreen');
|
const BigScreen = () => import('@/views/designPlatform/bigScreen');
|
||||||
const BigSplitScreen = () => import('@/views/designPlatform/bigSplitScreen');
|
const BigSplitScreen = () => import('@/views/designPlatform/bigSplitScreen');
|
||||||
|
|
||||||
const Package = () => import('@/views/package/index');
|
const SimulationPlatform = () => import('@/views/trainingPlatform/simulation');
|
||||||
|
|
||||||
const PublishMap = () => import('@/views/publish/publishMap/index');
|
const PublishMap = () => import('@/views/publish/publishMap/index');
|
||||||
|
const SubsystemManage = () => import('@/views/publish/publishMap/subsystem');
|
||||||
const PublishMapDetail = () => import('@/views/publish/publishMap/list'); // 发布历史
|
const PublishMapDetail = () => import('@/views/publish/publishMap/list'); // 发布历史
|
||||||
const PublishLesson = () => import('@/views/publish/publishLesson/index');
|
const PublishLesson = () => import('@/views/publish/publishLesson/index');
|
||||||
const RunPlanTemplate = () => import('@/views/publish/runPlanTemplate/index');
|
const RunPlanTemplate = () => import('@/views/publish/runPlanTemplate/index');
|
||||||
@ -919,9 +920,9 @@ export const asyncRouter = [
|
|||||||
component: ExamResult,
|
component: ExamResult,
|
||||||
hidden: true
|
hidden: true
|
||||||
},
|
},
|
||||||
{ // 线路权限列表
|
{
|
||||||
path: 'permission/:mapId',
|
path: 'simulation/:mapId',
|
||||||
component: Package,
|
component: SimulationPlatform,
|
||||||
hidden: true
|
hidden: true
|
||||||
},
|
},
|
||||||
{ // 二级home页面
|
{ // 二级home页面
|
||||||
@ -1775,6 +1776,14 @@ export const asyncRouter = [
|
|||||||
meta: {
|
meta: {
|
||||||
i18n: 'newRouter.linePacketManage'
|
i18n: 'newRouter.linePacketManage'
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'subsystem',
|
||||||
|
component: SubsystemManage,
|
||||||
|
hidden: true,
|
||||||
|
meta: {
|
||||||
|
i18n: 'newRouter.subsystemManage'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -129,7 +129,7 @@ class MenuContextHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
covertList(list) {
|
covertList(list) {
|
||||||
const menu = [...list];
|
let menu = [...list];
|
||||||
const selected = this.getCurrentStateObject();
|
const selected = this.getCurrentStateObject();
|
||||||
const control = this.getStationControl(selected);
|
const control = this.getStationControl(selected);
|
||||||
if (control && !store.state.scriptRecord.audioPlay) {
|
if (control && !store.state.scriptRecord.audioPlay) {
|
||||||
|
@ -101,7 +101,6 @@ export default {
|
|||||||
try {
|
try {
|
||||||
let res;
|
let res;
|
||||||
try {
|
try {
|
||||||
debugger;
|
|
||||||
res = await getPublishMapInfo(this.mapId);
|
res = await getPublishMapInfo(this.mapId);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if (error.code == 30001 || error.code == 10007) {
|
if (error.code == 30001 || error.code == 10007) {
|
||||||
|
258
src/views/publish/publishMap/chooseTraining.vue
Normal file
258
src/views/publish/publishMap/chooseTraining.vue
Normal file
@ -0,0 +1,258 @@
|
|||||||
|
<template>
|
||||||
|
<el-dialog width="80%" :title="innerTitle" :visible.sync="innerVisible" center append-to-body>
|
||||||
|
<QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" style="width: 98%;margin-left:1%;margin-top:20px;" />
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import ConstConfig from '@/scripts/ConstConfig';
|
||||||
|
import Cookies from 'js-cookie';
|
||||||
|
import { pageQueryTrainingNew } from '@/api/jmap/training';
|
||||||
|
import { getPublishMapListOnline } from '@/api/jmap/map';
|
||||||
|
import { getCmdList } from '@/api/management/dictionary';
|
||||||
|
import { getTrainingOperateTypeMap } from '@/scripts/ConstDic';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'TrainingGeneration',
|
||||||
|
components: {
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
innerVisible: false,
|
||||||
|
innerTitle: '实训选择',
|
||||||
|
mapIdList: [],
|
||||||
|
trainingTypeList: [],
|
||||||
|
trainingOperateTypeMap: {
|
||||||
|
Switch: [],
|
||||||
|
Section: [],
|
||||||
|
Signal: [],
|
||||||
|
Stand: [],
|
||||||
|
Station: [],
|
||||||
|
ControlConvertMenu: [],
|
||||||
|
LimitControl: [],
|
||||||
|
TrainWindow: []
|
||||||
|
},
|
||||||
|
trainingTypeMap: {},
|
||||||
|
pagerConfig: {
|
||||||
|
pageSize: 'pageSize',
|
||||||
|
pageIndex: 'pageNum'
|
||||||
|
},
|
||||||
|
queryForm: {
|
||||||
|
labelWidth: '120px',
|
||||||
|
initLoadCallback: this.initForm,
|
||||||
|
queryObject: {
|
||||||
|
prdType: {
|
||||||
|
type: 'select',
|
||||||
|
label: this.$t('lesson.prdType'),
|
||||||
|
change: this.prdChoose,
|
||||||
|
config: {
|
||||||
|
data: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
type: {
|
||||||
|
type: 'select',
|
||||||
|
label: this.$t('lesson.trainingType'),
|
||||||
|
change: this.typeChoose,
|
||||||
|
config: {
|
||||||
|
data: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
operateType: {
|
||||||
|
type: 'select',
|
||||||
|
label: this.$t('lesson.operationType'),
|
||||||
|
config: {
|
||||||
|
data: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
name: {
|
||||||
|
type: 'text',
|
||||||
|
label: this.$t('lesson.trainingName')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
queryList: {
|
||||||
|
query: this.queryFunction,
|
||||||
|
selectCheckShow: false,
|
||||||
|
indexShow: true,
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
title: this.$t('lesson.trainingName'),
|
||||||
|
prop: 'name'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('lesson.prdType'),
|
||||||
|
prop: 'prdType',
|
||||||
|
type: 'tag',
|
||||||
|
columnValue: (row) => { return this.$convertField(row.prdType, this.prdTypeList, ['value', 'label']); },
|
||||||
|
tagType: (row) => { return 'success'; }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('lesson.trainingType'),
|
||||||
|
prop: 'type',
|
||||||
|
type: 'tag',
|
||||||
|
columnValue: (row) => { return this.$convertField(row.type, this.trainingTypeList, ['value', 'label']); },
|
||||||
|
tagType: (row) => { return 'success'; }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('lesson.operationType'),
|
||||||
|
prop: 'operateType',
|
||||||
|
type: 'tag',
|
||||||
|
columnValue: (row) => { return this.$convertField(row.operateType, this.trainingOperateTypeMap[row.type], ['value', 'label']); },
|
||||||
|
tagType: (row) => { return 'success'; }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('lesson.minDuration'),
|
||||||
|
prop: 'minDuration'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('lesson.maxDuration'),
|
||||||
|
prop: 'maxDuration'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('lesson.remarks'),
|
||||||
|
prop: 'remarks'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'button',
|
||||||
|
title: this.$t('global.operate'),
|
||||||
|
width: '250',
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
name: '选中',
|
||||||
|
handleClick: this.chooseTraining,
|
||||||
|
type: ''
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
actions: []
|
||||||
|
},
|
||||||
|
|
||||||
|
currentModel: {}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed:{
|
||||||
|
prdTypeList() {
|
||||||
|
const productTypeList = ConstConfig.ConstSelect.prdType;
|
||||||
|
return Cookies.get('user_lang') == 'en'
|
||||||
|
? productTypeList.map(elem => { return { value: elem.value, label: elem.enlabel }; })
|
||||||
|
: productTypeList.map(elem => { return { value: elem.value, label: elem.label }; });
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async created() {
|
||||||
|
await this.loadInitData();
|
||||||
|
this.typeChoose();
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
},
|
||||||
|
beforeDestroy() {
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
doShow() {
|
||||||
|
this.innerVisible = true;
|
||||||
|
},
|
||||||
|
async loadInitData() {
|
||||||
|
this.mapIdList = [];
|
||||||
|
this.queryForm.queryObject.prdType.config.data = [];
|
||||||
|
getPublishMapListOnline().then(response => {
|
||||||
|
this.mapIdList = response.data;
|
||||||
|
});
|
||||||
|
this.queryForm.queryObject.prdType.config.data = this.prdTypeList;
|
||||||
|
this.trainingOperateTypeMap = getTrainingOperateTypeMap();
|
||||||
|
},
|
||||||
|
chooseTraining(index, row) {
|
||||||
|
this.$emit('choose', row);
|
||||||
|
this.innerVisible = false;
|
||||||
|
},
|
||||||
|
async initForm(form) {
|
||||||
|
if (form) {
|
||||||
|
await this.prdChoose(form, false);
|
||||||
|
await this.typeChoose(form, false);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async prdChoose(form, isClean = true) {
|
||||||
|
console.log('-------------');
|
||||||
|
this.trainingTypeMap = {};
|
||||||
|
const lineCode = this.$route.query.lineCode;
|
||||||
|
const res = await getCmdList(lineCode, {prdType:form.prdType});
|
||||||
|
const trainingOperateList = [];
|
||||||
|
const trainingOperateConfigList = [];
|
||||||
|
const operateTypeMap = {
|
||||||
|
Switch: [],
|
||||||
|
Section: [],
|
||||||
|
Signal: [],
|
||||||
|
Stand: [],
|
||||||
|
Station: [],
|
||||||
|
ControlConvertMenu: [],
|
||||||
|
LimitControl: [],
|
||||||
|
TrainWindow: [],
|
||||||
|
Driver: []
|
||||||
|
};
|
||||||
|
|
||||||
|
if (isClean) {
|
||||||
|
form.type = '';
|
||||||
|
form.operateType = '';
|
||||||
|
}
|
||||||
|
this.queryForm.queryObject.type.config.data = [];
|
||||||
|
this.queryForm.queryObject.operateType.config.data = [];
|
||||||
|
|
||||||
|
if (res && res.code === 200) {
|
||||||
|
res.data.forEach(item => {
|
||||||
|
if (this.trainingOperateTypeMap[item.operateObject]) {
|
||||||
|
this.trainingOperateTypeMap[item.operateObject].forEach(ele => {
|
||||||
|
if (ele.value == item.operate && !this.checkIncludes(operateTypeMap[item.operateObject], ele)) {
|
||||||
|
operateTypeMap[item.operateObject].push(ele);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (!trainingOperateList.includes(item.operateObject)) {
|
||||||
|
trainingOperateList.push(item.operateObject);
|
||||||
|
const objectLabel = ConstConfig.ConstSelect.trainingDeviceType[item.operateObject] || {};
|
||||||
|
trainingOperateConfigList.push({value: item.operateObject, label: Cookies.get('user_lang') == 'en' ? objectLabel.enlabel : objectLabel.label});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.queryForm.queryObject.type.config.data = trainingOperateConfigList;
|
||||||
|
|
||||||
|
this.trainingTypeList = trainingOperateConfigList;
|
||||||
|
this.trainingTypeMap = operateTypeMap;
|
||||||
|
} else {
|
||||||
|
this.$message.error(this.$t('error.failedToObtainTrainingType'));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async typeChoose(form, isClean = true) {
|
||||||
|
this.queryForm.queryObject.operateType.config.data = [];
|
||||||
|
if (isClean && form) {
|
||||||
|
form.operateType = '';
|
||||||
|
}
|
||||||
|
if (form && form.type && this.trainingTypeMap[form.type]) {
|
||||||
|
this.trainingTypeMap[form.type].forEach(elem => {
|
||||||
|
this.queryForm.queryObject.operateType.config.data.push({ value: elem.value, label: elem.label });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
checkIncludes(list, obj) {
|
||||||
|
let flag = false;
|
||||||
|
list.forEach(item => {
|
||||||
|
if (item.value === obj.value) {
|
||||||
|
flag = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return flag;
|
||||||
|
},
|
||||||
|
reloadTable() {
|
||||||
|
this.queryList.reload();
|
||||||
|
},
|
||||||
|
queryFunction(params) {
|
||||||
|
params['mapId'] = this.$route.query.mapId;
|
||||||
|
return pageQueryTrainingNew(params);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||||
|
.draft {
|
||||||
|
width: 400px;
|
||||||
|
text-align: center;
|
||||||
|
margin: 20px auto;
|
||||||
|
}
|
||||||
|
</style>
|
257
src/views/publish/publishMap/editSubsystem.vue
Normal file
257
src/views/publish/publishMap/editSubsystem.vue
Normal file
@ -0,0 +1,257 @@
|
|||||||
|
<template>
|
||||||
|
<el-dialog
|
||||||
|
width="30%"
|
||||||
|
:title="title"
|
||||||
|
:visible.sync="visible"
|
||||||
|
center
|
||||||
|
>
|
||||||
|
<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="地铁CBTC" value="METRO" />
|
||||||
|
<el-option label="大铁CTC" 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-option label="实训室" value="TRAINING_ROOM" />
|
||||||
|
<el-option label="实训设计" value="TRAINING_DESIGN" />
|
||||||
|
<el-option label="实训" value="TRAINING" />
|
||||||
|
<el-option label="考试" value="EXAM" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item v-if="ruleForm.function === 'TRAINING'" label="实训:" prop="trainingName">
|
||||||
|
<div style="display: flex;">
|
||||||
|
<div style="width: 200px;">{{ ruleForm.trainingName? ruleForm.trainingName: '-' }}</div>
|
||||||
|
<el-button style="margin-left: 10px;" type="primary" size="mini" @click="handleChoose">选择</el-button>
|
||||||
|
</div>
|
||||||
|
</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="close">取 消</el-button>
|
||||||
|
<el-button type="primary" @click="commit">确 定</el-button>
|
||||||
|
</span>
|
||||||
|
<choose-training ref="chooseTraining" @choose="choose" />
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { updateMapSystem, createMapSystem } from '@/api/trainingPlatform';
|
||||||
|
import { getStationListNeedAttendant } from '@/api/jmap/map';
|
||||||
|
import ChooseTraining from './chooseTraining';
|
||||||
|
export default {
|
||||||
|
name: 'EditSubsystem',
|
||||||
|
components: {
|
||||||
|
ChooseTraining
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
visible: false,
|
||||||
|
title: '',
|
||||||
|
mapSystemId: '',
|
||||||
|
mapId: '',
|
||||||
|
stationList: [],
|
||||||
|
trainList: [],
|
||||||
|
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'}
|
||||||
|
],
|
||||||
|
ruleForm: {
|
||||||
|
name: '',
|
||||||
|
type: '',
|
||||||
|
usage: '',
|
||||||
|
memberType: '',
|
||||||
|
deviceCode: '',
|
||||||
|
client: '',
|
||||||
|
function: '',
|
||||||
|
trainingId: '',
|
||||||
|
trainingName: ''
|
||||||
|
},
|
||||||
|
clientList: [
|
||||||
|
{ label: '中心ATS工作站', value: 'C_ATS' },
|
||||||
|
{ label: '中心ATS大屏', value: 'C_ATS_BS' },
|
||||||
|
{ label: '中心PA系统', value: 'C_PA' },
|
||||||
|
{ label: '中心视频监控系统', value: 'C_CCTV' },
|
||||||
|
{ label: '现地ATS工作站', value: 'L_ATS' },
|
||||||
|
{ label: '本地控制工作站', value: 'LCW' },
|
||||||
|
{ label: '现地视频监控系统', value: 'L_CCTV' },
|
||||||
|
{ label: '现地PA系统', value: 'L_PA' },
|
||||||
|
{ label: '调度台终端', value: 'GPC' },
|
||||||
|
{ label: '联锁工作站', value: 'IPC' },
|
||||||
|
{ label: '车务终端', value: 'STPC' },
|
||||||
|
{ label: '车务管理终端', value: 'DMP' }
|
||||||
|
]
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.stationList = [];
|
||||||
|
getStationListNeedAttendant(this.$route.query.mapId).then(resp => {
|
||||||
|
if (resp.data && resp.data.length) {
|
||||||
|
this.stationList = resp.data;
|
||||||
|
}
|
||||||
|
}).catch(() => {
|
||||||
|
this.$message.error('获取车站列表失败');
|
||||||
|
});
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
doShow(row) {
|
||||||
|
if (row && row.id) {
|
||||||
|
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.title = '子系统修改';
|
||||||
|
} else {
|
||||||
|
this.title = '子系统创建';
|
||||||
|
}
|
||||||
|
this.visible = true;
|
||||||
|
|
||||||
|
},
|
||||||
|
close() {
|
||||||
|
this.mapSystemId = '';
|
||||||
|
this.ruleForm = {
|
||||||
|
name: '',
|
||||||
|
type: '',
|
||||||
|
usage: '',
|
||||||
|
memberType: '',
|
||||||
|
deviceCode: '',
|
||||||
|
client: '',
|
||||||
|
function: '',
|
||||||
|
trainingId: '',
|
||||||
|
trainingName: ''
|
||||||
|
};
|
||||||
|
this.visible = false;
|
||||||
|
this.$refs.ruleForm.resetFields();
|
||||||
|
},
|
||||||
|
commit() {
|
||||||
|
const functionMap = {};
|
||||||
|
if (this.ruleForm.function) {
|
||||||
|
functionMap[this.ruleForm.function] = this.ruleForm.function;
|
||||||
|
}
|
||||||
|
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.visible = false;
|
||||||
|
this.$emit('tableReload');
|
||||||
|
this.$message.success('创建子系统成功!');
|
||||||
|
this.close();
|
||||||
|
}).catch(() => {
|
||||||
|
this.$message.error('创建子系统失败!');
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
data.id = this.mapSystemId;
|
||||||
|
updateMapSystem(data).then(resp => {
|
||||||
|
this.visible = false;
|
||||||
|
this.$emit('tableReload');
|
||||||
|
this.close();
|
||||||
|
this.$message.success('修改子系统成功!');
|
||||||
|
}).catch(() => {
|
||||||
|
this.$message.error('修改子系统失败!');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handleChoose() {
|
||||||
|
this.$refs.chooseTraining.doShow();
|
||||||
|
},
|
||||||
|
choose(data) {
|
||||||
|
this.ruleForm.trainingId = data.id;
|
||||||
|
this.ruleForm.trainingName = data.name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
@ -7,7 +7,6 @@
|
|||||||
<local-map ref="localMap" />
|
<local-map ref="localMap" />
|
||||||
<export-map ref="exportMap" />
|
<export-map ref="exportMap" />
|
||||||
<map-sort ref="mapSort" />
|
<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">-->
|
<!--<input ref="files" type="file" class="file_box" accept=".json, application/json" style="display: none" @change="importf">-->
|
||||||
<el-dialog
|
<el-dialog
|
||||||
title="一键领取权限"
|
title="一键领取权限"
|
||||||
@ -40,7 +39,6 @@ import MapSort from './mapSort';
|
|||||||
import { superAdmin } from '@/router/index';
|
import { superAdmin } from '@/router/index';
|
||||||
import { ProjectList } from '@/scripts/ProjectConfig';
|
import { ProjectList } from '@/scripts/ProjectConfig';
|
||||||
import { getPermissionQuickly } from '@/api/management/author';
|
import { getPermissionQuickly } from '@/api/management/author';
|
||||||
import SubsystemManage from './subsystem';
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'PublishMap',
|
name: 'PublishMap',
|
||||||
@ -50,8 +48,7 @@ export default {
|
|||||||
CopyMap,
|
CopyMap,
|
||||||
LocalMap,
|
LocalMap,
|
||||||
ExportMap,
|
ExportMap,
|
||||||
MapSort,
|
MapSort
|
||||||
SubsystemManage
|
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@ -474,7 +471,7 @@ export default {
|
|||||||
this.dialogVisible = true;
|
this.dialogVisible = true;
|
||||||
},
|
},
|
||||||
subsystemManage(index, row) {
|
subsystemManage(index, row) {
|
||||||
this.$refs.subsystemManage.doShow(row);
|
this.$router.push({path:'/system/lineDataManage/subsystem', query: {mapId: row.id, lineCode: row.lineCode}});
|
||||||
},
|
},
|
||||||
permissionCommit() {
|
permissionCommit() {
|
||||||
getPermissionQuickly(this.mapId, this.permissionNum).then(resp => {
|
getPermissionQuickly(this.mapId, this.permissionNum).then(resp => {
|
||||||
|
@ -1,201 +1,120 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog
|
<div>
|
||||||
title="子系统管理"
|
<QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" />
|
||||||
:visible.sync="dialogVisible"
|
<edit-subsystem ref="editSubsystem" />
|
||||||
width="60%"
|
</div>
|
||||||
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>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getStationListNeedAttendant } from '@/api/jmap/map';
|
import { queryMapSystemPaged, deleteMapSystem } from '@/api/trainingPlatform';
|
||||||
import { queryMapSystemList, updateMapSystem, createMapSystem, deleteMapSystem } from '@/api/trainingPlatform';
|
import { getPublishMapListOnline } from '@/api/jmap/map';
|
||||||
|
import EditSubsystem from './editSubsystem';
|
||||||
|
const simTypeMap = {
|
||||||
|
METRO: '地铁CBTC',
|
||||||
|
RAILWAY: '大铁CTC',
|
||||||
|
EMERGENCY: '应急调度'
|
||||||
|
};
|
||||||
|
const simUsageMap = {
|
||||||
|
SINGLE_MEMBER: '单角色仿真',
|
||||||
|
SINGLE_CLIENT: '单客户端仿真',
|
||||||
|
JOINT: '综合演练'
|
||||||
|
};
|
||||||
export default {
|
export default {
|
||||||
name: 'Subsystem',
|
name: 'PublishMap',
|
||||||
|
components: {
|
||||||
|
EditSubsystem
|
||||||
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
dialogVisible: false,
|
dialogVisible: false,
|
||||||
tableData: [],
|
pagerConfig: {
|
||||||
mapId: '',
|
pageSize: 'pageSize',
|
||||||
loading: false,
|
pageIndex: 'pageNum'
|
||||||
innerVisible: false,
|
|
||||||
mapSystemId: '',
|
|
||||||
stationList: [],
|
|
||||||
trainList: [],
|
|
||||||
innerTitle: '',
|
|
||||||
ruleForm: {
|
|
||||||
name: '',
|
|
||||||
type: '',
|
|
||||||
usage: '',
|
|
||||||
memberType: '',
|
|
||||||
deviceCode: '',
|
|
||||||
client: '',
|
|
||||||
function: ''
|
|
||||||
},
|
},
|
||||||
simTypeMap: {
|
queryForm: {
|
||||||
METRO: '地铁',
|
labelWidth: '80px',
|
||||||
RAILWAY: '铁路/大铁',
|
reset: true,
|
||||||
EMERGENCY: '应急调度'
|
leftSpan: 18,
|
||||||
|
queryObject: {
|
||||||
|
name: {
|
||||||
|
type: 'text',
|
||||||
|
label: '名称'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
simUsageMap: {
|
queryList: {
|
||||||
SINGLE_MEMBER: '单角色仿真',
|
query: this.queryFunction,
|
||||||
SINGLE_CLIENT: '单客户端仿真',
|
selectCheckShow: false,
|
||||||
JOINT: '综合演练'
|
indexShow: true,
|
||||||
},
|
columns: [
|
||||||
stationRoles: ['STATION_SUPERVISOR', 'STATION_ASSISTANT', 'STATION_MASTER', 'STATION_SIGNALER', 'STATION_PASSENGER', 'STATION_SWITCH_MAN',
|
{
|
||||||
'STATION_FACILITATOR', 'STATION_WORKER', 'TRAIN_MASTER'],
|
title: '名称',
|
||||||
rules: {
|
prop: 'name'
|
||||||
name: [
|
},
|
||||||
{ required: true, message: '请输入子系统名称', trigger: 'blur' }
|
{
|
||||||
|
title: '地图',
|
||||||
|
prop: 'mapId',
|
||||||
|
type: 'tag',
|
||||||
|
columnValue: (row) => { return this.$convertField(row.mapId, this.mapList, ['id', 'name']); },
|
||||||
|
tagType: () => { return 'success'; }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '系统',
|
||||||
|
prop: 'simType',
|
||||||
|
type: 'tag',
|
||||||
|
columnValue: (row) => { return simTypeMap[row.simType]; },
|
||||||
|
tagType: () => { return 'success'; }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '使用方式',
|
||||||
|
prop: 'simUsage',
|
||||||
|
type: 'tag',
|
||||||
|
columnValue: (row) => { return simUsageMap[row.simUsage]; },
|
||||||
|
tagType: () => { return ''; }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '描述',
|
||||||
|
prop: 'desc'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'button',
|
||||||
|
title: '操作',
|
||||||
|
width: '300',
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
name: '更新',
|
||||||
|
handleClick: this.updateRow
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '删除',
|
||||||
|
handleClick: this.deleteRow
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
],
|
],
|
||||||
type: [
|
actions: [
|
||||||
{ required: true, message: '请选择子系统类型', trigger: 'change' }
|
{ text: '新建', handler: this.handleAddSubsystem },
|
||||||
],
|
{ text: '返回', handler: this.goBack }
|
||||||
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'}
|
|
||||||
]
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
computed: {
|
||||||
|
isShow() {
|
||||||
|
return this.$store.getters['roles'].indexOf('05');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.mapList = [];
|
||||||
|
getPublishMapListOnline().then(resp => {
|
||||||
|
this.mapList = resp.data;
|
||||||
|
});
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handleAddSubsystem() {
|
queryFunction(params) {
|
||||||
this.innerTitle = '创建子系统';
|
params['mapId'] = this.$route.query.mapId;
|
||||||
this.innerVisible = true;
|
return queryMapSystemPaged(params);
|
||||||
},
|
|
||||||
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) {
|
deleteRow(row) {
|
||||||
this.$confirm('删除子系统,是否继续?', '提 示', {
|
this.$confirm('删除子系统,是否继续?', '提 示', {
|
||||||
@ -210,83 +129,25 @@ export default {
|
|||||||
});
|
});
|
||||||
}).catch( () => { });
|
}).catch( () => { });
|
||||||
},
|
},
|
||||||
updateRow(row) {
|
updateRow(index, row) {
|
||||||
this.mapSystemId = row.id;
|
this.$refs.editSubsystem.doShow(row);
|
||||||
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() {
|
handleAddSubsystem() {
|
||||||
const functionMap = {};
|
this.$refs.editSubsystem.doShow();
|
||||||
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() {
|
reloadTable() {
|
||||||
this.mapSystemId = '';
|
this.queryList.reload();
|
||||||
this.ruleForm = {
|
},
|
||||||
name: '',
|
goBack() {
|
||||||
type: '',
|
this.$router.go(-1);
|
||||||
usage: '',
|
|
||||||
memberType: '',
|
|
||||||
deviceCode: '',
|
|
||||||
client: '',
|
|
||||||
function: ''
|
|
||||||
};
|
|
||||||
this.innerVisible = false;
|
|
||||||
this.$refs.ruleForm.resetFields();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
<style scoped>
|
/deep/
|
||||||
|
.el-button+.el-button{
|
||||||
|
margin-top: 5px;
|
||||||
|
margin-left: 5px;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -1,52 +1,49 @@
|
|||||||
<template>
|
<template>
|
||||||
<div v-loading="loading" class="map-list-main">
|
<div v-loading="loading" class="map-list-main">
|
||||||
<div class="mapListName">
|
|
||||||
<span>{{ $t('global.mapList') }}</span>
|
|
||||||
</div>
|
|
||||||
<template v-if="!IsProject">
|
|
||||||
<filter-city ref="filerCity" filter-empty local-param-name="training_cityCode" @filterSelectChange="refresh" />
|
|
||||||
<el-input v-model="filterText" :placeholder="this.$t('global.filteringKeywords')" clearable />
|
|
||||||
</template>
|
|
||||||
<div id="trainingMapTree" class="left-map-list">
|
<div id="trainingMapTree" class="left-map-list">
|
||||||
<el-tree
|
<el-menu
|
||||||
ref="tree"
|
default-active="2"
|
||||||
:data="treeList"
|
class="el-menu-vertical-demo"
|
||||||
node-key="id"
|
background-color="#545c64"
|
||||||
:props="{children:'children',label:'name'}"
|
text-color="#fff"
|
||||||
highlight-current
|
router
|
||||||
:span="22"
|
active-text-color="#ffd04b"
|
||||||
:filter-node-method="filterNode"
|
|
||||||
@node-click="clickEvent"
|
|
||||||
>
|
>
|
||||||
<span slot-scope="{ node }">
|
<div class="mapListName">
|
||||||
<span
|
<span>{{ $t('global.mapList') }}</span>
|
||||||
class="el-icon-tickets"
|
</div>
|
||||||
/>
|
<template v-for="(cityCode, index) in Object.keys(menuData)">
|
||||||
<span :id="node.data.id"> {{ node.data.name }}</span>
|
<el-submenu :key="index" :index="index+''">
|
||||||
</span>
|
<template slot="title">
|
||||||
</el-tree>
|
<i class="el-icon-location" />
|
||||||
|
<span>{{ cityMap.get(cityCode) }}</span>
|
||||||
|
</template>
|
||||||
|
<template v-for="(map, mapIndex) in menuData[cityCode]">
|
||||||
|
<el-menu-item :key="index + '-' + mapIndex" :index="'/trainingPlatform/simulation/' + map.id + '?lineCode=' + map.lineCode">{{ map.name }}</el-menu-item>
|
||||||
|
</template>
|
||||||
|
</el-submenu>
|
||||||
|
</template>
|
||||||
|
</el-menu>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { listPublishMap } from '@/api/jmap/map';
|
import { listPublishMap } from '@/api/jmap/map';
|
||||||
import { UrlConfig } from '@/scripts/ConstDic';
|
|
||||||
import FilterCity from '@/views/components/filterCity';
|
|
||||||
import { getSessionStorage } from '@/utils/auth';
|
import { getSessionStorage } from '@/utils/auth';
|
||||||
import { GetMapListByProjectList } from '@/scripts/ProjectConfig';
|
import { GetMapListByProjectList } from '@/scripts/ProjectConfig';
|
||||||
|
import { publisMapCityList} from '@/api/jmap/map';
|
||||||
export default {
|
export default {
|
||||||
name: 'DemonList',
|
name: 'DemonList',
|
||||||
components: {
|
components: {
|
||||||
FilterCity
|
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
loading: true,
|
loading: true,
|
||||||
filterText: '',
|
filterText: '',
|
||||||
treeList: [],
|
menuData: {},
|
||||||
mapId: '',
|
mapId: '',
|
||||||
filterSelect: ''
|
filterSelect: '',
|
||||||
|
cityMap: null
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -66,10 +63,29 @@ export default {
|
|||||||
this.$refs.tree.filter(val);
|
this.$refs.tree.filter(val);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
async mounted() {
|
||||||
|
let res = {};
|
||||||
|
this.menuData = {};
|
||||||
|
this.cityMap = new Map();
|
||||||
|
const resp = await publisMapCityList('city_type');
|
||||||
|
(resp.data || []).forEach(item => {
|
||||||
|
this.cityMap.set(item.code, item.name);
|
||||||
|
});
|
||||||
if (this.IsProject) {
|
if (this.IsProject) {
|
||||||
this.refresh();
|
res = await listPublishMap({project: this.project});
|
||||||
|
} else {
|
||||||
|
res = await listPublishMap();
|
||||||
}
|
}
|
||||||
|
if (res && res.data) {
|
||||||
|
res.data.forEach(item => {
|
||||||
|
if (this.menuData[item.cityCode]) {
|
||||||
|
this.menuData[item.cityCode].push(item);
|
||||||
|
} else {
|
||||||
|
this.menuData[item.cityCode] = [item];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
this.loading = false;
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
filterNode(value, data) {
|
filterNode(value, data) {
|
||||||
@ -78,30 +94,9 @@ export default {
|
|||||||
},
|
},
|
||||||
clickEvent(obj, data, ele) {
|
clickEvent(obj, data, ele) {
|
||||||
this.mapId = obj.id;
|
this.mapId = obj.id;
|
||||||
const router = { path: `${UrlConfig.trainingPlatform.permission}/${this.mapId}`, query: { lineCode: obj.lineCode }};
|
const router = { path: `/trainingPlatform/simulation/${this.mapId}`, query: { lineCode: obj.lineCode }};
|
||||||
|
console.log(router, 'router');
|
||||||
this.$router.push(router);
|
this.$router.push(router);
|
||||||
},
|
|
||||||
async refresh(filterSelect) {
|
|
||||||
this.loading = true;
|
|
||||||
this.treeList = [];
|
|
||||||
this.filterSelect = filterSelect;
|
|
||||||
try {
|
|
||||||
let res = {};
|
|
||||||
if (this.IsProject) {
|
|
||||||
res = await listPublishMap({project: this.project});
|
|
||||||
} else {
|
|
||||||
res = await listPublishMap({ cityCode:filterSelect});
|
|
||||||
}
|
|
||||||
this.treeList = res.data;
|
|
||||||
this.$nextTick(() => {
|
|
||||||
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'));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -109,19 +104,25 @@ export default {
|
|||||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||||
.mapListName{
|
.mapListName{
|
||||||
padding: 15px 0px 15px 17px;
|
padding: 15px 0px 15px 17px;
|
||||||
|
color: #fff;
|
||||||
}
|
}
|
||||||
.left-map-list{
|
.left-map-list{
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
padding-bottom: 10px;
|
padding-bottom: 10px;
|
||||||
padding-top: 5px;
|
padding-top: 5px;
|
||||||
|
background: #545c64;
|
||||||
}
|
}
|
||||||
.map-list-main{
|
.map-list-main{
|
||||||
height: 100%;
|
height: 100%;
|
||||||
display:flex;
|
display:flex;
|
||||||
flex-direction:column;
|
flex-direction:column;
|
||||||
}
|
}
|
||||||
|
/deep/.el-menu{
|
||||||
|
border-right-width: 0;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
<style>
|
<style>
|
||||||
.el-tree {
|
.el-tree {
|
||||||
|
@ -42,7 +42,7 @@ export default {
|
|||||||
goRoutePath(data) {
|
goRoutePath(data) {
|
||||||
const againEnter = getSessionStorage('againEnter') || null;
|
const againEnter = getSessionStorage('againEnter') || null;
|
||||||
if (!againEnter && !this.$route.query.thirdJump) {
|
if (!againEnter && !this.$route.query.thirdJump) {
|
||||||
this.$router.push(`/trainingPlatform/permission/${data[0].id}?lineCode=${data[0].lineCode}`);
|
this.$router.push(`/trainingPlatform/simulation/${data[0].id}?lineCode=${data[0].lineCode}`);
|
||||||
setSessionStorage('againEnter', true);
|
setSessionStorage('againEnter', true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -46,7 +46,7 @@ import { createSimulation } from '@/api/simulation';
|
|||||||
import { getSessionStorage } from '@/utils/auth';
|
import { getSessionStorage } from '@/utils/auth';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'Author',
|
name: 'Simulation',
|
||||||
components: {
|
components: {
|
||||||
selectRole
|
selectRole
|
||||||
},
|
},
|
Loading…
Reference in New Issue
Block a user