大铁 路票调整

This commit is contained in:
fan 2022-06-29 15:57:24 +08:00
parent ebb204c475
commit 21e8785ecb
13 changed files with 550 additions and 303 deletions

View File

@ -618,6 +618,16 @@ export const menuOperate = {
operation: OperationEvent.CTCCommand.setRoute.menu.operation, operation: OperationEvent.CTCCommand.setRoute.menu.operation,
cmdType: CMD.CTC.CTC_SET_ROUTE cmdType: CMD.CTC.CTC_SET_ROUTE
} }
},
Rail: {
railFillInTicket: {
operation: OperationEvent.RailCommand.railFillInTicket.menu.operation,
cmdType: CMD.RAIL.CMD_RAIL_FILL_IN_TICKET
},
railQueryTicket: {
operation: OperationEvent.RailCommand.railQueryTicket.menu.operation,
cmdType: CMD.RAIL.CMD_RAIL_QUERY_TICKET
}
} }
}; };
@ -656,11 +666,11 @@ export function commitOperate(operate, paramList, over, fillStep = {}) {
Object.assign(step, fillStep); Object.assign(step, fillStep);
return new Promise(function(resolve, reject) { return new Promise(function(resolve, reject) {
store.dispatch('training/nextNew', step).then(({ valid }) => { store.dispatch('training/nextNew', step).then(({ valid, response }) => {
if (valid) { if (valid) {
store.dispatch('menuOperation/handleBreakFlag', { break: true }); store.dispatch('menuOperation/handleBreakFlag', { break: true });
} }
resolve({ valid: valid, operate: {...step} }); resolve({ valid: valid, response: response, operate: {...step} });
}).catch(error=>{ }).catch(error=>{
reject(error); reject(error);
}); });

View File

@ -193,7 +193,6 @@ export default {
} }
}, },
mounted() { mounted() {
console.log(this.$store.state.training.prdType === '02', this.$store.state.training.prdType, this.isShowBar, this.title);
this.$nextTick(() => { this.$nextTick(() => {
this.$store.dispatch('config/updateMenuBar'); this.$store.dispatch('config/updateMenuBar');
const _that = this; const _that = this;

View File

@ -117,7 +117,8 @@ export default {
{ label: '司机', value: 'Driver' }, { label: '司机', value: 'Driver' },
{ label: '列车', value: 'Train' }, { label: '列车', value: 'Train' },
{ label: '方向杆', value: 'DirectionRod'}, { label: '方向杆', value: 'DirectionRod'},
{ label: 'CTC', value: 'CTC' } { label: 'CTC', value: 'CTC' },
{ label: '路票', value: 'RAIL' }
], ],
simulationDeviceList:[ simulationDeviceList:[
@ -242,13 +243,13 @@ export default {
{ label: '自动换端', value: 'AUTO' }, { label: '自动换端', value: 'AUTO' },
{ label: '无人折返', value: 'UNMANNED' } { label: '无人折返', value: 'UNMANNED' }
], ],
directionLabelList: [ directionLabelList: [
{ label: 'X', value: 'X' }, { label: 'X', value: 'X' },
{ label: 'XF', value: 'XF' }, { label: 'XF', value: 'XF' },
{ label: 'XD', value: 'XD' }, { label: 'XD', value: 'XD' },
{ label: 'S', value: 'S' }, { label: 'S', value: 'S' },
{ label: 'SF', value: 'SF' }, { label: 'SF', value: 'SF' },
{ label: 'SD', value: 'SD' } { label: 'SD', value: 'SD' }
] ]
} }
}; };

View File

@ -406,5 +406,9 @@ export default {
CTC_REMOVE_RUN_PLAN_FROM_EDIT_AREA:{value: 'CTC_REMOVE_RUN_PLAN_FROM_EDIT_AREA', label: '删除列车固定径路'}, CTC_REMOVE_RUN_PLAN_FROM_EDIT_AREA:{value: 'CTC_REMOVE_RUN_PLAN_FROM_EDIT_AREA', label: '删除列车固定径路'},
CTC_RELEASE_RUN_PLAN_TO_SIMULATION:{value: 'CTC_RELEASE_RUN_PLAN_TO_SIMULATION', label: '运行计划发布至CTC'}, CTC_RELEASE_RUN_PLAN_TO_SIMULATION:{value: 'CTC_RELEASE_RUN_PLAN_TO_SIMULATION', label: '运行计划发布至CTC'},
CTC_SET_ROUTE:{value: 'CTC_SET_ROUTE', label: 'CTC办理进路'} CTC_SET_ROUTE:{value: 'CTC_SET_ROUTE', label: 'CTC办理进路'}
},
RAIL: {
CMD_RAIL_FILL_IN_TICKET: {value: 'RAIL_FILL_IN_TICKET', label: '填写票据'},
CMD_RAIL_QUERY_TICKET: {value: 'RAIL_QUERY_TICKET', label: '查询票据'}
} }
}; };

View File

@ -3786,6 +3786,20 @@ export const OperationEvent = {
domId: '_Tips-CTC-setRoute-Menu{TOP}' domId: '_Tips-CTC-setRoute-Menu{TOP}'
} }
} }
},
RailCommand: {
railFillInTicket: {
menu: {
operation: '1201',
domId: '_Tips-Rail-railFillInTicket-Menu{TOP}'
}
},
railQueryTicket: {
menu: {
operation: '1202',
domId: '_Tips-Rail-railQueryTicket'
}
}
} }
}; };

