diff --git a/src/assets/AlarmSoundUrgent.wav b/src/assets/AlarmSoundUrgent.wav new file mode 100644 index 000000000..9327a8f9a Binary files /dev/null and b/src/assets/AlarmSoundUrgent.wav differ diff --git a/src/assets/icon/favicon_bjd.png b/src/assets/icon/favicon_bjd.png index b2d5e932d..935c38c76 100644 Binary files a/src/assets/icon/favicon_bjd.png and b/src/assets/icon/favicon_bjd.png differ diff --git a/src/assets/icon/link_bjd.png b/src/assets/icon/link_bjd.png new file mode 100644 index 000000000..68e2801bd Binary files /dev/null and b/src/assets/icon/link_bjd.png differ diff --git a/src/iscs/shape/button.js b/src/iscs/shape/button.js index 000eb663a..e18fd1896 100644 --- a/src/iscs/shape/button.js +++ b/src/iscs/shape/button.js @@ -152,6 +152,9 @@ export default class Button extends Group { this.on('mouseout', (e) => { this.buttonText && this.buttonText.setStyle({textFill: model.textColor || '#FFF'}); }); this.on('mouseover', (e) => { this.buttonText && this.buttonText.setStyle({textFill: model.textColorActive || '#000'}); }); } + setState(model) { + this.textButtonRect.setStyle('fill', model.backgroundColor); + } setModel(dx, dy) { this.model.point.x += dx; this.model.point.y += dy; diff --git a/src/iscs/shape/line.js b/src/iscs/shape/line.js index 7a84b3b90..e4e19e6fe 100644 --- a/src/iscs/shape/line.js +++ b/src/iscs/shape/line.js @@ -137,6 +137,9 @@ export default class line extends Group { this.grouper.add(this.iscsLine); this.add(this.grouper); } + setState(model) { + this.iscsLine.setStyle('stroke', model.strokeColor); + } setModel(dx, dy) { this.model.points.forEach(item => { item.x += dx; diff --git a/src/router/index_Common.js b/src/router/index_Common.js index 6114aa638..05bf07043 100644 --- a/src/router/index_Common.js +++ b/src/router/index_Common.js @@ -129,6 +129,7 @@ const Approval = () => import('@/views/approval/index'); const CompanyManage = () => import('@/views/system/companyManage/index'); const QuestionsRuleManage = () => import('@/views/system/questionsRuleManage/index'); const PreTheoryImport = () => import('@/views/competitionManage/bankList/preImport'); +const PlanScheduleWicket = () => import('@/views/newMap/displayNew/demon/planSchedule'); import { GenerateRouteProjectList } from '@/scripts/ProjectConfig'; // import { getSessionStorage } from '@/utils/auth'; @@ -368,6 +369,11 @@ export const publicAsyncRoute = [ path: '/device/result/:userExamId', component: ExamResult, hidden: true + }, + {// 运行图预览 + path: '/planSchedule/window', + component: PlanScheduleWicket, + hidden: true } ]; // 城市轨道项目 diff --git a/src/scripts/ProjectConfig.js b/src/scripts/ProjectConfig.js index b2ee27436..5c44e5b17 100644 --- a/src/scripts/ProjectConfig.js +++ b/src/scripts/ProjectConfig.js @@ -16,6 +16,7 @@ import FaviconBjd from '@/assets/icon/favicon_bjd.png'; import Link_Bxkc from '@/assets/icon/link_bxkc.png'; import Link_Crsc from '@/assets/icon/link_crsc.png'; import Link_Hls from '@/assets/icon/link_hls.png'; +import Link_Bjd from '@/assets/icon/link_bjd.png'; // title:页面title; loginPath:退出登录跳转路径; loginParam:登录接口参数project;loginTitle:登录页左上角title;logoWidth:登录页左上角logo宽度; // homeTitle:导航栏title(没有采用title); browserTitle:浏览器窗口title;bottomColumn:底部栏描述;bottomIcon:底部栏Icon;linkIcon:浏览器窗口icon(没有采用ProjectIcon) @@ -37,7 +38,7 @@ export const loginInfo = { bottomIcon: FaviconBjd, bottomColumn: '', loginTitle: '空串', - linkIcon: FaviconBjd, + linkIcon: Link_Bjd, loginParam: 'BJD', navigationLogoWidth: '160px', navigationMarginLeft: '175px', @@ -395,7 +396,9 @@ export const ProjectCode = { drts: 'DRTS', designdrts: 'DRTS', nty: 'NTY', - designnty: 'NTY' + designnty: 'NTY', + bjd: 'BJD', + designbjd: 'BJD' }; export const BottomColumnOnlyConInfo = ['heb', 'designheb', 'jyd', 'designjyd', 'tky', 'designtky', 'bxkc', 'designbxkc', 'crsc', 'designcrsc', 'hls', 'designhls', 'hyd', 'designhyd']; // 底部栏仅展示公司信息不展示备案号 export const GetMapListByProjectList = ['xty', 'designxty', 'gzb', 'designgzb', 'xadt', 'designxadt', 'heb', 'designheb', 'designdrts', 'drts', 'nty', 'designnty']; // 实训设计平台通过项目code获取地图列表的项目 @@ -429,7 +432,9 @@ export const goOtherPlatformMenu = { // 导航栏快速切换平台 hyd: '/design/login?project=hyd', designhyd: '/login?project=hyd', nty: '/design/login?project=nty', - designnty: '/login?project=nty' + designnty: '/login?project=nty', + bjd: '/design/login?project=bjd', + designbjd: '/login?project=bjd' }; export const ProjectList = [ {value:'xty', label:'西铁院'}, @@ -437,5 +442,6 @@ export const ProjectList = [ {value: 'xadt', label: '西安地铁'}, {value: 'heb', label: '哈尔滨'}, {value: 'drts', label: '调度大赛'}, - {value: 'nty', label: '南铁院'} + {value: 'nty', label: '南铁院'}, + {value: 'bjd', label: '北交大'} ]; diff --git a/src/store/modules/iscs.js b/src/store/modules/iscs.js index b26e74f82..93e2d9b26 100644 --- a/src/store/modules/iscs.js +++ b/src/store/modules/iscs.js @@ -11,6 +11,8 @@ const iscs = { rightClickCount: 0, // 右键点击设备 selected: '', // 左键选中设备 selectedCount: 0, // 左键选中 + closeMusicNum: 0, // 关闭音乐标识 + faultList: [], // 故障 元素状态 incidentList: [], // 事件列表 alarmList: [] // 报警列表 }, @@ -173,6 +175,12 @@ const iscs = { }, setAddIncidentList: (state, device) => { state.incidentList.unshift(device); + }, + setFaultList: (state, list) => { + state.faultList = list; + }, + setCloseMusic: (state, num) => { + state.closeMusicNum = num; } }, diff --git a/src/utils/baseUrl.js b/src/utils/baseUrl.js index a3670f04d..89ce9ee58 100644 --- a/src/utils/baseUrl.js +++ b/src/utils/baseUrl.js @@ -1,10 +1,10 @@ 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://joylink.club/jlcloud'; + BASE_API = 'https://test.joylink.club/jlcloud'; // BASE_API = 'http://192.168.8.107:9000'; // 袁琪 - // BASE_API = 'http://192.168.8.144:9000'; // 旭强 + // BASE_API = 'http://192.168.8.114:9000'; // 旭强 // BASE_API = 'http://192.168.3.175:9000'; // 张赛 // BASE_API = 'http://192.168.8.110:9000'; // 杜康 // BASE_API = 'http://b29z135112.zicp.vip'; diff --git a/src/views/iscs/iscsDesign/demonList.vue b/src/views/iscs/iscsDesign/demonList.vue index f1344c0d6..ad7d37808 100644 --- a/src/views/iscs/iscsDesign/demonList.vue +++ b/src/views/iscs/iscsDesign/demonList.vue @@ -89,7 +89,27 @@ export default { name: '牵引降压混合变电所主接线图', mode: 'powerMonitoring02', id: 'combined', - type: 'interface' + type: 'system', + children: [ + { + name: '象峰站牵引降压混合变电所主接线图', + mode: 'powerMonitoring02', + id: 'combined01', + type: 'interface' + }, + { + name: '罗汉山牵引降压混合变电所主接线图', + mode: 'powerMonitoring02', + id: 'combined02', + type: 'interface' + }, + { + name: '树兜站牵引降压混合变电所主接线图', + mode: 'powerMonitoring02', + id: 'combined03', + type: 'interface' + } + ] }, { name: '停车场接触网图', diff --git a/src/views/iscs/iscsDraw/group/tab-template.vue b/src/views/iscs/iscsDraw/group/tab-template.vue index 0f2527af6..0db62438e 100644 --- a/src/views/iscs/iscsDraw/group/tab-template.vue +++ b/src/views/iscs/iscsDraw/group/tab-template.vue @@ -32,6 +32,9 @@ 全部显示 全部隐藏 + @@ -52,7 +55,8 @@ export default { }, computed: { ...mapGetters('iscs', [ - 'iscsGroupList' + 'iscsGroupList', + 'iscs' ]) }, methods: { @@ -94,14 +98,15 @@ export default { elemList: [] }; }, - doDeleteGroup() { + doDeleteGroup(data) { const Model = { - code: this.formModel.code, + code: data && data.code ? data.code : this.formModel.code, _type: 'IscsGroup' }; this.$emit('deleteDataModel', Model); const modelList = []; - for (const key in this.formModel.elemMap) { + const elemMap = data ? data.elemMap : this.formModel.elemMap; + for (const key in elemMap) { const device = this.$iscs.iscsDevice[key]; if (device && device.model) { device.model['groupId'] = ''; @@ -126,6 +131,26 @@ export default { const device = this.$iscs.iscsDevice[group.code]; device.instance.hide(); }); + }, + deleteAll() { + this.$confirm('此操作将删除所有编组, 是否继续?', '提示', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }).then(() => { + this.iscs.iscsGroupList.forEach(item => { + this.doDeleteGroup(item); + }); + this.$message({ + type: 'success', + message: '删除成功!' + }); + }).catch(() => { + this.$message({ + type: 'info', + message: '已取消删除' + }); + }); } } }; diff --git a/src/views/iscs/iscsDraw/icscComponents/line.vue b/src/views/iscs/iscsDraw/icscComponents/line.vue index b9a736930..3b362403e 100644 --- a/src/views/iscs/iscsDraw/icscComponents/line.vue +++ b/src/views/iscs/iscsDraw/icscComponents/line.vue @@ -62,6 +62,12 @@ + + + + + 添加 +
坐标点
@@ -118,7 +124,9 @@ + + diff --git a/src/views/iscs/iscsSystem/stationConfig/dialog/valve.vue b/src/views/iscs/iscsSystem/stationConfig/dialog/valve.vue index b7b079b69..bb0578aa8 100644 --- a/src/views/iscs/iscsSystem/stationConfig/dialog/valve.vue +++ b/src/views/iscs/iscsSystem/stationConfig/dialog/valve.vue @@ -135,6 +135,18 @@ export default { console.log('不允许点击'); } } + } else if (this.model.code == 'group_24' || this.model.code == 'group_53' || this.model.code == 'group_35' || this.model.code == 'group_43' || this.model.code == 'group_47' || this.model.code == 'group_48') { + if (this.rowData[this.rowData.key]) { + this.model[this.rowData.key] = this.rowData[this.rowData.key]; + this.handleModel(this.model); + } else { + if (!this.$iscs.iscsDevice['IscsButton_6'].model['fault']) { + this.model[this.rowData.key] = this.rowData[this.rowData.key]; + this.handleModel(this.model); + } else { + console.log('不允许点击'); + } + } } else { this.model[this.rowData.key] = this.rowData[this.rowData.key]; this.handleModel(this.model); @@ -224,6 +236,13 @@ export default { const device = deviceFactory(el._type, el); return device.model; })); + if (model.lineCode) { + // 关联接触网 颜色处理 + arr.push({ + code: model.lineCode, + strokeColor: model.valve ? '#00FF1E' : '#FF0000' + }); + } // 改变元素状态 arr.forEach(el => { const device = this.$iscs.iscsDevice[el.code]; @@ -247,6 +266,19 @@ export default { }; this.$store.dispatch('iscs/setAddAlarmList', params); this.$store.dispatch('iscs/setAddIncidentList', params); + + const arrList = []; + this.$store.state.iscs.faultList.forEach(item => { + if (item.stationName == this.$route.query.stationName) { + item.list.forEach(ele => { + if (ele.code == model.code) { + ele.valve = false; + } + }); + } + arrList.push(item); + }); + this.$store.commit('iscs/setFaultList', arrList); }, doClose() { this.dialogShow = false; diff --git a/src/views/iscs/iscsSystem/stationConfig/environment/index.vue b/src/views/iscs/iscsSystem/stationConfig/environment/index.vue index 45b5e45a8..328967856 100644 --- a/src/views/iscs/iscsSystem/stationConfig/environment/index.vue +++ b/src/views/iscs/iscsSystem/stationConfig/environment/index.vue @@ -168,6 +168,7 @@ export default { text-align: center; margin-top: 15px; color: #d8e9a5; + font-size: 25px; } .Substation{ display: inline-block; diff --git a/src/views/iscs/iscsSystem/stationConfig/powerMonitor/substation.vue b/src/views/iscs/iscsSystem/stationConfig/powerMonitor/substation.vue index 815523ab7..956b4d281 100644 --- a/src/views/iscs/iscsSystem/stationConfig/powerMonitor/substation.vue +++ b/src/views/iscs/iscsSystem/stationConfig/powerMonitor/substation.vue @@ -85,7 +85,16 @@ export default { const tractionList = ['象峰站', '罗汉山站', '树兜站', '东街口站', '达道站', '三叉街站', '葫芦阵站', '城门站', '胪雷站', '安平站', '梁厝站', '三江口站']; if (tractionList.includes(this.stationName)) { this.title = this.stationName + ' 牵引降压混合变电所主接线图'; - params.userInterface = 'combined'; + if (this.stationName == '象峰站') { + params.userInterface = 'combined01'; + } else if (this.stationName == '罗汉山站') { + params.userInterface = 'combined02'; + } else if (this.stationName == '树兜站') { + params.userInterface = 'combined03'; + } else { + params.userInterface = 'combined02'; + } + params.system = 'combined'; } else { this.title = this.stationName + ' 降压变电所主接线图'; params.userInterface = 'stepDown'; @@ -113,6 +122,7 @@ export default { text-align: center; margin-top: 15px; color: #d8e9a5; + font-size: 25px; } .Substation{ display: inline-block; diff --git a/src/views/iscs/iscsSystem/stationConfig/psdSystem/index.vue b/src/views/iscs/iscsSystem/stationConfig/psdSystem/index.vue index 34c733e92..8a9104f85 100644 --- a/src/views/iscs/iscsSystem/stationConfig/psdSystem/index.vue +++ b/src/views/iscs/iscsSystem/stationConfig/psdSystem/index.vue @@ -57,6 +57,7 @@ export default { text-align: center; margin-top: 15px; color: #d8e9a5; + font-size: 25px; } .psdSystem{ diff --git a/src/views/login/index.vue b/src/views/login/index.vue index 28de988db..043905dde 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -304,6 +304,8 @@ export default { this.tipsMsg = this.$t('login.accountOrPasswordIsIncorrect'); } else if (error.code == '10001') { this.tipsMsg = '教员机尚未登录,请稍后重试!'; + } else if (error.code == '10013' || error.code == '10014') { + this.tipsMsg = '该账号权限不足!'; } else { this.tipsMsg = error.message; } @@ -452,6 +454,8 @@ export default { this.tipsMsg = this.$t('login.accountOrPasswordIsIncorrect'); } else if (error.code == '10001') { this.tipsMsg = '教员机尚未登录,请稍后重试!'; + } else if (error.code == '10013' || error.code == '10014') { + this.tipsMsg = '该账号权限不足'; } else { this.tipsMsg = error.message; } @@ -544,14 +548,6 @@ export default { }; this.$router.push({ path: `/jlmap3d/sandbox`, query: sandboxQuery }); } else if (this.$route.query.type === 'ILW') { - // const ilwQuery = { - // mapid: query.mapId, - // group: query.group, - // project: getSessionStorage('project'), - // token: getToken(), - // projectDevice: this.$route.query.projectDevice, - // type: this.$route.query.type - // }; this.$router.push({ path: `/jointTrainingNew`, query: query }); } else { this.$router.push({ path: `/jointTrainingNew`, query: query }); @@ -575,6 +571,20 @@ export default { launchFullscreen(); }); }); + } else if (this.project === 'bjd') { + getLoginInfo(getToken()).then(res => { + getSimulationInfoNew(res.data.group).then(resp => { + this.$store.dispatch('app/transitionAnimations'); + this.$router.push({ path: `/jointTrainingNew`, query: { + lineCode: resp.data.map.lineCode, + group: res.data.group, + mapId: resp.data.map.id, + project:this.project + }}); + this.loading = false; + launchFullscreen(); + }); + }); } else if (!this.$route.path.includes('jsxt/login') && !this.$route.path.includes('refereeJsxt/login')) { this.$router.push({ path: this.path }); } else { diff --git a/src/views/newMap/displayNew/demon/planSchedule.vue b/src/views/newMap/displayNew/demon/planSchedule.vue new file mode 100644 index 000000000..fab66f278 --- /dev/null +++ b/src/views/newMap/displayNew/demon/planSchedule.vue @@ -0,0 +1,577 @@ + + + + + diff --git a/src/views/newMap/displayNew/exam/index.vue b/src/views/newMap/displayNew/exam/index.vue index 8035738a0..1ddd34df5 100644 --- a/src/views/newMap/displayNew/exam/index.vue +++ b/src/views/newMap/displayNew/exam/index.vue @@ -96,7 +96,6 @@ export default { this.startLoading = true; if (this.$route.query.trainingId) { this.isDisable = true; - this.$store.dispatch('training/setMapDefaultState'); startTrainingNew({ id: this.$route.query.trainingId }, this.group).then(response => { this.$store.dispatch('training/setTrainingStart', true); this.$store.dispatch('training/examModeStart'); diff --git a/src/views/newMap/displayNew/lesson/index.vue b/src/views/newMap/displayNew/lesson/index.vue index 4947fee8d..4325a7afd 100644 --- a/src/views/newMap/displayNew/lesson/index.vue +++ b/src/views/newMap/displayNew/lesson/index.vue @@ -154,7 +154,6 @@ export default { start() { // 清空按钮操作 this.$store.dispatch('menuOperation/setButtonOperation', null); - this.$store.dispatch('training/setMapDefaultState'); this.startLoading = true; if (this.trainingObj && this.trainingObj.id) { startTrainingNew(this.trainingObj, this.group).then(response => { diff --git a/src/views/newMap/jointTrainingNew/menuDemon.vue b/src/views/newMap/jointTrainingNew/menuDemon.vue index c023906b9..13e431c95 100644 --- a/src/views/newMap/jointTrainingNew/menuDemon.vue +++ b/src/views/newMap/jointTrainingNew/menuDemon.vue @@ -346,7 +346,7 @@ export default { this.$store.dispatch('training/over').then(() => { this.backLoading = true; this.$store.dispatch('map/resetActiveTrainList', true); - if (this.$route.query.projectDevice) { + if (this.$route.query.projectDevice || this.$route.query.project === 'bjd') { this.$store.dispatch('LogOut').then(() => { location.reload(); }); diff --git a/src/views/newMap/jointTrainingNew/menuSchema.vue b/src/views/newMap/jointTrainingNew/menuSchema.vue index 02db231ae..4d386a28a 100644 --- a/src/views/newMap/jointTrainingNew/menuSchema.vue +++ b/src/views/newMap/jointTrainingNew/menuSchema.vue @@ -190,7 +190,22 @@ export default { this.$emit('runPlanLoadShow'); }, viewRunPlan() { - this.$refs.runPlanView.doShow(); + if (this.$route.query.project === 'bjd') { + 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'); + } else { + this.$refs.runPlanView.doShow(); + } }, // 选择车站 switchStationMode(stationCode) {