Merge remote-tracking branch 'origin/test'
This commit is contained in:
commit
a0df70f674
@ -44,6 +44,7 @@
|
|||||||
"vue-router": "^3.1.6",
|
"vue-router": "^3.1.6",
|
||||||
"vuedraggable": "^2.24.3",
|
"vuedraggable": "^2.24.3",
|
||||||
"vuex": "^3.1.0",
|
"vuex": "^3.1.0",
|
||||||
|
"wangeditor": "^4.6.17",
|
||||||
"xlsx": "^0.14.2",
|
"xlsx": "^0.14.2",
|
||||||
"zrender": "^4.0.4"
|
"zrender": "^4.0.4"
|
||||||
},
|
},
|
||||||
|
68
src/api/editor.js
Normal file
68
src/api/editor.js
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
// 获取文章列表
|
||||||
|
export function getDoc() {
|
||||||
|
return request({
|
||||||
|
url: `/api/doc`,
|
||||||
|
method: 'get'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// 获取发布内容
|
||||||
|
export function getDocById(id) {
|
||||||
|
return request({
|
||||||
|
url: `/api/doc/${id}`,
|
||||||
|
method: 'get'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// 获取草稿列表
|
||||||
|
export function getDocDraft() {
|
||||||
|
return request({
|
||||||
|
url: `/api/doc/draft`,
|
||||||
|
method: 'get'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// 创建
|
||||||
|
export function postDocDraft(data) {
|
||||||
|
return request({
|
||||||
|
url: `/api/doc/draft`,
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// 获取草稿数据id
|
||||||
|
export function getDocDraftById(id) {
|
||||||
|
return request({
|
||||||
|
url: `/api/doc/draft/${id}`,
|
||||||
|
method: 'get'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// 更新草稿数据
|
||||||
|
export function putDocDraftById(id, data) {
|
||||||
|
return request({
|
||||||
|
url: `/api/doc/draft/${id}`,
|
||||||
|
method: 'put',
|
||||||
|
data
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// 删除草稿数据
|
||||||
|
export function deleteDocDraftById(id) {
|
||||||
|
return request({
|
||||||
|
url: `/api/doc/draft/${id}`,
|
||||||
|
method: 'delete'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// 保存内容根据id
|
||||||
|
export function putDocDraftByIdData(id, data) {
|
||||||
|
return request({
|
||||||
|
url: `/api/doc/draft/${id}/data`,
|
||||||
|
method: 'put',
|
||||||
|
data
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// 草稿发布
|
||||||
|
export function putDocDraftByIdPublish(id) {
|
||||||
|
return request({
|
||||||
|
url: `/api/doc/draft/${id}/publish`,
|
||||||
|
method: 'put'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
60
src/api/pdf.js
Normal file
60
src/api/pdf.js
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
|
||||||
|
/** 创建 */
|
||||||
|
export function postUploadFile(data) {
|
||||||
|
return request({
|
||||||
|
url: `/api/file/basic`,
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// /** 复制一条文件基础信息 */
|
||||||
|
// export function copyUploadFile(id) {
|
||||||
|
// return request({
|
||||||
|
// url: `/api/file/basic/copy/${id}`,
|
||||||
|
// method: 'post'
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
|
||||||
|
// 查询
|
||||||
|
export function getUploadFile(params) {
|
||||||
|
return request({
|
||||||
|
url: `/api/file`,
|
||||||
|
method: 'get',
|
||||||
|
params: params
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// 修改
|
||||||
|
export function putUploadFile(data) {
|
||||||
|
return request({
|
||||||
|
url: `/api/file/basic`,
|
||||||
|
method: 'put',
|
||||||
|
data
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// 删除
|
||||||
|
export function deleteUploadFile(id) {
|
||||||
|
return request({
|
||||||
|
url: `/api/file/${id}`,
|
||||||
|
method: 'delete'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询文件绑定信息
|
||||||
|
export function getFileBindInfo(fileId, mapId) {
|
||||||
|
return request({
|
||||||
|
url: `/api/file/binding/${fileId}/${mapId}`,
|
||||||
|
method: 'get'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 创建 */
|
||||||
|
export function bindUploadFile(data) {
|
||||||
|
return request({
|
||||||
|
url: `/api/file/binding`,
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
25
src/api/upload.js
Normal file
25
src/api/upload.js
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
|
||||||
|
export const productIdentify = '00001&appSecret=joylink00001';
|
||||||
|
|
||||||
|
export const pictureUrl = `/api/upload/PICTURE?appId=${productIdentify}`;
|
||||||
|
// export const modelUrl = `/api/file?appId=${productIdentify}`;
|
||||||
|
|
||||||
|
// export const attachmentUrl = `/api/upload/attachment?appId=${productIdentify}`;
|
||||||
|
export const meansUrl = `/api/upload/MEANS?appId=${productIdentify}`;
|
||||||
|
// export const regulationUrl = `/api/upload/regulation?appId=${productIdentify}`;
|
||||||
|
|
||||||
|
export function getUrl(relatedUrl) {
|
||||||
|
return `${process.env.VUE_APP_UPLOAD_API}${relatedUrl}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function uploadFile(url, data) {
|
||||||
|
return request({
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'multipart/form-data'
|
||||||
|
},
|
||||||
|
url,
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
});
|
||||||
|
}
|
BIN
src/assets/icon/favicon_zzww.png
Normal file
BIN
src/assets/icon/favicon_zzww.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 14 KiB |
@ -353,13 +353,45 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<template v-else-if="checkFieldType(item, 'uploadPicture')">
|
||||||
|
<el-form-item v-show="item.show" :key="item.prop" :prop="item.prop" :label="item.label" :required="item.required">
|
||||||
|
<el-upload
|
||||||
|
class="upload-demo"
|
||||||
|
:action="item.action"
|
||||||
|
:on-success="item.onSuccess"
|
||||||
|
:http-request="item.uploadFile"
|
||||||
|
:on-change="item.onChange"
|
||||||
|
:limit="1"
|
||||||
|
:file-list="item.fileList"
|
||||||
|
>
|
||||||
|
<el-button size="small" type="primary">点击上传</el-button>
|
||||||
|
<!-- <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> -->
|
||||||
|
</el-upload>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- <el-form-item prop="imageUrl" /> -->
|
||||||
|
<!-- <picture-card
|
||||||
|
ref="upload"
|
||||||
|
v-model="fileList"
|
||||||
|
:action="action"
|
||||||
|
scope="file"
|
||||||
|
@disabled="onDisabled"
|
||||||
|
>
|
||||||
|
<div slot class="tips">请上传文件</div>
|
||||||
|
</picture-card> -->
|
||||||
|
</template>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
</el-form>
|
</el-form>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
// import PictureCard from '@/components/UploadFiles/picture-card';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'DataForm',
|
name: 'DataForm',
|
||||||
|
components: {
|
||||||
|
// PictureCard
|
||||||
|
},
|
||||||
props: {
|
props: {
|
||||||
form: {
|
form: {
|
||||||
type: Object,
|
type: Object,
|
||||||
|
136
src/components/UploadFiles/picture-card.vue
Normal file
136
src/components/UploadFiles/picture-card.vue
Normal file
@ -0,0 +1,136 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-upload
|
||||||
|
ref="upload"
|
||||||
|
list-type="picture-card"
|
||||||
|
:action="action"
|
||||||
|
:file-list="fileList"
|
||||||
|
:multiple="multiple"
|
||||||
|
:auto-upload="auto"
|
||||||
|
:limit="limit"
|
||||||
|
:http-request="uploadFile"
|
||||||
|
:on-change="onChange"
|
||||||
|
:on-remove="onRemove"
|
||||||
|
:on-exceed="onExceed"
|
||||||
|
:on-preview="pictureCardPreview"
|
||||||
|
>
|
||||||
|
<i class="el-icon-plus" />
|
||||||
|
<slot name="trigger" />
|
||||||
|
</el-upload>
|
||||||
|
<slot />
|
||||||
|
<el-dialog :visible.sync="dialogVisible" :modal="false">
|
||||||
|
<img width="100%" :src="dialogImageUrl" alt="">
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
auto: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
multiple: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
action: {
|
||||||
|
type: String,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
value: {
|
||||||
|
type: Array,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
limit: {
|
||||||
|
type: Number,
|
||||||
|
default: 1
|
||||||
|
},
|
||||||
|
scope: {
|
||||||
|
type: String,
|
||||||
|
default: 'files'
|
||||||
|
},
|
||||||
|
extra: {
|
||||||
|
type: Object,
|
||||||
|
default() {
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
fileList: [],
|
||||||
|
formData: '',
|
||||||
|
dialogVisible: false,
|
||||||
|
dialogImageUrl: ''
|
||||||
|
};
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
value(val) {
|
||||||
|
this.fileList = val;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onChange(file, fileList) {
|
||||||
|
this.fileList = fileList;
|
||||||
|
this.$emit('value', [...this.fileList]);
|
||||||
|
this.$emit('disabled', fileList.every(el => el.status == 'success'));
|
||||||
|
},
|
||||||
|
onRemove(file, fileList) {
|
||||||
|
this.fileList = fileList;
|
||||||
|
this.$emit('value', [...this.fileList]);
|
||||||
|
this.$emit('disabled', fileList.every(el => el.status == 'success'));
|
||||||
|
},
|
||||||
|
clearFiles() {
|
||||||
|
this.$refs.upload.clearFiles();
|
||||||
|
this.fileList = [];
|
||||||
|
this.$emit('value', [...this.fileList]);
|
||||||
|
this.$emit('disabled', true);
|
||||||
|
},
|
||||||
|
onExceed(files, fileLis) {
|
||||||
|
this.$message.info(`超出文件上传限制,限制${this.limit}个。`);
|
||||||
|
},
|
||||||
|
pictureCardPreview(file) {
|
||||||
|
this.dialogImageUrl = file.url;
|
||||||
|
this.dialogVisible = true;
|
||||||
|
},
|
||||||
|
uploadFile(file) {
|
||||||
|
this.formData.append(this.scope, file.file);
|
||||||
|
},
|
||||||
|
submit(upload) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
if (this.fileList.length) {
|
||||||
|
var isUpload = this.fileList.every(file => file.status == 'ready');
|
||||||
|
var isLt100M = this.fileList.every(file => file.size / 1024 / 1024 < 100);
|
||||||
|
|
||||||
|
if (!isUpload) {
|
||||||
|
reject({message: '没有需要上传的文件'});
|
||||||
|
} else if (!isLt100M) {
|
||||||
|
reject({message: '请检查,上传文件大小不能超过100MB!'});
|
||||||
|
} else {
|
||||||
|
this.formData = new FormData();
|
||||||
|
this.$refs.upload.submit();
|
||||||
|
Object.keys(this.extra).forEach(key => { this.formData.append(key, this.extra[key]); });
|
||||||
|
|
||||||
|
upload(this.action, this.formData)
|
||||||
|
.then(resp => { resolve(resp); })
|
||||||
|
.catch(error => { reject(error); });
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
resolve();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
/deep/ {
|
||||||
|
.el-upload-list--picture-card .el-upload-list__item {
|
||||||
|
margin: 0 6px 0 0 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -91,5 +91,6 @@ export default {
|
|||||||
publishIBPManage:'publish IBP Manage',
|
publishIBPManage:'publish IBP Manage',
|
||||||
publishISCSManage:'publish ISCS Manage',
|
publishISCSManage:'publish ISCS Manage',
|
||||||
voiceTraining: 'Voice Training',
|
voiceTraining: 'Voice Training',
|
||||||
mapGroup: 'Map Group'
|
mapGroup: 'Map Group',
|
||||||
|
drawingMange:'Drawing Mange'
|
||||||
};
|
};
|
||||||
|
@ -4,6 +4,10 @@ export default {
|
|||||||
designhomePage: '公共地图',
|
designhomePage: '公共地图',
|
||||||
designUserPage: '个人地图',
|
designUserPage: '个人地图',
|
||||||
newDesignUserPage: '地图绘制',
|
newDesignUserPage: '地图绘制',
|
||||||
|
newDesignEditor: '编辑器',
|
||||||
|
newDesignEditorList: '图文列表',
|
||||||
|
newDesignDraftEditorList: '文章草稿',
|
||||||
|
uploadPdf: 'PDF上传',
|
||||||
|
|
||||||
mapManage: '地图管理',
|
mapManage: '地图管理',
|
||||||
skinManage: '皮肤管理',
|
skinManage: '皮肤管理',
|
||||||
@ -96,5 +100,6 @@ export default {
|
|||||||
publishIBPManage:'发布IBP盘管理',
|
publishIBPManage:'发布IBP盘管理',
|
||||||
publishISCSManage:'发布ISCS管理',
|
publishISCSManage:'发布ISCS管理',
|
||||||
voiceTraining: '语音训练',
|
voiceTraining: '语音训练',
|
||||||
mapGroup: '地图分组'
|
mapGroup: '地图分组',
|
||||||
|
drawingMange:'图纸管理'
|
||||||
};
|
};
|
||||||
|
@ -30,8 +30,8 @@ export function Lesson3dPlayer(dom,lessonData,lessonIndex) {
|
|||||||
let scope = this;
|
let scope = this;
|
||||||
this.dom = dom;
|
this.dom = dom;
|
||||||
|
|
||||||
//定义相机
|
//定义当前课程角色
|
||||||
|
let nowRole = "";
|
||||||
|
|
||||||
//定义场景(渲染容器)
|
//定义场景(渲染容器)
|
||||||
scene = new THREE.Scene();
|
scene = new THREE.Scene();
|
||||||
@ -53,7 +53,6 @@ export function Lesson3dPlayer(dom,lessonData,lessonIndex) {
|
|||||||
animateManager.initAnimation(assetModelManager);
|
animateManager.initAnimation(assetModelManager);
|
||||||
controlManager.init(animateManager.actions);
|
controlManager.init(animateManager.actions);
|
||||||
|
|
||||||
console.log(lessonData.lessonProgress[lessonIndex]);
|
|
||||||
if(lessonData.lessonProgress[lessonIndex].action.length>0){
|
if(lessonData.lessonProgress[lessonIndex].action.length>0){
|
||||||
controlManager.changeIndexEvent(lessonData.lessonProgress[lessonIndex].action,assetModelManager.lessonTriggerList);
|
controlManager.changeIndexEvent(lessonData.lessonProgress[lessonIndex].action,assetModelManager.lessonTriggerList);
|
||||||
}
|
}
|
||||||
@ -75,12 +74,27 @@ export function Lesson3dPlayer(dom,lessonData,lessonIndex) {
|
|||||||
this.changeIndex = function(nowIndex){
|
this.changeIndex = function(nowIndex){
|
||||||
lessonIndex = nowIndex;
|
lessonIndex = nowIndex;
|
||||||
controlManager.changeIndexEvent(lessonData.lessonProgress[lessonIndex].action);
|
controlManager.changeIndexEvent(lessonData.lessonProgress[lessonIndex].action);
|
||||||
|
|
||||||
|
if(lessonData.lessonProgress[lessonIndex].roleName == nowRole){
|
||||||
|
controlManager.initRoleMode(true);
|
||||||
|
}else{
|
||||||
|
controlManager.initRoleMode(false);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.changeCameraPos = function(pos){
|
this.changeCameraPos = function(pos){
|
||||||
controlManager.updatePos(pos);
|
controlManager.updatePos(pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.initNowRole = function(role){
|
||||||
|
nowRole = role;
|
||||||
|
if(lessonData.lessonProgress[lessonIndex].roleName == nowRole){
|
||||||
|
controlManager.initRoleMode(true);
|
||||||
|
}else{
|
||||||
|
controlManager.initRoleMode(false);
|
||||||
|
}
|
||||||
|
};
|
||||||
//循环渲染函数
|
//循环渲染函数
|
||||||
function animate() {
|
function animate() {
|
||||||
|
|
||||||
|
@ -13,12 +13,10 @@ export function AnimateManager() {
|
|||||||
|
|
||||||
for(let k in assetModelManager.staticAsset){
|
for(let k in assetModelManager.staticAsset){
|
||||||
if(assetModelManager.staticAsset[k].mesh.animations.length > 0){
|
if(assetModelManager.staticAsset[k].mesh.animations.length > 0){
|
||||||
console.log(assetModelManager.staticAsset[k].mesh.name);
|
|
||||||
let animations = assetModelManager.staticAsset[k].mesh.animations;
|
let animations = assetModelManager.staticAsset[k].mesh.animations;
|
||||||
let mixer = new THREE.AnimationMixer( assetModelManager.staticAsset[k].mesh );
|
let mixer = new THREE.AnimationMixer( assetModelManager.staticAsset[k].mesh );
|
||||||
let actionName = assetModelManager.staticAsset[k].mesh.name;
|
let actionName = assetModelManager.staticAsset[k].mesh.name;
|
||||||
|
|
||||||
console.log(actionName);
|
|
||||||
scope.actions[actionName] = {
|
scope.actions[actionName] = {
|
||||||
status:"01",
|
status:"01",
|
||||||
action:mixer.clipAction( assetModelManager.staticAsset[k].mesh.animations[ 0 ])
|
action:mixer.clipAction( assetModelManager.staticAsset[k].mesh.animations[ 0 ])
|
||||||
@ -38,7 +36,6 @@ export function AnimateManager() {
|
|||||||
|
|
||||||
for(let i=mixers.length-1;i>=0;i--){
|
for(let i=mixers.length-1;i>=0;i--){
|
||||||
if(mixers[i]._actions[0].isRunning()){
|
if(mixers[i]._actions[0].isRunning()){
|
||||||
// console.log(scope.mixers[i]._actions[0].isRunning());
|
|
||||||
mixers[i].update( mixerUpdateDelta );
|
mixers[i].update( mixerUpdateDelta );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -198,7 +198,6 @@ export function AssetModelManager(scene) {
|
|||||||
function fbxpromise(asset){
|
function fbxpromise(asset){
|
||||||
return new Promise(function(resolve, reject){
|
return new Promise(function(resolve, reject){
|
||||||
var loader = new THREE.FBXLoader();
|
var loader = new THREE.FBXLoader();
|
||||||
console.log(asset);
|
|
||||||
if(asset.assetType == "static"){
|
if(asset.assetType == "static"){
|
||||||
loader.load( asset.url, function ( object ) {
|
loader.load( asset.url, function ( object ) {
|
||||||
object.name = asset.modelId;
|
object.name = asset.modelId;
|
||||||
@ -210,7 +209,6 @@ export function AssetModelManager(scene) {
|
|||||||
loader.load( BASE_ASSET_API+asset.url, function ( object ) {
|
loader.load( BASE_ASSET_API+asset.url, function ( object ) {
|
||||||
asset.mesh = object;
|
asset.mesh = object;
|
||||||
if(asset.assetType == "default"){
|
if(asset.assetType == "default"){
|
||||||
console.log(object);
|
|
||||||
// scene.add(object);
|
// scene.add(object);
|
||||||
}else if(asset.assetType == 'loadModel'){
|
}else if(asset.assetType == 'loadModel'){
|
||||||
|
|
||||||
|
@ -14,6 +14,7 @@ export function ControlManager(dom,scene,lessonData,lessonIndex) {
|
|||||||
this.nowCamera = null;
|
this.nowCamera = null;
|
||||||
this.eventHitMode = false;
|
this.eventHitMode = false;
|
||||||
|
|
||||||
|
let roleMode = false;
|
||||||
let eventBoxs = [];
|
let eventBoxs = [];
|
||||||
let raycasterBoxs = [];
|
let raycasterBoxs = [];
|
||||||
let actionList = [];
|
let actionList = [];
|
||||||
@ -110,6 +111,9 @@ export function ControlManager(dom,scene,lessonData,lessonIndex) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
this.initRoleMode = function(rMode){
|
||||||
|
roleMode = rMode;
|
||||||
|
};
|
||||||
|
|
||||||
const worldOctree = new Octree();
|
const worldOctree = new Octree();
|
||||||
|
|
||||||
@ -138,6 +142,7 @@ export function ControlManager(dom,scene,lessonData,lessonIndex) {
|
|||||||
const keyStates = {};
|
const keyStates = {};
|
||||||
let clock = new THREE.Clock();
|
let clock = new THREE.Clock();
|
||||||
|
|
||||||
|
|
||||||
this.updateOrbitControl = function(){
|
this.updateOrbitControl = function(){
|
||||||
oribitControl.update();
|
oribitControl.update();
|
||||||
};
|
};
|
||||||
@ -151,7 +156,7 @@ export function ControlManager(dom,scene,lessonData,lessonIndex) {
|
|||||||
|
|
||||||
updateSpheres( deltaTime );
|
updateSpheres( deltaTime );
|
||||||
|
|
||||||
if(scope.eventHitMode == true){
|
if(scope.eventHitMode == true && roleMode){
|
||||||
if(eventBoxs.length>0){
|
if(eventBoxs.length>0){
|
||||||
attachBox.position.copy(fpsCamera.position);
|
attachBox.position.copy(fpsCamera.position);
|
||||||
for(let i=0;i<eventBoxs.length;i++){
|
for(let i=0;i<eventBoxs.length;i++){
|
||||||
@ -231,7 +236,7 @@ export function ControlManager(dom,scene,lessonData,lessonIndex) {
|
|||||||
fpsMouseStatus = true;
|
fpsMouseStatus = true;
|
||||||
// document.body.requestPointerLock();
|
// document.body.requestPointerLock();
|
||||||
|
|
||||||
if(raycasterBoxs.length>0){
|
if(raycasterBoxs.length>0 && roleMode){
|
||||||
var mouse = new THREE.Vector2();
|
var mouse = new THREE.Vector2();
|
||||||
|
|
||||||
var raycaster = new THREE.Raycaster();
|
var raycaster = new THREE.Raycaster();
|
||||||
@ -479,7 +484,6 @@ export function ControlManager(dom,scene,lessonData,lessonIndex) {
|
|||||||
if(actions[i].actionMode == "play"){
|
if(actions[i].actionMode == "play"){
|
||||||
for(let j=0;j<eventTrigger.length;j++){
|
for(let j=0;j<eventTrigger.length;j++){
|
||||||
if(eventTrigger[j].label == actions[i].actionModel){
|
if(eventTrigger[j].label == actions[i].actionModel){
|
||||||
console.log(actionList);
|
|
||||||
|
|
||||||
if(actionList[eventTrigger[j].actionName].status == "01"){
|
if(actionList[eventTrigger[j].actionName].status == "01"){
|
||||||
actionList[eventTrigger[j].actionName].status = "02";
|
actionList[eventTrigger[j].actionName].status = "02";
|
||||||
@ -494,8 +498,6 @@ export function ControlManager(dom,scene,lessonData,lessonIndex) {
|
|||||||
|
|
||||||
for(let j=0;j<eventTrigger.length;j++){
|
for(let j=0;j<eventTrigger.length;j++){
|
||||||
if(eventTrigger[j].label == actions[i].actionModel){
|
if(eventTrigger[j].label == actions[i].actionModel){
|
||||||
|
|
||||||
|
|
||||||
let eventTestBox = new THREE.Box3(new THREE.Vector3(), new THREE.Vector3());
|
let eventTestBox = new THREE.Box3(new THREE.Vector3(), new THREE.Vector3());
|
||||||
|
|
||||||
eventTestBox.setFromObject(eventTrigger[j]);
|
eventTestBox.setFromObject(eventTrigger[j]);
|
||||||
|
@ -9,6 +9,10 @@ export function LessonData() {
|
|||||||
this.lessonData = {
|
this.lessonData = {
|
||||||
//资源列表
|
//资源列表
|
||||||
assetList:[],
|
assetList:[],
|
||||||
|
setup:{
|
||||||
|
examMode:"",
|
||||||
|
checkedRole:"",
|
||||||
|
},
|
||||||
//场景交互物体列表
|
//场景交互物体列表
|
||||||
modelList:[],
|
modelList:[],
|
||||||
//课程组件启用状态
|
//课程组件启用状态
|
||||||
@ -61,6 +65,8 @@ export function LessonData() {
|
|||||||
tittle:"标题",
|
tittle:"标题",
|
||||||
picurl:"url",
|
picurl:"url",
|
||||||
text:"内容",
|
text:"内容",
|
||||||
|
explainPaneType:"null",
|
||||||
|
nextNode:"",
|
||||||
},
|
},
|
||||||
action:[],
|
action:[],
|
||||||
};
|
};
|
||||||
@ -141,6 +147,8 @@ export function LessonData() {
|
|||||||
tittle:"标题",
|
tittle:"标题",
|
||||||
picurl:"url",
|
picurl:"url",
|
||||||
text:"内容",
|
text:"内容",
|
||||||
|
explainPaneType:"null",
|
||||||
|
nextNode:"",
|
||||||
},
|
},
|
||||||
action:[
|
action:[
|
||||||
|
|
||||||
|
@ -224,8 +224,8 @@ class SkinCode extends defaultStyle {
|
|||||||
z:1,
|
z:1,
|
||||||
mergentR: 4, // 站台紧急关闭半径
|
mergentR: 4, // 站台紧急关闭半径
|
||||||
mergentN: 4, // 站台紧急关闭边数
|
mergentN: 4, // 站台紧急关闭边数
|
||||||
insideOffset: { x: 0, y: 25 }, // 内站台紧急关闭偏移量
|
insideOffset: { x: 0, y: 18 }, // 内站台紧急关闭偏移量
|
||||||
outsideOffset: { x: 0, y: -25 }, // 外站台紧急关闭偏移量
|
outsideOffset: { x: 0, y: -18 }, // 外站台紧急关闭偏移量
|
||||||
closeColor: '#F61107' // 站台紧急关闭颜色
|
closeColor: '#F61107' // 站台紧急关闭颜色
|
||||||
},
|
},
|
||||||
// 扣车元素 普通扣车
|
// 扣车元素 普通扣车
|
||||||
|
@ -500,7 +500,6 @@ class Jlmap {
|
|||||||
oDevice['cutOff'] = sectionA.cutOff;
|
oDevice['cutOff'] = sectionA.cutOff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.$painter.update(oDevice);
|
this.$painter.update(oDevice);
|
||||||
} else if (elem.deviceType == 'SECTION') {
|
} else if (elem.deviceType == 'SECTION') {
|
||||||
const oDevice = this.mapDevice[code];
|
const oDevice = this.mapDevice[code];
|
||||||
|
@ -6,6 +6,7 @@ import transitionDeviceStatus from './constant/stateTransition';
|
|||||||
import shapefactory from './shape/factory';
|
import shapefactory from './shape/factory';
|
||||||
import TransformHandle from './transformHandle';
|
import TransformHandle from './transformHandle';
|
||||||
import TransformHandleScreen from './transformHandleScreen';
|
import TransformHandleScreen from './transformHandleScreen';
|
||||||
|
import deviceRender from './constant/deviceRender';
|
||||||
|
|
||||||
class Painter {
|
class Painter {
|
||||||
constructor(jmap) {
|
constructor(jmap) {
|
||||||
@ -136,6 +137,8 @@ class Painter {
|
|||||||
const overlapTrainList = this.checkTrainOverlap(device);
|
const overlapTrainList = this.checkTrainOverlap(device);
|
||||||
overlapTrainList.forEach((item, index) => {
|
overlapTrainList.forEach((item, index) => {
|
||||||
const trainDevice = this.$jmap.getDeviceByCode(item);
|
const trainDevice = this.$jmap.getDeviceByCode(item);
|
||||||
|
trainDevice._type = deviceRender['Train']._type;
|
||||||
|
trainDevice.zlevel = deviceRender['Train'].zlevel;
|
||||||
trainDevice.overLapIndex = index;
|
trainDevice.overLapIndex = index;
|
||||||
trainDevice.instance && this.mapInstanceLevel[deviceType.Train].remove(trainDevice.instance);
|
trainDevice.instance && this.mapInstanceLevel[deviceType.Train].remove(trainDevice.instance);
|
||||||
this.add(trainDevice);
|
this.add(trainDevice);
|
||||||
|
@ -131,6 +131,18 @@ export default class SignalButton extends Group {
|
|||||||
setShowMode() {
|
setShowMode() {
|
||||||
}
|
}
|
||||||
setShowStation(stationCode) {
|
setShowStation(stationCode) {
|
||||||
|
if (!stationCode || this.model.stationCode === stationCode) {
|
||||||
|
this.eachChild(item => {
|
||||||
|
item.show();
|
||||||
|
});
|
||||||
|
this.isShowShape = true;
|
||||||
|
this.setState(this.model);
|
||||||
|
} else {
|
||||||
|
this.eachChild(item => {
|
||||||
|
item.hide();
|
||||||
|
});
|
||||||
|
this.isShowShape = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
getAnchorPoint() {
|
getAnchorPoint() {
|
||||||
}
|
}
|
||||||
|
@ -60,7 +60,6 @@ export default class Train extends Group {
|
|||||||
this._computed();
|
this._computed();
|
||||||
const model = this.model;
|
const model = this.model;
|
||||||
const style = this.style;
|
const style = this.style;
|
||||||
|
|
||||||
if (this.point) {
|
if (this.point) {
|
||||||
this.trainB = new TrainBody({
|
this.trainB = new TrainBody({
|
||||||
zlevel: this.zlevel,
|
zlevel: this.zlevel,
|
||||||
@ -151,7 +150,7 @@ export default class Train extends Group {
|
|||||||
this.triangle = new ETriangle({
|
this.triangle = new ETriangle({
|
||||||
style: this.style,
|
style: this.style,
|
||||||
zlevel: this.zlevel,
|
zlevel: this.zlevel,
|
||||||
z: 10,
|
z: 15,
|
||||||
right: this.model.right,
|
right: this.model.right,
|
||||||
point: { x: this.startX, y: this.startY }
|
point: { x: this.startX, y: this.startY }
|
||||||
});
|
});
|
||||||
|
@ -316,6 +316,11 @@ export const menuOperate = {
|
|||||||
// 站台紧急停车
|
// 站台紧急停车
|
||||||
operation: OperationEvent.StationStand.emergencyClose.menu.operation,
|
operation: OperationEvent.StationStand.emergencyClose.menu.operation,
|
||||||
cmdType: CMD.Stand.CMD_STAND_EMERGENCY_CLOSE
|
cmdType: CMD.Stand.CMD_STAND_EMERGENCY_CLOSE
|
||||||
|
},
|
||||||
|
cancelEmergencyClose: {
|
||||||
|
// 取消站台紧急停车
|
||||||
|
operation: OperationEvent.StationStand.cancelEmergencyClose.menu.operation,
|
||||||
|
cmdType: CMD.Stand.CMD_STAND_CANCEL_EMERGENCY_CLOSE
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
StationControl:{
|
StationControl:{
|
||||||
|
148
src/jmapNew/theme/datie_01/menus/dialog/drawSelect.vue
Normal file
148
src/jmapNew/theme/datie_01/menus/dialog/drawSelect.vue
Normal file
@ -0,0 +1,148 @@
|
|||||||
|
<template>
|
||||||
|
<el-dialog
|
||||||
|
v-dialogDrag
|
||||||
|
class="chengdou-03__systerm stand-stop-time"
|
||||||
|
:title="title"
|
||||||
|
:visible.sync="show"
|
||||||
|
width="600px"
|
||||||
|
:before-close="doClose"
|
||||||
|
:z-index="2000"
|
||||||
|
:modal="false"
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
>
|
||||||
|
<div>
|
||||||
|
<el-form :inline="true" :model="form" class="demo-form-inline">
|
||||||
|
<el-form-item label="设备类型:">
|
||||||
|
<el-select v-model="form.deviceType" :disabled="true" style="width: 150px;">
|
||||||
|
<el-option
|
||||||
|
v-for="item in deviceTypeList"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="设备名称:">
|
||||||
|
<el-input v-model="form.deviceName" :disabled="true" style="width: 150px;" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-card>
|
||||||
|
<el-table
|
||||||
|
v-loading="loading"
|
||||||
|
:data="tableData"
|
||||||
|
style="width: 100%"
|
||||||
|
>
|
||||||
|
<el-table-column
|
||||||
|
prop="fileName"
|
||||||
|
label="文件"
|
||||||
|
width="400"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
prop="name"
|
||||||
|
label="操作"
|
||||||
|
>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div class="text-button" @click="openPdf(scope.row)">打开</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</el-card>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { mapGetters } from 'vuex';
|
||||||
|
import CancelMouseState from '@/mixin/CancelMouseState';
|
||||||
|
import { getUploadFile } from '@/api/pdf';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'TrainMove',
|
||||||
|
mixins: [
|
||||||
|
CancelMouseState
|
||||||
|
],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
selected: null,
|
||||||
|
dialogShow: false,
|
||||||
|
loading: false,
|
||||||
|
tableData: [],
|
||||||
|
deviceTypeList: [
|
||||||
|
{ label: '区段', value: 'Section' },
|
||||||
|
{ label: '信号机', value: 'Signal' },
|
||||||
|
{ label: '道岔', value: 'Switch' },
|
||||||
|
{ label: '车站', value: 'Station' }
|
||||||
|
],
|
||||||
|
deviceIdList: [],
|
||||||
|
form: {
|
||||||
|
mapId: '',
|
||||||
|
deviceId: '',
|
||||||
|
deviceCode: '',
|
||||||
|
deviceName: ''
|
||||||
|
}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapGetters('map', [
|
||||||
|
'stationStandList'
|
||||||
|
]),
|
||||||
|
show() {
|
||||||
|
return this.dialogShow && !this.$store.state.menuOperation.break;
|
||||||
|
},
|
||||||
|
title() {
|
||||||
|
return '图纸检索';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
doShow(selected) {
|
||||||
|
this.selected = selected;
|
||||||
|
this.form.deviceName = selected.name;
|
||||||
|
this.form.deviceType = selected._type;
|
||||||
|
const params = { mapId: this.$route.query.mapId, deviceType: selected._type.toUpperCase(), deviceId: selected.code };
|
||||||
|
this.loading = true;
|
||||||
|
getUploadFile(params).then(resp => {
|
||||||
|
this.tableData = resp.data;
|
||||||
|
this.loading = false;
|
||||||
|
}).catch(error => {
|
||||||
|
this.loading = false;
|
||||||
|
this.$message.error('图纸检索失败!');
|
||||||
|
});
|
||||||
|
this.dialogShow = true;
|
||||||
|
this.$nextTick(function () {
|
||||||
|
this.$store.dispatch('training/emitTipFresh');
|
||||||
|
});
|
||||||
|
},
|
||||||
|
openPdf(row) {
|
||||||
|
const url = `https://joylink.club/oss/joylink/${row.filePath}`;
|
||||||
|
window.open(url, '_blank');
|
||||||
|
},
|
||||||
|
doClose() {
|
||||||
|
this.loading = false;
|
||||||
|
this.dialogShow = false;
|
||||||
|
this.$store.dispatch('training/emitTipFresh');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
.chengdou-03__systerm .el-dialog .base-label {
|
||||||
|
background: rgba(0, 0, 0, x);
|
||||||
|
position: relative;
|
||||||
|
left: -5px;
|
||||||
|
top: -18px;
|
||||||
|
padding: 0 5px;
|
||||||
|
background-color: #F0F0F0;
|
||||||
|
}
|
||||||
|
.text-button{
|
||||||
|
color: #148ad0;
|
||||||
|
cursor:pointer;
|
||||||
|
}
|
||||||
|
.text-button:active{
|
||||||
|
color: #b938e1;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
.text-button:hover{
|
||||||
|
color: #b938e1;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
</style>
|
@ -7,6 +7,7 @@
|
|||||||
<train-add-plan ref="trainAddPlan" pop-class="chengdou-03__systerm" />
|
<train-add-plan ref="trainAddPlan" pop-class="chengdou-03__systerm" />
|
||||||
<set-fault ref="setFault" pop-class="chengdou-03__systerm" />
|
<set-fault ref="setFault" pop-class="chengdou-03__systerm" />
|
||||||
<load-spare-train ref="loadSpareTrain" pop-class="chengdou-03__systerm" />
|
<load-spare-train ref="loadSpareTrain" pop-class="chengdou-03__systerm" />
|
||||||
|
<draw-select ref="drawSelect" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -21,9 +22,9 @@ import { mapGetters } from 'vuex';
|
|||||||
import CMD from '@/scripts/cmdPlugin/CommandEnum';
|
import CMD from '@/scripts/cmdPlugin/CommandEnum';
|
||||||
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
|
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
|
||||||
import { DeviceMenu, OperateMode } from '@/scripts/ConstDic';
|
import { DeviceMenu, OperateMode } from '@/scripts/ConstDic';
|
||||||
import MenuContextHandler from '@/scripts/cmdPlugin/MenuContextHandler';
|
|
||||||
import { menuOperate, commitOperate } from '@/jmapNew/theme/components/utils/menuOperate';
|
import { menuOperate, commitOperate } from '@/jmapNew/theme/components/utils/menuOperate';
|
||||||
import LoadSpareTrain from '@/jmapNew/theme/components/menus/dialog/loadSpareTrain';
|
import LoadSpareTrain from '@/jmapNew/theme/components/menus/dialog/loadSpareTrain';
|
||||||
|
import DrawSelect from './dialog/drawSelect';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'SectionMenu',
|
name: 'SectionMenu',
|
||||||
@ -34,7 +35,8 @@ export default {
|
|||||||
NoticeInfo,
|
NoticeInfo,
|
||||||
TrainAddPlan,
|
TrainAddPlan,
|
||||||
SetFault,
|
SetFault,
|
||||||
LoadSpareTrain
|
LoadSpareTrain,
|
||||||
|
DrawSelect
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
selected: {
|
selected: {
|
||||||
@ -49,6 +51,10 @@ export default {
|
|||||||
menu: [],
|
menu: [],
|
||||||
menuNormal: {
|
menuNormal: {
|
||||||
Local: [
|
Local: [
|
||||||
|
{
|
||||||
|
label: '图纸调用',
|
||||||
|
handler: this.drawingCall
|
||||||
|
}
|
||||||
],
|
],
|
||||||
Center: [
|
Center: [
|
||||||
// {
|
// {
|
||||||
@ -119,7 +125,8 @@ export default {
|
|||||||
initMenu() {
|
initMenu() {
|
||||||
// 编辑模式菜单列表
|
// 编辑模式菜单列表
|
||||||
if (this.selected.type != '04') {
|
if (this.selected.type != '04') {
|
||||||
this.menu = MenuContextHandler.covert(this.menuNormal);
|
// this.menu = MenuContextHandler.covert(this.menuNormal);
|
||||||
|
this.menu = this.menuNormal.Local;
|
||||||
} else {
|
} else {
|
||||||
this.menu = [];
|
this.menu = [];
|
||||||
}
|
}
|
||||||
@ -128,6 +135,9 @@ export default {
|
|||||||
this.menu = this.menuForce;
|
this.menu = this.menuForce;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
drawingCall() {
|
||||||
|
this.$refs.drawSelect.doShow(this.selected);
|
||||||
|
},
|
||||||
doShow(point) {
|
doShow(point) {
|
||||||
this.initMenu();
|
this.initMenu();
|
||||||
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
|
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
<route-hand-control ref="routeHandControl" />
|
<route-hand-control ref="routeHandControl" />
|
||||||
<notice-info ref="noticeInfo" pop-class="chengdou-03__systerm" />
|
<notice-info ref="noticeInfo" pop-class="chengdou-03__systerm" />
|
||||||
<password-box ref="passwordBox" pop-class="chengdou-03__systerm" @checkOver="passWordCommit" />
|
<password-box ref="passwordBox" pop-class="chengdou-03__systerm" @checkOver="passWordCommit" />
|
||||||
|
<draw-select ref="drawSelect" />
|
||||||
<set-fault ref="setFault" pop-class="chengdou-03__systerm" />
|
<set-fault ref="setFault" pop-class="chengdou-03__systerm" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -28,6 +29,7 @@ import CMD from '@/scripts/cmdPlugin/CommandEnum';
|
|||||||
import MenuContextHandler from '@/scripts/cmdPlugin/MenuContextHandler';
|
import MenuContextHandler from '@/scripts/cmdPlugin/MenuContextHandler';
|
||||||
import PasswordBox from '@/jmapNew/theme/components/menus/childDialog/passwordInputBox';
|
import PasswordBox from '@/jmapNew/theme/components/menus/childDialog/passwordInputBox';
|
||||||
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
|
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
|
||||||
|
import DrawSelect from './dialog/drawSelect';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'SignalMenu',
|
name: 'SignalMenu',
|
||||||
@ -40,7 +42,8 @@ export default {
|
|||||||
RouteGuide,
|
RouteGuide,
|
||||||
NoticeInfo,
|
NoticeInfo,
|
||||||
PasswordBox,
|
PasswordBox,
|
||||||
SetFault
|
SetFault,
|
||||||
|
DrawSelect
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
selected: {
|
selected: {
|
||||||
@ -55,6 +58,10 @@ export default {
|
|||||||
menu: [],
|
menu: [],
|
||||||
menuNormal: {
|
menuNormal: {
|
||||||
Local: [
|
Local: [
|
||||||
|
{
|
||||||
|
label: '图纸调用',
|
||||||
|
handler: this.drawingCall
|
||||||
|
}
|
||||||
// {
|
// {
|
||||||
// label: '办理进路',
|
// label: '办理进路',
|
||||||
// handler: this.arrangementRoute,
|
// handler: this.arrangementRoute,
|
||||||
@ -190,13 +197,16 @@ export default {
|
|||||||
methods: {
|
methods: {
|
||||||
initMenu() {
|
initMenu() {
|
||||||
// 编辑模式菜单列表
|
// 编辑模式菜单列表
|
||||||
this.menu = MenuContextHandler.covert(this.menuNormal);
|
// this.menu = MenuContextHandler.covert(this.menuNormal);
|
||||||
|
this.menu = this.menuNormal.Local;
|
||||||
// 故障模式菜单列表
|
// 故障模式菜单列表
|
||||||
if (this.operatemode === OperateMode.FAULT) {
|
if (this.operatemode === OperateMode.FAULT) {
|
||||||
this.menu = this.menuForce;
|
this.menu = this.menuForce;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
drawingCall() {
|
||||||
|
this.$refs.drawSelect.doShow(this.selected);
|
||||||
|
},
|
||||||
doShow(point) {
|
doShow(point) {
|
||||||
this.initMenu();
|
this.initMenu();
|
||||||
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
|
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<pop-menu ref="popMenu" :menu="menu" />
|
<pop-menu ref="popMenu" :menu="menu" />
|
||||||
|
<draw-select ref="drawSelect" />
|
||||||
<set-fault ref="setFault" pop-class="chengdou-03__systerm" />
|
<set-fault ref="setFault" pop-class="chengdou-03__systerm" />
|
||||||
<notice-info ref="noticeInfo" pop-class="chengdou-03__systerm" />
|
<notice-info ref="noticeInfo" pop-class="chengdou-03__systerm" />
|
||||||
</div>
|
</div>
|
||||||
@ -8,7 +9,7 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import PopMenu from '@/components/PopMenu';
|
import PopMenu from '@/components/PopMenu';
|
||||||
import MenuContextHandler from '@/scripts/cmdPlugin/MenuContextHandler';
|
import DrawSelect from './dialog/drawSelect';
|
||||||
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
|
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
|
||||||
import CancelMouseState from '@/mixin/CancelMouseState';
|
import CancelMouseState from '@/mixin/CancelMouseState';
|
||||||
import { mapGetters } from 'vuex';
|
import { mapGetters } from 'vuex';
|
||||||
@ -22,7 +23,8 @@ export default {
|
|||||||
components: {
|
components: {
|
||||||
PopMenu,
|
PopMenu,
|
||||||
SetFault,
|
SetFault,
|
||||||
NoticeInfo
|
NoticeInfo,
|
||||||
|
DrawSelect
|
||||||
},
|
},
|
||||||
mixins: [
|
mixins: [
|
||||||
CancelMouseState
|
CancelMouseState
|
||||||
@ -41,24 +43,8 @@ export default {
|
|||||||
menuNormal: {
|
menuNormal: {
|
||||||
Local: [
|
Local: [
|
||||||
{
|
{
|
||||||
label: '系统结构图一前置图',
|
label: '图纸调用',
|
||||||
file: '01-系统结构图一前视图.pdf',
|
handler: this.drawingCall
|
||||||
handler: this.handlerOpenPdf
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '系统结构图二后视图',
|
|
||||||
file: '02-系统结构图二后视图.pdf',
|
|
||||||
handler: this.handlerOpenPdf
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '系统供电示意图',
|
|
||||||
file: '03-系统供电示意图.pdf',
|
|
||||||
handler: this.handlerOpenPdf
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '车站布线图',
|
|
||||||
file: '04-车站布线图.pdf',
|
|
||||||
handler: this.handlerOpenPdf
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
Center: [
|
Center: [
|
||||||
@ -114,6 +100,9 @@ export default {
|
|||||||
this.menu = this.menuForce;
|
this.menu = this.menuForce;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
drawingCall() {
|
||||||
|
this.$refs.drawSelect.doShow(this.selected);
|
||||||
|
},
|
||||||
doShow(point) {
|
doShow(point) {
|
||||||
this.initMenu();
|
this.initMenu();
|
||||||
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
|
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
|
||||||
|
@ -6,11 +6,13 @@
|
|||||||
<notice-info ref="noticeInfo" pop-class="chengdou-03__systerm" />
|
<notice-info ref="noticeInfo" pop-class="chengdou-03__systerm" />
|
||||||
<switch-hook-lock ref="switchHookLock" pop-class="chengdou-03__systerm" />
|
<switch-hook-lock ref="switchHookLock" pop-class="chengdou-03__systerm" />
|
||||||
<set-fault ref="setFault" pop-class="chengdou-03__systerm" />
|
<set-fault ref="setFault" pop-class="chengdou-03__systerm" />
|
||||||
|
<draw-select ref="drawSelect" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import PopMenu from '@/components/PopMenu';
|
import PopMenu from '@/components/PopMenu';
|
||||||
|
import DrawSelect from './dialog/drawSelect';
|
||||||
import SectionControl from '@/jmapNew/theme/components/menus/dialog/sectionControl';
|
import SectionControl from '@/jmapNew/theme/components/menus/dialog/sectionControl';
|
||||||
import SwitchControl from '@/jmapNew/theme/components/menus/dialog/switchControl';
|
import SwitchControl from '@/jmapNew/theme/components/menus/dialog/switchControl';
|
||||||
import SetFault from '@/jmapNew/theme/components/menus/dialog/setFaultNew';
|
import SetFault from '@/jmapNew/theme/components/menus/dialog/setFaultNew';
|
||||||
@ -31,7 +33,8 @@ export default {
|
|||||||
SwitchControl,
|
SwitchControl,
|
||||||
NoticeInfo,
|
NoticeInfo,
|
||||||
SetFault,
|
SetFault,
|
||||||
SwitchHookLock
|
SwitchHookLock,
|
||||||
|
DrawSelect
|
||||||
},
|
},
|
||||||
mixins: [
|
mixins: [
|
||||||
CancelMouseState
|
CancelMouseState
|
||||||
@ -48,7 +51,12 @@ export default {
|
|||||||
return {
|
return {
|
||||||
menu: [],
|
menu: [],
|
||||||
menuNormal: {
|
menuNormal: {
|
||||||
Local: [],
|
Local: [
|
||||||
|
{
|
||||||
|
label: '图纸调用',
|
||||||
|
handler: this.drawingCall
|
||||||
|
}
|
||||||
|
],
|
||||||
Center: [
|
Center: [
|
||||||
// {
|
// {
|
||||||
// label: '单操到定位',
|
// label: '单操到定位',
|
||||||
@ -131,8 +139,8 @@ export default {
|
|||||||
methods: {
|
methods: {
|
||||||
initMenu() {
|
initMenu() {
|
||||||
// 编辑模式菜单列表
|
// 编辑模式菜单列表
|
||||||
this.menu = MenuContextHandler.covert(this.menuNormal);
|
// this.menu = MenuContextHandler.covert(this.menuNormal);
|
||||||
|
this.menu = this.menuNormal.Local;
|
||||||
// 故障模式菜单列表
|
// 故障模式菜单列表
|
||||||
if (this.operatemode === OperateMode.FAULT) {
|
if (this.operatemode === OperateMode.FAULT) {
|
||||||
if (!this.$store.state.scriptRecord.bgSet) {
|
if (!this.$store.state.scriptRecord.bgSet) {
|
||||||
@ -147,6 +155,9 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
|
drawingCall() {
|
||||||
|
this.$refs.drawSelect.doShow(this.selected);
|
||||||
|
},
|
||||||
doShow(point) {
|
doShow(point) {
|
||||||
this.initMenu();
|
this.initMenu();
|
||||||
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
|
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
|
||||||
|
@ -149,6 +149,16 @@ export default {
|
|||||||
handler: this.cancelStoppage,
|
handler: this.cancelStoppage,
|
||||||
cmdType:CMD.Stand.CMD_STAND_REMOVE_FAULT
|
cmdType:CMD.Stand.CMD_STAND_REMOVE_FAULT
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
label: '站台紧急停车',
|
||||||
|
handler: this.emergencyClose,
|
||||||
|
cmdType: CMD.Stand.CMD_STAND_EMERGENCY_CLOSE
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '取消站台紧急停车',
|
||||||
|
handler: this.cancelEmergencyClose,
|
||||||
|
cmdType: CMD.Stand.CMD_STAND_CANCEL_EMERGENCY_CLOSE
|
||||||
|
},
|
||||||
{
|
{
|
||||||
label: this.$t('menu.menuSection.triggerFaultManagement'),
|
label: this.$t('menu.menuSection.triggerFaultManagement'),
|
||||||
handler: this.triggerFaultManagement,
|
handler: this.triggerFaultManagement,
|
||||||
@ -306,6 +316,22 @@ export default {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
// 站台紧急停车
|
||||||
|
emergencyClose() {
|
||||||
|
commitOperate(menuOperate.StationStand.emergencyClose, { standCode: this.selected.code }, 3).then(({valid, operate}) => {
|
||||||
|
}).catch(error=>{
|
||||||
|
console.error(error);
|
||||||
|
this.$refs.noticeInfo.doShow();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 取消站台紧急停车
|
||||||
|
cancelEmergencyClose() {
|
||||||
|
commitOperate(menuOperate.StationStand.cancelEmergencyClose, { standCode: this.selected.code }, 3).then(({valid, operate}) => {
|
||||||
|
}).catch(error=> {
|
||||||
|
console.error(error);
|
||||||
|
this.$refs.noticeInfo.doShow();
|
||||||
|
});
|
||||||
|
},
|
||||||
triggerFaultManagement() {
|
triggerFaultManagement() {
|
||||||
this.$store.dispatch('training/setTriggerFaultCount', this.selected);
|
this.$store.dispatch('training/setTriggerFaultCount', this.selected);
|
||||||
}
|
}
|
||||||
|
@ -66,7 +66,7 @@
|
|||||||
<div style="height: 56px;width: 100%;background: #fff;overflow-y: scroll;text-align: left;">
|
<div style="height: 56px;width: 100%;background: #fff;overflow-y: scroll;text-align: left;">
|
||||||
<div class="speed-value-box" :style="{background: speedLimitValue===15? '#87CEFA': '#FFF'}" @click="setSpeedLimitValue(15)">15</div>
|
<div class="speed-value-box" :style="{background: speedLimitValue===15? '#87CEFA': '#FFF'}" @click="setSpeedLimitValue(15)">15</div>
|
||||||
<div class="speed-value-box" :style="{background: speedLimitValue===25? '#87CEFA': '#FFF'}" @click="setSpeedLimitValue(25)">25</div>
|
<div class="speed-value-box" :style="{background: speedLimitValue===25? '#87CEFA': '#FFF'}" @click="setSpeedLimitValue(25)">25</div>
|
||||||
<div class="speed-value-box" :style="{background: speedLimitValue===40? '#87CEFA': '#FFF'}" @click="setSpeedLimitValue(45)">45</div>
|
<div class="speed-value-box" :style="{background: speedLimitValue===45? '#87CEFA': '#FFF'}" @click="setSpeedLimitValue(45)">45</div>
|
||||||
<div class="speed-value-box" :style="{background: speedLimitValue===60? '#87CEFA': '#FFF'}" @click="setSpeedLimitValue(60)">60</div>
|
<div class="speed-value-box" :style="{background: speedLimitValue===60? '#87CEFA': '#FFF'}" @click="setSpeedLimitValue(60)">60</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -76,10 +76,10 @@
|
|||||||
<div class="nav-border" style="padding: 5px;">
|
<div class="nav-border" style="padding: 5px;">
|
||||||
<el-row style="height: 25px;">
|
<el-row style="height: 25px;">
|
||||||
<div style="display: flex;justify-content: space-between">
|
<div style="display: flex;justify-content: space-between">
|
||||||
<el-button size="mini" plain>车次号修改</el-button>
|
<el-button size="mini" plain :disabled="trainOperateType==='update'" @click="handleTrainOperate('update')">车次号修改</el-button>
|
||||||
<el-button size="mini" plain :disabled="true">车次号删除</el-button>
|
<el-button size="mini" plain :disabled="trainOperateType==='delete'" @click="handleTrainOperate('delete')">车次号删除</el-button>
|
||||||
<el-button size="mini" plain :disabled="true">车次号创建</el-button>
|
<el-button size="mini" plain :disabled="trainOperateType==='create'" @click="handleTrainOperate('create')">车次号创建</el-button>
|
||||||
<el-button size="mini" plain :disabled="true">车次号步进</el-button>
|
<el-button size="mini" plain :disabled="trainOperateType==='move'" @click="handleTrainOperate('create')">车次号步进</el-button>
|
||||||
</div>
|
</div>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row style="height: 25px;line-height: 25px;border-top: 2px solid #7E8076;border-left: 2px solid #6A6B64;border-right: 2px solid #FBFBFA;">
|
<el-row style="height: 25px;line-height: 25px;border-top: 2px solid #7E8076;border-left: 2px solid #6A6B64;border-right: 2px solid #FBFBFA;">
|
||||||
@ -100,22 +100,42 @@
|
|||||||
<div class="nav-border" style="padding: 5px;">
|
<div class="nav-border" style="padding: 5px;">
|
||||||
<el-row style="display: flex;align-items: center;">
|
<el-row style="display: flex;align-items: center;">
|
||||||
<el-col :span="7" style="height: 25px;line-height: 25px;">车次号</el-col>
|
<el-col :span="7" style="height: 25px;line-height: 25px;">车次号</el-col>
|
||||||
<el-col :span="17"><el-input v-model="formModelTripNum" size="mini" style="height: 20px;" :disabled="true" /></el-col>
|
<el-col :span="17">
|
||||||
|
<el-input v-if="trainOperateType!=='create'" v-model="formModelTripNum" :maxlength="7" size="mini" style="height: 20px;" :disabled="true" />
|
||||||
|
<el-input v-if="trainOperateType==='create'" v-model="formModelNewTrip" :maxlength="7" size="mini" style="height: 20px;" />
|
||||||
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row style="display: flex;align-items: center;">
|
<el-row style="display: flex;align-items: center;">
|
||||||
<el-col :span="7" style="height: 25px;line-height: 25px;">轨道号</el-col>
|
<el-col :span="7" style="height: 25px;line-height: 25px;">轨道号</el-col>
|
||||||
<el-col :span="17"><el-input v-model="formModelSectionName" size="mini" style="height: 20px;" :disabled="true" /></el-col>
|
<el-col :span="17"><el-input v-model="formModelSectionName" size="mini" style="height: 20px;" :disabled="true" /></el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row style="display: flex;align-items: center;">
|
<el-row v-if="trainOperateType ==='update'" style="display: flex;align-items: center;">
|
||||||
<el-col :span="7" style="height: 25px;line-height: 25px;">新车次号</el-col>
|
<el-col :span="7" style="height: 25px;line-height: 25px;">新车次号</el-col>
|
||||||
<el-col :span="17"><el-input v-model="formModelNewTrip" size="mini" style="height: 20px;" /></el-col>
|
<el-col :span="17"><el-input v-model="formModelNewTrip" size="mini" style="height: 20px;" /></el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
<el-row v-if="trainOperateType ==='create'" style="display: flex;align-items: center;">
|
||||||
|
<el-col :span="7" style="height: 25px;line-height: 25px;">新车组号</el-col>
|
||||||
|
<el-col :span="17"><el-input v-model="formModelNewGroup" :maxlength="6" size="mini" style="height: 20px;" /></el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row v-if="trainOperateType === 'move'" style="display: flex;align-items: center;">
|
||||||
|
<el-col :span="7" style="height: 25px;line-height: 25px;">新轨道号</el-col>
|
||||||
|
<el-col :span="17">
|
||||||
|
<el-select v-model="formModelNewSection" filterable size="mini" style="height: 20px;" placeholder="请选择">
|
||||||
|
<el-option
|
||||||
|
v-for="item in handleSectionList"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col v-if="trainOperationShow" :span="6" style="padding: 1px;">
|
<el-col v-if="trainOperationShow" :span="6" style="padding: 1px;">
|
||||||
<div class="nav-border">
|
<div class="nav-border">
|
||||||
<div style="display: flex;justify-content: space-around;width: 100%;height: 45px;align-items: center;border-bottom: 2px solid #FBFBFA;">
|
<div style="display: flex;justify-content: space-around;width: 100%;height: 45px;align-items: center;border-bottom: 2px solid #FBFBFA;">
|
||||||
<el-button style="line-height: 18px; width: 100px; margin: 0;" plain :disabled="!trainModel.groupNumber" @click="trainCommit">执行</el-button>
|
<el-button style="line-height: 18px; width: 100px; margin: 0;" plain :disabled="!trainCommitDisabled" @click="trainCommit">执行</el-button>
|
||||||
<el-button style="line-height: 18px; width: 100px; margin: 0;" plain @click="doClose">退出</el-button>
|
<el-button style="line-height: 18px; width: 100px; margin: 0;" plain @click="doClose">退出</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -200,7 +220,10 @@ export default {
|
|||||||
formModelTripNum: '',
|
formModelTripNum: '',
|
||||||
formModelSectionName: '',
|
formModelSectionName: '',
|
||||||
formModelNewTrip: '',
|
formModelNewTrip: '',
|
||||||
speedShowCon: false
|
formModelNewGroup: '',
|
||||||
|
speedShowCon: false,
|
||||||
|
trainOperateType: '',
|
||||||
|
formModelNewSection: ''
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -225,6 +248,23 @@ export default {
|
|||||||
},
|
},
|
||||||
speedShow() {
|
speedShow() {
|
||||||
return (this.cmdType == CMD.Section.CMD_SECTION_SET_LIMIT_SPEED || this.cmdType == CMD.Switch.CMD_SWITCH_SET_LIMIT_SPEED) && this.speedShowCon;
|
return (this.cmdType == CMD.Section.CMD_SECTION_SET_LIMIT_SPEED || this.cmdType == CMD.Switch.CMD_SWITCH_SET_LIMIT_SPEED) && this.speedShowCon;
|
||||||
|
},
|
||||||
|
trainCommitDisabled() {
|
||||||
|
return (this.trainOperateType === 'create' && this.formModelNewTrip && this.formModelNewTrip.length === 7 && this.formModelNewGroup && this.formModelNewGroup.length === 6) ||
|
||||||
|
(this.trainOperateType === 'update' && this.formModelNewTrip && this.formModelNewTrip.length === 7) || (this.trainOperateType === 'delete') ||
|
||||||
|
(this.trainOperateType === 'move' && this.formModelNewSection);
|
||||||
|
},
|
||||||
|
handleSectionList() {
|
||||||
|
const list = [];
|
||||||
|
this.sectionList.forEach(item => {
|
||||||
|
if ((item.type === '01' && !item.parentCode) || item.type === '04') {
|
||||||
|
list.push({label: item.name, value: item.code});
|
||||||
|
} else if (item.type === '02') {
|
||||||
|
const parentSection = this.$store.getters['map/getDeviceByCode'](item.parentCode) || {};
|
||||||
|
list.push({label: parentSection.name + item.name, value: item.code});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return list;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
@ -233,8 +273,7 @@ export default {
|
|||||||
'01': 'Local', // 现地工作站
|
'01': 'Local', // 现地工作站
|
||||||
'02': 'Center' // 中心调度工作站
|
'02': 'Center' // 中心调度工作站
|
||||||
};
|
};
|
||||||
|
if (this.selected._type && !this.trainOperationShow) {
|
||||||
if (this.selected._type) {
|
|
||||||
const control = this.getStationControl(this.selected);
|
const control = this.getStationControl(this.selected);
|
||||||
const type = State2SimulationMap[this.$store.state.training.prdType];
|
const type = State2SimulationMap[this.$store.state.training.prdType];
|
||||||
if (control.controlMode != type) {
|
if (control.controlMode != type) {
|
||||||
@ -363,6 +402,9 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
handleTrainOperate(type) {
|
||||||
|
this.trainOperateType = type;
|
||||||
|
},
|
||||||
getStationControl(selected) {
|
getStationControl(selected) {
|
||||||
let control;
|
let control;
|
||||||
if (selected._type == 'StationStand') {
|
if (selected._type == 'StationStand') {
|
||||||
@ -641,15 +683,7 @@ export default {
|
|||||||
this.param.routeCodeList = routeCodeList;
|
this.param.routeCodeList = routeCodeList;
|
||||||
}
|
}
|
||||||
if (this.cmdType == CMD.Station.CMD_STATION_SET_CI_AUTO_TRIGGER || this.cmdType == CMD.Station.CMD_STATION_CANCEL_CI_AUTO_TRIGGER) {
|
if (this.cmdType == CMD.Station.CMD_STATION_SET_CI_AUTO_TRIGGER || this.cmdType == CMD.Station.CMD_STATION_CANCEL_CI_AUTO_TRIGGER) {
|
||||||
if (this.selectedObj.centralized) {
|
|
||||||
this.param = { stationCode: this.selectedObj.code };
|
this.param = { stationCode: this.selectedObj.code };
|
||||||
} else {
|
|
||||||
this.stationList.forEach(station => {
|
|
||||||
if (station.centralized && station.chargeStationCodeList.includes(this.selectedObj.code)) {
|
|
||||||
this.param = { stationCode: station.code };
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (this.cmdType == CMD.Section.CMD_SECTION_SET_LIMIT_SPEED || this.cmdType == CMD.Switch.CMD_SWITCH_SET_LIMIT_SPEED) {
|
if (this.cmdType == CMD.Section.CMD_SECTION_SET_LIMIT_SPEED || this.cmdType == CMD.Switch.CMD_SWITCH_SET_LIMIT_SPEED) {
|
||||||
this.param.speedLimitValue = this.speedLimitValue;
|
this.param.speedLimitValue = this.speedLimitValue;
|
||||||
@ -743,21 +777,21 @@ export default {
|
|||||||
this.clearAllMenuShow();
|
this.clearAllMenuShow();
|
||||||
},
|
},
|
||||||
handleTrainParam() {
|
handleTrainParam() {
|
||||||
if (this.selectedObj.type === '01') {
|
if (this.selectedObj.type === '02') {
|
||||||
|
const parentSection = this.$store.getters['map/getDeviceByCode'](this.selectedObj.parentCode);
|
||||||
|
this.formModelSectionName = parentSection.name + this.selectedObj.name;
|
||||||
|
} else {
|
||||||
this.formModelSectionName = this.selectedObj.name;
|
this.formModelSectionName = this.selectedObj.name;
|
||||||
|
}
|
||||||
|
this.trainOperateType = '';
|
||||||
this.$store.state.map.activeTrainList.forEach(trainCode => {
|
this.$store.state.map.activeTrainList.forEach(trainCode => {
|
||||||
const trainModel = this.$store.getters['map/getDeviceByCode'](trainCode);
|
const trainModel = this.$store.getters['map/getDeviceByCode'](trainCode);
|
||||||
if (trainModel && trainModel.physicalCode === this.selectedObj.code) {
|
if (trainModel && trainModel.sectionCode === this.selectedObj.code) {
|
||||||
this.formModelTripNum = trainModel.serviceNumber + trainModel.destinationCode + (trainModel.tripNumber.substring(1));
|
this.formModelTripNum = trainModel.destinationCode + (trainModel.serviceNumber.substring(1)) + (trainModel.tripNumber.substring(1));
|
||||||
this.trainModel = trainModel;
|
this.trainModel = trainModel;
|
||||||
this.formModelNewTrip = '';
|
this.formModelNewTrip = '';
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
|
||||||
// this.trainModel = this.selectedObj; physicalCode
|
|
||||||
// this.formModelTripNum = this.trainModel.destinationCode + this.trainModel.serviceNumber + this.trainModel.tripNumber;
|
|
||||||
// this.formModelSectionName = this.trainModel.sectionModel.name;
|
|
||||||
// this.formModelNewTrip = '';
|
|
||||||
},
|
},
|
||||||
setSpeedLimitValue(val) {
|
setSpeedLimitValue(val) {
|
||||||
this.speedLimitValue = val;
|
this.speedLimitValue = val;
|
||||||
@ -768,22 +802,45 @@ export default {
|
|||||||
this.formModelTripNum = '';
|
this.formModelTripNum = '';
|
||||||
this.formModelSectionName = '';
|
this.formModelSectionName = '';
|
||||||
this.formModelNewTrip = '';
|
this.formModelNewTrip = '';
|
||||||
|
this.formModelNewGroup = '';
|
||||||
|
this.trainOperateType = '';
|
||||||
this.trainOperationShow = flag;
|
this.trainOperationShow = flag;
|
||||||
|
this.formModelNewSection = '';
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
trainCommit() {
|
trainCommit() {
|
||||||
if (this.formModelNewTrip && this.formModelNewTrip.length === 9) {
|
const params = {};
|
||||||
const params = {
|
|
||||||
groupNumber: this.trainModel.groupNumber,
|
|
||||||
tripNumber: this.formModelNewTrip.slice(6, 9),
|
|
||||||
serviceNumber: this.formModelNewTrip.slice(3, 6)
|
|
||||||
};
|
|
||||||
const step = {
|
const step = {
|
||||||
over: true,
|
over: true
|
||||||
cmdType: CMD.TrainWindow.CMD_TRAIN_SET_PLAN,
|
|
||||||
operation: OperationEvent.Train.setPlanTrainId.menu.operation,
|
|
||||||
param: params
|
|
||||||
};
|
};
|
||||||
|
if (this.trainOperateType === 'update') {
|
||||||
|
params.groupNumber = this.trainModel.groupNumber;
|
||||||
|
params.serviceNumber = '0' + this.formModelNewTrip.slice(3, 5);
|
||||||
|
params.tripNumber = '0' + this.formModelNewTrip.slice(5, 7);
|
||||||
|
step.cmdType = CMD.TrainWindow.CMD_TRAIN_SET_PLAN;
|
||||||
|
step.operation = OperationEvent.Train.setPlanTrainId.menu.operation;
|
||||||
|
step.param = params;
|
||||||
|
} else if (this.trainOperateType === 'create') {
|
||||||
|
params.sectionCode = this.selectedObj.code;
|
||||||
|
params.groupNumber = this.formModelNewGroup;
|
||||||
|
params.dn = this.formModelNewTrip.slice(0, 3);
|
||||||
|
params.sn = '0' + this.formModelNewTrip.slice(3, 5);
|
||||||
|
params.tn = '0' + this.formModelNewTrip.slice(5, 7);
|
||||||
|
step.cmdType = CMD.TrainWindow.CMD_TRAIN_ADD_TRAIN_TRACE;
|
||||||
|
step.operation = OperationEvent.Train.addTrainId.menu.operation;
|
||||||
|
step.param = params;
|
||||||
|
} else if (this.trainOperateType === 'delete') {
|
||||||
|
params.groupNumber = this.trainModel.groupNumber;
|
||||||
|
step.cmdType = CMD.TrainWindow.CMD_TRAIN_REMOVE_TRAIN_TRACE;
|
||||||
|
step.operation = OperationEvent.Train.delTrainId.menu.operation;
|
||||||
|
step.param = params;
|
||||||
|
} else if (this.trainOperateType === 'move') {
|
||||||
|
params.groupNumber = this.trainModel.groupNumber;
|
||||||
|
params.sectionCode = this.formModelNewSection;
|
||||||
|
step.cmdType = CMD.TrainWindow.CMD_TRAIN_MOVE_TRAIN_TRACE;
|
||||||
|
step.operation = OperationEvent.Train.moveTrainId.menu.operation;
|
||||||
|
step.param = params;
|
||||||
|
}
|
||||||
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
|
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
|
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
|
||||||
@ -793,9 +850,6 @@ export default {
|
|||||||
console.error(error);
|
console.error(error);
|
||||||
this.$refs.noticeInfo.doShow();
|
this.$refs.noticeInfo.doShow();
|
||||||
});
|
});
|
||||||
} else {
|
|
||||||
this.$refs.noticeInfo.doShow('请输入正确的车次号');
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
initMenus() {
|
initMenus() {
|
||||||
this.basicParamList = this.$store.state.training.prdType === '01' ? [
|
this.basicParamList = this.$store.state.training.prdType === '01' ? [
|
||||||
|
@ -56,6 +56,11 @@ export default {
|
|||||||
handler: this.emergencyClose,
|
handler: this.emergencyClose,
|
||||||
cmdType: CMD.Stand.CMD_STAND_EMERGENCY_CLOSE
|
cmdType: CMD.Stand.CMD_STAND_EMERGENCY_CLOSE
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
label: '取消站台紧急停车',
|
||||||
|
handler: this.cancelEmergencyClose,
|
||||||
|
cmdType: CMD.Stand.CMD_STAND_CANCEL_EMERGENCY_CLOSE
|
||||||
|
},
|
||||||
{
|
{
|
||||||
label: '触发故障管理',
|
label: '触发故障管理',
|
||||||
handler: this.triggerFaultManagement,
|
handler: this.triggerFaultManagement,
|
||||||
@ -119,6 +124,14 @@ export default {
|
|||||||
this.$refs.noticeInfo.doShow();
|
this.$refs.noticeInfo.doShow();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
// 取消站台紧急停车
|
||||||
|
cancelEmergencyClose() {
|
||||||
|
commitOperate(menuOperate.StationStand.cancelEmergencyClose, { standCode: this.selected.code }, 3).then(({valid, operate}) => {
|
||||||
|
}).catch(error=> {
|
||||||
|
console.error(error);
|
||||||
|
this.$refs.noticeInfo.doShow();
|
||||||
|
});
|
||||||
|
},
|
||||||
// 设置故障
|
// 设置故障
|
||||||
setStoppage() {
|
setStoppage() {
|
||||||
commitOperate(menuOperate.Common.setFault, { code: this.selected.code }, 0).then(({valid, operate})=>{
|
commitOperate(menuOperate.Common.setFault, { code: this.selected.code }, 0).then(({valid, operate})=>{
|
||||||
|
259
src/jmapNew/theme/nanjing_02/menus/dialog/mapVisual.vue
Normal file
259
src/jmapNew/theme/nanjing_02/menus/dialog/mapVisual.vue
Normal file
@ -0,0 +1,259 @@
|
|||||||
|
<template>
|
||||||
|
<div
|
||||||
|
ref="jlmapCanvas"
|
||||||
|
class="jlmap-canvas"
|
||||||
|
style="width: 100%;height:960px;"
|
||||||
|
>
|
||||||
|
<div :id="canvasId" class="display_canvas" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import Jlmap from '@/jmapNew/map';
|
||||||
|
import { parser } from '@/jmapNew/utils/parser';
|
||||||
|
import { deepAssign } from '@/utils/index';
|
||||||
|
import deviceType from '@/jmapNew/constant/deviceType';
|
||||||
|
import { mapGetters } from 'vuex';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'JLocalmapVisual',
|
||||||
|
props: {
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
loading: true,
|
||||||
|
offset: {
|
||||||
|
x: 0,
|
||||||
|
y: 0
|
||||||
|
},
|
||||||
|
map: null,
|
||||||
|
mapDevice: {},
|
||||||
|
routeData: [],
|
||||||
|
mapData: null,
|
||||||
|
autoReentryData: []
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
canvasId() {
|
||||||
|
return ['map', Math.random().toFixed(5) * 100000].join('_');
|
||||||
|
},
|
||||||
|
...mapGetters('map', [
|
||||||
|
'bigScreenConfig'
|
||||||
|
]),
|
||||||
|
width() {
|
||||||
|
return this.$store.state.app.width - 40;
|
||||||
|
},
|
||||||
|
height() {
|
||||||
|
return this.$store.state.app.height - 60;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
'$store.state.config.canvasSizeCount': function (val) {
|
||||||
|
this.resetSize();
|
||||||
|
},
|
||||||
|
'$store.state.map.mapViewLoadedCount':function() {
|
||||||
|
this.$store.dispatch('map/setTrainWindowShow', false);
|
||||||
|
this.map.off('zoom');
|
||||||
|
this.handleUpdateScreen();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.mapData = JSON.parse(JSON.stringify(this.$store.state.map.map));
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.init();
|
||||||
|
},
|
||||||
|
beforeDestroy() {
|
||||||
|
if (this.map) {
|
||||||
|
this.map.dispose();
|
||||||
|
this.map = null;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
init() {
|
||||||
|
document.getElementById(this.canvasId).oncontextmenu = function (e) {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (!this.map) {
|
||||||
|
this.map = new Jlmap({
|
||||||
|
dom: document.getElementById(this.canvasId),
|
||||||
|
config: {
|
||||||
|
renderer: 'canvas',
|
||||||
|
width: this.width,
|
||||||
|
height: this.height
|
||||||
|
},
|
||||||
|
options: {
|
||||||
|
scaleRate: 1,
|
||||||
|
offsetX: 0,
|
||||||
|
offsetY: 0,
|
||||||
|
zoomOnMouseWheel: false
|
||||||
|
},
|
||||||
|
showConfig: {
|
||||||
|
prdType: '02',
|
||||||
|
previewOrMapDraw: true,
|
||||||
|
showMode: '02'
|
||||||
|
},
|
||||||
|
methods: {}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
window.document.oncontextmenu = function () {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (this.mapData.skinVO) {
|
||||||
|
this.mapDevice = parser(this.mapData, this.mapData.skinVO.code, this.map.getShowConfig());
|
||||||
|
}
|
||||||
|
},
|
||||||
|
loadData() {
|
||||||
|
try {
|
||||||
|
this.setMap(this.mapData, this.mapDevice);
|
||||||
|
} catch (error) {
|
||||||
|
console.log('[ERROR] ', error);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 设置地图
|
||||||
|
setMap(data, mapDevice) {
|
||||||
|
if (data.skinVO) {
|
||||||
|
this.routeData = this.$store.state.map.routeData;
|
||||||
|
this.autoReentryData = this.$store.state.map.autoReentryData;
|
||||||
|
this.map.setMap(data, mapDevice, {
|
||||||
|
routeData: this.routeData,
|
||||||
|
autoReentryData: this.autoReentryData
|
||||||
|
});
|
||||||
|
setTimeout(() => {
|
||||||
|
this.handleUpdateScreen();
|
||||||
|
}, 2000);
|
||||||
|
} else {
|
||||||
|
this.mapDevice = {};
|
||||||
|
this.map.clear();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handleUpdateScreen() {
|
||||||
|
this.maskOpen = false;
|
||||||
|
console.log(this.bigScreenConfig, '--0000');
|
||||||
|
if (this.bigScreenConfig.bigScreenSplitConfig && this.bigScreenConfig.bigScreenSplitConfig.length) {
|
||||||
|
const offsetList = this.bigScreenConfig.offsetList;
|
||||||
|
const width = this.bigScreenConfig.width;
|
||||||
|
const height = this.bigScreenConfig.height;
|
||||||
|
if (this.widthLeft) {
|
||||||
|
const size = {
|
||||||
|
width: (this.$store.state.app.width - (this.widthLeft || 450) - 2) * width,
|
||||||
|
height: this.height * height,
|
||||||
|
list: this.bigScreenConfig.bigScreenSplitConfig.map(ele => ele.position),
|
||||||
|
offsetList: offsetList
|
||||||
|
};
|
||||||
|
console.log(size, '=----1');
|
||||||
|
this.map.setUpdateScreen(size);
|
||||||
|
} else {
|
||||||
|
const size = {
|
||||||
|
width: (this.$store.state.app.width - 2) * width,
|
||||||
|
height: this.$store.state.app.height * height,
|
||||||
|
list: this.bigScreenConfig.bigScreenSplitConfig.map(ele => ele.position),
|
||||||
|
offsetList: offsetList
|
||||||
|
};
|
||||||
|
console.log(size, '=----');
|
||||||
|
this.map.setUpdateScreen(size);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.maskOpen = true;
|
||||||
|
// this.$messageBox('该线路没有大屏切割位置信息, 请前往地图绘制编辑');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 重置jlmap宽高
|
||||||
|
resetSize() {
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.map && this.map.resize({ width: 1920, height: 960 });
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 设置显示图层
|
||||||
|
setLevelVisible(levels) {
|
||||||
|
this.map && this.map.setLevelVisible(levels);
|
||||||
|
},
|
||||||
|
setMapFree() {
|
||||||
|
const list = [];
|
||||||
|
Object.values(this.mapDevice).forEach((elem) => {
|
||||||
|
const code = elem.code;
|
||||||
|
const type = elem._type;
|
||||||
|
// 列车不需要设置默认状态
|
||||||
|
type != deviceType.Train &&
|
||||||
|
list.push({ code, _type: type, _free: true });
|
||||||
|
});
|
||||||
|
|
||||||
|
this.map.update(list, false);
|
||||||
|
},
|
||||||
|
// 设置中心偏移
|
||||||
|
setCenterWithOffset(code, dx, y) {
|
||||||
|
this.map.setCenterWithOffset(code, dx, y - this.height / 2);
|
||||||
|
},
|
||||||
|
// 更新地图数据
|
||||||
|
updateMapDevice(elems) {
|
||||||
|
const list = [];
|
||||||
|
elems.forEach((elem) => {
|
||||||
|
if (elem.code) {
|
||||||
|
list.push(deepAssign(this.mapDevice[elem.code], elem));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.map.update(list, false);
|
||||||
|
},
|
||||||
|
getDeviceByCode(code) {
|
||||||
|
return this.mapDevice[code];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||||
|
.mask {
|
||||||
|
opacity: 0;
|
||||||
|
background: #000;
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
z-index: 9;
|
||||||
|
}
|
||||||
|
.jlmap-canvas {
|
||||||
|
position: relative;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-o-user-select: none;
|
||||||
|
-khtml-user-select: none;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
background: #000;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.title {
|
||||||
|
text-align: right;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #606266;
|
||||||
|
line-height: 32px;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
.zoom-view {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
background: #fff;
|
||||||
|
padding-top: 5px;
|
||||||
|
height: 42px;
|
||||||
|
border-bottom: 1px #f3f3f3 solid;
|
||||||
|
border-right: 1px #f3f3f3 solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ {
|
||||||
|
.el-form.el-form--inline {
|
||||||
|
height: 28px !important;
|
||||||
|
line-height: 28px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-loading-mask {
|
||||||
|
background-color: rgba(0, 0, 0, 0.3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
92
src/jmapNew/theme/nanjing_02/menus/dialog/rps.vue
Normal file
92
src/jmapNew/theme/nanjing_02/menus/dialog/rps.vue
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
<template>
|
||||||
|
<el-dialog
|
||||||
|
v-dialogDrag
|
||||||
|
class="haerbin-01__systerm"
|
||||||
|
:title="title"
|
||||||
|
:visible.sync="show"
|
||||||
|
:fullscreen="true"
|
||||||
|
:before-close="doClose"
|
||||||
|
:z-index="2000"
|
||||||
|
>
|
||||||
|
<map-visual ref="map" />
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { mapGetters } from 'vuex';
|
||||||
|
import MapVisual from './mapVisual';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'TrainMove',
|
||||||
|
components: {
|
||||||
|
MapVisual
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
trainNoList: [],
|
||||||
|
addModel: {
|
||||||
|
tripNumber: '',
|
||||||
|
trainSource: '',
|
||||||
|
stationStandSource: '',
|
||||||
|
trainGoal: '',
|
||||||
|
stationStandGoal: ''
|
||||||
|
},
|
||||||
|
|
||||||
|
rules: {
|
||||||
|
tripNumber: [
|
||||||
|
{ required: true, message: this.$t('rules.selectGroupNumber'), trigger: 'blur' }
|
||||||
|
],
|
||||||
|
trainSource: [
|
||||||
|
{ required: true, message: this.$t('rules.enterTheTripNumber'), trigger: 'blur' }
|
||||||
|
],
|
||||||
|
stationStandSource: [
|
||||||
|
{ required: true, message: this.$t('rules.selectStation'), trigger: 'change' }
|
||||||
|
],
|
||||||
|
trainGoal: [
|
||||||
|
{ required: true, message: this.$t('rules.enterTheTripNumber'), trigger: 'blur' }
|
||||||
|
],
|
||||||
|
stationStandGoal: [
|
||||||
|
{ required: true, message: this.$t('rules.selectStation'), trigger: 'change' }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
dialogShow: false,
|
||||||
|
loading: false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapGetters('map', [
|
||||||
|
'stationStandList'
|
||||||
|
]),
|
||||||
|
show() {
|
||||||
|
return this.dialogShow && !this.$store.state.menuOperation.break;
|
||||||
|
},
|
||||||
|
title() {
|
||||||
|
return '背投系统';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
doShow(operate, selected) {
|
||||||
|
this.dialogShow = true;
|
||||||
|
this.$nextTick(function () {
|
||||||
|
this.$refs.map.loadData(this.mapData);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
doClose() {
|
||||||
|
this.loading = false;
|
||||||
|
this.dialogShow = false;
|
||||||
|
this.$store.dispatch('training/emitTipFresh');
|
||||||
|
this.$store.dispatch('map/setTrainWindowShow', false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
/deep/ .el-dialog {
|
||||||
|
background: rgba(100, 100, 100, 1);
|
||||||
|
position: relative;
|
||||||
|
border: 2px solid rgb(144, 144, 144, 0.8);
|
||||||
|
border-radius: 6px;
|
||||||
|
color: #000;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
</style>
|
@ -8,7 +8,8 @@
|
|||||||
<el-button style="width: 100px;line-height: 19px;" plain @click="login">{{ loginText }}</el-button>
|
<el-button style="width: 100px;line-height: 19px;" plain @click="login">{{ loginText }}</el-button>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row>
|
||||||
<input v-model="inputStr" :type="modelType" style="width: 100px;height:20px;" :disabled="isLogin||this.loginText == '登录'" @keyup.enter="validateData">
|
<span v-if="isLogin">{{ inputStr }}</span>
|
||||||
|
<input v-if="!isLogin" v-model="inputStr" :type="modelType" style="width: 100px;height:20px;" :disabled="this.loginText == '登录'" @keyup.enter="validateData">
|
||||||
</el-row>
|
</el-row>
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -62,8 +63,8 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row v-else-if="$store.state.training.prdType === '02'" style="padding: 3px;">
|
<el-row v-else-if="$store.state.training.prdType === '02'" style="padding: 3px;">
|
||||||
<el-col :span="16">
|
<el-col :span="20">
|
||||||
<div style="width: calc(100% - 10px);border: 2px solid #DDD9CA;border-radius: 1px;">
|
<div style="width: calc(100% - 10px);border: 2px solid #DDD9CA;border-radius: 1px;height: 132px;">
|
||||||
<el-row style="padding: 4px;">
|
<el-row style="padding: 4px;">
|
||||||
<div class="tip-content-box">
|
<div class="tip-content-box">
|
||||||
<div v-if="tipContent[0]">{{ `${tipContent[0].level}` }}</div>
|
<div v-if="tipContent[0]">{{ `${tipContent[0].level}` }}</div>
|
||||||
@ -81,53 +82,86 @@
|
|||||||
<div v-if="tipContent[2]">{{ `${tipContent[2].confirm ? '确认': '未确认'}` }}</div>
|
<div v-if="tipContent[2]">{{ `${tipContent[2].confirm ? '确认': '未确认'}` }}</div>
|
||||||
</div>
|
</div>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row class="button-row">
|
<div style="padding: 5px;height:20px;line-height: 20px;border-top: 2px solid #DDD9CA;display: flex;justify-content: space-between;">
|
||||||
<div class="div-simulate-button" @click="undeveloped">系统</div>
|
<!--<div class="div-simulate-button" @click="undeveloped">系统</div>-->
|
||||||
<div class="div-simulate-button" @click="undeveloped">联锁</div>
|
<!--<div class="div-simulate-button" @click="undeveloped">联锁</div>-->
|
||||||
<div class="div-simulate-button" @click="trainControlShow">列监</div>
|
<!--<div class="div-simulate-button" @click="trainControlShow">列监</div>-->
|
||||||
<div class="div-simulate-button" @click="undeveloped">站控</div>
|
<!--<div class="div-simulate-button" @click="undeveloped">站控</div>-->
|
||||||
<div class="div-simulate-button" @click="undeveloped">车场</div>
|
<!--<div class="div-simulate-button" @click="undeveloped">车场</div>-->
|
||||||
<div class="div-simulate-button" @click="undeveloped">编表</div>
|
<!--<div class="div-simulate-button" @click="undeveloped">编表</div>-->
|
||||||
<div class="div-simulate-button" @click="undeveloped">车辆段</div>
|
<!--<div class="div-simulate-button" @click="undeveloped">车辆段</div>-->
|
||||||
</el-row>
|
<div>
|
||||||
<el-row class="button-row" style="margin: 10px 0;">
|
<div class="div-simulate-button" style="width: 40px;" @click="rpsClick">背投</div>
|
||||||
<div class="div-simulate-button" @click="undeveloped">轨道</div>
|
<div class="div-simulate-button" style="width: 40px;">车场</div>
|
||||||
<div class="div-simulate-button" @click="undeveloped">调度</div>
|
<div class="div-simulate-button" style="width: 40px;">轨道</div>
|
||||||
<div class="div-simulate-button" @click="undeveloped">录放</div>
|
<div class="div-simulate-button" style="width: 40px;">系统</div>
|
||||||
<div class="div-simulate-button" @click="undeveloped">管理</div>
|
<div class="div-simulate-button" style="width: 40px;">列车</div>
|
||||||
<div class="div-simulate-button" @click="undeveloped">列车信息</div>
|
</div>
|
||||||
<div class="div-simulate-button" @click="undeveloped">职权</div>
|
<div>
|
||||||
<div style="width: 80px;" />
|
<div class="div-simulate-button" style="width: 40px;">联锁</div>
|
||||||
</el-row>
|
<div class="div-simulate-button" style="width: 40px;">列监</div>
|
||||||
|
<div class="div-simulate-button" style="width: 40px;">运图</div>
|
||||||
|
<div class="div-simulate-button" style="width: 55px;">时刻表</div>
|
||||||
|
<div class="div-simulate-button" style="width: 40px;">编表</div>
|
||||||
|
<div class="div-simulate-button" style="width: 40px;">调度</div>
|
||||||
|
<div class="div-simulate-button" style="width: 40px;">站控</div>
|
||||||
|
<div class="div-simulate-button" style="width: 40px;">计划</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div class="div-simulate-button" style="width: 40px;">SDM</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div class="div-simulate-button" style="width: 55px;">管理员</div>
|
||||||
|
<div class="div-simulate-button" style="width: 40px;">职权</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div class="div-simulate-button" style="width: 40px;">拷屏</div>
|
||||||
|
<div class="div-simulate-button" style="width: 40px;">录放</div>
|
||||||
|
<div class="div-simulate-button" style="width: 40px;">布局</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--<el-row class="button-row" style="margin: 10px 0;">-->
|
||||||
|
<!--<div class="div-simulate-button" @click="undeveloped">轨道</div>-->
|
||||||
|
<!--<div class="div-simulate-button" @click="undeveloped">调度</div>-->
|
||||||
|
<!--<div class="div-simulate-button" @click="undeveloped">录放</div>-->
|
||||||
|
<!--<div class="div-simulate-button" @click="undeveloped">管理</div>-->
|
||||||
|
<!--<div class="div-simulate-button" @click="undeveloped">列车信息</div>-->
|
||||||
|
<!--<div class="div-simulate-button" @click="undeveloped">职权</div>-->
|
||||||
|
<!--<div style="width: 80px;" />-->
|
||||||
|
<!--</el-row>-->
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="4">
|
<el-col :span="2">
|
||||||
<div style="width: calc(100% - 10px);border: 2px solid #DDD9CA;border-radius: 1px;">
|
<div style="width: calc(100% - 10px);border: 2px solid #DDD9CA;border-radius: 1px;">
|
||||||
<el-row style="height: 68px;display: flex; justify-content: space-between;align-items: center;">
|
<el-row style="margin-top: 20px;margin-bottom: 18px;">
|
||||||
<div style="width: 40px;" class="div-simulate-button" :style="{background:isNoRecoverLevelA || isNoConfirmLevelA?'#F00':'#DDD' }" :class="{'headerBox' :isNoConfirmLevelA}" @click="showHimAlarm('A')">A</div>
|
<el-col :span="16">
|
||||||
<div style="width: 40px;" class="div-simulate-button" :style="{background:isNoRecoverLevelB || isNoConfirmLevelB?'#F00':'#DDD' }" :class="{'headerBox' :isNoConfirmLevelB}" @click="showHimAlarm('B')">B</div>
|
|
||||||
<div style="width: 40px;" class="div-simulate-button" :style="{background:isNoRecoverLevelC?'#F00':'#DDD' }" @click="showHimAlarm('C')">C</div>
|
|
||||||
<img :src="voiceIcon" style="width: 40px;height: 40px;" @click="controlAudio(false)">
|
|
||||||
</el-row>
|
|
||||||
<el-row class="button-row">
|
<el-row class="button-row">
|
||||||
<div style="width: 80px;" class="div-simulate-button" @click="showHimAlarm">报警</div>
|
<div style="width: 25px;" class="div-simulate-button" :style="{background:isNoRecoverLevelA || isNoConfirmLevelA?'#F00':'#DDD' }" :class="{'headerBox' :isNoConfirmLevelA}" @click="showHimAlarm('A')">A</div>
|
||||||
<div style="width: 80px;" class="div-simulate-button" @click="undeveloped">运图</div>
|
<div style="width: 25px;" class="div-simulate-button" :style="{background:isNoRecoverLevelB || isNoConfirmLevelB?'#F00':'#DDD' }" :class="{'headerBox' :isNoConfirmLevelB}" @click="showHimAlarm('B')">B</div>
|
||||||
|
<div style="width: 25px;" class="div-simulate-button" :style="{background:isNoRecoverLevelC?'#F00':'#DDD' }" @click="showHimAlarm('C')">C</div>
|
||||||
|
<!--<img :src="voiceIcon" style="width: 40px;height: 40px;" @click="controlAudio(false)">-->
|
||||||
|
</el-row>
|
||||||
|
<el-row class="button-row" style="margin-top: 20px;">
|
||||||
|
<div style="width: 40px;" class="div-simulate-button" @click="showHimAlarm">报警</div>
|
||||||
|
<div style="width: 40px;" class="div-simulate-button" @click="undeveloped">运图</div>
|
||||||
|
</el-row>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<div style="width: 40px;height: 60px;line-height: 60px;" class="div-simulate-button" @click="controlAudio(false)">静音</div>
|
||||||
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row class="button-row" style="margin: 10px 0;">
|
<el-row class="button-row" style="margin: 10px 0;">
|
||||||
<div style="width: 80px;" class="div-simulate-button" @click="undeveloped">报表</div>
|
<div style="width: 40px;" class="div-simulate-button" @click="undeveloped">档案</div>
|
||||||
<div style="width: 80px;" class="div-simulate-button" @click="undeveloped">时刻表</div>
|
<div style="width: 40px;" class="div-simulate-button" @click="undeveloped">归档</div>
|
||||||
|
<div style="width: 40px;" class="div-simulate-button" @click="undeveloped">统计</div>
|
||||||
</el-row>
|
</el-row>
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="4" style="border: 2px solid #DDD9CA;border-radius: 1px;">
|
<el-col :span="2" style="border: 2px solid #DDD9CA;border-radius: 1px;">
|
||||||
<el-row style="height: 68px;" />
|
<el-row style="height: 88px;" />
|
||||||
<el-row class="button-row">
|
|
||||||
<div style="width: 80px;" class="div-simulate-button" @click="undeveloped">考评</div>
|
|
||||||
<div style="width: 80px;" class="div-simulate-button" @click="showLogDetail">日志</div>
|
|
||||||
</el-row>
|
|
||||||
<el-row class="button-row" style="margin: 10px 0;">
|
<el-row class="button-row" style="margin: 10px 0;">
|
||||||
<div style="width: 80px;" class="div-simulate-button" @click="undeveloped">锁屏</div>
|
<div style="width: 40px;" class="div-simulate-button" @click="undeveloped">锁屏</div>
|
||||||
<div style="width: 80px;" class="div-simulate-button" @click="undeveloped">退出</div>
|
<div style="width: 40px;" class="div-simulate-button" @click="undeveloped">退出</div>
|
||||||
</el-row>
|
</el-row>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@ -136,6 +170,7 @@
|
|||||||
<alarm-table-hmi ref="alarmTableHmi" />
|
<alarm-table-hmi ref="alarmTableHmi" />
|
||||||
<train-control ref="trainControl" :offset="10" />
|
<train-control ref="trainControl" :offset="10" />
|
||||||
<log-detail ref="logDetail" />
|
<log-detail ref="logDetail" />
|
||||||
|
<rps-dialog ref="rpsDialog" />
|
||||||
<audio id="buzzer" controls loop="loop" style="width: 0;height: 0">
|
<audio id="buzzer" controls loop="loop" style="width: 0;height: 0">
|
||||||
<source :src="buzzerAudio" type="audio/mpeg">
|
<source :src="buzzerAudio" type="audio/mpeg">
|
||||||
</audio>
|
</audio>
|
||||||
@ -144,13 +179,14 @@
|
|||||||
<script>
|
<script>
|
||||||
import { mapGetters } from 'vuex';
|
import { mapGetters } from 'vuex';
|
||||||
import { EventBus } from '@/scripts/event-bus';
|
import { EventBus } from '@/scripts/event-bus';
|
||||||
import { TrainingMode } from '@/scripts/ConstDic';
|
// import { TrainingMode } from '@/scripts/ConstDic';
|
||||||
import voiceOpen from '@/assets/voiceOpen.png';
|
import voiceOpen from '@/assets/voiceOpen.png';
|
||||||
import voiceClose from '@/assets/voiceClose.png';
|
import voiceClose from '@/assets/voiceClose.png';
|
||||||
import BuzzerAudio from '@/assets/buzzer.mp3';
|
import BuzzerAudio from '@/assets/buzzer.mp3';
|
||||||
import AlarmTableHmi from './menuDialog/alarmTableHmi';
|
import AlarmTableHmi from './menuDialog/alarmTableHmi';
|
||||||
import AlarmTableLow from './menuDialog/alarmTableLow';
|
import AlarmTableLow from './menuDialog/alarmTableLow';
|
||||||
import TrainControl from './dialog/trainControl';
|
import TrainControl from './dialog/trainControl';
|
||||||
|
import RpsDialog from './dialog/rps';
|
||||||
import LogDetail from './menuDialog/logDetail';
|
import LogDetail from './menuDialog/logDetail';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@ -159,7 +195,8 @@ export default {
|
|||||||
AlarmTableLow,
|
AlarmTableLow,
|
||||||
AlarmTableHmi,
|
AlarmTableHmi,
|
||||||
TrainControl,
|
TrainControl,
|
||||||
LogDetail
|
LogDetail,
|
||||||
|
RpsDialog
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
selected: {
|
selected: {
|
||||||
@ -443,6 +480,9 @@ export default {
|
|||||||
trainControlShow() {
|
trainControlShow() {
|
||||||
this.$refs.trainControl.doShow();
|
this.$refs.trainControl.doShow();
|
||||||
},
|
},
|
||||||
|
rpsClick() {
|
||||||
|
this.$refs.rpsDialog.doShow();
|
||||||
|
},
|
||||||
controlAudio(val) {
|
controlAudio(val) {
|
||||||
const audio = document.getElementById('buzzer');
|
const audio = document.getElementById('buzzer');
|
||||||
this.sound = val;
|
this.sound = val;
|
||||||
@ -665,9 +705,9 @@ export default {
|
|||||||
width: 80px;
|
width: 80px;
|
||||||
}
|
}
|
||||||
.tip-content-box{
|
.tip-content-box{
|
||||||
height: 20px;
|
height: 30px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
line-height: 20px;
|
line-height: 30px;
|
||||||
background: #001528;
|
background: #001528;
|
||||||
color: #C20F29;
|
color: #C20F29;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<div v-if="isLocal" id="menuButton">
|
<div v-if="isLocal" id="menuButton">
|
||||||
<div class="__menuButton">
|
<div class="__menuButton">
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col v-if="!trainOperationShow" :span="11">
|
<el-col v-if="operationType === 'cmd'" :span="11">
|
||||||
<div v-if="secondConfirm" class="nav-border">
|
<div v-if="secondConfirm" class="nav-border">
|
||||||
<el-row>
|
<el-row>
|
||||||
<div class="nav-border-top">
|
<div class="nav-border-top">
|
||||||
@ -42,27 +42,27 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col v-if="!trainOperationShow" :span="10">
|
<el-col v-if="operationType === 'cmd'" :span="10">
|
||||||
<div class="nav-border">
|
<div class="nav-border">
|
||||||
<div class="nav-border-top">
|
<div class="nav-border-top">
|
||||||
<el-button :id="commandId" class="fl" :class="{'disabled': !isLogin||canCommand||secondConfirm}" style="line-height: 18px; margin-top: 4px;" plain :disabled="!isLogin||canCommand||secondConfirm" @click="interceptLogin(command)()">执行</el-button>
|
<el-button :id="commandId" class="fl" :class="{'disabled': !isLogin||canCommand||secondConfirm}" style="line-height: 18px; margin-top: 4px;" plain :disabled="!isLogin||canCommand||secondConfirm" @click="interceptLogin(command)()">执行</el-button>
|
||||||
<el-button class="fr" style="line-height: 18px; margin-top: 4px;" plain :class="{'disabled': !isLogin}" :disabled="!isLogin" @click="interceptLogin(cancle)()">取消</el-button>
|
<el-button class="fr" style="line-height: 18px; margin-top: 4px;" plain :class="{'disabled': !isLogin}" :disabled="!isLogin" @click="interceptLogin(cancle)()">取消</el-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="el-print">
|
<div class="el-print">
|
||||||
<div v-for="(el,i) in tempData" :key="i" class="selected-row" :class="{'active' : route&&el.code===route.code}" @click="interceptLogin(selectRouteParam)(el.code)">
|
<div v-for="(el,i) in tempData" :key="i" class="selected-row" :class="{'active' : route&&el.code===route.code || overlap&&el.code===overlap.code}" @click="interceptLogin(selectRouteParam)(el.code)">
|
||||||
{{ el.commandTip || el.name }}
|
{{ el.commandTip || el.name }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col v-if="trainOperationShow" :span="10" style="padding: 1px;">
|
<el-col v-if="operationType === 'train'" :span="10" style="padding: 1px;">
|
||||||
<div class="nav-border" style="padding: 5px;">
|
<div class="nav-border" style="padding: 5px;">
|
||||||
<el-row style="height: 25px;">
|
<el-row style="height: 25px;">
|
||||||
<div style="display: flex;justify-content: space-between">
|
<div style="display: flex;justify-content: space-between">
|
||||||
<el-button size="mini" plain>车次号修改</el-button>
|
<el-button size="mini" plain :disabled="trainOperateType==='update'" @click="handleTrainOperate('update')">车次号修改</el-button>
|
||||||
<el-button size="mini" plain :disabled="true">车次号删除</el-button>
|
<el-button size="mini" plain :disabled="trainOperateType==='delete'" @click="handleTrainOperate('delete')">车次号删除</el-button>
|
||||||
<el-button size="mini" plain :disabled="true">车次号创建</el-button>
|
<el-button size="mini" plain :disabled="trainOperateType==='create'" @click="handleTrainOperate('create')">车次号创建</el-button>
|
||||||
<el-button size="mini" plain :disabled="true">车次号步进</el-button>
|
<el-button size="mini" plain :disabled="trainOperateType==='move'" @click="handleTrainOperate('move')">车次号步进</el-button>
|
||||||
</div>
|
</div>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row style="height: 25px;line-height: 25px;border-top: 2px solid #7E8076;border-left: 2px solid #6A6B64;border-right: 2px solid #FBFBFA;">
|
<el-row style="height: 25px;line-height: 25px;border-top: 2px solid #7E8076;border-left: 2px solid #6A6B64;border-right: 2px solid #FBFBFA;">
|
||||||
@ -79,35 +79,85 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col v-if="trainOperationShow" :span="5" style="padding: 1px;">
|
<el-col v-if="operationType === 'train'" :span="5" style="padding: 1px;">
|
||||||
<div class="nav-border" style="padding: 5px;">
|
<div class="nav-border" style="padding: 5px;">
|
||||||
<el-row style="display: flex;align-items: center;">
|
<el-row style="display: flex;align-items: center;">
|
||||||
<el-col :span="7" style="height: 25px;line-height: 25px;">车次号</el-col>
|
<el-col :span="7" style="height: 25px;line-height: 25px;">车次号</el-col>
|
||||||
<el-col :span="17"><el-input v-model="formModelTripNum" size="mini" style="height: 20px;" :disabled="true" /></el-col>
|
<el-col :span="17">
|
||||||
|
<el-input v-if="trainOperateType!=='create'" v-model="formModelTripNum" :maxlength="7" size="mini" style="height: 20px;" :disabled="true" />
|
||||||
|
<el-input v-if="trainOperateType==='create'" v-model="formModelNewTrip" :maxlength="7" size="mini" style="height: 20px;" />
|
||||||
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row style="display: flex;align-items: center;">
|
<el-row style="display: flex;align-items: center;">
|
||||||
<el-col :span="7" style="height: 25px;line-height: 25px;">轨道号</el-col>
|
<el-col :span="7" style="height: 25px;line-height: 25px;">轨道号</el-col>
|
||||||
<el-col :span="17"><el-input v-model="formModelSectionName" size="mini" style="height: 20px;" :disabled="true" /></el-col>
|
<el-col :span="17"><el-input v-model="formModelSectionName" size="mini" style="height: 20px;" :disabled="true" /></el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row style="display: flex;align-items: center;">
|
<el-row v-if="trainOperateType ==='update'" style="display: flex;align-items: center;">
|
||||||
<el-col :span="7" style="height: 25px;line-height: 25px;">新车次号</el-col>
|
<el-col :span="7" style="height: 25px;line-height: 25px;">新车次号</el-col>
|
||||||
<el-col :span="17"><el-input v-model="formModelNewTrip" size="mini" style="height: 20px;" /></el-col>
|
<el-col :span="17"><el-input v-model="formModelNewTrip" size="mini" style="height: 20px;" /></el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
<el-row v-if="trainOperateType ==='create'" style="display: flex;align-items: center;">
|
||||||
|
<el-col :span="7" style="height: 25px;line-height: 25px;">新车组号</el-col>
|
||||||
|
<el-col :span="17"><el-input v-model="formModelNewGroup" :maxlength="6" size="mini" style="height: 20px;" /></el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row v-if="trainOperateType === 'move'" style="display: flex;align-items: center;">
|
||||||
|
<el-col :span="7" style="height: 25px;line-height: 25px;">新轨道号</el-col>
|
||||||
|
<el-col :span="17">
|
||||||
|
<el-select v-model="formModelNewSection" filterable size="mini" style="height: 20px;" placeholder="请选择">
|
||||||
|
<el-option
|
||||||
|
v-for="item in handleSectionList"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col v-if="trainOperationShow" :span="6" style="padding: 1px;">
|
<el-col v-if="operationType === 'train'" :span="6" style="padding: 1px;">
|
||||||
<div class="nav-border">
|
<div class="nav-border">
|
||||||
<div style="display: flex;justify-content: space-around;width: 100%;height: 45px;align-items: center;border-bottom: 2px solid #FBFBFA;">
|
<div style="display: flex;justify-content: space-around;width: 100%;height: 45px;align-items: center;border-bottom: 2px solid #FBFBFA;">
|
||||||
<el-button style="line-height: 18px; width: 100px; margin: 0;" plain :disabled="!trainModel.groupNumber" @click="trainCommit">执 行</el-button>
|
<el-button style="line-height: 18px; width: 100px; margin: 0;" plain :disabled="!trainCommitDisabled" @click="trainCommit">执 行</el-button>
|
||||||
<el-button style="line-height: 18px; width: 100px; margin: 0;" plain @click="doClose">取 消</el-button>
|
<el-button style="line-height: 18px; width: 100px; margin: 0;" plain @click="doClose">取 消</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<el-col v-if="operationType === 'run'" :span="15" style="padding: 1px;">
|
||||||
|
<div class="nav-border" style="font-size: 14px;">
|
||||||
|
<div style="display: flex;justify-content: space-between;">
|
||||||
|
<div style="border: 1px solid #c0c0c0;margin: 10px;padding: 0 10px 5px 10px;">
|
||||||
|
<div style="position: relative;top: -8px;left: -5px;background: #fff;width: 81px;">所有时刻表</div>
|
||||||
|
<el-select v-model="newRunPlanId" style="width: 140px;" placeholder="请选择" size="mini">
|
||||||
|
<el-option
|
||||||
|
v-for="item in runPlanList"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</div>
|
||||||
|
<div style="border: 1px solid #c0c0c0;margin: 10px;padding: 0 10px 5px 10px;">
|
||||||
|
<div style="position: relative;top: -8px;left: -5px;background: #fff;width: 81px;">当前时刻表</div>
|
||||||
|
<div class="moni_input" style="width: 140px;">{{ runPlanName }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="display: flex;justify-content: space-between;">
|
||||||
|
<el-button style="line-height: 18px; width: 100px; margin-left: 20px;" plain :disabled="!newRunPlanId" @click="handleClickLoadRunPlan">加载</el-button>
|
||||||
|
<el-button style="line-height: 18px; width: 100px; margin-right: 20px;" plain @click="changeShowMode('cmd')">退出</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col v-if="operationType === 'run'" :span="6" style="padding: 1px;">
|
||||||
|
<div class="nav-border" style="padding-top: 10px;">
|
||||||
|
<span style="font-size: 14px;color: #000;">{{ `TIP端加载时刻表,内部号为${runPlanName}` }}</span>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
<el-col :span="3">
|
<el-col :span="3">
|
||||||
<div class="nav-border flex-box">
|
<div class="nav-border flex-box">
|
||||||
<el-button style="line-height: 18px; width: 100px; margin: 0;" plain :disabled="!isLogin" @click="interceptLogin(changeShowMode)(false)">联锁操作</el-button>
|
<el-button style="line-height: 18px; width: 100px; margin: 0;" plain :disabled="!isLogin" @click="interceptLogin(changeShowMode)('cmd')">联锁操作</el-button>
|
||||||
<el-button style="line-height: 18px; width: 100px; margin: 0;" plain :disabled="!isLogin">时刻表操作</el-button>
|
<el-button style="line-height: 18px; width: 100px; margin: 0;" plain :disabled="!isLogin" @click="interceptLogin(changeShowMode)('run')">时刻表操作</el-button>
|
||||||
<el-button style="line-height: 18px; width: 100px; margin: 0;" plain :disabled="!isLogin" @click="interceptLogin(changeShowMode)(true)">ATS操作</el-button>
|
<el-button style="line-height: 18px; width: 100px; margin: 0;" plain :disabled="!isLogin" @click="interceptLogin(changeShowMode)('train')">ATS操作</el-button>
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@ -189,6 +239,8 @@
|
|||||||
<div class="station_buttonGroupL">
|
<div class="station_buttonGroupL">
|
||||||
<div v-if="allowDetain" :id="setDetainTrainId" class="stationButton" @click="stationDetainTrain">此站扣车</div>
|
<div v-if="allowDetain" :id="setDetainTrainId" class="stationButton" @click="stationDetainTrain">此站扣车</div>
|
||||||
<div v-else class="stationButton disabled">此站扣车</div>
|
<div v-else class="stationButton disabled">此站扣车</div>
|
||||||
|
<div v-if="allowJump" :id="setJumpStopId" class="stationButton station_jumpTrain" @click="stationAllJumpTrain">连续扣车</div>
|
||||||
|
<div v-else class="stationButton station_jumpTrain disabled">连续扣车</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="station_buttonGroupR">
|
<div class="station_buttonGroupR">
|
||||||
<div v-if="allowCancle" :id="cancelTrainId" class="stationButton" @click="stationCancleTrain">取消设置</div>
|
<div v-if="allowCancle" :id="cancelTrainId" class="stationButton" @click="stationCancleTrain">取消设置</div>
|
||||||
@ -228,6 +280,8 @@ import { EventBus } from '@/scripts/event-bus';
|
|||||||
import * as adapter from '@/jmapNew/utils/adapter';
|
import * as adapter from '@/jmapNew/utils/adapter';
|
||||||
import CMD from '@/scripts/cmdPlugin/CommandEnum';
|
import CMD from '@/scripts/cmdPlugin/CommandEnum';
|
||||||
import BanIcon from '@/assets/ban-heb.png';
|
import BanIcon from '@/assets/ban-heb.png';
|
||||||
|
import { queryRunPlanList } from '@/api/runplan';
|
||||||
|
import { simulationLoadRunPlan } from '@/api/simulation';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
props: {
|
props: {
|
||||||
@ -258,6 +312,8 @@ export default {
|
|||||||
oldDevice: null, // 上一次点击元素
|
oldDevice: null, // 上一次点击元素
|
||||||
canCommand: true,
|
canCommand: true,
|
||||||
cr1Confrim: false,
|
cr1Confrim: false,
|
||||||
|
runPlanList: [],
|
||||||
|
newRunPlanId: '',
|
||||||
operate: '',
|
operate: '',
|
||||||
cmdType: '',
|
cmdType: '',
|
||||||
securityCommand: '',
|
securityCommand: '',
|
||||||
@ -267,6 +323,7 @@ export default {
|
|||||||
selectedObj: null,
|
selectedObj: null,
|
||||||
oldClickObj: null, // 上一次点击对象
|
oldClickObj: null, // 上一次点击对象
|
||||||
route: null, // 进路对象
|
route: null, // 进路对象
|
||||||
|
overlap: null, // 延续保护
|
||||||
selectRouteList: [],
|
selectRouteList: [],
|
||||||
menuCmdList: new Array(15).fill({}),
|
menuCmdList: new Array(15).fill({}),
|
||||||
ciStationParamList: [],
|
ciStationParamList: [],
|
||||||
@ -285,11 +342,14 @@ export default {
|
|||||||
commandInfo: {},
|
commandInfo: {},
|
||||||
banIcon: BanIcon,
|
banIcon: BanIcon,
|
||||||
timer: null,
|
timer: null,
|
||||||
trainOperationShow: false,
|
operationType: 'cmd',
|
||||||
trainModel: {},
|
trainModel: {},
|
||||||
formModelTripNum: '',
|
formModelTripNum: '',
|
||||||
formModelSectionName: '',
|
formModelSectionName: '',
|
||||||
formModelNewTrip: '',
|
formModelNewTrip: '',
|
||||||
|
formModelNewGroup: '',
|
||||||
|
trainOperateType: '',
|
||||||
|
formModelNewSection: '',
|
||||||
dialogVisible: false,
|
dialogVisible: false,
|
||||||
tipList: [],
|
tipList: [],
|
||||||
modeMatch: false,
|
modeMatch: false,
|
||||||
@ -302,7 +362,13 @@ export default {
|
|||||||
State2SimulationMap: {
|
State2SimulationMap: {
|
||||||
'01': 'Local', // 现地工作站
|
'01': 'Local', // 现地工作站
|
||||||
'02': 'Center' // 中心调度工作站
|
'02': 'Center' // 中心调度工作站
|
||||||
}
|
},
|
||||||
|
strategyList: [ // 折返策略
|
||||||
|
{ value: '01', label: '不折返' },
|
||||||
|
{ value: '02', label: '缺省折返' },
|
||||||
|
{ value: '03', label: '换端' },
|
||||||
|
{ value: '04', label: '自动折返' }
|
||||||
|
]
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -312,7 +378,11 @@ export default {
|
|||||||
...mapGetters('map', [
|
...mapGetters('map', [
|
||||||
'routeList',
|
'routeList',
|
||||||
'stationList',
|
'stationList',
|
||||||
'routeData'
|
'stationStandList',
|
||||||
|
'routeData',
|
||||||
|
'overlapList',
|
||||||
|
'overlapData',
|
||||||
|
'sectionList'
|
||||||
]),
|
]),
|
||||||
commandId() {
|
commandId() {
|
||||||
return OperationEvent.Command.commandHaerbin.confirm.domId;
|
return OperationEvent.Command.commandHaerbin.confirm.domId;
|
||||||
@ -349,11 +419,31 @@ export default {
|
|||||||
},
|
},
|
||||||
menuPosition() {
|
menuPosition() {
|
||||||
return this.$store.state.menuOperation.menuPosition;
|
return this.$store.state.menuOperation.menuPosition;
|
||||||
|
},
|
||||||
|
runPlanName() {
|
||||||
|
return this.$store.state.runPlan.runPlanInfo.name;
|
||||||
|
},
|
||||||
|
trainCommitDisabled() {
|
||||||
|
return (this.trainOperateType === 'create' && this.formModelNewTrip && this.formModelNewTrip.length === 7 && this.formModelNewGroup && this.formModelNewGroup.length === 6) ||
|
||||||
|
(this.trainOperateType === 'update' && this.formModelNewTrip && this.formModelNewTrip.length === 7) || (this.trainOperateType === 'delete') ||
|
||||||
|
(this.trainOperateType === 'move' && this.formModelNewSection);
|
||||||
|
},
|
||||||
|
handleSectionList() {
|
||||||
|
const list = [];
|
||||||
|
this.sectionList.forEach(item => {
|
||||||
|
if ((item.type === '01' && !item.parentCode) || item.type === '04') {
|
||||||
|
list.push({label: item.name, value: item.code});
|
||||||
|
} else if (item.type === '02') {
|
||||||
|
const parentSection = this.$store.getters['map/getDeviceByCode'](item.parentCode) || {};
|
||||||
|
list.push({label: parentSection.name + item.name, value: item.code});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return list;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
'$store.state.training.prdType': function (val) {
|
'$store.state.training.prdType': function (val) {
|
||||||
this.trainOperationShow = false;
|
this.operationType = 'cmd';
|
||||||
this.initMenus();
|
this.initMenus();
|
||||||
},
|
},
|
||||||
'$store.state.training.started':function (val) {
|
'$store.state.training.started':function (val) {
|
||||||
@ -435,6 +525,15 @@ export default {
|
|||||||
this.param = {};
|
this.param = {};
|
||||||
this.initMenus();
|
this.initMenus();
|
||||||
this.handleBasicMenu();
|
this.handleBasicMenu();
|
||||||
|
queryRunPlanList(this.$route.query.mapId).then(resp =>{
|
||||||
|
if (resp.data && resp.data.length) {
|
||||||
|
resp.data.forEach(item => {
|
||||||
|
this.runPlanList.push(item);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}).catch(() => {
|
||||||
|
this.$message.error('获取地图模板运行图列表失败!');
|
||||||
|
});
|
||||||
EventBus.$on('sendMsg', ({message = ''}) => {
|
EventBus.$on('sendMsg', ({message = ''}) => {
|
||||||
this.tempData = [{name: message}];
|
this.tempData = [{name: message}];
|
||||||
});
|
});
|
||||||
@ -449,10 +548,21 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
handleTrainOperate(type) {
|
||||||
|
this.trainOperateType = type;
|
||||||
|
},
|
||||||
initCentralizedStationList(list) {
|
initCentralizedStationList(list) {
|
||||||
const stationContorl = this.stationContorl;
|
const stationContorl = this.stationContorl;
|
||||||
this.menuCmdList = new Array(15).fill({});
|
this.menuCmdList = new Array(15).fill({});
|
||||||
list.forEach((el, index) => {
|
const lists = list.filter(el => {
|
||||||
|
if (el.isShow && this.selectedObj._type == 'Section' && !el.isShow(this.oldClickObj)) {
|
||||||
|
return false; // standTrack 站台轨
|
||||||
|
} else if (el.isShow && this.selectedObj._type == 'Station' && el.isShow(this.selectedObj.ciStation)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return el;
|
||||||
|
});
|
||||||
|
lists.forEach((el, index) => {
|
||||||
if (el.disabledCb && stationContorl) {
|
if (el.disabledCb && stationContorl) {
|
||||||
el.disabled = el.disabledCb(stationContorl);
|
el.disabled = el.disabledCb(stationContorl);
|
||||||
}
|
}
|
||||||
@ -508,7 +618,7 @@ export default {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'Section':
|
case 'Section':
|
||||||
if (this.trainOperationShow) {
|
if (this.operationType === 'train') {
|
||||||
this.handleTrainParam();
|
this.handleTrainParam();
|
||||||
} else {
|
} else {
|
||||||
this.handleSectionMenu();
|
this.handleSectionMenu();
|
||||||
@ -526,6 +636,13 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
handleClickLoadRunPlan(row) {
|
||||||
|
simulationLoadRunPlan(this.$route.query.group, this.newRunPlanId).then(response => {
|
||||||
|
this.$message.success('仿真加载指定运行计划成功!');
|
||||||
|
}).catch(() => {
|
||||||
|
this.$message.error('仿真加载指定运行计划失败!');
|
||||||
|
});
|
||||||
|
},
|
||||||
handleIbpShow() {
|
handleIbpShow() {
|
||||||
if (this.selectedObj._type == 'StationStand' && this.$store.state.menuOperation.subType == 'StationPlatform') {
|
if (this.selectedObj._type == 'StationStand' && this.$store.state.menuOperation.subType == 'StationPlatform') {
|
||||||
if (!(this.selectedObj.assignSkip || this.selectedObj.allSkip || this.selectedObj.centerHoldTrain || this.selectedObj.stationHoldTrain)) {
|
if (!(this.selectedObj.assignSkip || this.selectedObj.allSkip || this.selectedObj.centerHoldTrain || this.selectedObj.stationHoldTrain)) {
|
||||||
@ -577,6 +694,16 @@ export default {
|
|||||||
return control;
|
return control;
|
||||||
},
|
},
|
||||||
selectRouteParam(code) {
|
selectRouteParam(code) {
|
||||||
|
if (this.cmdType === CMD.Signal.CMD_SIGNAL_SET_OVERLAP) {
|
||||||
|
this.overlap = this.overlapData[code];
|
||||||
|
if (this.overlap) {
|
||||||
|
this.param = {
|
||||||
|
signalCode: this.selectedObj.code,
|
||||||
|
overlapCode: this.overlap.code
|
||||||
|
};
|
||||||
|
this.canCommand = false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
this.route = this.routeData[code];
|
this.route = this.routeData[code];
|
||||||
if (this.route) {
|
if (this.route) {
|
||||||
this.param = {
|
this.param = {
|
||||||
@ -584,6 +711,8 @@ export default {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
this.initCentralizedStationList(this.routeParamList);
|
this.initCentralizedStationList(this.routeParamList);
|
||||||
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
handleSwicthMenu() { // 转换底部道岔菜单栏
|
handleSwicthMenu() { // 转换底部道岔菜单栏
|
||||||
// 获取道岔相关区段显示高亮
|
// 获取道岔相关区段显示高亮
|
||||||
@ -713,7 +842,7 @@ export default {
|
|||||||
this.handleSingalMenu();
|
this.handleSingalMenu();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
checkConfirmParam() {
|
checkConfirmParam(row) {
|
||||||
this.param = {};
|
this.param = {};
|
||||||
if (this.operate == OperationEvent.Signal.cancelTrainRoute.menuButton.operation || this.operate == OperationEvent.Signal.humanTrainRoute.menuButton.operation) {
|
if (this.operate == OperationEvent.Signal.cancelTrainRoute.menuButton.operation || this.operate == OperationEvent.Signal.humanTrainRoute.menuButton.operation) {
|
||||||
this.param = {
|
this.param = {
|
||||||
@ -770,6 +899,12 @@ export default {
|
|||||||
};
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.cmdType == CMD.Section.CMD_STAND_SET_REENTRY_STRATEGY) {
|
||||||
|
this.param = {
|
||||||
|
val: row.params ? row.params.val : ''
|
||||||
|
};
|
||||||
|
}
|
||||||
},
|
},
|
||||||
clickCommand(row) {
|
clickCommand(row) {
|
||||||
const step = {};
|
const step = {};
|
||||||
@ -783,11 +918,20 @@ export default {
|
|||||||
if (row.commandTip) {
|
if (row.commandTip) {
|
||||||
EventBus.$emit('sendMsg', {message: row.commandTip});
|
EventBus.$emit('sendMsg', {message: row.commandTip});
|
||||||
}
|
}
|
||||||
|
if (row.cmdType === CMD.Signal.CMD_SIGNAL_SET_OVERLAP) {
|
||||||
|
const overlapList = [];
|
||||||
|
this.overlapList.forEach(item => {
|
||||||
|
if (item.signalCode === this.selectedObj.code) {
|
||||||
|
overlapList.push(item);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.tempData = [...overlapList];
|
||||||
|
}
|
||||||
|
|
||||||
if (this.tempData.length) {
|
if (this.tempData.length) {
|
||||||
this.operate = row.operate.operation;
|
this.operate = row.operate.operation;
|
||||||
this.cmdType = row.cmdType;
|
this.cmdType = row.cmdType;
|
||||||
this.canCommand = false;
|
this.canCommand = row.cmdType === CMD.Signal.CMD_SIGNAL_SET_OVERLAP;
|
||||||
step.operation = this.operate;
|
step.operation = this.operate;
|
||||||
|
|
||||||
if (row.next) {
|
if (row.next) {
|
||||||
@ -806,7 +950,7 @@ export default {
|
|||||||
step.param = this.param;
|
step.param = this.param;
|
||||||
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
|
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
this.checkConfirmParam();
|
this.checkConfirmParam(row);
|
||||||
this.securityCommand = row.securityCommand || row.next;
|
this.securityCommand = row.securityCommand || row.next;
|
||||||
} else if (valid) {
|
} else if (valid) {
|
||||||
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
|
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
|
||||||
@ -915,12 +1059,13 @@ export default {
|
|||||||
},
|
},
|
||||||
doClose() {
|
doClose() {
|
||||||
this.deviceHighLight(this.oldDevice, false); // 当前选中
|
this.deviceHighLight(this.oldDevice, false); // 当前选中
|
||||||
this.changeShowMode(false);
|
this.changeShowMode('cmd');
|
||||||
this.operate = ''; // 清空指令
|
this.operate = ''; // 清空指令
|
||||||
this.cmdType = '';
|
this.cmdType = '';
|
||||||
this.securityCommand = '';
|
this.securityCommand = '';
|
||||||
this.speedLimitValue = '';
|
this.speedLimitValue = '';
|
||||||
this.secondConfirm = false;
|
this.secondConfirm = false;
|
||||||
|
this.overlap = null;
|
||||||
this.cr1Confrim = false;
|
this.cr1Confrim = false;
|
||||||
if (this.oldClickObj) {
|
if (this.oldClickObj) {
|
||||||
this.deviceHighLight(this.oldClickObj, false);
|
this.deviceHighLight(this.oldClickObj, false);
|
||||||
@ -946,17 +1091,21 @@ export default {
|
|||||||
this.allowDetain = true;
|
this.allowDetain = true;
|
||||||
},
|
},
|
||||||
handleTrainParam() {
|
handleTrainParam() {
|
||||||
if (this.selectedObj.type === '01') {
|
if (this.selectedObj.type === '02') {
|
||||||
|
const parentSection = this.$store.getters['map/getDeviceByCode'](this.selectedObj.parentCode);
|
||||||
|
this.formModelSectionName = parentSection.name + this.selectedObj.name;
|
||||||
|
} else {
|
||||||
this.formModelSectionName = this.selectedObj.name;
|
this.formModelSectionName = this.selectedObj.name;
|
||||||
// this.$store.state.map.activeTrainList.forEach(trainCode => {
|
|
||||||
// const trainModel = this.$store.getters['map/getDeviceByCode'](trainCode);
|
|
||||||
// if (trainModel && trainModel.physicalCode === this.selectedObj.code) {
|
|
||||||
// this.formModelTripNum = trainModel.serviceNumber + trainModel.destinationCode + (trainModel.tripNumber.substring(1));
|
|
||||||
// this.trainModel = trainModel;
|
|
||||||
// this.formModelNewTrip = '';
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
}
|
}
|
||||||
|
this.trainOperateType = '';
|
||||||
|
this.$store.state.map.activeTrainList.forEach(trainCode => {
|
||||||
|
const trainModel = this.$store.getters['map/getDeviceByCode'](trainCode);
|
||||||
|
if (trainModel && trainModel.sectionCode === this.selectedObj.code) {
|
||||||
|
this.formModelTripNum = trainModel.destinationCode + (trainModel.serviceNumber.substring(1)) + (trainModel.tripNumber.substring(1));
|
||||||
|
this.trainModel = trainModel;
|
||||||
|
this.formModelNewTrip = '';
|
||||||
|
}
|
||||||
|
});
|
||||||
},
|
},
|
||||||
pushTempData(list) {
|
pushTempData(list) {
|
||||||
this.tempData = [];
|
this.tempData = [];
|
||||||
@ -964,44 +1113,63 @@ export default {
|
|||||||
this.tempData.push(el);
|
this.tempData.push(el);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
changeShowMode(flag) {
|
changeShowMode(type) {
|
||||||
if (this.$store.state.training.prdType === '01') {
|
if (this.$store.state.training.prdType === '01') {
|
||||||
this.trainModel = {};
|
this.trainModel = {};
|
||||||
this.formModelTripNum = '';
|
this.formModelTripNum = '';
|
||||||
this.formModelSectionName = '';
|
this.formModelSectionName = '';
|
||||||
this.formModelNewTrip = '';
|
this.formModelNewTrip = '';
|
||||||
this.trainOperationShow = flag;
|
this.formModelNewGroup = '';
|
||||||
|
this.trainOperateType = '';
|
||||||
|
this.operationType = type;
|
||||||
|
this.formModelNewSection = '';
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
trainCommit() {
|
trainCommit() {
|
||||||
if (this.formModelNewTrip && this.formModelNewTrip.length === 9) {
|
const params = {};
|
||||||
const params = {
|
|
||||||
groupNumber: this.trainModel.groupNumber,
|
|
||||||
tripNumber: this.formModelNewTrip.slice(6, 9),
|
|
||||||
serviceNumber: this.formModelNewTrip.slice(3, 6)
|
|
||||||
};
|
|
||||||
const step = {
|
const step = {
|
||||||
over: true,
|
over: true
|
||||||
cmdType: CMD.TrainWindow.CMD_TRAIN_SET_PLAN,
|
|
||||||
operation: OperationEvent.Train.setPlanTrainId.menu.operation,
|
|
||||||
param: params
|
|
||||||
};
|
};
|
||||||
|
if (this.trainOperateType === 'update') {
|
||||||
|
params.groupNumber = this.trainModel.groupNumber;
|
||||||
|
params.serviceNumber = '0' + this.formModelNewTrip.slice(3, 5);
|
||||||
|
params.tripNumber = '0' + this.formModelNewTrip.slice(5, 7);
|
||||||
|
step.cmdType = CMD.TrainWindow.CMD_TRAIN_SET_PLAN;
|
||||||
|
step.operation = OperationEvent.Train.setPlanTrainId.menu.operation;
|
||||||
|
step.param = params;
|
||||||
|
} else if (this.trainOperateType === 'create') {
|
||||||
|
params.sectionCode = this.selectedObj.code;
|
||||||
|
params.groupNumber = this.formModelNewGroup;
|
||||||
|
params.dn = this.formModelNewTrip.slice(0, 3);
|
||||||
|
params.sn = '0' + this.formModelNewTrip.slice(3, 5);
|
||||||
|
params.tn = '0' + this.formModelNewTrip.slice(5, 7);
|
||||||
|
step.cmdType = CMD.TrainWindow.CMD_TRAIN_ADD_TRAIN_TRACE;
|
||||||
|
step.operation = OperationEvent.Train.addTrainId.menu.operation;
|
||||||
|
step.param = params;
|
||||||
|
} else if (this.trainOperateType === 'delete') {
|
||||||
|
params.groupNumber = this.trainModel.groupNumber;
|
||||||
|
step.cmdType = CMD.TrainWindow.CMD_TRAIN_REMOVE_TRAIN_TRACE;
|
||||||
|
step.operation = OperationEvent.Train.delTrainId.menu.operation;
|
||||||
|
step.param = params;
|
||||||
|
} else if (this.trainOperateType === 'move') {
|
||||||
|
params.groupNumber = this.trainModel.groupNumber;
|
||||||
|
params.sectionCode = this.formModelNewSection;
|
||||||
|
step.cmdType = CMD.TrainWindow.CMD_TRAIN_MOVE_TRAIN_TRACE;
|
||||||
|
step.operation = OperationEvent.Train.moveTrainId.menu.operation;
|
||||||
|
step.param = params;
|
||||||
|
}
|
||||||
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
|
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
|
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
|
||||||
this.changeShowMode(true);
|
this.changeShowMode('train');
|
||||||
}
|
}
|
||||||
}).catch((error) => {
|
}).catch((error) => {
|
||||||
console.error(error);
|
|
||||||
if (error && error.code == '10017') {
|
if (error && error.code == '10017') {
|
||||||
EventBus.$emit('sendMsg', {message: error.message});
|
EventBus.$emit('sendMsg', {message: error.message});
|
||||||
} else {
|
} else {
|
||||||
EventBus.$emit('sendMsg', {message: '命令执行失败!'});
|
EventBus.$emit('sendMsg', {message: '命令执行失败!'});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
|
||||||
EventBus.$emit('sendMsg', {message: '请输入正确的车次号'});
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
stationToCommand() {
|
stationToCommand() {
|
||||||
const step = {
|
const step = {
|
||||||
@ -1028,7 +1196,7 @@ export default {
|
|||||||
this.operate = row.operation;
|
this.operate = row.operation;
|
||||||
step.operation = this.operate;
|
step.operation = this.operate;
|
||||||
step.start = true;
|
step.start = true;
|
||||||
step.param = {'standCode':this.selectedObj.code};
|
step.param = row.param || {'standCode':this.selectedObj.code};
|
||||||
this.cmdType = row.cmdType;
|
this.cmdType = row.cmdType;
|
||||||
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
|
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
@ -1037,7 +1205,6 @@ export default {
|
|||||||
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
|
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
|
||||||
}
|
}
|
||||||
}).catch((error) => {
|
}).catch((error) => {
|
||||||
console.error(error);
|
|
||||||
if (error && error.code == '10017') {
|
if (error && error.code == '10017') {
|
||||||
EventBus.$emit('sendMsg', {message: error.message});
|
EventBus.$emit('sendMsg', {message: error.message});
|
||||||
} else {
|
} else {
|
||||||
@ -1063,11 +1230,24 @@ export default {
|
|||||||
row.cmdType = CMD.Stand.CMD_STAND_SET_JUMP_STOP;
|
row.cmdType = CMD.Stand.CMD_STAND_SET_JUMP_STOP;
|
||||||
this.stationCommand(row);
|
this.stationCommand(row);
|
||||||
},
|
},
|
||||||
|
stationAllJumpTrain() {
|
||||||
|
const list = this.stationStandList.filter(el => el.right == this.selectedObj.right);
|
||||||
|
const index = list.findIndex(el => el.code == this.selectedObj.code);
|
||||||
|
let lists = list.slice(0, index);
|
||||||
|
if (this.selectedObj.right) {
|
||||||
|
lists = list.slice(index + 1, 9999);
|
||||||
|
}
|
||||||
|
const row = {};
|
||||||
|
row.operation = OperationEvent.StationStand.setBulkBuckleTrain.menuButton.operation;
|
||||||
|
row.cmdType = CMD.Stand.CMD_STAND_SET_HOLD_TRAIN_ALL;
|
||||||
|
row.param = { 'standCodes': lists.map(el => el.code) };
|
||||||
|
this.stationCommand(row);
|
||||||
|
},
|
||||||
initMenus() {
|
initMenus() {
|
||||||
this.basicParamList = this.$store.state.training.prdType === '01' ? [
|
this.basicParamList = this.$store.state.training.prdType === '01' ? [
|
||||||
{ name: '自排全开', commandTip: '自排全开', cmdType: CMD.Station.CMD_STATION_OPEN_AUTO_SETTING, operate: OperationEvent.Station.atsAutoControlALL.menu, fillStationCode: true, disabledCb: (stationControl) => ['Center', 'None'].includes(stationControl.controlMode) },
|
{ name: '自排全开', commandTip: '自排全开', cmdType: CMD.Station.CMD_STATION_OPEN_AUTO_SETTING, operate: OperationEvent.Station.atsAutoControlALL.menu, fillStationCode: true, disabledCb: (stationControl) => ['Center', 'None'].includes(stationControl.controlMode) },
|
||||||
{ name: '自排全关', commandTip: '自排全关', cmdType: CMD.Station.CMD_STATION_CLOSE_AUTO_SETTING, operate: OperationEvent.Station.humanControlALL.menu, fillStationCode: true, disabledCb: (stationControl) => ['Center', 'None'].includes(stationControl.controlMode) },
|
{ name: '自排全关', commandTip: '自排全关', cmdType: CMD.Station.CMD_STATION_CLOSE_AUTO_SETTING, operate: OperationEvent.Station.humanControlALL.menu, fillStationCode: true, disabledCb: (stationControl) => ['Center', 'None'].includes(stationControl.controlMode) },
|
||||||
{ name: '释放指令', commandTip: '释放指令', cmdType: '', operate: '', fillStationCode: true, disabledCb: (stationControl) => true },
|
{ name: '释放指令', commandTip: '释放指令', cmdType: CMD.Station.CMD_STATION_RELEASE, operate: OperationEvent.Station.stationRelease.menuButton, securityCommand: true, fillStationCode: true, disabledCb: (stationControl) => ['Center', 'None'].includes(stationControl.controlMode) },
|
||||||
{ name: '重启令解', commandTip: '重启令解', cmdType: CMD.Station.CMD_STATION_RESTART, operate: OperationEvent.Station.stationRestart.menuButton, securityCommand: true, fillStationCode: true, disabledCb: (stationControl) => ['Center', 'None'].includes(stationControl.controlMode) },
|
{ name: '重启令解', commandTip: '重启令解', cmdType: CMD.Station.CMD_STATION_RESTART, operate: OperationEvent.Station.stationRestart.menuButton, securityCommand: true, fillStationCode: true, disabledCb: (stationControl) => ['Center', 'None'].includes(stationControl.controlMode) },
|
||||||
{ name: '追踪全开', commandTip: '追踪全开', cmdType: CMD.Station.CMD_STATION_SET_CI_AUTO_TRIGGER, operate: OperationEvent.Station.setAutoTrigger.menu, fillStationCode: true, disabledCb: (stationControl) => ['Center', 'None'].includes(stationControl.controlMode) },
|
{ name: '追踪全开', commandTip: '追踪全开', cmdType: CMD.Station.CMD_STATION_SET_CI_AUTO_TRIGGER, operate: OperationEvent.Station.setAutoTrigger.menu, fillStationCode: true, disabledCb: (stationControl) => ['Center', 'None'].includes(stationControl.controlMode) },
|
||||||
{ name: '追踪全关', commandTip: '追踪全关', cmdType: CMD.Station.CMD_STATION_CANCEL_CI_AUTO_TRIGGER, operate: OperationEvent.Station.cancelAutoTrigger.menu, fillStationCode: true, disabledCb: (stationControl) => ['Center', 'None'].includes(stationControl.controlMode) },
|
{ name: '追踪全关', commandTip: '追踪全关', cmdType: CMD.Station.CMD_STATION_CANCEL_CI_AUTO_TRIGGER, operate: OperationEvent.Station.cancelAutoTrigger.menu, fillStationCode: true, disabledCb: (stationControl) => ['Center', 'None'].includes(stationControl.controlMode) },
|
||||||
@ -1106,13 +1286,31 @@ export default {
|
|||||||
{ name: '解封岔芯', commandTip: '解封岔芯', cmdType: CMD.Section.CMD_SECTION_UNBLOCK, operate: OperationEvent.Section.unlock.menuButton, securityCommand: true, disabledCb: (stationControl) => !this.modeMatch },
|
{ name: '解封岔芯', commandTip: '解封岔芯', cmdType: CMD.Section.CMD_SECTION_UNBLOCK, operate: OperationEvent.Section.unlock.menuButton, securityCommand: true, disabledCb: (stationControl) => !this.modeMatch },
|
||||||
{ name: '强解岔芯', commandTip: '强解岔芯', cmdType: CMD.Section.CMD_SECTION_FAULT_UNLOCK, operate: OperationEvent.Section.fault.menuButton, securityCommand: true, disabledCb: (stationControl) => !this.modeMatch }
|
{ name: '强解岔芯', commandTip: '强解岔芯', cmdType: CMD.Section.CMD_SECTION_FAULT_UNLOCK, operate: OperationEvent.Section.fault.menuButton, securityCommand: true, disabledCb: (stationControl) => !this.modeMatch }
|
||||||
] : [
|
] : [
|
||||||
{ name: '轨区设限', cmdType: CMD.Section.CMD_SECTION_SET_LIMIT_SPEED, operate: OperationEvent.Section.setSpeed.menuButton, securityCommand: true, disabledCb: (stationControl) => !this.modeMatch },
|
{ name: '轨区设限', cmdType: CMD.Section.CMD_SECTION_SET_LIMIT_SPEED, operate: OperationEvent.Section.setSpeed.menuButton, securityCommand: true, disabledCb: (stationControl) => !this.modeMatch, isShow: () => this.$store.state.training.prdType == '01' },
|
||||||
{ name: '轨区消限', commandTip: '取消对轨道区段的限速', cmdType: CMD.Section.CMD_SECTION_CANCEL_LIMIT_SPEED, operate: OperationEvent.Section.cancelSpeed.menuButton, securityCommand: true, disabledCb: (stationControl) => !this.modeMatch },
|
{ name: '轨区消限', commandTip: '取消对轨道区段的限速', cmdType: CMD.Section.CMD_SECTION_CANCEL_LIMIT_SPEED, operate: OperationEvent.Section.cancelSpeed.menuButton, securityCommand: true, disabledCb: (stationControl) => !this.modeMatch, isShow: () => this.$store.state.training.prdType == '01' },
|
||||||
{ name: '强行消限', commandTip: '强行取消对轨道区段的限速', cmdType: CMD.Section.CMD_SECTION_CANCEL_LIMIT_SPEED, operate: OperationEvent.Section.cancelSpeed.menuButton, securityCommand: true, disabledCb: (stationControl) => !this.modeMatch },
|
{ name: '强行消限', commandTip: '强行取消对轨道区段的限速', cmdType: CMD.Section.CMD_SECTION_CANCEL_LIMIT_SPEED, operate: OperationEvent.Section.cancelSpeed.menuButton, securityCommand: true, disabledCb: (stationControl) => !this.modeMatch, isShow: () => this.$store.state.training.prdType == '01' },
|
||||||
{ name: '强解区段', commandTip: '解锁进路中的轨道区段', cmdType: CMD.Section.CMD_SECTION_FAULT_UNLOCK, operate: OperationEvent.Section.fault.menuButton, securityCommand: true, disabledCb: (stationControl) => !this.modeMatch },
|
{ name: '强解区段', commandTip: '解锁进路中的轨道区段', cmdType: CMD.Section.CMD_SECTION_FAULT_UNLOCK, operate: OperationEvent.Section.fault.menuButton, securityCommand: true, disabledCb: (stationControl) => !this.modeMatch, isShow: () => this.$store.state.training.prdType == '01' },
|
||||||
{ name: '预复位', commandTip: '预重置计轴区段', cmdType: CMD.Section.CMD_SECTION_AXIS_PRE_RESET, operate: OperationEvent.Section.axlePreReset.menuButton, securityCommand: true, disabledCb: (stationControl) => !this.modeMatch },
|
{ name: '预复位', commandTip: '预重置计轴区段', cmdType: CMD.Section.CMD_SECTION_AXIS_PRE_RESET, operate: OperationEvent.Section.axlePreReset.menuButton, securityCommand: true, disabledCb: (stationControl) => !this.modeMatch, isShow: () => this.$store.state.training.prdType == '01' },
|
||||||
{ name: '封锁区段', commandTip: '禁止通过该轨道区段排列进路', cmdType: CMD.Section.CMD_SECTION_BLOCK, operate: OperationEvent.Section.lock.menuButton, disabledCb: (stationControl) => !this.modeMatch },
|
{ name: '封锁区段', commandTip: '禁止通过该轨道区段排列进路', cmdType: CMD.Section.CMD_SECTION_BLOCK, operate: OperationEvent.Section.lock.menuButton, disabledCb: (stationControl) => !this.modeMatch },
|
||||||
{ name: '解封区段', commandTip: '允许通过该轨道区段排列进路', cmdType: CMD.Section.CMD_SECTION_UNBLOCK, operate: OperationEvent.Section.unlock.menuButton, securityCommand: true, disabledCb: (stationControl) => !this.modeMatch }
|
{ name: '解封区段', commandTip: '允许通过该轨道区段排列进路', cmdType: CMD.Section.CMD_SECTION_UNBLOCK, operate: OperationEvent.Section.unlock.menuButton, securityCommand: true, disabledCb: (stationControl) => !this.modeMatch, isShow: () => this.$store.state.training.prdType == '01' },
|
||||||
|
|
||||||
|
{ name: '上行不折返', commandTip: '上行不折返', cmdType: CMD.Section.CMD_STAND_SET_REENTRY_STRATEGY, operate: OperationEvent.Section.setBackStrategy.menuBtnUp01, params: {val: '01'}, disabledCb: (stationControl) => !this.modeMatch, isShow: (section) => section.roadType == 'RIGHT' && section.standTrack && this.$store.state.training.prdType == '02' },
|
||||||
|
{ name: '下行不折返', commandTip: '下行不折返', cmdType: CMD.Section.CMD_STAND_SET_REENTRY_STRATEGY, operate: OperationEvent.Section.setBackStrategy.menuBtnDown01, params: {val: '01'}, disabledCb: (stationControl) => !this.modeMatch, isShow: (section) => section.roadType != 'RIGHT' && section.standTrack && this.$store.state.training.prdType == '02' },
|
||||||
|
{ name: '上行缺省折返', commandTip: '上行缺省折返', cmdType: CMD.Section.CMD_STAND_SET_REENTRY_STRATEGY, operate: OperationEvent.Section.setBackStrategy.menuBtnUp02, params: {val: '02'}, disabledCb: (stationControl) => !this.modeMatch, isShow: (section) => section.roadType == 'RIGHT' && section.standTrack && this.$store.state.training.prdType == '02' },
|
||||||
|
{ name: '下行缺省折返', commandTip: '下行缺省折返', cmdType: CMD.Section.CMD_STAND_SET_REENTRY_STRATEGY, operate: OperationEvent.Section.setBackStrategy.menuBtnDown02, params: {val: '02'}, disabledCb: (stationControl) => !this.modeMatch, isShow: (section) => section.roadType != 'RIGHT' && section.standTrack && this.$store.state.training.prdType == '02' },
|
||||||
|
{ name: '上行换端', commandTip: '上行换端', cmdType: CMD.Section.CMD_STAND_SET_REENTRY_STRATEGY, operate: OperationEvent.Section.setBackStrategy.menuBtnUp03, params: {val: '03'}, disabledCb: (stationControl) => !this.modeMatch, isShow: (section) => section.roadType == 'RIGHT' && section.standTrack && this.$store.state.training.prdType == '02' },
|
||||||
|
{ name: '下行换端', commandTip: '下行换端', cmdType: CMD.Section.CMD_STAND_SET_REENTRY_STRATEGY, operate: OperationEvent.Section.setBackStrategy.menuBtnDown03, params: {val: '03'}, disabledCb: (stationControl) => !this.modeMatch, isShow: (section) => section.roadType != 'RIGHT' && section.standTrack && this.$store.state.training.prdType == '02' },
|
||||||
|
{ name: '上行自动折返', commandTip: '上行自动折返', cmdType: CMD.Section.CMD_STAND_SET_REENTRY_STRATEGY, operate: OperationEvent.Section.setBackStrategy.menuBtnUp04, params: {val: '04'}, disabledCb: (stationControl) => !this.modeMatch, isShow: (section) => section.roadType == 'RIGHT' && section.standTrack && this.$store.state.training.prdType == '02' },
|
||||||
|
{ name: '下行自动折返', commandTip: '下行自动折返', cmdType: CMD.Section.CMD_STAND_SET_REENTRY_STRATEGY, operate: OperationEvent.Section.setBackStrategy.menuBtnDown04, params: {val: '04'}, disabledCb: (stationControl) => !this.modeMatch, isShow: (section) => section.roadType != 'RIGHT' && section.standTrack && this.$store.state.training.prdType == '02' },
|
||||||
|
{ name: '车站发车', commandTip: '车站发车', cmdType: CMD.Section.CMD_STAND_EARLY_DEPART, operate: OperationEvent.Section.earlyDeparture.menuBtn, disabledCb: (stationControl) => !this.modeMatch, isShow: (section) => section.standTrack && this.$store.state.training.prdType == '02' },
|
||||||
|
|
||||||
|
{ name: '折返 DTO', commandTip: '折返 DTO', cmdType: CMD.Section.CMD_SECTION_1, operate: OperationEvent.Section.turnBackDTO.menuButton, disabledCb: (stationControl) => !this.modeMatch, isShow: () => this.$store.state.training.prdType == '01' },
|
||||||
|
{ name: '取消折返', commandTip: '取消折返', cmdType: CMD.Section.CMD_SECTION_2, operate: OperationEvent.Section.CancelTurnBack.menuButton, disabledCb: (stationControl) => !this.modeMatch, isShow: () => this.$store.state.training.prdType == '01' },
|
||||||
|
{ name: '自动折返', commandTip: '自动折返', cmdType: CMD.Section.CMD_SECTION_3, operate: OperationEvent.Section.AutoTurnBack.menuButton, disabledCb: (stationControl) => !this.modeMatch, isShow: () => this.$store.state.training.prdType == '01' },
|
||||||
|
{ name: '换上至下', commandTip: '换上至下', cmdType: CMD.Section.CMD_SECTION_4, operate: OperationEvent.Section.PutUpTheDown.menuButton, disabledCb: (stationControl) => !this.modeMatch, isShow: (section) => section.roadType == 'RIGHT' && this.$store.state.training.prdType == '01' },
|
||||||
|
{ name: '换下至上', commandTip: '换下至上', cmdType: CMD.Section.CMD_SECTION_5, operate: OperationEvent.Section.PutDownTheUp.menuButton, disabledCb: (stationControl) => !this.modeMatch, isShow: (section) => section.roadType != 'RIGHT' && this.$store.state.training.prdType == '01' },
|
||||||
|
{ name: '终止站停-上', commandTip: '上行终止站停', cmdType: CMD.Section.CMD_SECTION_6, operate: OperationEvent.Section.PutUpStop.menuButton, disabledCb: (stationControl) => !this.modeMatch, isShow: (section) => section.roadType == 'RIGHT' && this.$store.state.training.prdType == '01' },
|
||||||
|
{ name: '终止站停-下', commandTip: '下行终止站停', cmdType: CMD.Section.CMD_SECTION_7, operate: OperationEvent.Section.PutDownStop.menuButton, disabledCb: (stationControl) => !this.modeMatch, isShow: (section) => section.roadType != 'RIGHT' && this.$store.state.training.prdType == '01' }
|
||||||
];
|
];
|
||||||
this.switchParamList = [
|
this.switchParamList = [
|
||||||
{ name: '岔区设限', cmdType: CMD.Switch.CMD_SWITCH_SET_LIMIT_SPEED, operate: OperationEvent.Switch.setSpeed.menuButton, securityCommand: true, disabledCb: (stationControl) => !this.modeMatch},
|
{ name: '岔区设限', cmdType: CMD.Switch.CMD_SWITCH_SET_LIMIT_SPEED, operate: OperationEvent.Switch.setSpeed.menuButton, securityCommand: true, disabledCb: (stationControl) => !this.modeMatch},
|
||||||
@ -1144,7 +1342,7 @@ export default {
|
|||||||
{ name: '车队单开', commandTip: '对单架信号机开启车队模式,主要是信号机不关闭的情况下排列所有进路', cmdType: CMD.Signal.CMD_SIGNAL_SET_CI_AUTO, operate: OperationEvent.Signal.setAutoInterlock.menuButton, disabledCb: (stationControl) => !this.modeMatch },
|
{ name: '车队单开', commandTip: '对单架信号机开启车队模式,主要是信号机不关闭的情况下排列所有进路', cmdType: CMD.Signal.CMD_SIGNAL_SET_CI_AUTO, operate: OperationEvent.Signal.setAutoInterlock.menuButton, disabledCb: (stationControl) => !this.modeMatch },
|
||||||
{ name: '车队单关', commandTip: '对单架信号机关闭车队模式', cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_CI_AUTO, operate: OperationEvent.Signal.cancelAutoInterlock.menuButton, disabledCb: (stationControl) => !this.modeMatch },
|
{ name: '车队单关', commandTip: '对单架信号机关闭车队模式', cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_CI_AUTO, operate: OperationEvent.Signal.cancelAutoInterlock.menuButton, disabledCb: (stationControl) => !this.modeMatch },
|
||||||
|
|
||||||
{ name: '设置保护', cmdType: '', operate: OperationEvent.Signal.reopenSignal.menuButton, disabledCb: (stationControl) => !this.modeMatch },
|
{ name: '设置保护', commandTip: '设置保护', cmdType: CMD.Signal.CMD_SIGNAL_SET_OVERLAP, operate: OperationEvent.Signal.reopenSignal.menuButton, disabledCb: (stationControl) => !this.modeMatch },
|
||||||
{ name: '未评限区', cmdType: '', operate: OperationEvent.Signal.reopenSignal.menuButton, securityCommand: true, disabledCb: (stationControl) => !this.modeMatch }
|
{ name: '未评限区', cmdType: '', operate: OperationEvent.Signal.reopenSignal.menuButton, securityCommand: true, disabledCb: (stationControl) => !this.modeMatch }
|
||||||
] : [
|
] : [
|
||||||
{ name: '关闭信号', commandTip: '设置信号机为关闭状态', cmdType: CMD.Signal.CMD_SIGNAL_CLOSE_SIGNAL, operate: OperationEvent.Signal.signalClose.menuButton, disabledCb: (stationControl) => !this.modeMatch },
|
{ name: '关闭信号', commandTip: '设置信号机为关闭状态', cmdType: CMD.Signal.CMD_SIGNAL_CLOSE_SIGNAL, operate: OperationEvent.Signal.signalClose.menuButton, disabledCb: (stationControl) => !this.modeMatch },
|
||||||
@ -1160,13 +1358,20 @@ export default {
|
|||||||
{ name: '开放引导', commandTip: '开放引导信号', cmdType: CMD.Signal.CMD_SIGNAL_ROUTE_GUIDE, operate: OperationEvent.Signal.guide.menuButton, securityCommand: true, disabledCb: (stationControl) => !this.modeMatch },
|
{ name: '开放引导', commandTip: '开放引导信号', cmdType: CMD.Signal.CMD_SIGNAL_ROUTE_GUIDE, operate: OperationEvent.Signal.guide.menuButton, securityCommand: true, disabledCb: (stationControl) => !this.modeMatch },
|
||||||
{ name: '车队单开', commandTip: '对单架信号机开启车队模式,主要是信号机不关闭的情况下排列所有进路', cmdType: CMD.Signal.CMD_SIGNAL_SET_CI_AUTO, operate: OperationEvent.Signal.reopenSignal.menuButton, disabledCb: (stationControl) => !this.modeMatch },
|
{ name: '车队单开', commandTip: '对单架信号机开启车队模式,主要是信号机不关闭的情况下排列所有进路', cmdType: CMD.Signal.CMD_SIGNAL_SET_CI_AUTO, operate: OperationEvent.Signal.reopenSignal.menuButton, disabledCb: (stationControl) => !this.modeMatch },
|
||||||
{ name: '车队单关', commandTip: '对单架信号机关闭车队模式', cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_CI_AUTO, operate: OperationEvent.Signal.reopenSignal.menuButton, disabledCb: (stationControl) => !this.modeMatch },
|
{ name: '车队单关', commandTip: '对单架信号机关闭车队模式', cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_CI_AUTO, operate: OperationEvent.Signal.reopenSignal.menuButton, disabledCb: (stationControl) => !this.modeMatch },
|
||||||
{ name: '设置保护', cmdType: '', operate: OperationEvent.Signal.reopenSignal.menuButton, disabledCb: (stationControl) => !this.modeMatch },
|
{ name: '设置保护', commandTip: '设置保护', cmdType: CMD.Signal.CMD_SIGNAL_SET_OVERLAP, operate: OperationEvent.Signal.setOverlap.menuButton, disabledCb: (stationControl) => !this.modeMatch },
|
||||||
{ name: '未评限区', cmdType: '', operate: OperationEvent.Signal.reopenSignal.menuButton, securityCommand: true, disabledCb: (stationControl) => !this.modeMatch }
|
{ name: '未评限区', cmdType: '', operate: OperationEvent.Signal.reopenSignal.menuButton, securityCommand: true, disabledCb: (stationControl) => !this.modeMatch }
|
||||||
];
|
];
|
||||||
this.stationParamList = this.$store.state.training.prdType === '01' ? [
|
this.stationParamList = this.$store.state.training.prdType === '01' ? [
|
||||||
{ name: '关站信号', commandTip: '封锁车站所有信号机', cmdType: CMD.Station.CMD_STATION_CLOSE_ALLSIGNAL, operate: OperationEvent.Station.closeAllSignal.menuButton, disabledCb: (stationControl) => !this.modeMatch || !['Local'].includes(stationControl.controlMode) }
|
{ name: '关站信号', commandTip: '封锁车站所有信号机', cmdType: CMD.Station.CMD_STATION_CLOSE_ALLSIGNAL, operate: OperationEvent.Station.closeAllSignal.menuButton, disabledCb: (stationControl) => !this.modeMatch || !['Local'].includes(stationControl.controlMode) }
|
||||||
] : [
|
] : [
|
||||||
{ name: '关站信号', commandTip: '封锁车站所有信号机', cmdType: CMD.Station.CMD_STATION_CLOSE_ALLSIGNAL, operate: OperationEvent.Station.closeAllSignal.menuButton, disabledCb: (stationControl) => !this.modeMatch || !['Center'].includes(stationControl.controlMode) },
|
{ name: '关站信号', commandTip: '封锁车站所有信号机', cmdType: CMD.Station.CMD_STATION_CLOSE_ALLSIGNAL, operate: OperationEvent.Station.closeAllSignal.menuButton, disabledCb: (stationControl) => !this.modeMatch || !['Center'].includes(stationControl.controlMode) },
|
||||||
|
|
||||||
|
{ name: '关区信号', commandTip: '关区信号', cmdType: CMD.Station.CMD_STATION_CIAREA_CLOSE_ALLSIGNAL, operate: OperationEvent.Station.ciAreaCloseAllSignal.menuButton, disabledCb: (stationControl) => !this.modeMatch || !['Center'].includes(stationControl.controlMode), isShow: (ciStation) => !ciStation },
|
||||||
|
{ name: '自排全开', commandTip: '自排全开', cmdType: CMD.Station.CMD_STATION_OPEN_AUTO_SETTING, operate: OperationEvent.Station.atsAutoControlALL.menuButton, disabledCb: (stationControl) => !this.modeMatch || !['Center'].includes(stationControl.controlMode), isShow: (ciStation) => !ciStation },
|
||||||
|
{ name: '自排全关', commandTip: '自排全关', cmdType: CMD.Station.CMD_STATION_CLOSE_AUTO_SETTING, operate: OperationEvent.Station.humanControlALL.menuButton, disabledCb: (stationControl) => !this.modeMatch || !['Center'].includes(stationControl.controlMode), isShow: (ciStation) => !ciStation },
|
||||||
|
{ name: '追踪全开', commandTip: '追踪全开', cmdType: CMD.Station.CMD_STATION_SET_CI_AUTO_TRIGGER, operate: OperationEvent.Station.setAutoTrigger.menuButton, disabledCb: (stationControl) => !this.modeMatch || !['Center'].includes(stationControl.controlMode), isShow: (ciStation) => !ciStation },
|
||||||
|
{ name: '追踪全关', commandTip: '追踪全关', cmdType: CMD.Station.CMD_STATION_CANCEL_CI_AUTO_TRIGGER, operate: OperationEvent.Station.cancelAutoTrigger.menuButton, disabledCb: (stationControl) => !this.modeMatch || !['Center'].includes(stationControl.controlMode), isShow: (ciStation) => !ciStation },
|
||||||
|
|
||||||
{ name: '接收控制', commandTip: '接收控制权', cmdType: CMD.ControlConvertMenu.CMD_CM_RECEIVE_CONTROL, operate: OperationEvent.StationControl.requestStationControl.menuButton, disabledCb: (stationControl) => ['Center'].includes(stationControl.controlMode) },
|
{ name: '接收控制', commandTip: '接收控制权', cmdType: CMD.ControlConvertMenu.CMD_CM_RECEIVE_CONTROL, operate: OperationEvent.StationControl.requestStationControl.menuButton, disabledCb: (stationControl) => ['Center'].includes(stationControl.controlMode) },
|
||||||
{ name: '交出控制', commandTip: '交出控制权', cmdType: CMD.ControlConvertMenu.CMD_CM_SURRENDER_CONTROL, operate: OperationEvent.StationControl.requestCentralControl.menuButton, disabledCb: (stationControl) => ['Local', 'None'].includes(stationControl.controlMode) }
|
{ name: '交出控制', commandTip: '交出控制权', cmdType: CMD.ControlConvertMenu.CMD_CM_SURRENDER_CONTROL, operate: OperationEvent.StationControl.requestCentralControl.menuButton, disabledCb: (stationControl) => ['Local', 'None'].includes(stationControl.controlMode) }
|
||||||
];
|
];
|
||||||
@ -1451,13 +1656,19 @@ export default {
|
|||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
}
|
}
|
||||||
.station_updateStatus{}
|
|
||||||
.station_command{
|
.station_command{
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
.station_close{
|
.station_close{
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
.moni_input{
|
||||||
|
border-top: 2px solid #585858;
|
||||||
|
border-left: 2px solid #585858;
|
||||||
|
border-right: 2px solid #F9F9F9;
|
||||||
|
border-bottom: 2px solid #F9F9F9;
|
||||||
|
background: #D4D0C8;
|
||||||
|
}
|
||||||
.stationButton{
|
.stationButton{
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
width: 100px;
|
width: 100px;
|
||||||
|
@ -171,6 +171,13 @@ const OrgDetail = () => import('@/views/system/companyManage/orgDetail');
|
|||||||
const VoiceTraining = () => import('@/views/system/voiceTraining/index');
|
const VoiceTraining = () => import('@/views/system/voiceTraining/index');
|
||||||
const SceneTrainingResult = () => import('@/views/drts/scene/trainingResult');
|
const SceneTrainingResult = () => import('@/views/drts/scene/trainingResult');
|
||||||
const SceneVoiceTraining = () => import('@/views/drts/scene/voiceTraining');
|
const SceneVoiceTraining = () => import('@/views/drts/scene/voiceTraining');
|
||||||
|
const DrawingMange = () => import('@/views/system/drawingMange/index');
|
||||||
|
|
||||||
|
const Ueditor = () => import('@/views/editor/index');
|
||||||
|
const UeditorList = () => import('@/views/editor/list');
|
||||||
|
const UeditorDraftList = () => import('@/views/editor/listDraft');
|
||||||
|
|
||||||
|
const UploadPdfList = () => import('@/views/uploadPdf/list');
|
||||||
|
|
||||||
// import { GenerateRouteProjectList } from '@/scripts/ProjectConfig';
|
// import { GenerateRouteProjectList } from '@/scripts/ProjectConfig';
|
||||||
// import { getSessionStorage } from '@/utils/auth';
|
// import { getSessionStorage } from '@/utils/auth';
|
||||||
@ -1122,7 +1129,15 @@ export const asyncRouter = [
|
|||||||
meta: {
|
meta: {
|
||||||
i18n: 'router.voiceTraining'
|
i18n: 'router.voiceTraining'
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'drawingMange',
|
||||||
|
component: DrawingMange,
|
||||||
|
meta: {
|
||||||
|
i18n: 'router.drawingMange'
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// {
|
// {
|
||||||
// path: 'deviceManage',
|
// path: 'deviceManage',
|
||||||
// component: DeviceManage,
|
// component: DeviceManage,
|
||||||
@ -1132,6 +1147,54 @@ export const asyncRouter = [
|
|||||||
// }
|
// }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: '/editor',
|
||||||
|
component: Layout,
|
||||||
|
meta: {
|
||||||
|
i18n: 'router.newDesignEditor',
|
||||||
|
roles: [admin, user]
|
||||||
|
},
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: 'list',
|
||||||
|
component: UeditorList,
|
||||||
|
meta: {
|
||||||
|
i18n: 'router.newDesignEditorList'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'listDraft',
|
||||||
|
component: UeditorDraftList,
|
||||||
|
meta: {
|
||||||
|
i18n: 'router.newDesignDraftEditorList'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '',
|
||||||
|
component: Ueditor,
|
||||||
|
meta: {
|
||||||
|
i18n: 'router.newDesignEditor'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/uploading',
|
||||||
|
component: Layout,
|
||||||
|
meta: {
|
||||||
|
i18n: 'router.uploadPdf',
|
||||||
|
roles: [admin, user]
|
||||||
|
},
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: 'list',
|
||||||
|
component: UploadPdfList,
|
||||||
|
meta: {
|
||||||
|
i18n: 'router.uploadPdf'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{ // 新个人地图
|
{ // 新个人地图
|
||||||
path: '/design',
|
path: '/design',
|
||||||
component: Layout,
|
component: Layout,
|
||||||
|
@ -15,6 +15,7 @@ import FaviconNty from '@/assets/icon/favicon_nty.png';
|
|||||||
import FaviconBjd from '@/assets/icon/favicon_bjd.png';
|
import FaviconBjd from '@/assets/icon/favicon_bjd.png';
|
||||||
import FaviconSdy from '@/assets/icon/favicon_jdy.png';
|
import FaviconSdy from '@/assets/icon/favicon_jdy.png';
|
||||||
import FaviconCgy from '@/assets/icon/favicon_cgy.png';
|
import FaviconCgy from '@/assets/icon/favicon_cgy.png';
|
||||||
|
import FaviconZzww from '@/assets/icon/favicon_zzww.png';
|
||||||
import Link_Bxkc from '@/assets/icon/link_bxkc.png';
|
import Link_Bxkc from '@/assets/icon/link_bxkc.png';
|
||||||
import Link_Crsc from '@/assets/icon/link_crsc.png';
|
import Link_Crsc from '@/assets/icon/link_crsc.png';
|
||||||
import Link_Hls from '@/assets/icon/link_hls.png';
|
import Link_Hls from '@/assets/icon/link_hls.png';
|
||||||
@ -33,6 +34,16 @@ export const loginInfo = {
|
|||||||
navigationMarginLeft: '60px',
|
navigationMarginLeft: '60px',
|
||||||
systemType: '013'
|
systemType: '013'
|
||||||
},
|
},
|
||||||
|
zzww: {
|
||||||
|
title: '共赢列车仿真驾驶系统',
|
||||||
|
loginPath: '/login?project=zzww',
|
||||||
|
loginParam: 'ZZWW',
|
||||||
|
loginTitle: '空串',
|
||||||
|
logoWidth: '140px',
|
||||||
|
navigationLogoWidth: '120px',
|
||||||
|
navigationMarginLeft: '140px',
|
||||||
|
systemType: '011'
|
||||||
|
},
|
||||||
bjd: {
|
bjd: {
|
||||||
title: '城市轨道交通列车运行智慧辅助系统',
|
title: '城市轨道交通列车运行智慧辅助系统',
|
||||||
loginPath: '/login?project=bjd',
|
loginPath: '/login?project=bjd',
|
||||||
@ -419,6 +430,7 @@ export const loginInfo = {
|
|||||||
|
|
||||||
export const ProjectIcon = {
|
export const ProjectIcon = {
|
||||||
xty: FaviconXty,
|
xty: FaviconXty,
|
||||||
|
zzww: FaviconZzww,
|
||||||
login: Favicon,
|
login: Favicon,
|
||||||
design: Favicon,
|
design: Favicon,
|
||||||
designxty: FaviconXty,
|
designxty: FaviconXty,
|
||||||
@ -462,6 +474,7 @@ export const ProjectCode = {
|
|||||||
design: 'DEFAULT',
|
design: 'DEFAULT',
|
||||||
xty: 'XTY',
|
xty: 'XTY',
|
||||||
designxty: 'XTY',
|
designxty: 'XTY',
|
||||||
|
zzww: 'ZZWW',
|
||||||
gzb: 'GZB',
|
gzb: 'GZB',
|
||||||
designgzb: 'GZB',
|
designgzb: 'GZB',
|
||||||
heb: 'HEB',
|
heb: 'HEB',
|
||||||
@ -485,12 +498,12 @@ export const ProjectCode = {
|
|||||||
designcgy: 'CGY'
|
designcgy: 'CGY'
|
||||||
};
|
};
|
||||||
export const BottomColumnOnlyConInfo = ['heb', 'designheb', 'jyd', 'designjyd', 'tky', 'designtky', 'bxkc', 'designbxkc', 'crsc', 'designcrsc', 'hls', 'designhls', 'hyd', 'designhyd', 'cgy', 'designcgy']; // 底部栏仅展示公司信息不展示备案号
|
export const BottomColumnOnlyConInfo = ['heb', 'designheb', 'jyd', 'designjyd', 'tky', 'designtky', 'bxkc', 'designbxkc', 'crsc', 'designcrsc', 'hls', 'designhls', 'hyd', 'designhyd', 'cgy', 'designcgy']; // 底部栏仅展示公司信息不展示备案号
|
||||||
export const GetMapListByProjectList = ['xty', 'designxty', 'gzb', 'designgzb', 'xadt', 'designxadt', 'heb', 'designheb', 'designdrts', 'drts', 'wjls', 'nty', 'designnty', 'sdy', 'designsdy', 'ntyc', 'designntyc', 'ntyl', 'designntyl', 'designbjd', 'cgy', 'designcgy']; // 实训设计平台通过项目code获取地图列表的项目
|
export const GetMapListByProjectList = ['xty', 'designxty', 'gzb', 'designgzb', 'xadt', 'designxadt', 'heb', 'designheb', 'designdrts', 'drts', 'wjls', 'nty', 'designnty', 'sdy', 'designsdy', 'ntyc', 'designntyc', 'ntyl', 'designntyl', 'designbjd', 'cgy', 'designcgy', 'zzww']; // 实训设计平台通过项目code获取地图列表的项目
|
||||||
export const CaseHideProjectList = ['heb', 'designheb', 'cgy', 'designcgy']; // 案例展示隐藏的项目
|
export const CaseHideProjectList = ['heb', 'designheb', 'cgy', 'designcgy']; // 案例展示隐藏的项目
|
||||||
export const VersionBaseNoShow = ['heb', 'designheb', 'hls', 'designhls', 'drts', 'wjls', 'hyd', 'designhyd', 'cgy', 'designcgy']; // 登录页右下角版本开发基于不展示
|
export const VersionBaseNoShow = ['heb', 'designheb', 'hls', 'designhls', 'drts', 'wjls', 'hyd', 'designhyd', 'cgy', 'designcgy']; // 登录页右下角版本开发基于不展示
|
||||||
export const MainBodyNoShow = ['heb', 'designheb', 'jyd', 'designjyd', 'tky', 'designtky', 'bxkc', 'designbxkc', 'crsc', 'designcrsc', 'hls', 'designhls', 'hyd', 'designhyd', 'cgy', 'designcgy']; // 登录页右下角主体不展示
|
export const MainBodyNoShow = ['heb', 'designheb', 'jyd', 'designjyd', 'tky', 'designtky', 'bxkc', 'designbxkc', 'crsc', 'designcrsc', 'hls', 'designhls', 'hyd', 'designhyd', 'cgy', 'designcgy']; // 登录页右下角主体不展示
|
||||||
export const ProjectLoginStyleList = ['gzb', 'designgzb', 'xty', 'designxty', 'xadt', 'designxadt', 'tky', 'designtky', 'jyd', 'designjyd', 'bxkc', 'designbxkc',
|
export const ProjectLoginStyleList = ['gzb', 'designgzb', 'xty', 'designxty', 'xadt', 'designxadt', 'tky', 'designtky', 'jyd', 'designjyd', 'bxkc', 'designbxkc',
|
||||||
'crsc', 'designcrsc', 'hls', 'designhls', 'drts', 'wjls', 'hyd', 'designhyd', 'nty', 'designnty', 'bjd', 'designbjd', 'sdy', 'designsdy', 'ntyc', 'designntyc', 'ntyl', 'designntyl', 'cgy', 'designcgy']; // 登录页样式
|
'crsc', 'designcrsc', 'hls', 'designhls', 'drts', 'wjls', 'hyd', 'designhyd', 'nty', 'designnty', 'bjd', 'designbjd', 'sdy', 'designsdy', 'ntyc', 'designntyc', 'ntyl', 'designntyl', 'cgy', 'designcgy', 'zzww']; // 登录页样式
|
||||||
export const NoQrcodeList = ['heb', 'designheb', 'cgy', 'designcgy', 'ntyl', 'designntyl'];
|
export const NoQrcodeList = ['heb', 'designheb', 'cgy', 'designcgy', 'ntyl', 'designntyl'];
|
||||||
export const NoSimulationQrCodeList = ['heb', 'bjd'];
|
export const NoSimulationQrCodeList = ['heb', 'bjd'];
|
||||||
export const RegisterCodeList = ['cgy', 'designcgy'];
|
export const RegisterCodeList = ['cgy', 'designcgy'];
|
||||||
@ -543,7 +556,8 @@ export const ProjectList = [
|
|||||||
{value: 'urtss', label: '陪标项目'},
|
{value: 'urtss', label: '陪标项目'},
|
||||||
{value: 'sdy', label: '苏电院'},
|
{value: 'sdy', label: '苏电院'},
|
||||||
{value: 'cgy', label: '成都工业'},
|
{value: 'cgy', label: '成都工业'},
|
||||||
{value: 'wjls', label: '微机联锁'}
|
{value: 'wjls', label: '微机联锁'},
|
||||||
|
{value: 'zzww', label: '郑州共赢'}
|
||||||
];
|
];
|
||||||
export const localPackageProject = {
|
export const localPackageProject = {
|
||||||
localdesign: 'designheb',
|
localdesign: 'designheb',
|
||||||
|
@ -124,7 +124,9 @@ export default {
|
|||||||
/** 取消自动折返 */
|
/** 取消自动折返 */
|
||||||
CMD_SIGNAL_CANCEL_AUTO_TURN_BACK: {value: 'Signal_Cancel_Auto_Turn_Back', label: '取消自动折返'},
|
CMD_SIGNAL_CANCEL_AUTO_TURN_BACK: {value: 'Signal_Cancel_Auto_Turn_Back', label: '取消自动折返'},
|
||||||
/** 信号机总取消 */
|
/** 信号机总取消 */
|
||||||
CMD_SIGNAL_TOTAL_CANCLE:{value:'Signal_Total_Cancel', label: '信号机总取消'}
|
CMD_SIGNAL_TOTAL_CANCLE:{value:'Signal_Total_Cancel', label: '信号机总取消'},
|
||||||
|
/** 设置保护 */
|
||||||
|
CMD_SIGNAL_SET_OVERLAP : {value: 'Signal_Set_Overlap', label: '设置保护'}
|
||||||
},
|
},
|
||||||
|
|
||||||
// 物理区段操作
|
// 物理区段操作
|
||||||
@ -158,7 +160,26 @@ export default {
|
|||||||
/** 轨道开放 */
|
/** 轨道开放 */
|
||||||
CMD_SECTION_OPEN: {value: 'Section_Open', label: '轨道开放'},
|
CMD_SECTION_OPEN: {value: 'Section_Open', label: '轨道开放'},
|
||||||
/** 轨道关闭 */
|
/** 轨道关闭 */
|
||||||
CMD_SECTION_CLOSE: {value: 'Section_Close', label: '轨道关闭'}
|
CMD_SECTION_CLOSE: {value: 'Section_Close', label: '轨道关闭'},
|
||||||
|
/** 设置折返策略 */
|
||||||
|
CMD_STAND_SET_REENTRY_STRATEGY: {value:'Stand_Set_Reentry_Strategy', label: '设置折返策略'},
|
||||||
|
/** 提前发车 */
|
||||||
|
CMD_STAND_EARLY_DEPART: {value:'Stand_Early_Depart', label: '提前发车'},
|
||||||
|
|
||||||
|
/** 折返 DTO */
|
||||||
|
CMD_SECTION_1: {value: 'Section_1', label: '折返 DTO'},
|
||||||
|
/** 取消折返 */
|
||||||
|
CMD_SECTION_2: {value: 'Section_2', label: '取消折返'},
|
||||||
|
/** 自动折返 */
|
||||||
|
CMD_SECTION_3: {value: 'Section_3', label: '自动折返'},
|
||||||
|
/** 换上至下 */
|
||||||
|
CMD_SECTION_4: {value: 'Section_4', label: '换上至下'},
|
||||||
|
/** 换下至上 */
|
||||||
|
CMD_SECTION_5: {value: 'Section_5', label: '换下至上'},
|
||||||
|
/** 上行终止站停 */
|
||||||
|
CMD_SECTION_6: {value: 'Section_6', label: '上行终止站停'},
|
||||||
|
/** 下行终止站停 */
|
||||||
|
CMD_SECTION_7: {value: 'Section_7', label: '下行终止站停'}
|
||||||
},
|
},
|
||||||
|
|
||||||
// 站台
|
// 站台
|
||||||
@ -214,7 +235,9 @@ export default {
|
|||||||
/** 关闭站台 */
|
/** 关闭站台 */
|
||||||
CMD_STAND_CLOSE: {value: 'Stand_Close', label: '关闭站台'},
|
CMD_STAND_CLOSE: {value: 'Stand_Close', label: '关闭站台'},
|
||||||
/** 站台紧急停车 */
|
/** 站台紧急停车 */
|
||||||
CMD_STAND_EMERGENCY_CLOSE : {value: 'Stand_Emergency_Close', label: '站台紧急停车'}
|
CMD_STAND_EMERGENCY_CLOSE : {value: 'Stand_Emergency_Close', label: '站台紧急停车'},
|
||||||
|
/** 取消站台紧急停车 */
|
||||||
|
CMD_STAND_CANCEL_EMERGENCY_CLOSE : {value: 'Stand_Cancel_Emergency_Close', label: '取消站台紧急停车'}
|
||||||
},
|
},
|
||||||
|
|
||||||
Station: {
|
Station: {
|
||||||
@ -263,7 +286,9 @@ export default {
|
|||||||
/** 取消计轴预复位 */
|
/** 取消计轴预复位 */
|
||||||
CMD_STATION_CANCEL_PRE_RESET: {value: 'Station_Cancel_Pre_Reset', label: '取消计轴预复位'},
|
CMD_STATION_CANCEL_PRE_RESET: {value: 'Station_Cancel_Pre_Reset', label: '取消计轴预复位'},
|
||||||
/** 重启联锁机 */
|
/** 重启联锁机 */
|
||||||
CMD_STATION_RESTART_INTERLOCK_MACHINE: {value: 'Station_Restart_Interlock_Machine', label: '重启联锁机'}
|
CMD_STATION_RESTART_INTERLOCK_MACHINE: {value: 'Station_Restart_Interlock_Machine', label: '重启联锁机'},
|
||||||
|
/** 释放指令 */
|
||||||
|
CMD_STATION_RELEASE : {value:'Station_Release', label: '释放指令' }
|
||||||
},
|
},
|
||||||
|
|
||||||
// 列车
|
// 列车
|
||||||
|
@ -56,6 +56,10 @@ class CommandHandle {
|
|||||||
Stand_Emergency_Close: {
|
Stand_Emergency_Close: {
|
||||||
operate: 'Stand_Emergency_Close',
|
operate: 'Stand_Emergency_Close',
|
||||||
paramList: [{name: 'standCode'}]
|
paramList: [{name: 'standCode'}]
|
||||||
|
},
|
||||||
|
Stand_Cancel_Emergency_Close: {
|
||||||
|
operate: 'Stand_Cancel_Emergency_Close',
|
||||||
|
paramList: [{name: 'standCode'}]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -1697,6 +1697,12 @@ export const OperationEvent = {
|
|||||||
operation: '3201',
|
operation: '3201',
|
||||||
domId: '_Tips-Signal-cancelinterlock-Menu{BOTTOM}'
|
domId: '_Tips-Signal-cancelinterlock-Menu{BOTTOM}'
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
setOverlap: {
|
||||||
|
menuButton: {
|
||||||
|
operation: '3211',
|
||||||
|
domId: '_Tips-Signal-setOverlap-Menu{BOTTOM}'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -2096,6 +2102,104 @@ export const OperationEvent = {
|
|||||||
operation: '415',
|
operation: '415',
|
||||||
domId: '_Tips-Section-Load-Spare-Train'
|
domId: '_Tips-Section-Load-Spare-Train'
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
menuButton: {
|
||||||
|
menuButton: {
|
||||||
|
operation: '416',
|
||||||
|
domId: '_Tips-Section-Load-Spare-Train'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 折返 DTO
|
||||||
|
turnBackDTO: {
|
||||||
|
menuButton: {
|
||||||
|
operation: '417',
|
||||||
|
domId: '_Tips-Section-turn-Back-DTO-menu-Button'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 取消折返
|
||||||
|
CancelTurnBack: {
|
||||||
|
menuButton: {
|
||||||
|
operation: '418',
|
||||||
|
domId: '_Tips-Section-Cancel-Turn-Back-menu-Button'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 自动折返
|
||||||
|
AutoTurnBack: {
|
||||||
|
menuButton: {
|
||||||
|
operation: '419',
|
||||||
|
domId: '_Tips-Section-Auto-Turn-Back-menu-Button'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 换上至下
|
||||||
|
PutUpTheDown: {
|
||||||
|
menuButton: {
|
||||||
|
operation: '420',
|
||||||
|
domId: '_Tips-Section-Put-Up-The-Down-menu-Button'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 换下至上
|
||||||
|
PutDownTheUp: {
|
||||||
|
menuButton: {
|
||||||
|
operation: '421',
|
||||||
|
domId: '_Tips-Section-Put-Down-The-Up-menu-Button'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 上行终止站停
|
||||||
|
PutUpStop: {
|
||||||
|
menuButton: {
|
||||||
|
operation: '422',
|
||||||
|
domId: '_Tips-Section-Put-Up-Stop-menu-Button'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 下行终止站停
|
||||||
|
PutDownStop: {
|
||||||
|
menuButton: {
|
||||||
|
operation: '423',
|
||||||
|
domId: '_Tips-Section-Put-Down-Stop-menu-Button'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 设置折返策略
|
||||||
|
setBackStrategy: {
|
||||||
|
// (南京二号线) 01 不折返 02 缺省折返 03 换端 04 自动折返
|
||||||
|
menuBtnUp01: {
|
||||||
|
operation: '4241',
|
||||||
|
domId: '_Tips-Section-set-Back-Strategy-Up-menu-01'
|
||||||
|
},
|
||||||
|
menuBtnDown01: {
|
||||||
|
operation: '4242',
|
||||||
|
domId: '_Tips-Section-set-Back-Strategy-Down-menu-01'
|
||||||
|
},
|
||||||
|
menuBtnUp02: {
|
||||||
|
operation: '4243',
|
||||||
|
domId: '_Tips-Section-set-Back-Strategy-Up-menu-02'
|
||||||
|
},
|
||||||
|
menuBtnDown02: {
|
||||||
|
operation: '4244',
|
||||||
|
domId: '_Tips-Section-set-Back-Strategy-Down-menu-02'
|
||||||
|
},
|
||||||
|
menuBtnUp03: {
|
||||||
|
operation: '4245',
|
||||||
|
domId: '_Tips-Section-set-Back-Strategy-Up-menu-03'
|
||||||
|
},
|
||||||
|
menuBtnDown03: {
|
||||||
|
operation: '4246',
|
||||||
|
domId: '_Tips-Section-set-Back-Strategy-Down-menu-03'
|
||||||
|
},
|
||||||
|
menuBtnUp04: {
|
||||||
|
operation: '4247',
|
||||||
|
domId: '_Tips-Section-set-Back-Strategy-Up-menu-04'
|
||||||
|
},
|
||||||
|
menuBtnDown04: {
|
||||||
|
operation: '4248',
|
||||||
|
domId: '_Tips-Section-set-Back-Strategy-Down-menu-04'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// (南京二号线) 站台轨提前发车
|
||||||
|
earlyDeparture: {
|
||||||
|
menuBtn: {
|
||||||
|
operation: '425',
|
||||||
|
domId: '_Tips-Section-EarlyDeparture-menuBtn'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -2409,6 +2513,10 @@ export const OperationEvent = {
|
|||||||
choose: {
|
choose: {
|
||||||
operation: '5151',
|
operation: '5151',
|
||||||
domId: '_Tips-Stand-setBulkBuckleTrain-Choose'
|
domId: '_Tips-Stand-setBulkBuckleTrain-Choose'
|
||||||
|
},
|
||||||
|
menuButton: {
|
||||||
|
operation: '5152',
|
||||||
|
domId: '_Tips-Stand-setBulkBuckleTrain-menuButton'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 批量取消扣车
|
// 批量取消扣车
|
||||||
@ -2456,6 +2564,13 @@ export const OperationEvent = {
|
|||||||
operation: '521',
|
operation: '521',
|
||||||
domId: '_Tips-Stand-EmergencyClose-Menu'
|
domId: '_Tips-Stand-EmergencyClose-Menu'
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
// 取消站台紧急停车
|
||||||
|
cancelEmergencyClose: {
|
||||||
|
menu: {
|
||||||
|
operation: '522',
|
||||||
|
domId: '_Tips-Stand-CancelEmergencyClose-Menu'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -2761,6 +2876,12 @@ export const OperationEvent = {
|
|||||||
operation: '619',
|
operation: '619',
|
||||||
domId: '_Tips-Station-restartInterlockMachine-Menu'
|
domId: '_Tips-Station-restartInterlockMachine-Menu'
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
stationRelease: {
|
||||||
|
menuButton: {
|
||||||
|
operation: '620',
|
||||||
|
domId: '_Tips-Station-stationRelease'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -261,6 +261,9 @@ const map = {
|
|||||||
routeData: (state) => {
|
routeData: (state) => {
|
||||||
return state.routeData;
|
return state.routeData;
|
||||||
},
|
},
|
||||||
|
overlapList: (state) => {
|
||||||
|
return state.overlapList;
|
||||||
|
},
|
||||||
overlapData: (state) => {
|
overlapData: (state) => {
|
||||||
return state.overlapData;
|
return state.overlapData;
|
||||||
},
|
},
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<el-row>
|
<el-row>
|
||||||
<div class="title-text">场景语音训练结果</div>
|
<div class="title-text">场景语音训练结果</div>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row v-loading="loading">
|
||||||
<el-col :span="6" :offset="1">
|
<el-col :span="6" :offset="1">
|
||||||
<span>用户:</span>
|
<span>用户:</span>
|
||||||
<el-select v-model="userId" size="mini" filterable placeholder="请选择">
|
<el-select v-model="userId" size="mini" filterable placeholder="请选择">
|
||||||
@ -108,13 +108,8 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
async initFunction() {
|
async initFunction() {
|
||||||
this.loading = true;
|
|
||||||
const userListData = await getHavaAudoUserList(this.$route.query.sceneId);
|
const userListData = await getHavaAudoUserList(this.$route.query.sceneId);
|
||||||
this.userList = userListData.data;
|
this.userList = userListData.data;
|
||||||
if (this.userList.length) {
|
|
||||||
this.userId = this.userList[0].id;
|
|
||||||
this.queryData();
|
|
||||||
}
|
|
||||||
const scriptData = await getScriptByIdNew(this.$route.query.scriptId);
|
const scriptData = await getScriptByIdNew(this.$route.query.scriptId);
|
||||||
const dispatcher = scriptData.data.memberList.find(member => member.type === 'DISPATCHER');
|
const dispatcher = scriptData.data.memberList.find(member => member.type === 'DISPATCHER');
|
||||||
this.actionList = scriptData.data.actionList.filter(action => {
|
this.actionList = scriptData.data.actionList.filter(action => {
|
||||||
@ -174,6 +169,13 @@ export default {
|
|||||||
if (this.userId) {
|
if (this.userId) {
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
audioFilesCheckAllSence(this.$route.query.sceneId, this.userId).then(resp => {
|
audioFilesCheckAllSence(this.$route.query.sceneId, this.userId).then(resp => {
|
||||||
|
this.actionList.forEach(item => {
|
||||||
|
item.result = '';
|
||||||
|
item.wrongKeyWords = [];
|
||||||
|
item.wrongTripNumbers = [];
|
||||||
|
item.recordId = '';
|
||||||
|
item.filePath = '';
|
||||||
|
});
|
||||||
(resp.data || []).forEach(elem => {
|
(resp.data || []).forEach(elem => {
|
||||||
this.actionList.forEach(item => {
|
this.actionList.forEach(item => {
|
||||||
if (elem.actionId === item.id) {
|
if (elem.actionId === item.id) {
|
||||||
|
116
src/views/editor/edit.vue
Normal file
116
src/views/editor/edit.vue
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
<template>
|
||||||
|
<el-dialog v-dialogDrag :title="title" :visible.sync="dialogVisible" width="30%" :before-close="handleClose" center>
|
||||||
|
<data-form ref="dataform" :form="form" :form-model="formModel" :rules="rules" />
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button type="primary" @click="doSave">{{ $t('global.confirm') }}</el-button>
|
||||||
|
<el-button @click="handleClose">{{ $t('global.cancel') }}</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// import { postOperateStepData, putOperateStepData, getPlaceholderList } from '@/api/management/operation';
|
||||||
|
import { postDocDraft, getDocDraftById, putDocDraftById } from '@/api/editor';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'TrainingDetailEdit',
|
||||||
|
props: {
|
||||||
|
type: {
|
||||||
|
type: String,
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
dialogVisible: false,
|
||||||
|
formModel: {
|
||||||
|
id: '',
|
||||||
|
title: ''
|
||||||
|
},
|
||||||
|
placeholderList: []
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
form() {
|
||||||
|
// const isAdd = this.type === 'ADD';
|
||||||
|
const form = {
|
||||||
|
labelWidth: '80px',
|
||||||
|
items: [
|
||||||
|
{ prop: 'title', label: '标题', type: 'text', required: true }
|
||||||
|
]
|
||||||
|
};
|
||||||
|
return form;
|
||||||
|
},
|
||||||
|
rules() {
|
||||||
|
const crules = {
|
||||||
|
title: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请输入文章标题',
|
||||||
|
trigger: 'blur'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
return crules;
|
||||||
|
},
|
||||||
|
title() {
|
||||||
|
if (this.type === 'ADD') {
|
||||||
|
return '创建文章';
|
||||||
|
} else {
|
||||||
|
return '更新文章';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async show(data) {
|
||||||
|
this.dialogVisible = true;
|
||||||
|
console.log(data);
|
||||||
|
if (this.type != 'ADD') {
|
||||||
|
const res = await getDocDraftById(data.id);
|
||||||
|
this.formModel.title = res.data.title;
|
||||||
|
this.formModel.id = data.id;
|
||||||
|
} else {
|
||||||
|
this.formModel.title = '';
|
||||||
|
this.formModel.id = '';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
doSave() {
|
||||||
|
const self = this;
|
||||||
|
this.$refs.dataform.validateForm(() => {
|
||||||
|
if (self.type === 'ADD') {
|
||||||
|
self.create();
|
||||||
|
} else {
|
||||||
|
self.update();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
create() {
|
||||||
|
const self = this;
|
||||||
|
postDocDraft(this.formModel).then(() => {
|
||||||
|
self.$message.success('创建文章成功!');
|
||||||
|
self.handleClose();
|
||||||
|
self.$emit('reloadTable');
|
||||||
|
}).catch(error => {
|
||||||
|
self.$message.error(`创建文章失败:${error.message}`);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
update() {
|
||||||
|
const self = this;
|
||||||
|
putDocDraftById(this.formModel.id, this.formModel).then(() => {
|
||||||
|
self.$message.success('更新文章成功!');
|
||||||
|
self.handleClose();
|
||||||
|
self.$emit('reloadTable');
|
||||||
|
}).catch(error => {
|
||||||
|
self.$message.error(`更新文章失败:${error.message}`);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
handleClose() {
|
||||||
|
this.formModel = {
|
||||||
|
title: ''
|
||||||
|
};
|
||||||
|
this.$refs.dataform.resetForm();
|
||||||
|
this.dialogVisible = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
151
src/views/editor/index.vue
Normal file
151
src/views/editor/index.vue
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
<template>
|
||||||
|
<div id="wangeditor">
|
||||||
|
<div ref="editorElem" style="text-align:left;" />
|
||||||
|
<button v-if="draft" type="button" class="btn" @click="saveDraftTitle">保存</button>
|
||||||
|
<!-- <button type="button" class="btn" @click="getEditorData">获取当前内容</button>
|
||||||
|
<button type="button" class="btn" @click="setEditorData">设置当前内容</button>
|
||||||
|
<h3>内容预览</h3>
|
||||||
|
<div class="content_html1" v-html="editorContent" /> -->
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import E from 'wangeditor';
|
||||||
|
import { uploadFile, pictureUrl } from '@/api/upload';
|
||||||
|
import { putDocDraftByIdData, getDocDraftById } from '@/api/editor';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'Editor',
|
||||||
|
// catchData是一个类似回调函数,来自父组件,当然也可以自己写一个函数,主要是用来获取富文本编辑器中的html内容用来传递给服务端
|
||||||
|
// props: ['catchData'],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
editor: null,
|
||||||
|
formData: '',
|
||||||
|
editorContent: ''
|
||||||
|
};
|
||||||
|
}, // 接收父组件的方法
|
||||||
|
computed: {
|
||||||
|
action() {
|
||||||
|
return `${process.env.VUE_APP_UPLOAD_API}${pictureUrl}`;
|
||||||
|
},
|
||||||
|
draft() {
|
||||||
|
return this.$route.query.draft;
|
||||||
|
},
|
||||||
|
docId() {
|
||||||
|
return this.$route.query.docId;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.editor = new E(this.$refs.editorElem);
|
||||||
|
this.editor.config.height = 450;
|
||||||
|
|
||||||
|
this.editor.config.uploadImgServer = '/upload-img';
|
||||||
|
// 编辑器的事件,每次改变会获取其html内容
|
||||||
|
this.editor.config.onchange = html => {
|
||||||
|
this.editorContent = html;
|
||||||
|
};
|
||||||
|
|
||||||
|
// this.editor.config.showLinkImg = false; // 隐藏插入网络图片的功能
|
||||||
|
this.editor.config.uploadImgShowBase64 = true;
|
||||||
|
const action = this.action;
|
||||||
|
const that = this;
|
||||||
|
this.editor.config.customUploadImg = function (resultFiles, insertImgFn) {
|
||||||
|
that.formData = new FormData();
|
||||||
|
resultFiles.forEach(file => {
|
||||||
|
that.formData.append('file', file);
|
||||||
|
});
|
||||||
|
|
||||||
|
uploadFile(action, that.formData).then(resp => {
|
||||||
|
const imgUrl = process.env.VUE_APP_VOICE_API + resp.data;
|
||||||
|
insertImgFn(imgUrl);
|
||||||
|
}).catch(error => { console.log(error); });
|
||||||
|
};
|
||||||
|
|
||||||
|
this.editor.config.menus = [
|
||||||
|
// 菜单配置
|
||||||
|
'head', // 标题
|
||||||
|
'bold', // 粗体
|
||||||
|
'fontSize', // 字号
|
||||||
|
'fontName', // 字体
|
||||||
|
'italic', // 斜体
|
||||||
|
'underline', // 下划线
|
||||||
|
'strikeThrough', // 删除线
|
||||||
|
'indent',
|
||||||
|
'lineHeight',
|
||||||
|
'foreColor', // 文字颜色
|
||||||
|
'backColor', // 背景颜色
|
||||||
|
'link', // 插入链接
|
||||||
|
'list', // 列表
|
||||||
|
'justify', // 对齐方式
|
||||||
|
'quote', // 引用
|
||||||
|
'emoticon', // 表情
|
||||||
|
'image', // 插入图片
|
||||||
|
'table', // 表格
|
||||||
|
'code', // 插入代码
|
||||||
|
'splitLine',
|
||||||
|
'undo', // 撤销
|
||||||
|
'redo' // 重复
|
||||||
|
];
|
||||||
|
|
||||||
|
this.editor.create(); // 创建富文本实例
|
||||||
|
|
||||||
|
this.handleEdit();
|
||||||
|
},
|
||||||
|
beforeDestroy() {
|
||||||
|
// 调用销毁 API 对当前编辑器实例进行销毁
|
||||||
|
this.editor.destroy();
|
||||||
|
this.editor = null;
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async handleEdit() {
|
||||||
|
try {
|
||||||
|
const res = await getDocDraftById(this.docId);
|
||||||
|
this.editor && this.editor.txt.html(res.data.content); // 重新设置编辑器内容
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error);
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
saveDraftTitle() {
|
||||||
|
const data = this.editor.txt.html();
|
||||||
|
putDocDraftByIdData(this.docId, { content: data }).then(res => {
|
||||||
|
this.$message.success('保存文章成功!');
|
||||||
|
setTimeout(() => {
|
||||||
|
this.$router.push({path : '/editor/listDraft'});
|
||||||
|
}, 2000);
|
||||||
|
}).catch(error => {
|
||||||
|
this.$message.error(`保存失败:${error.message}`);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
getEditorData() {
|
||||||
|
const data = this.editor.txt.html();
|
||||||
|
console.log(data);
|
||||||
|
},
|
||||||
|
setEditorData() {
|
||||||
|
const html = '<h1 id="gt6dj" style="text-align:center;">测试标题</h1><hr/><p data-we-empty-p="" style="text-align:center;"><img src="https://oss.joylink.club/oss/ddy/picture/2021-05-10/2720-44302.jpg" style="max-width:100%;" contenteditable="false" width="473" height="196.83"/><br/>工艺数据</p>';
|
||||||
|
this.editor && this.editor.txt.html(html); // 重新设置编辑器内容
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
#wangeditor{
|
||||||
|
z-index: 2;
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
.content_html {
|
||||||
|
width: 100%;
|
||||||
|
height: 200px;
|
||||||
|
overflow: auto;
|
||||||
|
background: red;
|
||||||
|
}
|
||||||
|
.content_html1{
|
||||||
|
width: 100%;
|
||||||
|
height: 300px;
|
||||||
|
overflow: auto;
|
||||||
|
background: chartreuse;
|
||||||
|
}
|
||||||
|
</style>
|
87
src/views/editor/list.vue
Normal file
87
src/views/editor/list.vue
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card>
|
||||||
|
<el-form
|
||||||
|
ref="queryForm"
|
||||||
|
:model="formModel"
|
||||||
|
size="small"
|
||||||
|
style="padding: 6px 20px 6px 20px;overflow: hidden;"
|
||||||
|
>
|
||||||
|
<el-form-item label="标题" style="margin-bottom: 0;float: left; width: 300px;">
|
||||||
|
<el-input v-model="formModel.title" style="width: 240px;" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-button style="margin-right: 10px; float: right;" type="primary" size="small" @click="reloadTable">查询</el-button>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<el-table :data="tableData" border style="width: 100%">
|
||||||
|
<el-table-column label="姓名">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span style="margin-left: 10px">{{ scope.row.title }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" width="450">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-button size="mini" @click="handleShow(scope.$index, scope.row)">查看</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<el-dialog
|
||||||
|
title="文章"
|
||||||
|
:visible.sync="dialogVisible"
|
||||||
|
width="100%"
|
||||||
|
top="0"
|
||||||
|
:fullscreen="true"
|
||||||
|
:before-close="beforeClose"
|
||||||
|
>
|
||||||
|
<div class="content_html1" v-html="editorContent" />
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button type="primary" @click="beforeClose">关闭</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { getDoc, getDocById } from '@/api/editor';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'CacheControl',
|
||||||
|
components: {
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableData: [],
|
||||||
|
formModel: {
|
||||||
|
title: ''
|
||||||
|
},
|
||||||
|
dialogVisible: false,
|
||||||
|
editorContent: ''
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.reloadTable();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleShow(row, data) {
|
||||||
|
console.log(data);
|
||||||
|
this.dialogVisible = true;
|
||||||
|
getDocById(data.id).then(res => {
|
||||||
|
this.editorContent = res.data.content;
|
||||||
|
}).catch(error => {
|
||||||
|
console.log(error);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
reloadTable() {
|
||||||
|
this.tableData = [];
|
||||||
|
getDoc().then(res => {
|
||||||
|
this.tableData = res.data;
|
||||||
|
}).catch(error => {
|
||||||
|
console.log(error);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
beforeClose() {
|
||||||
|
this.dialogVisible = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
108
src/views/editor/listDraft.vue
Normal file
108
src/views/editor/listDraft.vue
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<!-- <QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" /> -->
|
||||||
|
<el-card>
|
||||||
|
<el-form
|
||||||
|
ref="queryForm"
|
||||||
|
:model="formModel"
|
||||||
|
size="small"
|
||||||
|
style="padding: 6px 20px 6px 20px;overflow: hidden;"
|
||||||
|
>
|
||||||
|
<el-form-item label="标题" style="margin-bottom: 0;float: left; width: 300px;">
|
||||||
|
<el-input v-model="formModel.title" style="width: 240px;" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-button style="margin-right: 10px; float: right;" type="primary" size="small" @click="createTitle">创建</el-button>
|
||||||
|
<el-button style="margin-right: 10px; float: right;" type="primary" size="small" @click="query">查询</el-button>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<el-table :data="tableData" border style="width: 100%">
|
||||||
|
<el-table-column label="姓名">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<!-- <i class="el-icon-time" /> -->
|
||||||
|
<span style="margin-left: 10px">{{ scope.row.title }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" width="450">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-button size="mini" @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
|
||||||
|
<el-button size="mini" @click="handleUpdate(scope.$index, scope.row)">更新</el-button>
|
||||||
|
<el-button size="mini" @click="handlePublish(scope.$index, scope.row)">发布</el-button>
|
||||||
|
<el-button size="mini" type="danger" @click="handleDelete(scope.$index, scope.row)">删除</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<Edit ref="edits" type="ADD" @reloadTable="reloadTable" />
|
||||||
|
<Edit ref="edit" type="EDIT" @reloadTable="reloadTable" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { getDocDraft, putDocDraftByIdPublish, deleteDocDraftById } from '@/api/editor';
|
||||||
|
import Edit from './edit';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'CacheControl',
|
||||||
|
components: {
|
||||||
|
Edit
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableData: [],
|
||||||
|
formModel: {
|
||||||
|
title: ''
|
||||||
|
}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.query();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
query() {
|
||||||
|
this.reloadTable();
|
||||||
|
},
|
||||||
|
createTitle() {
|
||||||
|
this.$refs.edits.show();
|
||||||
|
},
|
||||||
|
// 编辑
|
||||||
|
handleEdit(row, data) {
|
||||||
|
this.$router.push({path : '/editor', query: {docId: data.id, draft: 1}});
|
||||||
|
},
|
||||||
|
// 更新标题
|
||||||
|
handleUpdate(row, data) {
|
||||||
|
this.$refs.edit.show(data);
|
||||||
|
},
|
||||||
|
// 草稿发布
|
||||||
|
handlePublish(row, data) {
|
||||||
|
console.log(data);
|
||||||
|
putDocDraftByIdPublish(data.id).then(res => {
|
||||||
|
this.$message.success('创建文章成功!');
|
||||||
|
this.reloadTable();
|
||||||
|
}).catch(error => {
|
||||||
|
this.$message.error(`发布失败: ${error.data}`);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
handleDelete(row, data) {
|
||||||
|
this.$confirm('是否确认删除文章?', this.$t('tip.hint'), {
|
||||||
|
confirmButtonText: '确认',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning'
|
||||||
|
}).then(() => {
|
||||||
|
deleteDocDraftById(data.id).then(res => {
|
||||||
|
this.$message.success('删除文章成功!');
|
||||||
|
this.reloadTable();
|
||||||
|
}).catch(error => {
|
||||||
|
this.$message.error(`删除失败: ${error.data}`);
|
||||||
|
});
|
||||||
|
}).catch(() => {});
|
||||||
|
},
|
||||||
|
reloadTable() {
|
||||||
|
this.tableData = [];
|
||||||
|
getDocDraft().then(res => {
|
||||||
|
this.tableData = res.data;
|
||||||
|
}).catch(error => {
|
||||||
|
console.log(error);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
@ -169,6 +169,17 @@
|
|||||||
<el-input v-model="selected.text" ></el-input>
|
<el-input v-model="selected.text" ></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="提示功能:" v-if="selected.explainPaneType">
|
||||||
|
<el-select v-model="selected.explainPaneType" placeholder="请选择">
|
||||||
|
<el-option
|
||||||
|
v-for="explainType in explainPaneTypes"
|
||||||
|
:key="explainType.value"
|
||||||
|
:label="explainType.name"
|
||||||
|
:value="explainType.value">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="说明画面:" v-if="selected.picurl">
|
<el-form-item label="说明画面:" v-if="selected.picurl">
|
||||||
<el-input v-model="selected.picurl" ></el-input>
|
<el-input v-model="selected.picurl" ></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -295,6 +306,16 @@
|
|||||||
],
|
],
|
||||||
jobDataList:[],
|
jobDataList:[],
|
||||||
value:'',
|
value:'',
|
||||||
|
explainPaneTypes:[
|
||||||
|
{
|
||||||
|
name:"无",
|
||||||
|
value:"null",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name:"跳转",
|
||||||
|
value:"jump",
|
||||||
|
}
|
||||||
|
],
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
@ -7,6 +7,34 @@
|
|||||||
:lessonTools='lessonTools'
|
:lessonTools='lessonTools'
|
||||||
></LessonTools-Manager>
|
></LessonTools-Manager>
|
||||||
|
|
||||||
|
<div id="" class="lessonsetupdiv" v-show="showSetup">
|
||||||
|
<div style="text-align:center;top:10%;font-size:30px">课程内容设置</div>
|
||||||
|
<el-form ref="form" label-width="80px">
|
||||||
|
<el-form-item label="考试模式">
|
||||||
|
<el-switch
|
||||||
|
v-model="examMode"
|
||||||
|
active-text="开启考试模式"
|
||||||
|
inactive-text="关闭考试模式">
|
||||||
|
</el-switch>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="可用角色">
|
||||||
|
<el-checkbox-group v-model="checkedRole">
|
||||||
|
<el-checkbox v-for="role in jobPaneData.dataList" :label="role.name" :key="role.name">{{role.name}}</el-checkbox>
|
||||||
|
</el-checkbox-group>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- <el-form-item label="课程简介">
|
||||||
|
<el-input type="textarea" v-model="form.desc"></el-input>
|
||||||
|
</el-form-item> -->
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="onSubmit">修改完成</el-button>
|
||||||
|
<el-button @click="unSubmit" >关闭</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="lesson3dedit">
|
<div class="lesson3dedit">
|
||||||
<Step-Tips
|
<Step-Tips
|
||||||
:lessonData='lessonData'
|
:lessonData='lessonData'
|
||||||
@ -50,7 +78,6 @@
|
|||||||
</Lesson-Progress>
|
</Lesson-Progress>
|
||||||
|
|
||||||
<div class="lessonsetup" >
|
<div class="lessonsetup" >
|
||||||
|
|
||||||
<el-row>
|
<el-row>
|
||||||
当前课程信息
|
当前课程信息
|
||||||
</el-row>
|
</el-row>
|
||||||
@ -118,6 +145,9 @@
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
jl3d: null,
|
jl3d: null,
|
||||||
|
showSetup:false,
|
||||||
|
examMode:false,
|
||||||
|
checkedRole:[],
|
||||||
netData:{
|
netData:{
|
||||||
name:'',
|
name:'',
|
||||||
type:'',
|
type:'',
|
||||||
@ -186,9 +216,10 @@
|
|||||||
if(data.data.data){
|
if(data.data.data){
|
||||||
loadData = JSON.parse(data.data.data);
|
loadData = JSON.parse(data.data.data);
|
||||||
|
|
||||||
|
console.log(loadData);
|
||||||
|
this.checkedRole = loadData.setup.checkedRole;
|
||||||
|
this.examMode = loadData.setup.examMode;
|
||||||
this.jobPaneData.dataList = loadData.toolJobPane;
|
this.jobPaneData.dataList = loadData.toolJobPane;
|
||||||
console.log(this.jobPaneData.dataList);
|
|
||||||
this.$refs.jobpane.initJobList(this.jobPaneData.dataList);
|
this.$refs.jobpane.initJobList(this.jobPaneData.dataList);
|
||||||
|
|
||||||
this.lessonTools = loadData.lessonTools;
|
this.lessonTools = loadData.lessonTools;
|
||||||
@ -197,8 +228,7 @@
|
|||||||
this.lessonData.initLessonProgress();
|
this.lessonData.initLessonProgress();
|
||||||
this.$refs.jobpane.initJobList(this.jobPaneData.dataList);
|
this.$refs.jobpane.initJobList(this.jobPaneData.dataList);
|
||||||
}
|
}
|
||||||
console.log("loaddata----------------");
|
|
||||||
console.log(loadData);
|
|
||||||
this.jl3d = new Lesson3dEditor(dom,loadData);
|
this.jl3d = new Lesson3dEditor(dom,loadData);
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
});
|
});
|
||||||
@ -212,13 +242,15 @@
|
|||||||
let assetModelData = this.jl3d.saveAssetModel();
|
let assetModelData = this.jl3d.saveAssetModel();
|
||||||
saveData.assetList = assetModelData.assetList;
|
saveData.assetList = assetModelData.assetList;
|
||||||
saveData.modelList = assetModelData.modelList;
|
saveData.modelList = assetModelData.modelList;
|
||||||
|
saveData.setup.examMode = this.examMode;
|
||||||
|
saveData.setup.checkedRole = this.checkedRole;
|
||||||
this.netData.data = JSON.stringify(saveData);
|
this.netData.data = JSON.stringify(saveData);
|
||||||
// console.log();
|
// console.log();
|
||||||
updateLesson3dData(this.$route.query.lessonId,this.netData).then(data => {
|
updateLesson3dData(this.$route.query.lessonId,this.netData).then(data => {
|
||||||
console.log(data);
|
|
||||||
}).catch(() => {
|
|
||||||
|
|
||||||
|
this.$message('保存成功');
|
||||||
|
}).catch(() => {
|
||||||
|
this.$message('保存失败');
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
addProgress(){
|
addProgress(){
|
||||||
@ -245,6 +277,7 @@
|
|||||||
},
|
},
|
||||||
setupclick(){
|
setupclick(){
|
||||||
|
|
||||||
|
this.showSetup = true;
|
||||||
},
|
},
|
||||||
createModel(assetData,mousePos){
|
createModel(assetData,mousePos){
|
||||||
this.jl3d.createModelTrigger(assetData,mousePos);
|
this.jl3d.createModelTrigger(assetData,mousePos);
|
||||||
@ -258,6 +291,13 @@
|
|||||||
this.$router.push({ path: '/design/jlmap3d/lesson3dplayer', query: {lessonId: this.$route.query.lessonId} });
|
this.$router.push({ path: '/design/jlmap3d/lesson3dplayer', query: {lessonId: this.$route.query.lessonId} });
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
|
onSubmit() {
|
||||||
|
this.showSetup = false;
|
||||||
|
},
|
||||||
|
unSubmit(){
|
||||||
|
this.showSetup = false;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -318,4 +358,25 @@
|
|||||||
.el-tabs__content{
|
.el-tabs__content{
|
||||||
position: absolute;
|
position: absolute;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.lessonsetupdiv {
|
||||||
|
position: absolute;
|
||||||
|
width: 30%;
|
||||||
|
height: 40%;
|
||||||
|
top:30%;
|
||||||
|
left:35%;
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 18px;
|
||||||
|
border:solid 2px #000;
|
||||||
|
z-index: 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nextbuttondiv{
|
||||||
|
width:30px;
|
||||||
|
height:30px;
|
||||||
|
background-size: 100%;
|
||||||
|
position: absolute;
|
||||||
|
right:0;
|
||||||
|
bottom:0;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -9,6 +9,11 @@
|
|||||||
<div class="explainpanetext" >
|
<div class="explainpanetext" >
|
||||||
{{lessonData.lessonData.lessonProgress[lessonEditIndex].explainPane.text}}
|
{{lessonData.lessonData.lessonProgress[lessonEditIndex].explainPane.text}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="nextbuttondiv"
|
||||||
|
:style="{'background-image': 'url('+staticImg+'/lesson3d/nextbutton.png)'}"
|
||||||
|
v-if="lessonData.lessonData.lessonProgress[lessonEditIndex].explainPane.explainPaneType=='jump'"></div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
@ -26,6 +31,7 @@
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
localStatic:BASE_ASSET_API,
|
localStatic:BASE_ASSET_API,
|
||||||
|
staticImg:JL3D_LOCAL_STATIC,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -61,6 +67,7 @@
|
|||||||
border-radius:10px;
|
border-radius:10px;
|
||||||
border:solid 2px #000;
|
border:solid 2px #000;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
|
color:#000;
|
||||||
z-index:1;
|
z-index:1;
|
||||||
}
|
}
|
||||||
.explainpanetittle{
|
.explainpanetittle{
|
||||||
@ -70,15 +77,28 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.explainpanepic{
|
.explainpanepic{
|
||||||
height:65%;
|
position:relative;
|
||||||
|
width:90%;
|
||||||
|
left:5%;
|
||||||
|
height:45%;
|
||||||
border:solid 2px #000;
|
border:solid 2px #000;
|
||||||
background-size: 100%;
|
background-size: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.explainpanetext{
|
.explainpanetext{
|
||||||
|
position:relative;
|
||||||
|
left:5%;
|
||||||
|
width:90%;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
// height:20%;
|
// height:20%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.nextbuttondiv{
|
||||||
|
width:30px;
|
||||||
|
height:30px;
|
||||||
|
background-size: 100%;
|
||||||
|
position: absolute;
|
||||||
|
right:0;
|
||||||
|
bottom:0;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -2,6 +2,21 @@
|
|||||||
|
|
||||||
<div id="lesson3ddiv" class="lesson3ddiv">
|
<div id="lesson3ddiv" class="lesson3ddiv">
|
||||||
|
|
||||||
|
<div class="selectjobdiv"
|
||||||
|
:style="{'background-image': 'url('+staticImg+'/texture/bg.jpg)'}"
|
||||||
|
v-if="showSelectJob">
|
||||||
|
<div class="selectjobbuttondiv">
|
||||||
|
<div
|
||||||
|
class="selectjobimg"
|
||||||
|
v-for="(job,index) in selectJobList"
|
||||||
|
@click="selectJob(job)"
|
||||||
|
:style="{'background-image': 'url('+staticImg+'/lesson3d/mst.png)'}">
|
||||||
|
<!-- <div>{{job}}</div> -->
|
||||||
|
<div style="width:100%;position:absolute;bottom:0;font-size:30px;textAlign:center;">{{job}}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="lesson3dplayer">
|
<div class="lesson3dplayer">
|
||||||
<Step-Tips
|
<Step-Tips
|
||||||
:lessonData='lessonData'
|
:lessonData='lessonData'
|
||||||
@ -19,13 +34,16 @@
|
|||||||
<Explain-Pane
|
<Explain-Pane
|
||||||
:lessonData='lessonData'
|
:lessonData='lessonData'
|
||||||
:lessonPlayIndex='lessonPlayIndex'
|
:lessonPlayIndex='lessonPlayIndex'
|
||||||
v-show="lessonTools[2].isShow && lessonData.lessonData.lessonProgress[lessonPlayIndex].progressScene == 'standstation'">
|
:nowRole ='nowRole'
|
||||||
|
v-show="lessonTools[2].isShow && lessonData.lessonData.lessonProgress[lessonPlayIndex].progressScene == 'standstation'"
|
||||||
|
@jumpEvent="jumpEvent">
|
||||||
</Explain-Pane>
|
</Explain-Pane>
|
||||||
|
|
||||||
<Job-Pane
|
<Job-Pane
|
||||||
:jobPaneData='jobPaneData'
|
:jobPaneData='jobPaneData'
|
||||||
:lessonData='lessonData'
|
:lessonData='lessonData'
|
||||||
:lessonPlayIndex='lessonPlayIndex'
|
:lessonPlayIndex='lessonPlayIndex'
|
||||||
|
:nowRole='nowRole'
|
||||||
ref="jobpane"
|
ref="jobpane"
|
||||||
v-show="lessonTools[3].isShow && lessonData.lessonData.lessonProgress[lessonPlayIndex].progressScene == 'standstation'">
|
v-show="lessonTools[3].isShow && lessonData.lessonData.lessonProgress[lessonPlayIndex].progressScene == 'standstation'">
|
||||||
</Job-Pane>
|
</Job-Pane>
|
||||||
@ -62,6 +80,9 @@
|
|||||||
import { JobPaneData } from '@/jlmap3d/lesson3d/toolsmodel/jobpanedata.js';
|
import { JobPaneData } from '@/jlmap3d/lesson3d/toolsmodel/jobpanedata.js';
|
||||||
|
|
||||||
import { getLesson3dData,updateLesson3dData } from '@/api/jmap/lesson3d';
|
import { getLesson3dData,updateLesson3dData } from '@/api/jmap/lesson3d';
|
||||||
|
|
||||||
|
import { JL3D_LOCAL_STATIC,BASE_ASSET_API } from '@/api/jlmap3d/assets3d.js';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'Lesson3dPlayer',
|
name: 'Lesson3dPlayer',
|
||||||
components: {
|
components: {
|
||||||
@ -76,6 +97,10 @@
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
staticImg:JL3D_LOCAL_STATIC,
|
||||||
|
showSelectJob:true,
|
||||||
|
selectJobList:[],
|
||||||
|
nowRole:"",
|
||||||
jl3d: null,
|
jl3d: null,
|
||||||
netData:{
|
netData:{
|
||||||
name:'',
|
name:'',
|
||||||
@ -146,7 +171,7 @@
|
|||||||
let loadData;
|
let loadData;
|
||||||
if(data.data.data){
|
if(data.data.data){
|
||||||
loadData = JSON.parse(data.data.data);
|
loadData = JSON.parse(data.data.data);
|
||||||
|
this.selectJobList = loadData.setup.checkedRole;
|
||||||
this.jobPaneData.dataList = loadData.toolJobPane;
|
this.jobPaneData.dataList = loadData.toolJobPane;
|
||||||
this.$refs.jobpane.initJobList(this.jobPaneData.dataList);
|
this.$refs.jobpane.initJobList(this.jobPaneData.dataList);
|
||||||
|
|
||||||
@ -163,6 +188,17 @@
|
|||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
selectJob(job){
|
||||||
|
this.showSelectJob = false;
|
||||||
|
for(let i=0;i<this.jobPaneData.dataList.length;i++){
|
||||||
|
if(job == this.jobPaneData.dataList[i].name){
|
||||||
|
this.nowRole = this.jobPaneData.dataList[i].value;
|
||||||
|
console.log(this.nowRole);
|
||||||
|
this.jl3d.initNowRole(this.nowRole);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
startLesson(){
|
startLesson(){
|
||||||
this.$refs.processlog.startLog();
|
this.$refs.processlog.startLog();
|
||||||
},
|
},
|
||||||
@ -190,6 +226,9 @@
|
|||||||
if(type == "tools"){
|
if(type == "tools"){
|
||||||
this.lessonPlayIndex = action.nextNode;
|
this.lessonPlayIndex = action.nextNode;
|
||||||
}
|
}
|
||||||
|
if(type == "jump"){
|
||||||
|
this.lessonPlayIndex = action.nextNode;
|
||||||
|
}
|
||||||
console.log(type);
|
console.log(type);
|
||||||
console.log(action);
|
console.log(action);
|
||||||
this.jl3d.changeIndex(this.lessonPlayIndex);
|
this.jl3d.changeIndex(this.lessonPlayIndex);
|
||||||
@ -219,6 +258,40 @@
|
|||||||
touch-action: none;
|
touch-action: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.selectjobdiv{
|
||||||
|
width:100%;
|
||||||
|
height:100%;
|
||||||
|
position: absolute;
|
||||||
|
z-index: 5;
|
||||||
|
background-size: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.selectjobimg{
|
||||||
|
width:250px;
|
||||||
|
height:250px;
|
||||||
|
background-size: 100%;
|
||||||
|
// float:left;
|
||||||
|
display: inline-block;
|
||||||
|
position:relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.selectjobbuttondiv{
|
||||||
|
position:absolute;
|
||||||
|
width:80%;
|
||||||
|
height:30%;
|
||||||
|
left:10%;
|
||||||
|
top:35%;
|
||||||
|
overflow-x:scroll;
|
||||||
|
overflow-y:hidden;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.selectjobbackdiv{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.lesson3ddiv {
|
.lesson3ddiv {
|
||||||
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@ -266,4 +339,5 @@
|
|||||||
.el-tabs__content{
|
.el-tabs__content{
|
||||||
position: absolute;
|
position: absolute;
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="explainpanediv"
|
<div class="explainpanediv"
|
||||||
v-if="lessonData.lessonData.lessonProgress[lessonPlayIndex]"
|
v-if="lessonData.lessonData.lessonProgress[lessonPlayIndex]"
|
||||||
@click="selectTool"
|
|
||||||
:style="{'background-image': 'url('+lessonbg+')'}">
|
:style="{'background-image': 'url('+lessonbg+')'}">
|
||||||
<div class="explainpanetittle" >
|
<div class="explainpanetittle" >
|
||||||
{{lessonData.lessonData.lessonProgress[lessonPlayIndex].explainPane.tittle}}
|
{{lessonData.lessonData.lessonProgress[lessonPlayIndex].explainPane.tittle}}
|
||||||
@ -12,6 +12,10 @@
|
|||||||
<div class="explainpanetext" >
|
<div class="explainpanetext" >
|
||||||
{{lessonData.lessonData.lessonProgress[lessonPlayIndex].explainPane.text}}
|
{{lessonData.lessonData.lessonProgress[lessonPlayIndex].explainPane.text}}
|
||||||
</div>
|
</div>
|
||||||
|
<div class="nextbuttondiv"
|
||||||
|
:style="{'background-image': 'url('+staticImg+'/lesson3d/nextbutton.png)'}"
|
||||||
|
v-if="lessonData.lessonData.lessonProgress[lessonPlayIndex].explainPane.explainPaneType=='jump' "
|
||||||
|
@click="explainJump"></div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
@ -22,13 +26,14 @@
|
|||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'ExplainPane',
|
name: 'ExplainPane',
|
||||||
props:['lessonData','lessonPlayIndex'],
|
props:['lessonData','lessonPlayIndex','nowRole'],
|
||||||
components: {
|
components: {
|
||||||
|
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
localStatic:BASE_ASSET_API,
|
localStatic:BASE_ASSET_API,
|
||||||
|
staticImg:JL3D_LOCAL_STATIC,
|
||||||
lessonbg:JL3D_LOCAL_STATIC+"/lesson3d/lessonbg.png",
|
lessonbg:JL3D_LOCAL_STATIC+"/lesson3d/lessonbg.png",
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -45,8 +50,13 @@
|
|||||||
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
selectTool(){
|
// selectTool(){
|
||||||
lesson3dSelect('toolproperty','explainpane');
|
// lesson3dSelect('toolproperty','explainpane');
|
||||||
|
// },
|
||||||
|
explainJump(){
|
||||||
|
if(this.lessonData.lessonData.lessonProgress[this.lessonPlayIndex].explainPane.explainPaneType == "jump"){
|
||||||
|
this.$emit('jumpEvent','jump',this.lessonData.lessonData.lessonProgress[this.lessonPlayIndex].explainPane);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -77,7 +87,7 @@
|
|||||||
position:relative;
|
position:relative;
|
||||||
width:90%;
|
width:90%;
|
||||||
left:5%;
|
left:5%;
|
||||||
height:65%;
|
height:45%;
|
||||||
border:solid 2px #000;
|
border:solid 2px #000;
|
||||||
background-size: 100%;
|
background-size: 100%;
|
||||||
}
|
}
|
||||||
@ -90,5 +100,13 @@
|
|||||||
// height:20%;
|
// height:20%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.nextbuttondiv{
|
||||||
|
width:30px;
|
||||||
|
height:30px;
|
||||||
|
background-size: 100%;
|
||||||
|
position: absolute;
|
||||||
|
right:0;
|
||||||
|
bottom:0;
|
||||||
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -48,7 +48,7 @@
|
|||||||
//岗位
|
//岗位
|
||||||
export default {
|
export default {
|
||||||
name: 'JobPane',
|
name: 'JobPane',
|
||||||
props:['jobPaneData','lessonData','lessonPlayIndex'],
|
props:['jobPaneData','lessonData','lessonPlayIndex','nowRole'],
|
||||||
|
|
||||||
components: {
|
components: {
|
||||||
|
|
||||||
@ -98,7 +98,8 @@
|
|||||||
console.log(selectTool);
|
console.log(selectTool);
|
||||||
let nowProgress = this.lessonData.lessonData.lessonProgress[this.lessonPlayIndex];
|
let nowProgress = this.lessonData.lessonData.lessonProgress[this.lessonPlayIndex];
|
||||||
console.log(nowProgress.id);
|
console.log(nowProgress.id);
|
||||||
if(selectTool.sceneId == nowProgress.id){
|
console.log(this.lessonData.lessonData.lessonProgress[this.lessonPlayIndex]);
|
||||||
|
if(selectTool.sceneId == nowProgress.id && this.lessonData.lessonData.lessonProgress[this.lessonPlayIndex].roleName == this.nowRole){
|
||||||
jumpEvent("tools",selectTool);
|
jumpEvent("tools",selectTool);
|
||||||
}
|
}
|
||||||
// console.log(this.lessonData.lessonProgress[this.lessonPlayIndex]);
|
// console.log(this.lessonData.lessonProgress[this.lessonPlayIndex]);
|
||||||
|
@ -189,6 +189,28 @@ export default {
|
|||||||
methods: {
|
methods: {
|
||||||
async initLoadPage() {
|
async initLoadPage() {
|
||||||
try {
|
try {
|
||||||
|
const memberData = Object.values(this.$store.state.training.memberData);
|
||||||
|
const member = memberData.find(eachMember=>{
|
||||||
|
return eachMember.userId == this.$store.state.user.id;
|
||||||
|
});
|
||||||
|
const deviceId = member ? member.deviceId : '';
|
||||||
|
if (deviceId) {
|
||||||
|
const nameList = Object.keys(this.$store.state.map.map || {});
|
||||||
|
let list = [];
|
||||||
|
nameList.forEach(item => {
|
||||||
|
if (this.$store.state.map.map[item] && this.$store.state.map.map[item].constructor === Array) {
|
||||||
|
if (item === 'trainList') {
|
||||||
|
this.$store.state.map.map[item].forEach(elem => {
|
||||||
|
elem && list.push(elem);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
list = [...list, ...this.$store.state.map.map[item]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.$jlmap.updateShowStation(list, deviceId);
|
||||||
|
}
|
||||||
|
this.$jlmap.setCenter(deviceId);
|
||||||
if (this.try != '0') {
|
if (this.try != '0') {
|
||||||
this.loadInitData();
|
this.loadInitData();
|
||||||
}
|
}
|
||||||
|
@ -159,6 +159,7 @@ export default {
|
|||||||
return;
|
return;
|
||||||
} else if (em.subType == 'enabled' && em.deviceType == 'Switch') {
|
} else if (em.subType == 'enabled' && em.deviceType == 'Switch') {
|
||||||
menu = getDeviceMenuByDeviceType('Enabled');
|
menu = getDeviceMenuByDeviceType('Enabled');
|
||||||
|
const equipment = this.getDeviceByEm(em);
|
||||||
this.$store.dispatch('menuOperation/setSelected', { device: equipment, subType: em.subType });
|
this.$store.dispatch('menuOperation/setSelected', { device: equipment, subType: em.subType });
|
||||||
this.$store.dispatch('menuOperation/setPopMenu', { position: point, menu: menu });
|
this.$store.dispatch('menuOperation/setPopMenu', { position: point, menu: menu });
|
||||||
device = this.getDeviceByEm(em);
|
device = this.getDeviceByEm(em);
|
||||||
@ -166,6 +167,7 @@ export default {
|
|||||||
return;
|
return;
|
||||||
} else if (em.subType === 'enabled' && em.deviceType === 'Signal') {
|
} else if (em.subType === 'enabled' && em.deviceType === 'Signal') {
|
||||||
menu = getDeviceMenuByDeviceType('Enabled');
|
menu = getDeviceMenuByDeviceType('Enabled');
|
||||||
|
const equipment = this.getDeviceByEm(em);
|
||||||
this.$store.dispatch('menuOperation/setSelected', { device: equipment, subType: em.subType });
|
this.$store.dispatch('menuOperation/setSelected', { device: equipment, subType: em.subType });
|
||||||
this.$store.dispatch('menuOperation/setPopMenu', { position: point, menu: menu});
|
this.$store.dispatch('menuOperation/setPopMenu', { position: point, menu: menu});
|
||||||
device = this.getDeviceByEm(em);
|
device = this.getDeviceByEm(em);
|
||||||
|
@ -127,7 +127,7 @@ export default {
|
|||||||
if (this.loadingProjectList.includes(this.project)) {
|
if (this.loadingProjectList.includes(this.project)) {
|
||||||
this.$store.dispatch('app/transitionAnimations');
|
this.$store.dispatch('app/transitionAnimations');
|
||||||
}
|
}
|
||||||
this.$router.push({ path: `${UrlConfig.newDesignuser.mapDraw}/${obj.mapId}/draft`, query: { name: obj.mapName } });
|
this.$router.push({ path: `${UrlConfig.newDesignuser.mapDraw}/${obj.mapId}/draft`, query: { name: obj.mapName, lineCode:obj.lineCode } });
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,21 @@
|
|||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</div>
|
</div>
|
||||||
|
<div v-else-if="scope.row.type === 'multiple'">
|
||||||
|
<div v-if="!scope.row.focus" style="width: 100%;cursor: pointer;height: 20px;" @click="changeFocus(scope.row, '1')">
|
||||||
|
<template v-for="(item, i) in scope.row.configValue">
|
||||||
|
<el-tag :key="i" size="mini">{{ getMultipleName(item, scope.row.options) }}</el-tag>
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
|
<el-select v-if="scope.row.focus" v-model="scope.row.configValue" size="mini" multiple placeholder="请选择">
|
||||||
|
<el-option
|
||||||
|
v-for="item in scope.row.options"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="remark" label="描述" />
|
<el-table-column prop="remark" label="描述" />
|
||||||
@ -48,6 +63,7 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { saveMap, generateCI } from '@/api/jmap/mapdraft';
|
import { saveMap, generateCI } from '@/api/jmap/mapdraft';
|
||||||
|
import { mapGetters } from 'vuex';
|
||||||
export default {
|
export default {
|
||||||
name: 'Config',
|
name: 'Config',
|
||||||
components: {
|
components: {
|
||||||
@ -70,34 +86,15 @@ export default {
|
|||||||
falseValue: false,
|
falseValue: false,
|
||||||
id: '',
|
id: '',
|
||||||
height: 800,
|
height: 800,
|
||||||
// initData: {
|
|
||||||
// upRight: false,
|
|
||||||
// signalApproachOnlyOne: false,
|
|
||||||
// signalApproachOnlyNpSwitch: false,
|
|
||||||
// routeNameUseEndOppositeSignalName: false,
|
|
||||||
// generateTbRoute: false,
|
|
||||||
// tbRouteNameUseEndOppositeSignalName: false,
|
|
||||||
// routeSignalAlwaysGreen: false,
|
|
||||||
// routeApartByOverlap: false,
|
|
||||||
// overlapOnlySwitch: false,
|
|
||||||
// overlapSwitchNpOnly: false,
|
|
||||||
// overlapSignalOppositeSwitchNpOnly: false,
|
|
||||||
// overlapOnlyOneSwitch: false,
|
|
||||||
// generateCycle: false,
|
|
||||||
// routeButton: false,
|
|
||||||
// likeHa1: false,
|
|
||||||
// getNearlySignal: false,
|
|
||||||
// overlapSettingByTrigger: false,
|
|
||||||
// generateFls:false,
|
|
||||||
// signalApproachNotPassPreSignal:false,
|
|
||||||
// overlapReleaseTime: 45,
|
|
||||||
// routeReleaseTime: 60
|
|
||||||
// },
|
|
||||||
roadData: [],
|
roadData: [],
|
||||||
focus: false,
|
focus: false,
|
||||||
booleanList: ['upRight', 'lockFirst', 'switchSingleHandle', 'signalApproachOnlyOne', 'signalApproachOnlyNpSwitch',
|
booleanList: ['upRight', 'lockFirst', 'switchSingleHandle', 'signalApproachOnlyOne', 'signalApproachOnlyNpSwitch',
|
||||||
'routeNameUseEndOppositeSignalName', 'generateTbRoute', 'tbRouteNameUseEndOppositeSignalName', 'routeSignalAlwaysGreen',
|
'routeNameUseEndOppositeSignalName', 'generateTbRoute', 'tbRouteNameUseEndOppositeSignalName', 'routeSignalAlwaysGreen',
|
||||||
'routeApartByOverlap', 'overlapOnlySwitch', 'overlapSwitchNpOnly', 'overlapSignalOppositeSwitchNpOnly', 'overlapOnlyOneSwitch', 'generateCycle', 'routeButton', 'likeHa1', 'getNearlySignal', 'overlapSettingByTrigger', 'generateFls', 'signalApproachNotPassPreSignal'],
|
'routeApartByOverlap', 'overlapOnlySwitch', 'overlapSwitchNpOnly', 'overlapSignalOppositeSwitchNpOnly', 'overlapOnlyOneSwitch',
|
||||||
|
'generateCycle', 'routeButton', 'likeHa1', 'getNearlySignal', 'overlapSettingByTrigger', 'generateFls', 'signalApproachNotPassPreSignal',
|
||||||
|
'generateDestination'
|
||||||
|
],
|
||||||
|
multipleList: ['sharingECStations'],
|
||||||
selectList: [],
|
selectList: [],
|
||||||
numberList: ['overlapReleaseTime', 'routeReleaseTime'],
|
numberList: ['overlapReleaseTime', 'routeReleaseTime'],
|
||||||
optionsMap: {
|
optionsMap: {
|
||||||
@ -126,14 +123,25 @@ export default {
|
|||||||
getNearlySignal: '生成进路信号按钮,进路信号按钮是否取最近的一个信号机',
|
getNearlySignal: '生成进路信号按钮,进路信号按钮是否取最近的一个信号机',
|
||||||
overlapSettingByTrigger: '延续保护的建立方式:是-通过触发建立,否-随进路建立',
|
overlapSettingByTrigger: '延续保护的建立方式:是-通过触发建立,否-随进路建立',
|
||||||
generateFls: '是否生成侧防:是-生成侧防,不要联动道岔,否-不生成侧防,用联动道岔',
|
generateFls: '是否生成侧防:是-生成侧防,不要联动道岔,否-不生成侧防,用联动道岔',
|
||||||
signalApproachNotPassPreSignal:'信号机接近区段不跨过前方同向信号机'
|
signalApproachNotPassPreSignal:'信号机接近区段不跨过前方同向信号机',
|
||||||
|
generateDestination: '是否生成目的地码定义(泰雷兹)',
|
||||||
|
sharingECStations: '共享紧急关闭效果的车站'
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
...mapGetters('map', [
|
||||||
|
'stationList'
|
||||||
|
])
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
async show() {
|
async show() {
|
||||||
|
this.optionsMap.sharingECStations = [];
|
||||||
|
this.stationList.forEach(item => {
|
||||||
|
this.optionsMap.sharingECStations.push({ value: item.code, label: item.name });
|
||||||
|
});
|
||||||
this.dialogVisible = true;
|
this.dialogVisible = true;
|
||||||
this.height = document.documentElement.clientHeight - 180;
|
this.height = document.documentElement.clientHeight - 180;
|
||||||
const map = this.$store.state.map.map;
|
const map = this.$store.state.map.map;
|
||||||
@ -146,6 +154,12 @@ export default {
|
|||||||
this.$set(row, 'focus', true);
|
this.$set(row, 'focus', true);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
getMultipleName(value, options) {
|
||||||
|
const obj = options.find(item => {
|
||||||
|
return item.value === value;
|
||||||
|
});
|
||||||
|
return (obj || {}).label;
|
||||||
|
},
|
||||||
async getList(data) {
|
async getList(data) {
|
||||||
try {
|
try {
|
||||||
if (data) {
|
if (data) {
|
||||||
@ -161,6 +175,9 @@ export default {
|
|||||||
options = this.optionsMap[key];
|
options = this.optionsMap[key];
|
||||||
} else if (this.numberList.indexOf(key) >= 0) {
|
} else if (this.numberList.indexOf(key) >= 0) {
|
||||||
type = 'number';
|
type = 'number';
|
||||||
|
} else if (this.multipleList.indexOf(key) >= 0) {
|
||||||
|
type = 'multiple';
|
||||||
|
options = this.optionsMap[key];
|
||||||
} else {
|
} else {
|
||||||
type = 'input';
|
type = 'input';
|
||||||
}
|
}
|
||||||
|
@ -29,31 +29,31 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
// import RouteOperate from './routeoperate/index';
|
import RouteOperate from './routeoperate/index';
|
||||||
import RoutingOperate from './routingoperate/index';
|
import RoutingOperate from './routingoperate/index';
|
||||||
import BigRoutingOperate from './bigroutingoperate/index';
|
import BigRoutingOperate from './bigroutingoperate/index';
|
||||||
// import AutomaticOperate from './automaticoperate/index';
|
import AutomaticOperate from './automaticoperate/index';
|
||||||
// import PathOperate from './pathoperate/index';
|
// import PathOperate from './pathoperate/index';
|
||||||
// import RunLevelOperate from './runLeveloperate/index';
|
import RunLevelOperate from './runLeveloperate/index';
|
||||||
// import SignalOperate from './signaloperate/index';
|
import SignalOperate from './signaloperate/index';
|
||||||
// import TurnedOperate from './turnedoperate/index';
|
import TurnedOperate from './turnedoperate/index';
|
||||||
// import FlankProtectOperate from './flankProtectOperate/index';
|
import FlankProtectOperate from './flankProtectOperate/index';
|
||||||
// import DwellTimeOperate from './dwellTimeOperate/index';
|
import DwellTimeOperate from './dwellTimeOperate/index';
|
||||||
// import DestinationOperate from './destinationOperate/index';
|
import DestinationOperate from './destinationOperate/index';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'DataRelation',
|
name: 'DataRelation',
|
||||||
components: {
|
components: {
|
||||||
// RouteOperate,
|
RouteOperate,
|
||||||
RoutingOperate,
|
RoutingOperate,
|
||||||
BigRoutingOperate
|
BigRoutingOperate,
|
||||||
// AutomaticOperate,
|
AutomaticOperate,
|
||||||
// RunLevelOperte,
|
// RunLevelOperte,
|
||||||
// FlankProtectOperate
|
FlankProtectOperate,
|
||||||
// PathOperate,
|
// PathOperate,
|
||||||
// SignalOperate,
|
SignalOperate,
|
||||||
// TurnedOperate,
|
TurnedOperate,
|
||||||
// DwellTimeOperate
|
DwellTimeOperate
|
||||||
// DestinationOperate
|
// DestinationOperate
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
@ -73,23 +73,45 @@ export default {
|
|||||||
enabledTab: 'bigRoutingOperate',
|
enabledTab: 'bigRoutingOperate',
|
||||||
oldDevice: null,
|
oldDevice: null,
|
||||||
lazy: true,
|
lazy: true,
|
||||||
tabList:[
|
tabList:[]
|
||||||
// {label: this.$t('map.routeID'), name:'route', menus:RouteOperate},
|
// tabList:[
|
||||||
|
// // {label: this.$t('map.routeID'), name:'route', menus:RouteOperate},
|
||||||
|
|
||||||
// {label: '自动折返', name:'turned', menus:TurnedOperate},
|
// // {label: '自动折返', name:'turned', menus:TurnedOperate},
|
||||||
// {label: '目的地码', name:'destination', menus:DestinationOperate},
|
// // {label: '目的地码', name:'destination', menus:DestinationOperate},
|
||||||
// {label: this.$t('map.automaticSignal'), name:'automatic', menus:AutomaticOperate},
|
// // {label: this.$t('map.automaticSignal'), name:'automatic', menus:AutomaticOperate},
|
||||||
// {label: this.$t('map.signalApprochSection'), name:'signal', menus:SignalOperate},
|
// // {label: this.$t('map.signalApprochSection'), name:'signal', menus:SignalOperate},
|
||||||
{label: '大铁进路', name:'bigRoutingOperate', menus:BigRoutingOperate},
|
// {label: '大铁进路', name:'bigRoutingOperate', menus:BigRoutingOperate},
|
||||||
// {label: '侧防', name:'flankProtect', menus:FlankProtectOperate},
|
// // {label: '侧防', name:'flankProtect', menus:FlankProtectOperate},
|
||||||
{label: this.$t('map.routing'), name:'routing', menus:RoutingOperate}
|
// {label: this.$t('map.routing'), name:'routing', menus:RoutingOperate}
|
||||||
// {label: '停站时间', name:'dwellTime', menus:DwellTimeOperate},
|
// // {label: '停站时间', name:'dwellTime', menus:DwellTimeOperate},
|
||||||
// {label: '设置运行等级', name:'runLevel', menus:RunLevelOperate}
|
// // {label: '设置运行等级', name:'runLevel', menus:RunLevelOperate}
|
||||||
]
|
// ]
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.initLoad();
|
this.initLoad();
|
||||||
|
if (this.$route.query.lineCode == '15') {
|
||||||
|
this.tabList = [
|
||||||
|
{label: '大铁进路', name:'bigRoutingOperate', menus:BigRoutingOperate},
|
||||||
|
{label: this.$t('map.routing'), name:'routing', menus:RoutingOperate}
|
||||||
|
];
|
||||||
|
this.enabledTab = 'bigRoutingOperate';
|
||||||
|
} else {
|
||||||
|
this.tabList = [
|
||||||
|
{label: this.$t('map.routeID'), name:'route', menus:RouteOperate},
|
||||||
|
{label: '自动折返', name:'turned', menus:TurnedOperate},
|
||||||
|
{label: '目的地码', name:'destination', menus:DestinationOperate},
|
||||||
|
{label: this.$t('map.automaticSignal'), name:'automatic', menus:AutomaticOperate},
|
||||||
|
{label: this.$t('map.signalApprochSection'), name:'signal', menus:SignalOperate},
|
||||||
|
{label: '侧防', name:'flankProtect', menus:FlankProtectOperate},
|
||||||
|
{label: this.$t('map.routing'), name:'routing', menus:RoutingOperate},
|
||||||
|
{label: '停站时间', name:'dwellTime', menus:DwellTimeOperate},
|
||||||
|
{label: '设置运行等级', name:'runLevel', menus:RunLevelOperate}
|
||||||
|
// ]
|
||||||
|
];
|
||||||
|
this.enabledTab = 'route';
|
||||||
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
showMap() {
|
showMap() {
|
||||||
|
21
src/views/system/drawingMange/index.vue
Normal file
21
src/views/system/drawingMange/index.vue
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
{{}}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name:'DrawingMange',
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
100
src/views/uploadPdf/bindMap.vue
Normal file
100
src/views/uploadPdf/bindMap.vue
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-dialog v-dialogDrag :title="'['+fileName+'] 绑定地图数据'" :visible.sync="dialogVisible" width="30%" :before-close="handleClose" center class="uploadDialog">
|
||||||
|
<data-form ref="dataform" :form="form" :form-model="formModel" :rules="rules" />
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button type="primary" @click="doSave">{{ $t('global.confirm') }}</el-button>
|
||||||
|
<el-button @click="handleClose">{{ $t('global.cancel') }}</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
<bind-map-info ref="bindMapInfo" :map-list="mapList" @reloadTable="reloadTable" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { getPublishMapList } from '@/api/jmap/map';
|
||||||
|
import { getFileBindInfo } from '@/api/pdf';
|
||||||
|
import BindMapInfo from './bindMapInfo';
|
||||||
|
export default {
|
||||||
|
name:'BindMap',
|
||||||
|
components:{
|
||||||
|
BindMapInfo
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
mapList:[],
|
||||||
|
fileId:'',
|
||||||
|
fileName:'',
|
||||||
|
dialogVisible: false,
|
||||||
|
formModel: {
|
||||||
|
mapId:''
|
||||||
|
}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed:{
|
||||||
|
form() {
|
||||||
|
const form = {
|
||||||
|
labelWidth: '120px',
|
||||||
|
items: [
|
||||||
|
{ prop: 'mapId', label: '选择线路:', type:'select', options: this.mapList, optionValue:'id', optionLabel:'name' }
|
||||||
|
// change: true, onChange: this.handleMap
|
||||||
|
]
|
||||||
|
};
|
||||||
|
return form;
|
||||||
|
},
|
||||||
|
rules() {
|
||||||
|
const crules = {
|
||||||
|
mapId: [
|
||||||
|
{ required: true, message: ' 地图不能为空', trigger: 'blur'},
|
||||||
|
{ required: true, message: ' 地图不能为空', trigger: 'change'}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
return crules;
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
const params = {
|
||||||
|
pageSize: 9999,
|
||||||
|
pageNum: 1
|
||||||
|
};
|
||||||
|
getPublishMapList(params).then(res => {
|
||||||
|
this.mapList = res.data.list || [];
|
||||||
|
});
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
doShow(data) {
|
||||||
|
this.fileId = data.id;
|
||||||
|
this.fileName = data.fileName;
|
||||||
|
this.dialogVisible = true;
|
||||||
|
},
|
||||||
|
handleClose() {
|
||||||
|
this.formModel = {
|
||||||
|
mapId: ''
|
||||||
|
};
|
||||||
|
this.$refs.dataform.resetForm();
|
||||||
|
this.dialogVisible = false;
|
||||||
|
},
|
||||||
|
doSave() {
|
||||||
|
const self = this;
|
||||||
|
this.$refs.dataform.validateForm(() => {
|
||||||
|
if (self.fileId) {
|
||||||
|
getFileBindInfo(self.fileId, self.formModel.mapId).then((res) => {
|
||||||
|
let data = null;
|
||||||
|
if (res.data) {
|
||||||
|
data = res.data;
|
||||||
|
}
|
||||||
|
this.$refs.bindMapInfo.doShow(self.formModel.mapId, self.fileId, data, self.fileName);
|
||||||
|
}).catch(error => {
|
||||||
|
console.log(error);
|
||||||
|
// self.$message.error(`上传PDF失败:${error.message}`);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
reloadTable() {
|
||||||
|
this.handleClose();
|
||||||
|
this.$emit('reloadTable');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
211
src/views/uploadPdf/bindMapInfo.vue
Normal file
211
src/views/uploadPdf/bindMapInfo.vue
Normal file
@ -0,0 +1,211 @@
|
|||||||
|
<template>
|
||||||
|
<el-dialog
|
||||||
|
:title="'['+fileName+'] 绑定地图数据'"
|
||||||
|
:visible.sync="dialogShow"
|
||||||
|
custom-class="content-route"
|
||||||
|
width="100%"
|
||||||
|
:fullscreen="true"
|
||||||
|
top="0px"
|
||||||
|
:before-close="close"
|
||||||
|
:append-to-body="true"
|
||||||
|
>
|
||||||
|
<jlmap-visual ref="jlmapVisual" v-loading="loadingMap" @onMenu="onContextmenu" @onSelect="clickEvent" />
|
||||||
|
<div>
|
||||||
|
<el-form
|
||||||
|
ref="dataForm"
|
||||||
|
:model="formModel"
|
||||||
|
size="small"
|
||||||
|
style="padding: 6px 20px 6px 20px;overflow: hidden;"
|
||||||
|
label-width="130px"
|
||||||
|
>
|
||||||
|
<el-form-item label="地图名称" style="margin-bottom: 0;float: left; width: 300px;">
|
||||||
|
<el-select v-model="formModel.mapId" placeholder="请选择" clearable filterable style="width: 240px;" disabled>
|
||||||
|
<el-option
|
||||||
|
v-for="item in mapList"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="设备类型" style="margin-bottom: 0;float: left; width:350px;margin-top:20px">
|
||||||
|
<el-select v-model="formModel.deviceTypes" placeholder="请选择" filterable clearable multiple style="width: 240px;">
|
||||||
|
<el-option
|
||||||
|
v-for="item in deviceTypeList"
|
||||||
|
:key="item.code"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.code"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="设备id" style="margin-bottom: 0;float: left; width:350px;margin-top:20px">
|
||||||
|
<el-tag
|
||||||
|
v-for="tag in formModel.deviceIds"
|
||||||
|
:key="tag"
|
||||||
|
closable
|
||||||
|
:disable-transitions="false"
|
||||||
|
class="eachTag"
|
||||||
|
@close="handleClose(tag)"
|
||||||
|
>
|
||||||
|
{{ getDeviceName(tag) }}
|
||||||
|
</el-tag>
|
||||||
|
<el-button
|
||||||
|
:type=" field === 'selectDevice' ? 'danger' : 'primary'"
|
||||||
|
@click="hover('selectDevice')"
|
||||||
|
>{{ $t('map.activate') }}</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-button style="margin-left: 190px;margin-top: 30px; " type="primary" size="medium" @click="create">创建</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { loadMapDataById } from '@/utils/loaddata';
|
||||||
|
import { bindUploadFile } from '@/api/pdf';
|
||||||
|
import JlmapVisual from '@/views/newMap/jlmapNew/index';
|
||||||
|
export default {
|
||||||
|
name:'BindMapInfo',
|
||||||
|
components: {
|
||||||
|
JlmapVisual
|
||||||
|
},
|
||||||
|
props:{
|
||||||
|
mapList:{
|
||||||
|
type:Array,
|
||||||
|
required:true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
dialogShow:false,
|
||||||
|
mapId:null,
|
||||||
|
fileName:'',
|
||||||
|
loadingMap:false,
|
||||||
|
field:'',
|
||||||
|
formModel:{
|
||||||
|
fileId:'',
|
||||||
|
mapId:'',
|
||||||
|
deviceTypes:[],
|
||||||
|
deviceIds:[]
|
||||||
|
},
|
||||||
|
deviceTypeList: [
|
||||||
|
{ label: '区段', value: 'sectionList', code: 'SECTION' },
|
||||||
|
{ label: '道岔', value: 'switchList', code: 'SWITCH' },
|
||||||
|
{ label: '信号机', value: 'signalList', code: 'SIGNAL' },
|
||||||
|
{ label: '车站', value: 'stationList', code: 'STATION' },
|
||||||
|
{ label: '站台', value: 'stationStandList', code: 'STAND' },
|
||||||
|
{ label: '屏蔽门', value: 'psdList', code: 'PSD' },
|
||||||
|
{ label: '列车', value: 'trainList', code: 'TRAIN' }
|
||||||
|
]
|
||||||
|
};
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
'$store.state.app.width': function(val) {
|
||||||
|
this.setWindowSize();
|
||||||
|
},
|
||||||
|
'$store.state.app.windowSizeCount': function() {
|
||||||
|
this.setWindowSize();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
doShow(mapId, fileId, data, fileName) {
|
||||||
|
if (data) {
|
||||||
|
this.formModel.deviceTypes = data.deviceTypes;
|
||||||
|
this.formModel.deviceIds = data.deviceIds || [];
|
||||||
|
}
|
||||||
|
this.fileName = fileName;
|
||||||
|
this.formModel.mapId = mapId;
|
||||||
|
this.formModel.fileId = fileId;
|
||||||
|
this.setWindowSize();
|
||||||
|
this.mapId = mapId;
|
||||||
|
this.dialogShow = true;
|
||||||
|
this.loadInitPage();
|
||||||
|
},
|
||||||
|
close() {
|
||||||
|
this.formModel = {
|
||||||
|
fileId:'',
|
||||||
|
mapId:'',
|
||||||
|
deviceTypes:[],
|
||||||
|
deviceIds:[]
|
||||||
|
};
|
||||||
|
this.dialogShow = false;
|
||||||
|
},
|
||||||
|
onContextmenu() {
|
||||||
|
|
||||||
|
},
|
||||||
|
handleClose(tag) {
|
||||||
|
this.formModel.deviceIds.splice(this.formModel.deviceIds.indexOf(tag), 1);
|
||||||
|
},
|
||||||
|
hover(field) {
|
||||||
|
this.field = field === this.field ? '' : field;
|
||||||
|
},
|
||||||
|
clickEvent(em) {
|
||||||
|
if (this.field.toUpperCase() === 'selectDevice'.toUpperCase()) {
|
||||||
|
const device = this.getDeviceByEm(em);
|
||||||
|
this.formModel.deviceIds.push(device.code);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 获取设备数据
|
||||||
|
getDeviceByEm(em) {
|
||||||
|
var device = this.$store.getters['map/getDeviceByCode'](em.deviceCode) || null;
|
||||||
|
if (device) {
|
||||||
|
device._viewVal = em.val;
|
||||||
|
}
|
||||||
|
return device;
|
||||||
|
},
|
||||||
|
getDeviceName(code) {
|
||||||
|
const device = this.$store.getters['map/getDeviceByCode'](code);
|
||||||
|
return device ? device.name + '(' + device.code + ')' : '';
|
||||||
|
},
|
||||||
|
loadInitPage() {
|
||||||
|
this.mapId && loadMapDataById(this.mapId, 'preview');
|
||||||
|
},
|
||||||
|
setWindowSize() {
|
||||||
|
this.$nextTick(() => {
|
||||||
|
let width;
|
||||||
|
if (this.type == 'generateRouting') {
|
||||||
|
width = this.$store.state.app.width - 500;
|
||||||
|
} else {
|
||||||
|
width = this.$store.state.app.width * 0.7;
|
||||||
|
|
||||||
|
}
|
||||||
|
const height = this.$store.state.app.height - 49;
|
||||||
|
this.$store.dispatch('config/resize', { width, height });
|
||||||
|
});
|
||||||
|
},
|
||||||
|
create() {
|
||||||
|
this.$refs.dataForm.validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
const data = {
|
||||||
|
fileId:this.formModel.fileId,
|
||||||
|
mapId:this.formModel.mapId,
|
||||||
|
deviceTypes:this.formModel.deviceTypes,
|
||||||
|
deviceIds:this.formModel.deviceIds
|
||||||
|
};
|
||||||
|
bindUploadFile(data).then((res) => {
|
||||||
|
this.$message.success('绑定成功');
|
||||||
|
this.close();
|
||||||
|
this.$emit('reloadTable');
|
||||||
|
}).catch(error => {
|
||||||
|
console.log(error);
|
||||||
|
this.$message.error(`绑定失败:${error.message}`);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="scss">
|
||||||
|
.content-route .el-dialog__body {
|
||||||
|
padding: 0 !important;
|
||||||
|
overflow: hidden !important;
|
||||||
|
height:100%
|
||||||
|
}
|
||||||
|
.el-dialog.is-fullscreen.content-route{
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
.eachTag{margin-left:10px;margin-top:10px}
|
||||||
|
</style>
|
236
src/views/uploadPdf/edit.vue
Normal file
236
src/views/uploadPdf/edit.vue
Normal file
@ -0,0 +1,236 @@
|
|||||||
|
<template>
|
||||||
|
<el-dialog v-dialogDrag :title="title" :visible.sync="dialogVisible" width="30%" :before-close="handleClose" center class="uploadDialog">
|
||||||
|
<data-form ref="dataform" :form="form" :form-model="formModel" :rules="rules" />
|
||||||
|
<div class="fileError">{{ message }}</div>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button type="primary" @click="doSave">{{ $t('global.confirm') }}</el-button>
|
||||||
|
<el-button @click="handleClose">{{ $t('global.cancel') }}</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { postUploadFile, putUploadFile } from '@/api/pdf';
|
||||||
|
// import { getPublishMapDetailById, getPublishMapVersionById } from '@/api/jmap/map';
|
||||||
|
// import { dbReadData, dbAddData, dbUpdateData } from '@/utils/indexedDb';
|
||||||
|
// uploadFile
|
||||||
|
import { meansUrl } from '@/api/upload';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'TrainingDetailEdit',
|
||||||
|
props: {
|
||||||
|
type: {
|
||||||
|
type: String,
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
dialogVisible: false,
|
||||||
|
formModel: {
|
||||||
|
upload: '',
|
||||||
|
filePath: '',
|
||||||
|
fileType: 'DRAWING',
|
||||||
|
fileName:''
|
||||||
|
},
|
||||||
|
fileList: [],
|
||||||
|
formData: '',
|
||||||
|
id: '',
|
||||||
|
message:''
|
||||||
|
// deviceTypeList: [
|
||||||
|
// { label: '区段', value: 'sectionList', code: 'SECTION' },
|
||||||
|
// { label: '道岔', value: 'switchList', code: 'SWITCH' },
|
||||||
|
// { label: '信号机', value: 'signalList', code: 'SIGNAL' },
|
||||||
|
// { label: '车站', value: 'stationList', code: 'STATION' },
|
||||||
|
// { label: '站台', value: 'stationStandList', code: 'STAND' },
|
||||||
|
// { label: '屏蔽门', value: 'psdList', code: 'PSD' },
|
||||||
|
// { label: '列车', value: 'trainList', code: 'TRAIN' }
|
||||||
|
// ],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
action() {
|
||||||
|
return `${process.env.VUE_APP_UPLOAD_API}${meansUrl}`;
|
||||||
|
},
|
||||||
|
form() {
|
||||||
|
const form = {
|
||||||
|
labelWidth: '120px',
|
||||||
|
items: [
|
||||||
|
// { prop: 'mapId', label: '选择线路:', type:'select', options: this.mapList, optionValue:'id', optionLabel:'name', change: true, onChange: this.handleMap },
|
||||||
|
// { prop: 'deviceTypes', label: '选择设备类型:', type:'select', options: this.deviceTypeList, optionValue:'value', optionLabel:'label', change: true, onChange: this.handleDevice },
|
||||||
|
// { prop: 'deviceIds', label: '选择设备:', type:'select', multiple: true, options: this.deviceCodesList, optionValue:'code', optionLabel:'name' },
|
||||||
|
{ prop: 'fileName', label: '文件名:', type:'text', show:true, rightWidth:true, required:true },
|
||||||
|
{ prop: 'upload', label: '上传:', type:'uploadPicture', fileList: this.fileList, show: this.type == 'ADD', action: this.action, onChange: this.onChange, onSuccess: this.onSuccess }
|
||||||
|
]
|
||||||
|
};
|
||||||
|
return form;
|
||||||
|
},
|
||||||
|
rules() {
|
||||||
|
const crules = {
|
||||||
|
fileName: [
|
||||||
|
{ required: true, message: '文件名不能为空', trigger: 'blur'}
|
||||||
|
]
|
||||||
|
// upload: [
|
||||||
|
// { required: true, message: '请上传文件', trigger: 'onChange' }
|
||||||
|
// ]
|
||||||
|
};
|
||||||
|
return crules;
|
||||||
|
},
|
||||||
|
title() {
|
||||||
|
if (this.type === 'ADD') {
|
||||||
|
return '上传PDF';
|
||||||
|
} else {
|
||||||
|
return '更新PDF';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async show(data) {
|
||||||
|
this.dialogVisible = true;
|
||||||
|
if (this.type != 'ADD') {
|
||||||
|
this.id = data.id;
|
||||||
|
this.formModel = {
|
||||||
|
upload: '',
|
||||||
|
fileName:data.fileName,
|
||||||
|
filePath: data.filePath
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
this.formModel = {
|
||||||
|
upload: '',
|
||||||
|
filePath: '',
|
||||||
|
fileName:''
|
||||||
|
};
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// async handleMap(mapId) {
|
||||||
|
// if (mapId) {
|
||||||
|
// if (mapId != this.rowData.mapId) {
|
||||||
|
// this.formModel.deviceIds = [];
|
||||||
|
// this.formModel.deviceTypes = '';
|
||||||
|
// }
|
||||||
|
// return new Promise(async (resolve, reject) => {
|
||||||
|
// const resp = await getPublishMapVersionById(mapId);
|
||||||
|
// const version = resp.data;
|
||||||
|
// dbReadData('mapData', mapId, version, async (mapData, version) =>{
|
||||||
|
// if (mapData && mapData.version == version) {
|
||||||
|
// this.graphDataNew = mapData.graphDataNew;
|
||||||
|
// resolve();
|
||||||
|
// } else if (mapData) {
|
||||||
|
// const res = await getPublishMapDetailById(mapId);
|
||||||
|
// this.graphDataNew = res.data.graphDataNew;
|
||||||
|
// dbUpdateData('mapData', res.data);
|
||||||
|
// resolve();
|
||||||
|
// } else {
|
||||||
|
// const res = await getPublishMapDetailById(mapId);
|
||||||
|
// this.graphDataNew = res.data.graphDataNew;
|
||||||
|
// dbAddData('mapData', res.data);
|
||||||
|
// resolve();
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
// });
|
||||||
|
// } else {
|
||||||
|
// this.formModel.deviceIds = [];
|
||||||
|
// this.formModel.mapId = '';
|
||||||
|
// this.formModel.deviceTypes = '';
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// handleDevice(type) {
|
||||||
|
// if (type) {
|
||||||
|
// if (type != this.rowData.deviceTypes) {
|
||||||
|
// this.formModel.deviceIds = [];
|
||||||
|
// }
|
||||||
|
// this.deviceCodesList = this.graphDataNew[type].map(el => {
|
||||||
|
// return {
|
||||||
|
// code: el.code,
|
||||||
|
// name: `${el.name}(${el.code})`
|
||||||
|
// };
|
||||||
|
// });
|
||||||
|
// } else {
|
||||||
|
// this.formModel.deviceIds = [];
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// uploadFile(file) {
|
||||||
|
// this.formData.append('file', file.file);
|
||||||
|
// },
|
||||||
|
onSuccess(res, file) {
|
||||||
|
this.formModel.filePath = res.data;
|
||||||
|
this.message = '';
|
||||||
|
},
|
||||||
|
doSave() {
|
||||||
|
const self = this;
|
||||||
|
this.$refs.dataform.validateForm(() => {
|
||||||
|
if (self.type == 'ADD') {
|
||||||
|
if (this.formModel.filePath) {
|
||||||
|
self.create();
|
||||||
|
} else {
|
||||||
|
this.message = '请上传文件';
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
self.update();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
create() {
|
||||||
|
const self = this;
|
||||||
|
const data = {
|
||||||
|
fileType: 'DRAWING',
|
||||||
|
filePath: this.formModel.filePath,
|
||||||
|
fileName:this.formModel.fileName
|
||||||
|
};
|
||||||
|
postUploadFile(data).then((res) => {
|
||||||
|
self.$message.success('上传PDF成功!');
|
||||||
|
self.handleClose();
|
||||||
|
self.$emit('reloadTable');
|
||||||
|
}).catch(error => {
|
||||||
|
console.log(error);
|
||||||
|
self.$message.error(`上传PDF失败:${error.message}`);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
update() {
|
||||||
|
const self = this;
|
||||||
|
const data = {
|
||||||
|
id: this.id,
|
||||||
|
fileType: 'DRAWING',
|
||||||
|
fileName:this.formModel.fileName,
|
||||||
|
filePath: this.formModel.filePath
|
||||||
|
};
|
||||||
|
putUploadFile(data).then(() => {
|
||||||
|
self.$message.success('更新PDF成功!');
|
||||||
|
self.handleClose();
|
||||||
|
self.$emit('reloadTable');
|
||||||
|
}).catch(error => {
|
||||||
|
self.$message.error(`更新PDF失败:${error.message}`);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
handleClose() {
|
||||||
|
this.message = '';
|
||||||
|
this.formModel = {
|
||||||
|
upload: '',
|
||||||
|
filePath: '',
|
||||||
|
fileName:''
|
||||||
|
};
|
||||||
|
this.$refs.dataform.resetForm();
|
||||||
|
this.dialogVisible = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.uploadDialog{
|
||||||
|
/deep/ {
|
||||||
|
.el-select--medium{
|
||||||
|
width: 300px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fileError{
|
||||||
|
color: red;
|
||||||
|
font-size: 13px;
|
||||||
|
margin-left: 122px;
|
||||||
|
vertical-align: top;
|
||||||
|
display: inline-block;
|
||||||
|
margin-top: -10px;
|
||||||
|
}
|
||||||
|
</style>
|
222
src/views/uploadPdf/list.vue
Normal file
222
src/views/uploadPdf/list.vue
Normal file
@ -0,0 +1,222 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<!-- <QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" /> -->
|
||||||
|
<el-card>
|
||||||
|
<el-form
|
||||||
|
ref="queryForm"
|
||||||
|
size="small"
|
||||||
|
style="padding: 6px 20px 6px 20px;overflow: hidden;"
|
||||||
|
>
|
||||||
|
<!-- <el-form-item label="地图" style="margin-bottom: 0;float: left; width: 300px;">
|
||||||
|
<el-select v-model="formModel.mapId" placeholder="请选择" clearable filterable style="width: 240px;" @change="handleMap">
|
||||||
|
<el-option
|
||||||
|
v-for="item in mapList"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item> -->
|
||||||
|
<!-- <el-form-item label="设备类型" style="margin-bottom: 0;float: left; width:350px;">
|
||||||
|
<el-select v-model="formModel.deviceType" placeholder="请选择" filterable clearable style="width: 240px;" @change="handleDevice">
|
||||||
|
<el-option
|
||||||
|
v-for="item in deviceTypeList"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item> -->
|
||||||
|
<!-- <el-form-item label="设备id" style="margin-bottom: 0;float: left; width: 300px;">
|
||||||
|
<el-select v-model="formModel.deviceId" placeholder="请选择" filterable clearable style="width: 200px;">
|
||||||
|
<el-option
|
||||||
|
v-for="item in deviceIdList"
|
||||||
|
:key="item.code"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.code"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item> -->
|
||||||
|
<el-button style="margin-right: 10px; float: right;" type="primary" size="small" @click="createTitle">创建</el-button>
|
||||||
|
<el-button style="margin-right: 10px; float: right;" type="primary" size="small" @click="query">查询</el-button>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<el-table :data="tableData" border style="width: 100%">
|
||||||
|
<!-- <el-table-column label="线路">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{ getMapName(scope.row.mapId) }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column> -->
|
||||||
|
<!-- <el-table-column label="类型">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{ scope.row.deviceTypes }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="设备">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-tag v-for="(item, index) in scope.row.deviceIds" :key="index" class="deviceIdTag">{{ item }}</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column> -->
|
||||||
|
<el-table-column label="pdf名称" prop="fileName" />
|
||||||
|
<el-table-column label="路径" prop="filePath" />
|
||||||
|
<el-table-column label="时间" prop="createTime" />
|
||||||
|
<el-table-column label="操作" width="450">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<!-- <el-button size="mini" @click="handleEdit(scope.$index, scope.row)">编辑</el-button> -->
|
||||||
|
<el-button size="mini" type="primary" @click="handleBind(scope.$index, scope.row)">绑定</el-button>
|
||||||
|
<el-button size="mini" type="success" @click="handleUpdate(scope.$index, scope.row)">更新</el-button>
|
||||||
|
<!-- <el-button size="mini" @click="handlePublish(scope.$index, scope.row)">发布</el-button> -->
|
||||||
|
<el-button size="mini" type="danger" @click="handleDelete(scope.$index, scope.row)">删除</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<Edit ref="edits" type="ADD" @reloadTable="reloadTable" />
|
||||||
|
<Edit ref="edit" type="EDIT" @reloadTable="reloadTable" />
|
||||||
|
<Bind-Map ref="bindMap" @reloadTable="reloadTable" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// import { getPublishMapDetailById, getPublishMapVersionById } from '@/api/jmap/map';
|
||||||
|
import { getUploadFile, deleteUploadFile } from '@/api/pdf';
|
||||||
|
// import { dbReadData, dbAddData, dbUpdateData } from '@/utils/indexedDb';
|
||||||
|
import Edit from './edit';
|
||||||
|
import BindMap from './bindMap';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'CacheControl',
|
||||||
|
components: {
|
||||||
|
Edit,
|
||||||
|
BindMap
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableData: [],
|
||||||
|
// formModel: {
|
||||||
|
// mapId: '',
|
||||||
|
// deviceType:'',
|
||||||
|
// deviceId:''
|
||||||
|
// },
|
||||||
|
// mapList: [],
|
||||||
|
// graphDataNew:null,
|
||||||
|
deviceIdList:[]
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.query();
|
||||||
|
// getPublishMapList(params).then(res => {
|
||||||
|
// // this.mapList = res.data.list.filter(el => !el.project );
|
||||||
|
// this.mapList = res.data.list || [];
|
||||||
|
// // if (this.mapList.length > 0) { this.formModel.mapId = this.mapList[0].id; this.handleMap(this.formModel.mapId); }
|
||||||
|
// });
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
query() {
|
||||||
|
this.reloadTable();
|
||||||
|
},
|
||||||
|
// getMapName(val) {
|
||||||
|
// if (this && this.mapList.length) {
|
||||||
|
// const data = this.mapList.find(el => el.id == val);
|
||||||
|
// return data.name;
|
||||||
|
// }
|
||||||
|
// return val;
|
||||||
|
// },
|
||||||
|
createTitle() {
|
||||||
|
this.$refs.edits.show();
|
||||||
|
},
|
||||||
|
// // 编辑
|
||||||
|
// handleEdit(row, data) {
|
||||||
|
// this.$router.push({path : '/editor', query: {docId: data.id, draft: 1}});
|
||||||
|
// },
|
||||||
|
// 更新标题
|
||||||
|
handleUpdate(index, data) {
|
||||||
|
this.$refs.edit.show(data);
|
||||||
|
},
|
||||||
|
// // 草稿发布
|
||||||
|
// handlePublish(row, data) {
|
||||||
|
// console.log(data);
|
||||||
|
// putDocDraftByIdPublish(data.id).then(res => {
|
||||||
|
// this.$message.success('创建文章成功!');
|
||||||
|
// this.reloadTable();
|
||||||
|
// }).catch(error => {
|
||||||
|
// this.$message.error(`发布失败: ${error.data}`);
|
||||||
|
// });
|
||||||
|
// },
|
||||||
|
handleBind(index, data) {
|
||||||
|
this.$refs.bindMap.doShow(data);
|
||||||
|
},
|
||||||
|
handleDelete(index, data) {
|
||||||
|
this.$confirm('是否确认删除?', this.$t('tip.hint'), {
|
||||||
|
confirmButtonText: '确认',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning'
|
||||||
|
}).then(() => {
|
||||||
|
deleteUploadFile(data.id).then(res => {
|
||||||
|
this.$message.success('删除pdf成功!');
|
||||||
|
this.reloadTable();
|
||||||
|
}).catch(error => {
|
||||||
|
this.$message.error(`删除失败: ${error.data}`);
|
||||||
|
});
|
||||||
|
}).catch(() => {});
|
||||||
|
},
|
||||||
|
reloadTable() {
|
||||||
|
this.tableData = [];
|
||||||
|
getUploadFile({}).then(res => {
|
||||||
|
this.tableData = res.data;
|
||||||
|
// this.tableData.forEach(each=>{
|
||||||
|
// const deviceTypeName = this.deviceTypeList.find(type=>{ return type.code == each.deviceTypes[0]; }) || {label:''};
|
||||||
|
// each.deviceTypes = deviceTypeName.label;
|
||||||
|
// });
|
||||||
|
}).catch(error => {
|
||||||
|
console.log(error);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// handleMap(mapId) {
|
||||||
|
// this.deviceIdList = [];
|
||||||
|
// this.formModel.deviceId = '';
|
||||||
|
// this.formModel.deviceType = '';
|
||||||
|
// return new Promise(async (resolve, reject) => {
|
||||||
|
// const resp = await getPublishMapVersionById(mapId);
|
||||||
|
// const version = resp.data;
|
||||||
|
// dbReadData('mapData', mapId, version, async (mapData, version) =>{
|
||||||
|
// if (mapData && mapData.version == version) {
|
||||||
|
// this.graphDataNew = mapData.graphDataNew;
|
||||||
|
// resolve();
|
||||||
|
// } else if (mapData) {
|
||||||
|
// const res = await getPublishMapDetailById(mapId);
|
||||||
|
// this.graphDataNew = res.data.graphDataNew;
|
||||||
|
// dbUpdateData('mapData', res.data);
|
||||||
|
// resolve();
|
||||||
|
// } else {
|
||||||
|
// const res = await getPublishMapDetailById(mapId);
|
||||||
|
// this.graphDataNew = res.data.graphDataNew;
|
||||||
|
// dbAddData('mapData', res.data);
|
||||||
|
// resolve();
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
// });
|
||||||
|
// },
|
||||||
|
// handleDevice(type) {
|
||||||
|
// if (type) {
|
||||||
|
// const data = this.graphDataNew[type];
|
||||||
|
// if (data && data.length > 0) {
|
||||||
|
// this.deviceIdList = this.graphDataNew[type].map(el => {
|
||||||
|
// return {
|
||||||
|
// code: el.code,
|
||||||
|
// name: `${el.name}(${el.code})`
|
||||||
|
// };
|
||||||
|
// });
|
||||||
|
// } else {
|
||||||
|
// this.deviceIdList = [];
|
||||||
|
// }
|
||||||
|
// } else {
|
||||||
|
// this.formModel.deviceId = '';
|
||||||
|
// this.deviceIdList = [];
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.deviceIdTag{margin-right:5px;}
|
||||||
|
</style>
|
File diff suppressed because it is too large
Load Diff
BIN
static/lesson3d/mst.png
Normal file
BIN
static/lesson3d/mst.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 11 KiB |
BIN
static/lesson3d/nextbutton.png
Normal file
BIN
static/lesson3d/nextbutton.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.9 KiB |
Binary file not shown.
Before Width: | Height: | Size: 4.0 KiB |
Loading…
Reference in New Issue
Block a user