代码提交

This commit is contained in:
fan 2023-02-02 18:01:27 +08:00
parent 1fe0f491f8
commit 03c97957f3
35 changed files with 656 additions and 620 deletions

View File

@ -4,10 +4,10 @@
<qrcode-vue v-loading="loading" :value="url" :size="400" /> <qrcode-vue v-loading="loading" :value="url" :size="400" />
</div> </div>
<div v-if="group" class="qrcodeGroup"> <div v-if="group" class="qrcodeGroup">
<span>{{ $t('global.roomId')+group }}</span> <span>{{ 'Simulation number:'+group }}</span>
</div> </div>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="doClose">{{ $t('global.close') }}</el-button> <el-button @click="doClose">Close</el-button>
</span> </span>
</el-dialog> </el-dialog>
</template> </template>

View File

@ -69,8 +69,8 @@
<div class="middle-right"> <div class="middle-right">
<div class="middle-right-top"> <div class="middle-right-top">
<el-table :data="getTableData" border style="width: 100%" height="190"> <el-table :data="getTableData" border style="width: 100%" height="190">
<el-table-column type="index" label="Index" width="50" /> <el-table-column type="index" label="Index" width="53" />
<el-table-column prop="name" label="Ordered unit" /> <el-table-column prop="name" label="Ordered unit" width="105" />
<el-table-column prop="copyers" label="Place of receipt" /> <el-table-column prop="copyers" label="Place of receipt" />
</el-table> </el-table>
</div> </div>
@ -81,7 +81,7 @@
</div> </div>
<div class="middle-right-bottom"> <div class="middle-right-bottom">
<el-table :data="readList" border style="width: 100%" height="200"> <el-table :data="readList" border style="width: 100%" height="200">
<el-table-column type="index" label="Index" width="50" /> <el-table-column type="index" label="Index" width="53" />
<el-table-column prop="reader" label="Read by" /> <el-table-column prop="reader" label="Read by" />
<el-table-column prop="readTime" label="Reading time" /> <el-table-column prop="readTime" label="Reading time" />
</el-table> </el-table>

View File

@ -1,6 +1,6 @@
<template> <template>
<div class="menus" :style="{width: width + 'px'}"> <div class="menus" :style="{width: width + 'px'}">
<div class="title">{{ `CTC3.0(车务终端A机)--王岗:${dateString}第一班 18:00 管理员代--` }}</div> <div class="title">{{ `CTC3.0(Train Service Terminal)${dateString}` }}</div>
<menu-bar ref="menuBar" :selected="selected" /> <menu-bar ref="menuBar" :selected="selected" />
<div style="position: absolute; top: 64px;z-index: 10;background: #F0F0F0;padding: 2px;height: 65px;width: 100%;"> <div style="position: absolute; top: 64px;z-index: 10;background: #F0F0F0;padding: 2px;height: 65px;width: 100%;">
<div style="display: flex;"> <div style="display: flex;">
@ -24,13 +24,13 @@
<img :src="ctcBarIcon18" class="img-box" @click="handleRunplan"> <img :src="ctcBarIcon18" class="img-box" @click="handleRunplan">
</div> </div>
<div style="display: flex;padding: 2px;border-top: 2px solid #D1D1D1;margin-top: 3px"> <div style="display: flex;padding: 2px;border-top: 2px solid #D1D1D1;margin-top: 3px">
<div class="img-box" :class="{flicker: hasCommandMsg, redFlick: hasCommandMsg}" style="width: 100px;height: 25px;line-height: 21px;text-align: center;" @click="showCmdManage">Scheduling order</div> <div class="img-box" :class="{flicker: hasCommandMsg, redFlick: hasCommandMsg}" style="width: 125px;height: 25px;line-height: 21px;text-align: center;" @click="showCmdManage">Scheduling order</div>
<div style="width: 200px;height: 25px;border: 2px #D1D1D1 inset;line-height: 21px;text-align: center;margin-left: 5px;" /> <div style="width: 200px;height: 25px;border: 2px #D1D1D1 inset;line-height: 21px;text-align: center;margin-left: 5px;" />
<div id="stageRunplanOut" class="img-box" @click="stageRunplan">Phase plan</div> <div id="stageRunplanOut" class="img-box" @click="stageRunplan">Phase plan</div>
<div class="img-box" style="width: 100px;height: 25px;line-height: 21px;text-align: center;margin-left: 5px;">Stage chronicle</div> <div class="img-box" style="width: 125px;height: 25px;line-height: 21px;text-align: center;margin-left: 5px;">Stage chronicle</div>
<div style="width: 200px;height: 25px;border: 2px #D1D1D1 inset;line-height: 21px;text-align: center;margin-left: 5px;">{{ dateString1 + ' ' + time }}</div> <div style="width: 200px;height: 25px;border: 2px #D1D1D1 inset;line-height: 21px;text-align: center;margin-left: 5px;">{{ dateString1 + ' ' + time }}</div>
<div style="width: 200px;height: 25px;border: 2px #D1D1D1 inset;line-height: 21px;text-align: center;margin-left: 5px;">Synchronous station machine communication interrupted</div> <div style="width: 420px;height: 25px;border: 2px #D1D1D1 inset;line-height: 21px;text-align: center;margin-left: 5px;">Synchronous station machine communication interrupted</div>
<div style="width: 200px;height: 25px;border: 2px #D1D1D1 inset;line-height: 21px;text-align: center;margin-left: 5px;">Communication with the centre is normal</div> <div style="width: 305px;height: 25px;border: 2px #D1D1D1 inset;line-height: 21px;text-align: center;margin-left: 5px;">Communication with the centre is normal</div>
</div> </div>
</div> </div>
<menu-button-ctc ref="menuButtonCtc" :selected="selected" /> <menu-button-ctc ref="menuButtonCtc" :selected="selected" />

View File

