Merge branch 'test' of https://git.code.tencent.com/lian-cbtc/jl-client into test
This commit is contained in:
commit
704356cec9
@ -211,11 +211,11 @@ export default {
|
||||
queryList: {
|
||||
type: Object,
|
||||
required: true
|
||||
},
|
||||
cardPadding: {
|
||||
type: Number,
|
||||
default: 0
|
||||
}
|
||||
},
|
||||
cardPadding: {
|
||||
type: Number,
|
||||
default: 0
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@ -281,6 +281,10 @@ export default {
|
||||
self.choose = null;
|
||||
return self.commitQuery();
|
||||
};
|
||||
this.queryList.queryReload = function() {
|
||||
self.choose = null;
|
||||
return self.$refs.queryForm.query();
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
// this.commitQuery();
|
||||
|
@ -108,6 +108,11 @@ class SkinCode extends defaultStyle {
|
||||
},
|
||||
speedLimitName: {
|
||||
z: 10,
|
||||
leftName: true, // 左侧限速值是否展示
|
||||
rightName: true, // 右侧限速值是否展示
|
||||
nameBackgroundIsRect: false, // 限速值背景是否为矩形
|
||||
nameBackgroundBorderWidth: 0, // 限速值背景是否边框宽度
|
||||
nameBackgroundBorderColor: '#000', // 限速值背景边框颜色
|
||||
limitValueDistance: -15,
|
||||
kilometerFontSize: 8, // 公里标大小
|
||||
kilometerColor: '#fff', // 公里标颜色
|
||||
|
@ -108,6 +108,11 @@ class SkinCode extends defaultStyle {
|
||||
},
|
||||
speedLimitName: {
|
||||
z: 10,
|
||||
leftName: true, // 左侧限速值是否展示
|
||||
rightName: true, // 右侧限速值是否展示
|
||||
nameBackgroundIsRect: false, // 限速值背景是否为矩形
|
||||
nameBackgroundBorderWidth: 0, // 限速值背景是否边框宽度
|
||||
nameBackgroundBorderColor: '#000', // 限速值背景边框颜色
|
||||
limitValueDistance: -15,
|
||||
kilometerFontSize: 8, // 公里标大小
|
||||
kilometerColor: '#fff', // 公里标颜色
|
||||
|
@ -6,7 +6,7 @@ class SkinCode extends defaultStyle {
|
||||
super();
|
||||
this.fontFamily = '宋体';
|
||||
this[deviceType.Section] = {
|
||||
elemnetType:['name', 'logicText', 'standTrackText', 'reentryTrackText', 'transferTrackText', 'line', 'lineBorder', 'sectionBlock', 'speedLimit'],
|
||||
elemnetType:['name', 'logicText', 'standTrackText', 'reentryTrackText', 'transferTrackText', 'line', 'lineBorder', 'sectionBlock', 'speedLimitName'],
|
||||
active: {
|
||||
routeColor: false // 进路触发颜色
|
||||
},
|
||||
@ -113,6 +113,21 @@ class SkinCode extends defaultStyle {
|
||||
lineColor: '#FFFF00', // 限速线颜色
|
||||
nameShow: false // 名称显示
|
||||
},
|
||||
speedLimitName: {
|
||||
z: 10,
|
||||
leftName: true, // 左侧限速值是否展示
|
||||
rightName: false, // 右侧限速值是否展示
|
||||
nameBackgroundIsRect: true, // 限速值背景是否为矩形
|
||||
nameBackgroundBorderWidth: 1, // 限速值背景是否边框宽度
|
||||
nameBackgroundBorderColor: '#C00808', // 限速值背景边框颜色
|
||||
limitValueDistance: 18,
|
||||
kilometerFontSize: 0, // 公里标大小
|
||||
nameNumberFontSize: 11, // 限速值大小
|
||||
nameNumberColor: '#C00808', // 限速值颜色
|
||||
nameBackground: '#000', // 限速名称背景颜色
|
||||
drogueWidth: 15, // 浮标宽度
|
||||
drogueHeight: 12 // 浮标高度
|
||||
},
|
||||
separator: {
|
||||
z: 3, // 分割符层级
|
||||
width: 1.2, // 分隔符宽度
|
||||
|
@ -68,6 +68,11 @@ class SkinCode extends defaultStyle {
|
||||
},
|
||||
speedLimitName: {
|
||||
z: 10,
|
||||
leftName: true, // 左侧限速值是否展示
|
||||
rightName: true, // 右侧限速值是否展示
|
||||
nameBackgroundIsRect: false, // 限速值背景是否为矩形
|
||||
nameBackgroundBorderWidth: 0, // 限速值背景是否边框宽度
|
||||
nameBackgroundBorderColor: '#C00808', // 限速值背景边框颜色
|
||||
limitValueDistance: 15, // 限速值距离
|
||||
kilometerFontSize: 0, // 公里标大小
|
||||
kilometerColor: '#000', // 公里标颜色
|
||||
|
@ -22,110 +22,122 @@ export default class ELimitName extends Group {
|
||||
const y1 = model.points[0].y + style.Section.speedLimitName.limitValueDistance;
|
||||
const x2 = model.points[model.points.length - 1].x;
|
||||
const y2 = model.points[model.points.length - 1].y + style.Section.speedLimitName.limitValueDistance;
|
||||
this.leftPolygon = new Polygon({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z + 9,
|
||||
shape: {
|
||||
points: [
|
||||
[x1, y1],
|
||||
[x1 + rectW, y1],
|
||||
[x1 + (rectW + rectH / 2), y1 - rectH / 2],
|
||||
[x1 + rectW, y1 - rectH],
|
||||
[x1, y1 - rectH]
|
||||
]
|
||||
},
|
||||
style: {
|
||||
lineWidth: 0,
|
||||
fill: style.Section.speedLimitName.nameBackground
|
||||
}
|
||||
});
|
||||
this.rightPolygon = new Polygon({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z + 9,
|
||||
shape: {
|
||||
points: [
|
||||
[x2, y2],
|
||||
[x2 - rectW, y2],
|
||||
[x2 - (rectW + rectH / 2), y2 - rectH / 2],
|
||||
[x2 - rectW, y2 - rectH],
|
||||
[x2, y2 - rectH]
|
||||
]
|
||||
},
|
||||
style: {
|
||||
lineWidth: 0,
|
||||
fill: style.Section.speedLimitName.nameBackground
|
||||
}
|
||||
});
|
||||
this.leftLimitValue = new Text({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z + 10,
|
||||
style: {
|
||||
x: x1 + 2,
|
||||
y: y1,
|
||||
fontWeight: 'normal',
|
||||
fontSize: style.Section.speedLimitName.nameNumberFontSize,
|
||||
fontFamily: style.fontFamily,
|
||||
text: '',
|
||||
textFill: style.Section.speedLimitName.nameNumberColor,
|
||||
textAlign: 'left',
|
||||
textPosition: style.Section.name.textPosition || 'inside',
|
||||
textVerticalAlign: 'bottom'
|
||||
}
|
||||
});
|
||||
this.rightLimitValue = new Text({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z + 10,
|
||||
style: {
|
||||
x: x2 - 2,
|
||||
y: y2,
|
||||
fontWeight: 'normal',
|
||||
fontSize: style.Section.speedLimitName.nameNumberFontSize,
|
||||
fontFamily: style.fontFamily,
|
||||
text: '',
|
||||
textFill: style.Section.speedLimitName.nameNumberColor,
|
||||
textAlign: 'right',
|
||||
textPosition: style.Section.name.textPosition || 'inside',
|
||||
textVerticalAlign: 'bottom'
|
||||
}
|
||||
});
|
||||
this.leftKilometerValue = new Text({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z + 10,
|
||||
style: {
|
||||
x: x1,
|
||||
y: y1 + 12,
|
||||
fontWeight: 'normal',
|
||||
fontSize: style.Section.speedLimitName.kilometerFontSize,
|
||||
fontFamily: style.fontFamily,
|
||||
text: '17.981km',
|
||||
textFill: style.Section.speedLimitName.kilometerColor,
|
||||
textAlign: 'left',
|
||||
textPosition: style.Section.name.textPosition || 'inside',
|
||||
textVerticalAlign: 'bottom'
|
||||
}
|
||||
});
|
||||
this.rightKilometerValue = new Text({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z + 10,
|
||||
style: {
|
||||
x: x2,
|
||||
y: y2 + 12,
|
||||
fontWeight: 'normal',
|
||||
fontSize: style.Section.speedLimitName.kilometerFontSize,
|
||||
fontFamily: style.fontFamily,
|
||||
text: '17.981km',
|
||||
textFill: style.Section.speedLimitName.kilometerColor,
|
||||
textAlign: 'right',
|
||||
textPosition: style.Section.name.textPosition || 'inside',
|
||||
textVerticalAlign: 'bottom'
|
||||
}
|
||||
});
|
||||
this.add(this.leftPolygon);
|
||||
this.add(this.rightPolygon);
|
||||
this.add(this.leftLimitValue);
|
||||
this.add(this.rightLimitValue);
|
||||
this.add(this.leftKilometerValue);
|
||||
this.add(this.rightKilometerValue);
|
||||
if (style.Section.speedLimitName.leftName) {
|
||||
const leftPoints = style.Section.speedLimitName.nameBackgroundIsRect ? [[x1, y1],
|
||||
[x1 + rectW, y1],
|
||||
[x1 + rectW, y1 - rectH],
|
||||
[x1, y1 - rectH]] : [[x1, y1],
|
||||
[x1 + rectW, y1],
|
||||
[x1 + (rectW + rectH / 2), y1 - rectH / 2],
|
||||
[x1 + rectW, y1 - rectH],
|
||||
[x1, y1 - rectH]];
|
||||
this.leftPolygon = new Polygon({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z + 9,
|
||||
shape: {
|
||||
points: leftPoints
|
||||
},
|
||||
style: {
|
||||
lineWidth: style.Section.speedLimitName.nameBackgroundBorderWidth,
|
||||
fill: style.Section.speedLimitName.nameBackground,
|
||||
stroke: style.Section.speedLimitName.nameBackgroundBorderColor
|
||||
}
|
||||
});
|
||||
this.leftLimitValue = new Text({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z + 10,
|
||||
style: {
|
||||
x: x1 + 2,
|
||||
y: y1,
|
||||
fontWeight: 'normal',
|
||||
fontSize: style.Section.speedLimitName.nameNumberFontSize,
|
||||
fontFamily: style.fontFamily,
|
||||
text: '',
|
||||
textFill: style.Section.speedLimitName.nameNumberColor,
|
||||
textAlign: 'left',
|
||||
textPosition: style.Section.name.textPosition || 'inside',
|
||||
textVerticalAlign: 'bottom'
|
||||
}
|
||||
});
|
||||
this.leftKilometerValue = new Text({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z + 10,
|
||||
style: {
|
||||
x: x1,
|
||||
y: y1 + 12,
|
||||
fontWeight: 'normal',
|
||||
fontSize: style.Section.speedLimitName.kilometerFontSize,
|
||||
fontFamily: style.fontFamily,
|
||||
text: '17.981km',
|
||||
textFill: style.Section.speedLimitName.kilometerColor,
|
||||
textAlign: 'left',
|
||||
textPosition: style.Section.name.textPosition || 'inside',
|
||||
textVerticalAlign: 'bottom'
|
||||
}
|
||||
});
|
||||
this.add(this.leftPolygon);
|
||||
this.add(this.leftLimitValue);
|
||||
this.add(this.leftKilometerValue);
|
||||
}
|
||||
if (style.Section.speedLimitName.rightName) {
|
||||
const rightPoints = style.Section.speedLimitName.nameBackgroundIsRect ? [[x2, y2],
|
||||
[x2 - rectW, y2],
|
||||
[x2 - rectW, y2 - rectH],
|
||||
[x2, y2 - rectH]] : [[x2, y2],
|
||||
[x2 - rectW, y2],
|
||||
[x2 - (rectW + rectH / 2), y2 - rectH / 2],
|
||||
[x2 - rectW, y2 - rectH],
|
||||
[x2, y2 - rectH]];
|
||||
this.rightPolygon = new Polygon({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z + 9,
|
||||
shape: {
|
||||
points: rightPoints
|
||||
},
|
||||
style: {
|
||||
lineWidth: style.Section.speedLimitName.nameBackgroundBorderWidth,
|
||||
fill: style.Section.speedLimitName.nameBackground,
|
||||
stroke: style.Section.speedLimitName.nameBackgroundBorderColor
|
||||
}
|
||||
});
|
||||
|
||||
this.rightLimitValue = new Text({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z + 10,
|
||||
style: {
|
||||
x: x2 - 2,
|
||||
y: y2,
|
||||
fontWeight: 'normal',
|
||||
fontSize: style.Section.speedLimitName.nameNumberFontSize,
|
||||
fontFamily: style.fontFamily,
|
||||
text: '',
|
||||
textFill: style.Section.speedLimitName.nameNumberColor,
|
||||
textAlign: 'right',
|
||||
textPosition: style.Section.name.textPosition || 'inside',
|
||||
textVerticalAlign: 'bottom'
|
||||
}
|
||||
});
|
||||
|
||||
this.rightKilometerValue = new Text({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z + 10,
|
||||
style: {
|
||||
x: x2,
|
||||
y: y2 + 12,
|
||||
fontWeight: 'normal',
|
||||
fontSize: style.Section.speedLimitName.kilometerFontSize,
|
||||
fontFamily: style.fontFamily,
|
||||
text: '17.981km',
|
||||
textFill: style.Section.speedLimitName.kilometerColor,
|
||||
textAlign: 'right',
|
||||
textPosition: style.Section.name.textPosition || 'inside',
|
||||
textVerticalAlign: 'bottom'
|
||||
}
|
||||
});
|
||||
this.add(this.rightPolygon);
|
||||
this.add(this.rightLimitValue);
|
||||
this.add(this.rightKilometerValue);
|
||||
}
|
||||
}
|
||||
|
||||
hide() {
|
||||
|
@ -33,7 +33,6 @@ export default {
|
||||
components: {
|
||||
MenuBar,
|
||||
MenuButton,
|
||||
MenuCancel,
|
||||
MenuSignal,
|
||||
MenuSwitch,
|
||||
MenuSection,
|
||||
|
@ -126,7 +126,7 @@
|
||||
<el-row style="height: 68px;" />
|
||||
<el-row class="button-row">
|
||||
<div style="width: 80px;" class="div-simulate-button" @click="undeveloped">考评</div>
|
||||
<div style="width: 80px;" class="div-simulate-button" @click="undeveloped">日志</div>
|
||||
<div style="width: 80px;" class="div-simulate-button" @click="showLogDetail">日志</div>
|
||||
</el-row>
|
||||
<el-row class="button-row" style="margin-top: 10px;">
|
||||
<div style="width: 80px;" class="div-simulate-button" @click="undeveloped">锁屏</div>
|
||||
@ -139,6 +139,7 @@
|
||||
<alarm-table-low ref="alarmTableLow" />
|
||||
<alarm-table-hmi ref="alarmTableHmi" />
|
||||
<train-control ref="trainControl" :offset="10" />
|
||||
<log-detail ref="logDetail" />
|
||||
<audio id="buzzer" controls loop="loop" style="width: 0;height: 0">
|
||||
<source :src="buzzerAudio" type="audio/mpeg">
|
||||
</audio>
|
||||
@ -154,6 +155,7 @@ import BuzzerAudio from '@/assets/buzzer.mp3';
|
||||
import AlarmTableHmi from './menuDialog/alarmTableHmi';
|
||||
import AlarmTableLow from './menuDialog/alarmTableLow';
|
||||
import TrainControl from './dialog/trainControl';
|
||||
import LogDetail from './menuDialog/logDetail';
|
||||
|
||||
export default {
|
||||
name: 'MenuBar',
|
||||
@ -161,7 +163,8 @@ export default {
|
||||
NoticeInfo,
|
||||
AlarmTableLow,
|
||||
AlarmTableHmi,
|
||||
TrainControl
|
||||
TrainControl,
|
||||
LogDetail
|
||||
},
|
||||
props: {
|
||||
selected: {
|
||||
@ -379,6 +382,10 @@ export default {
|
||||
}
|
||||
});
|
||||
},
|
||||
showLogDetail() {
|
||||
// this.$refs.logDetail.doShow();
|
||||
this.undeveloped();
|
||||
},
|
||||
login() {
|
||||
if (this.loginActive) {
|
||||
if (this.loginText === '退出') {
|
||||
|
@ -53,7 +53,7 @@
|
||||
:data="tempData"
|
||||
border
|
||||
:cell-style="tableStyle"
|
||||
style="width: 100%;background: #E0E0E0;border: none;outline: none; height: 56px"
|
||||
style="width: 100%;background: #E0E0E0;border: none;outline: none; height: 28px"
|
||||
size="mini"
|
||||
class="haerbin_table"
|
||||
highlight-current-row
|
||||
@ -61,6 +61,14 @@
|
||||
>
|
||||
<el-table-column prop="name" style="margin-left:10px" class-name="abc" />
|
||||
</el-table>
|
||||
<el-select v-if="speedShow" v-model="speedLimitValue" size="small" style="float: left;width: 100px;margin-left: 20px;" placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in speedList"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
@ -147,6 +155,8 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
tempData: [],
|
||||
speedList: [{label: '15km/h', value: 15}, {label: '25km/h', value:25}, {label: '45km/h', value:45}, {label: '60km/h', value: 60}],
|
||||
speedLimitValue: 15,
|
||||
oldDevice: null, // 上一次点击元素
|
||||
canCommand: true,
|
||||
cr1Confrim: false,
|
||||
@ -204,6 +214,9 @@ export default {
|
||||
},
|
||||
cr2ConfirmId() {
|
||||
return OperationEvent.Command.commandHaerbin.confrimCr2.domId;
|
||||
},
|
||||
speedShow() {
|
||||
return this.cmdType == CMD.Section.CMD_SECTION_SET_LIMIT_SPEED || this.cmdType == CMD.Switch.CMD_SWITCH_SET_LIMIT_SPEED;
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
@ -373,8 +386,7 @@ export default {
|
||||
this.tempData.push(this.selectedObj);
|
||||
this.param = {
|
||||
switchCode: this.selectedObj.code,
|
||||
sectionCode: section.code,
|
||||
speedLimitValue: '5' // 默认区段临时限速
|
||||
sectionCode: section.code
|
||||
};
|
||||
},
|
||||
handleSingalMenu() {
|
||||
@ -468,8 +480,7 @@ export default {
|
||||
this.tempData = [];
|
||||
this.tempData.push(this.selectedObj);
|
||||
this.param = {
|
||||
sectionCode: this.selectedObj.code,
|
||||
speedLimitValue: '5'
|
||||
sectionCode: this.selectedObj.code
|
||||
};
|
||||
},
|
||||
handleDirectionRodMenu() {
|
||||
@ -577,6 +588,9 @@ export default {
|
||||
});
|
||||
}
|
||||
}
|
||||
if (this.cmdType == CMD.Section.CMD_SECTION_SET_LIMIT_SPEED || this.cmdType == CMD.Switch.CMD_SWITCH_SET_LIMIT_SPEED) {
|
||||
this.param.speedLimitValue = this.speedLimitValue;
|
||||
}
|
||||
},
|
||||
command() {
|
||||
this.handleParam();
|
||||
@ -652,6 +666,7 @@ export default {
|
||||
this.operate = ''; // 清空指令
|
||||
this.cmdType = '';
|
||||
this.securityCommand = '';
|
||||
this.speedLimitValue = 15;
|
||||
this.secondConfirm = false;
|
||||
this.cr1Confrim = false;
|
||||
if (this.oldClickObj) {
|
||||
@ -804,6 +819,16 @@ export default {
|
||||
height: 20px;
|
||||
line-height: 20px;
|
||||
}
|
||||
/deep/.el-input--small .el-input__inner{
|
||||
height: 28px;
|
||||
line-height: 28px;
|
||||
}
|
||||
/deep/.el-table__empty-text{
|
||||
line-height: 28px;
|
||||
}
|
||||
/deep/.el-table__empty-block{
|
||||
min-height: 28px;
|
||||
}
|
||||
</style>
|
||||
<style lang="scss">
|
||||
#menuButton{
|
||||
|
105
src/jmapNew/theme/haerbin_01/menus/menuDialog/logDetail.vue
Normal file
105
src/jmapNew/theme/haerbin_01/menus/menuDialog/logDetail.vue
Normal file
@ -0,0 +1,105 @@
|
||||
<template>
|
||||
<el-dialog v-dialogDrag class="haerbin-01__systerm manage-user" title="操作列表" :before-close="handleClose" :visible.sync="show" width="70%" :z-index="2000" :modal="false" :close-on-click-modal="false">
|
||||
<div style="text-align: center;">
|
||||
<div style="text-align: left;">
|
||||
<div style="display: inline-block;margin-right: 5px;">开始时间:</div>
|
||||
<el-date-picker
|
||||
v-model="startTime"
|
||||
size="small"
|
||||
type="datetime"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
placeholder="选择日期时间"
|
||||
/>
|
||||
<div style="display: inline-block;margin-right: 5px;margin-left: 10px;">结束时间:</div>
|
||||
<el-date-picker
|
||||
v-model="endTime"
|
||||
size="small"
|
||||
type="datetime"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
placeholder="选择日期时间"
|
||||
/>
|
||||
<el-button style="margin-left: 10px;" @click="queryData">查询</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
:data="totalData"
|
||||
border
|
||||
style="width: 100%"
|
||||
height="600"
|
||||
>
|
||||
<el-table-column prop="data" label="日期/时间" header-align="center" align="center" width="150px" />
|
||||
<el-table-column prop="operateName" label="操作人" header-align="center" align="center" width="100px" />
|
||||
<el-table-column prop="terminal" label="终端" header-align="center" align="center" width="100px" />
|
||||
<el-table-column prop="operateDes" header-align="center" align="center" label="操作" />
|
||||
</el-table>
|
||||
<el-pagination
|
||||
:current-page="currentPage"
|
||||
:page-size="100"
|
||||
layout="total, prev, pager, next, jumper"
|
||||
:total="totalNum"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
/>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {deviceType} from '@/scripts/cmdPlugin/Config';
|
||||
export default {
|
||||
name: 'LogDetail',
|
||||
data() {
|
||||
return {
|
||||
currentPage: 1,
|
||||
show: false,
|
||||
level: '',
|
||||
startTime: '',
|
||||
endTime: '',
|
||||
totalData: [{data: '2020-12-02 18:00:00', operateName: 'admin', terminal: '维护HMI', operateDes: '对联锁区“太平桥联锁区”执行命令“交出控制”'}],
|
||||
tableData: [{data: '2020-12-02 18:00:00', operateName: 'admin', terminal: '维护HMI', operateDes: '对联锁区“太平桥联锁区”执行命令“交出控制”'}],
|
||||
totalNum: 0
|
||||
};
|
||||
},
|
||||
computed:{
|
||||
},
|
||||
methods:{
|
||||
doShow(level) {
|
||||
this.show = true;
|
||||
this.level = level;
|
||||
this.queryData();
|
||||
},
|
||||
handleClose() {
|
||||
this.level = '';
|
||||
this.startTime = '';
|
||||
this.endTime = '';
|
||||
this.show = false;
|
||||
},
|
||||
queryData() {
|
||||
// const params = { level: this.level, startTime: this.startTime, endTime:this.endTime };
|
||||
// getAlarmList(this.$route.query.group, params).then(resp => {
|
||||
// this.totalData = resp.data;
|
||||
// });
|
||||
},
|
||||
handleDeviceType(code) {
|
||||
const device = this.$store.getters['map/getDeviceByCode'](code);
|
||||
return deviceType[device.type];
|
||||
},
|
||||
handleDeviceName(code) {
|
||||
const device = this.$store.getters['map/getDeviceByCode'](code);
|
||||
return device.name;
|
||||
},
|
||||
handleSizeChange() {
|
||||
// this.handleSizeChange
|
||||
},
|
||||
handleCurrentChange() {
|
||||
// this.handleCurrentChange
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
/deep/ .el-dialog .el-input {
|
||||
border: 0 !important;
|
||||
}
|
||||
|
||||
</style>
|
@ -236,14 +236,14 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form_box">
|
||||
<div class="title">单位:</div>
|
||||
<div class="content_box_info">
|
||||
<div v-show="companyShow" class="show_box">
|
||||
<span>{{ handleCompany(userInfo.companyId) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--<div class="form_box">-->
|
||||
<!--<div class="title">单位:</div>-->
|
||||
<!--<div class="content_box_info">-->
|
||||
<!--<div v-show="companyShow" class="show_box">-->
|
||||
<!--<span>{{ handleCompany(userInfo.companyId) }}</span>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<div v-if="!wmOpenId" class="form_box">
|
||||
<div class="title">绑定微信:</div>
|
||||
<div class="content_box_info">
|
||||
@ -398,16 +398,22 @@ export default {
|
||||
.catch(error => {
|
||||
console.log(error, '请求个人信息失败');
|
||||
});
|
||||
getCompanyList().then(resp => {
|
||||
this.companyList = resp.data;
|
||||
}).catch((error) => {
|
||||
console.log(error, '获取公司列表信息失败');
|
||||
});
|
||||
// getCompanyList().then(resp => {
|
||||
// this.companyList = resp.data;
|
||||
// }).catch((error) => {
|
||||
// console.log(error, '获取公司列表信息失败');
|
||||
// });
|
||||
},
|
||||
doClose() {
|
||||
this.visible = false;
|
||||
this.binding = false;
|
||||
this.bindSuccess = false;
|
||||
this.nameShow = true;
|
||||
this.nickNameShow = true;
|
||||
this.mobileShow = true;
|
||||
this.emailShow = true;
|
||||
this.passwordShow = true;
|
||||
this.companyShow = true;
|
||||
},
|
||||
switcherName() {
|
||||
this.editInfo.name = this.userInfo.name;
|
||||
@ -458,15 +464,15 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
handleCompany(companyId) {
|
||||
let name = '';
|
||||
this.companyList.forEach(item => {
|
||||
if (item.id == companyId) {
|
||||
name = item.name;
|
||||
}
|
||||
});
|
||||
return name;
|
||||
},
|
||||
// handleCompany(companyId) {
|
||||
// let name = '';
|
||||
// this.companyList.forEach(item => {
|
||||
// if (item.id == companyId) {
|
||||
// name = item.name;
|
||||
// }
|
||||
// });
|
||||
// return name;
|
||||
// },
|
||||
switcherMobile() {
|
||||
// this.editInfo.mobile = this.userInfo.mobile;
|
||||
this.mobileShow = !this.mobileShow;
|
||||
|
@ -766,7 +766,7 @@ export const asyncRouter = [
|
||||
{
|
||||
// 单位管理
|
||||
path: 'companyManage',
|
||||
hidden: true,
|
||||
// hidden: true,
|
||||
component: CompanyManage,
|
||||
meta: {
|
||||
i18n: 'router.companyManage'
|
||||
|
@ -33,17 +33,27 @@ class Handler {
|
||||
}
|
||||
|
||||
afterValid(operation, valid) {
|
||||
const basicInfo = store.getters['training/basicInfo'];
|
||||
if (basicInfo.id && valid) {
|
||||
const group = router.currentRoute.query.group;
|
||||
sendTrainingNextStepNew({ trainingId: basicInfo.id, operation: operation }, group);
|
||||
}
|
||||
|
||||
if (!valid) {
|
||||
this.pop();
|
||||
} else if (operation.cancel === true) {
|
||||
this.clear();
|
||||
}
|
||||
return new Promise((resolve, reject) => {
|
||||
const basicInfo = store.getters['training/basicInfo'];
|
||||
if (basicInfo.id && valid) {
|
||||
const group = router.currentRoute.query.group;
|
||||
sendTrainingNextStepNew({ trainingId: basicInfo.id, operation: operation }, group).then(res=>{
|
||||
if (!valid) {
|
||||
this.pop();
|
||||
} else if (operation.cancel === true) {
|
||||
this.clear();
|
||||
}
|
||||
resolve();
|
||||
}).catch(error => {
|
||||
if (!valid) {
|
||||
this.pop();
|
||||
} else if (operation.cancel === true) {
|
||||
this.clear();
|
||||
}
|
||||
reject(error);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
getWholeParam() {
|
||||
@ -94,24 +104,25 @@ class Handler {
|
||||
this.storeOperation(operation);
|
||||
const rtn = { valid: false, response: null };
|
||||
const valid = ValidateHandler.vaildate(this.getTrainingMode(), operation);
|
||||
this.afterValid(operation, valid);
|
||||
rtn.valid = valid;
|
||||
if (operation.cmdType && valid) {
|
||||
const command = this.getCommand(operation);
|
||||
if (command) {
|
||||
CommandHandler.execute(command.id, command.get()).then(response => {
|
||||
rtn.response = response;
|
||||
resolve(rtn);
|
||||
}).catch(error => {
|
||||
reject(error);
|
||||
});
|
||||
this.afterValid(operation, valid).then(()=>{
|
||||
rtn.valid = valid;
|
||||
if (operation.cmdType && valid) {
|
||||
const command = this.getCommand(operation);
|
||||
if (command) {
|
||||
CommandHandler.execute(command.id, command.get()).then(response => {
|
||||
rtn.response = response;
|
||||
resolve(rtn);
|
||||
}).catch(error => {
|
||||
reject(error);
|
||||
});
|
||||
} else {
|
||||
rtn.response = '获取指令失败,暂无指令或参数传值不正确,请检查指令字典';
|
||||
reject(rtn);
|
||||
}
|
||||
} else {
|
||||
rtn.response = '获取指令失败,暂无指令或参数传值不正确,请检查指令字典';
|
||||
reject(rtn);
|
||||
resolve(rtn);
|
||||
}
|
||||
} else {
|
||||
resolve(rtn);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -2,11 +2,11 @@ export function getBaseUrl() {
|
||||
let BASE_API;
|
||||
if (process.env.NODE_ENV === 'development') {
|
||||
// BASE_API = 'https://joylink.club/jlcloud';
|
||||
// BASE_API = 'https://test.joylink.club/jlcloud';
|
||||
BASE_API = 'https://test.joylink.club/jlcloud';
|
||||
// BASE_API = 'http://192.168.8.107:9000'; // 袁琪
|
||||
// BASE_API = 'http://192.168.8.129:9000'; // 旭强
|
||||
// BASE_API = 'http://192.168.8.119:9000'; // 张赛
|
||||
BASE_API = 'http://192.168.8.110:9000'; // 杜康
|
||||
// BASE_API = 'http://192.168.8.110:9000'; // 杜康
|
||||
// BASE_API = 'http://b29z135112.zicp.vip';
|
||||
// BASE_API = 'http://2925963m2a.zicp.vip'; // 杜康
|
||||
// BASE_API = 'http://2i38984j47.qicp.vip'; // 张赛
|
||||
|
@ -1,19 +1,21 @@
|
||||
<template>
|
||||
<div v-loading="loading" class="joylink-card map-list-main">
|
||||
<div class="clearfix">
|
||||
<span>{{ $t('map.publishedMapList') }}</span>
|
||||
<div>
|
||||
<div class="mapListName">
|
||||
<span>{{ $t('map.publishedMapList') }}</span>
|
||||
</div>
|
||||
<template v-if="!getMapByCode">
|
||||
<filter-city ref="filerCity" filter-empty :local-param-name="localParamName" @filterSelectChange="refresh" />
|
||||
<el-input v-model="filterText" :placeholder="this.$t('global.filteringKeywords')" clearable />
|
||||
</template>
|
||||
</div>
|
||||
<div class="text_item">
|
||||
<filter-city v-if="!getMapByCode" ref="filerCity" filter-empty :local-param-name="localParamName" @filterSelectChange="refresh" />
|
||||
<el-input v-if="!getMapByCode" v-model="filterText" :placeholder="this.$t('global.filteringKeywords')" clearable />
|
||||
<div class="tree_mian_box">
|
||||
<el-tree ref="tree" class="tree_box" :data="treeList" :default-expanded-keys="defaultShowKeys" node-key="id" :props="defaultProps" highlight-current :span="22" :filter-node-method="filterNode" @node-click="clickEvent">
|
||||
<span slot-scope="{ node:tnode, data }">
|
||||
<span class="el-icon-tickets" :style="{color: data.valid ? 'green':''}" />
|
||||
<span> {{ tnode.label }}</span>
|
||||
</span>
|
||||
</el-tree>
|
||||
</div>
|
||||
<el-tree ref="tree" :data="treeList" :default-expanded-keys="defaultShowKeys" node-key="id" :props="defaultProps" highlight-current :span="22" :filter-node-method="filterNode" @node-click="clickEvent">
|
||||
<span slot-scope="{ node:tnode, data }">
|
||||
<span class="el-icon-tickets" :style="{color: data.valid ? 'green':''}" />
|
||||
<span> {{ tnode.label }}</span>
|
||||
</span>
|
||||
</el-tree>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@ -231,45 +233,28 @@ export default {
|
||||
};
|
||||
</script>
|
||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||
.back-home {
|
||||
float: right;
|
||||
cursor: pointer;
|
||||
|
||||
&:hover {
|
||||
color: #3ea726;
|
||||
}
|
||||
}
|
||||
.text_item{
|
||||
height: 100%;
|
||||
padding-top: 47px;
|
||||
.tree_mian_box{
|
||||
height: calc(100% - 76px);
|
||||
}
|
||||
width: 100%;
|
||||
flex: 1;
|
||||
overflow: auto;
|
||||
padding-bottom: 10px;
|
||||
padding-top: 5px;
|
||||
}
|
||||
|
||||
.map-list-main{
|
||||
text-align:left;
|
||||
height: 100%;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
display:flex;
|
||||
flex-direction:column;
|
||||
}
|
||||
.mapListName{
|
||||
padding: 15px 0px 15px 20px;
|
||||
border-bottom: 1px solid #EBEEF5;
|
||||
}
|
||||
.clearfix{
|
||||
padding: 0 20px;
|
||||
border-bottom: 1px solid #EBEEF5;
|
||||
box-sizing: border-box;
|
||||
height: 47px;
|
||||
line-height: 47px;
|
||||
position: absolute;
|
||||
width:100%;
|
||||
}
|
||||
.tree_box{
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
<style>
|
||||
.el-tree {
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.el-tree-node.is-current>.el-tree-node__content {
|
||||
background-color: #e4e3e3 !important;
|
||||
}
|
||||
|
@ -534,15 +534,26 @@ export default {
|
||||
getLoginInfo(getToken()).then(res => {
|
||||
getSimulationInfoNew(res.data.group).then(resp => {
|
||||
this.$store.dispatch('app/transitionAnimations');
|
||||
this.$router.push({ path: `/displayNew/demon`, query: {
|
||||
lineCode: resp.data.map.lineCode,
|
||||
group: res.data.group,
|
||||
prdType: resp.data.prodType,
|
||||
mapId: resp.data.map.id,
|
||||
goodsId:'',
|
||||
try:'0',
|
||||
project:this.project
|
||||
}});
|
||||
if (this.project === 'drts') {
|
||||
this.$router.push({ path: `/displayNew/demon`, query: {
|
||||
lineCode: resp.data.map.lineCode,
|
||||
group: res.data.group,
|
||||
prdType: resp.data.prodType,
|
||||
mapId: resp.data.map.id,
|
||||
goodsId:'',
|
||||
try:'0',
|
||||
project:this.project
|
||||
}});
|
||||
} else {
|
||||
this.$router.push({ path: `/practiceDisplay`, query: {
|
||||
lineCode: resp.data.map.lineCode,
|
||||
group: res.data.group,
|
||||
prdType: resp.data.prodType,
|
||||
mapId: resp.data.map.id,
|
||||
project:this.project
|
||||
}});
|
||||
}
|
||||
|
||||
this.loading = false;
|
||||
launchFullscreen();
|
||||
});
|
||||
@ -550,11 +561,6 @@ export default {
|
||||
} else {
|
||||
this.$router.push({ path: this.path });
|
||||
}
|
||||
// else if (!this.$route.path.includes('jsxt/login') && !this.$route.path.includes('refereeJsxt/login')) {
|
||||
// this.$router.push({ path: this.path });
|
||||
// } else {
|
||||
// this.$messageBox('请输入正确的链接地址');
|
||||
// }
|
||||
},
|
||||
handleLanguage() {
|
||||
this.$i18n.locale = this.lang;
|
||||
|
@ -382,6 +382,7 @@ export default {
|
||||
width: 100%;
|
||||
background-image:url('../../assets/bg_board.jpg');
|
||||
background-size: 100% 100%;
|
||||
min-height: 100%;
|
||||
}
|
||||
/deep/.ql-container{
|
||||
height: 80%;
|
||||
|
@ -1,14 +1,9 @@
|
||||
<template>
|
||||
<div>
|
||||
<div v-if="isAllShow" class="display_top_draft" :style="allStyle">
|
||||
<div v-if="isAllShow&&project != 'bjd'" class="display_top_draft" :style="allStyle">
|
||||
<div class="btn_hover" @click="menuClick">菜单</div>
|
||||
<el-button-group ref="button_group_box" class="button_group_box" :style="`margin-left:-${btnWidth}px`">
|
||||
<!-- 地图错误判断 -->
|
||||
<template v-if="project === 'bjd'">
|
||||
<el-button size="small" @click="passengersView">客流视图</el-button>
|
||||
<el-button v-if="running" size="small" @click="viewRunPlan">{{ $t('joinTraining.runGraphPreview') }}</el-button>
|
||||
<el-button v-if="!running" size="small" type="warning" @click="loadRunPlan">{{ $t('joinTraining.runGraphLoading') }}</el-button><!-- 运行图加载 -->
|
||||
</template>
|
||||
<!-- 设备视图 -->
|
||||
<el-button v-if="jl3dmodelShow && !isContest && project !== 'bjd'" size="small" @click="jumpjlmap3dmodel">{{ jl3dmodel }}</el-button>
|
||||
<!-- 三维视图/数字沙盘 -->
|
||||
@ -27,12 +22,9 @@
|
||||
<el-button v-if="scheduleLoadShow" type="primary" size="small" @click="jumpScheduling">派班计划加载</el-button>
|
||||
<el-button v-if="schedulePreviewShow" type="primary" size="small" @click="schedulingView">派班计划预览</el-button>
|
||||
<el-button v-if="isContest" size="small" :disabled="practiceDisabled" @click="fieldPractice">实操练习</el-button>
|
||||
<!-- <el-button v-if="isContest" size="small" @click=" fieldTeach">实操教学</el-button> -->
|
||||
<!-- <el-button v-if="isContest" size="small" @click=" fieldExam">实操测验</el-button> -->
|
||||
<el-button v-if="isContest" size="small" @click="goTheoryQuiz">理论考试</el-button>
|
||||
<el-button v-if="project === 'bjd'" size="small" @click="distribute">权限分发</el-button>
|
||||
<el-button v-if="isContest || project === 'bjd'" size="small" @click="messageBoardShow">留言板</el-button>
|
||||
<el-button v-if="isContest || project === 'bjd'" size="small" @click="contectUs">联系方式</el-button>
|
||||
<el-button v-if="isContest || project === 'gzb'" size="small" @click="messageBoardShow">留言板</el-button>
|
||||
<el-button v-if="isContest" size="small" @click="contectUs">联系方式</el-button>
|
||||
</el-button-group>
|
||||
</div>
|
||||
<Jl3d-Device
|
||||
@ -41,11 +33,9 @@
|
||||
:panel-show="deviceShow"
|
||||
@closedevice3dview="jumpjlmap3dmodel"
|
||||
/>
|
||||
<distribute-draft ref="distribute" @QrCodeShow="QrCodeShow" />
|
||||
<Jl3d-Drive v-show="drivingShow" ref="Jl3dDrive" :panel-show="drivingShow" @showdriving="showdriving" />
|
||||
<scheduling v-if="scheduleLoadShow" ref="scheduling" :group="group" />
|
||||
<scheduling-view v-if="schedulePreviewShow" ref="schedulingView" :group="group" />
|
||||
<qr-code ref="qrCode" />
|
||||
<contect-us ref="contectUs" />
|
||||
</div>
|
||||
</template>
|
||||
@ -57,10 +47,7 @@ import { getSessionStorage } from '@/utils/auth';
|
||||
import Scheduling from '@/views/newMap/displayNew/demon/scheduling';
|
||||
import SchedulingView from '@/views/newMap/displayNew/demon/schedulingView';
|
||||
import { EventBus } from '@/scripts/event-bus';
|
||||
import DistributeDraft from '@/views/components/limits/distribute';
|
||||
import QrCode from '@/components/QrCode';
|
||||
import ContectUs from '@/views/newMap/displayNew/dispatherContest/contectUs';
|
||||
import { PermissionType } from '@/scripts/ConstDic';
|
||||
export default {
|
||||
name:'DemonMenu',
|
||||
components:{
|
||||
@ -68,8 +55,6 @@ export default {
|
||||
Jl3dDrive,
|
||||
Scheduling,
|
||||
SchedulingView,
|
||||
DistributeDraft,
|
||||
QrCode,
|
||||
ContectUs
|
||||
},
|
||||
props:{
|
||||
@ -134,8 +119,7 @@ export default {
|
||||
jl3dtraffictrain:this.$t('display.demon.traffictraintext'),
|
||||
jl3dpassflow:this.$t('display.demon.passengerflow'),
|
||||
jl3dname: this.$t('display.demon.threeDimensionalView'),
|
||||
jl3dmodel: this.$t('display.demon.deviceView'),
|
||||
openWindow:null
|
||||
jl3dmodel: this.$t('display.demon.deviceView')
|
||||
};
|
||||
},
|
||||
computed:{
|
||||
@ -269,56 +253,10 @@ export default {
|
||||
fieldPractice() {
|
||||
this.$emit('fieldPractice');
|
||||
},
|
||||
viewRunPlan() {
|
||||
const routeData = this.$router.resolve({
|
||||
path:'/planSchedule/window',
|
||||
query:{
|
||||
mapId:this.$route.query.mapId,
|
||||
group:this.$route.query.group,
|
||||
lineCode: this.$route.query.lineCode,
|
||||
project: this.$route.query.project,
|
||||
noPreLogout: true,
|
||||
initTime: this.$store.state.training.initTime
|
||||
}
|
||||
});
|
||||
window.open(routeData.href, '_blank', 'noopener noreferrer');
|
||||
},
|
||||
passengersView() {
|
||||
if (this.openWindow) {
|
||||
this.openWindow.close();
|
||||
}
|
||||
const routeData = this.$router.resolve({
|
||||
path:'/practiceDisplay',
|
||||
query:{
|
||||
mapId:this.$route.query.mapId,
|
||||
group:this.$route.query.group,
|
||||
lineCode: this.$route.query.lineCode,
|
||||
project: this.$route.query.project,
|
||||
noPreLogout: true
|
||||
// initTime: this.$store.state.training.initTime
|
||||
}
|
||||
});
|
||||
// this.openWindow = window.open(routeData.href, '_blank', 'noopener noreferrer');
|
||||
this.openWindow = window.open(routeData.href);
|
||||
},
|
||||
loadRunPlan() {
|
||||
this.$emit('runPlanLoadShow');
|
||||
},
|
||||
goTheoryQuiz() {
|
||||
this.$emit('goTheoryQuiz');
|
||||
},
|
||||
QrCodeShow(data) {
|
||||
if (this.$refs && data) {
|
||||
this.$refs.qrCode.doShow(data);
|
||||
}
|
||||
},
|
||||
distribute() {
|
||||
if (this.$refs) {
|
||||
this.$refs.distribute.doShow({PermissionType:PermissionType.SIMULATION, mapId: this.$route.query.mapId, prdType: this.$route.query.prdType});
|
||||
}
|
||||
},
|
||||
messageBoardShow() {
|
||||
// this.$refs.messageBoard.doShow();
|
||||
const routeData = this.$router.resolve({
|
||||
path:'/messageBoard',
|
||||
query:{
|
||||
|
@ -9,6 +9,7 @@
|
||||
</el-radio-group>
|
||||
<span class="display-time">{{ formatUsedTime }}</span>
|
||||
<span v-if="demoMode === TrainingMode.TEST" class="display-score">{{ $t('display.lesson.score') }}{{ formatScore }}</span>
|
||||
<el-button v-if="project == 'gzb'" size="small" @click="messageBoardShow">留言板</el-button>
|
||||
</el-row>
|
||||
</div>
|
||||
<div id="teachGroupButton" class="display-draft" :style="{bottom: offsetBottom + 'px'}">
|
||||
@ -35,6 +36,7 @@ import { TrainingMode, UrlConfig } from '@/scripts/ConstDic';
|
||||
import { timeFormat } from '@/utils/date';
|
||||
import { getTrainingStepsDetailNew, loadTrainingInSimulation } from '@/api/jmap/training';
|
||||
import { EventBus } from '@/scripts/event-bus';
|
||||
import { getSessionStorage } from '@/utils/auth';
|
||||
|
||||
export default {
|
||||
name: 'MenuLesson',
|
||||
@ -99,6 +101,9 @@ export default {
|
||||
},
|
||||
prdType() {
|
||||
return this.$route.query.prdType;
|
||||
},
|
||||
project() {
|
||||
return getSessionStorage('project');
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
@ -284,6 +289,16 @@ export default {
|
||||
this.$nextTick(() => {
|
||||
EventBus.$emit('viewLoading', false);
|
||||
});
|
||||
},
|
||||
messageBoardShow() {
|
||||
const routeData = this.$router.resolve({
|
||||
path:'/messageBoard',
|
||||
query:{
|
||||
project: this.project,
|
||||
noPreLogout: true
|
||||
}
|
||||
});
|
||||
window.open(routeData.href, '_blank', 'noopener noreferrer');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -25,8 +25,8 @@
|
||||
|
||||
<div class="display-draft" :class="{'haerbin_btn_box': $route.query.lineCode == '07'}" :style="{bottom: offsetBottom + 'px'}">
|
||||
<el-button-group class="button-group-box">
|
||||
<el-button type="primary" size="small" @click="back">{{ projectDevice||project==='bjd'?'退出':$t('display.demon.back') }}</el-button>
|
||||
<template v-if="!dataError">
|
||||
<el-button v-if="project !='bjd'" type="primary" size="small" @click="back">{{ projectDevice?'退出':$t('display.demon.back') }}</el-button>
|
||||
<template v-if="!dataError&&project != 'bjd'">
|
||||
<template v-if="isScriptRun">
|
||||
<el-button type="danger" size="small" @click="handleQuitQuest">退出剧本</el-button>
|
||||
</template>
|
||||
@ -38,6 +38,8 @@
|
||||
</el-button-group>
|
||||
</div>
|
||||
|
||||
<div style="position:absolute;right:0;bottom:0"><el-button v-if="project ==='bjd'" type="primary" @click="quit">退出</el-button></div>
|
||||
|
||||
<menu-schema
|
||||
ref="menuSchema"
|
||||
:offset="offset"
|
||||
@ -343,7 +345,8 @@ export default {
|
||||
},
|
||||
async back() {
|
||||
this.isGoback = true;
|
||||
if (this.projectDevice || this.project === 'bjd') {
|
||||
if (this.projectDevice) {
|
||||
// || this.project === 'bjd'
|
||||
clearSimulation(this.group).then(res=>{
|
||||
this.$store.dispatch('training/over').then(() => {
|
||||
this.$store.dispatch('LogOut').then(() => {
|
||||
@ -370,6 +373,9 @@ export default {
|
||||
},
|
||||
runPlanLoadShow() {
|
||||
this.$refs.menuSchema.loadRunPlan();
|
||||
},
|
||||
quit() {
|
||||
window.close();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -3,11 +3,22 @@
|
||||
<div v-show="maskOpen" class="mask" :style="{'width': maskWidth}" />
|
||||
<jlmap-visual ref="jlmapVisual" />
|
||||
<div class="menudown">
|
||||
<el-button-group>
|
||||
<el-button type="primary" @click="back">退出</el-button>
|
||||
<el-button-group class="button-group-box">
|
||||
<el-button type="success" :disabled="isDisable" size="small" @click="selectBeginTime">{{ $t('display.demon.drivingByPlan') }}</el-button>
|
||||
<el-button type="danger" size="small" @click="end">{{ $t('display.demon.initialize') }}</el-button>
|
||||
<el-button type="primary" size="small" @click="back">退出</el-button>
|
||||
</el-button-group>
|
||||
</div>
|
||||
<menu-system-time ref="menuSystemTime" :offset="15" :group="group" />
|
||||
<el-button-group ref="button_group_box" class="button_group">
|
||||
<!-- {{ $t('joinTraining.runGraphPreview') }} -->
|
||||
<el-button v-if="running" size="small" @click="viewRunPlan">运行图视图</el-button>
|
||||
<!-- 运行图加载 -->
|
||||
<el-button size="small" @click="dispatcherWorkStation">ATS行调工作站</el-button>
|
||||
<!-- <el-button v-if="!running" size="small" type="warning" @click="loadRunPlan">{{ $t('joinTraining.runGraphLoading') }}</el-button> -->
|
||||
<el-button size="small" @click="distribute">权限分发</el-button>
|
||||
<el-button size="small" @click="messageBoardShow">留言板</el-button>
|
||||
<el-button size="small" @click="contectUs">联系方式</el-button>
|
||||
</el-button-group>
|
||||
<div class="trainExample">
|
||||
<div class="trainExampleL">
|
||||
<div class="trainExampleName">车站 颜色图例</div>
|
||||
@ -40,13 +51,24 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<distribute-draft ref="distribute" @QrCodeShow="QrCodeShow" />
|
||||
<qr-code ref="qrCode" />
|
||||
<menu-system-time ref="menuSystemTime" :offset="15" :group="group" />
|
||||
<contect-us ref="contectUs" />
|
||||
<run-plan-Load ref="runPlanLoad" :group="group" />
|
||||
<set-time ref="setTime" @ConfirmSelectBeginTime="start" />
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import JlmapVisual from '@/views/newMap/jlmapNew/index';
|
||||
// import { Notification } from 'element-ui';
|
||||
import DistributeDraft from '@/views/components/limits/distribute';
|
||||
import QrCode from '@/components/QrCode';
|
||||
import ContectUs from '@/views/newMap/displayNew/dispatherContest/contectUs';
|
||||
import RunPlanLoad from './demon/runPlanLoad';
|
||||
import SetTime from './demon/setTime';
|
||||
import { PermissionType } from '@/scripts/ConstDic';
|
||||
import { loadMapDataById } from '@/utils/loaddata';
|
||||
import { clearSimulation, getSimulationInfoNew } from '@/api/simulation';
|
||||
import { clearSimulation, getSimulationInfoNew, ranAsPlan, exitRunPlan } from '@/api/simulation';
|
||||
import { creatSubscribe, clearSubscribe, displayTopic, jl3dTopic} from '@/utils/stomp';
|
||||
import MenuSystemTime from '@/views/newMap/displayNew/menuSystemTime';
|
||||
import { getToken } from '@/utils/auth';
|
||||
@ -56,13 +78,19 @@ export default {
|
||||
name:'PracticeDisplay',
|
||||
components: {
|
||||
JlmapVisual,
|
||||
MenuSystemTime
|
||||
MenuSystemTime,
|
||||
QrCode,
|
||||
DistributeDraft,
|
||||
ContectUs,
|
||||
SetTime,
|
||||
RunPlanLoad
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
maskOpen: false,
|
||||
maskWidth: '100%',
|
||||
group:''
|
||||
group:'',
|
||||
openWindow:null
|
||||
};
|
||||
},
|
||||
computed:{
|
||||
@ -77,6 +105,12 @@ export default {
|
||||
},
|
||||
height() {
|
||||
return this.$store.state.app.height;
|
||||
},
|
||||
running() {
|
||||
return this.$store.state.training.started;
|
||||
},
|
||||
isDisable() {
|
||||
return this.$store.state.training.started;
|
||||
}
|
||||
},
|
||||
watch:{
|
||||
@ -161,7 +195,16 @@ export default {
|
||||
this.$store.dispatch('config/resize', { width, height });
|
||||
},
|
||||
async back() {
|
||||
window.close();
|
||||
// this.isGoback = true;
|
||||
clearSimulation(this.group).then(res=>{
|
||||
this.$store.dispatch('training/over').then(() => {
|
||||
this.$store.dispatch('LogOut').then(() => {
|
||||
// this.$store.dispatch('training/reset');
|
||||
// this.$store.dispatch('map/mapClear');
|
||||
location.reload();
|
||||
});
|
||||
});
|
||||
});
|
||||
},
|
||||
async statusMessage(list) {
|
||||
await this.$store.dispatch('training/updateMapState', list);
|
||||
@ -193,6 +236,132 @@ export default {
|
||||
}
|
||||
this.dataError = resp.data.dataError;
|
||||
}
|
||||
},
|
||||
distribute() {
|
||||
if (this.$refs) {
|
||||
this.$refs.distribute.doShow({PermissionType:PermissionType.SIMULATION, mapId: this.$route.query.mapId, prdType: this.$route.query.prdType});
|
||||
}
|
||||
},
|
||||
QrCodeShow(data) {
|
||||
if (this.$refs && data) {
|
||||
this.$refs.qrCode.doShow(data);
|
||||
}
|
||||
},
|
||||
messageBoardShow() {
|
||||
// this.$refs.messageBoard.doShow();
|
||||
const routeData = this.$router.resolve({
|
||||
path:'/messageBoard',
|
||||
query:{
|
||||
project: this.$route.query.project,
|
||||
noPreLogout: true
|
||||
}
|
||||
});
|
||||
window.open(routeData.href, '_blank', 'noopener noreferrer');
|
||||
},
|
||||
contectUs() {
|
||||
this.$refs.contectUs.doShow();
|
||||
},
|
||||
viewRunPlan() {
|
||||
const routeData = this.$router.resolve({
|
||||
path:'/planSchedule/window',
|
||||
query:{
|
||||
mapId:this.$route.query.mapId,
|
||||
group:this.$route.query.group,
|
||||
lineCode: this.$route.query.lineCode,
|
||||
project: this.$route.query.project,
|
||||
noPreLogout: true,
|
||||
initTime: this.$store.state.training.initTime
|
||||
}
|
||||
});
|
||||
window.open(routeData.href, '_blank', 'noopener noreferrer');
|
||||
},
|
||||
dispatcherWorkStation() {
|
||||
if (this.openWindow) {
|
||||
this.openWindow.close();
|
||||
}
|
||||
const routeData = this.$router.resolve({
|
||||
path:'/displayNew/demon',
|
||||
query:{
|
||||
mapId:this.$route.query.mapId,
|
||||
group:this.$route.query.group,
|
||||
prdType: this.$route.query.prdType,
|
||||
lineCode: this.$route.query.lineCode,
|
||||
project: this.$route.query.project,
|
||||
noPreLogout: true,
|
||||
goodsId:'',
|
||||
try:'0'
|
||||
}
|
||||
});
|
||||
this.openWindow = window.open(routeData.href);
|
||||
},
|
||||
loadRunPlan() {
|
||||
this.$refs.runPlanLoad.doShow();
|
||||
},
|
||||
selectBeginTime() {
|
||||
this.$refs.setTime.doShow();
|
||||
},
|
||||
end() {
|
||||
exitRunPlan(this.group).then(() => {
|
||||
this.$store.dispatch('training/over').then(() => {
|
||||
this.$store.dispatch('training/setMapDefaultState').then(() => {
|
||||
this.$store.dispatch('map/clearJlmapTrainView');
|
||||
this.$store.dispatch('map/resetActiveTrainList', false);
|
||||
this.$store.dispatch('map/setTrainWindowShow', false);
|
||||
});
|
||||
});
|
||||
}).catch(() => {
|
||||
this.$messageBox(this.$t('display.demon.endSimulationFail'));
|
||||
});
|
||||
},
|
||||
start(model) { // 开始仿真
|
||||
const data = {
|
||||
time: model.initTime
|
||||
};
|
||||
if (this.$route.query.prdType === '04') {
|
||||
data.loadNumber = model.loadNum;
|
||||
}
|
||||
ranAsPlan(data, this.group).then(res => {
|
||||
this.$store.dispatch('training/setInitTime', +new Date(`${new Date().toLocaleDateString()} ${model.initTime}`));
|
||||
}).catch(error => {
|
||||
let message = '';
|
||||
switch (error.code) {
|
||||
case '5001':
|
||||
message = this.$t('error.mapDataError');
|
||||
break;
|
||||
case '5002':
|
||||
message = this.$t('error.runningChartDataError');
|
||||
break;
|
||||
case '5003':
|
||||
message = this.$t('error.runningChartIsNotLoaded');
|
||||
break;
|
||||
case '5004':
|
||||
message = this.$t('error.runningDataError');
|
||||
break;
|
||||
case '5000':
|
||||
message = this.$t('error.systemError');
|
||||
break;
|
||||
case '4000':
|
||||
message = this.$t('error.simulationDoesNotExist');
|
||||
break;
|
||||
case '4001':
|
||||
message = this.$t('error.simulationOperationIsNotDefined');
|
||||
break;
|
||||
case '4002':
|
||||
message = this.$t('error.simulationOperationProcessingMethodNotFound');
|
||||
break;
|
||||
case '4003':
|
||||
message = this.$t('error.simulationOperationFailed');
|
||||
break;
|
||||
case '4004':
|
||||
message = this.$t('error.operationConflict');
|
||||
break;
|
||||
default:
|
||||
message = '按计划行车异常,请退出重试!';
|
||||
// this.$messageBox('按计划行车异常,请退出重试!');
|
||||
break;
|
||||
}
|
||||
this.$messageBox(message + ',' + this.$t('error.startSimulationFailed'));
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
@ -209,7 +378,7 @@ export default {
|
||||
width: 360px;
|
||||
padding: 10px;
|
||||
left: 20px;
|
||||
top: 20px;
|
||||
bottom: 40px;
|
||||
color: #fff;
|
||||
border: 1px #fff solid;
|
||||
border-radius: 3px;
|
||||
@ -237,9 +406,14 @@ export default {
|
||||
margin-left: 10px;
|
||||
}
|
||||
.menudown{
|
||||
bottom:0;
|
||||
right:0;
|
||||
position:absolute;
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
bottom: 15px;
|
||||
}
|
||||
.trainExampleR{display: inline-block;}
|
||||
.button_group{
|
||||
position: absolute;
|
||||
left: 10px;
|
||||
top: 15px;
|
||||
}
|
||||
</style>
|
||||
|
@ -23,6 +23,7 @@
|
||||
<el-button v-if="deviceManageShow" size="small" @click="handleEquipment">设备管理</el-button>
|
||||
<el-button v-if="teachSystemShow" size="small" @click="handleTeach">教学系统</el-button>
|
||||
<el-button v-if="examSystemShow" size="small" @click="handleExam">考试系统</el-button>
|
||||
<el-button v-if="project == 'gzb'" size="small" @click="messageBoardShow">留言板</el-button>
|
||||
</el-button-group>
|
||||
</div>
|
||||
<div class="display-draft" :class="{'display-type-hb': lineCode == '07' && $store.state.training.prdType=='01', 'haerbin_btn_box': lineCode == '07'}" :style="{bottom: offsetBottom + 'px'}">
|
||||
@ -430,6 +431,16 @@ export default {
|
||||
this.btnWidth = 0;
|
||||
}
|
||||
},
|
||||
messageBoardShow() {
|
||||
const routeData = this.$router.resolve({
|
||||
path:'/messageBoard',
|
||||
query:{
|
||||
project: this.project,
|
||||
noPreLogout: true
|
||||
}
|
||||
});
|
||||
window.open(routeData.href, '_blank', 'noopener noreferrer');
|
||||
},
|
||||
handleTeach() {
|
||||
getPublishLessonListByMapId({mapId: this.mapId}).then(resp => {
|
||||
const lesson = resp.data.find(item => {
|
||||
|
@ -105,7 +105,7 @@
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-button type="primary" size="mini" @click="query">查询</el-button>
|
||||
<el-button type="primary" class="uploadDemo" size="mini" style="margin-top: 10px;">
|
||||
<el-button :loading="loadingStudentInfo" type="primary" class="uploadDemo" size="mini" style="margin-top: 10px;">
|
||||
<input
|
||||
id="importResults"
|
||||
ref="files"
|
||||
@ -190,6 +190,7 @@ export default {
|
||||
};
|
||||
return {
|
||||
loading: false,
|
||||
loadingStudentInfo: false,
|
||||
classList: [],
|
||||
localLessonList: [],
|
||||
centerLessonList: [],
|
||||
@ -446,17 +447,21 @@ export default {
|
||||
}
|
||||
studentData.students = students;
|
||||
}
|
||||
that.loadingStudentInfo = true;
|
||||
importStudentResults(ProjectCode[that.project], studentData).then(resp => {
|
||||
that.classList = [];
|
||||
getProjectClassList(ProjectCode[that.project]).then(respon => {
|
||||
that.classList = respon.data;
|
||||
that.loadingStudentInfo = false;
|
||||
}).catch(() =>{
|
||||
that.$message.error('获取班级数据失败!');
|
||||
that.loadingStudentInfo = false;
|
||||
});
|
||||
that.$message.success('学生信息导入成功!');
|
||||
|
||||
}).catch(() => {
|
||||
that.$message.error('学生信息导入失败!');
|
||||
that.loadingStudentInfo = false;
|
||||
});
|
||||
} catch (error) {
|
||||
that.$message.warning(`解析成绩单失败:${error}`);
|
||||
|
@ -2,7 +2,7 @@
|
||||
<div>
|
||||
<QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" />
|
||||
<edit-company ref="editCompany" @reloadTable="reloadTable" />
|
||||
<company-manager ref="companyManager" />
|
||||
<company-manager ref="companyManager" @reloadTable="reloadTable" />
|
||||
<qr-code ref="qrCode" />
|
||||
</div>
|
||||
</template>
|
||||
@ -50,7 +50,10 @@ export default {
|
||||
},
|
||||
{
|
||||
title: '单位管理人员',
|
||||
prop: ''
|
||||
prop: 'managerNames',
|
||||
type: 'tagMore',
|
||||
columnValue: (row) => { return row.managerNames; },
|
||||
tagType: (row) => { return 'success'; }
|
||||
},
|
||||
{
|
||||
type: 'button',
|
||||
|
@ -98,6 +98,9 @@ export default {
|
||||
doShow(companyId) {
|
||||
this.dialogVisible = true;
|
||||
this.companyId = companyId;
|
||||
this.$nextTick(() => {
|
||||
this.reloadTable();
|
||||
});
|
||||
},
|
||||
handleClose() {
|
||||
this.dialogVisible = false;
|
||||
@ -107,7 +110,7 @@ export default {
|
||||
return this.companyMap[companyId];
|
||||
},
|
||||
reloadTable() {
|
||||
this.queryList.reload();
|
||||
this.queryList.queryReload();
|
||||
},
|
||||
addParams(params) {
|
||||
params.companyId = this.companyId;
|
||||
@ -122,6 +125,8 @@ export default {
|
||||
});
|
||||
setCompanyManager(this.companyId, userIds).then(resp => {
|
||||
this.$message.success('绑定单位管理员成功!');
|
||||
this.dialogVisible = false;
|
||||
this.$emit('reloadTable');
|
||||
}).catch(error => {
|
||||
this.$message.error('绑定单位管理员失败!');
|
||||
console.error(error);
|
||||
|
@ -1,37 +1,39 @@
|
||||
<template>
|
||||
<div v-loading="loading" class="joylink-card map-list-main">
|
||||
<div class="clearfix">
|
||||
<span>{{ $t('global.mapList') }}</span>
|
||||
<div>
|
||||
<div class="mapListName">
|
||||
<span>{{ $t('global.mapList') }}</span>
|
||||
</div>
|
||||
<template v-if="!IsProject">
|
||||
<filter-city ref="filerCity" filter-empty local-param-name="training_cityCode" @filterSelectChange="refresh" />
|
||||
<el-input v-model="filterText" :placeholder="this.$t('global.filteringKeywords')" clearable />
|
||||
</template>
|
||||
</div>
|
||||
<div class="left-map-list">
|
||||
<filter-city v-if="!getMapByCode" ref="filerCity" filter-empty local-param-name="training_cityCode" @filterSelectChange="refresh" />
|
||||
<el-input v-if="!getMapByCode" v-model="filterText" :placeholder="this.$t('global.filteringKeywords')" clearable />
|
||||
<div style="height: calc(100% - 76px); overflow: auto;">
|
||||
<el-tree
|
||||
ref="tree"
|
||||
:data="treeList"
|
||||
node-key="key"
|
||||
:props="{children: 'children',label: 'name'}"
|
||||
highlight-current
|
||||
:span="22"
|
||||
:filter-node-method="filterNode"
|
||||
:default-expanded-keys="expandList"
|
||||
@node-click="clickEvent"
|
||||
@node-expand="nodeExpand"
|
||||
@node-collapse="nodeCollapse"
|
||||
>
|
||||
<span slot-scope="{ node }">
|
||||
<span
|
||||
class="el-icon-tickets"
|
||||
/>
|
||||
<span v-if="node.data.id ==='Simulation'"> {{ node.data.name+ $t('global.simulationSystem') }}</span>
|
||||
<span v-else-if="node.data.id ==='Lesson'"> {{ node.data.name+ $t('global.lessonSystem') }}</span>
|
||||
<span v-else-if="node.data.id ==='Exam'"> {{ node.data.name+ $t('global.examSystem') }}</span>
|
||||
<span v-else-if="node.data.id ==='Plan'"> {{ node.data.name+ $t('global.runPlanSystem') }}</span>
|
||||
<span v-else> {{ node.data.name }}</span>
|
||||
</span>
|
||||
</el-tree>
|
||||
</div>
|
||||
<el-tree
|
||||
ref="tree"
|
||||
:data="treeList"
|
||||
node-key="key"
|
||||
:props="{children: 'children',label: 'name'}"
|
||||
highlight-current
|
||||
:span="22"
|
||||
:filter-node-method="filterNode"
|
||||
:default-expanded-keys="expandList"
|
||||
@node-click="clickEvent"
|
||||
@node-expand="nodeExpand"
|
||||
@node-collapse="nodeCollapse"
|
||||
>
|
||||
<span slot-scope="{ node }">
|
||||
<span
|
||||
class="el-icon-tickets"
|
||||
/>
|
||||
<span v-if="node.data.id ==='Simulation'"> {{ node.data.name+ $t('global.simulationSystem') }}</span>
|
||||
<span v-else-if="node.data.id ==='Lesson'"> {{ node.data.name+ $t('global.lessonSystem') }}</span>
|
||||
<span v-else-if="node.data.id ==='Exam'"> {{ node.data.name+ $t('global.examSystem') }}</span>
|
||||
<span v-else-if="node.data.id ==='Plan'"> {{ node.data.name+ $t('global.runPlanSystem') }}</span>
|
||||
<span v-else> {{ node.data.name }}</span>
|
||||
</span>
|
||||
</el-tree>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@ -65,9 +67,9 @@ export default {
|
||||
project() {
|
||||
return getSessionStorage('project');
|
||||
},
|
||||
getMapByCode() {
|
||||
const project = getSessionStorage('project');
|
||||
return GetMapListByProjectList.includes(project);
|
||||
IsProject() {
|
||||
// 实训平台 是否为通过项目code获取地图列表的项目
|
||||
return GetMapListByProjectList.includes(this.project);
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
@ -76,7 +78,7 @@ export default {
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
if (this.getMapByCode) {
|
||||
if (this.IsProject) {
|
||||
this.refresh();
|
||||
}
|
||||
},
|
||||
@ -148,7 +150,7 @@ export default {
|
||||
this.filterSelect = filterSelect;
|
||||
try {
|
||||
let res = {};
|
||||
if (this.getMapByCode) {
|
||||
if (this.IsProject) {
|
||||
res = await getSubSystemByProjectCode();
|
||||
} else {
|
||||
res = await getTrainingSystemList(filterSelect);
|
||||
@ -210,37 +212,26 @@ export default {
|
||||
};
|
||||
</script>
|
||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||
.clearfix{
|
||||
width:100%;
|
||||
height: 47px;
|
||||
line-height: 47px;
|
||||
padding-left: 17px;
|
||||
position:absolute;
|
||||
}
|
||||
.back-home {
|
||||
float: right;
|
||||
cursor: pointer;
|
||||
|
||||
&:hover {
|
||||
color: #3ea726;
|
||||
}
|
||||
.mapListName{
|
||||
padding: 15px 0px 15px 17px;
|
||||
}
|
||||
.left-map-list{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding-top: 47px;
|
||||
flex: 1;
|
||||
overflow: auto;
|
||||
padding-bottom: 10px;
|
||||
padding-top: 5px;
|
||||
}
|
||||
.map-list-main{
|
||||
text-align:left;
|
||||
height: 100%;
|
||||
position: relative;
|
||||
display:flex;
|
||||
flex-direction:column;
|
||||
}
|
||||
</style>
|
||||
<style>
|
||||
.el-tree {
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.el-tree-node.is-current>.el-tree-node__content {
|
||||
background-color: #e4e3e3 !important;
|
||||
}
|
||||
|
@ -61,23 +61,14 @@ export default {
|
||||
</script>
|
||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||
@import "src/styles/mixin.scss";
|
||||
|
||||
.app-wrapper {
|
||||
@include clearfix;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.examList {
|
||||
height: 100%;
|
||||
float: left;
|
||||
}
|
||||
/deep/ .scrollbar-wrapper{
|
||||
overflow-x: hidden;
|
||||
}
|
||||
/deep/ .el-scrollbar__bar.is-horizontal {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
|
Loading…
Reference in New Issue
Block a user