Merge branch 'dev' of https://git.qcloud.com/joylink/jl-nclient into dev
This commit is contained in:
commit
1993de8548
10
src/i18n/langs/en/demonstration.js
Normal file
10
src/i18n/langs/en/demonstration.js
Normal file
@ -0,0 +1,10 @@
|
||||
export default {
|
||||
simulationSystem: 'Urban rail transit simulation system',
|
||||
simulationSystemDescription: 'Based on the subway signal system, the urban rail transit simulation system is reformed for the training part, aiming to build a set of professional simulation system for driving demonstration. The system has high flexibility for future expansion and upgrading. Meanwhile, the simulation system has two modes of normal operation and fault operation. Besides normal functional operation, it can also conduct fault simulation of equipment.',
|
||||
simulationName: 'Simulation name:',
|
||||
noSimulationProducts: 'No simulation products',
|
||||
productDescription: 'Product description:',
|
||||
startSimulation: 'Start the simulation',
|
||||
createRoom: 'Create a room',
|
||||
enterRoom: 'Enter the room'
|
||||
};
|
@ -56,6 +56,7 @@ export default {
|
||||
createOperateRuleFailed: 'Failed to create operation definition',
|
||||
createOperateStepFailed: 'The create action step failed',
|
||||
updateOperateStepFailed: 'The update action step failed',
|
||||
packagePermissionFailed: 'Packaging authority failed'
|
||||
|
||||
packagePermissionFailed: 'Packaging authority failed',
|
||||
acquisitionTimeFailed: 'Acquisition Time Failed',
|
||||
getProductListFailed: 'Failed to get product list'
|
||||
};
|
||||
|
@ -99,5 +99,9 @@ export default {
|
||||
minute: 'minute',
|
||||
totoal: 'Totoal',
|
||||
publishPermission: 'The public authority',
|
||||
specialPermission: 'Special permission'
|
||||
specialPermission: 'Special permission',
|
||||
mapList: 'Map list',
|
||||
updateTime: 'Update time:',
|
||||
line: 'Line:',
|
||||
permissionList: 'Permissions list:'
|
||||
};
|
||||
|
@ -14,6 +14,8 @@ import publish from './publish';
|
||||
import permission from './permission';
|
||||
import replay from './replay';
|
||||
import planMonitor from './planMonitor';
|
||||
import screenMonitor from './screenMonitor';
|
||||
import demonstration from './demonstration';
|
||||
|
||||
export default {
|
||||
...enLocale,
|
||||
@ -31,5 +33,7 @@ export default {
|
||||
publish,
|
||||
permission,
|
||||
replay,
|
||||
planMonitor
|
||||
planMonitor,
|
||||
screenMonitor,
|
||||
demonstration
|
||||
};
|
||||
|
@ -1,10 +1,6 @@
|
||||
export default {
|
||||
line: 'Line:',
|
||||
turnoverTime: 'Update time:',
|
||||
permissionList: 'Permissions list:',
|
||||
buy: 'Buy',
|
||||
offlineMappingSoftware: 'Offline mapping software',
|
||||
lianPlanSystem: 'Urban rail transit lian planning system',
|
||||
lianPlanDescription: 'Lian plan is a map compiling test system, can be real simulation to achieve the simulation of running test of new operation diagram, the system can realize editing operation diagram, import operation diagram and according to the standard of operation diagram simulation real driving environment, solve the problem that can not be updated for operation diagram test. It can find out the unreasonable places in the new diagram in time and make real-time adjustment on the diagram, so as to avoid the problem of finding problems in the operation of the new diagram and requiring manual intervention of dispatchers, and minimize the impact of the fault on the normal operation of subway.',
|
||||
mapList: 'Map list'
|
||||
};
|
||||
|
6
src/i18n/langs/en/screenMonitor.js
Normal file
6
src/i18n/langs/en/screenMonitor.js
Normal file
@ -0,0 +1,6 @@
|
||||
export default {
|
||||
screenSystem: 'Large screen system of urban rail transit',
|
||||
screenSystemDescription: 'Based on the subway signal system and real subway line data, the big screen system of urban rail transit aims to build a professional simulation system of driving demonstration. The system has high flexibility to switch line data freely.',
|
||||
productTrialDuration: 'product Trial Duration:',
|
||||
aTSScreenSimulation: 'ATS line tuning center screen simulation'
|
||||
};
|
@ -9,6 +9,7 @@ export default {
|
||||
hint: 'Tips',
|
||||
cancelledDelete: 'Cancelled delete',
|
||||
cancelGeneration: 'Batch generation has been cancelled',
|
||||
refreshFailure: 'Refresh failure',
|
||||
|
||||
updateSuccessfully: 'The update is successful',
|
||||
saveSuccessfully: 'Save success',
|
||||
@ -62,12 +63,13 @@ export default {
|
||||
deleteProductSuccessfully: 'Product deleted successfully',
|
||||
deleteProductFailed: 'Product deletion failed',
|
||||
cannotDeleteProduct: 'The product has been used and cannot be deleted',
|
||||
productCodeExists: 'The product Code already exists',
|
||||
narrowScope: 'You cannot narrow down the training list you created last time',
|
||||
|
||||
pathCreationSuccessful: 'Create road successfully!',
|
||||
createRoutingFailed: 'Failed to create junction',
|
||||
pathUpdataSuccessful: 'Road update successful!',
|
||||
pathUpdataFailed: 'Update traffic failed',
|
||||
productCodeExists: 'The product Code already exists',
|
||||
narrowScope: 'You cannot narrow down the training list you created last time',
|
||||
|
||||
failedLoadMap: 'Failed to load map data',
|
||||
sectionPointsDeficiency: 'Segment coordinates missing',
|
||||
@ -99,6 +101,11 @@ export default {
|
||||
|
||||
failedCourse: 'Failed to obtain course information',
|
||||
createSimulationFaild: 'Failed to create simulation',
|
||||
accessCourseNo: 'No access to this course, please go and buy it!'
|
||||
accessCourseNo: 'No access to this course, please go and buy it!',
|
||||
|
||||
failedSubmitOrder: 'Failed to submit order',
|
||||
permissionsNumber: 'Please enter the number of valid permissions',
|
||||
purchaseMonth: 'Please enter a valid purchase month',
|
||||
createRoomFailedHint: 'Each user can only create one comprehensive drill room. Do you want to enter the room?',
|
||||
noPermissionHint: 'You do not have permission, please go to purchase products'
|
||||
};
|
||||
|
10
src/i18n/langs/zh/demonstration.js
Normal file
10
src/i18n/langs/zh/demonstration.js
Normal file
@ -0,0 +1,10 @@
|
||||
export default {
|
||||
simulationSystem: '城市轨道交通仿真系统',
|
||||
simulationSystemDescription: '城市轨道交通仿真系统以各地铁信号系统为基础,针对培训部分进行改造,旨在构建一套用于行车演示的专业仿真模拟系统。该系统具有高灵活性以便于将来的扩展升级,同时,仿真系统具备正常操作及故障操作两种模式,除了正常的功能操作以外还可以进行设备的故障模拟。',
|
||||
simulationName: '仿真名称:',
|
||||
noSimulationProducts: '无仿真产品',
|
||||
productDescription: '产品说明:',
|
||||
startSimulation: '开始仿真',
|
||||
createRoom: '创建房间',
|
||||
enterRoom: '进入房间'
|
||||
};
|
@ -56,6 +56,8 @@ export default {
|
||||
createOperateRuleFailed: '创建操作定义失败',
|
||||
createOperateStepFailed: '创建操作步骤失败',
|
||||
updateOperateStepFailed: '更新操作步骤失败',
|
||||
packagePermissionFailed: '打包权限失败'
|
||||
};
|
||||
packagePermissionFailed: '打包权限失败',
|
||||
acquisitionTimeFailed: '获取时间失败',
|
||||
getProductListFailed: '获取产品列表失败'
|
||||
|
||||
};
|
||||
|
@ -124,5 +124,9 @@ export default {
|
||||
minute: '分钟',
|
||||
totoal: '总数',
|
||||
publishPermission: '公用权限',
|
||||
specialPermission: '专用权限'
|
||||
specialPermission: '专用权限',
|
||||
mapList: '地图列表',
|
||||
updateTime: '更新时间:',
|
||||
line: '线路:',
|
||||
permissionList: '权限列表:'
|
||||
};
|
||||
|
@ -14,6 +14,8 @@ import publish from './publish';
|
||||
import permission from './permission';
|
||||
import replay from './replay';
|
||||
import planMonitor from './planMonitor';
|
||||
import screenMonitor from './screenMonitor';
|
||||
import demonstration from './demonstration';
|
||||
|
||||
export default {
|
||||
...cnLocale,
|
||||
@ -31,5 +33,7 @@ export default {
|
||||
publish,
|
||||
permission,
|
||||
replay,
|
||||
planMonitor
|
||||
planMonitor,
|
||||
screenMonitor,
|
||||
demonstration
|
||||
};
|
||||
|
@ -1,10 +1,6 @@
|
||||
export default {
|
||||
line: '线路:',
|
||||
turnoverTime: '更新时间:',
|
||||
permissionList: '权限列表:',
|
||||
buy: '购买',
|
||||
offlineMappingSoftware: '离线编图软件',
|
||||
lianPlanSystem: '城市轨道交通琏计划系统',
|
||||
lianPlanDescription: '琏计划是一款编图测试系统,能够真实模拟实现对新运行图的仿真运行测试,该系统能够实现编辑运行图、导入运行图并按照运行图标准模拟真实行车环境,解决了无法针对运行图更新进行测试的问题。能够及时找出新图中不合理的地方并且在图上实时作出调整,避免了新运行图在运营过程中发现问题需要调度员人工进行干预的情况,最大程度降低故障对地铁正常运营的影响。',
|
||||
mapList: '地图列表'
|
||||
lianPlanDescription: '琏计划是一款编图测试系统,能够真实模拟实现对新运行图的仿真运行测试,该系统能够实现编辑运行图、导入运行图并按照运行图标准模拟真实行车环境,解决了无法针对运行图更新进行测试的问题。能够及时找出新图中不合理的地方并且在图上实时作出调整,避免了新运行图在运营过程中发现问题需要调度员人工进行干预的情况,最大程度降低故障对地铁正常运营的影响。'
|
||||
};
|
||||
|
6
src/i18n/langs/zh/screenMonitor.js
Normal file
6
src/i18n/langs/zh/screenMonitor.js
Normal file
@ -0,0 +1,6 @@
|
||||
export default {
|
||||
screenSystem: '城市轨道交通大屏系统',
|
||||
screenSystemDescription: '城市轨道交通大屏系统以各地铁信号系统及真实地铁线路数据为基础,旨在构建一套行车演示的专业模拟系统。 该系统具有高灵活性可自由切换线路数据。',
|
||||
productTrialDuration: '产品试用时长:',
|
||||
aTSScreenSimulation: 'ATS行调中心大屏仿真'
|
||||
};
|
@ -105,6 +105,7 @@ export default {
|
||||
|
||||
failedSubmitOrder: '提交订单失败',
|
||||
permissionsNumber: '请输入有效的权限个数',
|
||||
purchaseMonth: '请输入有效的购买月数'
|
||||
|
||||
purchaseMonth: '请输入有效的购买月数',
|
||||
createRoomFailedHint: '每个用户只能创建一个综合演练房间, 是否进入房间?',
|
||||
noPermissionHint: '您没有权限,请前往购买产品'
|
||||
};
|
||||
|
@ -6,8 +6,8 @@ const scriptRecord = {
|
||||
state: {
|
||||
mapLocation: {}, // 地图定位,
|
||||
simulationPause: true,
|
||||
scriptId: ''
|
||||
|
||||
scriptId: '',
|
||||
bgSet: false
|
||||
},
|
||||
getters: {
|
||||
mapLocation: (state)=>{
|
||||
@ -18,6 +18,9 @@ const scriptRecord = {
|
||||
},
|
||||
scriptId: (state)=>{
|
||||
return state.scriptId;
|
||||
},
|
||||
bgSet: (state)=>{
|
||||
return state.bgSet;
|
||||
}
|
||||
},
|
||||
mutations: {
|
||||
@ -29,6 +32,9 @@ const scriptRecord = {
|
||||
},
|
||||
setscriptId: (state, scriptId) => {
|
||||
state.scriptId = scriptId;
|
||||
},
|
||||
setBgSet: (state, bgSet) => {
|
||||
state.bgSet = bgSet;
|
||||
}
|
||||
},
|
||||
actions: {
|
||||
@ -43,6 +49,9 @@ const scriptRecord = {
|
||||
},
|
||||
updateScriptId: ({ commit }, scriptId) => {
|
||||
commit('setscriptId', scriptId);
|
||||
},
|
||||
updateBgSet: ({ commit }, bgSet) => {
|
||||
commit('setBgSet', bgSet);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -1,8 +1,8 @@
|
||||
<template>
|
||||
<el-card v-loading="loading">
|
||||
<div slot="header" style="text-align: center;">
|
||||
<span v-if="hasProduct"><b>仿真名称: {{ courseModel.name }}</b></span>
|
||||
<span v-else>无仿真产品</span>
|
||||
<span v-if="hasProduct"><b>{{ $t('demonstration.simulationName') + courseModel.name }}</b></span>
|
||||
<span v-else>{{$t('demonstration.noSimulationProducts')}}</span>
|
||||
</div>
|
||||
<el-tabs
|
||||
type="border-card"
|
||||
@ -20,22 +20,22 @@
|
||||
>
|
||||
<el-scrollbar wrap-class="scrollbar-wrapper" :style="{ height: height-170 +'px' }">
|
||||
<p class="list-item">
|
||||
<span class="list-label">产品说明:</span>
|
||||
<span class="list-label">{{$t('demonstration.productDescription')}}</span>
|
||||
<span class="list-elem">{{ courseModel.remarks }}</span>
|
||||
</p>
|
||||
<p class="list-item">
|
||||
<span class="list-label">权限列表:</span>
|
||||
<span class="list-label">{{$t('global.permissionList')}}</span>
|
||||
</p>
|
||||
<limit-list :ref="`limit_${item.code}`" :course-model="courseModel" @initLoadPage="initLoadPage" />
|
||||
</el-scrollbar>
|
||||
</el-tab-pane>
|
||||
<div v-if="hasProduct" class="btn-buy">
|
||||
<el-button :loading="buttonLoading" type="success" @click="buy">购买</el-button>
|
||||
<el-button v-if="hasPermssion" :loading="buttonLoading" type="primary" @click="distribute">权限分发</el-button>
|
||||
<el-button v-if="hasPermssion" :loading="buttonLoading" type="primary" @click="transfer">权限转赠</el-button>
|
||||
<el-button v-show="isStartDemon" :loading="buttonLoading" type="primary" @click="start">开始仿真</el-button>
|
||||
<el-button v-show="isCreateRoom" :loading="buttonLoading" type="primary" @click="start">创建房间</el-button>
|
||||
<el-button v-show="isInRoom" :loading="buttonLoading" type="primary" @click="joinRoom">进入房间</el-button>
|
||||
<el-button :loading="buttonLoading" type="success" @click="buy">{{$t('global.buy')}}</el-button>
|
||||
<el-button v-if="hasPermssion" :loading="buttonLoading" type="primary" @click="distribute">{{$t('global.distributePermission')}}</el-button>
|
||||
<el-button v-if="hasPermssion" :loading="buttonLoading" type="primary" @click="transfer">{{$t('global.transferQRCode')}}</el-button>
|
||||
<el-button v-show="isStartDemon" :loading="buttonLoading" type="primary" @click="start">{{$t('demonstration.startSimulation')}}</el-button>
|
||||
<el-button v-show="isCreateRoom" :loading="buttonLoading" type="primary" @click="start">{{$t('demonstration.createRoom')}}</el-button>
|
||||
<el-button v-show="isInRoom" :loading="buttonLoading" type="primary" @click="joinRoom">{{$t('demonstration.enterRoom')}}</el-button>
|
||||
</div>
|
||||
</el-tabs>
|
||||
</el-card>
|
||||
@ -59,18 +59,6 @@ export default {
|
||||
components: {
|
||||
LimitList
|
||||
},
|
||||
filters: {
|
||||
setTime(val) {
|
||||
if (val <= 1) {
|
||||
return `0分钟`;
|
||||
} else if (val > 1 && val <= 60) {
|
||||
return '1分钟';
|
||||
} else if (val > 60) {
|
||||
const time = parseInt(val / 60);
|
||||
return `${time}分钟`;
|
||||
}
|
||||
}
|
||||
},
|
||||
mixins: [
|
||||
WindowResizeHandler
|
||||
],
|
||||
@ -160,7 +148,7 @@ export default {
|
||||
}
|
||||
this.loading = false;
|
||||
} catch (e) {
|
||||
this.$messageBox('获取产品列表失败');
|
||||
this.$messageBox(this.$t('error.getProductListFailed'));
|
||||
}
|
||||
},
|
||||
resizeHandler: function () {
|
||||
@ -227,7 +215,7 @@ export default {
|
||||
}
|
||||
} catch (error) {
|
||||
this.loading = false;
|
||||
this.$messageBox('刷新失败');
|
||||
this.$messageBox(this.$t('error.refreshFailed'));
|
||||
}
|
||||
} else {
|
||||
this.loading = false;
|
||||
@ -254,9 +242,9 @@ export default {
|
||||
} catch (error) {
|
||||
this.buttonLoading = false;
|
||||
if (error.code == 20001) {
|
||||
this.$confirm(`每个用户只能创建一个综合演练房间, 是否进入房间`, '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
this.$confirm(this.$t('tip.createRoomFailedHint'), this.$t('global.tips'), {
|
||||
confirmButtonText: this.$t('global.confirm'),
|
||||
cancelButtonText: this.$t('global.cancel'),
|
||||
type: 'warning'
|
||||
}).then(() => {}).catch(() => {});
|
||||
}
|
||||
@ -269,13 +257,13 @@ export default {
|
||||
this.jump();
|
||||
} else {
|
||||
if (this.tryTime <= 1) {
|
||||
this.$confirm('您没有权限,请前往购买产品', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
this.$confirm(this.$t('tip.noPermissionHint'), this.$t('global.tips'), {
|
||||
confirmButtonText: this.$t('global.confirm'),
|
||||
cancelButtonText: this.$t('global.cancel'),
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.buy();
|
||||
}).catch(() => {});
|
||||
}).catch(() => { this.buttonLoading = false; });
|
||||
} else {
|
||||
this.jump();
|
||||
}
|
||||
@ -290,7 +278,8 @@ export default {
|
||||
this.$router.push({ path: `${UrlConfig.display}/demon`, query: query });
|
||||
launchFullscreen();
|
||||
}).catch(error => {
|
||||
this.$messageBox(`创建仿真失败: ${error.message}`);
|
||||
this.$messageBox(this.$t('error.createSimulationFailed') + error.message);
|
||||
this.buttonLoading = false;
|
||||
});
|
||||
},
|
||||
buy() {
|
||||
|
@ -3,7 +3,7 @@
|
||||
<div class="home-box" :style="{height: height+'px'}">
|
||||
<el-scrollbar wrap-class="scrollbar-wrapper">
|
||||
<h1 class="title">
|
||||
城市轨道交通仿真系统
|
||||
{{$t('demonstration.simulationSystem')}}
|
||||
<img :src="logo" alt="" class="logo-img">
|
||||
</h1>
|
||||
<div class="card-box">
|
||||
@ -13,8 +13,7 @@
|
||||
</el-carousel-item>
|
||||
</el-carousel>
|
||||
</div>
|
||||
<div class="brief-box">城市轨道交通仿真系统以各地铁信号系统为基础,针对培训部分进行改造,旨在构建一套用于行车演示的专业仿真模拟系统。
|
||||
该系统具有高灵活性以便于将来的扩展升级,同时,仿真系统具备正常操作及故障操作两种模式,除了正常的功能操作以外还可以进行设备的故障模拟。</div>
|
||||
<div class="brief-box">{{$t('demonstration.simulationSystemDescription')}}</div>
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
</el-card>
|
||||
|
@ -1,11 +1,11 @@
|
||||
<template>
|
||||
<el-card v-loading="loading" class="map-list-main">
|
||||
<div slot="header" class="clearfix">
|
||||
<span>地图列表</span>
|
||||
<span>{{$t('global.mapList')}}</span>
|
||||
<!-- <div v-if="role" class="back-home" @click="backHome">返回首页</div> -->
|
||||
</div>
|
||||
<filter-city ref="filerCity" filter-empty :query-function="queryFunction" @filterSelectChange="refresh" @changeFilter="clearMapSelect" />
|
||||
<el-input v-model="filterText" placeholder="输入关键字进行过滤" clearable />
|
||||
<el-input v-model="filterText" :placeholder="this.$t('global.filteringKeywords')" clearable />
|
||||
<el-scrollbar wrap-class="scrollbar-wrapper" :style="{ height: (height-125) +'px' }">
|
||||
<el-tree
|
||||
ref="tree"
|
||||
@ -122,7 +122,7 @@ export default {
|
||||
});
|
||||
} catch (error) {
|
||||
this.loading = false;
|
||||
this.$messageBox('刷新失败');
|
||||
this.$messageBox(this.$t('error.refreshFailed'));
|
||||
}
|
||||
},
|
||||
clearMapSelect() {
|
||||
|
@ -1,15 +1,15 @@
|
||||
<template>
|
||||
<el-card>
|
||||
<div slot="header" style="text-align: center;">
|
||||
<span class=" title">{{ $t('planMonitor.line')+courseModel.name }}</span>
|
||||
<span class=" title">{{ $t('global.line')+courseModel.name }}</span>
|
||||
</div>
|
||||
<div style="margin:50px; overflow-x: auto;" :style="{ height: height - 150 +'px' }">
|
||||
<p class="list-item">
|
||||
<span class="list-label">{{ $t('planMonitor.turnoverTime') }}</span>
|
||||
<span class="list-label">{{ $t('global.updateTime') }}</span>
|
||||
<span class="list-elem">{{ courseModel.updateTime }}</span>
|
||||
</p>
|
||||
<p class="list-item">
|
||||
<span class="list-label">{{ $t('planMonitor.permissionList') }}</span>
|
||||
<span class="list-label">{{ $t('global.permissionList') }}</span>
|
||||
</p>
|
||||
<limit-list ref="limitList" :course-model="courseModel" @initLoadPage="getScreenLists" />
|
||||
<p style="display: flex; justify-content: center;">
|
||||
@ -40,16 +40,6 @@ export default {
|
||||
LimitList
|
||||
},
|
||||
filters: {
|
||||
setTime(val) {
|
||||
if (val <= 1) {
|
||||
return `0`+this.$t('global.minute');
|
||||
} else if (val > 1 && val <= 60) {
|
||||
return '1'+this.$t('global.minute');
|
||||
} else if (val > 60) {
|
||||
const time = parseInt(val / 60);
|
||||
return time+this.$t('global.minutes');
|
||||
}
|
||||
}
|
||||
},
|
||||
mixins: [
|
||||
WindowResizeHandler
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<el-card v-loading="loading" class="map-list-main">
|
||||
<div slot="header" class="clearfix">
|
||||
<span>{{ $t('planMonitor.mapList') }}</span>
|
||||
<span>{{ $t('global.mapList') }}</span>
|
||||
</div>
|
||||
<filter-city ref="filerCity" filter-empty :query-function="queryFunction" @filterSelectChange="refresh" />
|
||||
<el-input v-model="filterText" :placeholder="this.$t('global.filteringKeywords')" clearable />
|
||||
|
@ -1,27 +1,27 @@
|
||||
<template>
|
||||
<el-card>
|
||||
<div slot="header" style="text-align: center;">
|
||||
<span class=" title">线路: {{ courseModel.name }}</span>
|
||||
<span class=" title">{{$t('global.line') + courseModel.name }}</span>
|
||||
</div>
|
||||
<div style="margin:50px; overflow-x: auto;" :style="{ height: height - 150 +'px' }">
|
||||
<p class="list-item">
|
||||
<span class="list-label">更新时间:</span>
|
||||
<span class="list-label">{{ $t('global.updateTime') }}</span>
|
||||
<span class="list-elem">{{ courseModel.updateTime }}</span>
|
||||
</p>
|
||||
<p class="list-item" v-if="!courseModel.pmsList.length">
|
||||
<span class="list-label">产品试用时长:</span>
|
||||
<span class="list-elem">{{ tryTime | setTime }}</span>
|
||||
<span class="list-label">{{ $t('screenMonitor.productTrialDuration') }}</span>
|
||||
<span class="list-elem">{{ showTryTime }}</span>
|
||||
</p>
|
||||
<p class="list-item">
|
||||
<span class="list-label">权限列表:</span>
|
||||
<span class="list-label">{{ $t('global.permissionList') }}</span>
|
||||
</p>
|
||||
<limit-list ref="limitList" :courseModel="courseModel" @initLoadPage="getScreenLists"></limit-list>
|
||||
<p style="display: flex; justify-content: center;">
|
||||
<span class="list-label"></span>
|
||||
<el-button type="success" @click="buy">购买</el-button>
|
||||
<el-button type="primary" @click="distribute" v-if="hasPermssion">权限分发</el-button>
|
||||
<el-button type="primary" @click="transfer" v-if="hasPermssion">权限转赠</el-button>
|
||||
<el-button type="primary" @click="start">ATS行调中心大屏仿真</el-button>
|
||||
<el-button type="success" @click="buy">{{ $t('global.buy') }}</el-button>
|
||||
<el-button type="primary" @click="distribute" v-if="hasPermssion">{{$t('global.distributePermission')}}</el-button>
|
||||
<el-button type="primary" @click="transfer" v-if="hasPermssion">{{$t('global.transferQRCode')}}</el-button>
|
||||
<el-button type="primary" @click="start">{{$t('screenMonitor.aTSScreenSimulation')}}</el-button>
|
||||
</p>
|
||||
</div>
|
||||
<set-time ref="setTime" @ConfirmSelectBeginTime="jump"></set-time>
|
||||
@ -62,6 +62,7 @@
|
||||
},
|
||||
goodsId: '',
|
||||
tryTime: 0,
|
||||
showTryTime: '0',
|
||||
tryUser: 0,
|
||||
EffectiveTypeList: [],
|
||||
screenList: [],
|
||||
@ -71,16 +72,6 @@
|
||||
WindowResizeHandler
|
||||
],
|
||||
filters: {
|
||||
setTime(val) {
|
||||
if (val <= 1) {
|
||||
return `0分钟`;
|
||||
} else if (1 < val && val <= 60) {
|
||||
return '1分钟';
|
||||
} else if (val > 60) {
|
||||
let time = parseInt(val / 60);
|
||||
return `${time}分钟`;
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
hasPermssion() {
|
||||
@ -143,16 +134,19 @@
|
||||
let resp = await getGoodsTryUse(paras);
|
||||
if (resp.data.tryTime <= 0) {
|
||||
this.tryTime = 0;
|
||||
this.setTryTime(0)
|
||||
} else {
|
||||
this.tryTime = resp.data.tryTime;
|
||||
this.setTryTime(resp.data.tryTime)
|
||||
this.goodsId = resp.data.goodsId;
|
||||
}
|
||||
|
||||
} catch (err) {
|
||||
this.$messageBox('获取时间失败')
|
||||
this.$messageBox(this.$t('error.acquisitionTimeFailed'))
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
this.$messageBox('刷新失败')
|
||||
this.$messageBox(this.$t('error.refreshFailed'))
|
||||
};
|
||||
}
|
||||
},
|
||||
@ -205,6 +199,16 @@
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
setTryTime(val) {
|
||||
if (val <= 1) {
|
||||
this.showTryTime = `0`+ this.$t('global.minute');
|
||||
} else if (1 < val && val <= 60) {
|
||||
this.showTryTime = '1'+ this.$t('global.minute');
|
||||
} else if (val > 60) {
|
||||
let time = parseInt(val / 60);
|
||||
this.showTryTime = time+ this.$t('global.minutes');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -253,4 +257,4 @@
|
||||
.list-elem {
|
||||
color: #808080 !important;
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
|
@ -3,7 +3,7 @@
|
||||
<div class="home-box" :style="{height: height+'px'}">
|
||||
<el-scrollbar wrapClass="scrollbar-wrapper" style="margin-top:5px;">
|
||||
<h1 class="title">
|
||||
城市轨道交通大屏系统
|
||||
{{$t('screenMonitor.screenSystem')}}
|
||||
<img :src="logo" alt="" class="logo-img">
|
||||
</h1>
|
||||
<div class="card-box">
|
||||
@ -13,7 +13,7 @@
|
||||
</el-carousel-item>
|
||||
</el-carousel>
|
||||
</div>
|
||||
<div class="brief-box">城市轨道交通大屏系统以各地铁信号系统及真实地铁线路数据为基础,旨在构建一套行车演示的专业模拟系统。 该系统具有高灵活性可自由切换线路数据。</div>
|
||||
<div class="brief-box">{{$t('screenMonitor.screenSystemDescription')}}</div>
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
</el-card>
|
||||
@ -98,4 +98,4 @@
|
||||
font-family: unset;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
|
@ -1,11 +1,11 @@
|
||||
<template>
|
||||
<el-card class="map-list-main" v-loading="loading">
|
||||
<div slot="header" class="clearfix">
|
||||
<span>地图列表</span>
|
||||
<span>{{$t('global.mapList')}}</span>
|
||||
</div>
|
||||
<filter-city ref="filerCity" @filterSelectChange="refresh" filterEmpty :queryFunction="queryFunction">
|
||||
</filter-city>
|
||||
<el-input placeholder="输入关键字进行过滤" v-model="filterText" clearable> </el-input>
|
||||
<el-input :placeholder="this.$t('global.filteringKeywords')" v-model="filterText" clearable> </el-input>
|
||||
<el-scrollbar wrapClass="scrollbar-wrapper" :style="{ height: (height-125) +'px' }">
|
||||
<el-tree ref="tree" :data="treeList" node-key="id" highlight-current
|
||||
:default-expanded-keys="defaultShowKeys" :props="defaultProps" @node-click="clickEvent"
|
||||
@ -114,7 +114,7 @@
|
||||
this.$nextTick(() => { this.loading = false; })
|
||||
}).catch(error => {
|
||||
this.loading = false;
|
||||
this.$messageBox('刷新失败')
|
||||
this.$messageBox(this.$t('error.refreshFailed'));
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -128,4 +128,4 @@
|
||||
.el-tree-node.is-current>.el-tree-node__content {
|
||||
background-color: #e4e3e3 !important;
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
|
@ -9,7 +9,7 @@
|
||||
<el-button type="primary" @click="executePlayScript" v-else :disabled="executeDisabled">恢复并执行</el-button>
|
||||
<!-- <el-button type="primary" @click="saveMaplocation">{{$t('scriptRecord.saveMaplocation')}}</el-button> -->
|
||||
<el-button type="danger" @click="dumpScenesData">重置剧本</el-button>
|
||||
<el-button type="primary" @click="saveScenesStage">{{$t('scriptRecord.saveBackground')}}</el-button>
|
||||
<el-button type="primary" @click="saveScenesStage" :disabled="backDisabled">{{$t('scriptRecord.saveBackground')}}</el-button>
|
||||
<el-button type="success" @click="saveScenesData" :loading="isSavingScript" >{{$t('scriptRecord.saveData')}}</el-button>
|
||||
<!-- 暂停 -->
|
||||
</el-button-group>
|
||||
@ -42,13 +42,20 @@ import {saveScriptScenes, saveScriptData, dumpScriptData, updateMapLocation, scr
|
||||
isSavingScript:false,
|
||||
isPause:false,
|
||||
executeDisabled:false,
|
||||
backDisabled:false,
|
||||
// isSaveStage: true,
|
||||
}
|
||||
},
|
||||
created() {
|
||||
},
|
||||
watch:{
|
||||
'$store.state.scriptRecord.bgSet': function (val) {
|
||||
this.backDisabled=val;
|
||||
},
|
||||
},
|
||||
mounted(){
|
||||
this.initAutoSaveScript();
|
||||
this.backDisabled=this.$store.state.scriptRecord.bgSet;
|
||||
// this.shrink();
|
||||
},
|
||||
beforeDestroy() {
|
||||
@ -114,6 +121,7 @@ import {saveScriptScenes, saveScriptData, dumpScriptData, updateMapLocation, scr
|
||||
saveScriptScenes(this.group).then(resp => {
|
||||
updateMapLocation(group,dataZoom).then(response=>{
|
||||
// this.$message.success('更新定位成功');
|
||||
this.$store.dispatch('scriptRecord/updateBgSet',true);
|
||||
this.$message.success('保存背景成功');
|
||||
}).catch(error => {
|
||||
this.$messageBox(`更新定位失败: ${error.message}`);
|
||||
@ -154,9 +162,10 @@ import {saveScriptScenes, saveScriptData, dumpScriptData, updateMapLocation, scr
|
||||
this.$parent.$refs['display'].$refs['menuScript'].resetBeginTime();
|
||||
this.$refs["getAction"].loadInitData();
|
||||
this.initAutoSaveScript();
|
||||
this.$message.success('清除数据成功');
|
||||
this.$store.dispatch('scriptRecord/updateBgSet',false);
|
||||
this.$message.success('重置剧本成功');
|
||||
}).catch(error => {
|
||||
this.$messageBox('清除数据失败!');
|
||||
this.$messageBox('重置剧本失败!');
|
||||
})
|
||||
}).catch(error => {
|
||||
this.initAutoSaveScript();
|
||||
|
@ -2,22 +2,32 @@
|
||||
<div>
|
||||
<el-card class="conversitionCard">
|
||||
<div class="addConversition">添加对话</div>
|
||||
<el-form :model="modalData" ref="modalData" :rules="rules" label-width="100px" class="actionInfo" label-position="right">
|
||||
<el-form :model="modalData" ref="modalData" :rules="rules" label-width="100px" class="conversitionInfo" label-position="right">
|
||||
<!-- <el-form-item label="动作类型" class="conditionVO" prop="actionVO.type" >
|
||||
<el-select v-model="modalData.actionVO.type " placeholder="请选择动作类型" @change="changeType" :disabled="deviceTypeReadOnly||isPause">
|
||||
<el-option v-for="actionType in actionTypeList" :key="actionType.label" :label="actionType.label" :value="actionType.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item> -->
|
||||
<el-form-item label="讲述者" class="conditionVO" prop="actionVO.memberId">
|
||||
<el-select v-model="modalData.actionVO.memberId" placeholder="请选择讲述者" :disabled="isPause&&isNotModify">
|
||||
<el-option v-for="member in memberList" :key="member.id" :label="member.role+(member.name==undefined?'':member.name)" :value="member.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="接收者" class="conditionVO" prop="actionVO.targetId">
|
||||
<el-select v-model="modalData.actionVO.targetId" placeholder="请选择接收者" :disabled="isPause&&isNotModify">
|
||||
<el-option v-for="member in memberList" :key="member.id" :label="member.role+(member.name==undefined?'':member.name)" :value="member.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<div>
|
||||
<div class="itemGroup">
|
||||
<el-form-item label="讲述者" class="conditionVO" prop="actionVO.memberId">
|
||||
<el-select v-model="modalData.actionVO.memberId" placeholder="请选择讲述者" :disabled="isPause&&isNotModify">
|
||||
<el-option v-for="member in memberList" :key="member.id" :label="member.role+(member.name==undefined?'':member.name)" :value="member.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="接收者" class="conditionVO" prop="actionVO.targetId">
|
||||
<el-select v-model="modalData.actionVO.targetId" placeholder="请选择接收者" :disabled="isPause&&isNotModify">
|
||||
<el-option v-for="member in memberList" :key="member.id" :label="member.role+(member.name==undefined?'':member.name)" :value="member.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div class="changeGroup">
|
||||
<div class="changeTop"></div>
|
||||
<i class="el-icon-sort changeItem" @click="changeItem"></i>
|
||||
<div class="changeBottom"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<el-form-item label="内容" class="conditionVO" prop="actionVO.reply">
|
||||
<el-input v-model="modalData.actionVO.reply" type="textarea" class="textareaStyle" rows="3" :disabled="isPause&&isNotModify"></el-input>
|
||||
</el-form-item>
|
||||
@ -325,6 +335,14 @@
|
||||
}
|
||||
|
||||
},
|
||||
changeItem(){
|
||||
if(!(this.isPause&&this.isNotModify))
|
||||
{
|
||||
let temp=this.modalData.actionVO.memberId;
|
||||
this.modalData.actionVO.memberId=this.modalData.actionVO.targetId;
|
||||
this.modalData.actionVO.targetId=temp;
|
||||
}
|
||||
},
|
||||
doShow(data){
|
||||
if(data)
|
||||
{
|
||||
@ -364,7 +382,9 @@
|
||||
@import "src/styles/mixin.scss";
|
||||
.addConversition{
|
||||
margin-left:10px;
|
||||
|
||||
}
|
||||
.conversitionInfo{
|
||||
width:350px;
|
||||
}
|
||||
.addAction{
|
||||
margin-top: 20px;
|
||||
@ -402,4 +422,30 @@
|
||||
font-size:15px;
|
||||
padding: 20px 10px;
|
||||
}
|
||||
.itemGroup{
|
||||
width:310px;
|
||||
float:left;
|
||||
}
|
||||
.changeGroup{
|
||||
display:inline-block;
|
||||
}
|
||||
.changeTop{
|
||||
margin-top: 15px;
|
||||
width: 25px;
|
||||
border-top: 1px #c0c4cc solid;
|
||||
border-right: 1px #c0c4cc solid;
|
||||
height: 20px;
|
||||
}
|
||||
.changeItem{
|
||||
margin-left: 15px;
|
||||
margin-top: 5px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.changeBottom{
|
||||
margin-top: 5px;
|
||||
width: 25px;
|
||||
border-bottom: 1px #c0c4cc solid;
|
||||
border-right: 1px #c0c4cc solid;
|
||||
height: 20px;
|
||||
}
|
||||
</style>
|
||||
|
@ -95,6 +95,7 @@
|
||||
loadOtherData(obj){
|
||||
let group=obj.group;
|
||||
getScriptRecord(group).then(response=>{
|
||||
this.$store.dispatch('scriptRecord/updateBgSet', response.data.bgSet);
|
||||
this.actionInfoList=[];
|
||||
let roleTypeList=ConstConfig.ConstSelect.roleType;
|
||||
let memberVOList=JSON.stringify(response.data.memberVOList);
|
||||
@ -243,6 +244,6 @@
|
||||
color:#409EFF
|
||||
}
|
||||
.commandStyle{
|
||||
color:#f00;
|
||||
color:#F00;
|
||||
}
|
||||
</style>
|
||||
|
@ -133,6 +133,7 @@
|
||||
type="primary"
|
||||
style="float: right;"
|
||||
@click="start"
|
||||
:loading="loading"
|
||||
>
|
||||
开始仿真</el-button>
|
||||
</div>
|
||||
@ -141,6 +142,7 @@
|
||||
type="primary"
|
||||
style="float: right; margin-right: 10px;"
|
||||
@click="joinJointTrain"
|
||||
:loading="loading"
|
||||
>
|
||||
进入仿真</el-button>
|
||||
<el-button
|
||||
@ -148,6 +150,7 @@
|
||||
type=""
|
||||
style="float: right; margin-right: 10px;"
|
||||
@click="stop"
|
||||
:loading="loading"
|
||||
>
|
||||
结束仿真</el-button>
|
||||
</div>
|
||||
@ -156,6 +159,7 @@
|
||||
type=""
|
||||
style="float: right; margin-right: 0px;"
|
||||
@click="postCode"
|
||||
:loading="loading"
|
||||
>生成二维码
|
||||
</el-button>
|
||||
<el-button type="" style="float: right; margin-right: 10px;" @click="backRoom">返回
|
||||
@ -165,6 +169,7 @@
|
||||
type="danger"
|
||||
style="float: right; margin-right: 0px;"
|
||||
@click="exit"
|
||||
:loading="loading"
|
||||
>销毁房间
|
||||
</el-button>
|
||||
</div>
|
||||
@ -257,7 +262,8 @@ export default {
|
||||
timeDemon: null,
|
||||
starting: false,
|
||||
mapId: '',
|
||||
num: 0
|
||||
num: 0,
|
||||
loading: false
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
@ -366,6 +372,7 @@ export default {
|
||||
},
|
||||
async joinJointTrain() {
|
||||
// launchFullscreen();
|
||||
this.loading = true;
|
||||
await putJointTrainingSimulationEntrance(this.$route.query.group);
|
||||
const rest = await getPublishMapInfo(this.mapId);
|
||||
const query = { skinCode: rest.data.skinCode, mapId: this.mapId, group: this.$route.query.group };
|
||||
@ -535,6 +542,7 @@ export default {
|
||||
});
|
||||
},
|
||||
async postCode() {
|
||||
this.loading = true;
|
||||
const res = await getJoinTrainCode({}, this.$route.query.group);
|
||||
if (res.code == '200') {
|
||||
const param = {
|
||||
@ -545,9 +553,11 @@ export default {
|
||||
this.$refs.qrCode.doShow(param);
|
||||
}
|
||||
}
|
||||
this.loading = false;
|
||||
},
|
||||
async start() {
|
||||
let flag = true;
|
||||
this.loading = true;
|
||||
this.equipmentList.forEach(item => {
|
||||
if (!item.deviceCode) {
|
||||
flag = false;
|
||||
@ -557,24 +567,31 @@ export default {
|
||||
if (flag) {
|
||||
try {
|
||||
await startJointTraining(this.$route.query.group);
|
||||
this.loading = false;
|
||||
} catch (error) {
|
||||
this.messageInfo('开始综合演练失败。', 'error');
|
||||
this.loading = false;
|
||||
}
|
||||
} else {
|
||||
this.messageInfo('车站值班员所属车站不能为空', 'error');
|
||||
this.loading = false;
|
||||
}
|
||||
},
|
||||
async stop() {
|
||||
this.loading = true;
|
||||
const res = await putJointTrainingSimulation(this.$route.query.group);
|
||||
this.mapId = res.data.mapId;
|
||||
if (res.data.state == '01') {
|
||||
this.starting = false;
|
||||
}
|
||||
this.loading = false;
|
||||
},
|
||||
// 返回
|
||||
async backRoom() {
|
||||
try {
|
||||
this.loading = true;
|
||||
await putJointTrainingExit(this.$route.query.group);
|
||||
this.loading = false;
|
||||
this.$router.push({ path: `/` });
|
||||
} catch (error) {
|
||||
this.messageInfo('操作失败!', 'error');
|
||||
@ -582,6 +599,7 @@ export default {
|
||||
},
|
||||
// 管理员销毁房间
|
||||
exit() {
|
||||
this.loading = false;
|
||||
this.$confirm('您将销毁房间,是否确定执行此操作', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
|
Loading…
Reference in New Issue
Block a user