@ -15,12 +15,12 @@ export default {
return { return {
menuNormal: [ menuNormal: [
{ {
title: '登录(L)', title: 'Login(L)',
operate: '', operate: '',
children: [] children: []
}, },
{ {
title: '应用程序(T)', title: 'Application program(T)',
operate: '', operate: '',
children: [] children: []
} }

View File

@ -1,5 +1,5 @@
<template> <template>
<div id="menuButtons_box" class="menu menuButton" style="height:40px;" :style="{left: point.x+'px', bottom: point.y+'px' }"> <div id="menuButtons_box" class="menu menuButton" style="height:48px;" :style="{left: point.x+'px', bottom: point.y+'px' }">
<!-- backgroundColor: xGuideMasterLock? guideColorDown: guideColorUp --> <!-- backgroundColor: xGuideMasterLock? guideColorDown: guideColorUp -->
<button :id="Station.stationMasterLock.rightButton.domId" class="button_box" :style="{width: width+'px', backgroundColor:buttonUpColor}" @click="guideLockRightButtonDown()"> <button :id="Station.stationMasterLock.rightButton.domId" class="button_box" :style="{width: width+'px', backgroundColor:buttonUpColor}" @click="guideLockRightButtonDown()">
<span style="color: #800000"> <span style="color: #800000">
@ -968,8 +968,8 @@ export default {
.button_box{ .button_box{
display: block; display: block;
float: left; float: left;
font-size: 13px; font-size: 11px;
height: 35px; height: 45px;
cursor: pointer; cursor: pointer;
border-bottom-width: 1px; border-bottom-width: 1px;
border-top-width: 1px; border-top-width: 1px;

View File

@ -1,108 +1,108 @@
<template> <template>
<div id="menuButtons_box" class="menu menuButton" style="height: 35px;" :style="{left: point.x+'px', bottom: point.y+'px' }"> <div id="menuButtons_box" class="menu menuButton" style="height: 35px;" :style="{left: point.x+'px', bottom: point.y+'px' }">
<button :id="Signal.arrangementRoute.button.domId" class="button_box" @click="buttonDown(Signal.arrangementRoute.button.operation, ['Signal','SignalButton'])"> <button :id="Signal.arrangementRoute.button.domId" class="button_box" style="width: 100px;" @click="buttonDown(Signal.arrangementRoute.button.operation, ['Signal','SignalButton'])">
<span :style="{ color: operation === Signal.arrangementRoute.button.operation ? '#ccc':'black'}"> <span :style="{ color: operation === Signal.arrangementRoute.button.operation ? '#ccc':'black'}">
<center><b>Approach</b></center> <center><b>Approach</b></center>
<center><b>establishment</b></center> <center><b>establishment</b></center>
</span> </span>
</button> </button>
<button :id="MixinCommand.totalCancel.button.domId" class="button_box" @click="buttonDown(MixinCommand.totalCancel.button.operation, ['Signal','SignalButton'])"> <button :id="MixinCommand.totalCancel.button.domId" class="button_box" style="width: 85px;" @click="buttonDown(MixinCommand.totalCancel.button.operation, ['Signal','SignalButton'])">
<span :style="{color: operation === MixinCommand.totalCancel.button.operation ? '#ccc': 'black'}"> <span :style="{color: operation === MixinCommand.totalCancel.button.operation ? '#ccc': 'black'}">
<center><b>Total </b></center> <center><b>Total </b></center>
<center><b>cancellation</b></center> <center><b>cancellation</b></center>
</span> </span>
</button> </button>
<button :id="Signal.reopenSignal.button.domId" class="button_box" @click="buttonDown(Signal.reopenSignal.button.operation, ['Signal','SignalButton'])"> <button :id="Signal.reopenSignal.button.domId" class="button_box" style="width: 85px;" @click="buttonDown(Signal.reopenSignal.button.operation, ['Signal','SignalButton'])">
<span :style="{color: operation === Signal.reopenSignal.button.operation ? '#ccc': 'black'}"> <span :style="{color: operation === Signal.reopenSignal.button.operation ? '#ccc': 'black'}">
<center><b>Signal</b></center> <center><b>Signal</b></center>
<center><b>re-opening</b></center> <center><b>re-opening</b></center>
</span> </span>
</button> </button>
<button :id="Signal.guide.button.domId" class="button_box" @click="buttonDown(Signal.guide.button.operation, ['SignalButton'])"> <button :id="Signal.guide.button.domId" class="button_box" style="width: 60px;" @click="buttonDown(Signal.guide.button.operation, ['SignalButton'])">
<span :style="{color: operation === Signal.guide.button.operation? '#ccc':'#800000'}"> <span :style="{color: operation === Signal.guide.button.operation? '#ccc':'#800000'}">
<center><b>Guide</b></center> <center><b>Guide</b></center>
<center><b>buttons</b></center> <center><b>buttons</b></center>
</span> </span>
</button> </button>
<button :id="Station.guideLock.button.domId" :disabled="true" class="button_box" @click="buttonDown(Station.guideLock.button.operation, ['Button'])"> <button :id="Station.guideLock.button.domId" :disabled="true" class="button_box" style="width: 85px;" @click="buttonDown(Station.guideLock.button.operation, ['Button'])">
<span :style="{color: operation === Station.guideLock.button.operation?'#ccc':'#800000'}"> <span :style="{color: operation === Station.guideLock.button.operation?'#ccc':'#800000'}">
<center><b>Guided</b></center> <center><b>Guided</b></center>
<center><b>Master</b><b>Lock</b></center> <center><b>Master</b><b>Lock</b></center>
</span> </span>
</button> </button>
<button :id="Signal.humanTrainRoute.button.domId" class="button_box" @click="buttonDown(Signal.humanTrainRoute.button.operation, ['Signal','SignalButton'])"> <button :id="Signal.humanTrainRoute.button.domId" class="button_box" style="width: 85px;" @click="buttonDown(Signal.humanTrainRoute.button.operation, ['Signal','SignalButton'])">
<span :style="{color: operation === Signal.humanTrainRoute.button.operation ? '#ccc':'#800000'}"> <span :style="{color: operation === Signal.humanTrainRoute.button.operation ? '#ccc':'#800000'}">
<center><b>Total</b></center> <center><b>Total</b></center>
<center><b>man</b><b>unlock</b></center> <center><b>man</b><b>unlock</b></center>
</span> </span>
</button> </button>
<button :id="Switch.locate.button.domId" class="button_box" @click="buttonDown(Switch.locate.button.operation, ['Switch'])"> <button :id="Switch.locate.button.domId" class="button_box" style="width: 85px;" @click="buttonDown(Switch.locate.button.operation, ['Switch'])">
<span :style="{color: operation === Switch.locate.button.operation? '#ccc':'black'}"> <span :style="{color: operation === Switch.locate.button.operation? '#ccc':'black'}">
<center><b>Turnout</b></center> <center><b>Turnout</b></center>
<center><b>total</b><b>setting</b></center> <center><b>total</b><b>setting</b></center>
</span> </span>
</button> </button>
<button :id="Switch.reverse.button.domId" class="button_box" @click="buttonDown(Switch.reverse.button.operation, ['Switch'])"> <button :id="Switch.reverse.button.domId" class="button_box" style="width: 70px;" @click="buttonDown(Switch.reverse.button.operation, ['Switch'])">
<span :style="{color: operation === Switch.reverse.button.operation? '#ccc':'black'}"> <span :style="{color: operation === Switch.reverse.button.operation? '#ccc':'black'}">
<center><b>Turnout</b></center> <center><b>Turnout</b></center>
<center><b>reversal</b></center> <center><b>reversal</b></center>
</span> </span>
</button> </button>
<button :id="Switch.lock.button.domId" class="button_box" @click="buttonDown(Switch.lock.button.operation, ['Switch'])"> <button :id="Switch.lock.button.domId" class="button_box" style="width: 125px;" @click="buttonDown(Switch.lock.button.operation, ['Switch'])">
<span :style="{color: operation === Switch.lock.button.operation ? '#ccc':'black'}"> <span :style="{color: operation === Switch.lock.button.operation ? '#ccc':'black'}">
<center><b>Turnout</b></center> <center><b>Turnout</b></center>
<center><b>individually</b><b>locked</b></center> <center><b>individually</b><b>locked</b></center>
</span> </span>
</button> </button>
<button :id="Switch.unlock.button.domId" class="button_box" @click="buttonDown(Switch.unlock.button.operation, ['Switch'])"> <button :id="Switch.unlock.button.domId" class="button_box" style="width: 140px;" @click="buttonDown(Switch.unlock.button.operation, ['Switch'])">
<span :style="{color: operation === Switch.unlock.button.operation ? '#ccc':'black'}"> <span :style="{color: operation === Switch.unlock.button.operation ? '#ccc':'black'}">
<center><b>Turnout</b></center> <center><b>Turnout</b></center>
<center><b>individually</b><b>unlocked</b></center> <center><b>individually</b><b>unlocked</b></center>
</span> </span>
</button> </button>
<button :id="MixinCommand.block.button.domId" class="button_box" @click="buttonDown(MixinCommand.block.button.operation, ['Switch', 'Signal'])"> <button :id="MixinCommand.block.button.domId" class="button_box" style="width: 70px;" @click="buttonDown(MixinCommand.block.button.operation, ['Switch', 'Signal'])">
<span :style="{color: operation === MixinCommand.block.button.operation ? '#ccc':'black'}"> <span :style="{color: operation === MixinCommand.block.button.operation ? '#ccc':'black'}">
<center><b>Blocking</b></center> <center><b>Blocking</b></center>
<center><b>buttons</b></center> <center><b>buttons</b></center>
</span> </span>
</button> </button>
<button :id="MixinCommand.functionButton.button.domId" class="button_box" @click="buttonDown(MixinCommand.functionButton.button.operation, ['StationStand', 'Station','SignalButton'])"> <button :id="MixinCommand.functionButton.button.domId" class="button_box" style="width: 70px;" @click="buttonDown(MixinCommand.functionButton.button.operation, ['StationStand', 'Station','SignalButton'])">
<span :style="{color: operation === MixinCommand.functionButton.button.operation ? '#ccc':'black'}"> <span :style="{color: operation === MixinCommand.functionButton.button.operation ? '#ccc':'black'}">
<center><b>Function</b></center> <center><b>Function</b></center>
<center><b>buttons</b></center> <center><b>buttons</b></center>
</span> </span>
</button> </button>
<button :id="111" class="button_box" @click="buttonDown()"> <button :id="111" class="button_box" style="width: 70px;" @click="buttonDown()">
<span style="color: black;"> <span style="color: black;">
<center><b>Ramp</b></center> <center><b>Ramp</b></center>
<center><b>unlocking</b></center> <center><b>unlocking</b></center>
</span> </span>
</button> </button>
<button :id="222" :disabled="true" class="button_box" @click="buttonDown()"> <button :id="222" :disabled="true" class="button_box" style="width: 50px;" @click="buttonDown()">
<span style="color: black;"> <span style="color: black;">
<center><b>Bad</b></center> <center><b>Bad</b></center>
<center><b>split</b></center> <center><b>split</b></center>
</span> </span>
</button> </button>
<button :id="Command.cancel.clearMbm.domId" class="button_box" @click="commandClear"> <button :id="Command.cancel.clearMbm.domId" class="button_box" style="width: 75px;" @click="commandClear">
<span style="color: black;"> <span style="color: black;">
<center><b>Command</b></center> <center><b>Command</b></center>
<center><b>clear</b></center> <center><b>clear</b></center>
</span> </span>
</button> </button>
<button :id="333" class="button_box" @click="commandOrders"> <button :id="333" class="button_box" style="width: 75px;" @click="commandOrders">
<span style="color: black;"> <span style="color: black;">
<center><b>Command</b></center> <center><b>Command</b></center>
<center><b>given</b></center> <center><b>given</b></center>
</span> </span>
</button> </button>
<button :id="444" class="button_box" @click="buttonDown()"> <button :id="444" class="button_box" style="width: 70px;" @click="buttonDown()">
<span style="color: black;"> <span style="color: black;">
<center><b>Status</b></center> <center><b>Status</b></center>
<center><b>selection</b></center> <center><b>selection</b></center>
</span> </span>
</button> </button>
<button :id="555" class="button_box" @click="buttonDown()"> <button :id="555" class="button_box" style="width: 55px;" @click="buttonDown()">
<span style="color: black;"> <span style="color: black;">
<center><b>Mode</b></center> <center><b>Mode</b></center>
<center><b>change</b></center> <center><b>change</b></center>
@ -918,9 +918,9 @@ export default {
.button_box{ .button_box{
display: block; display: block;
float: left; float: left;
font-size: 13px; font-size: 11px;
height: 35px; height: 35px;
width: 45px; width: 90px;
background: #F0F0F0; background: #F0F0F0;
} }
.menu { .menu {

View File

@ -78,7 +78,7 @@
ref="runplanContentTable" ref="runplanContentTable"
:data="tableData" :data="tableData"
border border
height="695" height="540"
highlight-current-row highlight-current-row
:row-class-name="judgeColor" :row-class-name="judgeColor"
style="width: 100%;border:1px #ccc solid" style="width: 100%;border:1px #ccc solid"
@ -267,7 +267,7 @@
<el-table-column width="70"> <el-table-column width="70">
<template slot="header"> <template slot="header">
<div class="runplanTableTname runplanThreeLevel"> <div class="runplanTableTname runplanThreeLevel">
<div style="width:16px;float:left;line-height: 13px;margin-left: 13px;margin-top: 3px;">Tracking and shunting</div> <div style="width:50px;float:left;line-height: 13px;margin-left: 13px;margin-top: 3px;">Tracking and shunting</div>
<!-- <div style="width: 16px;display:inline-block;line-height:20px;"><br><br><br></div>--> <!-- <div style="width: 16px;display:inline-block;line-height:20px;"><br><br><br></div>-->
</div> </div>
<div class="runplanTableNo">17</div> <div class="runplanTableNo">17</div>
@ -276,7 +276,7 @@
<el-table-column width="70"> <el-table-column width="70">
<template slot="header"> <template slot="header">
<div class="runplanTableTname runplanThreeLevel"> <div class="runplanTableTname runplanThreeLevel">
<div style="width:16px;float:left;line-height: 13px;margin-left: 13px;margin-top: 3px;">Battle tracking completed</div> <div style="width:50px;float:left;line-height: 13px;margin-left: 13px;margin-top: 3px;">Battle tracking completed</div>
<!-- <div style="width: 16px;display:inline-block;line-height:20px;">调车完毕</div>--> <!-- <div style="width: 16px;display:inline-block;line-height:20px;">调车完毕</div>-->
</div> </div>
<div class="runplanTableNo">18</div> <div class="runplanTableNo">18</div>
@ -337,7 +337,7 @@
<div v-if="scope.row.departRunPlan" class="noChange" :title="mapStationDirectionData[scope.row.departRunPlan.accessName].name">{{ mapStationDirectionData[scope.row.departRunPlan.accessName].name }}</div> <div v-if="scope.row.departRunPlan" class="noChange" :title="mapStationDirectionData[scope.row.departRunPlan.accessName].name">{{ mapStationDirectionData[scope.row.departRunPlan.accessName].name }}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="时 分"> <el-table-column label="Time">
<el-table-column width="70" prop="departRunPlan.adjacentMessage"> <el-table-column width="70" prop="departRunPlan.adjacentMessage">
<template slot="header"> <template slot="header">
<div class="runplanTableTname"> <div class="runplanTableTname">
@ -1296,13 +1296,13 @@ export default {
align-items: flex-start; align-items: flex-start;
} }
.runplanContent{ .runplanContent{
height: 695px; height: 540px;
width: 100%; width: 100%;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
} }
.runplanContentL{ .runplanContentL{
width:62px; width:85px;
height:100%; height:100%;
background: #f0f0f0; background: #f0f0f0;
border-bottom: 1px #afafaf solid; border-bottom: 1px #afafaf solid;

View File

@ -1521,6 +1521,7 @@ export const asyncRouter = [
{ // 新路由-教学管理菜单 { // 新路由-教学管理菜单
path: '/teaching', path: '/teaching',
component: Layout, component: Layout,
hidden: true,
companyAdmin: true, companyAdmin: true,
meta: { meta: {
i18n: 'newRouter.teachingManagement', i18n: 'newRouter.teachingManagement',
@ -1688,6 +1689,7 @@ export const asyncRouter = [
}, },
{ // 新路由-线路设计 { // 新路由-线路设计
path: '/lineDesign', path: '/lineDesign',
hidden: true,
component: Layout, component: Layout,
meta: { meta: {
i18n: 'newRouter.lineDesign', i18n: 'newRouter.lineDesign',
@ -1723,42 +1725,44 @@ export const asyncRouter = [
} }
] ]
}, },
{ // 新路由-案例 // { // 新路由-案例
path: '/case', // path: '/case',
component: Layout, // component: Layout,
meta: { // hidden: true,
i18n: 'newRouter.case', // meta: {
roles: [admin, user] // i18n: 'newRouter.case',
}, // roles: [admin, user]
children: [ // },
{ // children: [
path: 'XRVTI', // {
target: 'https://joylink.club/oss/portal/cases/西安铁路职业技术学院.pdf', // path: 'XRVTI',
// component: Case, // target: 'https://joylink.club/oss/portal/cases/西安铁路职业技术学院.pdf',
meta: { // // component: Case,
i18n: 'newRouter.XRVTI' // meta: {
} // i18n: 'newRouter.XRVTI'
}, // }
{ // },
path: 'GEMVC', // {
target: 'https://joylink.club/oss/portal/cases/贵州装备制造职业学院机电技术专业实训室建设.pdf', // path: 'GEMVC',
// component: Case, // target: 'https://joylink.club/oss/portal/cases/贵州装备制造职业学院机电技术专业实训室建设.pdf',
meta: { // // component: Case,
i18n: 'newRouter.GEMVC' // meta: {
} // i18n: 'newRouter.GEMVC'
}, // }
{ // },
path: 'JVCOEAI', // {
target: 'https://joylink.club/oss/portal/cases/江苏电子信息职业学院-城市轨道交通行车组织综合实训室.pdf', // path: 'JVCOEAI',
// component: Case, // target: 'https://joylink.club/oss/portal/cases/江苏电子信息职业学院-城市轨道交通行车组织综合实训室.pdf',
meta: { // // component: Case,
i18n: 'newRouter.JVCOEAI' // meta: {
} // i18n: 'newRouter.JVCOEAI'
} // }
] // }
}, // ]
// },
{ // 新路由-系统管理 { // 新路由-系统管理
path: '/systemManagement', path: '/systemManagement',
hidden: true,
component: Layout, component: Layout,
meta: { meta: {
i18n: 'newRouter.SystemManagement', i18n: 'newRouter.SystemManagement',

View File

@ -12,7 +12,7 @@
> >
<div class="DpRunplanPane"> <div class="DpRunplanPane">
<el-form ref="form" :model="addModel" label-width="80px" :rules="rules"> <el-form ref="form" :model="addModel" label-width="80px" :rules="rules">
<el-form-item label="车站:" prop="stationCode"> <el-form-item label="Station:" prop="stationCode">
<el-select v-model="addModel.stationCode" placeholder="" style="width:145px" disabled> <el-select v-model="addModel.stationCode" placeholder="" style="width:145px" disabled>
<el-option <el-option
v-for="item in stationList" v-for="item in stationList"
@ -22,7 +22,7 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="股道:" prop="masterCode"> <el-form-item label="Track:" prop="masterCode">
<el-select v-model="addModel.masterCode" placeholder="" style="width:145px"> <el-select v-model="addModel.masterCode" placeholder="" style="width:145px">
<el-option <el-option
v-for="item in filterSectionList" v-for="item in filterSectionList"
@ -32,19 +32,19 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="到达车次:" prop="arriveTipNum"> <el-form-item label="Arrive train number:" prop="arriveTipNum">
<el-input v-model="addModel.arriveTipNum" style="width:145px" /> <el-input v-model="addModel.arriveTipNum" style="width:145px" />
</el-form-item> </el-form-item>
<el-form-item label="到达时间:" prop="arriveTime"> <el-form-item label="Arrive time:" prop="arriveTime">
<el-time-picker v-model="addModel.arriveTime" value-format="HH:mm" format="HH:mm" style="width:145px" /> <el-time-picker v-model="addModel.arriveTime" value-format="HH:mm" format="HH:mm" style="width:145px" />
</el-form-item> </el-form-item>
<el-form-item label="出发车次:" prop="leaveTipNum"> <el-form-item label="Depart train number:" prop="leaveTipNum">
<el-input v-model="addModel.leaveTipNum" style="width:145px" /> <el-input v-model="addModel.leaveTipNum" style="width:145px" />
</el-form-item> </el-form-item>
<el-form-item label="出发时间:" prop="leaveTime"> <el-form-item label="Depart time:" prop="leaveTime">
<el-time-picker v-model="addModel.leaveTime" value-format="HH:mm" format="HH:mm" style="width:145px" /> <el-time-picker v-model="addModel.leaveTime" value-format="HH:mm" format="HH:mm" style="width:145px" />
</el-form-item> </el-form-item>
<el-form-item label="入口:" prop="enterDirCode"> <el-form-item label="Entrance:" prop="enterDirCode">
<el-select v-model="addModel.enterDirCode" placeholder="" style="width:145px" @change="changeEnterDirCode"> <el-select v-model="addModel.enterDirCode" placeholder="" style="width:145px" @change="changeEnterDirCode">
<el-option <el-option
v-for="item in enterDirList" v-for="item in enterDirList"
@ -54,7 +54,7 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="后方车站:" prop="backStationCode"> <el-form-item label="Rear stations:" prop="backStationCode">
<el-select v-model="addModel.backStationCode" placeholder="" style="width:145px" disabled> <el-select v-model="addModel.backStationCode" placeholder="" style="width:145px" disabled>
<el-option <el-option
v-for="item in stationList" v-for="item in stationList"
@ -64,7 +64,7 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="出口:" prop="outDirCode"> <el-form-item label="Exit:" prop="outDirCode">
<el-select v-model="addModel.outDirCode" placeholder="" style="width:145px" @change="changeOutDirCode"> <el-select v-model="addModel.outDirCode" placeholder="" style="width:145px" @change="changeOutDirCode">
<el-option <el-option
v-for="item in outDirList" v-for="item in outDirList"
@ -74,7 +74,7 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="前方车站:" prop="fontStationCode"> <el-form-item label="Front stations:" prop="fontStationCode">
<el-select v-model="addModel.fontStationCode" placeholder="" style="width:145px" disabled> <el-select v-model="addModel.fontStationCode" placeholder="" style="width:145px" disabled>
<el-option <el-option
v-for="item in stationList" v-for="item in stationList"
@ -85,32 +85,32 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="" prop="appendData" style="width:100%"> <el-form-item label="" prop="appendData" style="width:100%">
<el-checkbox v-model="addModel.appendData.JISHU_STOP" class="eachAppendData" style="margin-right:34px">技术停点</el-checkbox> <el-checkbox v-model="addModel.appendData.JISHU_STOP" class="eachAppendData" style="margin-right:34px">Technical stops</el-checkbox>
<el-checkbox v-model="addModel.appendData.JIAO_LING" class="eachAppendData" style="margin-right:35px">交令</el-checkbox> <el-checkbox v-model="addModel.appendData.JIAO_LING" class="eachAppendData" style="margin-right:35px">Surrender order</el-checkbox>
<el-checkbox v-model="addModel.appendData.JICHE" class="eachAppendData" style="margin-right:3px">机车</el-checkbox> <el-checkbox v-model="addModel.appendData.JICHE" class="eachAppendData" style="margin-right:3px">Locomotive</el-checkbox>
<el-checkbox v-model="addModel.appendData.HUOJIAN" class="eachAppendData" style="margin-right:3px">货检</el-checkbox> <el-checkbox v-model="addModel.appendData.HUOJIAN" class="eachAppendData" style="margin-right:3px">Goods inspection</el-checkbox>
<el-checkbox v-model="addModel.appendData.CHENGJIANG" class="eachAppendData">乘降</el-checkbox> <el-checkbox v-model="addModel.appendData.CHENGJIANG" class="eachAppendData">Landing</el-checkbox>
<el-checkbox v-model="addModel.appendData.ZHAIGUA" class="eachAppendData" style="margin-right:3px">摘挂</el-checkbox> <el-checkbox v-model="addModel.appendData.ZHAIGUA" class="eachAppendData" style="margin-right:3px">Picking</el-checkbox>
<el-checkbox v-model="addModel.appendData.HUANCHENG" class="eachAppendData" style="margin-right:3px">换乘</el-checkbox> <el-checkbox v-model="addModel.appendData.HUANCHENG" class="eachAppendData" style="margin-right:3px">Change of train</el-checkbox>
<el-checkbox v-model="addModel.appendData.ZHUANGXIE" class="eachAppendData" style="margin-right: 35px;">装卸</el-checkbox> <el-checkbox v-model="addModel.appendData.ZHUANGXIE" class="eachAppendData" style="margin-right: 35px;">loading and unloading</el-checkbox>
<el-checkbox v-model="addModel.appendData.XIWU" class="eachAppendData" style="margin-right:3px">吸污</el-checkbox> <el-checkbox v-model="addModel.appendData.XIWU" class="eachAppendData" style="margin-right:3px">Suction</el-checkbox>
<el-checkbox v-model="addModel.appendData.DAOKOU" class="eachAppendData" style="margin-right:3px">道口</el-checkbox> <el-checkbox v-model="addModel.appendData.DAOKOU" class="eachAppendData" style="margin-right:3px">Crossing</el-checkbox>
<el-checkbox v-model="addModel.appendData.CHEHAO" class="eachAppendData">车号</el-checkbox> <el-checkbox v-model="addModel.appendData.CHEHAO" class="eachAppendData">Train number</el-checkbox>
<el-checkbox v-model="addModel.appendData.SHANGSHUI" class="eachAppendData" style="margin-right:3px">上水</el-checkbox> <el-checkbox v-model="addModel.appendData.SHANGSHUI" class="eachAppendData" style="margin-right:3px">Watering</el-checkbox>
<el-checkbox v-model="addModel.appendData.LIEJIAN" class="eachAppendData" style="margin-right:3px">列检</el-checkbox> <el-checkbox v-model="addModel.appendData.LIEJIAN" class="eachAppendData" style="margin-right:3px">Train inspection</el-checkbox>
<el-checkbox v-model="addModel.appendData.ZONGKONG" class="eachAppendData" style="margin-right: 35px;">综控</el-checkbox> <el-checkbox v-model="addModel.appendData.ZONGKONG" class="eachAppendData" style="margin-right: 35px;">Integrated control</el-checkbox>
<el-checkbox v-model="addModel.appendData.ZHANWU" class="eachAppendData" style="margin-right:3px">站务</el-checkbox> <el-checkbox v-model="addModel.appendData.ZHANWU" class="eachAppendData" style="margin-right:3px">Station service</el-checkbox>
<el-checkbox v-model="addModel.appendData.JIAOPIAO" class="eachAppendData" style="margin-right:3px">交票</el-checkbox> <el-checkbox v-model="addModel.appendData.JIAOPIAO" class="eachAppendData" style="margin-right:3px">Ticket delivery</el-checkbox>
<el-checkbox v-model="addModel.appendData.LIEWEI" class="eachAppendData">列尾</el-checkbox> <el-checkbox v-model="addModel.appendData.LIEWEI" class="eachAppendData">End of train</el-checkbox>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<el-row justify="center" class="button-group"> <el-row justify="center" class="button-group">
<el-col :span="6" :offset="7"> <el-col :span="6" :offset="7">
<el-button :id="domIdCancel" @click="cancel">取消</el-button> <el-button :id="domIdCancel" @click="cancel">Cancel</el-button>
</el-col> </el-col>
<el-col :span="8" :offset="0"> <el-col :span="8" :offset="0">
<el-button :id="domIdConfirm " type="primary" :loading="loading" @click="commit">确定 </el-button> <el-button :id="domIdConfirm " type="primary" :loading="loading" @click="commit">Confirm</el-button>
</el-col> </el-col>
</el-row> </el-row>
</el-dialog> </el-dialog>
@ -127,12 +127,12 @@ export default {
const judge = /^[a-zA-Z0-9]*[\d]$/.test(value); const judge = /^[a-zA-Z0-9]*[\d]$/.test(value);
if (judge) { if (judge) {
if (value.toString().length > 6 || value.toString().length < 2) { if (value.toString().length > 6 || value.toString().length < 2) {
callback('车次长度2-6位'); callback('Train number lengths of 2-6 seats');
} else { } else {
callback(); callback();
} }
} else { } else {
callback('字母+数字,最后一位数字'); callback('Letters + numbers. The last digit is a number');
} }
} else { } else {
// callback(''); // callback('');
@ -257,10 +257,10 @@ export default {
}); });
if (row) { if (row) {
this.addModel = Object.assign({}, row); this.addModel = Object.assign({}, row);
this.title = '修改列车固定径路'; this.title = 'Modify fixed train routes';
this.isAdd = false; this.isAdd = false;
} else { } else {
this.title = '增加列车固定径路'; this.title = 'Add fixed train routes';
this.isAdd = true; this.isAdd = true;
this.addModel.stationCode = stationCode; this.addModel.stationCode = stationCode;
} }

View File

@ -12,10 +12,10 @@
> >
<div class="DirectionInformation"> <div class="DirectionInformation">
<el-form ref="form" :model="model" label-width="125px"> <el-form ref="form" :model="model" label-width="125px">
<el-form-item label="出入口名称:" prop="ioName"> <el-form-item label="Import and export name:" prop="ioName">
<el-input v-model="model.ioName" style="width:185px" disabled /> <el-input v-model="model.ioName" style="width:185px" disabled />
</el-form-item> </el-form-item>
<el-form-item label="出入口方向:" prop="ioDirection"> <el-form-item label="Entrance and exit direction:" prop="ioDirection">
<el-select v-model="model.ioDirection" placeholder="" style="width:145px" disabled> <el-select v-model="model.ioDirection" placeholder="" style="width:145px" disabled>
<el-option <el-option
v-for="item in ioDirectionList" v-for="item in ioDirectionList"
@ -25,7 +25,7 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="允许超限列车:" prop="allowOverrun"> <el-form-item label="Overtrain is allowed:" prop="allowOverrun">
<el-select v-model="model.allowOverrun" placeholder="" style="width:145px"> <el-select v-model="model.allowOverrun" placeholder="" style="width:145px">
<el-option <el-option
v-for="item in selectList" v-for="item in selectList"
@ -35,7 +35,7 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="允许旅客列车:" prop="travelTrain"> <el-form-item label="Permitted passenger train:" prop="travelTrain">
<el-select v-model="model.travelTrain" placeholder="" style="width:145px"> <el-select v-model="model.travelTrain" placeholder="" style="width:145px">
<el-option <el-option
v-for="item in selectList" v-for="item in selectList"
@ -45,7 +45,7 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="允许货物列车:" prop="goodsTrain"> <el-form-item label="Permitted freight train:" prop="goodsTrain">
<el-select v-model="model.goodsTrain" placeholder="" style="width:145px"> <el-select v-model="model.goodsTrain" placeholder="" style="width:145px">
<el-option <el-option
v-for="item in selectList" v-for="item in selectList"
@ -59,10 +59,10 @@
</div> </div>
<div style="text-align:right;display:inline-block;width:100%;"> <div style="text-align:right;display:inline-block;width:100%;">
<div class="directionBtn"> <div class="directionBtn">
<el-button :id="domIdCancel" @click="cancel">取消</el-button> <el-button :id="domIdCancel" @click="cancel">Cancel</el-button>
</div> </div>
<div class="directionBtn"> <div class="directionBtn">
<el-button :id="domIdConfirm " type="primary" :loading="loading" @click="commit">确定 </el-button> <el-button :id="domIdConfirm " type="primary" :loading="loading" @click="commit">Confirm</el-button>
</div> </div>
</div> </div>
</el-dialog> </el-dialog>
@ -79,15 +79,15 @@ export default {
loading: false, loading: false,
stationCode:'', // code stationCode:'', // code
ioDirectionList:[ ioDirectionList:[
{label:'下行进站', value:'DOWN_IN_STATION'}, {label:'Descending station', value:'DOWN_IN_STATION'},
{label:'上行进站', value:'UP_IN_STATION'}, {label:'Ascending station', value:'UP_IN_STATION'},
{label:'下行出站', value:'DOWN_OUT_STATION'}, {label:'Descending outbound', value:'DOWN_OUT_STATION'},
{label:'上行出站', value:'UP_OUT_STATION'}, {label:'Ascending outbound', value:'UP_OUT_STATION'},
{label:'双向', value:'BOTH_WAY_STATION'} {label:'Bidirectional', value:'BOTH_WAY_STATION'}
], ],
selectList:[ selectList:[
{label:'', value:true}, {label:'True', value:true},
{label:'', value:false} {label:'False', value:false}
], ],
model:{ model:{
code:'', // code code:'', // code
@ -110,7 +110,7 @@ export default {
return this.dialogShow ? OperationEvent.CTCCommand.modifyStationDirection.menu.domId : ''; return this.dialogShow ? OperationEvent.CTCCommand.modifyStationDirection.menu.domId : '';
}, },
title() { title() {
return '出入口信息'; return 'Entry and exit information';
} }
}, },
methods:{ methods:{
@ -133,7 +133,7 @@ export default {
delete param.ioDirection; delete param.ioDirection;
commitOperate(menuOperate.CTC.modifyStationDirection, param, 3).then(({valid})=>{ commitOperate(menuOperate.CTC.modifyStationDirection, param, 3).then(({valid})=>{
if (valid) { if (valid) {
this.$message.success('更新成功!'); this.$message.success('Update successfully!');
this.$emit('refresh'); this.$emit('refresh');
this.doClose(); this.doClose();
} }

View File

@ -39,7 +39,7 @@ import StationTrack from './stationTrack';
import TrainFixedPath from './trainFixedPath'; import TrainFixedPath from './trainFixedPath';
import StationDirection from './stationDirection'; import StationDirection from './stationDirection';
import { loadMapDataById } from '@/utils/loaddata'; import { loadMapDataById } from '@/utils/loaddata';
import { creatSubscribe, clearSubscribe, getTopic, displayTopic } from '@/utils/stomp'; import { creatSubscribe, clearSubscribe, getTopic } from '@/utils/stomp';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo'; import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
export default { export default {
name:'BigTrainRunplanManage', name:'BigTrainRunplanManage',
@ -74,7 +74,6 @@ export default {
this.clearSubscribe(); this.clearSubscribe();
}, },
async mounted() { async mounted() {
this.$store.dispatch('training/setPrdType', this.$route.query.prdType);
this.groupModel = this.$route.query.group; this.groupModel = this.$route.query.group;
this.stationCode = this.$route.query.stationCode; this.stationCode = this.$route.query.stationCode;
this.initLoadData(); this.initLoadData();
@ -215,7 +214,7 @@ border-left: 1px #94b6f0 solid;border-right: 1px #c9d3e0 solid;}
.datie-02__systerm .el-dialog .el-dialog__body { .datie-02__systerm .el-dialog .el-dialog__body {
padding: 15px 5px; padding: 15px 5px;
margin: 0px 0px 1px 1px; margin: 0 0 1px 1px;
border: 1px solid rgba(120, 121, 123, 0.5); border: 1px solid rgba(120, 121, 123, 0.5);
box-shadow: 1px hsla(240, 0%, 100%, 0.5) inset; box-shadow: 1px hsla(240, 0%, 100%, 0.5) inset;
background: #eeeeee; background: #eeeeee;

View File

@ -8,14 +8,14 @@
<div class="stationDirectionRMenu"> <div class="stationDirectionRMenu">
<div class="stationDirectionRMenuL"> <div class="stationDirectionRMenuL">
<!-- :id="domIdConfirm" :loading="loading" @click="commit"--> <!-- :id="domIdConfirm" :loading="loading" @click="commit"-->
<el-button class="stationDirectionButton" size="small" @click="modifyDirection">修改</el-button> <el-button class="stationDirectionButton" size="small" @click="modifyDirection">Modify</el-button>
</div> </div>
<div class="stationDirectionRMenuR"> <div class="stationDirectionRMenuR">
<span class="stationDirectionRVer">版本号</span> <span class="stationDirectionRVer">Version number</span>
<el-button class="stationDirectionButton" size="small">备份</el-button> <el-button class="stationDirectionButton" size="small">Backup</el-button>
<el-button class="stationDirectionButton" size="small" @click="releaseStationDirection">更新至生效区</el-button> <el-button class="stationDirectionButton" size="small" @click="releaseStationDirection">Update to the effect zone</el-button>
<el-button class="stationDirectionButton" size="small">导入</el-button> <el-button class="stationDirectionButton" size="small">Import</el-button>
<el-button class="stationDirectionButton" size="small">比较</el-button> <el-button class="stationDirectionButton" size="small">Compare</el-button>
</div> </div>
</div> </div>
<div class="stationDirectionRTable" :style="{ height: (height-40)+'px' }"> <div class="stationDirectionRTable" :style="{ height: (height-40)+'px' }">
@ -32,12 +32,12 @@
> >
<el-table-column <el-table-column
prop="ioName" prop="ioName"
label="出入口名称" label="Import and export name"
width="300" width="300"
/> />
<el-table-column <el-table-column
prop="ioDirection" prop="ioDirection"
label="方向" label="Direction"
width="200" width="200"
> >
<template slot-scope="scope"> <template slot-scope="scope">
@ -46,7 +46,7 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="allowOverrun" prop="allowOverrun"
label="允许超限列车" label="Overtrain is allowed"
width="200" width="200"
> >
<template slot-scope="scope"> <template slot-scope="scope">
@ -55,7 +55,7 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="travelTrain" prop="travelTrain"
label="允许旅客列车" label="Permitted passenger train"
width="200" width="200"
> >
<template slot-scope="scope"> <template slot-scope="scope">
@ -64,7 +64,7 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="goodsTrain" prop="goodsTrain"
label="允许货车" label="Permitted truck"
width="200" width="200"
> >
<template slot-scope="scope"> <template slot-scope="scope">
@ -94,23 +94,23 @@ export default {
currentRow:null, currentRow:null,
tableData:[], tableData:[],
ioDirectionMap:{ ioDirectionMap:{
'DOWN_IN_STATION':'下行进站', 'DOWN_IN_STATION':'Descending station',
'UP_IN_STATION':'上行进站', 'UP_IN_STATION':'Ascending station',
'DOWN_OUT_STATION':'下行出站', 'DOWN_OUT_STATION':'Descending outbound',
'UP_OUT_STATION':'上行出站', 'UP_OUT_STATION':'Ascending outbound',
'BOTH_WAY_STATION':'双向' 'BOTH_WAY_STATION':'Bidirectional'
}, },
travelTrainMap:{ travelTrainMap:{
true:'', true:'True',
false:'' false:'False'
}, },
allowOverrunMap:{ allowOverrunMap:{
true:'', true:'True',
false:'' false:'False'
}, },
goodsTrainMap:{ goodsTrainMap:{
true:'', true:'True',
false:'' false:'False'
} }
}; };
}, },
@ -153,10 +153,10 @@ export default {
const that = this; const that = this;
commitOperate(menuOperate.CTC.releaseStationDirection, { stationCode:this.currentStationCode}, 3).then(({valid})=>{ commitOperate(menuOperate.CTC.releaseStationDirection, { stationCode:this.currentStationCode}, 3).then(({valid})=>{
if (valid) { if (valid) {
that.$message.success('发布成功!'); that.$message.success('Successful release!');
} }
}).catch(() => { }).catch(() => {
that.$message.error('发布失败'); that.$message.error('Publishing failure!');
}); });
} }
} }

View File

@ -26,7 +26,7 @@
border border
height="600px" height="600px"
highlight-current-row highlight-current-row
style="border:1px #ccc solid;width:1103px" style="border:1px #ccc solid;width:1303px"
@row-click="selectedSection" @row-click="selectedSection"
@row-dblclick="rowDbClick" @row-dblclick="rowDbClick"
> >
@ -35,7 +35,7 @@
<el-table-column <el-table-column
type="index" type="index"
label="Index" label="Index"
width="100" width="55"
/> />
<!-- code: "T97" <!-- code: "T97"
military: false military: false
@ -58,7 +58,7 @@ waterSupply: false -->
<el-table-column <el-table-column
prop="trackNature" prop="trackNature"
label="Station Units" label="Station Units"
width="100" width="110"
> >
<template slot-scope="scope"> <template slot-scope="scope">
{{ lineTypeMap[scope.row.trackNature] }} {{ lineTypeMap[scope.row.trackNature] }}
@ -77,7 +77,7 @@ waterSupply: false -->
<el-table-column <el-table-column
prop="trainType" prop="trainType"
label="Type of train" label="Type of train"
width="100" width="110"
> >
<template slot-scope="scope"> <template slot-scope="scope">
{{ typeMap[scope.row.trainType] }} {{ typeMap[scope.row.trainType] }}
@ -87,7 +87,7 @@ waterSupply: false -->
<el-table-column <el-table-column
prop="transfinite" prop="transfinite"
label="Type of overrun" label="Type of overrun"
width="100" width="130"
> >
<template slot-scope="scope"> <template slot-scope="scope">
{{ transfiniteTypeMap[scope.row.transfinite] }} {{ transfiniteTypeMap[scope.row.transfinite] }}
@ -96,7 +96,7 @@ waterSupply: false -->
<el-table-column <el-table-column
prop="standType" prop="standType"
label="Stand" label="Stand"
width="100" width="65"
> >
<template slot-scope="scope"> <template slot-scope="scope">
{{ standTypeMap[scope.row.standType] }} {{ standTypeMap[scope.row.standType] }}
@ -106,7 +106,7 @@ waterSupply: false -->
<el-table-column <el-table-column
prop="motorCar" prop="motorCar"
label="Permission to move trains" label="Permission to move trains"
width="100" width="200"
> >
<template slot-scope="scope"> <template slot-scope="scope">
{{ allowEmuMap[scope.row.motorCar] }} {{ allowEmuMap[scope.row.motorCar] }}
@ -116,7 +116,7 @@ waterSupply: false -->
<el-table-column <el-table-column
prop="waterSupply" prop="waterSupply"
label="Watering equipment" label="Watering equipment"
width="100" width="160"
> >
<template slot-scope="scope"> <template slot-scope="scope">
{{ addWaterEquMap[scope.row.waterSupply] }} {{ addWaterEquMap[scope.row.waterSupply] }}
@ -126,7 +126,7 @@ waterSupply: false -->
<el-table-column <el-table-column
prop="sewageAbsorption" prop="sewageAbsorption"
label="Sewerage equipment" label="Sewerage equipment"
width="100" width="170"
> >
<template slot-scope="scope"> <template slot-scope="scope">
{{ sewageEquMap[scope.row.sewageAbsorption] }} {{ sewageEquMap[scope.row.sewageAbsorption] }}
@ -135,7 +135,7 @@ waterSupply: false -->
<el-table-column <el-table-column
prop="military" prop="military"
label="Military" label="Military"
width="100" width="80"
> >
<template slot-scope="scope"> <template slot-scope="scope">
{{ militaryMap[scope.row.military] }} {{ militaryMap[scope.row.military] }}

View File

@ -1,8 +1,8 @@
<template> <template>
<div class="terminalStationList"> <div class="terminalStationList">
<div class="terminalStationListT"> <div class="terminalStationListT">
<span class="terminalStationListTName">区段:</span> <span class="terminalStationListTName">Section:</span>
<el-select v-model="section" disabled placeholder="请选择" size="mini" class="terminalStationListTSelect"> <el-select v-model="section" disabled placeholder="Please select" size="mini" class="terminalStationListTSelect">
<el-option <el-option
v-for="item in sectionList" v-for="item in sectionList"
:key="item.code" :key="item.code"
@ -42,7 +42,7 @@ export default {
return { return {
treeList:[{ treeList:[{
id:'allStation', id:'allStation',
label: '车站列表', label: 'Station list',
children: [] children: []
}], }],
defaultProps: { defaultProps: {
@ -50,10 +50,7 @@ export default {
label: 'label' label: 'label'
}, },
section:'T121', section:'T121',
sectionList:[{ sectionList:[]
code:'T121',
name:'兰五台'
}]
}; };
}, },
computed: { computed: {

View File

@ -13,115 +13,145 @@
<div class="TrackInformation"> <div class="TrackInformation">
<!-- 111 --> <!-- 111 -->
<!-- form --> <!-- form -->
<el-form ref="form" :model="model" label-width="85px" :rules="rules"> <el-form ref="form" :model="model" label-width="160px" :rules="rules">
<el-form-item label="股道:" prop="code"> <el-row>
<el-select v-model="model.code" placeholder="" style="width:125px;margin-right:230px" disabled> <el-col :span="12">
<el-option <el-form-item label="Track:" prop="code">
v-for="item in filterSectionList" <el-select v-model="model.code" placeholder="" style="width:125px;margin-right:230px" disabled>
:key="item.code" <el-option
:label="item.name" v-for="item in filterSectionList"
:value="item.code" :key="item.code"
/> :label="item.name"
</el-select> :value="item.code"
</el-form-item> />
<el-form-item label="线路性质:" prop="trackNature"> </el-select>
<el-select v-model="model.trackNature" placeholder="" style="width:125px"> </el-form-item>
<el-option </el-col>
v-for="item in lineTypeList" <el-col :span="12">
:key="item.value" <el-form-item label="Nature of line:" prop="trackNature">
:label="item.label" <el-select v-model="model.trackNature" placeholder="" style="width:125px">
:value="item.value" <el-option
/> v-for="item in lineTypeList"
</el-select> :key="item.value"
</el-form-item> :label="item.label"
<el-form-item label="接发车方向:" prop="direction"> :value="item.value"
<el-select v-model="model.direction" placeholder="" style="width:100px"> />
<el-option </el-select>
v-for="item in directionList" </el-form-item>
:key="item.value" </el-col>
:label="item.label" </el-row>
:value="item.value" <el-row>
/> <el-col :span="12">
</el-select> <el-form-item label="Direction:" prop="direction">
</el-form-item> <el-select v-model="model.direction" placeholder="" style="width:100px">
<el-form-item label="接发车类型:" prop="trainType"> <el-option
<el-select v-model="model.trainType" placeholder="" style="width:100px"> v-for="item in directionList"
<el-option :key="item.value"
v-for="item in typeList" :label="item.label"
:key="item.value" :value="item.value"
:label="item.label" />
:value="item.value" </el-select>
/> </el-form-item>
</el-select> </el-col>
</el-form-item> <el-col :span="12">
<el-form-item label="超限类型:" prop="transfinite"> <el-form-item label="Type of train:" prop="trainType">
<el-select v-model="model.transfinite" placeholder="" style="width:125px"> <el-select v-model="model.trainType" placeholder="" style="width:100px">
<el-option <el-option
v-for="item in transfiniteTypeList" v-for="item in typeList"
:key="item.value" :key="item.value"
:label="item.label" :label="item.label"
:value="item.value" :value="item.value"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="站台:" prop="standType"> </el-col>
<el-select v-model="model.standType" placeholder="" style="width:100px"> </el-row>
<el-option <el-row>
v-for="item in standTypeList" <el-col :span="12">
:key="item.value" <el-form-item label="Type of overrun:" prop="transfinite">
:label="item.label" <el-select v-model="model.transfinite" placeholder="" style="width:125px">
:value="item.value" <el-option
/> v-for="item in transfiniteTypeList"
</el-select> :key="item.value"
</el-form-item> :label="item.label"
<el-form-item label="允许动车组:" prop="motorCar"> :value="item.value"
<el-select v-model="model.motorCar" placeholder="" style="width:100px"> />
<el-option </el-select>
v-for="item in allowEmuList" </el-form-item>
:key="item.value" </el-col>
:label="item.label" <el-col :span="12">
:value="item.value" <el-form-item label="Stand:" prop="standType">
/> <el-select v-model="model.standType" placeholder="" style="width:100px">
</el-select> <el-option
</el-form-item> v-for="item in standTypeList"
<el-form-item label="上水设备:" prop="waterSupply"> :key="item.value"
<el-select v-model="model.waterSupply" placeholder="" style="width:125px"> :label="item.label"
<el-option :value="item.value"
v-for="item in addWaterEquList" />
:key="item.value" </el-select>
:label="item.label" </el-form-item>
:value="item.value" </el-col>
/> </el-row>
</el-select> <el-row>
</el-form-item> <el-col :span="12">
<el-form-item label="排污设备:" prop="sewageAbsorption"> <el-form-item label="Permission to move trains:" prop="motorCar">
<el-select v-model="model.sewageAbsorption" placeholder="" style="width:100px"> <el-select v-model="model.motorCar" placeholder="" style="width:100px">
<el-option <el-option
v-for="item in sewageEquList" v-for="item in allowEmuList"
:key="item.value" :key="item.value"
:label="item.label" :label="item.label"
:value="item.value" :value="item.value"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="军用:" prop="military"> </el-col>
<el-select v-model="model.military" placeholder="" style="width:100px"> <el-col :span="12">
<el-option <el-form-item label="Watering equipment:" prop="waterSupply">
v-for="item in militaryList" <el-select v-model="model.waterSupply" placeholder="" style="width:125px">
:key="item.value" <el-option
:label="item.label" v-for="item in addWaterEquList"
:value="item.value" :key="item.value"
/> :label="item.label"
</el-select> :value="item.value"
</el-form-item> />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="Sewerage equipment:" prop="sewageAbsorption">
<el-select v-model="model.sewageAbsorption" placeholder="" style="width:100px">
<el-option
v-for="item in sewageEquList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="Military:" prop="military">
<el-select v-model="model.military" placeholder="" style="width:100px">
<el-option
v-for="item in militaryList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form> </el-form>
</div> </div>
<div style="text-align:right;display:inline-block;width:100%;"> <div style="text-align:right;display:inline-block;width:100%;">
<div class="trackBtn"> <div class="trackBtn">
<el-button :id="domIdCancel" @click="cancel">取消</el-button> <el-button :id="domIdCancel" @click="cancel">Cancel</el-button>
</div> </div>
<div class="trackBtn"> <div class="trackBtn">
<el-button :id="domIdConfirm " type="primary" :loading="loading" @click="commit">确定 </el-button> <el-button :id="domIdConfirm " type="primary" :loading="loading" @click="commit">Confirm</el-button>
</div> </div>
</div> </div>
</el-dialog> </el-dialog>
@ -138,45 +168,45 @@ export default {
filterSectionList:[], filterSectionList:[],
// trackSectionCode:'', // trackSectionCode:'',
lineTypeList:[ lineTypeList:[
{label:'正线', value:'RIGHT_TRACK'}, {label:'Right track', value:'RIGHT_TRACK'},
{label:'到发线', value:'ARRIVE_DEPART_TRACK'} {label:'Arrive depart track', value:'ARRIVE_DEPART_TRACK'}
], ],
directionList:[ directionList:[
{label:'上行', value:'S'}, {label:'Upbound', value:'S'},
{label:'下行', value:'X'}, {label:'Downbound', value:'X'},
{label:'上下行', value:'D'} {label:'All', value:'D'}
], ],
typeList:[ typeList:[
{label:'客货车', value:'VAN'}, {label:'Passenger Wagon', value:'VAN'},
{label:'货车', value:'GOODS_VAN'}, {label:'Freight train', value:'GOODS_VAN'},
{label:'客车', value:'PASSENGER'} {label:'Passenger train', value:'PASSENGER'}
], ],
transfiniteTypeList:[ transfiniteTypeList:[
{label:'不能接发超限列车', value:'NO'}, {label:'No over-limit trains', value:'NO'},
{label:'一级超限', value:'TRANSFINITE_ONE_LEVEL'}, {label:'First order overrun', value:'TRANSFINITE_ONE_LEVEL'},
{label:'二级超限', value:'TRANSFINITE_TWO_LEVEL'}, {label:'Second-order overrun', value:'TRANSFINITE_TWO_LEVEL'},
{label:'超级超限', value:'TRANSFINITE_SUPER'} {label:'Super over limit', value:'TRANSFINITE_SUPER'}
], ],
standTypeList:[ standTypeList:[
{label:'', value:'NO'}, {label:'No', value:'NO'},
{label:'高站台', value:'LOW'}, {label:'Low', value:'LOW'},
{label:'低站台', value:'HIGH'} {label:'High', value:'HIGH'}
], ],
allowEmuList:[ allowEmuList:[
{label:'', value:true}, {label:'True', value:true},
{label:'', value:false} {label:'False', value:false}
], ],
addWaterEquList:[ addWaterEquList:[
{label:'', value:true}, {label:'True', value:true},
{label:'', value:false} {label:'False', value:false}
], ],
sewageEquList:[ sewageEquList:[
{label:'', value:true}, {label:'True', value:true},
{label:'', value:false} {label:'False', value:false}
], ],
militaryList:[ militaryList:[
{label:'', value:true}, {label:'True', value:true},
{label:'', value:false} {label:'False', value:false}
], ],
stationCode:'', // stationCode:'', //
model:{ model:{
@ -193,24 +223,24 @@ export default {
}, },
rules:{ rules:{
trackNature: [ trackNature: [
{ required: true, message: '请选择线路性质', trigger: 'blur' }, { required: true, message: 'Please select nature of line', trigger: 'blur' },
{ required: true, message: '请选择线路性质', trigger: 'change' } { required: true, message: 'Please select nature of line', trigger: 'change' }
], ],
direction: [ direction: [
{ required: true, message: '请选择接发车方向', trigger: 'blur' }, { required: true, message: 'Please select direction', trigger: 'blur' },
{ required: true, message: '请选择接发车方向', trigger: 'change' } { required: true, message: 'Please select direction', trigger: 'change' }
], ],
trainType: [ trainType: [
{ required: true, message: '请选择接发车类型', trigger: 'blur' }, { required: true, message: 'Please select type of train', trigger: 'blur' },
{ required: true, message: '请选择接发车类型', trigger: 'change' } { required: true, message: 'Please select type of train', trigger: 'change' }
], ],
transfinite: [ transfinite: [
{ required: true, message: '请选择超限类型', trigger: 'blur' }, { required: true, message: 'Please select type of overrun', trigger: 'blur' },
{ required: true, message: '请选择超限类型', trigger: 'change' } { required: true, message: 'Please select type of overrun', trigger: 'change' }
], ],
standType: [ standType: [
{ required: true, message: '请选择站台', trigger: 'blur' }, { required: true, message: 'Please select stand', trigger: 'blur' },
{ required: true, message: '请选择站台', trigger: 'change' } { required: true, message: 'Please select stand', trigger: 'change' }
] ]
} }
}; };
@ -226,7 +256,7 @@ export default {
return this.dialogShow ? OperationEvent.CTCCommand.modifyStationTrack.menu.domId : ''; return this.dialogShow ? OperationEvent.CTCCommand.modifyStationTrack.menu.domId : '';
}, },
title() { title() {
return '股道信息'; return 'Track information';
} }
}, },
methods:{ methods:{

View File

@ -7,27 +7,27 @@
<div class="trainFixedPathR"> <div class="trainFixedPathR">
<div class="trainFixedPathRMenu"> <div class="trainFixedPathRMenu">
<div class="trainFixedPathRMenuL"> <div class="trainFixedPathRMenuL">
<el-button class="trainFixedPathButton" size="small" @click="addTrainFxPath">增加</el-button> <el-button class="trainFixedPathButton" size="small" @click="addTrainFxPath">Add</el-button>
<el-button class="trainFixedPathButton" size="small" @click="batchTrainFxPath">批量增加</el-button> <el-button class="trainFixedPathButton" size="small" @click="batchTrainFxPath">Batch add</el-button>
<el-button class="trainFixedPathButton" size="small">基本图导入</el-button> <el-button class="trainFixedPathButton" size="small">Basic map import</el-button>
<el-button class="trainFixedPathButton" size="small">基本图申请</el-button> <el-button class="trainFixedPathButton" size="small">Basic map request</el-button>
<el-button class="trainFixedPathButton" size="small">其他站导入</el-button> <el-button class="trainFixedPathButton" size="small">Other station import</el-button>
<el-button class="trainFixedPathButton" size="small" @click="deleteTrainFxPath">删除</el-button> <el-button class="trainFixedPathButton" size="small" @click="deleteTrainFxPath">Delete</el-button>
<el-button class="trainFixedPathButton" size="small" @click="clearTrainFxPath">全部清空</el-button> <el-button class="trainFixedPathButton" size="small" @click="clearTrainFxPath">Empty out</el-button>
<el-button class="trainFixedPathButton" size="small" @click="modifyTrainFxPath">修改</el-button> <el-button class="trainFixedPathButton" size="small" @click="modifyTrainFxPath">Modify</el-button>
<el-button class="trainFixedPathButton" size="small">查找</el-button> <el-button class="trainFixedPathButton" size="small">Search</el-button>
<el-button class="trainFixedPathButton" size="small">导出excel</el-button> <el-button class="trainFixedPathButton" size="small">Export excel</el-button>
<el-button class="trainFixedPathButton" size="small">流程批量设置</el-button> <el-button class="trainFixedPathButton" size="small">Process batch setup</el-button>
</div> </div>
<div class="trainFixedPathRMenuR"> <div class="trainFixedPathRMenuR">
<span class="trainFixedPathRVer">版本号</span> <span class="trainFixedPathRVer">Version number</span>
<el-button class="trainFixedPathButton" size="small" @click="exportData">备份</el-button> <el-button class="trainFixedPathButton" size="small" @click="exportData">Backup</el-button>
<el-button class="trainFixedPathButton" size="small" @click="releaseTrainFixedPath">更新至生效区</el-button> <el-button class="trainFixedPathButton" size="small" @click="releaseTrainFixedPath">Update to the effect zone</el-button>
<el-button class="trainFixedPathButton trainFixedPathUpload" size="small"> <el-button class="trainFixedPathButton trainFixedPathUpload" size="small">
导入 Import
<input ref="files" type="file" class="file_box" accept=".json, application/json" @change="importf"> <input ref="files" type="file" class="file_box" accept=".json, application/json" @change="importf">
</el-button> </el-button>
<el-button class="trainFixedPathButton" size="small">比较</el-button> <el-button class="trainFixedPathButton" size="small">Compare</el-button>
</div> </div>
</div> </div>
<div class="trainFixedPathRTable" :style="{ height: (height-40)+'px' }"> <div class="trainFixedPathRTable" :style="{ height: (height-40)+'px' }">
@ -47,13 +47,13 @@
<!-- @current-change="handleCurrentChange" --> <!-- @current-change="handleCurrentChange" -->
<el-table-column <el-table-column
type="index" type="index"
label="序号" label="Index"
width="50" width="50"
/> />
<el-table-column <el-table-column
prop="stationCode" prop="stationCode"
label="车站" label="Station"
width="100" width="60"
> >
<template slot-scope="scope"> <template slot-scope="scope">
{{ stationMap[scope.row.stationCode].name }} {{ stationMap[scope.row.stationCode].name }}
@ -62,12 +62,12 @@
<!-- arriveTripNumber --> <!-- arriveTripNumber -->
<el-table-column <el-table-column
prop="arriveTipNum" prop="arriveTipNum"
label="到达车次" label="Arrival train number"
width="80" width="80"
/> />
<el-table-column <el-table-column
prop="arriveTime" prop="arriveTime"
label="到达时间" label="Time of arrival"
width="70" width="70"
> >
<template slot-scope="scope"> <template slot-scope="scope">
@ -77,19 +77,19 @@
<!-- departTripNumber --> <!-- departTripNumber -->
<el-table-column <el-table-column
prop="leaveTipNum" prop="leaveTipNum"
label="出发车次" label="Departure train number"
width="80" width="80"
/> />
<!-- departTime --> <!-- departTime -->
<el-table-column <el-table-column
prop="leaveTime" prop="leaveTime"
label="出发时间" label="Departure time"
width="70" width="70"
/> />
<!-- trackSectionCode --> <!-- trackSectionCode -->
<el-table-column <el-table-column
prop="masterCode" prop="masterCode"
label="股道" label="Track"
width="75" width="75"
> >
<template slot-scope="scope"> <template slot-scope="scope">
@ -101,7 +101,7 @@
<!-- departStationCode --> <!-- departStationCode -->
<el-table-column <el-table-column
prop="backStationCode" prop="backStationCode"
label="后方车站" label="Rear station"
width="110" width="110"
> >
<template slot-scope="scope"> <template slot-scope="scope">
@ -113,8 +113,8 @@
<!-- arriveDirectionCode --> <!-- arriveDirectionCode -->
<el-table-column <el-table-column
prop="enterDirCode" prop="enterDirCode"
label="入口" label="Entrance"
width="155" width="70"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.enterDirCode"> <div v-if="scope.row.enterDirCode">
@ -125,8 +125,8 @@
<!-- departDirectionCode --> <!-- departDirectionCode -->
<el-table-column <el-table-column
prop="outDirCode" prop="outDirCode"
label="出口" label="Exit"
width="155" width="50"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.outDirCode"> <div v-if="scope.row.outDirCode">
@ -137,7 +137,7 @@
<!-- arriveStationCode --> <!-- arriveStationCode -->
<el-table-column <el-table-column
prop="fontStationCode" prop="fontStationCode"
label="前方车站" label="Forward station"
width="110" width="110"
> >
<template slot-scope="scope"> <template slot-scope="scope">
@ -149,7 +149,7 @@
<!-- RVType --> <!-- RVType -->
<el-table-column <el-table-column
prop="appendData.JISHU_STOP" prop="appendData.JISHU_STOP"
label="技术停点" label="Technical stop"
width="70" width="70"
> >
<!-- <template slot-scope="scope"> <!-- <template slot-scope="scope">
@ -159,8 +159,8 @@
<!-- trainInspection --> <!-- trainInspection -->
<el-table-column <el-table-column
prop="appendData.LIEJIAN" prop="appendData.LIEJIAN"
label="列检" label="Train inspection"
width="40" width="60"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<el-checkbox v-model="scope.row.appendData.LIEJIAN" @change="changeData(scope.row,'LIEJIAN')" /> <el-checkbox v-model="scope.row.appendData.LIEJIAN" @change="changeData(scope.row,'LIEJIAN')" />
@ -169,8 +169,8 @@
<!-- crossZero --> <!-- crossZero -->
<el-table-column <el-table-column
prop="appendData.JIAO_LING" prop="appendData.JIAO_LING"
label="交令" label="Surrender order"
width="40" width="60"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<el-checkbox v-model="scope.row.appendData.JIAO_LING" @change="changeData(scope.row,'JIAO_LING')" /> <el-checkbox v-model="scope.row.appendData.JIAO_LING" @change="changeData(scope.row,'JIAO_LING')" />
@ -178,8 +178,8 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="appendData.JIAOPIAO" prop="appendData.JIAOPIAO"
label="交票" label="Ticket delivery"
width="40" width="60"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<el-checkbox v-model="scope.row.appendData.JIAOPIAO" @change="changeData(scope.row,'JIAOPIAO')" /> <el-checkbox v-model="scope.row.appendData.JIAOPIAO" @change="changeData(scope.row,'JIAOPIAO')" />
@ -188,8 +188,8 @@
<!-- columnEnd --> <!-- columnEnd -->
<el-table-column <el-table-column
prop="appendData.LIEWEI" prop="appendData.LIEWEI"
label="列尾" label="End of train"
width="40" width="60"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<el-checkbox v-model="scope.row.appendData.LIEWEI" @change="changeData(scope.row,'LIEWEI')" /> <el-checkbox v-model="scope.row.appendData.LIEWEI" @change="changeData(scope.row,'LIEWEI')" />
@ -198,8 +198,8 @@
<!-- locomotive --> <!-- locomotive -->
<el-table-column <el-table-column
prop="appendData.JICHE" prop="appendData.JICHE"
label="机车" label="Locomotive"
width="40" width="60"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<el-checkbox v-model="scope.row.appendData.JICHE" @change="changeData(scope.row,'JICHE')" /> <el-checkbox v-model="scope.row.appendData.JICHE" @change="changeData(scope.row,'JICHE')" />
@ -208,8 +208,8 @@
<!-- goodsInspection --> <!-- goodsInspection -->
<el-table-column <el-table-column
prop="appendData.appendData.HUOJIAN" prop="appendData.appendData.HUOJIAN"
label="货检" label="Goods inspection"
width="40" width="60"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<el-checkbox v-model="scope.row.appendData.HUOJIAN" @change="changeData(scope.row,'HUOJIAN')" /> <el-checkbox v-model="scope.row.appendData.HUOJIAN" @change="changeData(scope.row,'HUOJIAN')" />
@ -218,8 +218,8 @@
<!-- multiplyDown --> <!-- multiplyDown -->
<el-table-column <el-table-column
prop="appendData.CHENGJIANG" prop="appendData.CHENGJIANG"
label="乘降" label="Landing"
width="40" width="60"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<el-checkbox v-model="scope.row.appendData.CHENGJIANG" @change="changeData(scope.row,'CHENGJIANG')" /> <el-checkbox v-model="scope.row.appendData.CHENGJIANG" @change="changeData(scope.row,'CHENGJIANG')" />
@ -228,8 +228,8 @@
<!-- sailUpstream --> <!-- sailUpstream -->
<el-table-column <el-table-column
prop="appendData.SHANGSHUI" prop="appendData.SHANGSHUI"
label="上水" label="Watering"
width="40" width="60"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<el-checkbox v-model="scope.row.appendData.SHANGSHUI" @change="changeData(scope.row,'SHANGSHUI')" /> <el-checkbox v-model="scope.row.appendData.SHANGSHUI" @change="changeData(scope.row,'SHANGSHUI')" />
@ -238,8 +238,8 @@
<!-- pickUp --> <!-- pickUp -->
<el-table-column <el-table-column
prop="appendData.ZHAIGUA" prop="appendData.ZHAIGUA"
label="摘挂" label="Picking"
width="40" width="60"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<el-checkbox v-model="scope.row.appendData.ZHAIGUA" @change="changeData(scope.row,'ZHAIGUA')" /> <el-checkbox v-model="scope.row.appendData.ZHAIGUA" @change="changeData(scope.row,'ZHAIGUA')" />
@ -248,8 +248,8 @@
<!-- transfer --> <!-- transfer -->
<el-table-column <el-table-column
prop="appendData.HUANCHENG" prop="appendData.HUANCHENG"
label="换乘" label="Change of train"
width="40" width="60"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<el-checkbox v-model="scope.row.appendData.HUANCHENG" @change="changeData(scope.row,'HUANCHENG')" /> <el-checkbox v-model="scope.row.appendData.HUANCHENG" @change="changeData(scope.row,'HUANCHENG')" />
@ -258,8 +258,8 @@
<!-- handling --> <!-- handling -->
<el-table-column <el-table-column
prop="appendData.ZHUANGXIE" prop="appendData.ZHUANGXIE"
label="装卸" label="Loading and unloading"
width="40" width="60"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<el-checkbox v-model="scope.row.appendData.ZHUANGXIE" @change="changeData(scope.row,'ZHUANGXIE')" /> <el-checkbox v-model="scope.row.appendData.ZHUANGXIE" @change="changeData(scope.row,'ZHUANGXIE')" />
@ -268,8 +268,8 @@
<!-- pollution --> <!-- pollution -->
<el-table-column <el-table-column
prop="appendData.XIWU" prop="appendData.XIWU"
label="吸污" label="Suction"
width="40" width="60"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<el-checkbox v-model="scope.row.appendData.XIWU" @change="changeData(scope.row,'XIWU')" /> <el-checkbox v-model="scope.row.appendData.XIWU" @change="changeData(scope.row,'XIWU')" />
@ -278,8 +278,8 @@
<!-- crossing--> <!-- crossing-->
<el-table-column <el-table-column
prop="appendData.DAOKOU" prop="appendData.DAOKOU"
label="道口" label="Crossing"
width="40" width="60"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<el-checkbox v-model="scope.row.appendData.DAOKOU" @change="changeData(scope.row,'DAOKOU')" /> <el-checkbox v-model="scope.row.appendData.DAOKOU" @change="changeData(scope.row,'DAOKOU')" />
@ -288,8 +288,8 @@
<!-- trainNumber --> <!-- trainNumber -->
<el-table-column <el-table-column
prop="appendData.CHEHAO" prop="appendData.CHEHAO"
label="车号" label="Train number"
width="40" width="60"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<el-checkbox v-model="scope.row.appendData.CHEHAO" @change="changeData(scope.row,'CHEHAO')" /> <el-checkbox v-model="scope.row.appendData.CHEHAO" @change="changeData(scope.row,'CHEHAO')" />
@ -298,8 +298,8 @@
<!-- affair --> <!-- affair -->
<el-table-column <el-table-column
prop="appendData.ZHANWU" prop="appendData.ZHANWU"
label="站务" label="Station service"
width="40" width="60"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<el-checkbox v-model="scope.row.appendData.ZHANWU" @change="changeData(scope.row,'ZHANWU')" /> <el-checkbox v-model="scope.row.appendData.ZHANWU" @change="changeData(scope.row,'ZHANWU')" />
@ -307,8 +307,8 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="appendData.ZONGKONG" prop="appendData.ZONGKONG"
label="综控" label="Integrated control"
width="40" width="60"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<el-checkbox v-model="scope.row.appendData.ZONGKONG" @change="changeData(scope.row,'ZONGKONG')" /> <el-checkbox v-model="scope.row.appendData.ZONGKONG" @change="changeData(scope.row,'ZONGKONG')" />
@ -422,9 +422,9 @@ export default {
deleteTrainFxPath() { deleteTrainFxPath() {
if (this.currentRow) { if (this.currentRow) {
const that = this; const that = this;
this.$confirm('确定删除该条列车固定径路数据?', '警告', { this.$confirm('Are you sure to delete the fixed track data of this train?', 'Warning', {
confirmButtonText: '确定', confirmButtonText: 'Confirm',
cancelButtonText: '取消', cancelButtonText: 'Cancel',
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
// stationCode // stationCode
@ -433,31 +433,31 @@ export default {
const param = {stationCode:this.currentRow.stationCode, code:this.currentRow.code }; const param = {stationCode:this.currentRow.stationCode, code:this.currentRow.code };
commitOperate(menuOperate.CTC.deleteTrainFixedPath, param, 3).then(({valid})=>{ commitOperate(menuOperate.CTC.deleteTrainFixedPath, param, 3).then(({valid})=>{
if (valid) { if (valid) {
that.$message.success('删除成功!'); that.$message.success('Deleted successfully!');
this.handleData(currentIndex); this.handleData(currentIndex);
} }
}).catch(() => { }).catch(() => {
that.$message.error('删除失败'); that.$message.error('Deletion failed!');
}); });
}).catch(e => {}); }).catch(e => {});
} }
}, },
clearTrainFxPath() { clearTrainFxPath() {
const that = this; const that = this;
this.$confirm('确定清空该站的所有列车固定径路数据?', '警告', { this.$confirm('Confirm to clear all fixed track data at this station?', 'Warning', {
confirmButtonText: '确定', confirmButtonText: 'Confirm',
cancelButtonText: '取消', cancelButtonText: 'Cancel',
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
// stationCode // stationCode
const param = {stationCode:this.currentStationCode}; const param = {stationCode:this.currentStationCode};
commitOperate(menuOperate.CTC.clearTrainFixedPath, param, 3).then(({valid})=>{ commitOperate(menuOperate.CTC.clearTrainFixedPath, param, 3).then(({valid})=>{
if (valid) { if (valid) {
that.$message.success('清空成功!'); that.$message.success('Clear successfully!');
this.handleData(); this.handleData();
} }
}).catch(() => { }).catch(() => {
that.$message.error('清空失败'); that.$message.error('Empty failure!');
}); });
}).catch(e => {}); }).catch(e => {});
}, },
@ -484,12 +484,12 @@ export default {
if (!obj.files) return; if (!obj.files) return;
const f = obj.files[0]; const f = obj.files[0];
if (f.type != 'application/json') { if (f.type != 'application/json') {
this.$message.error('请上传json格式的文件'); this.$message.error('Upload a file in json format');
return; return;
} }
const loading = this.$loading({ const loading = this.$loading({
lock: true, lock: true,
text: '正在导入中...', text: 'Being imported...',
spinner: 'el-icon-loading', spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)' background: 'rgba(0, 0, 0, 0.7)'
}); });
@ -505,20 +505,20 @@ export default {
commitOperate(menuOperate.CTC.importTrainFixedPath, param, 3).then(({valid})=>{ commitOperate(menuOperate.CTC.importTrainFixedPath, param, 3).then(({valid})=>{
if (valid) { if (valid) {
loading.close(); loading.close();
that.$message.success('导入成功!'); that.$message.success('Import successfully!');
this.handleData(); this.handleData();
} }
}).catch(() => { }).catch(() => {
loading.close(); loading.close();
that.$message.error('导入失败'); that.$message.error('Import failure!');
}); });
} else { } else {
that.$message.error('该文件数据为空'); that.$message.error('The file data is empty!');
loading.close(); loading.close();
} }
} else { } else {
that.$message.error('该文件数据结构不正确'); that.$message.error('The file data structure is incorrect!');
loading.close(); loading.close();
} }
}; };
@ -528,10 +528,10 @@ export default {
const that = this; const that = this;
commitOperate(menuOperate.CTC.releaseTrainFixedPath, { stationCode:this.currentStationCode}, 3).then(({valid})=>{ commitOperate(menuOperate.CTC.releaseTrainFixedPath, { stationCode:this.currentStationCode}, 3).then(({valid})=>{
if (valid) { if (valid) {
that.$message.success('发布成功!'); that.$message.success('Successful release!');
} }
}).catch(() => { }).catch(() => {
that.$message.error('发布失败'); that.$message.error('Publishing failure!');
}); });
}, },
coverTime(time) { coverTime(time) {

View File

@ -34,7 +34,7 @@
</div> </div>
</div> </div>
<div class="chat-box-footer"> <div class="chat-box-footer">
<el-input v-model="textContent" size="small" placeholder="请输入会话文字点击T发送" style="flex: 1; margin-left: 5px;" :rows="1" /> <el-input v-model="textContent" size="small" placeholder="Please enter the session text and click T to send" style="flex: 1; margin-left: 5px;" :rows="1" />
<el-button :id="sendTextId" size="mini" class="chat-box-footer-create" :disabled="contentSend" @click="sendText">T</el-button> <el-button :id="sendTextId" size="mini" class="chat-box-footer-create" :disabled="contentSend" @click="sendText">T</el-button>
<el-button :id="recordVoice" class="chat-box-footer-create chat-box-footer-send" :class="{'active': recordSending}" :disabled="audioPlay || (trainingDesign && !trainingSwitch)" size="mini" type="primary" @click="startRecording()"> <el-button :id="recordVoice" class="chat-box-footer-create chat-box-footer-send" :class="{'active': recordSending}" :disabled="audioPlay || (trainingDesign && !trainingSwitch)" size="mini" type="primary" @click="startRecording()">
<el-progress id="voice_progress_bar" type="circle" :show-text="false" :percentage="100/60*seconds" :width="40" :stroke-width="2" status="success" /> <el-progress id="voice_progress_bar" type="circle" :show-text="false" :percentage="100/60*seconds" :width="40" :stroke-width="2" status="success" />
@ -203,7 +203,7 @@ export default {
this.textContent = ''; this.textContent = '';
} }
}).catch((error) => { }).catch((error) => {
this.$message.error('发送会话文字失败:' + error.message); this.$message.error('Failed to send session text:' + error.message);
}); });
}, },
cancelRecording() { cancelRecording() {
@ -239,7 +239,7 @@ export default {
that.audioPlay = false; that.audioPlay = false;
} }
}).catch(error => { }).catch(error => {
that.$message.error('发送会话语音失败:' + error.message); that.$message.error('Failed to send session voice messages:' + error.message);
that.audioPlay = false; that.audioPlay = false;
}); });
if (that.microphone) { if (that.microphone) {
@ -257,7 +257,7 @@ export default {
case 'PermissionDeniedError': case 'PermissionDeniedError':
this.$message({ this.$message({
showClose: true, showClose: true,
message: '用户拒绝提供信息', message: 'The user refused to provide information',
type: 'error' type: 'error'
}); });
break; break;
@ -265,7 +265,7 @@ export default {
case 'NotSupportedError': case 'NotSupportedError':
this.$message({ this.$message({
showClose: true, showClose: true,
message: '浏览器不支持硬件设备', message: 'The browser does not support hardware devices',
type: 'error' type: 'error'
}); });
break; break;
@ -273,14 +273,14 @@ export default {
case 'MandatoryUnsatisfiedError': case 'MandatoryUnsatisfiedError':
this.$message({ this.$message({
showClose: true, showClose: true,
message: '无法发现指定的硬件设备', message: 'Failed to discover the specified hardware device',
type: 'error' type: 'error'
}); });
break; break;
default: default:
this.$message({ this.$message({
showClose: true, showClose: true,
message: '无法打开麦克风', message: 'Unable to turn on microphone',
type: 'error' type: 'error'
}); });
break; break;
@ -331,7 +331,7 @@ export default {
); );
} }
} }
}).catch(() => { console.error('操作失败!'); }); }).catch(() => { console.error('Operation failure!'); });
} else { } else {
this.stopRecording(); // this.stopRecording(); //
} }

View File

@ -1,8 +1,8 @@
<template> <template>
<div v-if="show" class="examPanel"> <div v-if="show" class="examPanel">
<div class="header"> <div class="header">
<div>满分: {{ composition.fullScore }}</div> <div>FullScore: {{ composition.fullScore }}</div>
<div>考试时间: {{ composition.validDuration }}分钟</div> <div>Examination time: {{ composition.validDuration }}minutes</div>
</div> </div>
<!-- <div class="legend-area"> <!-- <div class="legend-area">
<div class="legend"> <div class="legend">
@ -14,7 +14,7 @@
<div class="text">未作答</div> <div class="text">未作答</div>
</div> </div>
</div> --> </div> -->
<div>理论题</div> <div>Theory questions</div>
<div class="questionList"> <div class="questionList">
<div <div
v-for="(question, index) in questionList[0]" v-for="(question, index) in questionList[0]"
@ -29,7 +29,7 @@
{{ index + 1 }} {{ index + 1 }}
</div> </div>
</div> </div>
<div>实训题</div> <div>Practical questions</div>
<div class="questionList"> <div class="questionList">
<div <div
v-for="(question, index) in questionList[1]" v-for="(question, index) in questionList[1]"
@ -42,7 +42,7 @@
</div> </div>
</div> </div>
<div class="footer"> <div class="footer">
<el-button size="small" type="primary" @click="submitExam">交卷</el-button> <el-button size="small" type="primary" @click="submitExam">Turn in your paper</el-button>
</div> </div>
<TheoryQuestion <TheoryQuestion
ref="theoryQuestion" ref="theoryQuestion"
@ -117,11 +117,11 @@ export default {
const { score, passScore, commonScore, trainingScore } = resp.data; const { score, passScore, commonScore, trainingScore } = resp.data;
const pass = score >= passScore; const pass = score >= passScore;
this.$alert( this.$alert(
`${pass ? '恭喜您考试合格' : '考试不通过'} `${pass ? 'Congratulations on passing the exam' : 'You have failed the examination'}
总分: ${score} Total marks: ${score}
理论: ${commonScore} Theory: ${commonScore}
实训: ${trainingScore}`, Practical: ${trainingScore}`,
'考试结果' 'Examination result'
).then(() => { ).then(() => {
this.show = false; this.show = false;
}); });
@ -129,7 +129,7 @@ export default {
}; };
const finished = this.questionStateList.every(list => list.every(item => item === true)); const finished = this.questionStateList.every(list => list.every(item => item === true));
if (!finished) { if (!finished) {
this.$confirm('您还有题目未答完, 确认交卷吗?').then(() => { this.$confirm('Do you have any questions left to answer?').then(() => {
execSubmit(); execSubmit();
}); });
} else { } else {

View File

@ -2,56 +2,56 @@
<el-dialog <el-dialog
:visible.sync="show" :visible.sync="show"
:before-close="doClose" :before-close="doClose"
title="选择试卷" title="Select paper"
width="1200px" width="1200px"
:close-on-click-modal="false" :close-on-click-modal="false"
@open="onOpen" @open="onOpen"
> >
<el-table :data="paperList" border> <el-table :data="paperList" border>
<el-table-column prop="name" label="试卷名称" width="150px"> <el-table-column prop="name" label="Paper name" width="150px">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ scope.row.name }}</span> <span>{{ scope.row.name }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="profile" label="试卷简介"> <el-table-column prop="profile" label="Introduction to the paper">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ scope.row.profile }}</span> <span>{{ scope.row.profile }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="试卷启用时间" width="160px"> <el-table-column label="Paper opening date" width="160px">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ scope.row.startTime }} </span> <span>{{ scope.row.startTime }} </span>
<span>{{ scope.row.endTime }} </span> <span>{{ scope.row.endTime }} </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="validDuration" label="考试时间" width="80px"> <el-table-column prop="validDuration" label="Exam Time" width="80px">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ scope.row.validDuration }} 分钟</span> <span>{{ scope.row.validDuration }} minutes</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="题目数量" width="100px"> <el-table-column label="Number of questions" width="100px">
<template slot-scope="scope"> <template slot-scope="scope">
<span>理论:{{ <span>Theory:{{
scope.row.ruleList.reduce((prev, curr) => prev + (curr.type === 1 ? curr.amount : 0), 0) scope.row.ruleList.reduce((prev, curr) => prev + (curr.type === 1 ? curr.amount : 0), 0)
}}</span><br> }}</span><br>
<span>实操:{{ <span>Practical:{{
scope.row.ruleList.reduce((prev, curr) => prev + (curr.type === 2 ? curr.amount : 0), 0) scope.row.ruleList.reduce((prev, curr) => prev + (curr.type === 2 ? curr.amount : 0), 0)
}}</span> }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="fullScore" label="总分" width="80px"> <el-table-column prop="fullScore" label="Total marks" width="80px">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ scope.row.fullScore }}</span> <span>{{ scope.row.fullScore }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="passScore" label="及格分" width="80px"> <el-table-column prop="passScore" label="Pass mark" width="80px">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ scope.row.passScore }}</span> <span>{{ scope.row.passScore }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="100px"> <el-table-column label="Operation" width="100px">
<el-button slot-scope="scope" type="primary" size="small" @click="start(scope.row)">开始考试</el-button> <el-button slot-scope="scope" type="primary" size="small" @click="start(scope.row)">Start of examination</el-button>
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-dialog> </el-dialog>

View File

@ -125,11 +125,11 @@
<div class="button-box"> <div class="button-box">
<img :src="unknowPic" class="img-button"> <img :src="unknowPic" class="img-button">
</div> </div>
<div class="button-box"> <div class="button-box" style="width: 40px;">
<div class="img-button">Sign</div> <div class="img-button" style="width: 36px;">Sign</div>
</div> </div>
<div class="button-box"> <div class="button-box" style="width: 44px;">
<div class="img-button">Order</div> <div class="img-button" style="width: 40px;">Order</div>
</div> </div>
</div> </div>
</div> </div>
@ -179,26 +179,29 @@
:default-sort="{prop: 'startTime', order: 'ascending'}" :default-sort="{prop: 'startTime', order: 'ascending'}"
border border
> >
<el-table-column width="50" label="Index" align="center" type="index"> <template slot="empty">
<el-empty :image-size="20" description="Empty" />
</template>
<el-table-column width="60" label="Index" align="center" type="index">
<!-- <template slot-scope="scope"> --> <!-- <template slot-scope="scope"> -->
<!--:style="{ background: scope.$index? '#f00':'#ff0' }" --> <!--:style="{ background: scope.$index? '#f00':'#ff0' }" -->
<!-- <div>{{ scope.$index }}</div> --> <!-- <div>{{ scope.$index }}</div> -->
<!-- </template> --> <!-- </template> -->
</el-table-column> </el-table-column>
<el-table-column property="date" label="Attention confirmation" /> <el-table-column width="100" property="date" label="Attention confirmation" />
<el-table-column property="tripNumber" label="Train number" /> <el-table-column width="70" property="tripNumber" label="Train number" />
<el-table-column property="trackName" label="Track" /> <el-table-column width="60" property="trackName" label="Track" />
<el-table-column property="autoTrigger" label="Self-touch"> <el-table-column property="autoTrigger" label="Self-touch">
<template slot-scope="scope"> <template slot-scope="scope">
<div style="width: 100%;height: 22px;" @contextmenu="popMenuShow(scope.row, '' ,$event)">{{ scope.row.autoTrigger? '√':'' }}</div> <div style="width: 100%;height: 22px;" @contextmenu="popMenuShow(scope.row, '' ,$event)">{{ scope.row.autoTrigger? '√':'' }}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column property="departure" label="Type"> <el-table-column width="60" property="departure" label="Type">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ scope.row.departure ? 'Depart':'Pick up' }}</span> <span>{{ scope.row.departure ? 'Depart':'Pick up' }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column property="status" label="Status"> <el-table-column width="65" property="status" label="Status">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ getRouteStatus(scope.row.status) }}</span> <span>{{ getRouteStatus(scope.row.status) }}</span>
</template> </template>
@ -236,7 +239,7 @@
</el-select> </el-select>
<div>Adjust machine-J101</div> <div>Adjust machine-J101</div>
<el-button size="mini" disabled>Approach preview</el-button> <el-button size="mini" disabled>Approach preview</el-button>
<el-select v-model="unknow1" size="mini" disabled> <el-select v-model="unknow1" size="mini" disabled placeholder="Please select">
<el-option <el-option
v-for="item in unknowList1" v-for="item in unknowList1"
:key="item.value" :key="item.value"
@ -254,15 +257,18 @@
border border
height="180" height="180"
> >
<template slot="empty">
<el-empty :image-size="20" description="Empty" />
</template>
<el-table-column type="index" width="50" label="Hook" /> <el-table-column type="index" width="50" label="Hook" />
<el-table-column property="line" label="Line" /> <el-table-column property="line" label="Line" />
<el-table-column property="method" label="Method" /> <el-table-column property="method" label="Method" />
<el-table-column property="nums" label="Nums" /> <el-table-column property="nums" label="Nums" />
<el-table-column property="direction" label="Direction" /> <el-table-column property="direction" label="Direction" />
<el-table-column property="leadWire" label="Pull-out line" /> <el-table-column width="110" property="leadWire" label="Pull-out line" />
<el-table-column property="status" label="Status" /> <el-table-column property="status" label="Status" />
<el-table-column property="leadRoute" label="Pull-out feed" /> <el-table-column width="110" property="leadRoute" label="Pull-out feed" />
<el-table-column property="pushRoute" label="Push-in approach" /> <el-table-column width="140" property="pushRoute" label="Push-in approach" />
<el-table-column property="note" label="Note" /> <el-table-column property="note" label="Note" />
</el-table> </el-table>
</div> </div>

