Merge branch 'dev' into test

This commit is contained in:
zyy 2019-11-01 18:09:17 +08:00
commit 645326bf6a
27 changed files with 710 additions and 704 deletions

View File

@ -119,5 +119,6 @@ export default {
theBelongsProjectCannotBeEmpty: 'The belongs project cannot be empty',
pleaseSelectTheBelongsProject: 'Please select the belongs project',
copyMapAs: 'Copy map as',
whetherToCopyData: 'Whether to copy data'
whetherToCopyData: 'Whether to copy data',
copy:'Copy'
};

View File

@ -123,5 +123,6 @@ export default {
theBelongsProjectCannotBeEmpty: '所属项目不能为空',
pleaseSelectTheBelongsProject: '请选择归属项目',
copyMapAs: '复制地图为',
whetherToCopyData: '是否复制数据'
whetherToCopyData: '是否复制数据',
copy:'复制'
};

View File

@ -49,10 +49,10 @@ import TeachDetail from '@/views/teach/detail/index';
import TeachHome from '@/views/teach/index';
import Pay from '@/views/components/pay/index';
import ExamDetail from '@/views/exam/detail/examDetail';
import ExamHome from '@/views/exam/index';
import ExamCourseDetail from '@/views/exam/detail/courseDetail';
import ExamResult from '@/views/exam/result';
import ExamDetail from '@/views/exam/detail/examDetail';
import ExamCourseDetail from '@/views/exam/detail/courseDetail';
import DemonstrationDetail from '@/views/demonstration/detail/index';
@ -428,7 +428,7 @@ export const asyncRouter = [
},
hidden: true
},
{
{ // 剧本编辑 战场图
path: '/scriptDisplay/:mode',
component: ScriptDisplay,
meta: {
@ -758,6 +758,7 @@ export const asyncRouter = [
}
},
{
// 用户管理
path: 'userManage',
component: UserControl,
meta: {
@ -765,6 +766,7 @@ export const asyncRouter = [
}
},
{
// 缓存管理
path: 'cache',
component: CacheControl,
meta: {
@ -800,6 +802,7 @@ export const asyncRouter = [
}
},
{
// 子系统生成
path: 'systemGenerate',
component: SystemGenerate,
meta: {
@ -807,6 +810,7 @@ export const asyncRouter = [
}
},
{
// 产品编辑
path: 'product',
component: MapProduct,
meta: {
@ -814,6 +818,7 @@ export const asyncRouter = [
}
},
{
// 实训录制
path: 'record',
redirect: 'record/training/0/null',
component: Trainingrecord,

View File

@ -58,6 +58,7 @@ import { getDetailList } from '@/api/management/dictionary';
import { mapGetters } from 'vuex';
import { launchFullscreen } from '@/utils/screen';
import { UrlConfig } from '@/router/index';
import LangStorage from '@/utils/lang';
export default {
name: 'ExamDetailView',
@ -84,10 +85,7 @@ export default {
computed: {
...mapGetters('trainingList', [
'trainingList'
]),
height() {
return this.$store.state.app.height - 50;
}
])
},
watch: {
'$route.params.examId': function (val) {
@ -125,6 +123,36 @@ export default {
this.typeList = [];
await getDetailList('training_type').then(res => {
this.typeList = res.data;
if (LangStorage.getLang() == 'en') {
this.typeList.forEach(item => {
switch (item.code) {
case '01':
item.name = 'Control permission operation';
break;
case '02':
item.name = 'Signalling machine operation';
break;
case '03':
item.name = 'Turnout operation';
break;
case '04':
item.name = 'Section operation';
break;
case '05':
item.name = 'Platform operation';
break;
case '06':
item.name = 'Train scheduling operation';
break;
case '07':
item.name = 'Train operation';
break;
case '08':
item.name = 'Temporary speed limit operation of the whole line';
break;
}
});
}
});
},
async loadInitPage(examId) {

View File

@ -6,23 +6,10 @@
</div>
</el-card>
<el-card v-loading="loading">
<el-table
:data="tableData"
border
style="width: 100%"
>
<el-table-column
prop="name"
:label="this.$t('exam.courseName')"
/>
<el-table-column
prop="remarks"
show-overflow-tooltip
:label="this.$t('exam.courseDescription')"
/>
<el-table-column
:label="this.$t('global.operate')"
>
<el-table :data="tableData" border style="width: 100%">
<el-table-column prop="name" :label="this.$t('exam.courseName')" />
<el-table-column prop="remarks" show-overflow-tooltip :label="this.$t('exam.courseDescription')" />
<el-table-column :label="this.$t('global.operate')">
<template slot-scope="scope">
<el-button size="mini" type="primary" @click="goLesson(scope.row)">
{{ $t('exam.enterTheExam') }}

View File

@ -1,10 +1,8 @@
<template>
<div v-loading="loading">
<el-card class="paper" :style="{height: height - 10 + 'px'}">
<div slot="header" style="text-align: center;">
<div v-loading="loading" class="joylink-card paper">
<div class="card-title">
<span style="font-weight:bold ">{{ $t('exam.examResultsDetails') }}</span>
</div>
<el-scrollbar wrap-class="scrollbar-wrapper" :style="{height: height - 150 + 'px'}">
<div class="context">
<el-form ref="form" :model="resultModel" size="mini">
<el-form-item :label="this.$t('exam.testQuestionsName')+':'" prop="name">
@ -22,22 +20,14 @@
<span>{{ Math.ceil(resultModel.usedTime/60) + ' '+ $t('global.minutes') }}</span>
</el-form-item>
</el-form>
<el-table
:data="resultModel.userExamQuestionsVOs"
border
style="width: 100%"
:summary-method="getSummaries"
show-summary
>
<el-table :data="resultModel.userExamQuestionsVOs" border style="width: 100%; min-height: 200px;" :summary-method="getSummaries" show-summary>
<el-table-column prop="trainingName" :label="this.$t('exam.trainingName')" />
<el-table-column prop="score" :label="this.$t('exam.trainingScore')" />
</el-table>
</div>
</el-scrollbar>
<div style="position: relative; float: right; right: 60px; bottom: -30px;">
<div class="draf_box">
<el-button type="primary " @click="back">{{ $t('exam.returnToExamList') }}</el-button>
</div>
</el-card>
</div>
</template>
<script>
@ -124,19 +114,25 @@ export default {
};
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
/deep/ {
.scrollbar-wrapper {
margin-bottom: 0 !important;
}
}
.paper {
width: 900px;
margin: 0 auto;
border: 1px solid #F8F8F8;
height: 100%;
overflow: hidden;
.card-title{
height: 47px;
line-height: 47px;
border-bottom: 1px solid #e6e6e6;
text-align: center;
}
.context {
margin: 30px 60px;
padding: 30px 60px;
height: calc(100% - 107px);
overflow: auto;
}
}
.draf_box{
padding: 10px 0;
text-align: center;
}
</style>

View File

@ -22,7 +22,6 @@
</template>
<script>
// import { getPublishMapListBySkinCode } from '@/api/jmap/map';
import { adminPublishLesson, releaseOrCancel } from '@/api/designPlatform';
export default {

View File

@ -6,6 +6,7 @@
<el-step title="" icon="el-icon-upload" />
</el-steps>
<el-card class="forms">
<div style="height:100%;overflow-y:auto">
<el-tree
ref="lessonTree"
:data="treeData"
@ -28,6 +29,7 @@
</el-tooltip>
</span>
</el-tree>
</div>
</el-card>
<div class="draft">
<el-button type="primary" @click="goBack">{{ $t('global.back') }}</el-button>
@ -50,11 +52,6 @@ export default {
}
};
},
computed: {
height() {
return this.$store.state.app.height - 180;
}
},
methods: {
convertTreeData(list, data) {
let tree = [];
@ -143,6 +140,7 @@ export default {
.steps {
width: 980px;
margin: 0 auto;
height: 100%;
/deep/ {
.el-step__icon.is-icon {
@ -151,10 +149,15 @@ export default {
}
}
/deep/ .el-card__body{
height:100%;
}
.forms {
width: 800px;
margin: 0 auto;
margin-top: 10px;
height: calc(100% - 150px);
}
.draft {
width: 300px;

View File

@ -68,23 +68,19 @@ export default {
// planId: '',
// planName: '',
type: 'add',
// defaultShowKeys: [],
runPlanList: [],
runPlanDict: {},
isCreate:false,
PlanConvert: {}
// defaultProps: {
// label: 'name'
// }
};
},
computed: {
height() {
return this.$store.state.app.height - 60 - 30;
},
skinCode() {
return this.$route.query.skinCode || '02';
},
// skinCode() {
// return this.$route.query.skinCode || '02';
// },
hasRelease() {
return this.$store.state.user.roles.includes('04') ||
this.$store.state.user.roles.includes('05');
@ -96,6 +92,7 @@ export default {
}
},
created() {
debugger;
this.PlanConvert = this.$theme.loadPlanConvert(this.$route.query.skinCode);
},
mounted() {

View File

@ -6,14 +6,14 @@
<script>
import { getProductList, putMapProductOnLine, putMapProductOffLine } from '@/api/management/mapprd';
import { getSkinCodeList } from '@/api/management/mapskin';
import { listPublishMap } from '@/api/jmap/map';
export default {
name: 'PublishExam',
data() {
return {
prdTypeList: [],
skinCodeList: [],
mapIdList: [],
pagerConfig: {
pageSize: 'pageSize',
pageIndex: 'pageNum'
@ -42,10 +42,10 @@ export default {
prop: 'name'
},
{
title: this.$t('publish.skinType'),
prop: 'skinCode',
title: this.$t('publish.mapName'),
prop: 'mapId',
type: 'tag',
columnValue: (row) => { return this.$convertField(row.skinCode, this.skinCodeList, ['code', 'name']); },
columnValue: (row) => { return this.$convertField(row.mapId, this.mapIdList, ['id', 'name']); },
tagType: (row) => { return ''; }
},
{
@ -94,9 +94,9 @@ export default {
this.prdTypeList = list;
});
this.skinCodeList = [];
getSkinCodeList().then(response => {
this.skinCodeList = response.data;
this.mapIdList = [];
listPublishMap().then(response => {
this.mapIdList = response.data;
});
},
handlePutaway(index, row) {

View File

@ -7,7 +7,6 @@
<script>
import { publishLessonList, delPublishLesson, putLessonOnLine, putLessonOffLine, updatePublishLesson } from '@/api/jmap/lesson';
import { getSkinCodeList } from '@/api/management/mapskin';
import localStore from 'storejs';
import UpdateOperate from './draft.vue';
@ -19,7 +18,6 @@ export default {
data() {
return {
cityList: [],
skinCodeList: [],
pagerConfig: {
pageSize: 'pageSize',
pageIndex: 'pageNum'
@ -118,11 +116,6 @@ export default {
}).catch(() => {
this.$messageBox(this.$t('error.loadingCityListFailed'));
});
this.skinCodeList = [];
getSkinCodeList().then(response => {
this.skinCodeList = response.data;
});
},
//
handleEdit(index, row) {

View File

@ -122,7 +122,7 @@ export default {
handleClick: this.handleSetProject
},
{
name: '复制',
name: this.$t('publish.copy'),
handleClick: this.handleCopy
}
]

View File

@ -17,7 +17,6 @@ export default {
data() {
return {
cityList: [],
skinCodeList: [],
pagerConfig: {
pageSize: 'pageSize',
pageIndex: 'pageNum'

View File

@ -10,7 +10,7 @@
<script>
import { runPlanTemplateList } from '@/api/runplan';
import { getSkinCodeList } from '@/api/management/mapskin';
import { listPublishMap } from '@/api/jmap/map';
export default {
name: 'ChooseTemplatePlan',
@ -18,7 +18,7 @@ export default {
return {
dialogShow: false,
loading: false,
skinCodeList: [],
mapIdList: [],
model: {},
pagerConfig: {
pageSize: 'pageSize',
@ -44,11 +44,11 @@ export default {
prop: 'name'
},
{
title: this.$t('publish.skinType'),
prop: 'skinCode',
title: this.$t('publish.mapName'),
prop: 'mapId',
type: 'tag',
columnValue: (row) => {
return this.$convertField(row.skinCode, this.skinCodeList, ['code', 'name']);
return this.$convertField(row.mapId, this.mapIdList, ['id', 'name']);
},
tagType: (row) => { return 'success'; }
}
@ -65,9 +65,10 @@ export default {
},
methods: {
loadInitData() {
this.skinCodeList = [];
getSkinCodeList().then(response => {
this.skinCodeList = response.data;
this.mapIdList = [];
listPublishMap().then(response => {
this.mapIdList = response.data;
});
},
doShow(model) {
@ -80,7 +81,7 @@ export default {
this.dialogShow = false;
},
queryFunction(params) {
params['skinCode'] = this.model.skinCode || '';
params['mapId'] = this.model.mapId || '';
return runPlanTemplateList(params);
},
handleConfirm() {

View File

@ -1,6 +1,5 @@
<template>
<div class="app-wrapper">
<el-scrollbar wrap-class="scrollbar-wrapper">
<div v-show="listShow" class="examList" :style="{width: widthLeft+'px'}">
<demon-list ref="demonList" :height="height" />
</div>
@ -8,7 +7,6 @@
<transition>
<router-view />
</transition>
</el-scrollbar>
</div>
</template>

View File

@ -1,6 +1,6 @@
<template>
<el-dialog :title="title" :visible.sync="dialogVisible" width="500px" :before-close="doClose" center>
<data-form ref="dataform" :form="form" :formModel="formModel" :rules="rules"></data-form>
<data-form ref="dataform" :form="form" :form-model="formModel" :rules="rules" />
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="doCreate">{{ $t('global.confirm') }}</el-button>
<el-button @click="doClose">{{ $t('global.cancel') }}</el-button>
@ -9,12 +9,20 @@
</template>
<script>
import { listPublishMap } from '@/api/jmap/map'
import { listPublishMap } from '@/api/jmap/map';
import { getQuestById} from '@/api/quest';
export default {
name: 'ScriptDraft',
props: {
title: {
type: String,
default() {
return '';
}
}
},
data() {
return {
dialogVisible: false,
@ -25,39 +33,36 @@
mapId: '',
description:''
}
}
},
props: {
title: String,
};
},
computed: {
form() {
let form = {
const form = {
labelWidth: '150px',
items: [
{ prop: 'name', label: this.$t('scriptRecord.scriptName'), type: 'text', required: true},
{ prop: 'mapId', label: this.$t('scriptRecord.map'), type: 'select', required: true, options: this.mapList, disabled:true},
{ prop: 'description', label: this.$t('scriptRecord.scriptDescription'), type: 'textarea', required: true},
{ prop: 'description', label: this.$t('scriptRecord.scriptDescription'), type: 'textarea', required: true}
]
}
return form
};
return form;
},
rules() {
let crules = {
const crules = {
name: [
{ required: true, message: this.$t('scriptRecord.inputScriptName'), trigger: 'blur' },
{ required: true, message: this.$t('scriptRecord.inputScriptName'), trigger: 'change' },
{ required: true, message: this.$t('scriptRecord.inputScriptName'), trigger: 'change' }
],
mapId: [
{ required: true, message: this.$t('scriptRecord.selectMap'), trigger: 'change' },
{ required: true, message: this.$t('scriptRecord.selectMap'), trigger: 'change' }
],
description:[
{ required: true, message: this.$t('scriptRecord.inputScriptDescription'), trigger: 'blur' },
{ required: true, message: this.$t('scriptRecord.inputScriptDescription'), trigger: 'change' },
{ required: true, message: this.$t('scriptRecord.inputScriptDescription'), trigger: 'change' }
]
};
return crules;
}
return crules
},
},
mounted() {
this.loadInitData();
@ -66,39 +71,36 @@
loadInitData() {
this.mapList = [];
listPublishMap().then(response => {
this.mapList = response.data.map(elem => { return { value: elem.id, label: elem.name } });
})
this.mapList = response.data.map(elem => { return { value: elem.id, label: elem.name }; });
});
},
doShow(questid) {
if(questid)
{
if (questid) {
getQuestById(questid).then(resp=>{
let data={'name':resp.data.name,'description':resp.data.description,'mapId':resp.data.mapId};
const data = {'name':resp.data.name, 'description':resp.data.description, 'mapId':resp.data.mapId};
this.formModel = data;
this.formModel.id = questid;
this.dialogVisible = true
this.dialogVisible = true;
});
}
else
{
} else {
this.formModel.mapId = this.$route.params.mapId;
this.dialogVisible = true
this.dialogVisible = true;
}
},
doCreate() {
let self = this
const self = this;
this.$refs.dataform.validateForm(() => {
self.$emit('create', Object.assign({}, this.formModel));
self.doClose()
})
self.doClose();
});
},
doClose() {
this.$refs.dataform.resetForm();
this.dialogVisible = false
}
this.dialogVisible = false;
}
}
};
</script>
<style lang="scss" scoped>
/deep/ .el-dialog--center .el-dialog__body{

View File

@ -32,8 +32,6 @@ export default {
group: this.$route.query.group
};
},
computed: {
},
watch: {
'$store.state.app.windowSizeCount': function() {
this.size = { width: this.$store.state.app.width - 780, height: this.$store.state.app.height};

View File

@ -1,6 +1,6 @@
<template>
<div class="reminder-drag">
<div ref="drapBox" class="reminder-box" :style="{height:'100%', width: width + 'px'}">
<div ref="drapBox" class="reminder-box" :style="{width: width + 'px'}">
<el-container class="actionPane">
<el-header style="height: 50px;">
<el-row class="actionList">

View File

@ -1,21 +1,20 @@
<template>
<el-card :style="{height: height+'px'}">
<div class="joylink-card">
<div class="scriptHeader">
<div class="scriptList">{{ $t('scriptRecord.scriptList') }}</div>
<el-button size="small" type="primary" class="createScript" @click="handleCreate">{{ $t('scriptRecord.scriptCreate') }}</el-button>
</div>
<QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" style="width: 91%;margin-left:4%;margin-top:20px;display: inline-block;" />
<QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" style="width: 91%;margin-left:4%;margin-top:20px;" />
<script-publish ref="publishScript" :title="$t('scriptRecord.publishScript')" @reloadTable="reloadTable" @create="handleConfirmPublish" />
<create-script ref="createScript" :title="$t('scriptRecord.createScript')" @reloadTable="reloadTable" @create="handleConfirmCreate" />
<create-script ref="modifyScript" :title="$t('scriptRecord.modifyScript')" @reloadTable="reloadTable" @create="handleConfirmModify" />
</el-card>
</div>
</template>
<script>
import Cookies from 'js-cookie';
import ConstConfig from '@/scripts/ConstConfig';
import { UrlConfig } from '@/router/index';
import { mapGetters } from 'vuex';
import { admin, superAdmin} from '@/router';
import { getQuestPageList, createQuest, deleteQuest, updateQuest, publishQuest, retractQuest} from '@/api/quest';
import { launchFullscreen } from '@/utils/screen';
@ -111,11 +110,6 @@ export default {
}
};
},
computed: {
height() {
return this.$store.state.app.height - 50 - 30;
}
},
watch: {
'$route' () {
this.reloadTable();
@ -275,8 +269,13 @@ export default {
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
@import "src/styles/mixin.scss";
.joylink-card{
height: 100%;
overflow: auto;
}
.createScript{
display:inline-block;float:right;margin-right:20px;
float: right;
margin-right:20px;
}
.scriptHeader{
display:inline-block;margin-top:40px;width: 90%;margin-left:5%;

View File

@ -13,8 +13,12 @@
export default {
name: 'ScriptOperate',
props: {
title: String,
type:String
title: {
type: String,
default() {
return '';
}
}
},
data() {
return {

View File

@ -176,7 +176,6 @@ export default {
if (Cookies.get('user_lang') == 'en') {
lastData = lastData.replace(new RegExp(rolename, 'g'), element.enLabel);
} else {
lastData = lastData.replace(new RegExp(rolename, 'g'), element.label);
}
});
@ -185,7 +184,9 @@ export default {
this.getDeviceCode();
this.resetDisabled();
this.initCommandActionData();
}).catch(error => {});
}).catch(error => {
this.$message(error.message);
});
},
changeRole(index) {
const role = this.orginMemberList.find(elem=>{ return elem.id == index; }).role;
@ -231,7 +232,6 @@ export default {
this.commandData.action.type = 'Command';
if (this.commandData.action.deviceCommand == 'Train_Manual_Route_Blocking_Drive') { this.commandData.action.commandParamList = [this.commandData.param.startStation, this.commandData.param.endStation]; }
const data = this.commandData.action;
const obj = this;
this.adding = true;
addScriptAction(group, data).then(response=>{
this.adding = false;
@ -256,7 +256,6 @@ export default {
const group = this.group;
this.modalData.actionVO.type = 'Conversation';
const data = this.modalData.actionVO;
const obj = this;
this.modifying = true;
if (this.operateType == 'add') {
addScriptAction(group, data).then(response=>{

View File

@ -35,12 +35,9 @@
id="dope"
v-model="text"
style="width: 99%;height: 47px; border: none;outline: none;"
name=""
rows=""
cols=""
@keyup="changeText"
/>
<button class="sendBtn" @click="sendText()" :disabled="disabled">{{$t('trainRoom.sendText')}}</button>
<button class="sendBtn" :disabled="disabled" @click="sendText()">{{ $t('trainRoom.sendText') }}</button>
<div
class="sendBtn yuyin_start zIndex1"
:style="{background: background}"
@ -77,7 +74,7 @@ export default {
sending: false,
background: '',
userId: '',
disabled:true,
disabled:true
};
},
watch: {

View File

@ -34,7 +34,6 @@
</el-tree>
</div>
</div>
</div>
</template>
<script>