增加demo
This commit is contained in:
parent
e183f40611
commit
666ad3f7d9
@ -4,7 +4,7 @@ import router from './router/index';
|
||||
import {loginInfo} from '@/scripts/ProjectConfig';
|
||||
import NProgress from 'nprogress';
|
||||
import 'nprogress/nprogress.css';
|
||||
import { getToken, removeToken, getSessionStorage } from '@/utils/auth';
|
||||
import { setToken, getToken, removeToken, getSessionStorage } from '@/utils/auth';
|
||||
import localStore from 'storejs';
|
||||
|
||||
const whiteList = ['/login', '/design/login', '/gzzbxy/relay', '/authorization', '/AUSline', '/AUStool']; // 不重定向白名单
|
||||
@ -67,7 +67,15 @@ router.beforeEach((to, from, next) => {
|
||||
document.title = loginInfo[project || 'login'].browserTitle || loginInfo[project || 'login'].title;
|
||||
NProgress.start();
|
||||
const loginPath = getRouteInfo(to);
|
||||
if (getToken()) {
|
||||
const token = to.query.token
|
||||
|
||||
if (/demoTraining/.test(to.path) && token) {
|
||||
const header = { group: to.query.group, 'X-Token': token };
|
||||
setToken(token);
|
||||
store.commit('SET_TOKEN', token)
|
||||
store.commit('SUBSCRIBE', { header, type: '' });
|
||||
next();
|
||||
} else if (getToken()) {
|
||||
if (to.path === loginPath) {
|
||||
// 登录页面不拦截
|
||||
next();
|
||||
|
@ -147,6 +147,8 @@ const DraftLessonManage = () => import('@/views/teach/draftLessonManage');
|
||||
const OrganizationManage = () => import('@/views/organization/index');
|
||||
const RunPlanViewWindow = () => import('@/views/newMap/displayNew/demon/runPlanViewWindow');
|
||||
const SecondaryHome = () => import('@/views/trainingPlatform/secondaryHome');
|
||||
const Demo = () => import('@/views/demo');
|
||||
const DemoTraining = () => import('@/views/newMap/displayNew/demoTraining');
|
||||
|
||||
// import { GenerateRouteProjectList } from '@/scripts/ProjectConfig';
|
||||
// import { getSessionStorage } from '@/utils/auth';
|
||||
@ -192,6 +194,16 @@ export const userTrainingPlatform = '016'; // 实训系统
|
||||
// export const refereePlatform = '017'; // 裁判系统
|
||||
|
||||
export const constantRoutes = [
|
||||
{
|
||||
path: '/demo',
|
||||
component: Demo,
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
path: '/demoTraining/:mode',
|
||||
component: DemoTraining,
|
||||
hidden: true
|
||||
},
|
||||
// 实训平台登录
|
||||
{
|
||||
path: '/login',
|
||||
|
77
src/views/demo/index.vue
Normal file
77
src/views/demo/index.vue
Normal file
@ -0,0 +1,77 @@
|
||||
<template>
|
||||
<div>
|
||||
<div v-for="(el, i) in trainingList" :key="i" >
|
||||
<el-button @click="doClick(el)">{{el.title}}</el-button>
|
||||
</div>
|
||||
<iframe class="dialog" :style="{display:show?'block': 'none'}" :src="src" width="100%" height="100%"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getToken } from '@/utils/auth';
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
src: '',
|
||||
show: false,
|
||||
trainingList: [
|
||||
{
|
||||
title: '全站取消联锁自动触发',
|
||||
id: '4994993'
|
||||
},
|
||||
{
|
||||
title: '2222',
|
||||
id: 1
|
||||
},
|
||||
{
|
||||
title: '33333',
|
||||
id: 1
|
||||
}
|
||||
]
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
window.addEventListener('message', (e) => {
|
||||
// console.log(e, e.data) //e.data为传递过来的数据
|
||||
// console.log(e.origin) //e.origin为调用 postMessage 时消息发送方窗口的 origin(域名、协议和端口)
|
||||
// console.log(e.source) //e.source为对发送消息的窗口对象的引用,可以使用此来在具有不同origin的两个窗口之间建立双向通信
|
||||
this.src = '';
|
||||
this.show = false;
|
||||
this.$nextTick(_ => {
|
||||
const result = e.data;
|
||||
if (result.type == 'DEMO_RESULT' && result.hasOwnProperty('score')) {
|
||||
this.$confirm(`得分:${result.score}分`, "结果", {
|
||||
confirmButtonText: "确定",
|
||||
type:'warning',
|
||||
showCancelButton: false,
|
||||
center: true
|
||||
}).then(_ => {
|
||||
}).catch(_ => {
|
||||
});
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
destroyed() {
|
||||
window.removeEventListener('message');
|
||||
},
|
||||
methods: {
|
||||
doClick(el) {
|
||||
this.show = true;
|
||||
this.src = `http://localhost:9527/cbtc/demoTraining/teach?lessonId=101&mapId=49&lineCode=02&prdType=01&noPreLogout=true&trainingId=${el.id}&token=${getToken()}`;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
.dialog {
|
||||
background: #fff;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
</style>
|
72
src/views/newMap/displayNew/demoTraining/index.vue
Normal file
72
src/views/newMap/displayNew/demoTraining/index.vue
Normal file
@ -0,0 +1,72 @@
|
||||
<template>
|
||||
<div class="demo" v-loading="loading">
|
||||
<lesson-training v-if="hasGroup"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import LessonTraining from '../index';
|
||||
import { trainingNotifyNew } from '@/api/simulation';
|
||||
import { EventBus } from '@/scripts/event-bus';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
LessonTraining
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
result: {
|
||||
}
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
hasGroup() {
|
||||
return this.$route.query.group;
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
'$route': function() {
|
||||
this.loading = false;
|
||||
}
|
||||
},
|
||||
async mounted() {
|
||||
await this.createSimulation();
|
||||
},
|
||||
methods: {
|
||||
async createSimulation() {
|
||||
const lineCode = this.$route.query.lineCode;
|
||||
const mapId = this.$route.query.mapId;
|
||||
const prdType = this.$route.query.prdType;
|
||||
const trainingId = this.$route.query.trainingId;
|
||||
const lessonId = this.$route.query.lessonId;
|
||||
const mode = this.$route.params.mode;
|
||||
const goodsId = '';
|
||||
|
||||
this.loading = true;
|
||||
const resp = await trainingNotifyNew({trainingId});
|
||||
if (resp && resp.code == 200) {
|
||||
const query = { lineCode, group: resp.data, prdType, mapId, lessonId, trainingId, goodsId, from: 'kzfmooc', project: 'login', try: '0'};
|
||||
this.$store.dispatch('training/setPrdType', prdType);
|
||||
this.$router.replace({ path: `/demoTraining/${mode}`, query: query });
|
||||
EventBus.$on('demoResult', e => this.exitSimulation(e) );
|
||||
} else if (resp.code == 10003) {
|
||||
this.loading = false;
|
||||
this.$messageBox(this.$t('error.createSimulationFailed') + ':您的仿真权限不足!');
|
||||
} else {
|
||||
this.loading = false;
|
||||
this.$messageBox(this.$t('error.createSimulationFailed') + error.message);
|
||||
};
|
||||
},
|
||||
exitSimulation(result={}) {
|
||||
window.parent.postMessage(Object.assign(result, {type: 'DEMO_RESULT'}), 'http://localhost:9527/cbtc/demo')
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.demo {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
Loading…
Reference in New Issue
Block a user