Merge branch 'test_dispaly' of https://git.code.tencent.com/lian-cbtc/jl-client into test_dispaly

This commit is contained in:
fan 2022-10-25 18:02:42 +08:00
commit 9e4576d30c
13 changed files with 94 additions and 45 deletions

View File

@ -1,3 +1,4 @@
import store from '@/store/index';
import Group from 'zrender/src/container/Group'; import Group from 'zrender/src/container/Group';
import Rect from 'zrender/src/graphic/shape/Rect'; import Rect from 'zrender/src/graphic/shape/Rect';
import Text from 'zrender/src/graphic/Text'; import Text from 'zrender/src/graphic/Text';
@ -52,17 +53,19 @@ class ESolidStand extends Group {
this.holdTrain.hide(); this.holdTrain.hide();
} }
const path = window.location.href; // const path = window.location.href;
const search = window.location.search; // const search = window.location.search;
if (path.includes('/display/demon') && search.includes('project=bjd')) { // if (path.includes('/display/demon') && search.includes('project=bjd')) {
if (store.state.map.picture == 'largePassengerView') {
// 文字描述 // 文字描述
const modelNum = model.num ? model.num : 0;
this.arrowText = new Text({ this.arrowText = new Text({
zlevel: this.model.zlevel, zlevel: this.model.zlevel,
z: this.model.z + 10, z: this.model.z + 10,
style: { style: {
x: computedPosition.x + 35, x: computedPosition.x + 35,
y: computedPosition.y - 20, y: computedPosition.y - 20,
text: `${'站台人数: ' + model.num ? model.num : 0}`, text: '站台人数: ' + modelNum,
textFill: '#000', textFill: '#000',
textAlign: 'left', textAlign: 'left',
textFont: 12 + 'px consolas', textFont: 12 + 'px consolas',
@ -70,6 +73,7 @@ class ESolidStand extends Group {
textBackgroundColor: style.tipBackgroundColor textBackgroundColor: style.tipBackgroundColor
} }
}); });
console.log('站台人数: ', modelNum);
this.add(this.arrowText); this.add(this.arrowText);
this.arrowText.hide(); this.arrowText.hide();
this.on('mouseover', () => { this.on('mouseover', () => {
@ -124,9 +128,10 @@ class ESolidStand extends Group {
setState(model) { setState(model) {
const style = this.model.style; const style = this.model.style;
const path = window.location.href; // const path = window.location.href;
const search = window.location.search; // const search = window.location.search;
if (!(path.includes('/display/demon') && search.includes('project=bjd'))) { // if (!(path.includes('/display/demon') && search.includes('project=bjd'))) {
if (store.state.map.picture != 'largePassengerView') {
// 列车跳停 // 列车跳停
model.assignSkip && this.setColor(style.StationStand.solidStand.designatedJumpStopColor); model.assignSkip && this.setColor(style.StationStand.solidStand.designatedJumpStopColor);
// 全部跳停 // 全部跳停

View File

@ -106,7 +106,8 @@ class EMouse extends Group {
const path = window.location.href; const path = window.location.href;
const search = window.location.search; const search = window.location.search;
const stationNames = new Map(store.state.map.map.stationList.map(s=>[s.code, s.name])); const stationNames = new Map(store.state.map.map.stationList.map(s=>[s.code, s.name]));
if (!(path.includes('/display/demon') && search.includes('project=bjd'))) { // if (!(path.includes('/display/demon') && search.includes('project=bjd'))) {
if (store.state.map.picture != 'largePassengerView') {
if (LangStorage.getLang() == 'en') { if (LangStorage.getLang() == 'en') {
text = ` The planned train: ${trainType} \n Table No.: ${this.device.model.serviceNumber} \n Train Trip No.: ${this.device.model.tripNumber}\n Destination: ${this.device.model.destinationCode ? this.device.model.destinationCode : ''}\n Train No.: ${this.device.model.groupNumber}\n Early or late: ${destinationText}\n Direction: ${direction ? 'up' : 'down'}\n Crew No.: \n Start Station: \n Terminal Station: \n Occupied Track: ${this.device.model.sectionModel ? (this.device.model.sectionModel.parentName ? this.device.model.sectionModel.parentName : this.device.model.sectionModel.name) : ''}\n Current Station: \n Train-ground communication: normal \n Operation Speed level: 4 \n Detained: ${this.device.model.hold ? 'Detained' : 'Normal'}\n \n 跳停状态: ${this.device.model.jump ? 'Skip to continue moving' : 'Normal'}Stationary: ${!this.device.model.stop ? 'No' : 'Yes'}\n Blocked: No \n Speed: ${this.device.model.speed || 0} km/h \n Authorized Distance: ${this.device.model.maLen || 0} m`; text = ` The planned train: ${trainType} \n Table No.: ${this.device.model.serviceNumber} \n Train Trip No.: ${this.device.model.tripNumber}\n Destination: ${this.device.model.destinationCode ? this.device.model.destinationCode : ''}\n Train No.: ${this.device.model.groupNumber}\n Early or late: ${destinationText}\n Direction: ${direction ? 'up' : 'down'}\n Crew No.: \n Start Station: \n Terminal Station: \n Occupied Track: ${this.device.model.sectionModel ? (this.device.model.sectionModel.parentName ? this.device.model.sectionModel.parentName : this.device.model.sectionModel.name) : ''}\n Current Station: \n Train-ground communication: normal \n Operation Speed level: 4 \n Detained: ${this.device.model.hold ? 'Detained' : 'Normal'}\n \n 跳停状态: ${this.device.model.jump ? 'Skip to continue moving' : 'Normal'}Stationary: ${!this.device.model.stop ? 'No' : 'Yes'}\n Blocked: No \n Speed: ${this.device.model.speed || 0} km/h \n Authorized Distance: ${this.device.model.maLen || 0} m`;
} else { } else {
@ -117,7 +118,7 @@ class EMouse extends Group {
} }
} }
} else { } else {
text = `${'车内人数: ' + this.device.model.num}`; text = `${'车内人数: ' + this.device.model.num || 0}`;
} }
const trainTip = this.device.style.Train.common.trainTip; const trainTip = this.device.style.Train.common.trainTip;
@ -138,7 +139,8 @@ class EMouse extends Group {
} }
}); });
if (path.includes('/display/demon') && search.includes('project=bjd')) { // if (path.includes('/display/demon') && search.includes('project=bjd')) {
if (store.state.map.picture == 'largePassengerView') {
this.arrowText.setStyle('textFont', 12 + 'px consolas'); this.arrowText.setStyle('textFont', 12 + 'px consolas');
this.arrowText.setStyle('y', this.device.model.point.y + 15); this.arrowText.setStyle('y', this.device.model.point.y + 15);
this.arrowText.setStyle('x', this.device.model.point.x + 55); this.arrowText.setStyle('x', this.device.model.point.x + 55);

View File

@ -389,9 +389,10 @@ export default class Train extends Group {
// this.setDriveMode(model.driveMode); // this.setDriveMode(model.driveMode);
// } // }
this.setRunStatus(model.stop, flag); this.setRunStatus(model.stop, flag);
const path = window.location.href; // const path = window.location.href;
const search = window.location.search; // const search = window.location.search;
if (!(path.includes('/display/demon') && search.includes('project=bjd'))) { // if (!(path.includes('/display/demon') && search.includes('project=bjd'))) {
if (store.state.map.picture != 'largePassengerView') {
if (this.style.Train.common.trainHeadColorChangeMode) { if (this.style.Train.common.trainHeadColorChangeMode) {
this.setDriveMode(model.driveMode + model.runLevel); this.setDriveMode(model.driveMode + model.runLevel);
} else { } else {
@ -414,7 +415,8 @@ export default class Train extends Group {
if (style.Section.trainPosition.display) { if (style.Section.trainPosition.display) {
this.updateSection(object); this.updateSection(object);
} }
if (path.includes('/display/demon') && search.includes('project=bjd')) { // if (path.includes('/display/demon') && search.includes('project=bjd')) {
if (store.state.map.picture == 'largePassengerView') {
this.handlePassagerColor(model.num); this.handlePassagerColor(model.num);
} }
if (style.Train.trainBody.trainBodyFaultFlashColor) { if (style.Train.trainBody.trainBodyFaultFlashColor) {

View File

@ -257,6 +257,7 @@ const map = {
clearButtonCount: 0, // 清除操作按钮计数器 clearButtonCount: 0, // 清除操作按钮计数器
stationControlMap: {}, // 站控显示的map { 当前车站:显示车站列表 } stationControlMap: {}, // 站控显示的map { 当前车站:显示车站列表 }
pictureDeviceMap: {}, // 画面设备修正map pictureDeviceMap: {}, // 画面设备修正map
picture:'', // 当前的客户端
domConfig: null, // 仿真配置 domConfig: null, // 仿真配置
initClient: '' // 仿真初始客户端 initClient: '' // 仿真初始客户端
}, },
@ -1151,6 +1152,9 @@ const map = {
}, },
setPictureDeviceMap: (state, pictureDeviceMap) => { setPictureDeviceMap: (state, pictureDeviceMap) => {
state.pictureDeviceMap = pictureDeviceMap; state.pictureDeviceMap = pictureDeviceMap;
},
setPicture: (state, picture) => {
state.picture = picture;
} }
}, },
@ -1430,6 +1434,9 @@ const map = {
}, },
setPictureDeviceMap: ({ commit }, pictureDeviceMap) => { setPictureDeviceMap: ({ commit }, pictureDeviceMap) => {
commit('setPictureDeviceMap', pictureDeviceMap); commit('setPictureDeviceMap', pictureDeviceMap);
},
setPicture: ({ commit }, picture) => {
commit('setPicture', picture);
} }
} }
}; };

View File

@ -49,7 +49,7 @@ export default {
}, },
labels: { labels: {
type: 'select', type: 'select',
label: '标 签', label: '分 类',
config: { config: {
multiple: true, multiple: true,
data: [] data: []
@ -68,7 +68,7 @@ export default {
type: 'html' type: 'html'
}, },
{ {
title: '标 签', title: '分 类',
prop: 'tags', prop: 'tags',
type: 'tagMore', type: 'tagMore',
width: '200', width: '200',
@ -274,7 +274,7 @@ export default {
const objHeader = { const objHeader = {
questionTypeIndex: '题型(必填)', questionTypeIndex: '题型(必填)',
topicIndex: '题干(必填)', topicIndex: '题干(必填)',
tagsIndex: '标签', tagsIndex: '分类',
option1Index: '选项A必填', option1Index: '选项A必填',
option2Index: '选项B必填', option2Index: '选项B必填',
option3Index: '选项C', option3Index: '选项C',
@ -448,8 +448,8 @@ export default {
exportTemplate() { exportTemplate() {
const wb = XLSX.utils.book_new(); const wb = XLSX.utils.book_new();
const data1 = [{A: '理论试题导入模板', B: '', C:'', D:'', E:'', F: '', G: '', H: '', I: '', J: '', K: ''}]; const data1 = [{A: '理论试题导入模板', B: '', C:'', D:'', E:'', F: '', G: '', H: '', I: '', J: '', K: ''}];
const data2 = [{A: '说明1、本表表头第一行到第三行内容不能修改删除;\n 2、支持批量导入的题型单选题多选题判断题题型不能自定义只能按照表格提供的进行录入;\n 3、【判断题】在选项A中可填写√ 或正确选项B中填写× 或错误答案填写A或B\n 4、【标签】多个标签项使用空格隔开', B: '', C:'', D:'', E:'', F: '', G: '', H: '', I: '', J: '', K: ''}]; const data2 = [{A: '说明1、本表表头第一行到第三行内容不能修改删除;\n 2、支持批量导入的题型单选题多选题判断题题型不能自定义只能按照表格提供的进行录入;\n 3、【判断题】在选项A中可填写√ 或正确选项B中填写× 或错误答案填写A或B\n 4、【分类】多个分类项使用空格隔开', B: '', C:'', D:'', E:'', F: '', G: '', H: '', I: '', J: '', K: ''}];
const data3 = [{A: '序号', B: '题干(必填)', C:'题型(必填)', D:'选项A必填', E:'选项B必填', F: '选项C', G: '选项D', H: '选项E', I: '选项F', J: '正确答案(必填)', K: '标签'}]; const data3 = [{A: '序号', B: '题干(必填)', C:'题型(必填)', D:'选项A必填', E:'选项B必填', F: '选项C', G: '选项D', H: '选项E', I: '选项F', J: '正确答案(必填)', K: '分类'}];
const data = [...data1, ...data2, ...data3]; const data = [...data1, ...data2, ...data3];
const mapType = { const mapType = {
select: '单选题', select: '单选题',

View File

@ -18,7 +18,7 @@
<div v-html="scope.row.topic" /> <div v-html="scope.row.topic" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="tags" label="标签" width="200"> <el-table-column prop="tags" label="分类" width="200">
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag v-for="item in getTagesArr(scope.row.tags)" :key="item" type="primary" disable-transitions style="margin-right: 10px;">{{ item }}</el-tag> <el-tag v-for="item in getTagesArr(scope.row.tags)" :key="item" type="primary" disable-transitions style="margin-right: 10px;">{{ item }}</el-tag>
</template> </template>

View File

@ -11,8 +11,8 @@
<el-option v-for="it in QuestionTypeList" :key="it.value" :label="it.label" :value="it.value" /> <el-option v-for="it in QuestionTypeList" :key="it.value" :label="it.label" :value="it.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="标 签"> <el-form-item label="分 类">
<el-select v-model="tagsArr" multiple filterable allow-create default-first-option placeholder="请选择标签" @change="tagsChange"> <el-select v-model="tagsArr" multiple filterable allow-create default-first-option placeholder="请选择分类" @change="tagsChange">
<el-option v-for="item in labelList" :key="item" :label="item" :value="item" /> <el-option v-for="item in labelList" :key="item" :label="item" :value="item" />
</el-select> </el-select>
</el-form-item> </el-form-item>

View File

@ -4,7 +4,7 @@
<div>满分: {{ composition.fullScore }}</div> <div>满分: {{ composition.fullScore }}</div>
<div>考试时间: {{ composition.validDuration }}分钟</div> <div>考试时间: {{ composition.validDuration }}分钟</div>
</div> </div>
<div class="legend-area"> <!-- <div class="legend-area">
<div class="legend"> <div class="legend">
<div class="box finished"></div> <div class="box finished"></div>
<div class="text">已作答</div> <div class="text">已作答</div>
@ -13,7 +13,7 @@
<div class="box"></div> <div class="box"></div>
<div class="text">未作答</div> <div class="text">未作答</div>
</div> </div>
</div> </div> -->
<div>理论题</div> <div>理论题</div>
<div class="questionList"> <div class="questionList">
<div <div
@ -151,21 +151,21 @@ export default {
.header { .header {
padding: 10px; padding: 10px;
} }
.legend-area { // .legend-area {
display: flex; // display: flex;
justify-content: space-evenly; // justify-content: space-evenly;
.legend { // .legend {
display: flex; // display: flex;
.box { // .box {
width: 1rem; // width: 1rem;
height: 1rem; // height: 1rem;
background: #eee; // background: #eee;
} // }
.finished { // .finished {
border: 1px solid #67c23a; // background: #409eff;
} // }
} // }
} // }
.questionList { .questionList {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
@ -178,6 +178,7 @@ export default {
text-align: center; text-align: center;
line-height: 30px; line-height: 30px;
margin: 3px; margin: 3px;
border: 2px solid transparent;
cursor: pointer; cursor: pointer;
&:hover { &:hover {
background-color: #ccc; background-color: #ccc;
@ -188,14 +189,17 @@ export default {
} }
} }
.current { .current {
background: #409eff; border: 2px dashed #666;
color: #fff;
&:hover { &:hover {
background: #66b1ff; background: #66b1ff;
} }
} }
.submited { .submited {
border: 1px solid #67c23a; background: #409eff;
color: #fff;
&:hover {
background-color: #66b1ff;
}
} }
} }
.footer { .footer {

View File

@ -354,7 +354,17 @@ export default {
}); });
} }
this.$refs.tree && this.$refs.tree.filter(this.queryMember); this.$refs.tree && this.$refs.tree.filter(this.queryMember);
},
'$store.state.socket.simulationRoleList':function(list) {
if (list && list.length) { //
this.checkRoleChange(list);
}
} }
// '$store.state.socket.simulationRoleList':function(val) {
// if (val && val.length) {
// this.handlerMemberOnOff(val);
// }
// }
}, },
mounted() { mounted() {
}, },
@ -412,10 +422,26 @@ export default {
driverNoShow = false; driverNoShow = false;
} }
return (data.labelName.indexOf(value) !== -1 || flag) && driverNoShow; return (data.labelName.indexOf(value) !== -1 || flag) && driverNoShow;
},
checkRoleChange(list) {
list.forEach(each => {
const item = each.body;
if (item.messageType === 'PLAY_CHANGE' && item.userId == this.userId) {
const userRole = item.type || 'AUDIENCE';
// this.userRole = item.type || 'AUDIENCE';
this.$store.dispatch('training/setRoleDeviceCode', item.deviceCode);
this.$store.dispatch('training/setUserRole', userRole);
this.$store.dispatch('training/setRoles', userRole);
// this.deviceCode = item.deviceCode;
// this.setSimulationPrdType(this.centralizedStationMap[item.deviceCode]);
this.$store.dispatch('training/updateMemberAndUser', { simulationUserList: [item], userId: this.userId });
}
});
} }
// handlerMemberOnOff(data) { // handlerMemberOnOff(data) {
// this.$store.dispatch('training/updateMemberAndUser', { simulationUserList: data, userId: this.userId }); // this.$store.dispatch('training/updateMemberAndUser', { simulationUserList: data, userId: this.userId });
// } // }
} }
}; };
</script> </script>

View File

@ -166,6 +166,7 @@ export default {
}, },
pictureChange(val) { pictureChange(val) {
this.picture = val; this.picture = val;
this.$store.dispatch('map/setPicture', val);
if (val === 'ibp') { if (val === 'ibp') {
this.$nextTick(() => { this.$refs.ibpPlate.show(this.roleDeviceCode, ''); }); this.$nextTick(() => { this.$refs.ibpPlate.show(this.roleDeviceCode, ''); });
} else if (val === 'drivingPlan') { } else if (val === 'drivingPlan') {

View File

@ -169,6 +169,7 @@ export default {
} else { } else {
currentType = 'subway'; currentType = 'subway';
} }
this.terminalList = [];
[...this.commonTerminal, ...this.terminalMap[currentType]].forEach(item => { [...this.commonTerminal, ...this.terminalMap[currentType]].forEach(item => {
if (item.roleList.includes(this.roles)) { if (item.roleList.includes(this.roles)) {
this.terminalList.push(item); this.terminalList.push(item);

View File

@ -393,9 +393,10 @@ export default {
}, },
// //
onSelected(em) { onSelected(em) {
const path = window.location.href; // const path = window.location.href;
const search = window.location.search; // const search = window.location.search;
if (path.includes('/display/demon') && search.includes('project=bjd')) { // if (path.includes('/display/demon') && search.includes('project=bjd')) {
if (this.$store.state.map.picture == 'largePassengerView') {
if (em.deviceType == 'StationStand') { if (em.deviceType == 'StationStand') {
runPassenger(this.$route.query.group, em.deviceCode).then(netdata => { runPassenger(this.$route.query.group, em.deviceCode).then(netdata => {
if (netdata.data) { if (netdata.data) {