View File

@ -9,9 +9,9 @@
center center
:close-on-click-modal="false" :close-on-click-modal="false"
> >
<el-form ref="form" :model="formModel" label-width="120px" :rules="rules"> <el-form ref="form" :model="formModel" label-width="200px" :rules="rules">
<el-form-item label="添加仿真成员:" prop="type"> <el-form-item label="Add simulation member:" prop="type">
<el-select v-model="formModel.type" placeholder="请选择" size="small"> <el-select v-model="formModel.type" placeholder="Please select" size="small">
<el-option <el-option
v-for="item in typeList" v-for="item in typeList"
:key="item.value" :key="item.value"
@ -20,8 +20,8 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item v-if="stationRoleList.includes(formModel.type)" label="值班车站:" prop="deviceCode"> <el-form-item v-if="stationRoleList.includes(formModel.type)" label="Duty station:" prop="deviceCode">
<el-select v-model="formModel.deviceCode" placeholder="请选择" size="small"> <el-select v-model="formModel.deviceCode" placeholder="Please select" size="small">
<el-option <el-option
v-for="item in filterStationList" v-for="item in filterStationList"
:key="item.code" :key="item.code"
@ -30,13 +30,13 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="仿真成员名称:" prop="name"> <el-form-item label="Simulation member name:" prop="name">
<el-input v-model="formModel.name" size="small" placeholder="请输入成员名称" /> <el-input v-model="formModel.name" size="small" placeholder="Please enter a member name" />
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button type="primary" @click="doSave">{{ $t('global.confirm') }}</el-button> <el-button type="primary" @click="doSave">Confirm</el-button>
<el-button @click="handleClose">{{ $t('global.cancel') }}</el-button> <el-button @click="handleClose">Cancel</el-button>
</span> </span>
</el-dialog> </el-dialog>
</template> </template>
@ -62,10 +62,10 @@ export default {
filterStationList: [], filterStationList: [],
rules: { rules: {
type: [ type: [
{ required: true, message: '请选择显示位置', trigger: 'change' } { required: true, message: 'Please select a display location', trigger: 'change' }
], ],
deviceCode: [ deviceCode: [
{ required: true, message: '请选择值班车站', trigger: 'change' } { required: true, message: 'Please select the duty station', trigger: 'change' }
] ]
}, },
stationRoleList:[ stationRoleList:[
@ -80,24 +80,24 @@ export default {
'DEVICE_MANAGER' 'DEVICE_MANAGER'
], ],
typeList: [ typeList: [
{label: '行调', value: 'DISPATCHER'}, {label: 'DISPATCHER', value: 'DISPATCHER'},
{label: '通号', value: 'MAINTAINER'}, {label: 'MAINTAINER', value: 'MAINTAINER'},
{label: '车站值班员', value: 'STATION_SUPERVISOR'}, {label: 'STATION_SUPERVISOR', value: 'STATION_SUPERVISOR'},
{label: '车站助理', value: 'STATION_ASSISTANT'}, {label: 'STATION_ASSISTANT', value: 'STATION_ASSISTANT'},
{label: '车站站长', value: 'STATION_MASTER'}, {label: 'STATION_MASTER', value: 'STATION_MASTER'},
{label: '车站信号员', value: 'STATION_SIGNALER'}, {label: 'STATION_SIGNALER', value: 'STATION_SIGNALER'},
{label: '车站客运员', value: 'STATION_PASSENGER'}, {label: 'STATION_PASSENGER', value: 'STATION_PASSENGER'},
{label: '车站扳道员', value: 'STATION_SWITCH_MAN'}, {label: 'STATION_SWITCH_MAN', value: 'STATION_SWITCH_MAN'},
{label: '车站引导员', value: 'STATION_FACILITATOR'}, {label: 'STATION_FACILITATOR', value: 'STATION_FACILITATOR'},
{label: '车站工务工', value: 'STATION_WORKER'}, {label: 'STATION_WORKER', value: 'STATION_WORKER'},
{label: '设备管理员', value: 'DEVICE_MANAGER'}, {label: 'DEVICE_MANAGER', value: 'DEVICE_MANAGER'},
{label: '车务段段长', value: 'TRAIN_MASTER'} {label: 'TRAIN_MASTER', value: 'TRAIN_MASTER'}
] ]
}; };
}, },
computed: { computed: {
title() { title() {
return '添加仿真角色成员'; return 'Add simulation role members';
} }
}, },
methods: { methods: {
@ -118,10 +118,10 @@ export default {
// if (this.formModel.type !== 'STATION_SUPERVISOR') { delete this.formModel.deviceCode; } // if (this.formModel.type !== 'STATION_SUPERVISOR') { delete this.formModel.deviceCode; }
if (!this.stationRoleList.includes(this.formModel.type)) { delete this.formModel.deviceCode; } if (!this.stationRoleList.includes(this.formModel.type)) { delete this.formModel.deviceCode; }
addSimulationMember(this.formModel, this.$route.query.group).then(() => { addSimulationMember(this.formModel, this.$route.query.group).then(() => {
this.$message.success('添加仿真角色成员成功!'); this.$message.success('Adding the emulator role member succeeded!');
this.handleClose(); this.handleClose();
}).catch(() => { }).catch(() => {
this.$message.error('添加仿真角色成员失败!'); this.$message.error('Failed to add the emulator role member!');
}); });
}); });
}, },

