diff --git a/src/api/management/user.js b/src/api/management/user.js index 440875834..a510deb0c 100644 --- a/src/api/management/user.js +++ b/src/api/management/user.js @@ -178,3 +178,12 @@ export function getBindWxQrCodeUrl() { method: 'get' }); } + +// 绑定单位 +export function bindCompany(data) { + return request({ + url: `/api/company/bind/company?${data}`, + method: 'put' + }); +} + diff --git a/src/i18n/langs/en/map.js b/src/i18n/langs/en/map.js index 15ce722a0..611dd80c9 100644 --- a/src/i18n/langs/en/map.js +++ b/src/i18n/langs/en/map.js @@ -569,11 +569,9 @@ export default { signalSectionSuccessful: 'Signal close section created successfully!', signalSectionUpdateSucceeded: 'Update signal close to section successful!', - crossCoding:'Cross code', crossName:'Cross name', - relateSwitchList:'Related switchList', + relateSectionList:'Related sectionList', cross:'cross', - generateCross:'generate cross', belongsSection: 'Belongs section:', coordinateMode: 'Coordinate mode', diff --git a/src/i18n/langs/en/rules.js b/src/i18n/langs/en/rules.js index d9ef1226a..f71c83cdd 100644 --- a/src/i18n/langs/en/rules.js +++ b/src/i18n/langs/en/rules.js @@ -25,9 +25,7 @@ export default { linkSelectName: 'Enter the Link name', linkSelectDisplayLength: 'Please enter the actual length of the Link', - pleaseSelectCross:'Please select cross', pleaseInputCrossName:'Please input cross name', - pleaseSelectSwitch:'Please select switch', lengthShow: 'According to the length of the:', lengthFact: 'The real length:', diff --git a/src/i18n/langs/zh/map.js b/src/i18n/langs/zh/map.js index b4b252df7..b2cee0a22 100644 --- a/src/i18n/langs/zh/map.js +++ b/src/i18n/langs/zh/map.js @@ -563,11 +563,9 @@ export default { interlockingBlocks: '联锁区段', alwaysRed: '是否总是显示红灯', - crossCoding:'岔心编号', crossName:'岔心名称', - relateSwitchList:'关联道岔', + relateSectionList:'关联区段', cross:'岔心', - generateCross:'一键生成岔心', belongsSection: '所属区段:', coordinateMode: '坐标方式', diff --git a/src/i18n/langs/zh/rules.js b/src/i18n/langs/zh/rules.js index 42b83ff4a..b38c1dcd6 100644 --- a/src/i18n/langs/zh/rules.js +++ b/src/i18n/langs/zh/rules.js @@ -24,9 +24,7 @@ export default { linkSelectName: '请输入Link名称', linkSelectDisplayLength: '请输入Link实际长度', - pleaseSelectCross:'请选择岔心', pleaseInputCrossName:'请输入岔心名称', - pleaseSelectSwitch:'请选择道岔', lengthShow: '显示长度:', lengthFact: '真实长度:', diff --git a/src/jlmap3d/jl3dtrafficplan/sandbox/sandboxconnect.js b/src/jlmap3d/jl3dtrafficplan/sandbox/sandboxconnect.js index 764f53d7f..1c7371430 100644 --- a/src/jlmap3d/jl3dtrafficplan/sandbox/sandboxconnect.js +++ b/src/jlmap3d/jl3dtrafficplan/sandbox/sandboxconnect.js @@ -116,7 +116,9 @@ export function sandBoxConnect(manager,routegroup,section,signal,station,train ) train.trainGroup.add(train.trainlist[data.body[i].code]); }else{ let realprogress = section.topSectionList[data.body[i].section].leftProgress+(section.topSectionList[data.body[i].section].rightProgress - section.topSectionList[data.body[i].section].leftProgress)*data.body[i].offset; - train.trainlist[data.body[i].code].position.copy(manager.topCurve.getPoint(realprogress)); + let realpos = manager.topCurve.getPoint(realprogress); + train.trainlist[data.body[i].code].position.x = realpos.x; + train.trainlist[data.body[i].code].position.z = realpos.z; train.trainlist[data.body[i].code].up = new THREE.Vector3(1,0,0); let tangent = manager.topCurve.getTangentAt(realprogress).normalize(); @@ -144,7 +146,10 @@ export function sandBoxConnect(manager,routegroup,section,signal,station,train ) }else{ let realprogress = section.downSectionList[data.body[i].section].leftProgress +(section.downSectionList[data.body[i].section].rightProgress - section.downSectionList[data.body[i].section].leftProgress)*data.body[i].offset; - train.trainlist[data.body[i].code].position.copy(manager.downCurve.getPoint(realprogress)); + let realpos = manager.downCurve.getPoint(realprogress); + train.trainlist[data.body[i].code].position.x = realpos.x; + train.trainlist[data.body[i].code].position.z = realpos.z; + train.trainlist[data.body[i].code].up = new THREE.Vector3(-1,0,0); let tangent = manager.downCurve.getTangentAt(realprogress).normalize(); diff --git a/src/jlmap3d/jl3dtrafficplan/sandbox/signalmodel.js b/src/jlmap3d/jl3dtrafficplan/sandbox/signalmodel.js index 1e416fd90..42afa1b83 100644 --- a/src/jlmap3d/jl3dtrafficplan/sandbox/signalmodel.js +++ b/src/jlmap3d/jl3dtrafficplan/sandbox/signalmodel.js @@ -23,6 +23,15 @@ export function signalModel(scene) { newsignal.position.copy(downCurve.getPoint(downData[j].leftProgress)); + newsignal.up = new THREE.Vector3(1,0,0); + newsignal.axis = new THREE.Vector3(); + let tangent = downCurve.getTangentAt(downData[j].leftProgress).normalize(); + newsignal.axis.crossVectors(newsignal.up, tangent).normalize(); + let radians = Math.acos(newsignal.up.dot(tangent)); + newsignal.quaternion.setFromAxisAngle(newsignal.axis, radians); + + + scene.add( newsignal ); j = downData.length; } diff --git a/src/jlmap3d/jl3dtrafficplan/sandbox/trainmodel.js b/src/jlmap3d/jl3dtrafficplan/sandbox/trainmodel.js index 130989847..c0fa4c3f7 100644 --- a/src/jlmap3d/jl3dtrafficplan/sandbox/trainmodel.js +++ b/src/jlmap3d/jl3dtrafficplan/sandbox/trainmodel.js @@ -11,9 +11,11 @@ export function trainModel(scene) { var trainBox = new THREE.Mesh( geometry, material ); trainBox.code = trainData[i].code; trainBox.groupNumber = trainData[i].groupNumber; + trainBox.dispose = false; trainBox.up = new THREE.Vector3(1, 0, 0); trainBox.axis = new THREE.Vector3(); + trainBox.position.y = 5; scope.trainlist[trainData[i].groupNumber] = trainBox; } } diff --git a/src/jmapNew/config/skinCode/nanjing_02.js b/src/jmapNew/config/skinCode/nanjing_02.js index fed2cefc6..0a6ffbb43 100644 --- a/src/jmapNew/config/skinCode/nanjing_02.js +++ b/src/jmapNew/config/skinCode/nanjing_02.js @@ -829,6 +829,14 @@ class SkinCode extends defaultStyle { fontOffsetY: 24 }; + // /** 岔心 */ + // this[deviceType.Cross] = { + // centerSquare:{ + // defaultColor:'#fff' + // } + + // }; + this[deviceType.Responder] = { block: { mapStyle: { diff --git a/src/jmapNew/constant/deviceRender.js b/src/jmapNew/constant/deviceRender.js index 86c379333..7f006507b 100644 --- a/src/jmapNew/constant/deviceRender.js +++ b/src/jmapNew/constant/deviceRender.js @@ -275,4 +275,5 @@ deviceRender[deviceType.Responder] = { _type: deviceType.Responder, zlevel: 1 }; + export default deviceRender; diff --git a/src/jmapNew/constant/deviceState.js b/src/jmapNew/constant/deviceState.js index ba5e12852..6e91feba0 100644 --- a/src/jmapNew/constant/deviceState.js +++ b/src/jmapNew/constant/deviceState.js @@ -253,5 +253,5 @@ deviceState[deviceType.Train] = { }; deviceState[deviceType.Responder] = { -} +}; export default deviceState; diff --git a/src/jmapNew/shape/Cross/index.js b/src/jmapNew/shape/Cross/index.js new file mode 100644 index 000000000..5ec05182c --- /dev/null +++ b/src/jmapNew/shape/Cross/index.js @@ -0,0 +1,95 @@ +import Group from 'zrender/src/container/Group'; +import Polyline from 'zrender/src/graphic/shape/Polyline'; + +export default class Cross extends Group { + // _type: 'Cross', + // code: getUID('Cross', this.crossList), + // position:each.position, + // relatedSwitch:each.relatedSwitch + constructor(model, style) { + super(); + this._code = model.code; + this._type = model._type; + this.zlevel = model.zlevel; + this.z = 0; + this.model = model; + this.style = style; + this.isShowShape = true; + this.create(); + this.setState(model); + } + + create() { + const model = this.model; + // position; + // relatedSwitch; + // model.position.x, + // model.position.y, + // const relatedSwitchList = model.relatedSwitch; + const offset = this.style.Section.line.width / (2 * 0.7071); + const points = [ + [model.position.x, model.position.y + offset], + [model.position.x + offset, model.position.y + offset], + [model.position.x, model.position.y + 2 * offset], + [model.position.x - offset, model.position.y + offset], + [model.position.x, model.position.y + offset] + ]; + this.centerSquare = new Polyline({ + zlevel: this.zlevel, + z:this.z + 1, + shape: { + points:points + }, + style: { + stroke: this.style.Cross.centerSquare.defaultColor, + fill:this.style.Cross.centerSquare.defaultColor + } + }); + this.add(this.centerSquare); + // let relatedSwitchList[0].sectionCCode + // if (model && model.points.length > 1) { + // const points = []; + // const modelPoints = model.points; + // const length = modelPoints.length; + // for (let i = 0; i < length; i++) { + // points.push([modelPoints[i].x, modelPoints[i].y]); + // } + // this.segment = new Polyline({ + // zlevel: this.zlevel, + // z:this.z, + // shape: { + // points:points + // }, + // style: { + // lineWidth: model.width, + // stroke: model.lineColor || this.style.lineColor + // } + // }); + // this.add(this.segment); + // } + } + + setLineType(type) { + switch (type) { + case '01': break; + case '02': + this.segment && this.segment.setStyle('lineDash', this.style.lineDash || [4]); + break; + } + } + + setState(model) { + if (!this.isShowShape) return; + this.setLineType(model.type); + } + setShowStation(stationCode) { + if (!stationCode || this.model.stationCode === stationCode) { + this.segment && this.segment.show(); + this.isShowShape = true; + this.setState(this.model); + } else { + this.segment && this.segment.hide(); + this.isShowShape = false; + } + } +} diff --git a/src/jmapNew/shape/Responder/index.js b/src/jmapNew/shape/Responder/index.js index bbb820874..2079e186b 100644 --- a/src/jmapNew/shape/Responder/index.js +++ b/src/jmapNew/shape/Responder/index.js @@ -17,9 +17,9 @@ export default class Responder extends Group { this.isShowShape = true; this.z = model.zIndex || 1; if (model.previewOrMapDraw) { - this.create(); - this.setState(model); - } + this.create(); + this.setState(model); + } } create() { diff --git a/src/jmapNew/shape/Section/ELines.js b/src/jmapNew/shape/Section/ELines.js index b616dbadb..75af88b23 100644 --- a/src/jmapNew/shape/Section/ELines.js +++ b/src/jmapNew/shape/Section/ELines.js @@ -21,6 +21,9 @@ export default class ELines extends Group { if ((model.type == '01' && (!model.logicSectionCodeList || !model.logicSectionCodeList.length)) || model.type == '02' || model.type == '03') { this.createLine(); } + if (model.type == '05') { + + } } createLine() { diff --git a/src/jmapNew/shape/Section/index.js b/src/jmapNew/shape/Section/index.js index 1d779fa73..c39fab5b2 100644 --- a/src/jmapNew/shape/Section/index.js +++ b/src/jmapNew/shape/Section/index.js @@ -34,7 +34,7 @@ export default class Section extends Group { } create() { - // 区段type 01计轴区段;02逻辑区段;03道岔区段 04道岔计轴区段 + // 区段type 01计轴区段;02逻辑区段;03道岔区段 04道岔计轴区段 05 岔心 // 站台所有的绘图元素 const elementTypeList = { 'name': ETextName, // 区段名称 diff --git a/src/jmapNew/theme/xian_02/menus/menuCancel.vue b/src/jmapNew/theme/xian_02/menus/menuCancel.vue index 5099dc1ec..9d9fe17de 100644 --- a/src/jmapNew/theme/xian_02/menus/menuCancel.vue +++ b/src/jmapNew/theme/xian_02/menus/menuCancel.vue @@ -26,105 +26,105 @@ export default { label: '发送', handler: this.sendRequestList }, - { - label: '取消', - handler: this.undeveloped - }, - { - label: '全部扣车', - children: [ - { - label: '正线上全部扣车', - handler: this.undeveloped - } - ] - }, - { - label: '全部发车', - children: [ - { - label: '缓解正线所有列车', - handler: this.undeveloped - } - ] - }, - { - label: '停止所有列车', - children: [ - { - label: '停止正线所有列车', - handler: this.undeveloped - } - ] - }, + // { + // label: '取消', + // handler: this.undeveloped + // }, + // { + // label: '全部扣车', + // children: [ + // { + // label: '正线上全部扣车', + // handler: this.undeveloped + // } + // ] + // }, + // { + // label: '全部发车', + // children: [ + // { + // label: '缓解正线所有列车', + // handler: this.undeveloped + // } + // ] + // }, + // { + // label: '停止所有列车', + // children: [ + // { + // label: '停止正线所有列车', + // handler: this.undeveloped + // } + // ] + // }, { label: '车站选择', children: [] - }, - { - label: '列车选择', - handler: this.undeveloped - }, - { - label: '缩放', - handler: this.undeveloped - }, - { - label: '显示控制', - children: [ - { - label: '正线及车辆段', - handler: this.undeveloped - }, - { - label: '列车信息', - handler: this.undeveloped - } - ] - }, - { - label: '下一窗口', - handler: this.undeveloped - }, - { - label: '上一窗口', - handler: this.undeveloped - }, - { - label: '激活所有菜单', - children: [ - { - label: '确认', - handler: this.undeveloped - } - ] - }, - { - label: '恢复激活菜单', - handler: this.undeveloped - }, - { - label: '进路模式 - 授权车站', - children: [ - { - label: '自动', - handler: this.undeveloped - }, - { - label: '人工', - handler: this.undeveloped - } - ] - }, - { - label: '列车报警确认', - children: [ - { - label: '列车完整性报警确认', - handler: this.undeveloped - } - ] } + // { + // label: '列车选择', + // handler: this.undeveloped + // }, + // { + // label: '缩放', + // handler: this.undeveloped + // }, + // { + // label: '显示控制', + // children: [ + // { + // label: '正线及车辆段', + // handler: this.undeveloped + // }, + // { + // label: '列车信息', + // handler: this.undeveloped + // } + // ] + // }, + // { + // label: '下一窗口', + // handler: this.undeveloped + // }, + // { + // label: '上一窗口', + // handler: this.undeveloped + // }, + // { + // label: '激活所有菜单', + // children: [ + // { + // label: '确认', + // handler: this.undeveloped + // } + // ] + // }, + // { + // label: '恢复激活菜单', + // handler: this.undeveloped + // }, + // { + // label: '进路模式 - 授权车站', + // children: [ + // { + // label: '自动', + // handler: this.undeveloped + // }, + // { + // label: '人工', + // handler: this.undeveloped + // } + // ] + // }, + // { + // label: '列车报警确认', + // children: [ + // { + // label: '列车完整性报警确认', + // handler: this.undeveloped + // } + // ] + // } ] }; }, @@ -174,7 +174,7 @@ export default { }; }, initMenu() { - this.menuNormal[5].children = this.initStationList(); + this.menuNormal[1].children = this.initStationList(); this.menu = this.menuNormal; }, doShow(point) { diff --git a/src/router/index.js b/src/router/index.js index ed9cb433b..3cae3f850 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -140,6 +140,7 @@ const MessageBoard = () => import('@/views/messageBoard/index'); const BoardManage = () => import('@/views/messageBoard/manage'); const DraftLessonManage = () => import('@/views/teach/draftLessonManage'); const OrganizationManage = () => import('@/views/organization/index'); +const RunPlanViewWindow = () => import('@/views/newMap/displayNew/demon/runPlanViewWindow'); // import { GenerateRouteProjectList } from '@/scripts/ProjectConfig'; // import { getSessionStorage } from '@/utils/auth'; @@ -232,6 +233,11 @@ export const constantRoutes = [ component: PlanMonitorEditAUSTool, hidden: true }, + { + path: '/runPlanViewWindow', + component: RunPlanViewWindow, + hidden: true + }, { path: '/jlmap3d/sandbox', component: Jlmap3dSandbox, diff --git a/src/views/demonstration/detail/index.vue b/src/views/demonstration/detail/index.vue index e01874c67..ae6cc63dd 100644 --- a/src/views/demonstration/detail/index.vue +++ b/src/views/demonstration/detail/index.vue @@ -16,7 +16,7 @@
{{ $t('global.distributePermission') }} - {{ $t('demonstration.startSimulation') }} + {{ $t('demonstration.startSimulation') }}
@@ -78,9 +78,6 @@ export default { isComprehensive() { return this.courseModel.prdType === '03'; }, - isStartDemon() { - return (this.hasPermssion || this.tryTime > 0); - }, mapId() { return this.$route.query.mapId; }, @@ -173,7 +170,11 @@ export default { this.$router.push({ path: `/jointTrainingNew`, query: query }); launchFullscreen(); }).catch(error => { - this.$messageBox(this.$t('error.createSimulationFailed') + error.message); + if (error.code == 10003) { + this.$messageBox(this.$t('error.createSimulationFailed') + ':您的仿真权限不足!'); + } else { + this.$messageBox(this.$t('error.createSimulationFailed') + error.message); + } this.disabled = false; }); }, @@ -188,6 +189,11 @@ export default { this.$router.push({ path: `/displayIscs/system`, query: query }); } } catch (error) { + if (error.code == 10003) { + this.$messageBox(this.$t('error.createSimulationFailed') + ':您的仿真权限不足!'); + } else { + this.$messageBox(this.$t('error.createSimulationFailed') + error.message); + } this.disabled = false; } }, @@ -200,7 +206,11 @@ export default { } this.$router.push({ path: `/displayBigScreen/${this.courseModel.mapId}`, query: query }); }).catch(error => { - this.$messageBox(this.$t('error.createSimulationFailed') + error.message); + if (error.code == 10003) { + this.$messageBox(this.$t('error.createSimulationFailed') + ':您的仿真权限不足!'); + } else { + this.$messageBox(this.$t('error.createSimulationFailed') + error.message); + } this.disabled = false; }); }, @@ -220,7 +230,11 @@ export default { this.$router.push({ path: `${UrlConfig.displayNew}/demon`, query: query }); launchFullscreen(); }).catch(error=>{ - this.$messageBox(this.$t('error.createSimulationFailed') + error.message); + if (error.code == 10003) { + this.$messageBox(this.$t('error.createSimulationFailed') + ':您的仿真权限不足!'); + } else { + this.$messageBox(this.$t('error.createSimulationFailed') + error.message); + } this.disabled = false; }); }, diff --git a/src/views/exam/detail/courseDetail.vue b/src/views/exam/detail/courseDetail.vue index 6f5940450..3403067b4 100644 --- a/src/views/exam/detail/courseDetail.vue +++ b/src/views/exam/detail/courseDetail.vue @@ -46,7 +46,7 @@
{{ $t('exam.distributePermission') }} - {{ $t('exam.viewCoursePapers') }} + {{ $t('exam.viewCoursePapers') }} {{ $t('exam.returnCourseList') }} 退出
@@ -59,6 +59,7 @@ import { UrlConfig } from '@/scripts/ConstDic'; import LimitList from '@/views/components/limits/index'; import { getSessionStorage } from '@/utils/auth'; import localStore from 'storejs'; +import { superAdmin, admin } from '@/router/index'; export default { name: 'ExamDetailView', @@ -111,6 +112,12 @@ export default { }); } return sumRemains >= 10; + }, + isShowPaper() { + return this.$store.state.user.companyId && this.$store.state.user.companyAdmin; + }, + isAdmin() { + return this.$store.state.user.roles.includes(admin) || this.$store.state.user.roles.includes(superAdmin); } // height() { // return this.$route.query.noPreLogout ? this.$store.state.app.height : this.$store.state.app.height - 91; @@ -141,7 +148,7 @@ export default { treeList: resp.data.examDefinitionList, systemFault: resp.data.systemFault }; - if (this.hasPermssion) { + if (this.hasPermssion || resp.data.available) { this.valid = true; } } @@ -169,16 +176,12 @@ export default { }, checkCourse() { this.loading = true; - if (this.isAddRule) { - const path = `${this.$route.path.match(/(\/.*)\/course/)[1]}${UrlConfig.examRuleManage}`; - this.$router.push({ - path: path, - query: { lessonId: this.courseModel.id }, - noPreLogout: this.$route.query.noPreLogout - }); - } else { - this.$messageBox(this.$t('tip.notViewTheCoursePaper')); - } + const path = `${this.$route.path.match(/(\/.*)\/course/)[1]}${UrlConfig.examRuleManage}`; + this.$router.push({ + path: path, + query: { lessonId: this.courseModel.id }, + noPreLogout: this.$route.query.noPreLogout + }); }, distribute() { // 分发 this.disabled = true; diff --git a/src/views/jlmap3d/trafficplan/component/textui.vue b/src/views/jlmap3d/trafficplan/component/textui.vue index 8b75eff2f..c5fcca9f8 100644 --- a/src/views/jlmap3d/trafficplan/component/textui.vue +++ b/src/views/jlmap3d/trafficplan/component/textui.vue @@ -6,6 +6,49 @@ 'left': uiLeft, 'display': uiDisplay, }"> + + 设备信息 + + + + +
+ 列车编号:{{selectmodel.code}} +
+
+ 速度:{{selectmodel.v}} +
+
+ 行进方向:{{selectmodel.right}} +
+
+ 车内人数:{{selectmodel.num}} +
+
+ 左侧车门:{{selectmodel.leftdoor}} +
+
+ 右侧车门:{{selectmodel.rightdoor}} +
+ + +
+ 车站:{{selectmodel.name}} +
+
+ 上行站台人数:{{selectmodel.topnum}} +
+
+ 下行站台人数:{{selectmodel.downnum}} +
+
+ 上行车门:{{selectmodel.topdoor}} +
+
+ 下行车门:{{selectmodel.downdoor}} +
+
+ @@ -26,6 +69,14 @@ export default { uiDisplay:'none', uiTop:'0px', uiLeft:'0px', + selectmodel:{ + code:"asd123", + v:"80km/h", + right:"上行", + num:100, + leftdoor:"关闭", + rightdoor:"关闭" + }, } }, beforeDestroy() { @@ -63,4 +114,37 @@ export default { background-size:100%; // display:none; } +.text { + font-size: 8px; + color:#ffffff; + } + + .item { + margin-top: 5px; + margin-bottom: 5px; + margin-left: 10px; + } + + .clearfix:before, + .clearfix:after { + display: table; + content: ""; + } + .clearfix:after { + clear: both + } + .box-title{ + position: absolute; + top:20px; + left:7px; + width: 120px; + text-align: center; + } + .box-card { + position: absolute; + top:45px; + left:7px; + width: 136px; + background-color:rgba(0,0,0,0); + } diff --git a/src/views/newMap/displayNew/demon/runPlanViewWindow.vue b/src/views/newMap/displayNew/demon/runPlanViewWindow.vue new file mode 100644 index 000000000..6b7139952 --- /dev/null +++ b/src/views/newMap/displayNew/demon/runPlanViewWindow.vue @@ -0,0 +1,564 @@ + + + + diff --git a/src/views/newMap/jointTrainingNew/index.vue b/src/views/newMap/jointTrainingNew/index.vue index cff579b55..8d13e8196 100644 --- a/src/views/newMap/jointTrainingNew/index.vue +++ b/src/views/newMap/jointTrainingNew/index.vue @@ -352,7 +352,7 @@ export default { let resp = {data: {}}; resp = await this.getUserRole(); if (resp && resp.code == 200) { - this.setSimulationPrdType(); + this.setSimulationPrdType(resp.data.deviceCode); } loadMapDataById(this.mapId, 'simulation'); } else { @@ -362,6 +362,7 @@ export default { // 设置prdType和role setSimulationPrdType(deviceCode) { // Dispatcher 行调 STATION_SUPERVISOR 车站 Audience 观众 Driver 司机 MAINTAINER 通号 + this.showStation = ''; switch (this.userRole) { case 'DISPATCHER': this.$store.dispatch('training/setPrdType', '02'); @@ -375,6 +376,7 @@ export default { this.$store.dispatch('training/setPrdType', '01'); this.$store.dispatch('training/setRoles', 'STATION_SUPERVISOR'); this.$refs.menuSchema.chiShowStation = deviceCode; + this.showStation = deviceCode; this.mapViewLoadedOver && this.switchStationMode(deviceCode); this.jl3dmaintainershow = false; this.drivingShow = false; @@ -521,10 +523,11 @@ export default { } }, switchStationMode(stationCode) { - this.showStation = stationCode; + this.showStation = this.centralizedStationMap[stationCode]; this.setShowStation(this.showStation); }, setShowStation(stationCode) { + const showStation = this.centralizedStationMap[stationCode]; const nameList = Object.keys(this.$store.state.map.map); let list = []; nameList.forEach(item => { @@ -532,8 +535,8 @@ export default { list = [...list, ...this.$store.state.map.map[item]]; } }); - this.$jlmap.updateShowStation(list, stationCode); - this.$jlmap.setCenter(stationCode); + this.$jlmap.updateShowStation(list, showStation); + this.$jlmap.setCenter(showStation); }, setStationList(map) { this.stationList = []; @@ -546,7 +549,7 @@ export default { }); } }); - if (this.stationList.length) { + if (this.stationList.length && !this.showStation) { this.showStation = this.stationList[0].value; } }, diff --git a/src/views/newMap/jointTrainingNew/menuDemon.vue b/src/views/newMap/jointTrainingNew/menuDemon.vue index 75f5e5757..11bceca9e 100644 --- a/src/views/newMap/jointTrainingNew/menuDemon.vue +++ b/src/views/newMap/jointTrainingNew/menuDemon.vue @@ -9,7 +9,7 @@ {{ $t('display.demon.deviceView') }} - {{ jl3dname }} + {{ jl3dname }} {{ $t('display.demon.passengerflow') }} @@ -128,10 +128,13 @@ export default { }, isShowScheduling() { // 行调与管理员 可显示 - return (this.$store.state.training.prdType == '02' || this.isAdmin) && !this.$route.query.projectDevice; + return (this.$store.state.training.prdType == '02' || this.isAdmin) && (!this.$route.query.projectDevice); + }, + isDISPATCHER(){ + return (this.$store.state.training.prdType == '02' || this.isAdmin) && (!this.$route.query.projectDevice || this.project == 'sdy'); }, isStationSupervisor() { - return this.userRole == 'STATION_SUPERVISOR' && !this.$route.query.projectDevice; + return this.userRole == 'STATION_SUPERVISOR' && (!this.$route.query.projectDevice || this.project == 'sdy'); }, isDriver() { return this.userRole == 'DRIVER' && !this.$route.query.projectDevice; diff --git a/src/views/newMap/jointTrainingNew/menuSchema.vue b/src/views/newMap/jointTrainingNew/menuSchema.vue index a6d4a2607..e1135bceb 100644 --- a/src/views/newMap/jointTrainingNew/menuSchema.vue +++ b/src/views/newMap/jointTrainingNew/menuSchema.vue @@ -198,7 +198,21 @@ export default { this.$emit('runPlanLoadShow'); }, viewRunPlan() { - this.$refs.runPlanView.doShow(); + if (this.$route.query.type === 'CW') { + const routeData = this.$router.resolve({ + path:`/runPlanViewWindow`, + query:{ + lineCode: this.$route.query.lineCode, + mapId:this.$route.query.mapId, + group:this.$route.query.group, + initTime: this.$store.state.training.initTime, + noPreLogout: true + } + }); + window.open(routeData.href, '_blank', 'noopener noreferrer'); + } else { + this.$refs.runPlanView.doShow(); + } }, // 选择车站 switchStationMode(stationCode) { diff --git a/src/views/newMap/newMapdraft/mapoperate/cross.vue b/src/views/newMap/newMapdraft/mapoperate/cross.vue deleted file mode 100644 index f091fad49..000000000 --- a/src/views/newMap/newMapdraft/mapoperate/cross.vue +++ /dev/null @@ -1,249 +0,0 @@ - - - diff --git a/src/views/newMap/newMapdraft/mapoperate/index.vue b/src/views/newMap/newMapdraft/mapoperate/index.vue index 787d5dbbf..0f7beb327 100644 --- a/src/views/newMap/newMapdraft/mapoperate/index.vue +++ b/src/views/newMap/newMapdraft/mapoperate/index.vue @@ -67,7 +67,6 @@ import Arrow from './arrow'; import SplitScreen from './splitScreen'; import FloodGate from './floodGate'; import DirectionRod from './directionRod'; -import Cross from './cross'; import { EventBus } from '@/scripts/event-bus'; export default { @@ -98,8 +97,7 @@ export default { Arrow, SplitScreen, FloodGate, - DirectionRod, - Cross + DirectionRod }, props: { selected: { @@ -140,8 +138,7 @@ export default { {label: '站间分隔', name:'SplitStation', menus:SplitStation}, {label: '箭头', name:'Arrow', menus:Arrow}, {label: '防淹门', name: 'FloodGate', menus: FloodGate}, - {label: '方向杆', name: 'DirectionRod', menus: DirectionRod}, - {label: this.$t('map.cross'), name: 'Cross', menus: Cross} + {label: '方向杆', name: 'DirectionRod', menus: DirectionRod} ], selectDevice:'', enabledTab: 'Section', diff --git a/src/views/newMap/newMapdraft/mapoperate/section/crossSection.vue b/src/views/newMap/newMapdraft/mapoperate/section/crossSection.vue new file mode 100644 index 000000000..45b75b51c --- /dev/null +++ b/src/views/newMap/newMapdraft/mapoperate/section/crossSection.vue @@ -0,0 +1,156 @@ + + diff --git a/src/views/newMap/newMapdraft/mapoperate/section/index.vue b/src/views/newMap/newMapdraft/mapoperate/section/index.vue index 744d487e9..a5dc546b1 100644 --- a/src/views/newMap/newMapdraft/mapoperate/section/index.vue +++ b/src/views/newMap/newMapdraft/mapoperate/section/index.vue @@ -46,6 +46,9 @@ @tipInfoHandle="tipInfoHandle" /> + + + @@ -60,6 +63,7 @@ import TipInfo from './tipInfo'; import CreateSection from './create'; import SplitOrMerge from './splitOrMerge'; import BatchSettings from './batchSettings'; +import CrossSection from './crossSection'; import getModel from '../models.js'; export default { @@ -70,7 +74,8 @@ export default { TipInfo, CreateSection, SplitOrMerge, - BatchSettings + BatchSettings, + CrossSection }, props: { selected: { @@ -408,7 +413,16 @@ export default { deviceSelect(selected) { // 判断是否激活选择站台 if (selected && selected._type === 'Section') { - if (this.field === 'leftSection') { + if (this.field == 'relatedSection' ) { + if (selected.type === '01') { + this.activeName = 'six'; + this.$refs.crossSection.addSectionData(selected.code); + this.$emit('deviceSelect', ''); + } else { + this.$message.error('请选择物理区段'); + } + return; + } else if (this.field === 'leftSection') { if (selected.type === '01' || selected.type === '03') { this.editModel.leftSectionCode = selected.code; this.activeName = 'first'; diff --git a/src/views/organization/index.vue b/src/views/organization/index.vue index 238fd30f1..20de68208 100644 --- a/src/views/organization/index.vue +++ b/src/views/organization/index.vue @@ -257,7 +257,7 @@ export default { const reg = new RegExp('[\\u4E00-\\u9FFF]+', 'g'); const studentIdJudge = !!studentId && !reg.test(studentId); if (studentIdJudge && name) { - students.push({account:dataList[1][i], name: dataList[2][i]}); + students.push({account:dataList[0][i], name: dataList[1][i]}); } else { if (!studentId && !name) { break; @@ -301,9 +301,9 @@ export default { exportTemplate() { const wb = XLSX.utils.book_new(); const data1 = [{ A: 'XXXX级', B:'XX班'}]; - const data2 = [{A: '学号', C:'姓名'}]; - const data3 = [{A: '00001', C:'张三'}]; - const data4 = [{A: '00002', C:'李四'}]; + const data2 = [{A: '学号', B:'姓名'}]; + const data3 = [{A: '00001', B:'张三'}]; + const data4 = [{A: '00002', B:'李四'}]; const data = [...data1, ...data2, ...data3, ...data4]; const ws = XLSX.utils.json_to_sheet(data, {skipHeader:true}); ws['!cols'] = [ diff --git a/src/views/planMonitor/editTool/menus/addPlanningTrain.vue b/src/views/planMonitor/editTool/menus/addPlanningTrain.vue index 201064a87..392e4513c 100644 --- a/src/views/planMonitor/editTool/menus/addPlanningTrain.vue +++ b/src/views/planMonitor/editTool/menus/addPlanningTrain.vue @@ -87,9 +87,9 @@ export default { } }, handleCommit() { - this.$refs.dataform.validateForm(() => { + this.$refs.form.validate(() => { if (this.$route.query.planId || this.loadRunPlanId) { - checkServiceNumberExist({ planId: this.$route.query.planId || this.loadRunPlanId, serviceNumber: this.serviceNumber }).then(resp => { + checkServiceNumberExist({ planId: this.$route.query.planId || this.loadRunPlanId, serviceNumber: this.formModel.serviceNumber }).then(resp => { if (resp.data) { this.$emit('dispatchDialog', { name: 'offLine', @@ -117,8 +117,8 @@ export default { }, handleConfirm(isNew = false) { this.doClose(); - this.$store.dispatch('runPlan/addserviceNumber', this.serviceNumber); - this.$emit('dispatchDialog', { name: 'editPlanningTrain', params: { serviceNumber: this.serviceNumber, isNew:isNew } }); + this.$store.dispatch('runPlan/addserviceNumber', this.formModel.serviceNumber); + this.$emit('dispatchDialog', { name: 'editPlanningTrain', params: { serviceNumber: this.formModel.serviceNumber, isNew:isNew } }); } } }; diff --git a/src/views/publish/examRule/draft/examFrom.vue b/src/views/publish/examRule/draft/examFrom.vue index 86fc5e6b6..359e7ee32 100644 --- a/src/views/publish/examRule/draft/examFrom.vue +++ b/src/views/publish/examRule/draft/examFrom.vue @@ -23,10 +23,10 @@ style="width: 100%;" value-format="timestamp" :default-value="new Date()" - :disabled="isEdit" :picker-options="pickerOptions" @change="handle" /> + - @@ -297,6 +297,8 @@ export default { const model = { id: this.$route.params.ruleId, name: this.form.name, + endTime: this.getDate(this.form.endDate), + startTime: this.getDate(this.form.startDate), classes: this.form.classes.map(ele => { return { id: ele}; }), trial: this.trial == 2 }; @@ -304,6 +306,7 @@ export default { await updateExamRules(model); this.$store.dispatch('exam/setCourseDetail', this.form); this.$message.success(this.$t('publish.updateExamRuleSuccess')); + // history.go(-1); } catch (error) { this.$messageBox(this.$t('publish.updateExamRuleFailed')); } diff --git a/src/views/publish/examRule/draft/index.vue b/src/views/publish/examRule/draft/index.vue index bd3cc9196..b94ef046e 100644 --- a/src/views/publish/examRule/draft/index.vue +++ b/src/views/publish/examRule/draft/index.vue @@ -35,7 +35,7 @@ import { getPublishLessonList } from '@/api/jmap/lesson'; import RuleFrom from './rule'; import ExamFrom from './examFrom'; import { getPublishMapInfo } from '@/api/jmap/map'; -import { getExamLessonDetail, setCourseList, setCourseListGzb } from '@/api/management/exam'; +import { getExamLessonDetail, setCourseList } from '@/api/management/exam'; import { UrlConfig } from '@/scripts/ConstDic'; import { getSessionStorage } from '@/utils/auth'; @@ -71,9 +71,6 @@ export default { }, isFastCreate() { return this.display == 1 && this.$route.params.mode != 'edit' && Number(this.$route.params.ruleId); - }, - isGzbShow() { - return getSessionStorage('project').startsWith('gzb'); } }, watch: { @@ -103,6 +100,7 @@ export default { }); }, async definition(data) { + console.log(data, '===='); this.course = data; this.formData = {}; this.display = 2; @@ -140,11 +138,7 @@ export default { }; let res = {}; try { - if (this.isGzbShow) { - res = await setCourseListGzb(result); - } else { - res = await setCourseList(result); - } + res = await setCourseList(result); this.$message.success({ message: res.message }); this.$store.dispatch('exam/setRuleList', []); // 清空规则列表数据 const path = `${this.$route.path.match(/(\/.*)\/examRule/)[1]}${UrlConfig.examRuleManage}`; diff --git a/src/views/publish/examRule/draft/rule.vue b/src/views/publish/examRule/draft/rule.vue index 1fc4fcb7a..b222b5f3a 100644 --- a/src/views/publish/examRule/draft/rule.vue +++ b/src/views/publish/examRule/draft/rule.vue @@ -25,7 +25,7 @@ diff --git a/src/views/system/userControl/edit.vue b/src/views/system/userControl/edit.vue index c56f573be..347526a44 100644 --- a/src/views/system/userControl/edit.vue +++ b/src/views/system/userControl/edit.vue @@ -46,10 +46,10 @@ export default { }, rules() { const crules = { - name: [ - { required: true, message: this.$t('rules.pleaseInputName'), trigger: 'blur' }, - { min: 1, max: 25, message: this.$t('rules.strLength1To25'), trigger: 'blur' } - ], + // name: [ + // { required: true, message: this.$t('rules.pleaseInputName'), trigger: 'blur' }, + // { min: 1, max: 25, message: this.$t('rules.strLength1To25'), trigger: 'blur' } + // ], roles: [ { required: true, message: this.$t('rules.pleaseSelectPermission'), trigger: 'change' } ] diff --git a/src/views/system/userControl/index.vue b/src/views/system/userControl/index.vue index 63934320f..46bad1045 100644 --- a/src/views/system/userControl/index.vue +++ b/src/views/system/userControl/index.vue @@ -3,6 +3,7 @@ + @@ -11,12 +12,14 @@ import { getUserList } from '@/api/management/user'; import { getCompanyList } from '@/api/company'; import DictionaryEdit from './edit'; import CreateUser from './createUser'; +import BindCompany from './bindCompany'; export default { name: 'UserControl', components: { DictionaryEdit, - CreateUser + CreateUser, + BindCompany }, data() { return { @@ -87,6 +90,10 @@ export default { { name: this.$t('global.edit'), handleClick: this.handleUserEdit + }, + { + name: '绑定单位', + handleClick: this.handleBind } ] } @@ -129,6 +136,12 @@ export default { }, companyManage() { this.$router.push({ path: `/system/companyManage`}); + }, + handleBind(index, row) { + this.$refs.bindCompany.doShow(row); + }, + create() { + this.reloadTable(); } } }; diff --git a/src/views/teach/index.vue b/src/views/teach/index.vue index 454d72bfb..5ad4fcf72 100644 --- a/src/views/teach/index.vue +++ b/src/views/teach/index.vue @@ -4,7 +4,7 @@
{{ $t('global.lessonSystem') }}
- 草稿课程管理 + 草稿课程管理 @@ -18,9 +18,9 @@ @@ -50,7 +50,8 @@ export default { loading: false, project: '', mapId: '', - prdType: '' + prdType: '', + cityCode: '' }; }, computed: { @@ -60,8 +61,8 @@ export default { userId() { return this.$store.state.user.id; }, - isLessonCreator() { - return this.$store.state.user.roles.includes(lessonCreater); + isCompanyAdmin() { + return this.$store.state.user.companyId && this.$store.state.user.companyAdmin; }, isAdmin() { return this.$store.state.user.roles.includes(admin) || this.$store.state.user.roles.includes(superAdmin); @@ -84,6 +85,7 @@ export default { this.mapId = resp.data.mapId; this.prdType = resp.data.prdType; this.tableData = resp.data.lessonList; + this.cityCode = resp.data.cityCode; } else { this.tableData = []; } @@ -129,7 +131,7 @@ export default { }); }, draftLessonManage() { - const query = {mapId: this.mapId, prdType: this.prdType, cityCode: this.$route.query.cityCode}; + const query = {mapId: this.mapId, prdType: this.prdType, cityCode: this.cityCode}; this.$router.push({ path: `/trainingPlatform/draftTeach/${this.$route.params.subSystem}`, query: query }); }, handleDelete(row) { diff --git a/src/views/trainingPlatform/demonList.vue b/src/views/trainingPlatform/demonList.vue index 6b9c2a717..b126bc3cd 100644 --- a/src/views/trainingPlatform/demonList.vue +++ b/src/views/trainingPlatform/demonList.vue @@ -113,7 +113,7 @@ export default { break; case 'Lesson': this.setLocalRoute(`${UrlConfig.trainingPlatform.teachHome}/${obj.id}`); - router = { path: `${UrlConfig.trainingPlatform.teachHome}/${obj.id}?cityCode=${this.filterSelect}`}; + router = { path: `${UrlConfig.trainingPlatform.teachHome}/${obj.id}`}; this.toNextPage(isReplace, router); break; case 'Simulation': @@ -206,7 +206,7 @@ export default { }, nodeCollapse(obj, node, ele) { const key = obj.key; - this.expandList = this.expandList.filter(item => item !== key); + this.expandList = this.expandList.filter(item => (item !== key && !item.startsWith(`${key}-`))); localStore.set('trainIngPlatformExpandList' + this.filterSelect + this.userId + this.project, this.expandList); }, getExpandList(filterSelect) {