Merge remote-tracking branch 'origin/test'

This commit is contained in:
fan 2023-12-04 17:55:44 +08:00
commit a9f18f6d61
18 changed files with 567 additions and 432 deletions

View File

@ -32,14 +32,21 @@ export function updateTraining(data) {
data data
}); });
} }
/** 更新实训标签 */ /** 更新发布实训信息(标签 描述, 标题) */
export function updateTrainingLabel(data) { export function updateTrainingInfo(data) {
return request({ return request({
url: `/api/v2/training/published/update/label`, url: `/api/v2/training/published/update`,
method: 'put', method: 'put',
data data
}); });
} }
/** 已发布实训转为草稿 */
export function saveAsTrainingDraft(trainingId) {
return request({
url: `/api/v2/training/published/${trainingId}/saveAsDraft`,
method: 'post'
});
}
/** 查询步骤列表 */ /** 查询步骤列表 */
export function getTrainingStepList(trainingId) { export function getTrainingStepList(trainingId) {
return request({ return request({

BIN
src/assets/bg_pis.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
src/assets/bg_tms.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

View File

@ -357,7 +357,7 @@ export default class Station extends Group {
zlevel: this.zlevel, zlevel: this.zlevel,
z: this.z, z: this.z,
style: { style: {
x: computedControlModePoint.x + this.style.Station.StationControl.text.offsetX, x: computedControlModePoint.x,
y: computedControlModePoint.y + this.style.Station.StationControl.text.offsetY, y: computedControlModePoint.y + this.style.Station.StationControl.text.offsetY,
fontWeight: this.style.Station.StationControl.text.fontWeight, fontWeight: this.style.Station.StationControl.text.fontWeight,
fontSize: this.style.Station.StationControl.text.fontSize, fontSize: this.style.Station.StationControl.text.fontSize,

View File

@ -145,6 +145,10 @@ export default {
handler: this.handlerApplyRmMode handler: this.handlerApplyRmMode
} }
] ]
},
{
label: '停车',
handler: this.handleParkingTrain
} }
], ],
menuSpeed: [ menuSpeed: [
@ -352,6 +356,13 @@ export default {
this.$refs.noticeInfo.doShow(); this.$refs.noticeInfo.doShow();
}); });
}, },
handleParkingTrain() {
commitOperate(menuOperate.Train.driverStop, { groupNumber: this.selected.code }, 3).then(({ valid, operate }) => {
}).catch((error) => {
console.error(error);
this.$refs.noticeInfo.doShow();
});
},
// //
limitSpeed() { limitSpeed() {
const step = { const step = {

View File

@ -50,7 +50,7 @@ export default {
children: [ children: [
{ {
label: '请求', label: '请求',
handler: this.setStationControl, handler: this.work === 'localWork' ? this.setStationControl : this.setCenterControl,
cmdType: this.work === 'localWork' ? CMD.ControlConvertMenu.CMD_CM_APPLY_FOR_STATION_CONTROL : CMD.ControlConvertMenu.CMD_CM_APPLY_FOR_CENTER_CONTROL, cmdType: this.work === 'localWork' ? CMD.ControlConvertMenu.CMD_CM_APPLY_FOR_STATION_CONTROL : CMD.ControlConvertMenu.CMD_CM_APPLY_FOR_CENTER_CONTROL,
isDisabled: (station, work) => { isDisabled: (station, work) => {
if (work === 'localWork') { if (work === 'localWork') {

View File

@ -498,7 +498,7 @@ export default {
trainOrder(orderStop) { trainOrder(orderStop) {
const operate = { const operate = {
start: true, start: true,
send: true, // send: true,
param:{}, param:{},
code: this.selected.code code: this.selected.code
}; };

View File

@ -148,26 +148,6 @@ export default {
{ label: '会话', value: 'Conversation' } { label: '会话', value: 'Conversation' }
], ],
simulationDeviceList: [
{ label: '区段', value: 'SECTION' },
{ label: '计轴器', value: 'AXLE_COUNTER' },
{ label: '道岔', value: 'SWITCH' },
{ label: '信号机', value: 'SIGNAL' },
{ label: '车站', value: 'STATION' },
{ label: '站台', value: 'STAND' },
{ label: '屏蔽门', value: 'PSD' },
{ label: '紧急停车按钮', value: 'ESP' },
{ label: '区域控制器', value: 'ZC' },
{ label: '线路控制器', value: 'LC' },
{ label: '进路', value: 'ROUTE' },
{ label: '进路延续保护', value: 'OVERLAP' },
{ label: '自动信号', value: 'AUTO_SIGNAL' },
{ label: '自动折返', value: 'CYCLE' },
{ label: '列车', value: 'TRAIN' },
{ label: '列车门', value: 'TRAIN_DOOR' },
{ label: '交路', value: 'ROUTING' },
{ label: '站间运行等级', value: 'RUN_LEVEL' }
],
QuestionTypeList: [ QuestionTypeList: [
{ label: '选择题', value: 'select' }, { label: '选择题', value: 'select' },
{ label: '判断题', value: 'judge' }, { label: '判断题', value: 'judge' },
@ -175,17 +155,6 @@ export default {
{ label: '填空题', value: 'fill' }, { label: '填空题', value: 'fill' },
{ label: '问答题', value: 'answer' } { label: '问答题', value: 'answer' }
], ],
// 新版的产品类型枚举
prdType: [
{ enlabel: 'ATS local workstation', label: 'ATS现地工作站', value: '01' },
{ enlabel: 'ATS Traffic dispatching workstation', label: 'ATS行调工作站', value: '02' },
{ enlabel: 'Comprehensive exercise cloud platform', label: '综合演练云平台', value: '03' },
{ enlabel: 'Driver simulation driving system', label: '司机模拟驾驶系统', value: '04' },
{ enlabel: 'Dispatch workstation', label: '派班工作站', value: '05' },
{ enlabel: 'ISCS workstation', label: 'ISCS工作站', value: '06' },
{ enlabel: 'Interlocking station at depot', label: '车辆段联锁工作站', value: '09' },
{ enlabel: 'Large screen vehicle real workstation', label: '应急调度指挥系统', value: '10' }
],
trainingDeviceType: { trainingDeviceType: {
Switch: { enlabel: 'Switch training', label: '道岔实训' }, Switch: { enlabel: 'Switch training', label: '道岔实训' },
Section: { enlabel: 'Section training', label: '区段实训' }, Section: { enlabel: 'Section training', label: '区段实训' },
@ -234,21 +203,9 @@ export default {
{ label: '列车', value: 'TRAIN' }, { label: '列车', value: 'TRAIN' },
{ label: 'UDP客户端', value: 'UDP_CLIENT' }, { label: 'UDP客户端', value: 'UDP_CLIENT' },
{ label: '站台PIS', value: 'PIS_STAND' }, { label: '站台PIS', value: 'PIS_STAND' },
{ label: '列车PIS', value: 'PIS_TRAIN' } { label: '列车PIS', value: 'PIS_TRAIN' },
], { label: '乘客PIS', value: 'PIS' },
ossList: [ { label: 'TMS', value: 'TMS' }
{ name: '场景1', url: '场景1—桂花园道岔故障配分版60分.pdf' },
{ name: '场景2', url: '场景2—体育馆道岔故障配分版60分.pdf' },
{ name: '场景3', url: '场景3—火车站道岔故障配分版60分.pdf' },
{ name: '场景4', url: '场景4—列车救援配分版60分.pdf' },
{ name: '场景5', url: '场景5—接触网无电配分版60分.pdf' },
{ name: '场景6', url: '场景6—计轴故障试题配分版60分.pdf' },
{ name: '场景7', url: '场景7—大学城道岔故障配分版40分.pdf' },
{ name: '场景8', url: '场景8—车站照明故障配分版40分.pdf' },
{ name: '场景9', url: '场景9—车站站台门故障配分版40分.pdf' },
{ name: '场景10', url: '场景10—列车限速配分版40分.pdf' },
{ name: '场景11', url: '场景11—区间疏导乘客配分版40分.pdf' },
{ name: '场景12', url: '场景12—区域控制器故障配分版40分.pdf' }
], ],
responderTypeList: [{ name: '固定应答器', value: 'FB' }, { name: '可变应答器', value: 'VB' }, { name: '填充应答器', value: 'IB' }], responderTypeList: [{ name: '固定应答器', value: 'FB' }, { name: '可变应答器', value: 'VB' }, { name: '填充应答器', value: 'IB' }],
loadRuleList: [ loadRuleList: [

View File

@ -33,10 +33,10 @@ export function getTopic(type, group, param) {
break; break;
case 'ISCSGATE': case 'ISCSGATE':
topic = `/queue/simulation/${group}/iscs/gate/${param.stationCode}`; topic = `/queue/simulation/${group}/iscs/gate/${param.stationCode}`;
break; break;
case 'TMS': case 'TMS':
topic = `/queue/simulation/${group}/train/001/tms` topic = `/queue/simulation/${group}/train/001/tms`;
break; break;
case 'PIS_STAND': case 'PIS_STAND':
topic = `/queue/simulation/${group}/standPis/${param.standCode}`; topic = `/queue/simulation/${group}/standPis/${param.standCode}`;
break; break;

View File

@ -1,304 +1,430 @@
<template> <template>
<div id="container"> <div id="container">
<div id="content"> <div id="content">
<table id="trainInfo"> <table id="trainInfo">
<tbody> <tbody>
<tr> <tr>
<td rowspan="2">运行</td> <td rowspan="2">运行</td>
<td>网压</td> <td>网压</td>
<td>网流</td> <td>网流</td>
<td>速度</td> <td>速度</td>
<td>牵引/制动级位</td> <td>牵引/制动级位</td>
<td>里程标</td> <td>里程标</td>
<td>下一站</td> <td>下一站</td>
<td>目的站</td> <td>目的站</td>
<td rowspan="2">2022/02/02</td> <td rowspan="2">2022/02/02</td>
</tr> </tr>
<tr> <tr>
<td>{{ trainInfo.voltage }}V</td> <td>{{ trainInfo.voltage }}V</td>
<td>{{ trainInfo.current }}A</td> <td>{{ trainInfo.current }}A</td>
<td>{{ trainInfo.speed }} km/h</td> <td>{{ trainInfo.speed }} km/h</td>
<td :class="{ bg_g: trainInfo.tractionPercent > 0, bg_r: trainInfo.tractionPercent < 0 }"> <td
{{ Math.abs(trainInfo.tractionPercent) }}% :class="{
</td> bg_g: trainInfo.tractionPercent > 0,
<td>{{ trainInfo.mileage || '--' }}</td> bg_r: trainInfo.tractionPercent < 0
<td>{{ trainInfo.nextStation }}</td> }"
<td>{{ trainInfo.destination }}</td> >
</tr> {{ Math.abs(trainInfo.tractionPercent) }}%
</tbody> </td>
</table> <td>{{ trainInfo.mileage || "--" }}</td>
<img id="trainImg" :src="localStatic + '/jl3d/tms/PMsa2.png'" /> <td>{{ trainInfo.nextStation }}</td>
<table id="carInfo"> <td>{{ trainInfo.destination }}</td>
<tbody> </tr>
<tr v-for="([k, v], i) in Object.entries({ 车号: [0, 1, 2, 3, 4, 5], ...carInfo })" :key="k"> </tbody>
<td>{{ k }}</td> </table>
<template v-if="k === '车号'"> <img id="trainImg" :src="localStatic + '/jl3d/tms/PMsa2.png'" />
<td v-for="(item, j) in v" :key="j">{{ j + 1 }}</td> <table id="carInfo">
</template> <tbody>
<template v-else-if="k === '辅助状态'"> <tr
<td :class="{ bg_g: item === 'ON', bg_r: item === 'OFF' }" v-for="(item, j) in v" :key="j"> v-for="([k, v], i) in Object.entries({
{{ `${item === '--' ? '' : '辅助'}${item}` }} 车号: [0, 1, 2, 3, 4, 5],
</td> ...carInfo
</template> })"
<template v-else-if="k === '牵引系统状态'"> :key="k"
<td :class="{ bg_g: item !== 0 }" v-for="(item, j) in v" :key="j"> >
{{ item === 0 ? '--' : `${item} A` }} <td>{{ k }}</td>
</td></template <template v-if="k === '车号'">
> <td v-for="(item, j) in v" :key="j">{{ j + 1 }}</td>
<template v-else-if="k === '制动缸压力'"> </template>
<td v-for="(item, j) in v" :key="j"> <template v-else-if="k === '辅助状态'">
<div class="multi"> <td
<div style="width: 50%">{{ item }}</div> :class="{
<div style="width: 50%">{{ item }}</div> bg_g: item === 'ON',
</div> bg_r: item === 'OFF'
</td> }"
</template> v-for="(item, j) in v"
<template v-else-if="k === '转向架切除'"> :key="j"
<td v-for="(item, j) in v" :key="j"> >
<div class="multi"> {{ `${item === "--" ? "" : "辅助"}${item}` }}
<div style="width: 50%">{{ item[0] }}</div> </td>
<div style="width: 50%">{{ item[1] }}</div> </template>
</div> <template v-else-if="k === '牵引系统状态'">
</td></template <td
> :class="{ bg_g: item !== 0 }"
<template v-else-if="k === '1侧门'"> v-for="(item, j) in v"
<td v-for="j in 6" :key="j"> :key="j"
<div class="multi"> >
<div :class="v ? 'bg_g' : 'bg_r'" style="width: 25%">{{ j < 3 ? 1 : 8 }}</div> {{ item === 0 ? "--" : `${item} A` }}
<div :class="v ? 'bg_g' : 'bg_r'" style="width: 25%">{{ j < 3 ? 3 : 6 }}</div> </td></template
<div :class="v ? 'bg_g' : 'bg_r'" style="width: 25%">{{ j < 3 ? 5 : 4 }}</div> >
<div :class="v ? 'bg_g' : 'bg_r'" style="width: 25%">{{ j < 3 ? 7 : 2 }}</div> <template v-else-if="k === '制动缸压力'">
</div> <td v-for="(item, j) in v" :key="j">
</td></template <div class="multi">
> <div style="width: 50%">{{ item }}</div>
<template v-else-if="k === '2侧门'"> <div style="width: 50%">{{ item }}</div>
<td v-for="j in 6" :key="j"> </div>
<div class="multi"> </td>
<div :class="v ? 'bg_g' : 'bg_r'" style="width: 25%">{{ j < 3 ? 2 : 7 }}</div> </template>
<div :class="v ? 'bg_g' : 'bg_r'" style="width: 25%">{{ j < 3 ? 4 : 5 }}</div> <template v-else-if="k === '转向架切除'">
<div :class="v ? 'bg_g' : 'bg_r'" style="width: 25%">{{ j < 3 ? 6 : 3 }}</div> <td v-for="(item, j) in v" :key="j">
<div :class="v ? 'bg_g' : 'bg_r'" style="width: 25%">{{ j < 3 ? 8 : 1 }}</div> <div class="multi">
</div> <div style="width: 50%">{{ item[0] }}</div>
</td></template <div style="width: 50%">{{ item[1] }}</div>
> </div>
<template v-else-if="k === '交流输出电压'"> </td></template
<td v-for="(item, j) in v" :key="j">{{ item }}</td></template >
> <template v-else-if="k === '1侧门'">
<template v-else-if="k === '空压机状态'"> <td v-for="j in 6" :key="j">
<td v-for="(item, j) in v" :key="j">{{ item }}</td></template <div class="multi">
> <div
<template v-else-if="k === '停放制动施加状态'"> :class="v ? 'bg_r' : 'bg_g'"
<td :class="Number(item) < 1 ? 'bg_r' : 'bg_g'" v-for="(item, j) in v" :key="j"> style="width: 25%"
{{ item }} bar >
</td></template {{ j < 3 ? 1 : 8 }}
> </div>
<template v-else-if="k === 'HSCB状态'"> <div
<td :class="{ bg_g: item }" v-for="(item, j) in v" :key="j">{{ item ? '' : '-- --' }}</td></template :class="v ? 'bg_r' : 'bg_g'"
> style="width: 25%"
<template v-else-if="k === '牵引脉冲使能'"> >
<td :class="{ bg_g: item }" v-for="(item, j) in v" :key="j">{{ item ? '' : '-- --' }}</td></template {{ j < 3 ? 3 : 6 }}
> </div>
<td v-if="i === 0" :rowspan="Object.keys(carInfo).length + 1"> <div
<div class="speedBg"> :class="v ? 'bg_r' : 'bg_g'"
<img :src="`${localStatic}/jl3d/tms/PMS3.png`" /> style="width: 25%"
<div >
id="accBar" {{ j < 3 ? 5 : 4 }}
:style="{ </div>
transform: `scaleY(${Math.abs(trainInfo.tractionPercent) / 100})`, <div
}" :class="v ? 'bg_r' : 'bg_g'"
:class="{ bg_g: trainInfo.tractionPercent > 0, bg_r: trainInfo.tractionPercent < 0 }" style="width: 25%"
></div> >
<div class="gap"></div> {{ j < 3 ? 7 : 2 }}
<div id="speedBar" :style="{ transform: `scaleY(${trainInfo.speed / 80})` }"></div> </div>
</div> </div>
<div>{{ trainInfo.speed }} km/h</div> </td></template
</td> >
</tr> <template v-else-if="k === '2侧门'">
</tbody> <td v-for="j in 6" :key="j">
</table> <div class="multi">
</div> <div
</div> :class="v ? 'bg_r' : 'bg_g'"
style="width: 25%"
>
{{ j < 3 ? 2 : 7 }}
</div>
<div
:class="v ? 'bg_r' : 'bg_g'"
style="width: 25%"
>
{{ j < 3 ? 4 : 5 }}
</div>
<div
:class="v ? 'bg_r' : 'bg_g'"
style="width: 25%"
>
{{ j < 3 ? 6 : 3 }}
</div>
<div
:class="v ? 'bg_r' : 'bg_g'"
style="width: 25%"
>
{{ j < 3 ? 8 : 1 }}
</div>
</div>
</td></template
>
<template v-else-if="k === '交流输出电压'">
<td v-for="(item, j) in v" :key="j">
{{ item }}
</td></template
>
<template v-else-if="k === '空压机状态'">
<td v-for="(item, j) in v" :key="j">
{{ item }}
</td></template
>
<template v-else-if="k === '停放制动施加状态'">
<td
:class="Number(item) < 1 ? 'bg_r' : 'bg_g'"
v-for="(item, j) in v"
:key="j"
>
{{ item }} bar
</td></template
>
<template v-else-if="k === 'HSCB状态'">
<td
:class="{ bg_g: item }"
v-for="(item, j) in v"
:key="j"
>
{{ item ? "" : "-- --" }}
</td></template
>
<template v-else-if="k === '牵引脉冲使能'">
<td
:class="{ bg_g: item }"
v-for="(item, j) in v"
:key="j"
>
{{ item ? "" : "-- --" }}
</td></template
>
<td
v-if="i === 0"
:rowspan="Object.keys(carInfo).length + 1"
>
<div class="speedBg">
<img
:src="`${localStatic}/jl3d/tms/PMS3.png`"
/>
<div
id="accBar"
:style="{
transform: `scaleY(${Math.abs(
trainInfo.tractionPercent
) / 100})`
}"
:class="{
bg_g: trainInfo.tractionPercent > 0,
bg_r: trainInfo.tractionPercent < 0
}"
></div>
<div class="gap"></div>
<div
id="speedBar"
:style="{
transform: `scaleY(${trainInfo.speed /
80})`
}"
></div>
</div>
<div>{{ trainInfo.speed }} km/h</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</template> </template>
<script> <script>
import { JL3D_LOCAL_STATIC } from '@/api/jlmap3d/assets3d.js'; import { JL3D_LOCAL_STATIC } from "@/api/jlmap3d/assets3d.js";
import { creatSubscribe, clearSubscribe, getTopic } from '@/utils/stomp'; import { creatSubscribe, clearSubscribe, getTopic } from "@/utils/stomp";
import { getToken } from '@/utils/auth'; import { getToken } from "@/utils/auth";
let timer = null; let timer = null;
export default { export default {
name: 'tmsPage', name: "tmsPage",
data() { data() {
return { return {
localStatic: JL3D_LOCAL_STATIC, localStatic: JL3D_LOCAL_STATIC,
trainInfo: { trainInfo: {
voltage: 1600, voltage: 1600,
current: 317, current: 317,
speed: 0, speed: 0,
tractionPercent: 0, tractionPercent: 0,
mileage: '--', mileage: "--",
nextStation: '', nextStation: "",
destination: '', destination: ""
}, },
carInfo: { carInfo: {
辅助状态: ['ON', '--', 'OFF', '--', '--', 'ON'], 辅助状态: ["ON", "--", "OFF", "--", "--", "ON"],
牵引系统状态: [0, 58, 47, 52, 50, 0], 牵引系统状态: [0, 58, 47, 52, 50, 0],
制动缸压力: [0, 0, 0, 0, 0, 0], 制动缸压力: [0, 0, 0, 0, 0, 0],
转向架切除: [[' ', ' '], [' ', ' '], [' ', ' '], [' ', ' '], [' ', ' '], [' ', ' ']], 转向架切除: [
'1侧门': true, [" ", " "],
'2侧门': true, [" ", " "],
交流输出电压: [378, '--', '--', '--', '--', 378], [" ", " "],
空压机状态: ['--', '--', '', '', '--', '--'], [" ", " "],
停放制动施加状态: [7.85, 7.85, 7.85, 7.85, 7.85, 7.85], [" ", " "],
HSCB状态: [false, true, true, true, true, false], [" ", " "]
牵引脉冲使能: [true, false, false, false, false, true], ],
}, "1侧门": false,
}; "2侧门": false,
}, 交流输出电压: [378, "--", "--", "--", "--", 378],
mounted() { 空压机状态: ["--", "--", "", "", "--", "--"],
this.group = this.$route.query.group; 停放制动施加状态: [7.85, 7.85, 7.85, 7.85, 7.85, 7.85],
this.subscribe(); HSCB状态: [false, true, true, true, true, false],
this.setTractionWave(true); 牵引脉冲使能: [true, false, false, false, false, true]
}, }
unmounted() { };
this.unsubscribe(); },
if (timer) { mounted() {
clearInterval(timer); this.group = this.$route.query.group;
} this.subscribe();
}, this.setTractionWave(true);
methods: { },
subscribe() { unmounted() {
const header = { group: this.group || '', 'X-Token': getToken() }; this.unsubscribe();
creatSubscribe(getTopic('TMS', this.group), header, msg => { if (timer) {
let res = JSON.parse(msg.body); clearInterval(timer);
console.log(res); }
if (!res) return; },
methods: {
subscribe() {
const header = { group: this.group || "", "X-Token": getToken() };
creatSubscribe(getTopic("TMS", this.group), header, msg => {
let res = JSON.parse(msg.body);
console.log(res);
console.log(res.parkingBreakPressure);
if (!res) return;
if (res.current) this.trainInfo.current = res.current; if (res.current !== undefined)
if (res.voltage) this.trainInfo.voltage = res.voltage; this.trainInfo.current = res.current;
if (res.speed) this.trainInfo.speed = res.speed.toFixed(2); if (res.voltage !== undefined)
if (res.tbLevelPercent) this.trainInfo.tractionPercent = res.tbLevelPercent; this.trainInfo.voltage = res.voltage;
if (res.mileage) this.trainInfo.mileage = res.mileage; if (res.speed !== undefined)
if (res.nextStation) this.trainInfo.nextStation = res.nextStation; this.trainInfo.speed = res.speed.toFixed(2);
if (res.destination) this.trainInfo.destination = res.destination; if (res.tbLevelPercent !== undefined)
if (res.pressureOfBrakeCylinder) this.trainInfo.tractionPercent = res.tbLevelPercent;
this.carInfo.制动缸压力 = Array(6).fill(res.pressureOfBrakeCylinder.toFixed(2)); if (res.mileage !== undefined)
if (res.oneSideDoorOpened) this.carInfo['1侧门'] = res.oneSideDoorOpened; this.trainInfo.mileage = res.mileage;
if (res.twoSideDoorOpened) this.carInfo['2侧门'] = res.twoSideDoorOpened; if (res.nextStation !== undefined)
if (res.parkingBreakPressure) this.carInfo.停放制动施加状态 = Array(6).fill(res.parkingBreakPressure); this.trainInfo.nextStation = res.nextStation;
this.setTractionWave(res.traction); if (res.destination !== undefined)
}); this.trainInfo.destination = res.destination;
}, if (res.pressureOfBrakeCylinder !== undefined)
unsubscribe() { this.carInfo.制动缸压力.splice(
clearSubscribe(getTopic('TMS', this.group)); 0,
}, 6,
setTractionWave(flag) { ...Array(6).fill(res.pressureOfBrakeCylinder.toFixed(2))
if (timer) { );
clearInterval(timer); if (res.oneSideDoorOpened !== undefined)
} this.carInfo["1侧门"] = res.oneSideDoorOpened;
if (flag) { if (res.twoSideDoorOpened !== undefined)
timer = setInterval(() => { this.carInfo["2侧门"] = res.twoSideDoorOpened;
this.carInfo.牵引系统状态 = Array(6) if (res.parkingBreakPressure !== undefined)
.fill(true) this.carInfo.停放制动施加状态.splice(
.map(b => (b ? (Math.random() * 10 + 46).toFixed() : '--')); 0,
}, 1000); 6,
} ...Array(6).fill(res.parkingBreakPressure)
}, );
}, this.setTractionWave(res.traction);
});
},
unsubscribe() {
clearSubscribe(getTopic("TMS", this.group));
},
setTractionWave(flag) {
if (timer) {
clearInterval(timer);
}
if (flag) {
timer = setInterval(() => {
this.carInfo.牵引系统状态 = Array(6)
.fill(true)
.map(b =>
b ? (Math.random() * 10 + 46).toFixed() : "--"
);
}, 1000);
}
}
}
}; };
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
#container { #container {
background: #000; background: #000;
height: 100%; height: 100%;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
.bg_g { .bg_g {
background: #0f0; background: #0f0;
color: #000; color: #000;
} }
.bg_r { .bg_r {
background: #f00; background: #f00;
} }
#content { #content {
width: 80%; width: 80%;
height: 90%; height: 90%;
padding: 5px; padding: 5px;
display: flex; display: flex;
color: #fff; color: #fff;
user-select: none; user-select: none;
flex-direction: column; flex-direction: column;
justify-content: flex-start; justify-content: flex-start;
align-items: center; align-items: center;
table { table {
width: 100%; width: 100%;
font-size: 1.4rem; font-size: 1.4rem;
text-align: center; text-align: center;
border-collapse: collapse; border-collapse: collapse;
td { td {
border: 1px solid #fff; border: 1px solid #fff;
} }
} }
#trainInfo { #trainInfo {
height: 25%; height: 25%;
} }
#trainImg { #trainImg {
width: 75%; width: 75%;
height: 10%; height: 10%;
margin-top: 5px; margin-top: 5px;
} }
#carInfo { #carInfo {
height: 58%; height: 58%;
td { td {
width: 12.5%; width: 12.5%;
padding: 0; padding: 0;
.multi { .multi {
width: 100%; width: 100%;
height: 100%; height: 100%;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: stretch; justify-content: stretch;
& > div { & > div {
border-right: 1px solid #fff; border-right: 1px solid #fff;
height: 100%; height: 100%;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
& :last-child { & :last-child {
border-right: none; border-right: none;
} }
} }
} }
.speedBg { .speedBg {
height: 90%; height: 90%;
padding: 2px; padding: 2px;
display: flex; display: flex;
justify-content: center; justify-content: center;
position: relative; position: relative;
img { img {
position: absolute; position: absolute;
top: 0; top: 0;
left: 10%; left: 10%;
width: 80%; width: 80%;
height: 100%; height: 100%;
} }
.gap { .gap {
width: 4%; width: 4%;
} }
div { div {
width: 23%; width: 23%;
transform-origin: bottom; transform-origin: bottom;
transform: scaleY(0.5); transform: scaleY(0.5);
} }
#speedBar { #speedBar {
background: #0ff; background: #0ff;
} }
} }
} }
} }
} }
</style> </style>

View File

@ -22,7 +22,7 @@
<div class="left-logo-box"> <div class="left-logo-box">
<img class="logo" :src="loginProLogo ? $store.state.user.ossUrl + '/logo/' + loginProLogo:''" :style="{ width: loginProLogoWidth+'px'}"> <img class="logo" :src="loginProLogo ? $store.state.user.ossUrl + '/logo/' + loginProLogo:''" :style="{ width: loginProLogoWidth+'px'}">
<span>{{ loginOrgTitle }}</span> <span>{{ loginOrgTitle }}</span>
<img v-if="project === 'cdgxy'" class="logo" :src="zhIcon" > <img v-if="project === 'cdgxy'" class="logo" :src="zhIcon">
</div> </div>
<div class="content-box"> <div class="content-box">
<div class="text-box">{{ loginProtitle }}</div> <div class="text-box">{{ loginProtitle }}</div>
@ -57,6 +57,8 @@ import bgIscsImg from '@/assets/bg_iscs.jpg';
import bgCctvImg from '@/assets/bg_cctv.jpg'; import bgCctvImg from '@/assets/bg_cctv.jpg';
import bgLswImg from '@/assets/bg_lsw.jpg'; import bgLswImg from '@/assets/bg_lsw.jpg';
import bgPsdImg from '@/assets/bg_psd.png'; import bgPsdImg from '@/assets/bg_psd.png';
import bgPisImg from '@/assets/bg_pis.png';
import bgTmsImg from '@/assets/bg_tms.png';
import ZongheIcon from '@/assets/icon/icon_zonghe.png'; import ZongheIcon from '@/assets/icon/icon_zonghe.png';
import { getLoginWmurl, checkLoginStatus, getLoginInfo } from '@/api/login'; import { getLoginWmurl, checkLoginStatus, getLoginInfo } from '@/api/login';
import { getToken} from '@/utils/auth'; import { getToken} from '@/utils/auth';
@ -97,7 +99,7 @@ export default {
return this.$route.query.type; return this.$route.query.type;
}, },
syncLogin() { syncLogin() {
const synchronousLogin = ['VR_IBP', 'LSW', 'CCTV', 'ISCS_LW', 'ISCS_CW', 'VR_PSD', 'SANDBOX', 'ILW', 'PIS_STAND', 'PIS_TRAIN']; const synchronousLogin = ['VR_IBP', 'LSW', 'CCTV', 'ISCS_LW', 'ISCS_CW', 'VR_PSD', 'SANDBOX', 'ILW', 'PIS_STAND', 'PIS_TRAIN', 'PIS', 'TMS'];
return this.type ? synchronousLogin.includes(this.type) : false; return this.type ? synchronousLogin.includes(this.type) : false;
}, },
bgImg() { bgImg() {
@ -142,7 +144,9 @@ export default {
ILW:{text:'检测教员机登录中', Img:bgLswImg}, ILW:{text:'检测教员机登录中', Img:bgLswImg},
PIS_TRAIN:{text:'检测教员机登录中'}, PIS_TRAIN:{text:'检测教员机登录中'},
PIS_STAND:{text:'检测教员机登录中'}, PIS_STAND:{text:'检测教员机登录中'},
SANDBOX:{Img:bgLswImg, text:'检测教员机登录中'} SANDBOX:{Img:bgLswImg, text:'检测教员机登录中'},
PIS:{text:'检测教员机登录中', Img: bgPisImg},
TMS:{text:'检测列车驾驶终端登录中', Img: bgTmsImg}
}; };
this.loadingText = deviceMap[this.type].text; this.loadingText = deviceMap[this.type].text;
this.deviceImg = deviceMap[this.type].Img; this.deviceImg = deviceMap[this.type].Img;

View File

@ -24,7 +24,7 @@ import { loadTrainingBg } from '@/api/jmap/training';
import Cookies from 'js-cookie'; import Cookies from 'js-cookie';
import ConstConfig from '@/scripts/ConstConfig'; import ConstConfig from '@/scripts/ConstConfig';
import { loadDraftTraining } from '@/api/jmap/training'; import { loadDraftTraining } from '@/api/jmap/training';
import { deleteTraining, publishTraining } from '@/api/trainingManage'; import { deleteTraining, publishTraining, jumpToTraining } from '@/api/trainingManage';
import { OperateMode } from '@/scripts/ConstDic'; import { OperateMode } from '@/scripts/ConstDic';
export default { export default {
@ -206,6 +206,18 @@ export default {
this.$jlmap && this.$jlmap.updateTransform(mapLocation.scale, {x:mapLocation.x, y:mapLocation.y}); this.$jlmap && this.$jlmap.updateTransform(mapLocation.scale, {x:mapLocation.x, y:mapLocation.y});
} }
this.$emit('updateDetails', resp.data); this.$emit('updateDetails', resp.data);
if (resp.data && resp.data.needRunToFinalStep) {
this.$confirm('此草稿实训为转存后实训且未保存步骤背景,如需编辑则需快速仿真到最后一步!', this.$t('global.tips'), {
confirmButtonText: '快速仿真',
cancelButtonText: this.$t('global.cancel'),
type: 'info'
}).then(() => {
const stepList = JSON.parse(resp.data.stepJson);
jumpToTraining(this.$route.query.group, stepList[stepList.length - 1].id).then(()=>{
this.$message.success('开始快速仿真!');
}).catch(e => this.$message.error('开始快速仿真失败!'));
});
}
}).catch((e) => { }).catch((e) => {
console.error(e); console.error(e);
this.$emit('updateDetails', {}); this.$emit('updateDetails', {});

View File

@ -53,7 +53,7 @@
</template> </template>
<script> <script>
import { updateTrainingLabel } from '@/api/trainingManage'; import { updateTrainingInfo } from '@/api/trainingManage';
import ConstConfig from '@/scripts/ConstConfig'; import ConstConfig from '@/scripts/ConstConfig';
export default { export default {
@ -87,8 +87,8 @@ export default {
const form = { const form = {
labelWidth: '90px', labelWidth: '90px',
items: [ items: [
{ prop: 'name', label: '名称', type: 'text', required: true, disabled: true }, { prop: 'name', label: '名称', type: 'text', required: true },
{ prop: 'description', label: '描述', type: 'textarea', isAutoSize: true, required: true, disabled: true }, { prop: 'description', label: '描述', type: 'textarea', isAutoSize: true, required: true },
{ prop: 'type', label: '类型', type: 'select', options: ConstConfig.ConstSelect.trainingType, required: true, disabled: true } { prop: 'type', label: '类型', type: 'select', options: ConstConfig.ConstSelect.trainingType, required: true, disabled: true }
] ]
}; };
@ -168,8 +168,9 @@ export default {
const cpData = Object.assign({}, this.formModel); const cpData = Object.assign({}, this.formModel);
cpData.client = this.formModel.type === 'SINGLE' ? this.tagForm.client : ''; cpData.client = this.formModel.type === 'SINGLE' ? this.tagForm.client : '';
cpData.labelJson = JSON.stringify(this.tagForm.dynamicTags); cpData.labelJson = JSON.stringify(this.tagForm.dynamicTags);
const api = updateTrainingLabel; const api = updateTrainingInfo;
const mes = '编辑标签'; const mes = '编辑标签';
console.log(cpData, 'cpData');
api(cpData).then(res => { api(cpData).then(res => {
this.$message.success(`${mes}成功!`); this.$message.success(`${mes}成功!`);
this.$emit('editLabel'); this.$emit('editLabel');

View File

@ -14,7 +14,7 @@ import { launchFullscreen } from '@/utils/screen';
import editTraining from './editTraining'; import editTraining from './editTraining';
import { superAdmin, admin } from '@/router/index'; import { superAdmin, admin } from '@/router/index';
import { getAllPublishTrainingList, getManageTrainingListInOrg, publishTrainingPutOn, publishTrainingPutOff, publishTrainingDelete } from '@/api/jmap/training'; import { getAllPublishTrainingList, getManageTrainingListInOrg, publishTrainingPutOn, publishTrainingPutOff, publishTrainingDelete } from '@/api/jmap/training';
import { exportTrainingData, importTrainingData } from '@/api/trainingManage'; import { exportTrainingData, importTrainingData, saveAsTrainingDraft } from '@/api/trainingManage';
export default { export default {
name:'TrainingManage', name:'TrainingManage',
components: { components: {
@ -102,7 +102,7 @@ export default {
{ {
type: 'button', type: 'button',
title: this.$t('trainingManage.operate'), title: this.$t('trainingManage.operate'),
width: '240', width: '330',
buttons: [ buttons: [
// { // {
// name: '', // name: '',
@ -111,11 +111,17 @@ export default {
// showControl:(row) => { return row.mapSystem; } // showControl:(row) => { return row.mapSystem; }
// } // }
{ {
name: '修改标签', name: '修改信息',
handleClick: this.handlerEditLabel, handleClick: this.handlerEditLabel,
type: 'primary', type: 'primary',
showControl: row => { return this.isAdmin; } showControl: row => { return this.isAdmin; }
}, },
{
name: '存为草稿',
handleClick: this.handlerSaveDraft,
type: 'primary',
showControl: row => { return this.isAdmin; }
},
{ {
name: '上架', name: '上架',
handleClick: this.handlerShelf, handleClick: this.handlerShelf,
@ -226,6 +232,17 @@ export default {
handlerEditLabel(index, data) { handlerEditLabel(index, data) {
this.$refs.editTraining.doShow(data); this.$refs.editTraining.doShow(data);
}, },
handlerSaveDraft(index, data) {
this.$confirm('此操作将实训转存为草稿, 是否继续?', this.$t('global.tips'), {
confirmButtonText: this.$t('global.confirm'),
cancelButtonText: this.$t('global.cancel'),
type: 'info'
}).then(() => {
saveAsTrainingDraft(data.id).then(resp=>{
this.$message.success('转存为草稿成功!');
}).catch(e => this.$message.error('转存为草稿失败!'));
});
},
handlerShelf(index, data) { handlerShelf(index, data) {
publishTrainingPutOn({ids: [data.id]}).then(resp=>{ publishTrainingPutOn({ids: [data.id]}).then(resp=>{
this.queryList.reload(); this.queryList.reload();

View File

@ -484,7 +484,6 @@ export default {
handleMember(member, stationList) { handleMember(member, stationList) {
const data = { value: member.id, label: '', memberType: member.type }; const data = { value: member.id, label: '', memberType: member.type };
const device = stationList.find(station => station.code === member.deviceCode) || {}; const device = stationList.find(station => station.code === member.deviceCode) || {};
console.log(member, '====');
switch (member.type) { switch (member.type) {
case 'DISPATCHER': case 'DISPATCHER':
data.label = '行调' + (member.name ? `-${member.name }` : ''); data.label = '行调' + (member.name ? `-${member.name }` : '');

View File

@ -82,7 +82,9 @@ export default {
UDP_CLIENT: 'UDP客户端', UDP_CLIENT: 'UDP客户端',
PIS_STAND: '站台PIS', PIS_STAND: '站台PIS',
PIS_TRAIN: '列车PIS', PIS_TRAIN: '列车PIS',
UDP_LOW:'UDP下位机' UDP_LOW:'UDP下位机',
PIS: '乘客PIS',
TMS: 'TMS'
}, },
mapList: [], mapList: [],
roleList:[], roleList:[],
@ -115,7 +117,6 @@ export default {
this.jsonConfig = JSON.stringify(JSON.parse(resp.data.config), null, 4); this.jsonConfig = JSON.stringify(JSON.parse(resp.data.config), null, 4);
} }
}).catch((e)=> { }).catch((e)=> {
console.error(e, '======');
this.$message.error('获取项目设备详情失败!'); this.$message.error('获取项目设备详情失败!');
}); });
// if (row.type === 'PSL' || row.type === 'PSC') { // if (row.type === 'PSL' || row.type === 'PSC') {
@ -153,7 +154,7 @@ export default {
// } else { // } else {
const data = {id: this.data.id, project: this.data.project, code: this.data.code, type: this.data.type, config: this.jsonConfig }; const data = {id: this.data.id, project: this.data.project, code: this.data.code, type: this.data.type, config: this.jsonConfig };
flag && setDeviceConfig(data).then(response => { flag && setDeviceConfig(data).then(response => {
self.$message.success('设置设备网关映射配置成功'); self.$message.success('设置设备配置成功');
self.handleClose(); self.handleClose();
self.$emit('reloadTable'); self.$emit('reloadTable');
}).catch(error => { }).catch(error => {
@ -173,7 +174,7 @@ export default {
// this.standCode = ''; // this.standCode = '';
this.dialogVisible = false; this.dialogVisible = false;
this.$refs.form && this.$refs.form.resetFields(); this.$refs.form && this.$refs.form.resetFields();
}, }
// mapIdChange(mapId, functionId) { // mapIdChange(mapId, functionId) {
// if (mapId) { // if (mapId) {
// querySimulationStationsByMapId(mapId).then(resp => { // querySimulationStationsByMapId(mapId).then(resp => {
@ -236,76 +237,76 @@ export default {
// }); // });
// } // }
// } // }
handleMember(member, stationList) { // handleMember(member, stationList) {
const data = { value: member.id, label: '', memberType: member.type }; // const data = { value: member.id, label: '', memberType: member.type };
const device = stationList.find(station => station.code === member.deviceCode) || {}; // const device = stationList.find(station => station.code === member.deviceCode) || {};
switch (member.type) { // switch (member.type) {
case 'DISPATCHER': // case 'DISPATCHER':
data.label = '行调' + (member.name ? `-${member.name }` : ''); // data.label = '' + (member.name ? `-${member.name }` : '');
break; // break;
case 'STATION_SUPERVISOR': // case 'STATION_SUPERVISOR':
data.label = '行值-' + device.name + (member.name ? `-${member.name }` : ''); // data.label = '-' + device.name + (member.name ? `-${member.name }` : '');
break; // break;
case 'DRIVER': // case 'DRIVER':
data.label = '司机-' + member.deviceCode; // data.label = '-' + member.deviceCode;
break; // break;
case 'MAINTAINER': // case 'MAINTAINER':
data.label = '通号' + (member.name ? `-${member.name }` : ''); // data.label = '' + (member.name ? `-${member.name }` : '');
break; // break;
case 'DEPOT_DISPATCHER': // case 'DEPOT_DISPATCHER':
data.label = '调度-' + device.name + (member.name ? `-${member.name }` : ''); // data.label = '-' + device.name + (member.name ? `-${member.name }` : '');
break; // break;
case 'SIGNAL_BUILDING': // case 'SIGNAL_BUILDING':
data.label = '信号楼-' + device.name + (member.name ? `-${member.name }` : ''); // data.label = '-' + device.name + (member.name ? `-${member.name }` : '');
break; // break;
case 'STATION_ASSISTANT': // case 'STATION_ASSISTANT':
data.label = '助理-' + device.name + (member.name ? `-${member.name }` : ''); // data.label = '-' + device.name + (member.name ? `-${member.name }` : '');
break; // break;
case 'STATION_MASTER': // case 'STATION_MASTER':
data.label = '站长-' + device.name + (member.name ? `-${member.name }` : ''); // data.label = '-' + device.name + (member.name ? `-${member.name }` : '');
break; // break;
case 'STATION_SIGNALER': // case 'STATION_SIGNALER':
data.label = '信号员-' + device.name + (member.name ? `-${member.name }` : ''); // data.label = '-' + device.name + (member.name ? `-${member.name }` : '');
break; // break;
case 'STATION_PASSENGER': // case 'STATION_PASSENGER':
data.label = '客运员-' + device.name + (member.name ? `-${member.name }` : ''); // data.label = '-' + device.name + (member.name ? `-${member.name }` : '');
break; // break;
case 'STATION_SWITCH_MAN': // case 'STATION_SWITCH_MAN':
data.label = '扳道员-' + device.name + (member.name ? `-${member.name }` : ''); // data.label = '-' + device.name + (member.name ? `-${member.name }` : '');
break; // break;
case 'STATION_FACILITATOR': // case 'STATION_FACILITATOR':
data.label = '引导员-' + device.name + (member.name ? `-${member.name }` : ''); // data.label = '-' + device.name + (member.name ? `-${member.name }` : '');
break; // break;
case 'STATION_WORKER': // case 'STATION_WORKER':
data.label = '工务工-' + device.name + (member.name ? `-${member.name }` : ''); // data.label = '-' + device.name + (member.name ? `-${member.name }` : '');
break; // break;
case 'DEVICE_MANAGER': // case 'DEVICE_MANAGER':
data.label = '设备管理员-' + device.name + (member.name ? `-${member.name }` : ''); // data.label = '-' + device.name + (member.name ? `-${member.name }` : '');
break; // break;
case 'TRAIN_MASTER': // case 'TRAIN_MASTER':
data.label = '车务段段长' + (member.name ? `-${member.name }` : ''); // data.label = '' + (member.name ? `-${member.name }` : '');
break; // break;
case 'ELECTRIC_DISPATCHER': // case 'ELECTRIC_DISPATCHER':
data.label = '工电调度' + (member.name ? `-${member.name }` : ''); // data.label = '' + (member.name ? `-${member.name }` : '');
break; // break;
case 'PARENT_DEPARTMENT': // case 'PARENT_DEPARTMENT':
data.label = '上级部分' + (member.name ? `-${member.name }` : ''); // data.label = '' + (member.name ? `-${member.name }` : '');
break; // break;
case 'SCHEDULING': // case 'SCHEDULING':
data.label = '派班员' + (member.name ? `-${member.name }` : ''); // data.label = '' + (member.name ? `-${member.name }` : '');
break; // break;
case 'SHIFT_MANAGER': // case 'SHIFT_MANAGER':
data.label = '值班主任' + (member.name ? `-${member.name }` : ''); // data.label = '' + (member.name ? `-${member.name }` : '');
break; // break;
case 'ENVIRONMENT_DISPATCHER': // case 'ENVIRONMENT_DISPATCHER':
data.label = '环控调度' + (member.name ? `-${member.name}` : ''); // data.label = '' + (member.name ? `-${member.name}` : '');
break; // break;
case 'STATION_ELECTRIC_WORKER': // case 'STATION_ELECTRIC_WORKER':
data.label = '电力工务 ' + (member.name ? `-${member.name}` : ''); // data.label = ' ' + (member.name ? `-${member.name}` : '');
break; // break;
} // }
return data; // return data;
} // }
} }
}; };
</script> </script>

View File

@ -111,7 +111,7 @@ export default {
{ prop: 'deviceCode', label: '教研机:', type: 'select', options: this.deviceList, optionLabel: 'code', optionValue: 'code' }, { prop: 'deviceCode', label: '教研机:', type: 'select', options: this.deviceList, optionLabel: 'code', optionValue: 'code' },
{ prop: 'quadrant', label: '屏幕配置:', type: 'select', options: this.screenList, optionLabel: 'label', optionValue: 'value'}, { prop: 'quadrant', label: '屏幕配置:', type: 'select', options: this.screenList, optionLabel: 'label', optionValue: 'value'},
{ prop: 'roleCode', label: '关联角色:', type: 'select', options: this.roleList, optionLabel: 'label', optionValue: 'value' }, { prop: 'roleCode', label: '关联角色:', type: 'select', options: this.roleList, optionLabel: 'label', optionValue: 'value' },
{ prop: 'client', label: '初始客户端:', type: 'select', options: this.clientList, optionLabel: 'label', optionValue: 'value' }, { prop: 'client', label: '初始客户端:', type: 'select', options: this.clientList, optionLabel: 'name', optionValue: 'id' },
{ prop: 'clientList', label: '客户端列表:', type: 'select', options: this.clientList, optionLabel: 'name', optionValue: 'id' } { prop: 'clientList', label: '客户端列表:', type: 'select', options: this.clientList, optionLabel: 'name', optionValue: 'id' }
] ]
}; };
@ -121,7 +121,7 @@ export default {
items: [ items: [
{ prop: 'deviceCode', label: '教研机:', type: 'select', options: this.deviceList, optionLabel: 'code', optionValue: 'code' }, { prop: 'deviceCode', label: '教研机:', type: 'select', options: this.deviceList, optionLabel: 'code', optionValue: 'code' },
{ prop: 'roleCode', label: '关联角色:', type: 'select', options: this.roleList, optionLabel: 'label', optionValue: 'value' }, { prop: 'roleCode', label: '关联角色:', type: 'select', options: this.roleList, optionLabel: 'label', optionValue: 'value' },
{ prop: 'client', label: '关联客户端:', type: 'select', options: this.clientList, optionLabel: 'label', optionValue: 'value' }, { prop: 'client', label: '关联客户端:', type: 'select', options: this.clientList, optionLabel: 'name', optionValue: 'id' },
{ prop: 'clientList', label: '客户端列表:', type: 'select', options: this.clientList, optionLabel: 'name', optionValue: 'id' } { prop: 'clientList', label: '客户端列表:', type: 'select', options: this.clientList, optionLabel: 'name', optionValue: 'id' }
] ]
}; };
@ -131,7 +131,7 @@ export default {
items: [ items: [
{ prop: 'deviceCode', label: '教研机', type: 'select', options: this.deviceList, optionLabel: 'code', optionValue: 'code'}, { prop: 'deviceCode', label: '教研机', type: 'select', options: this.deviceList, optionLabel: 'code', optionValue: 'code'},
{ prop: 'roleCode', label: '关联角色:', type: 'select', options: this.roleList, optionLabel: 'label', optionValue: 'value' }, { prop: 'roleCode', label: '关联角色:', type: 'select', options: this.roleList, optionLabel: 'label', optionValue: 'value' },
{ prop: 'client', label: '关联客户端:', type: 'select', options: this.clientList, optionLabel: 'label', optionValue: 'value' }, { prop: 'client', label: '关联客户端:', type: 'select', options: this.clientList, optionLabel: 'name', optionValue: 'id' },
{ prop: 'clientList', label: '客户端列表:', type: 'select', options: this.clientList, optionLabel: 'name', optionValue: 'id' } { prop: 'clientList', label: '客户端列表:', type: 'select', options: this.clientList, optionLabel: 'name', optionValue: 'id' }
] ]
}; };
@ -141,7 +141,7 @@ export default {
items: [ items: [
{ prop: 'deviceCode', label: '教研机', type: 'select', options: this.deviceList, optionLabel: 'code', optionValue: 'code'}, { prop: 'deviceCode', label: '教研机', type: 'select', options: this.deviceList, optionLabel: 'code', optionValue: 'code'},
{ prop: 'roleCode', label: '关联角色:', type: 'select', options: this.roleList, optionLabel: 'label', optionValue: 'value' }, { prop: 'roleCode', label: '关联角色:', type: 'select', options: this.roleList, optionLabel: 'label', optionValue: 'value' },
{ prop: 'client', label: '关联客户端:', type: 'select', options: this.clientList, optionLabel: 'label', optionValue: 'value' }, { prop: 'client', label: '关联客户端:', type: 'select', options: this.clientList, optionLabel: 'name', optionValue: 'id' },
{ prop: 'clientList', label: '客户端列表:', type: 'select', options: this.clientList, optionLabel: 'name', optionValue: 'id' } { prop: 'clientList', label: '客户端列表:', type: 'select', options: this.clientList, optionLabel: 'name', optionValue: 'id' }
] ]
}; };

View File

@ -187,7 +187,7 @@ export default {
}); });
}, },
editConfig(index, row) { editConfig(index, row) {
const configGatewayList = ['SWITCH', 'SIGNAL', 'PSD', 'PSL', 'PSC', 'UDP_LOW', 'SECTION', 'TRAIN', 'UDP_CLIENT', 'PIS_STAND', 'PIS_TRAIN']; const configGatewayList = ['SWITCH', 'SIGNAL', 'PSD', 'PSL', 'PSC', 'UDP_LOW', 'SECTION', 'TRAIN', 'UDP_CLIENT', 'PIS_STAND', 'PIS_TRAIN', 'PIS', 'TMS'];
if (['LW', 'VR_IBP', 'ISCS_LW', 'ISCS_CW', 'IM', 'CW', 'DRIVE', 'DEPOT'].includes(row.type)) { if (['LW', 'VR_IBP', 'ISCS_LW', 'ISCS_CW', 'IM', 'CW', 'DRIVE', 'DEPOT'].includes(row.type)) {
this.$refs.editConfig.doShow(row); this.$refs.editConfig.doShow(row);
} else if (configGatewayList.includes(row.type)) { } else if (configGatewayList.includes(row.type)) {