View File

@ -1,11 +1,11 @@
<template> <template>
<div class="member"> <div class="member">
<div class="member__head"> <div class="member__head">
<div class="member__head--title"> 仿真用户列表</div> <div class="member__head--title">Simulation user list</div>
<div class="member__head--notes"> {{ onlineNum }}/{{ members.length }}</div> <div class="member__head--notes"> {{ onlineNum }}/{{ members.length }}</div>
</div> </div>
<div class="member__container"> <div class="member__container">
<el-input v-model="filterText" :placeholder="this.$t('global.enterNameToFilter')" clearable /> <el-input v-model="filterText" placeholder="Filter by name" clearable />
<el-scrollbar class="member__container--list" wrap-class="scrollbar-wrapper" style="{height: calc(100% - 64px)}"> <el-scrollbar class="member__container--list" wrap-class="scrollbar-wrapper" style="{height: calc(100% - 64px)}">
<el-tree <el-tree
ref="tree" ref="tree"
@ -16,8 +16,8 @@
@node-contextmenu="handleShowContextMenu" @node-contextmenu="handleShowContextMenu"
> >
<span slot-scope="{ node, data }"> <span slot-scope="{ node, data }">
<span v-if="node.data.online" style="color: green;">{{ data.nickName + (data.userType === 'TEACHER'? '教员':'') + (data.referee? '裁判员':'') + (data.deviceVO? ` -- (${data.deviceVO.code})`:'') }}</span> <span v-if="node.data.online" style="color: green;">{{ data.nickName + (data.userType === 'TEACHER'? 'Teacher':'') + (data.referee? 'Referee':'') + (data.deviceVO? ` -- (${data.deviceVO.code})`:'') }}</span>
<span v-else style="color: #ccc;">{{ data.nickName + (data.userType === 'TEACHER'? '【教员】':'') + (data.referee? '【裁判员】':'') + (data.deviceVO? ` -- (${data.deviceVO.code})`:'') }}</span> <span v-else style="color: #ccc;">{{ data.nickName + (data.userType === 'TEACHER'? '【Teacher】':'') + (data.referee? '【Referee】':'') + (data.deviceVO? ` -- (${data.deviceVO.code})`:'') }}</span>
</span> </span>
</el-tree> </el-tree>
</el-scrollbar> </el-scrollbar>

