This commit is contained in:
zyy 2020-12-03 14:01:27 +08:00
commit 704356cec9
27 changed files with 703 additions and 373 deletions

View File

@ -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();

View File

@ -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', // 公里标颜色

View File

@ -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', // 公里标颜色

View File

@ -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, // 分隔符宽度

View File

@ -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', // 公里标颜色

View File

@ -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() {

View File

@ -33,7 +33,6 @@ export default {
components: {
MenuBar,
MenuButton,
MenuCancel,
MenuSignal,
MenuSwitch,
MenuSection,

View File

@ -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 === '退出') {

View File

@ -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{

View 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>

View File

@ -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;

View File

@ -766,7 +766,7 @@ export const asyncRouter = [
{
// 单位管理
path: 'companyManage',
hidden: true,
// hidden: true,
component: CompanyManage,
meta: {
i18n: 'router.companyManage'

View File

@ -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);
}
});
});
}

View File

@ -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'; // 张赛

View File

@ -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>&nbsp;{{ 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>&nbsp;{{ 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;
}

View File

@ -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;

View File

@ -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%;

View File

@ -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:{

View File

@ -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');
}
}
};

View File

@ -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();
}
}
};

View File

@ -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>

View File

@ -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 => {

View File

@ -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}`);

View File

@ -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',

View File

@ -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);

View File

@ -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'">&nbsp;{{ node.data.name+ $t('global.simulationSystem') }}</span>
<span v-else-if="node.data.id ==='Lesson'">&nbsp;{{ node.data.name+ $t('global.lessonSystem') }}</span>
<span v-else-if="node.data.id ==='Exam'">&nbsp;{{ node.data.name+ $t('global.examSystem') }}</span>
<span v-else-if="node.data.id ==='Plan'">&nbsp;{{ node.data.name+ $t('global.runPlanSystem') }}</span>
<span v-else>&nbsp;{{ 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'">&nbsp;{{ node.data.name+ $t('global.simulationSystem') }}</span>
<span v-else-if="node.data.id ==='Lesson'">&nbsp;{{ node.data.name+ $t('global.lessonSystem') }}</span>
<span v-else-if="node.data.id ==='Exam'">&nbsp;{{ node.data.name+ $t('global.examSystem') }}</span>
<span v-else-if="node.data.id ==='Plan'">&nbsp;{{ node.data.name+ $t('global.runPlanSystem') }}</span>
<span v-else>&nbsp;{{ 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;
}

View File

@ -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>