View File

@ -238,8 +238,8 @@ const map = {
activeTrainListChange: 0, // 当前按计划行车的列车列表变化标识只对列车的groupNumber进行了检测 activeTrainListChange: 0, // 当前按计划行车的列车列表变化标识只对列车的groupNumber进行了检测
activeTrainList: [], // 当前按计划行车的列车列表 activeTrainList: [], // 当前按计划行车的列车列表
showCentralizedStationCode: '', // 现地分集中站显示(集中站code) showCentralizedStationCode: '', // 现地分集中站显示(集中站code)
stationSGuideMasterLock: false, stationSGuideMasterLock: false,
stationXGuideMasterLock: false, stationXGuideMasterLock: false,
showCentralizedStationNum: 0, // 现地分集中站显示判断 showCentralizedStationNum: 0, // 现地分集中站显示判断
overlapList: [], // 延续保护list overlapList: [], // 延续保护list
overlapData: {}, // 延续保护数据 overlapData: {}, // 延续保护数据
@ -696,18 +696,18 @@ const map = {
return flag; return flag;
} }
}, },
checkStationGuideMaster: state => (stationCode,sGuideMasterLock,xGuideMasterLock) => { checkStationGuideMaster: state => (stationCode, sGuideMasterLock, xGuideMasterLock) => {
if (state.showCentralizedStationCode === stationCode) { if (state.showCentralizedStationCode === stationCode) {
state.stationSGuideMasterLock = sGuideMasterLock; state.stationSGuideMasterLock = sGuideMasterLock;
state.stationXGuideMasterLock = xGuideMasterLock; state.stationXGuideMasterLock = xGuideMasterLock;
} }
}, },
checkDeviceShow: state => deviceCode => { checkDeviceShow: state => deviceCode => {
if (state.map && state.map.displayList && state.map.displayList.length && store.state.training.prdType) { if (state.map && state.map.displayList && state.map.displayList.length && store.state.training.prdType) {
let flag = false; let flag = false;
const stationCode = state.showCentralizedStationCode; const stationCode = state.showCentralizedStationCode;
state.map.displayList.forEach(item => { state.map.displayList.forEach(item => {
if ( if (
store.state.training.prdType === '01' && store.state.training.prdType === '01' &&
item.type === 'LOCAL' && item.type === 'LOCAL' &&
((item.stationCodeList.includes(stationCode) && item.elementList.includes(deviceCode)) || !stationCode) ((item.stationCodeList.includes(stationCode) && item.elementList.includes(deviceCode)) || !stationCode)

View File

@ -450,6 +450,7 @@ const training = {
rtn && rtn.valid && commit('next'); rtn && rtn.valid && commit('next');
} }
} }
console.log(rtn, '*********');
resolve(rtn); resolve(rtn);
}).catch(error => { }).catch(error => {
// console.error(error); // console.error(error);

View File

@ -1,283 +0,0 @@
<template>
<el-dialog
title="路票"
:visible="trainTicketShow"
width="640px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
center
>
<div>
<div style="display: flex;align-items: center;">
<div>附件类型</div>
<el-select v-model="attachmentType" size="small" placeholder="请选择">
<el-option
v-for="item in typeList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</div>
<div v-if="attachmentType === 'trainTicket'" style="border: 1px solid #000000;margin-top: 20px;padding: 20px;">
<div style="text-align: center;font-size: 28px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
<div style="display: flex;justify-content: center;align-items: center;font-size: 18px;margin-top: 10px;">
<div>电话记录&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
<el-input v-model="phoneRecords" size="mini" style="width: 80px;" />
<div></div>
</div>
<div style="display: flex;justify-content: center;align-items: center;font-size: 18px;margin-top: 10px;">
<div style="margin-left: 80px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
<el-input v-model="trainCode" size="mini" style="width: 80px;" />
</div>
<div style="display: flex; justify-content: center;font-size: 40px;font-weight: bolder;margin-top: 25px">
<div>延安</div>
<svg-icon icon-class="arrow" style="width: 100px" />
<div>延安北</div>
</div>
<div style="display: flex; justify-content: space-between;font-size: 18px;margin-top: 25px;margin-bottom: 25px;">
<div style="margin-left: 50px;">延安站站名印</div>
<div>编号 123456</div>
</div>
</div>
<div v-if="attachmentType === 'trainTicket'" style="border: 1px solid #000000;margin-top: 20px;padding: 20px;">
<div style="text-align: center;font-size: 28px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
<div style="display: flex;justify-content: center;align-items: center;font-size: 18px;margin-top: 10px;">
<div>电话记录&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
<el-input v-model="phoneRecords" size="mini" style="width: 80px;" />
<div></div>
</div>
<div style="display: flex;justify-content: center;align-items: center;font-size: 18px;margin-top: 10px;">
<div style="margin-left: 80px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
<el-input v-model="trainCode" size="mini" style="width: 80px;" />
</div>
<div style="display: flex; justify-content: center;font-size: 40px;font-weight: bolder;margin-top: 25px">
<div>延安北</div>
<svg-icon icon-class="arrow" style="width: 100px" />
<div>延安</div>
</div>
<div style="display: flex; justify-content: space-between;font-size: 18px;margin-top: 25px;margin-bottom: 25px;">
<div style="margin-left: 50px;">延安站站名印</div>
<div>编号 123456</div>
</div>
</div>
<div v-else-if="attachmentType === 'greenLicense'" style="border: 1px solid #000000;margin-top: 20px;padding: 20px;">
<div style="text-align: center;font-size: 28px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
<div style="font-size: 14px;margin-top: 15px;display: flex;align-items: center;margin-bottom: 20px;justify-content: end;">
<div></div>
<el-input v-model="hao" size="small" style="width: 80px;" />
<div style="margin-right: 20px;"></div>
</div>
<div style="font-size: 16px;margin-top: 20px;text-indent:36px;">
<span>在出站进路信号机故障未设出站信号机列车头部越过出站进路信号机的情况下准许第</span>
<el-input v-model="trainCode" style="display: inline;" size="small" class="inline-input" />
<span>次列车由</span>
<el-input v-model="line" style="display: inline;" size="small" class="inline-input" />
<span>线上发车</span>
</div>
<div style="font-size: 16px;margin-top: 60px;display: flex;align-items: center;justify-content: end;">
<div>站名印车站值班员签名</div>
<el-input v-model="signName" size="small" style="width: 80px;" />
</div>
<div style="font-size: 16px;margin-top: 15px;display: flex;align-items: center;margin-bottom: 10px;justify-content: end;">
<el-input v-model="years" size="small" style="width: 80px;" />
<div></div>
<el-input v-model="months" size="small" style="width: 80px;" />
<div></div>
<el-input v-model="days" size="small" style="width: 80px;" />
<div>日填发</div>
</div>
</div>
<div v-else-if="attachmentType === 'redLicense'" style="border: 1px solid #000000;margin-top: 20px;padding: 20px;">
<div style="text-align: center;font-size: 28px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
<div style="font-size: 14px;margin-top: 15px;display: flex;align-items: center;margin-bottom: 20px;justify-content: end;">
<div></div>
<el-input v-model="hao" size="small" style="width: 80px;" />
<div style="margin-right: 20px;"></div>
</div>
<div style="font-size: 16px;margin-top: 10px;text-indent:36px;">
<span>现在一切电话中断准许第</span>
<el-input v-model="trainCode" style="display: inline;" size="small" class="inline-input" />
<span>次列车自</span>
<el-input v-model="stationName" style="display: inline;" size="small" class="inline-input" />
<span>站至</span>
<el-input v-model="nextStationName" style="display: inline;" size="small" class="inline-input" />
<span>本列车前于</span>
<el-input v-model="hours" style="display: inline;" size="small" class="inline-input" />
<span></span>
<el-input v-model="minutes" style="display: inline;" size="small" class="inline-input" />
<span>分发出的第</span>
<el-input v-model="trainCode" style="display: inline;" size="small" class="inline-input" />
<span>次列车邻站到达通知</span>
<el-checkbox v-model="receive" style="text-indent: 0;">收到</el-checkbox>
</div>
<div style="text-align: center;font-size: 28px;margin-top: 10px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
<div style="font-size: 16px;margin-top: 10px;text-indent: 36px;">
<span>1.</span>
<el-input v-model="trainCode" style="display: inline;" size="small" class="inline-input" />
<span>次列车到达你站后准接你站发出的列车</span>
</div>
<div style="font-size: 16px;margin-top: 10px;text-indent: 36px;">
<span>2.</span>
<el-input v-model="hours" style="display: inline;" size="small" class="inline-input" />
<span></span>
<el-input v-model="minutes" style="display: inline;" size="small" class="inline-input" />
<span>分发出第</span>
<el-input v-model="trainCode" style="display: inline;" size="small" class="inline-input" />
<span>次列车并于</span>
<el-input v-model="hours" style="display: inline;" size="small" class="inline-input" />
<span></span>
<el-input v-model="minutes" style="display: inline;" size="small" class="inline-input" />
<span>分再发出第</span>
<el-input v-model="trainCode" style="display: inline;" size="small" class="inline-input" />
<span>次列车</span>
</div>
<div style="font-size: 16px;margin-top: 60px;display: flex;align-items: center;justify-content: end;">
<div>站名印车站值班员签名</div>
<el-input v-model="signName" size="small" style="width: 80px;" />
</div>
<div style="font-size: 16px;margin-top: 15px;display: flex;align-items: center;margin-bottom: 10px;justify-content: end;">
<el-input v-model="years" size="small" style="width: 80px;" />
<div></div>
<el-input v-model="months" size="small" style="width: 80px;" />
<div></div>
<el-input v-model="days" size="small" style="width: 80px;" />
<div>日填发</div>
</div>
</div>
<div v-else-if="attachmentType === 'dispatchingCommand'" style="margin-top: 20px;padding: 20px;">
<div style="text-align: center;font-size: 28px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
<div style="margin-top: 10px;display: flex;align-items: center;justify-content: end;">
<el-input v-model="years" size="small" style="width: 80px;" />
<div></div>
<el-input v-model="months" size="small" style="width: 80px;" />
<div></div>
<el-input v-model="days" size="small" style="width: 80px;" />
<div></div>
<el-input v-model="hours" size="small" style="width: 80px;" />
<div></div>
<el-input v-model="minutes" size="small" style="width: 80px;" />
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
<el-input v-model="days" size="small" style="width: 80px;" />
<div></div>
</div>
<div style="border: 1px solid #000;display: flex;align-items: center;margin-top: 10px;">
<div style="border-right: 1px solid #000;width: 25%;text-align: center;height: 40px;line-height: 40px;">受令处所</div>
<div style="width: 25%;border-right: 1px solid #000;"><el-input v-model="shouingchusuo" /></div>
<div style="border-right: 1px solid #000;width: 25%;text-align: center;height: 40px;line-height: 40px;">调度员姓名</div>
<div style="width: 25%;"><el-input v-model="dispatcherName" /></div>
</div>
<div style="border-right: 1px solid #000;border-left: 1px solid #000;display: flex;border-bottom: 1px solid #000;">
<div style="border-right: 1px solid #000;width: 25%;text-align: center;height: 96px;line-height: 96px;">内容</div>
<div style="width: 75%;">
<el-input
v-model="content"
type="textarea"
:rows="4"
placeholder="请输入内容"
/>
</div>
</div>
<div style="margin-top: 10px;display: flex;justify-content: end;align-items: center;">
<div>受令车站</div>
<el-input v-model="shouLingStation" size="small" style="width: 80px;" />
<div>车站值班员</div>
<el-input v-model="stationWatchman" size="small" style="width: 80px;" />
</div>
</div>
<div v-else-if="attachmentType === 'shuntNotice'" style="border: 1px solid #000;margin-top: 20px;padding: 20px;">
<div style="text-align: center;font-size: 28px;">出站/跟踪调车通知书</div>
<div style="text-indent: 36px;font-size: 16px;">
<span>对方站承认的号码第</span>
<el-input v-model="hao" size="small" class="inline-input" style="display: inline;" />
<span>准许自/</span>
<el-input v-model="hours" size="small" class="inline-input" style="display: inline;" />
<span></span>
<el-input v-model="minutes" size="small" class="inline-input" style="display: inline;" />
<span>分起/</span>
<el-input v-model="trainCode" size="small" class="inline-input" style="display: inline;" />
<span>机车由车站向</span>
<el-input v-model="qujian" size="small" class="inline-input" style="display: inline;" />
<span>区间出战/跟踪调车</span>
</div>
<div style="font-size: 16px;margin-top: 60px;display: flex;align-items: center;justify-content: end;">
<div>站名印车站值班扳道签名</div>
<el-input v-model="signName" size="small" style="width: 80px;" />
</div>
<div style="font-size: 16px;margin-top: 15px;display: flex;align-items: center;margin-bottom: 10px;justify-content: end;">
<el-input v-model="years" size="small" style="width: 80px;" />
<div></div>
<el-input v-model="months" size="small" style="width: 80px;" />
<div></div>
<el-input v-model="days" size="small" style="width: 80px;" />
<div>日填发</div>
</div>
</div>
<div v-else-if="attachmentType === 'lightVehicleManual'" style="border: 1px solid #000;margin-top: 20px;padding: 20px;">
<div style="text-align: center;font-size: 28px;"> 使 </div>
<div style="display: flex;align-items: center;">
</div>
</div>
</div>
</el-dialog>
</template>
<script>
export default {
name: 'TrainTicket',
data() {
return {
trainTicketShow: false,
attachmentType: 'trainTicket',
phoneRecords: '',
trainCode: '',
line: '',
signName: '',
years: '',
months: '',
days: '',
hao: '',
hours: '',
minutes: '',
stationName: '',
nextStationName: '',
receive: '',
shouingchusuo: '',
dispatcherName: '',
content: '',
shouLingStation: '',
stationWatchman: '',
qujian: '',
typeList: [
{label: '附件1路票', value: 'trainTicket'},
{label: '附件2绿色许可证', value: 'greenLicense'},
{label: '附件3红色许可证', value: 'redLicense'},
{label: '附件4调度命令', value: 'dispatchingCommand'},
{label: '附件5出站/跟踪调车通知书', value: 'shuntNotice'},
{label: '附近6轻型车辆使用书', value: 'lightVehicleManual'},
{label: '附件7调度命令登记簿', value: 'commandRegister'},
{label: '附件8书面通知', value: 'writtenNotice'},
{label: '附件9半自动闭塞发车进路通知书', value: 'departureNotice'}
]
};
},
methods: {
doClose() {
this.trainTicketShow = false;
},
doShow() {
this.trainTicketShow = true;
}
}
};
</script>
<style scoped>
/deep/.inline-input .el-input__inner{
width: 80px;
}
</style>

View File

@ -14,7 +14,7 @@
</el-select> </el-select>
<el-button-group> <el-button-group>
<el-button v-if="userRole=== 'STATION_SUPERVISOR'&&$route.query.lineCode ==='16'" size="small" @click="goCtc">CTC</el-button> <el-button v-if="userRole=== 'STATION_SUPERVISOR'&&$route.query.lineCode ==='16'" size="small" @click="goCtc">CTC</el-button>
<el-button v-if="$route.query.lineCode ==='16'" size="small" @click="showTrainTicket">路票</el-button> <el-button v-if="$route.query.lineCode ==='16'&&$store.state.training.prdType === '01'" size="small" @click="showTrainTicket">路票</el-button>
<el-button v-if="showDispatcherStation" size="small" @click="changeShowMap">调度台</el-button> <el-button v-if="showDispatcherStation" size="small" @click="changeShowMap">调度台</el-button>
<el-button v-if="userRole=== 'STATION_SUPERVISOR' && !$route.query.projectDevice && $route.query.lineCode!='08'" size="small" @click="goIbp">IBP盘</el-button> <el-button v-if="userRole=== 'STATION_SUPERVISOR' && !$route.query.projectDevice && $route.query.lineCode!='08'" size="small" @click="goIbp">IBP盘</el-button>
<el-button v-if="userRole=== 'DISPATCHER' && !$route.query.projectDevice && hasBigScreen" size="small" @click="goBigScreen">大屏</el-button> <el-button v-if="userRole=== 'DISPATCHER' && !$route.query.projectDevice && hasBigScreen" size="small" @click="goBigScreen">大屏</el-button>
@ -49,7 +49,7 @@ import { EventBus } from '@/scripts/event-bus';
import { timesSpeedPlayback } from '@/api/rtSimulation'; import { timesSpeedPlayback } from '@/api/rtSimulation';
import { queryHasIscs } from '@/api/iscs'; import { queryHasIscs } from '@/api/iscs';
import { getToken } from '@/utils/auth'; import { getToken } from '@/utils/auth';
import TrainTicket from '../displayNew/trainTicket'; import TrainTicket from '../trainTicket/index';
export default { export default {
name: 'MenuDemonSchema', name: 'MenuDemonSchema',
components:{ components:{

View File

@ -0,0 +1,64 @@
<template>
<div style="border: 1px solid #000000;margin-top: 20px;padding: 20px;">
<div style="text-align: center;font-size: 28px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
<div style="font-size: 14px;margin-top: 15px;display: flex;align-items: center;margin-bottom: 20px;justify-content: end;">
<div></div>
<el-input v-model="greenLicenseForm.number" size="small" :disabled="switchFlag" style="width: 80px;" />
<div style="margin-right: 20px;"></div>
</div>
<div style="font-size: 16px;margin-top: 20px;">
<span style="margin-left: 36px;"></span>
<el-radio-group v-model="greenLicenseForm.reason" :disabled="switchFlag" style="display: inline;">
<el-radio label="出站(进路)信号机故障">出站进路信号机故障</el-radio>
<el-radio label="未设出站信号机" style="margin-left: 5px;">未设出站信号机</el-radio>
<el-radio label="列车头部越过出站(进路)信号机" style="margin-left: 5px;">列车头部越过出站进路信号机</el-radio>
</el-radio-group>
<span>的情况下准许第</span>
<el-input v-model="greenLicenseForm.tripNumber" :disabled="switchFlag" style="display: inline;" size="small" class="inline-input" />
<span>次列车由</span>
<el-input v-model="greenLicenseForm.line" style="display: inline;" :disabled="switchFlag" size="small" class="inline-input" />
<span>线上发车</span>
</div>
<div style="font-size: 16px;margin-top: 60px;display: flex;align-items: center;justify-content: end;">
<div><span style="color: #f00;">{{ showCentralizedStationName }}</span>站名印车站值班员签名</div>
<el-input v-model="greenLicenseForm.signature" :disabled="switchFlag" size="small" style="width: 80px;" />
</div>
<div style="font-size: 16px;margin-top: 15px;display: flex;align-items: center;margin-bottom: 10px;justify-content: end;">
<el-input v-model="greenLicenseForm.year" :disabled="switchFlag" size="small" style="width: 80px;" />
<div></div>
<el-input v-model="greenLicenseForm.moon" :disabled="switchFlag" size="small" style="width: 80px;" />
<div></div>
<el-input v-model="greenLicenseForm.day" :disabled="switchFlag" size="small" style="width: 80px;" />
<div>日填发</div>
</div>
</div>
</template>
<script>
export default {
name: 'GreenLicence',
props: {
greenLicenseForm:{
type: Object,
required: true
},
switchFlag:{
type: Boolean,
required: true
},
showCentralizedStationName: {
type: String,
required: true
}
},
data() {
return {
};
}
};
</script>
<style scoped>
</style>

View File

@ -0,0 +1,281 @@
<template>
<el-dialog
title="路票"
:visible="trainTicketShow"
width="640px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
center
>
<div>
<div style="display: flex;align-items: center;margin-bottom: 10px;">
<div>附件类型</div>
<el-select v-model="attachmentType" size="small" placeholder="请选择">
<el-option
v-for="item in typeList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
<el-button v-if="activeName === 'first'" size="small" style="margin-left: 20px;" type="primary" @click="submit">提交</el-button>
<el-button v-else style="margin-left: 20px;" size="small" type="primary" @click="query">查询</el-button>
</div>
<el-tabs v-model="activeName" type="card">
<el-tab-pane label="路票填写" name="first">
<rail-ticket v-if="attachmentType === 'RAIL_TICKET'" :switch-flag="false" :ticket-form="ticketForm" :station-list="stationList" />
<green-licence v-else-if="attachmentType === 'GREEN_LICENCE'" :switch-flag="false" :green-license-form="greenLicenseForm" :show-centralized-station-name="showCentralizedStationName" />
<red-licence v-else-if="attachmentType === 'RED_LICENCE'" :show-centralized-station-name="showCentralizedStationName" :switch-flag="false" :red-license-form="redLicenseForm" />
</el-tab-pane>
<el-tab-pane label="路票查询" name="second">
<div v-if="attachmentType === 'RAIL_TICKET'" style="height: 450px;overflow-y: auto;">
<template v-for="(item, index) in railTicketList">
<rail-ticket :key="index" :switch-flag="true" :ticket-form="item" :station-list="stationList" />
</template>
</div>
<div v-else-if="attachmentType === 'GREEN_LICENCE'" style="height: 450px;overflow-y: auto;">
<template v-for="(item, index) in greenLicenseList">
<green-licence :key="index" :show-centralized-station-name="showCentralizedStationName" :switch-flag="true" :green-license-form="item" />
</template>
</div>
<div v-else-if="attachmentType === 'RED_LICENCE'" style="height: 450px;overflow-y: auto;">
<template v-for="(item, index) in redLicenseList">
<red-licence :key="index" :show-centralized-station-name="showCentralizedStationName" :switch-flag="true" :red-license-form="item" />
</template>
</div>
</el-tab-pane>
</el-tabs>
<!-- <div v-else-if="attachmentType === 'dispatchingCommand'" style="margin-top: 20px;padding: 20px;">
<div style="text-align: center;font-size: 28px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
<div style="margin-top: 10px;display: flex;align-items: center;justify-content: end;">
<el-input v-model="years" size="small" style="width: 80px;" />
<div></div>
<el-input v-model="months" size="small" style="width: 80px;" />
<div></div>
<el-input v-model="days" size="small" style="width: 80px;" />
<div></div>
<el-input v-model="hours" size="small" style="width: 80px;" />
<div></div>
<el-input v-model="minutes" size="small" style="width: 80px;" />
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
<el-input v-model="days" size="small" style="width: 80px;" />
<div></div>
</div>
<div style="border: 1px solid #000;display: flex;align-items: center;margin-top: 10px;">
<div style="border-right: 1px solid #000;width: 25%;text-align: center;height: 40px;line-height: 40px;">受令处所</div>
<div style="width: 25%;border-right: 1px solid #000;"><el-input v-model="shouingchusuo" /></div>
<div style="border-right: 1px solid #000;width: 25%;text-align: center;height: 40px;line-height: 40px;">调度员姓名</div>
<div style="width: 25%;"><el-input v-model="dispatcherName" /></div>
</div>
<div style="border-right: 1px solid #000;border-left: 1px solid #000;display: flex;border-bottom: 1px solid #000;">
<div style="border-right: 1px solid #000;width: 25%;text-align: center;height: 96px;line-height: 96px;">内容</div>
<div style="width: 75%;">
<el-input
v-model="content"
type="textarea"
:rows="4"
placeholder="请输入内容"
/>
</div>
</div>
<div style="margin-top: 10px;display: flex;justify-content: end;align-items: center;">
<div>受令车站</div>
<el-input v-model="shouLingStation" size="small" style="width: 80px;" />
<div>车站值班员</div>
<el-input v-model="stationWatchman" size="small" style="width: 80px;" />
</div>
</div>
<div v-else-if="attachmentType === 'shuntNotice'" style="border: 1px solid #000;margin-top: 20px;padding: 20px;">
<div style="text-align: center;font-size: 28px;">出站/跟踪调车通知书</div>
<div style="text-indent: 36px;font-size: 16px;">
<span>对方站承认的号码第</span>
<el-input v-model="hao" size="small" class="inline-input" style="display: inline;" />
<span>准许自/</span>
<el-input v-model="hours" size="small" class="inline-input" style="display: inline;" />
<span></span>
<el-input v-model="minutes" size="small" class="inline-input" style="display: inline;" />
<span>分起/</span>
<el-input v-model="trainCode" size="small" class="inline-input" style="display: inline;" />
<span>机车由车站向</span>
<el-input v-model="qujian" size="small" class="inline-input" style="display: inline;" />
<span>区间出战/跟踪调车</span>
</div>
<div style="font-size: 16px;margin-top: 60px;display: flex;align-items: center;justify-content: end;">
<div>站名印车站值班扳道签名</div>
<el-input v-model="signName" size="small" style="width: 80px;" />
</div>
<div style="font-size: 16px;margin-top: 15px;display: flex;align-items: center;margin-bottom: 10px;justify-content: end;">
<el-input v-model="years" size="small" style="width: 80px;" />
<div></div>
<el-input v-model="months" size="small" style="width: 80px;" />
<div></div>
<el-input v-model="days" size="small" style="width: 80px;" />
<div>日填发</div>
</div>
</div>
<div v-else-if="attachmentType === 'lightVehicleManual'" style="border: 1px solid #000;margin-top: 20px;padding: 20px;">
<div style="text-align: center;font-size: 28px;"> 使 </div>
<div style="display: flex;align-items: center;" />
</div>-->
</div>
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
import RailTicket from './trainTicket';
import GreenLicence from './greenLicence';
import RedLicence from './redLicence';
export default {
name: 'Index',
components: {
RailTicket,
GreenLicence,
RedLicence
},
data() {
return {
trainTicketShow: false,
attachmentType: 'RAIL_TICKET',
railTicketList: [],
greenLicenseList: [],
redLicenseList: [],
activeName: 'first',
ticketForm: {
number: '',
tripNumber: '',
station: '',
nextStation: '',
stationSeal: true,
no: '',
deputy: false
},
greenLicenseForm: {
number: '',
reason: '',
tripNumber: '',
line: '',
stationSeal: true,
signature: '',
year: '',
moon: '',
day: ''
},
redLicenseForm: {
number: '',
licenseReceived: true,
licenseTripNumber: '',
licenseStation: '',
licenseNextStation: '',
licenseHour: '',
licenseMinute: '',
licenseTripNumber2: '',
noticeTripNumber: '',
noticeHour1: '',
noticeMinute1: '',
noticeTripNumber1: '',
noticeHour2: '',
noticeMinute2: '',
noticeTripNumber2: '',
stationSeal: true,
signature: '',
year: '',
moon: '',
day: ''
},
typeList: [
{label: '路票', value: 'RAIL_TICKET'},
{label: '绿色许可证', value: 'GREEN_LICENCE'},
{label: '红色许可证', value: 'RED_LICENCE'}
// {label: '', value: 'dispatchingCommand'},
// {label: '/', value: 'shuntNotice'},
// {label: '使', value: 'lightVehicleManual'},
// {label: '簿', value: 'commandRegister'},
// {label: '', value: 'writtenNotice'},
// {label: '', value: 'departureNotice'}
]
};
},
computed: {
...mapGetters('map', [
'stationList'
]),
showCentralizedStationName() {
if (this.$store.state.map.showCentralizedStationCode) {
const station = this.$store.getters['map/getDeviceByCode'](this.$store.state.map.showCentralizedStationCode);
if (station) { return station.name; } else { return ''; }
} else { return ''; }
}
},
methods: {
doClose() {
this.trainTicketShow = false;
},
doShow() {
this.trainTicketShow = true;
this.ticketForm.station = this.showCentralizedStationName;
},
clearData() {
this.ticketForm = {number: '', tripNumber: '', station: '', nextStation: '', stationSeal: true, no: '', deputy: false};
this.greenLicenseForm = {number: '', reason: '', tripNumber: '', line: '', stationSeal: true, signature: '', year: '', moon: '', day: '' };
this.redLicenseForm = {number: '', licenseReceived: true, licenseTripNumber: '', licenseStation: '', licenseNextStation: '', licenseHour: '',
licenseMinute: '', licenseTripNumber2: '', noticeTripNumber: '', noticeHour1: '', noticeMinute1: '', noticeTripNumber1: '', noticeHour2: '',
noticeMinute2: '', noticeTripNumber2: '', stationSeal: true, signature: '', year: '', moon: '', day: ''};
},
query() {
const params = { type: this.attachmentType, stationCode: this.$store.state.map.showCentralizedStationCode };
commitOperate(menuOperate.Rail.railQueryTicket, params, 3).then(({valid, response, operate}) => {
if (valid) {
if (this.attachmentType === 'RAIL_TICKET') {
this.railTicketList = response.data || [];
} else if (this.attachmentType === 'GREEN_LICENCE') {
this.greenLicenseList = response.data || [];
} else if (this.attachmentType === 'RED_LICENCE') {
this.redLicenseList = response.data || [];
}
}
}).catch(()=> {
this.$message.error('查询路票失败!');
});
},
submit() {
const params = { ticket: { type: this.attachmentType }, stationCode: this.$store.state.map.showCentralizedStationCode };
if (this.attachmentType === 'RAIL_TICKET') {
params.ticket = Object.assign(params.ticket, this.ticketForm);
} else if (this.attachmentType === 'GREEN_LICENCE') {
params.ticket = Object.assign(params.ticket, this.greenLicenseForm);
} else if (this.attachmentType === 'RED_LICENCE') {
params.ticket = Object.assign(params.ticket, this.redLicenseForm);
}
commitOperate(menuOperate.Rail.railFillInTicket, params, 3).then(({valid, operate})=>{
this.clearData();
this.ticketForm.station = this.showCentralizedStationName;
}).catch(()=>{
this.$message.error('提交路票失败!');
});
}
}
};
</script>
<style scoped>
/deep/.inline-input .el-input__inner{
width: 80px;
}
/deep/.station-input .el-input__inner{
width: 200px;
height: 50px;
line-height: 50px;
font-size: 40px;
}
/deep/.el-radio__label{
font-size: 16px;
}
/deep/.el-radio{
margin-right: 0;
}
</style>

View File

@ -0,0 +1,92 @@
<template>
<div style="border: 1px solid #000000;margin-top: 20px;padding: 20px;">
<div style="text-align: center;font-size: 28px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
<div style="font-size: 14px;margin-top: 15px;display: flex;align-items: center;margin-bottom: 20px;justify-content: end;">
<div></div>
<el-input v-model="redLicenseForm.number" :disabled="switchFlag" size="small" style="width: 80px;" />
<div style="margin-right: 20px;"></div>
</div>
<div style="font-size: 16px;margin-top: 10px;text-indent:36px;">
<span>现在一切电话中断准许第</span>
<el-input v-model="redLicenseForm.licenseTripNumber" :disabled="switchFlag" style="display: inline;" size="small" class="inline-input" />
<span>次列车自</span>
<el-input v-model="redLicenseForm.licenseStation" :disabled="switchFlag" style="display: inline;" size="small" class="inline-input" />
<span>站至</span>
<el-input v-model="redLicenseForm.licenseNextStation" :disabled="switchFlag" style="display: inline;" size="small" class="inline-input" />
<span>本列车前于</span>
<el-input v-model="redLicenseForm.licenseHour" :disabled="switchFlag" style="display: inline;" size="small" class="inline-input" />
<span></span>
<el-input v-model="redLicenseForm.licenseMinute" :disabled="switchFlag" style="display: inline;" size="small" class="inline-input" />
<span>分发出的第</span>
<el-input v-model="redLicenseForm.licenseTripNumber2" :disabled="switchFlag" style="display: inline;" size="small" class="inline-input" />
<span>次列车邻站到达通知</span>
<el-radio-group v-model="redLicenseForm.licenseReceived" :disabled="switchFlag" style="display: inline;">
<el-radio label="已"></el-radio>
<el-radio label="未" style="margin-left: 5px;"></el-radio>
</el-radio-group>
<span>收到</span>
</div>
<div style="text-align: center;font-size: 28px;margin-top: 10px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
<div style="font-size: 16px;margin-top: 10px;text-indent: 36px;">
<span>1.</span>
<el-input v-model="redLicenseForm.noticeTripNumber" :disabled="switchFlag" style="display: inline;" size="small" class="inline-input" />
<span>次列车到达你站后准接你站发出的列车</span>
</div>
<div style="font-size: 16px;margin-top: 10px;text-indent: 36px;">
<span>2.</span>
<el-input v-model="redLicenseForm.noticeHour1" :disabled="switchFlag" style="display: inline;" size="small" class="inline-input" />
<span></span>
<el-input v-model="redLicenseForm.noticeMinute1" :disabled="switchFlag" style="display: inline;" size="small" class="inline-input" />
<span>分发出第</span>
<el-input v-model="redLicenseForm.noticeTripNumber1" :disabled="switchFlag" style="display: inline;" size="small" class="inline-input" />
<span>次列车并于</span>
<el-input v-model="redLicenseForm.noticeHour2" :disabled="switchFlag" style="display: inline;" size="small" class="inline-input" />
<span></span>
<el-input v-model="redLicenseForm.noticeMinute2" :disabled="switchFlag" style="display: inline;" size="small" class="inline-input" />
<span>分再发出第</span>
<el-input v-model="redLicenseForm.noticeTripNumber2" :disabled="switchFlag" style="display: inline;" size="small" class="inline-input" />
<span>次列车</span>
</div>
<div style="font-size: 16px;margin-top: 60px;display: flex;align-items: center;justify-content: end;">
<div><span style="color: #f00;">{{ showCentralizedStationName }}</span>站名印车站值班员签名</div>
<el-input v-model="redLicenseForm.signature" :disabled="switchFlag" size="small" style="width: 80px;" />
</div>
<div style="font-size: 16px;margin-top: 15px;display: flex;align-items: center;margin-bottom: 10px;justify-content: end;">
<el-input v-model="redLicenseForm.year" :disabled="switchFlag" size="small" style="width: 80px;" />
<div></div>
<el-input v-model="redLicenseForm.moon" :disabled="switchFlag" size="small" style="width: 80px;" />
<div></div>
<el-input v-model="redLicenseForm.day" :disabled="switchFlag" size="small" style="width: 80px;" />
<div>日填发</div>
</div>
</div>
</template>
<script>
export default {
name: 'RedLicence',
props: {
redLicenseForm:{
type: Object,
required: true
},
switchFlag:{
type: Boolean,
required: true
},
showCentralizedStationName: {
type: String,
required: true
}
},
data() {
return {
};
}
};
</script>
<style scoped>
</style>

View File

@ -0,0 +1,64 @@
<template>
<div style="border: 1px solid #000000;margin-top: 20px;padding: 20px;">
<div style="text-align: center;font-size: 28px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
<div style="display: flex;justify-content: center;align-items: center;font-size: 18px;margin-top: 10px;">
<div>电话记录&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
<el-input v-model="ticketForm.number" :disabled="switchFlag" size="mini" style="width: 80px;" />
<div></div>
</div>
<div style="display: flex;justify-content: center;align-items: center;font-size: 18px;margin-top: 10px;">
<div style="margin-left: 80px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
<el-input v-model="ticketForm.tripNumber" :disabled="switchFlag" size="mini" style="width: 80px;" />
</div>
<div style="display: flex; justify-content: center;font-size: 40px;font-weight: bolder;margin-top: 25px;align-items: center;">
<div>{{ ticketForm.station }}</div>
<svg-icon icon-class="arrow" style="width: 100px" />
<div>
<el-select v-model="ticketForm.nextStation" size="small" :disabled="switchFlag" class="station-input" placeholder="请选择">
<el-option
v-for="item in stationList"
:key="item.code"
:label="item.name"
:value="item.name"
/>
</el-select>
</div>
</div>
<div style="display: flex; justify-content: space-between;font-size: 18px;margin-top: 25px;margin-bottom: 25px;align-items: center;">
<div style="margin-left: 50px;"><span style="color: #f00">{{ ticketForm.station }}</span>站名印</div>
<div>
<span>编号</span>
<el-input v-model="ticketForm.no" size="small" :disabled="switchFlag" style="width: 80px;" />
</div>
</div>
</div>
</template>
<script>
export default {
name: 'TrainTicket',
props: {
ticketForm:{
type: Object,
required: true
},
switchFlag:{
type: Boolean,
required: true
},
stationList: {
type: Array,
required: true
}
},
data() {
return {
};
}
};
</script>
<style scoped>
</style>