View File

@ -1,6 +1,6 @@
<template> <template>
<el-drawer <el-drawer
title="仿真成员管理" title="Simulation member management"
:visible.sync="show" :visible.sync="show"
:direction="direction" :direction="direction"
:before-close="doClose" :before-close="doClose"
@ -11,10 +11,10 @@
<div class="room__container"> <div class="room__container">
<div style="width: 70%;height: calc(100% - 20px);"> <div style="width: 70%;height: calc(100% - 20px);">
<div style="margin-left: 10px;margin-right: 10px;"> <div style="margin-left: 10px;margin-right: 10px;">
<el-input v-model="queryMember" placeholder="请输入搜索人员"> <el-input v-model="queryMember" placeholder="Please enter search person">
<el-button slot="append" icon="el-icon-search" /> <el-button slot="append" icon="el-icon-search" />
</el-input> </el-input>
<el-button @click="addMember">添加仿真成员</el-button> <el-button @click="addMember">Add Simulation Member</el-button>
</div> </div>
<el-tree <el-tree
ref="tree" ref="tree"
@ -27,7 +27,7 @@
<span :id="data.id" slot-scope="{ data }" class="custom-tree-node"> <span :id="data.id" slot-scope="{ data }" class="custom-tree-node">
<span>{{ data.labelName }}</span> <span>{{ data.labelName }}</span>
<span v-if="data.type"> <span v-if="data.type">
<el-select :key="data.id" v-model="data.userId" :disabled="singleMember && roles !== data.type" placeholder="请选择" clearable size="mini" @change="nodeMemberChange($event, data)"> <el-select :key="data.id" v-model="data.userId" :disabled="singleMember && roles !== data.type" placeholder="Please select" clearable size="mini" @change="nodeMemberChange($event, data)">
<el-option <el-option
v-for="item in simulationUserList" v-for="item in simulationUserList"
:key="item.userId" :key="item.userId"
@ -94,53 +94,53 @@ export default {
doorList: [], doorList: [],
memberData: {}, memberData: {},
treeData: [{ treeData: [{
labelName: '行调', labelName: 'DISPATCHER',
children: [] children: []
}, { }, {
labelName: '车站值班员', labelName: 'STATION_SUPERVISOR',
children: [] children: []
}, { }, {
labelName: '司机', labelName: 'DRIVER',
children: [] children: []
}, { }, {
labelName: '通号', labelName: 'MAINTAINER',
children: [] children: []
}, { }, {
labelName: '车辆段', labelName: 'DEPOT',
children: [] children: []
}, { }, {
labelName: 'CTC操作员', labelName: 'RAIL_CTC',
children: [] children: []
}, { }, {
labelName: '车站助理', labelName: 'STATION_ASSISTANT',
children: [] children: []
}, },
{ {
labelName: '车站站长', labelName: 'STATION_MASTER',
children: [] children: []
}, },
{ {
labelName: '车站信号员', labelName: 'STATION_SIGNALER',
children: [] children: []
}, },
{ {
labelName: '车站客运员', labelName: 'STATION_PASSENGER',
children: [] children: []
}, },
{ {
labelName: '车站扳道员', labelName: 'STATION_SWITCH_MAN',
children: [] children: []
}, },
{ {
labelName: '车站引导员', labelName: 'STATION_FACILITATOR',
children: [] children: []
}, },
{ {
labelName: '车站工务工', labelName: 'STATION_WORKER',
children: [] children: []
}, },
{ {
labelName: '设备管理员', labelName: 'DEVICE_MANAGER',
children: [] children: []
} }
] ]
@ -193,146 +193,146 @@ export default {
const device = this.$store.getters['map/getDeviceByCode'](item.deviceCode); const device = this.$store.getters['map/getDeviceByCode'](item.deviceCode);
switch (item.type) { switch (item.type) {
case 'DISPATCHER': case 'DISPATCHER':
this.memberData[item.id].labelName = '行调' + (item.name || ''); this.memberData[item.id].labelName = 'DISPATCHER' + (item.name || '');
dispatcherList.push(this.memberData[item.id]); dispatcherList.push(this.memberData[item.id]);
break; break;
case 'ELECTRIC_DISPATCHER': case 'ELECTRIC_DISPATCHER':
this.memberData[item.id].labelName = '电力调度' + (item.name || ''); this.memberData[item.id].labelName = 'ELECTRIC_DISPATCHER' + (item.name || '');
electricDispatcherList.push(this.memberData[item.id]); electricDispatcherList.push(this.memberData[item.id]);
break; break;
case 'DEPOT_DISPATCHER': case 'DEPOT_DISPATCHER':
this.memberData[item.id].labelName = '信号楼-' + device.name + (item.name || ''); this.memberData[item.id].labelName = 'DEPOT_DISPATCHER-' + device.name + (item.name || '');
depotDispatcherList.push(this.memberData[item.id]); depotDispatcherList.push(this.memberData[item.id]);
break; break;
case 'STATION_SUPERVISOR': case 'STATION_SUPERVISOR':
this.memberData[item.id].labelName = '值班员-' + device.name + (item.name ? `-${item.name }` : ''); this.memberData[item.id].labelName = 'STATION_SUPERVISOR-' + device.name + (item.name ? `-${item.name }` : '');
stationSupervisorList.push(this.memberData[item.id]); stationSupervisorList.push(this.memberData[item.id]);
break; break;
case 'DRIVER': case 'DRIVER':
this.memberData[item.id].labelName = '司机-列车' + item.deviceCode; this.memberData[item.id].labelName = 'DRIVER-TRAIN' + item.deviceCode;
driverList.push(this.memberData[item.id]); driverList.push(this.memberData[item.id]);
break; break;
case 'MAINTAINER': case 'MAINTAINER':
this.memberData[item.id].labelName = '通号' + (item.name || ''); this.memberData[item.id].labelName = 'MAINTAINER' + (item.name || '');
maintainerList.push(this.memberData[item.id]); maintainerList.push(this.memberData[item.id]);
break; break;
case 'RAIL_CTC': case 'RAIL_CTC':
this.memberData[item.id].labelName = 'CTC操作员' + device.name; this.memberData[item.id].labelName = 'RAIL_CTC' + device.name;
ctcOperatorList.push(this.memberData[item.id]); ctcOperatorList.push(this.memberData[item.id]);
break; break;
case 'STATION_ASSISTANT': case 'STATION_ASSISTANT':
this.memberData[item.id].labelName = '车站助理-' + device.name + (item.name ? `-${item.name }` : ''); this.memberData[item.id].labelName = 'STATION_ASSISTANT-' + device.name + (item.name ? `-${item.name }` : '');
stationAssistantList.push(this.memberData[item.id]); stationAssistantList.push(this.memberData[item.id]);
break; break;
case 'STATION_MASTER': case 'STATION_MASTER':
this.memberData[item.id].labelName = '车站站长-' + device.name + (item.name ? `-${item.name }` : ''); this.memberData[item.id].labelName = 'STATION_MASTER-' + device.name + (item.name ? `-${item.name }` : '');
stationMasterList.push(this.memberData[item.id]); stationMasterList.push(this.memberData[item.id]);
break; break;
case 'STATION_SIGNALER': case 'STATION_SIGNALER':
this.memberData[item.id].labelName = '车站信号员-' + device.name + (item.name ? `-${item.name }` : ''); this.memberData[item.id].labelName = 'STATION_SIGNALER-' + device.name + (item.name ? `-${item.name }` : '');
stationSignalerList.push(this.memberData[item.id]); stationSignalerList.push(this.memberData[item.id]);
break; break;
case 'STATION_PASSENGER': case 'STATION_PASSENGER':
this.memberData[item.id].labelName = '车站客运员-' + device.name + (item.name ? `-${item.name }` : ''); this.memberData[item.id].labelName = 'STATION_PASSENGER-' + device.name + (item.name ? `-${item.name }` : '');
stationPassengerList.push(this.memberData[item.id]); stationPassengerList.push(this.memberData[item.id]);
break; break;
case 'STATION_SWITCH_MAN': case 'STATION_SWITCH_MAN':
this.memberData[item.id].labelName = '车站扳道员-' + device.name + (item.name ? `-${item.name }` : ''); this.memberData[item.id].labelName = 'STATION_SWITCH_MAN-' + device.name + (item.name ? `-${item.name }` : '');
stationSwitchManList.push(this.memberData[item.id]); stationSwitchManList.push(this.memberData[item.id]);
break; break;
case 'STATION_FACILITATOR': case 'STATION_FACILITATOR':
this.memberData[item.id].labelName = '车站引导员-' + device.name + (item.name ? `-${item.name }` : ''); this.memberData[item.id].labelName = 'STATION_FACILITATOR-' + device.name + (item.name ? `-${item.name }` : '');
stationFacilitatorList.push(this.memberData[item.id]); stationFacilitatorList.push(this.memberData[item.id]);
break; break;
case 'STATION_WORKER': case 'STATION_WORKER':
this.memberData[item.id].labelName = '车站工务工-' + device.name + (item.name ? `-${item.name }` : ''); this.memberData[item.id].labelName = 'STATION_WORKER-' + device.name + (item.name ? `-${item.name }` : '');
stationWorkerList.push(this.memberData[item.id]); stationWorkerList.push(this.memberData[item.id]);
break; break;
case 'DEVICE_MANAGER': case 'DEVICE_MANAGER':
this.memberData[item.id].labelName = '设备管理员-' + device.name + (item.name ? `-${item.name }` : ''); this.memberData[item.id].labelName = 'DEVICE_MANAGER-' + device.name + (item.name ? `-${item.name }` : '');
deviceManagerList.push(this.memberData[item.id]); deviceManagerList.push(this.memberData[item.id]);
break; break;
case 'TRAIN_MASTER': case 'TRAIN_MASTER':
// device.name; // device.name;
this.memberData[item.id].labelName = '车务段段长-' + (item.name ? `-${item.name }` : ''); this.memberData[item.id].labelName = 'TRAIN_MASTER-' + (item.name ? `-${item.name }` : '');
trainMasterList.push(this.memberData[item.id]); trainMasterList.push(this.memberData[item.id]);
break; break;
case 'PARENT_DEPARTMENT': case 'PARENT_DEPARTMENT':
this.memberData[item.id].labelName = '上级部门' + (item.name ? `-${item.name }` : ''); this.memberData[item.id].labelName = 'PARENT_DEPARTMENT' + (item.name ? `-${item.name }` : '');
break; break;
// DEVICE_MANAGER:'' deviceManager // DEVICE_MANAGER:'' deviceManager
} }
}); });
this.treeData = [{ this.treeData = [{
labelName: '行调', labelName: 'DISPATCHER',
id: 'dispatcher', id: 'dispatcher',
children: dispatcherList children: dispatcherList
}, { }, {
labelName: '车站值班员', labelName: 'ELECTRIC_DISPATCHER',
id: 'stationSupervisor', id: 'stationSupervisor',
children: stationSupervisorList children: stationSupervisorList
}, { }, {
labelName: '司机', labelName: 'DRIVER',
id: 'driver', id: 'driver',
children: driverList children: driverList
}, { }, {
labelName: '通号', labelName: 'MAINTAINER',
id: 'maintainer', id: 'maintainer',
children: maintainerList children: maintainerList
}, { }, {
labelName: '车辆段信号楼', labelName: 'DEPOT_DISPATCHER',
id: 'depotDispatcher', id: 'depotDispatcher',
children: depotDispatcherList children: depotDispatcherList
}, { }, {
labelName: '电力调度', labelName: 'ELECTRIC_DISPATCHER',
id: 'electricDispatcher', id: 'electricDispatcher',
children: electricDispatcherList children: electricDispatcherList
}, { }, {
labelName: 'CTC操作员', labelName: 'RAIL_CTC',
id: 'ctcOperator', id: 'ctcOperator',
children: ctcOperatorList children: ctcOperatorList
}, { }, {
labelName: '车站助理', labelName: 'STATION_ASSISTANT',
id: 'stationAssistant', id: 'stationAssistant',
children: stationAssistantList children: stationAssistantList
}, },
{ {
labelName: '车站站长', labelName: 'STATION_MASTER',
id: 'stationMaster', id: 'stationMaster',
children: stationMasterList children: stationMasterList
}, },
{ {
labelName: '车站信号员', labelName: 'STATION_SIGNALER',
id: 'stationSignaler', id: 'stationSignaler',
children: stationSignalerList children: stationSignalerList
}, },
{ {
labelName: '车站客运员', labelName: 'STATION_PASSENGER',
id: 'stationPassenger', id: 'stationPassenger',
children: stationPassengerList children: stationPassengerList
}, },
{ {
labelName: '车站扳道员', labelName: 'STATION_SWITCH_MAN',
id: 'stationSwitchMan', id: 'stationSwitchMan',
children: stationSwitchManList children: stationSwitchManList
}, },
{ {
labelName: '车站引导员', labelName: 'STATION_FACILITATOR',
id: 'stationFacilitator', id: 'stationFacilitator',
children: stationFacilitatorList children: stationFacilitatorList
}, },
{ {
labelName: '车站工务工', labelName: 'STATION_WORKER',
id: 'stationWorker', id: 'stationWorker',
children: stationWorkerList children: stationWorkerList
}, },
{ {
labelName: '设备管理员', labelName: 'DEVICE_MANAGER',
id: 'deviceManager', id: 'deviceManager',
children: deviceManagerList children: deviceManagerList
}, },
{ {
labelName: '车务段段长 ', labelName: 'TRAIN_MASTER ',
id: 'trainMaster', id: 'trainMaster',
children: trainMasterList children: trainMasterList
} }
@ -393,10 +393,10 @@ export default {
const data = [{userId: user.userId, memberId:val ? nodeData.id : ''}]; const data = [{userId: user.userId, memberId:val ? nodeData.id : ''}];
const self = this; const self = this;
assignUsersPlayRoles(data, this.$route.query.group).then(resp => { assignUsersPlayRoles(data, this.$route.query.group).then(resp => {
this.$message.success('调整角色成员成功!'); this.$message.success('Adjusting the role member succeeded!');
}).catch(() => { }).catch(() => {
self.memberData[nodeData.id].userId = ''; self.memberData[nodeData.id].userId = '';
this.$message.error('调整角色成员失败!'); this.$message.error('Failed to adjust the role member!');
}); });
}, },
addMember() { addMember() {
@ -447,7 +447,7 @@ export default {
} }
.room { .room {
width: 100%; width: 100%;
height: 100%; height: 95%;
// display: flex; // display: flex;
// flex-direction: column; // flex-direction: column;
box-sizing: border-box; box-sizing: border-box;
@ -483,7 +483,7 @@ export default {
line-height: 24px; line-height: 24px;
} }
.el-input-group { .el-input-group {
width: calc(100% - 146px); width: calc(100% - 215px);
} }
.el-dialog__body { .el-dialog__body {
padding: 6px 20px; padding: 6px 20px;

View File

@ -1,17 +1,17 @@
<template> <template>
<el-dialog v-dialogDrag :title="title" :visible.sync="show" width="550px" center :before-close="doClose"> <el-dialog v-dialogDrag :title="title" :visible.sync="show" width="550px" center :before-close="doClose">
<el-form ref="form" label-width="120px" :model="formModel" :rules="rules"> <el-form ref="form" label-width="120px" :model="formModel" :rules="rules">
<el-form-item :label="$t('display.setTime.systemTime')" prop="initTime"> <el-form-item label="System time:" prop="initTime">
<el-time-picker <el-time-picker
v-model="formModel.initTime" v-model="formModel.initTime"
:picker-options="pickerOptions" :picker-options="pickerOptions"
:placeholder="$t('display.setTime.anyTime')" placeholder="Any Time"
/> />
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="show = false">{{ $t('global.cancel') }}</el-button> <el-button @click="show = false">Cancel</el-button>
<el-button type="primary" :loading="status" @click="handleSure">{{ $t('global.confirm') }}</el-button> <el-button type="primary" :loading="status" @click="handleSure">Confirm</el-button>
</span> </span>
</el-dialog> </el-dialog>
</template> </template>
@ -32,7 +32,7 @@ export default {
}, },
computed: { computed: {
title() { title() {
return this.$t('display.setTime.setSimulationSystemTime'); return 'Set the simulation system time';
}, },
group() { group() {
return this.$route.query.group; return this.$route.query.group;

View File

@ -4,11 +4,11 @@
<span style="font-size: 16px;">{{ time }}</span> <span style="font-size: 16px;">{{ time }}</span>
<span style="margin-left: 10px;font-size: 14px;">{{ dateString }}</span> <span style="margin-left: 10px;font-size: 14px;">{{ dateString }}</span>
</div> </div>
<div style="display: flex;"> <div style="display: flex;align-items: center;">
<el-button <el-button
class="controlButton" class="controlButton"
type="info" type="info"
style="background: #000;" style="background: #000;height: 32px;"
:disabled="isDisabled" :disabled="isDisabled"
:loading="pauseLoading" :loading="pauseLoading"
circle circle

View File

@ -62,7 +62,7 @@ export default {
{ label: 'Change', name: 'switchOffset', click: this.switchOffset, isDisabled: () => { return false; }, isShow: () => { return this.$store.state.ibp.moreScreen; } }, { label: 'Change', name: 'switchOffset', click: this.switchOffset, isDisabled: () => { return false; }, isShow: () => { return this.$store.state.ibp.moreScreen; } },
{ label: 'Device view', name: 'jlmap3dmodel', click: this.jlmap3dmodel, isDisabled: () => { return false; }, isShow: () => { return this.$route.query.client !== 'diagramEdit'; } }, { label: 'Device view', name: 'jlmap3dmodel', click: this.jlmap3dmodel, isDisabled: () => { return false; }, isShow: () => { return this.$route.query.client !== 'diagramEdit'; } },
{ label: 'Equipment management', name: 'deviceManage', click: this.deviceManage, isDisabled: () => { return false; }, isShow: () => { return (this.$store.state.training.domConfig.hasDeviceManage && this.$store.state.training.simulationUserType === SimulationUserType.TEACHER) || (this.$route.query.client === 'interlockWork' && this.$route.query.projectDevice === 'ILW'); } }, { label: 'Equipment management', name: 'deviceManage', click: this.deviceManage, isDisabled: () => { return false; }, isShow: () => { return (this.$store.state.training.domConfig.hasDeviceManage && this.$store.state.training.simulationUserType === SimulationUserType.TEACHER) || (this.$route.query.client === 'interlockWork' && this.$route.query.projectDevice === 'ILW'); } },
{ label: 'Contact', name: 'contectUs', click: this.contectUs, isDisabled: () => { return false; }, isShow: () => { return true; } }, // { label: 'Contact', name: 'contectUs', click: this.contectUs, isDisabled: () => { return false; }, isShow: () => { return true; } },
{ label: 'Generating QR Codes', name: 'generateQrCode', click: this.generateQrCode, isDisabled: () => { return false; }, isShow: () => { return this.$store.state.training.domConfig.joint && this.$store.state.training.simulationUserType === SimulationUserType.TEACHER; } }, { label: 'Generating QR Codes', name: 'generateQrCode', click: this.generateQrCode, isDisabled: () => { return false; }, isShow: () => { return this.$store.state.training.domConfig.joint && this.$store.state.training.simulationUserType === SimulationUserType.TEACHER; } },
{ label: 'Switch passenger flow data', name: 'changeFlowData', click: this.changeFlowData, isDisabled: () => { return false; }, isShow: () => { return this.$store.state.training.domConfig.hasLpf && this.$store.state.training.simulationUserType === SimulationUserType.TEACHER; } }, { label: 'Switch passenger flow data', name: 'changeFlowData', click: this.changeFlowData, isDisabled: () => { return false; }, isShow: () => { return this.$store.state.training.domConfig.hasLpf && this.$store.state.training.simulationUserType === SimulationUserType.TEACHER; } },
{ label: 'Member management', name: 'memberManage', click: this.memberManage, isDisabled: () => { return false; }, isShow: () => { return this.$store.state.training.domConfig.hasMemberManage && this.$store.state.training.simulationUserType === SimulationUserType.TEACHER; } }, { label: 'Member management', name: 'memberManage', click: this.memberManage, isDisabled: () => { return false; }, isShow: () => { return this.$store.state.training.domConfig.hasMemberManage && this.$store.state.training.simulationUserType === SimulationUserType.TEACHER; } },
@ -169,7 +169,7 @@ export default {
this.$store.dispatch('training/setInitTime', new Date(`${new Date().toLocaleDateString()} ${model.initTime}`)); this.$store.dispatch('training/setInitTime', new Date(`${new Date().toLocaleDateString()} ${model.initTime}`));
}).catch(error => { }).catch(error => {
const message = getErrorTip(error.code) || 'Abnormal running as planned, please exit and try again'; const message = getErrorTip(error.code) || 'Abnormal running as planned, please exit and try again';
this.$messageBox(message + '' + this.$t('error.startSimulationFailed')); this.$messageBox(message + ',' + this.$t('error.startSimulationFailed'));
}); });
}, },
examStart(data) { examStart(data) {
@ -295,7 +295,7 @@ export default {
.simulationMenuList { .simulationMenuList {
position: absolute; position: absolute;
right: 71px; right: 71px;
width: 95px; width: 150px;
bottom: 10px; bottom: 10px;
background: #409EFF; background: #409EFF;
color: #fbfbfb; color: #fbfbfb;

View File

@ -1,6 +1,6 @@
<template> <template>
<el-dialog <el-dialog
title="选择考试类型" title="Please select the exam type"
:visible.sync="dialogVisible" :visible.sync="dialogVisible"
:close-on-click-modal="false" :close-on-click-modal="false"
width="350px" width="350px"
@ -10,8 +10,8 @@
<el-form ref="ruleForm" :model="form" label-width="30px"> <el-form ref="ruleForm" :model="form" label-width="30px">
<el-form-item label="" prop="role"> <el-form-item label="" prop="role">
<el-select v-model="form.type" style="width:260px"> <el-select v-model="form.type" style="width:260px">
<el-option label="练习模式" value="practice" /> <el-option label="Exercise mode" value="practice" />
<el-option label="测验模式" value="test" /> <el-option label="Quiz mode" value="test" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-form> </el-form>

View File

@ -2,20 +2,20 @@
<div style="padding: 0 50px;"> <div style="padding: 0 50px;">
<div style="text-align: center;padding: 30px 20px;font-size: 16px;font-weight: bold;">{{ title }}</div> <div style="text-align: center;padding: 30px 20px;font-size: 16px;font-weight: bold;">{{ title }}</div>
<div style="text-align: right;padding-right: 10px;margin-bottom: 10px;"> <div style="text-align: right;padding-right: 10px;margin-bottom: 10px;">
<el-button size="small" type="text" @click="doCreate">{{ isCreate?'创建':'修改' }}</el-button> <el-button size="small" type="text" @click="doCreate">{{ isCreate?'Create':'Modify' }}</el-button>
<el-divider direction="vertical" /> <el-divider direction="vertical" />
<el-button size="small" type="text" @click="doClose">返回</el-button> <el-button size="small" type="text" @click="doClose">Back</el-button>
</div> </div>
<data-form ref="dataform" :form="form" :form-model="formModel" :rules="rules" /> <data-form ref="dataform" :form="form" :form-model="formModel" :rules="rules" />
<el-form ref="form" :model="tagForm" size="small" label-width="90px" :rules="formRules"> <el-form ref="form" :model="tagForm" size="small" label-width="90px" :rules="formRules">
<el-form-item v-if="formModel.type === 'SINGLE'" label="客户端" prop="client"> <el-form-item v-if="formModel.type === 'SINGLE'" label="Client" prop="client">
<el-select v-model="tagForm.client" placeholder="请选择客户端"> <el-select v-model="tagForm.client" placeholder="Select a client">
<el-option label="行调客户端" value="dispatchWork" /> <el-option label="Dispatch client" value="dispatchWork" />
<el-option label="现地客户端" value="localWork" /> <el-option label="Local client" value="localWork" />
<el-option label="轨道详览" value="troDetailWork" /> <el-option label="Track detailing" value="troDetailWork" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="标签"> <el-form-item label="Tag">
<el-tag <el-tag
v-for="tag in tagForm.dynamicTags" v-for="tag in tagForm.dynamicTags"
:key="tag" :key="tag"
@ -67,9 +67,9 @@ export default {
}, },
computed: { computed: {
title() { title() {
let t = '新建实训'; let t = 'New practical training';
if (!this.isCreate) { if (!this.isCreate) {
t = '编辑实训'; t = 'Editing practice';
} }
return t; return t;
}, },
@ -77,9 +77,9 @@ export default {
const form = { const form = {
labelWidth: '90px', labelWidth: '90px',
items: [ items: [
{ prop: 'name', label: '名称', type: 'text' }, { prop: 'name', label: 'Name', type: 'text' },
{ prop: 'description', label: '描述', type: 'textarea' }, { prop: 'description', label: 'Description', type: 'textarea' },
{ prop: 'type', label: '类型', type: 'select', options: ConstConfig.ConstSelect.trainingType } { prop: 'type', label: 'Type', type: 'select', options: ConstConfig.ConstSelect.trainingType }
] ]
}; };
return form; return form;
@ -93,14 +93,14 @@ export default {
{ required: true, validator: this.validateDescription, trigger: 'blur' } { required: true, validator: this.validateDescription, trigger: 'blur' }
], ],
type: [ type: [
{ required: true, message: '请选择实训类型', trigger: 'blur' } { required: true, message: 'Please select a training type', trigger: 'blur' }
] ]
}; };
return crules; return crules;
}, },
formRules() { formRules() {
return { return {
client: [{ required: true, message: '请选择客户端', trigger: 'blur' }] client: [{ required: true, message: 'Select a client', trigger: 'blur' }]
}; };
} }
}, },
@ -125,7 +125,7 @@ export default {
validateName(rule, value, callback) { validateName(rule, value, callback) {
if (value.trim().length == 0) { if (value.trim().length == 0) {
this.formModel.name = this.formModel.name.replace(/\s/g, ''); this.formModel.name = this.formModel.name.replace(/\s/g, '');
return callback(new Error('请输入实训名称')); return callback(new Error('Please enter the training name'));
} else { } else {
return callback(); return callback();
} }
@ -133,7 +133,7 @@ export default {
validateDescription(rule, value, callback) { validateDescription(rule, value, callback) {
if (value.trim().length == 0) { if (value.trim().length == 0) {
this.formModel.description = this.formModel.description.replace(/\s/g, ''); this.formModel.description = this.formModel.description.replace(/\s/g, '');
return callback(new Error('请输入实训描述')); return callback(new Error('Please enter the training description'));
} else { } else {
return callback(); return callback();
} }
@ -167,18 +167,18 @@ export default {
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);
let api = updateTraining; let api = updateTraining;
let mes = '编辑'; let mes = 'Edit';
if (this.isCreate) { if (this.isCreate) {
api = createTraining; api = createTraining;
mes = '创建'; mes = 'Create';
} }
api(cpData).then(res => { api(cpData).then(res => {
this.$message.success(`${mes}实训成功`); this.$message.success(`${mes} practical training success`);
this.$emit('edit'); this.$emit('edit');
this.doClose(); this.doClose();
}).catch(err => { }).catch(err => {
this.$message.error('获取实训详情信息失败!'); this.$message.error('Failed to obtain training details!');
this.$message.error(`${mes}实训失败${err.message}`); this.$message.error(`${mes} training failure${err.message}`);
}); });
} }
}); });

View File

@ -2,7 +2,7 @@
<div id="designPane" class="editContent" :class="{'active': dialogVisible}" :style="{height: paneHeight + 'px'}"> <div id="designPane" class="editContent" :class="{'active': dialogVisible}" :style="{height: paneHeight + 'px'}">
<div class="editContentTab"> <div class="editContentTab">
<div class="editContentTabLable" @click="minisize"> <div class="editContentTabLable" @click="minisize">
<span class="titleStyle">实训设计</span> <span class="titleStyle">Practical training design</span>
</div> </div>
</div> </div>
<div v-show="showMode === 'draftTrainingList'"> <div v-show="showMode === 'draftTrainingList'">
@ -17,7 +17,7 @@
</div> </div>
<div v-show="showMode === 'editOperate'"> <div v-show="showMode === 'editOperate'">
<div class="editContentTitle" style="margin-top: 40px;"> <div class="editContentTitle" style="margin-top: 40px;">
<span>实训名称{{ editData.name || '' }}</span> <span>Name of practical training{{ editData.name || '' }}</span>
</div> </div>
<edit-operate ref="editOperate" @backDesignPane="backDesignPane" /> <edit-operate ref="editOperate" @backDesignPane="backDesignPane" />
</div> </div>
@ -32,7 +32,7 @@
</div> </div>
<div v-show="showMode === 'designPane'" class="editContentBox"> <div v-show="showMode === 'designPane'" class="editContentBox">
<div class="editContentTitle"> <div class="editContentTitle">
<span>实训名称{{ editData.name || '' }}</span> <span>Name of practical training{{ editData.name || '' }}</span>
</div> </div>
<div style="text-align: right;padding-right: 10px;"> <div style="text-align: right;padding-right: 10px;">
<el-button size="small" type="text" @click="editGradeRules(editData)">评分</el-button> <el-button size="small" type="text" @click="editGradeRules(editData)">评分</el-button>

View File

@ -1,10 +1,10 @@
<template> <template>
<div class="main"> <div class="main">
<div class="trainingHeader"> <div class="trainingHeader">
<div class="trainingList">实训草稿列表</div> <div class="trainingList">List of draft practical training</div>
</div> </div>
<div style="text-align: right;padding: 10px;margin-bottom: 10px;"> <div style="text-align: right;padding: 10px;margin-bottom: 10px;">
<el-button size="small" type="text" class="createScript" @click="handleCreate">新建</el-button> <el-button size="small" type="text" class="createScript" @click="handleCreate">Create</el-button>
</div> </div>
<QueryListPage <QueryListPage
ref="queryListPage" ref="queryListPage"
@ -58,15 +58,15 @@ export default {
selectCheckShow: false, selectCheckShow: false,
columns: [ columns: [
{ {
title: this.$t('trainingManage.name'), title: 'Name',
prop: 'name' prop: 'name'
}, },
{ {
title: this.$t('trainingManage.description'), title: 'Description',
prop: 'description' prop: 'description'
}, },
{ {
title: this.$t('trainingManage.type'), title: 'Type',
width: '70', width: '70',
prop: 'type', prop: 'type',
type: 'tag', type: 'tag',
@ -74,7 +74,7 @@ export default {
tagType: (row) => { return ''; } tagType: (row) => { return ''; }
}, },
{ {
title: this.$t('trainingManage.labelJson'), title: 'Tag',
width: '150', width: '150',
prop: 'labelJson', prop: 'labelJson',
type: 'tagMore', type: 'tagMore',
@ -83,47 +83,47 @@ export default {
}, },
{ {
type: 'button', type: 'button',
title: this.$t('trainingManage.operate'), title: 'Operate',
width: '300', width: '300',
buttons: [ buttons: [
{ {
name: this.$t('trainingManage.record'), name: 'Record',
handleClick: this.drawUp, handleClick: this.drawUp,
type: 'text', type: 'text',
showControl:(row) => { return row.id; } showControl:(row) => { return row.id; }
}, },
{ {
name: this.$t('trainingManage.modify'), name: 'Modify',
handleClick: this.handleModify, handleClick: this.handleModify,
type: 'text', type: 'text',
showControl:(row) => { return row.id; } showControl:(row) => { return row.id; }
}, },
{ {
name: this.$t('trainingManage.delete'), name: 'Delete',
handleClick: this.deleteScript, handleClick: this.deleteScript,
type: 'text', type: 'text',
showControl:(row) => { return row.id; } showControl:(row) => { return row.id; }
}, },
{ {
name: this.$t('trainingManage.publish'), name: 'Publish',
handleClick: this.publishScript, handleClick: this.publishScript,
type: 'text', type: 'text',
showControl:(row) => { return row.id; } showControl:(row) => { return row.id; }
}, },
{ {
name: this.$t('trainingManage.preview'), name: 'Preview',
handleClick: this.previewScript, handleClick: this.previewScript,
type: 'text', type: 'text',
showControl:(row) => { return row.id; } showControl:(row) => { return row.id; }
}, },
{ {
name: this.$t('trainingManage.gradeRules'), name: 'Grade Rules',
handleClick: this.gradeRules, handleClick: this.gradeRules,
type: 'text', type: 'text',
showControl:(row) => { return row.id; } showControl:(row) => { return row.id; }
}, },
{ {
name: this.$t('trainingManage.publishTrack'), name: 'Posting Tracks',
handleClick: this.publishTrack, handleClick: this.publishTrack,
type: 'text', type: 'text',
showControl:(row) => { return row.id; } showControl:(row) => { return row.id; }
@ -192,7 +192,7 @@ export default {
}, },
drawUp(index, row) { drawUp(index, row) {
if (this.trainingSwitch) { if (this.trainingSwitch) {
this.$message.error('请先结束当前实训再编制!'); this.$message.error('Please finish the current training before compiling!');
return; return;
} }
const qObj = {...this.$route.query}; const qObj = {...this.$route.query};
@ -210,12 +210,12 @@ export default {
}).catch((e) => { }).catch((e) => {
console.error(e); console.error(e);
this.$emit('updateDetails', {}); this.$emit('updateDetails', {});
this.$message.error('获取实训详情信息失败!'); this.$message.error('Failed to obtain training details!');
}); });
loadTrainingBg(this.$route.query.group, row.id).then(resp => { loadTrainingBg(this.$route.query.group, row.id).then(resp => {
console.log('加载草稿实训背景', resp); console.log('Load the draft training background', resp);
}).catch(() => { }).catch(() => {
this.$message.error('加载草稿实训背景失败!'); this.$message.error('Failed to load draft training background!');
}); });
}, },
handleModify(index, row) { handleModify(index, row) {
@ -225,33 +225,33 @@ export default {
}, },
deleteScript(index, row) { deleteScript(index, row) {
console.log('删除', index, row); console.log('删除', index, row);
this.$confirm('确定删除该条实训数据?', '警告', { this.$confirm('Confirm to delete the training data?', 'Warning', {
confirmButtonText: '确定', confirmButtonText: 'Confirm',
cancelButtonText: '取消', cancelButtonText: 'Cancel',
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
if (!row.id) { return; } if (!row.id) { return; }
deleteTraining([row.id]).then(res => { deleteTraining([row.id]).then(res => {
console.log('删除实训成功', res); console.log('Deleted training successfully', res);
this.getListData(); this.getListData();
}).catch(err => { }).catch(err => {
console.log('删除实训失败', err); console.log('Failed to delete the training', err);
this.getListData(); this.getListData();
}); });
}).catch(e => {}); }).catch(e => {});
}, },
publishScript(index, row) { publishScript(index, row) {
console.log('发布', index, row); console.log('发布', index, row);
this.$prompt('请输入发布后名称', '提示', this.$prompt('Please enter a post-publication name', 'Hint',
{ {
confirmButtonText: '确定', confirmButtonText: 'Confirm',
cancelButtonText: '取消', cancelButtonText: 'Cancel',
type: 'warning', type: 'warning',
inputValue: row.name, inputValue: row.name,
inputErrorMessage: '输入不能为空', inputErrorMessage: 'The input cannot be empty',
inputValidator: (value) => { inputValidator: (value) => {
if (!value) { if (!value) {
return '输入不能为空'; return 'The input cannot be empty';
} }
} }
@ -259,17 +259,17 @@ export default {
if (!row.id || !suc.value) { return; } if (!row.id || !suc.value) { return; }
publishTraining({draftId: row.id, reName: suc.value}).then(res => { publishTraining({draftId: row.id, reName: suc.value}).then(res => {
console.log('发布实训成功', res); console.log('发布实训成功', res);
this.$message.success('发布实训成功!'); this.$message.success('Published practical training success!');
}).catch(err => { }).catch(err => {
console.log('发布实训失败', err); console.log('发布实训失败', err);
this.$message.error(`发布实训失败!${err.message}`); this.$message.error(`Failed to release practical training!${err.message}`);
}); });
}); });
}, },
async previewScript(index, data) { async previewScript(index, data) {
console.log('预览', index, data); console.log('预览', index, data);
if (this.trainingSwitch) { if (this.trainingSwitch) {
this.$message.error('请先结束当前实训后再加载新的实训!'); this.$message.error('Please finish the current training before loading the new training!');
return; return;
} }
const qObj = {...this.$route.query}; const qObj = {...this.$route.query};
@ -294,10 +294,10 @@ export default {
this.$emit('closeAllDialog'); this.$emit('closeAllDialog');
this.$store.dispatch('trainingNew/setTrainingDetail', detailResp.data); this.$store.dispatch('trainingNew/setTrainingDetail', detailResp.data);
await loadDraftTraining(this.group, data.id, {mode: this.teachMode}); await loadDraftTraining(this.group, data.id, {mode: this.teachMode});
this.$message.success('加载实训成功!'); this.$message.success('The loading training is successful!');
} catch (e) { } catch (e) {
console.error('ceshi', e); console.error('ceshi', e);
this.$message.error(`加载实训失败!${e.message}`); this.$message.error(`Failed to load training!${e.message}`);
} }
}, },
// //

View File

@ -1,6 +1,6 @@
<template> <template>
<el-dialog <el-dialog
title="角色扮演" title="Role play"
:visible.sync="dialogVisible" :visible.sync="dialogVisible"
width="30%" width="30%"
append-to-body append-to-body
@ -10,7 +10,7 @@
<template v-for="user in userList"> <template v-for="user in userList">
<div :key="user.id" style="display: flex;justify-content: space-between;"> <div :key="user.id" style="display: flex;justify-content: space-between;">
<div>{{ user.nickName }}</div> <div>{{ user.nickName }}</div>
<el-select v-model="user.memberId" size="mini" placeholder="请选择"> <el-select v-model="user.memberId" size="mini" placeholder="Please select">
<el-option <el-option
v-for="item in roleList" v-for="item in roleList"
:key="item.id" :key="item.id"
@ -21,8 +21,8 @@
</div> </div>
</template> </template>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"></el-button> <el-button @click="dialogVisible = false">Cancel</el-button>
<el-button type="primary" @click="commit"></el-button> <el-button type="primary" @click="commit">Confirm</el-button>
</span> </span>
</el-dialog> </el-dialog>
</template> </template>
@ -91,7 +91,7 @@ export default {
this.$emit('startTraining'); this.$emit('startTraining');
this.doClose(); this.doClose();
}).catch(() => { }).catch(() => {
this.$message.error('扮演角色失败!'); this.$message.error('Role-playing failure!');
}); });
} }
} }

View File

@ -1,18 +1,18 @@
<template> <template>
<el-dialog <el-dialog
title="测试成绩" title="Test score"
:visible.sync="dialogVisible" :visible.sync="dialogVisible"
width="30%" width="30%"
append-to-body append-to-body
:before-close="handleClose" :before-close="handleClose"
> >
<el-table :data="tableData" border show-summary style="width: 100%"> <el-table :data="tableData" border show-summary style="width: 100%">
<el-table-column prop="desc" label="步骤" /> <el-table-column prop="desc" label="Step" />
<el-table-column prop="totalScore" label="总分" width="100" /> <el-table-column prop="totalScore" label="Total score" width="100" />
<el-table-column prop="score" label="得分" width="100" /> <el-table-column prop="score" label="Score" width="100" />
</el-table> </el-table>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button type="primary" @click="dialogVisible = false"></el-button> <el-button type="primary" @click="dialogVisible = false">Confirm</el-button>
</span> </span>
</el-dialog> </el-dialog>
</template> </template>

View File

@ -1,7 +1,7 @@
<template> <template>
<div id="leftSlider" class="left-slider"> <div id="leftSlider" class="left-slider">
<div class="tip-title"> <div class="tip-title">
<span>实训列表</span> <span>List of practical exercises</span>
</div> </div>
<div class="handleShow"> <div class="handleShow">
<span v-if="!show" class="el-icon-arrow-left" style="cursor:pointer" @click="handleSliderShow(false)" /> <span v-if="!show" class="el-icon-arrow-left" style="cursor:pointer" @click="handleSliderShow(false)" />
@ -60,7 +60,7 @@ export default {
const data = {mapId: this.mapId, type: trainingType.toLowerCase()}; const data = {mapId: this.mapId, type: trainingType.toLowerCase()};
if (this.$route.query.labels) { if (this.$route.query.labels) {
const labels = this.$route.query.labels.split('-'); const labels = this.$route.query.labels.split('-');
const labelMap = { loc: '现地', dis: '行调', section: '区段', signal: '信号机', switch: '道岔', stand: '站台', station: '车站', control: '控制权' }; const labelMap = { loc: 'Local', dis: 'Dispatch', section: 'Section', signal: 'Signal', switch: 'Switch', stand: 'Stand', station: 'Station', control: 'Control' };
const newLabels = []; const newLabels = [];
labels.forEach(item => newLabels.push(labelMap[item])); labels.forEach(item => newLabels.push(labelMap[item]));
data.labels = newLabels; data.labels = newLabels;
@ -85,7 +85,7 @@ export default {
}, },
async loadScript(training) { async loadScript(training) {
if (this.trainingSwitch) { if (this.trainingSwitch) {
this.$message.error('请先结束当前实训后再加载新的实训!'); this.$message.error('Please finish the current training before loading the new training!');
return; return;
} }
try { try {
@ -97,9 +97,9 @@ export default {
} }
this.$store.dispatch('trainingNew/setTrainingDetail', detailResp.data); this.$store.dispatch('trainingNew/setTrainingDetail', detailResp.data);
await loadPublishTraining(this.group, training.id, {mode: ''}); await loadPublishTraining(this.group, training.id, {mode: ''});
this.$message.success('加载实训成功!'); this.$message.success('The loading training is successful!');
} catch (e) { } catch (e) {
this.$message.error('加载实训失败!'); this.$message.error('Failed to load training!');
} }
} }
} }

View File

@ -24,32 +24,32 @@
<span class="list-elem">{{ trainingDetail ?trainingDetail.name:'' }}</span> <span class="list-elem">{{ trainingDetail ?trainingDetail.name:'' }}</span>
</p> </p>
<p class="list-item"> <p class="list-item">
<span class="list-label">实训模式</span> <span class="list-label">Mode of practical training</span>
<span class="list-elem"> <span class="list-elem">
<el-radio-group v-model="demoMode" :disabled="trainingSwitch" class="mode" size="small" @change="changeMode"> <el-radio-group v-model="demoMode" :disabled="trainingSwitch" class="mode" size="small" @change="changeMode">
<el-radio :label="TrainingMode.TEACH" border>{{ $t('display.lesson.teachingMode') }}</el-radio> <el-radio :label="TrainingMode.TEACH" border>Teaching mode</el-radio>
<el-radio :label="TrainingMode.PRACTICE" border>{{ $t('display.lesson.practiceMode') }}</el-radio> <el-radio :label="TrainingMode.PRACTICE" border>Exercise mode</el-radio>
<el-radio :label="TrainingMode.TEST" border>{{ $t('display.lesson.testMode') }}</el-radio> <el-radio :label="TrainingMode.TEST" border>Quiz mode</el-radio>
</el-radio-group> </el-radio-group>
</span> </span>
</p> </p>
<p class="list-item"> <p class="list-item">
<span class="list-label" style="vertical-align: top;"> {{ $t('display.training.trainingInstructions') }}</span> <span class="list-label" style="vertical-align: top;"> Practical training description</span>
<span class="list-elem elem-span">{{ trainingDetail ?trainingDetail.description:'' }}</span> <span class="list-elem elem-span">{{ trainingDetail ?trainingDetail.description:'' }}</span>
</p> </p>
<p class="list-item"> <p class="list-item">
<span class="list-label">操作按钮</span> <span class="list-label">Operation buttons</span>
<span class="list-elem"> <span class="list-elem">
<el-button v-if="!trainingSwitch && trainingDetail" size="small" type="success" @click="handlerStart">开始</el-button> <el-button v-if="!trainingSwitch && trainingDetail" size="small" type="success" @click="handlerStart">Start</el-button>
<el-button v-if="trainingSwitch" size="small" type="danger" @click="handlerEnd">结束</el-button> <el-button v-if="trainingSwitch" size="small" type="danger" @click="handlerEnd">Over</el-button>
</span> </span>
</p> </p>
<p class="list-item"> <p class="list-item">
<span class="list-label"> </span> <span class="list-label">Previous question:</span>
<span class="list-elem elem-span training-box" @click="loadTraining(previousTraining)">{{ previousTraining? previousTraining.name: '' }}</span> <span class="list-elem elem-span training-box" @click="loadTraining(previousTraining)">{{ previousTraining? previousTraining.name: '' }}</span>
</p> </p>
<p class="list-item"> <p class="list-item">
<span class="list-label"> </span> <span class="list-label">Next question:</span>
<span class="list-elem elem-span training-box" @click="loadTraining(nextTraining)">{{ nextTraining? nextTraining.name:'' }}</span> <span class="list-elem elem-span training-box" @click="loadTraining(nextTraining)">{{ nextTraining? nextTraining.name:'' }}</span>
</p> </p>
</el-scrollbar> </el-scrollbar>
@ -161,7 +161,7 @@ export default {
startTraining(this.group, {mode: this.demoMode}).then(() => { startTraining(this.group, {mode: this.demoMode}).then(() => {
this.$store.dispatch('trainingNew/trainingStart'); this.$store.dispatch('trainingNew/trainingStart');
}).catch(() => { }).catch(() => {
this.$message.error('开始实训失败!'); this.$message.error('The beginning of practical training failed!');
}); });
}, },
handlerEnd() { handlerEnd() {
@ -174,7 +174,7 @@ export default {
endTraining(this.group, scoreList).then((resp) => { endTraining(this.group, scoreList).then((resp) => {
this.$store.dispatch('trainingNew/trainingEnd'); this.$store.dispatch('trainingNew/trainingEnd');
}).catch(() => { }).catch(() => {
this.$message.error('结束实训失败!'); this.$message.error('Failed to complete the training!');
}); });
}, },
trainingListShow() { trainingListShow() {
@ -182,7 +182,7 @@ export default {
}, },
async loadTraining(training) { async loadTraining(training) {
if (this.trainingSwitch) { if (this.trainingSwitch) {
this.$message.error('请先结束当前实训后再加载新的实训!'); this.$message.error('Please finish the current training before loading the new training!');
return; return;
} }
try { try {
@ -194,9 +194,9 @@ export default {
} }
this.$store.dispatch('trainingNew/setTrainingDetail', detailResp.data); this.$store.dispatch('trainingNew/setTrainingDetail', detailResp.data);
await loadPublishTraining(this.group, training.id, {mode: ''}); await loadPublishTraining(this.group, training.id, {mode: ''});
this.$message.success('加载实训成功!'); this.$message.success('The loading training is successful!');
} catch (e) { } catch (e) {
this.$message.error('加载实训失败!'); this.$message.error('Failed to load training!');
} }
} }
} }

View File

@ -38,7 +38,7 @@ export default {
}, },
'$store.state.socket.trainingOverCount': function(val) { '$store.state.socket.trainingOverCount': function(val) {
if (this.teachMode === ScriptMode.TEACH || this.teachMode === ScriptMode.PRACTICE) { if (this.teachMode === ScriptMode.TEACH || this.teachMode === ScriptMode.PRACTICE) {
this.trainingTipMessage = '实训完成,请点击结束按钮。'; this.trainingTipMessage = 'After the training, please click the end button.';
} }
}, },
'$store.state.trainingNew.operateErrMsg': function (val) { '$store.state.trainingNew.operateErrMsg': function (val) {
@ -50,7 +50,7 @@ export default {
if (opt && opt.hasOwnProperty('color') && opt.hasOwnProperty('message')) { if (opt && opt.hasOwnProperty('color') && opt.hasOwnProperty('message')) {
const h = this.$createElement; const h = this.$createElement;
this.$notify({ this.$notify({
title: this.$t('global.tips'), title: 'Tip',
message: h('i', { style: 'color:' + opt.color }, opt.message) message: h('i', { style: 'color:' + opt.color }, opt.message)
}); });
} }