Compare commits

..

62 Commits

Author SHA1 Message Date
fan
cc1a9817ab 赛总指示调整 2023-07-21 09:43:52 +08:00
fan
837bf3a870 赛总指示调整 2023-07-20 14:43:46 +08:00
fan
23a2447181 赛总指示调整 2023-07-20 11:10:59 +08:00
fan
6142c2e90e 赛总指示调整 2023-07-13 17:16:14 +08:00
fan
4bfa9c78b8 代码调整 2023-07-11 14:33:54 +08:00
fan
0093b8bae1 代码调整 2023-07-11 14:17:13 +08:00
fan
de898b77ed 代码调整 2023-07-11 13:36:36 +08:00
fan
617aa98149 Merge branch 'thailand' of https://git.code.tencent.com/lian-cbtc/jl-client into thailand 2023-07-11 11:23:02 +08:00
fan
0297144b16 代码调整 2023-07-11 11:22:41 +08:00
de0d06c994 Merge remote-tracking branch 'origin/thailand' into thailand 2023-07-10 14:17:51 +08:00
91ded59d7f 修改Initialisation->Initialization 2023-07-10 14:17:37 +08:00
Yuan
008d4ebac0 操作计划详情 2023-07-10 14:13:09 +08:00
fan
f17a54b860 代码调整 2023-07-10 13:19:51 +08:00
fan
78122f6e7a 代码调整 2023-07-10 10:48:00 +08:00
fan
7ff2271c38 代码调整 2023-07-10 10:22:27 +08:00
fan
502a994451 代码调整 2023-07-07 18:03:03 +08:00
fan
104496ac5a 代码调整 2023-07-07 17:07:51 +08:00
fan
977d8df4b6 代码调整 2023-07-07 16:33:22 +08:00
Yuan
f2cdfe5ee1 Merge branch 'thailand' of git.code.tencent.com:lian-cbtc/jl-client into thailand 2023-07-07 16:25:24 +08:00
Yuan
1580b0a509 泰国运行计划 2023-07-07 16:25:20 +08:00
fan
1555d9f401 Merge branch 'thailand' of https://git.code.tencent.com/lian-cbtc/jl-client into thailand 2023-07-07 11:22:58 +08:00
fan
731c716036 代码调整 2023-07-07 11:22:35 +08:00
Yuan
51e678011c Merge branch 'thailand' of git.code.tencent.com:lian-cbtc/jl-client into thailand 2023-07-06 15:21:50 +08:00
Yuan
7ce62aead4 泰国运行计划界面 2023-07-06 15:19:27 +08:00
fan
8795adbe72 车站调整 2023-07-06 10:24:40 +08:00
fan
d501fe2792 成员一键生成 2023-07-06 09:54:52 +08:00
fan
26d75c1bf3 转英文 2023-07-05 11:12:26 +08:00
fan
fc05f5ef13 设备登录退出路径丢失调整 2023-07-05 10:54:55 +08:00
fan
4d92751f7d 泰国项目调整 2023-07-05 10:42:33 +08:00
fan
c98746317c Merge branch 'thailand' of https://git.code.tencent.com/lian-cbtc/jl-client into thailand 2023-07-05 10:32:47 +08:00
fan
03be9f8f75 泰国项目调整 2023-07-05 10:32:21 +08:00
Yuan
d61deb1de4 Merge branch 'thailand' of git.code.tencent.com:lian-cbtc/jl-client into thailand 2023-07-05 09:51:28 +08:00
Yuan
bb8989ba1a 运行计划设置框 2023-07-05 09:51:25 +08:00
Yuan
4e0fa46cc2 设备类型增加沙盘 2023-07-05 09:50:49 +08:00
fan
b898aee79a 泰国项目调整 2023-07-04 18:05:58 +08:00
fan
b1345badec 泰国项目调整 2023-07-04 13:27:52 +08:00
fan
0cb84ab7aa 泰国路由调整 2023-06-09 10:52:05 +08:00
fan
a64b627982 泰国项目翻译调整 2023-06-05 11:08:35 +08:00
fan
78cbf08eda 泰国项目翻译调整 2023-06-05 11:04:24 +08:00
fan
8b2c00e7fa 列车操作调整 2023-06-05 09:37:31 +08:00
fan
8d2939197f 泰国翻译调整 2023-06-05 09:11:16 +08:00
fan
9648f95d4e Merge remote-tracking branch 'origin/test' into thailand 2023-06-02 17:33:18 +08:00
fan
04b49c870e Merge remote-tracking branch 'origin/test' into thailand 2023-06-02 16:54:47 +08:00
fan
fd5248bf3f 泰国翻译调整 2023-06-02 14:29:43 +08:00
fan
2a85d2e6cf Merge remote-tracking branch 'origin/test' into thailand 2023-06-02 14:27:34 +08:00
fan
c84cc54639 泰国翻译 2023-06-01 16:17:14 +08:00
fan
795e8d8196 泰国翻译 2023-06-01 16:16:20 +08:00
fan
6a9aa02cc3 Merge remote-tracking branch 'origin/test' into thailand
# Conflicts:
#	src/jmapNew/theme/components/menus/dialog/setFault.vue
#	src/jmapNew/theme/datie_01/menus/menuDialog/helpAbout.vue
#	src/jmapNew/theme/datie_02/menus/menuSection.vue
#	src/jmapNew/theme/datie_jd1a/menus/menuDialog/helpAbout.vue
#	src/jmapNew/theme/datie_ksk/menus/menuDialog/helpAbout.vue
#	src/scripts/ConstConfig.js
#	src/views/newMap/display/chatBox.vue
#	src/views/newMap/display/memberManage/membersManage.vue
#	src/views/newMap/display/simulationMenu/simulationMenu.vue
#	src/views/newMap/display/terminals/equipmentConstructionTable.vue
#	src/views/newMap/display/terminals/registerBook.vue
#	src/views/newMap/display/terminals/terminalMenu.vue
#	src/views/newMap/display/trainingList/trainingMenu.vue
#	src/views/newMap/display/trainingList/trainingTip.vue
2023-06-01 16:15:38 +08:00
fan
d8f29517d6 泰国项目i8n报警调整 2023-05-26 10:35:10 +08:00
fan
8a4bc974f4 泰国项目屏蔽会话 2023-05-26 10:06:46 +08:00
fan
65853dcd7b 泰国翻译 2023-05-26 10:02:39 +08:00
fan
641084eb3c Merge remote-tracking branch 'origin/test' into thailand
# Conflicts:
#	src/views/newMap/display/memberManage/addMember.vue
#	src/views/newMap/display/memberManage/membersManage.vue
#	src/views/newMap/display/newChat/chatDialog.vue
#	src/views/newMap/display/simulationMenu/simulationMenu.vue
2023-05-26 10:00:56 +08:00
fan
b4304099fe 泰国翻译526 2023-05-26 09:41:02 +08:00
fan
43f83ac624 泰国翻译again 2023-05-25 17:10:16 +08:00
fan
4c65f22c8a 泰国翻译 2023-05-24 18:01:44 +08:00
fan
334710bb94 Merge remote-tracking branch 'origin/test' into thailand
# Conflicts:
#	src/jmapNew/theme/components/menus/dialog/cmdManage.vue
#	src/jmapNew/theme/datie_01/menus/menuButton.vue
#	src/jmapNew/theme/datie_01/menus/menuSection.vue
#	src/jmapNew/theme/datie_01/menus/menuSignal.vue
#	src/jmapNew/theme/datie_01/menus/menuStation.vue
#	src/jmapNew/theme/datie_01/menus/menuStationStand.vue
#	src/jmapNew/theme/datie_01/menus/menuSwitch.vue
#	src/jmapNew/theme/datie_01/menus/menuTrain.vue
#	src/jmapNew/theme/datie_01/menus/passiveDialog/alarm.vue
#	src/jmapNew/theme/datie_02/menus/ctcWorkMenu.vue
#	src/jmapNew/theme/datie_02/menus/menuPanel.vue
#	src/jmapNew/theme/datie_02/menus/menuSection.vue
#	src/jmapNew/theme/datie_jd1a/menus/dialog/defectiveShunting.vue
#	src/jmapNew/theme/datie_jd1a/menus/dialog/mapVisual.vue
#	src/jmapNew/theme/datie_jd1a/menus/menuButton.vue
#	src/jmapNew/theme/datie_jd1a/menus/menuButtonCtc.vue
#	src/jmapNew/theme/datie_jd1a/menus/menuSection.vue
#	src/jmapNew/theme/datie_jd1a/menus/menuSignal.vue
#	src/jmapNew/theme/datie_jd1a/menus/menuStation.vue
#	src/jmapNew/theme/datie_jd1a/menus/menuStationStand.vue
#	src/jmapNew/theme/datie_jd1a/menus/menuTrain.vue
#	src/jmapNew/theme/datie_jd1a/menus/passiveDialog/alarm.vue
#	src/jmapNew/theme/datie_jd1a/menus/runplanPane.vue
#	src/jmapNew/theme/datie_ksk/menus/dialog/defectiveShunting.vue
#	src/jmapNew/theme/datie_ksk/menus/dialog/mapVisual.vue
#	src/jmapNew/theme/datie_ksk/menus/menuButton.vue
#	src/jmapNew/theme/datie_ksk/menus/menuButtonCtc.vue
#	src/jmapNew/theme/datie_ksk/menus/menuSection.vue
#	src/jmapNew/theme/datie_ksk/menus/menuSignal.vue
#	src/jmapNew/theme/datie_ksk/menus/menuStation.vue
#	src/jmapNew/theme/datie_ksk/menus/menuStationStand.vue
#	src/jmapNew/theme/datie_ksk/menus/menuSwitch.vue
#	src/jmapNew/theme/datie_ksk/menus/menuTrain.vue
#	src/jmapNew/theme/datie_ksk/menus/passiveDialog/alarm.vue
#	src/jmapNew/theme/datie_ksk/menus/runplanPane.vue
#	src/jmapNew/theme/datie_tky/menus/menuSection.vue
#	src/jmapNew/theme/datie_tky/menus/menuSignal.vue
#	src/jmapNew/theme/datie_tky/menus/menuSwitch.vue
#	src/jmapNew/theme/datie_tky/menus/menuTrain.vue
#	src/views/info/personalInfo.vue
#	src/views/newMap/display/exam/examPanel.vue
#	src/views/newMap/display/memberManage/addMember.vue
#	src/views/newMap/display/memberManage/membersManage.vue
#	src/views/newMap/display/simulationMenu/simulationMenu.vue
#	src/views/newMap/display/terminals/terminalMenu.vue
#	src/views/newMap/display/trainingDesign/draftTrainingList.vue
#	src/views/newMap/display/trainingList/testResult.vue
#	src/views/newMap/display/trainingList/trainingMenu.vue
2023-05-24 15:06:06 +08:00
fan
18663fd5bd 泰国翻译 2023-02-22 13:07:56 +08:00
fan
05cebda4cb Merge remote-tracking branch 'origin/test_dispaly' into thailand
# Conflicts:
#	src/jmapNew/theme/datie_02/menus/dialog/applyOrAgreeModeCovert.vue
#	src/jmapNew/theme/datie_02/menus/menuButtonCtc.vue
2023-02-21 17:29:47 +08:00
fan
ba21c4fe95 添加翻译 2023-02-17 15:39:18 +08:00
fan
ec03a5b6b7 Merge remote-tracking branch 'origin/test_dispaly' into thailand
# Conflicts:
#	src/jmapNew/theme/components/menus/dialog/setFault.vue
#	src/jmapNew/theme/datie_01/menus/menuSection.vue
#	src/jmapNew/theme/datie_01/menus/menuSignal.vue
#	src/jmapNew/theme/datie_01/menus/menuStation.vue
#	src/jmapNew/theme/datie_01/menus/menuStationStand.vue
#	src/jmapNew/theme/datie_01/menus/menuSwitch.vue
#	src/jmapNew/theme/datie_01/menus/menuTrain.vue
#	src/jmapNew/theme/datie_02/menus/menuButton.vue
#	src/jmapNew/theme/datie_02/menus/menuButtonCtc.vue
#	src/jmapNew/theme/datie_02/menus/menuSection.vue
#	src/jmapNew/theme/datie_02/menus/menuSignal.vue
#	src/jmapNew/theme/datie_02/menus/menuStation.vue
#	src/jmapNew/theme/datie_02/menus/menuStationStand.vue
#	src/jmapNew/theme/datie_02/menus/menuSwitch.vue
#	src/jmapNew/theme/datie_02/menus/menuTrain.vue
#	src/jmapNew/theme/datie_jd1a/menus/menuSection.vue
#	src/jmapNew/theme/datie_jd1a/menus/menuSignal.vue
#	src/jmapNew/theme/datie_jd1a/menus/menuStation.vue
#	src/jmapNew/theme/datie_jd1a/menus/menuStationStand.vue
#	src/jmapNew/theme/datie_jd1a/menus/menuSwitch.vue
#	src/jmapNew/theme/datie_jd1a/menus/menuTrain.vue
#	src/jmapNew/theme/datie_ksk/menus/menuSection.vue
#	src/jmapNew/theme/datie_ksk/menus/menuSignal.vue
#	src/jmapNew/theme/datie_ksk/menus/menuStation.vue
#	src/jmapNew/theme/datie_ksk/menus/menuStationStand.vue
#	src/jmapNew/theme/datie_ksk/menus/menuSwitch.vue
#	src/jmapNew/theme/datie_ksk/menus/menuTrain.vue
#	src/jmapNew/theme/datie_tky/menus/menuTrain.vue
#	src/views/newMap/display/lineBoard.vue
#	src/views/newMap/display/terminals/registerBook.vue
#	src/views/newMap/display/trainingList/trainingMenu.vue
2023-02-17 10:28:46 +08:00
fan
03c97957f3 代码提交 2023-02-02 18:01:27 +08:00
fan
1fe0f491f8 翻译 2023-01-31 18:10:35 +08:00
505 changed files with 6656 additions and 68671 deletions

View File

@ -1,52 +0,0 @@
---
name: local-test分支构建发布到本地服务器
run-name: ${{ gitea.actor }} is testing out Gitea Actions
on:
push:
branches:
- local-test
jobs:
Build-Publish:
runs-on: joylink-local233
steps:
- name: 检出代码
uses: https://gitea.joylink.club/actions/checkout@v4
with:
submodules: recursive
- name: 设置node环境
uses: https://gitea.joylink.club/actions/local-setup-node@v0.1.1
with:
version: v14.21.3
cache: yarn
cache-dependency-path: yarn.lock
- name: 安装yarn,并build
run: |
node -v
npm config set registry https://registry.npmmirror.com
npm install --global yarn
yarn config set registry https://registry.npmmirror.com
yarn
yarn run buildas local-test
tar czvf ./dist-local-test.tar.gz ./dist
- name: 打包发送到服务器
uses: https://gitea.joylink.club/appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.LOCAL_233_SSH_HOST }}
username: ${{ secrets.LOCAL_233_SSH_USER }}
password: ${{ secrets.LOCAL_233_SSH_PASSWORD }}
port: ${{ secrets.LOCAL_233_SSH_PORT }}
source: ./dist-local-test.tar.gz
target: /home/minio/oss/rt-sim-training-client
overwrite: true
- name: SSH连接并解压发布
uses: https://gitea.joylink.club/appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.LOCAL_233_SSH_HOST }}
port: ${{ secrets.LOCAL_233_SSH_PORT }}
username: ${{ secrets.LOCAL_233_SSH_USER }}
password: ${{ secrets.LOCAL_233_SSH_PASSWORD }}
script: |
cd /home/minio/oss/rt-sim-training-client
rm -rf /usr/local/joylink/client/cbtc
mkdir -p /usr/local/joylink/client
tar xz --strip 2 -C /usr/local/joylink/client -f dist-local-test.tar.gz

View File

@ -1,52 +0,0 @@
name: master分支构建发布到公网服务器
run-name: ${{ gitea.actor }} is testing out Gitea Actions
on:
push:
branches:
- master
jobs:
Build-Publish:
runs-on: joylink-local233
steps:
- name: 检出代码
uses: https://gitea.joylink.club/actions/checkout@v4
with:
submodules: recursive
- name: 设置node环境
uses: https://gitea.joylink.club/actions/local-setup-node@v0.1.1
with:
version: 'v14.21.3'
cache: 'yarn'
cache-dependency-path: 'yarn.lock'
- name: 安装yarn,并build
run: |
node -v
npm config set registry https://registry.npmmirror.com
npm install --global yarn
yarn config set registry https://registry.npmmirror.com
yarn
yarn run build
tar czvf ./dist-master.tar.gz ./dist
- name: 打包发送到服务器
uses: https://gitea.joylink.club/appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.PUB1_DOMAIN_SSH_HOST }}
port: ${{ secrets.PUB1_DOMAIN_SSH_PORT }}
username: ${{ secrets.PUB1_DOMAIN_SSH_USER }}
password: ${{ secrets.PUB1_DOMAIN_SSH_PASSWORD }}
source: ./dist-master.tar.gz
target: /mnt/data/published/rt-sim-training-client
overwrite: true
- name: SSH连接并解压发布
uses: https://gitea.joylink.club/appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.PUB1_DOMAIN_SSH_HOST }}
port: ${{ secrets.PUB1_DOMAIN_SSH_PORT }}
username: ${{ secrets.PUB1_DOMAIN_SSH_USER }}
password: ${{ secrets.PUB1_DOMAIN_SSH_PASSWORD }}
script: |
cd /mnt/data/published/rt-sim-training-client
rm -rf /usr/local/joylink/client/cbtc
mkdir -p /usr/local/joylink/client
tar xz --strip 2 -C /usr/local/joylink/client -f dist-master.tar.gz

1
.gitignore vendored
View File

@ -4,6 +4,7 @@ dist/
npm-debug.log* npm-debug.log*
yarn-debug.log* yarn-debug.log*
yarn-error.log* yarn-error.log*
package-lock.json
tests/**/coverage/ tests/**/coverage/
src/utils/baseUrl.js* src/utils/baseUrl.js*

View File

@ -4,6 +4,3 @@ English | [简体中文](./README-zh.md)
Copyright (c) 2018-present Joylink Copyright (c) 2018-present Joylink
### 项目环境
- "node": "<=14.21.3";
- "webpack": ">=4 < 4.29";

View File

@ -19,8 +19,6 @@
}, },
"dependencies": { "dependencies": {
"@stomp/stompjs": "^5.4.4", "@stomp/stompjs": "^5.4.4",
"@wangeditor/editor": "^5.1.23",
"@wangeditor/editor-for-vue": "^1.0.2",
"axios": "^0.18.0", "axios": "^0.18.0",
"dayjs": "^1.11.5", "dayjs": "^1.11.5",
"echarts": "^4.7.0", "echarts": "^4.7.0",
@ -46,7 +44,6 @@
"vue-i18n": "^8.12.0", "vue-i18n": "^8.12.0",
"vue-quill-editor": "^3.0.6", "vue-quill-editor": "^3.0.6",
"vue-router": "^3.1.6", "vue-router": "^3.1.6",
"vue-video-player": "^5.0.1",
"vuedraggable": "^2.24.3", "vuedraggable": "^2.24.3",
"vuex": "^3.1.0", "vuex": "^3.1.0",
"wangeditor": "^4.6.17", "wangeditor": "^4.6.17",

View File

@ -1,416 +0,0 @@
import request from '@/utils/request';
/**
* 获取竞赛试卷分页列表
* @param {Object} params
* @param {String} params.name 试卷名称
*/
export function getPaperList(params) {
return request({
url: '/api/exercise/race/paper/page',
method: 'GET',
params
});
}
/**
* 创建试卷
* @param {Object} data
* @param {String} data.name 试卷名称
* @param {String} data.desc 基础描述
* @param {Number} data.seasonId 所属赛季id
* @param {Boolean} data.supportCopy 是否支持拷贝
*/
export function createPaper(data) {
return request({
url: '/api/exercise/race/paper',
method: 'POST',
data
});
}
/**
* @param {Object} data 同创建试卷
* @param {Number} id 试卷id
*/
export function editPaper(id, data) {
return request({
url: `/api/exercise/race/paper/${id}`,
method: 'POST',
data
});
}
/**
* @param {Number} id 任务id
*/
export function deletePaper(id) {
return request({
url: `/api/exercise/race/paper/${id}`,
method: 'DELETE'
});
}
/**
* 获取竞赛试卷菜单
* @param {Object} params
* @param {String} params.group 分组ZZ=中职;GZ=高职
*/
export function getPaperMenu(params) {
return request({
url: '/api/exercise/race/paper/menu',
method: 'GET',
params
});
}
/**
* @param {Object} data
* @param {Array} data.modules 所有模块
* @param {Number} data.modules[i].module_name 模块名字
* @param {Number} data.modules[i].duration 考试总时间
* @param {Number} data.modules[i].group 任务分组
* @param {Number} data.modules[i].group.taskIds 此分组中的任务id
* @param {Number} data.modules[i].group.name 此组的名字
* @param {Number} data.modules[i].group.group 此分组的子分组
*/
export function paperModuleTaskSetting(paperId, data) {
return request({
url: `/api/exercise/race/paper/${paperId}/config`,
method: 'POST',
data
});
}
/**
* @param {Number} id 模块id
*/
export function getPaperDetail(id) {
return request({
url: `/api/exercise/race/paper/${id}`,
method: 'GET'
});
}
/**
* @param {Number} id 模块id
*/
export function copyPaper(id) {
console.log(id);
return request({
url: `/api/exercise/race/paper/${id}/copy`,
method: 'PUT'
});
}
/** 查看所有任务数据 */
export function getTaskTreeDatas() {
return request({
url: '/api/exercise/race/task/tree',
method: 'GET'
});
}
/**
* 创建任务
* @param {Object} data
* @param {String} data.name 任务名称
* @param {String} data.desc 基础描述
* @param {String} data.content 考核内容
* @param {String} data.standards 评价标准
* @param {Number} data.parentId 如果是子任务需要父任务的id
*/
export function createTask(data) {
return request({
url: '/api/exercise/race/task',
method: 'POST',
data
});
}
/**
* @param {Object} data 同创建任务
* @param {Number} id 任务id
*/
export function editTask(id, data) {
return request({
url: `/api/exercise/race/task/${id}`,
method: 'POST',
data
});
}
/**
* @param {Number} id 任务id
*/
export function deleteTask(id) {
return request({
url: `/api/exercise/race/task/${id}`,
method: 'DELETE'
});
}
/**
* @param {Number} id 任务id
*/
export function getTaskDetail(id) {
return request({
url: `/api/exercise/race/task/${id}`,
method: 'GET'
});
}
/**
* @param {Number} id 任务id
*/
export function getchildrenTaskDatas(id) {
return request({
url: `/api/exercise/race/task/${id}/children`,
method: 'GET'
});
}
/**
* @param {Array} data
* @param {Number} taskId 任务id
* @param {Number} data[i].bindId 绑定id根据bindtype来区分对应的id
* @param {String} data[i].bindType rule =0评分规则;scene=1场景
* @param {Number} data[i].status 0=绑定 1=解绑
*/
export function bindTask(taskId, data) {
return request({
url: `/api/exercise/race/task/${taskId}/bind`,
method: 'POST',
data
});
}
/**
* @param {Object} data
* @param {Number} data.group 分组 1-高职 2中职
* @param {String} data.term 赛季
* @param {String} data.code 编号
*/
export function addContestSeason(data) {
return request({
url: '/api/exercise/race/season',
method: 'post',
data
});
}
/**
* @param {Object} params
* @param {Number} params.group 分组 1-高职 2中职
* @param {String} params.term 赛季
* @param {String} params.code 编号
*/
export function queryContestSeasonPaged(params) {
return request({
url: '/api/exercise/race/season/page',
method: 'get',
params
});
}
/**
* @param {Object} data
* @param {Number} id 赛季id
* @param {String} data.group 分组 ZZ=中职GZ=高职
* @param {String} data.term 赛季
* @param {String} data.code 编号
*/
export function updateContestSeason(id, data) {
return request({
url: `/api/exercise/race/season/${id}`,
method: 'post',
data
});
}
/**
* @param {Number} id 赛季id
*/
export function deleteContestSeason(id) {
return request({
url: `/api/exercise/race/season/${id}`,
method: 'delete'
});
}
/**
* @param {Object} data
* @param {String} data.name 名称
*/
export function createContextScore(data) {
return request({
url: '/api/exercise/race/score',
method: 'post',
data
});
}
/**
* @param {Object} params
* @param {String} params.name 名称
*/
export function queryContextScorePaged(params) {
return request({
url: '/api/exercise/race/score/page',
method: 'get',
params
});
}
/**
* @param {Number} id 评分id
*/
export function deleteContextScore(id) {
return request({
url: `/api/exercise/race/score/${id}`,
method: 'delete'
});
}
/**
* @param {Number} id 评分id
* @param {Object} data
* @param {Array [object]} data.units 评分单元
* @param {String} data.units[0].text 文字描述
* @param {Number} data.units[0].sceneStepId 场景步骤ID
* @param {Number} data.units[0].score 分值
* @param {String} data.units[0].worker 作业程序
* @param {String} data.units[0].criteria 评分标准
*/
export function updateContextScoreDetail(id, data) {
return request({
url: `/api/exercise/race/score/edit/rule/${id}`,
method: 'post',
data
});
}
/**
* @param {Number} id 评分id
*/
export function getContextScoreDetail(id) {
return request({
url: `/api/exercise/race/score/${id}`,
method: 'get'
});
}
/**
* @param {Object} params
* @param {String} params.type 竞赛类型 local=场景;link=3D
*/
export function queryContestSencePaged(params) {
return request({
url: '/api/exercise/race/scene/page',
method: 'get',
params
});
}
/**
* @param {Number} id 场景id
*/
export function deleteContestSence(id) {
return request({
url: `/api/exercise/race/scene/${id}`,
method: 'delete'
});
}
/**
* @param {Number} id 场景id
*/
export function getContextSenceDetail(id) {
return request({
url: `/api/exercise/race/scene/${id}`,
method: 'get'
});
}
/**
* @param {Object} data
* @param {Number} data.traningPublishId 草稿实训场景id
* @param {String} data.name 大赛场景名称
*/
export function publishContextSence(data) {
return request({
url: `/api/exercise/race/scene/publish/training`,
method: 'post',
data
});
}
/**
* @param {Object} data
* @param {String} data.name 场景名称
* @param {String} data.type Video=视频
* @param {Object} data.scene 大赛场景
* @param {String} data.scene.url 地址
* @param {String} data.scene.fileName 文件名
*/
export function saveSceneVideo(data) {
return request({
url: `/api/exercise/race/scene/custom/edit`,
method: 'post',
data
});
}
/** 场景视频编辑 */
export function editSceneVideo(sceneId, data) {
return request({
url: `/api/exercise/race/scene/custom/${sceneId}/edit`,
method: 'post',
data
});
}
/**
* @param {String} paperId 试卷id
* @param {String} moduleId 模块id
*/
export function getTaskTree(paperId, moduleId) {
return request({
url: `/api/exercise/race/paper/${paperId}/module/${moduleId}/task`,
method: 'get'
});
}
/**
* @param {String} paperId 试卷id
* @param {String} moduleId 模块id
*/
export function beginContestExercise(paperId, moduleId) {
return request({
url: `/api/race/${paperId}/${moduleId}`,
method: 'POST'
});
}
/** 竞赛完成训练 */
export function finishContestExercise() {
return request({
url: '/api/race/finish',
method: 'PUT'
});
}
/** html
* @param {String} id 赛季id
* @param {String} data.htmlContent 内容
*/
export function editSeasonContent(id, data) {
return request({
url: `/api/exercise/race/season/${id}/html`,
method: 'post',
data
});
}
/** html
* @param {String} id 赛季id
*/
export function getSeasonContent(id) {
return request({
url: `/api/exercise/race/season/${id}/html`,
method: 'get'
});
}
export function getTheoryList() {
return request({
url: '/api/exercise/race/paper/questions',
method: 'get'
});
}

View File

@ -344,13 +344,3 @@ export function queryTagList(data) {
data data
}); });
} }
/**
* 获取试卷创建者list
*/
export function queryPaperCreatorList(data) {
return request({
url: `/api/v2/paper/composition/list/creatorInfo`,
method: 'POST',
data
})
}

View File

@ -323,11 +323,3 @@ export function isExistEmail(params) {
}); });
} }
// 成工院第三方登录
export function cgyThirdLogin(data) {
return request({
url: '/api/login/cgy/third',
method: 'post',
data
});
}

View File

@ -15,20 +15,3 @@ export function selectQuestionTypeNum(companyId) {
method: 'get' method: 'get'
}); });
} }
/** 加载场景 */
export function loadRace(simulationId, sceneId) {
return request({
url: `/api/race/${simulationId}/load/${sceneId}`,
method: 'put'
});
}
/** 完成任务 */
export function overTask(taskId, data) {
return request({
url: `/api/race/${taskId}/finish`,
method: 'put',
data
});
}

View File

@ -523,6 +523,29 @@ export function sandTableTrainControl(group, params) {
params params
}); });
} }
/** 设置轨道占用 */
export function setOccupy(simulationId, sectionCodes) {
return request({
url: `/api/sandTable/${simulationId}/occupy`,
method: 'put',
params: { sectionCodes, occupy: true }
})
}
/** 按计划运行 */
export function sandTableRunAsPlan(simulationId, data) {
return request({
url: `/api/sandTable/${simulationId}/runAsPlan`,
method: 'put',
data,
})
}
/** 获取运行计划详情 */
export function getSandTableRunPlanDetail(simulationId) {
return request({
url: `/api/sandTable/${simulationId}/runPlanDetail`,
method: 'get',
});
}
/** 条件查询仿真中的ISCS资源 */ /** 条件查询仿真中的ISCS资源 */
export function queryIscsResourcesByGroup(group, params) { export function queryIscsResourcesByGroup(group, params) {
return request({ return request({
@ -583,27 +606,3 @@ export function enterSimulationByTeacher(group) {
method: 'post' method: 'post'
}); });
} }
/** 切换角色后触发消息 */
export function getUnreceivedMessages(simulationId, memberId) {
return request({
url: `/simulation/${simulationId}/${memberId}/unreceivedMessages`,
method: 'get'
});
}
/** 控制叶佳供货的小车 */
export function controlYjTrain(simulationId, right) {
return request({
url: `/api/realDevice/${simulationId}/train`,
method: 'put',
params: { right }
});
}
/** 创建仿真不通过功能id */
export function createSimulationNoFunction(mapId, data) {
return request({
url: `/simulation/new/${mapId}`,
method: 'post',
data
});
}

View File

@ -32,21 +32,14 @@ export function updateTraining(data) {
data data
}); });
} }
/** 更新发布实训信息(标签 描述, 标题) */ /** 更新实训标签 */
export function updateTrainingInfo(data) { export function updateTrainingLabel(data) {
return request({ return request({
url: `/api/v2/training/published/update`, url: `/api/v2/training/published/update/label`,
method: 'put', method: 'put',
data data
}); });
} }
/** 已发布实训转为草稿 */
export function saveAsTrainingDraft(trainingId) {
return request({
url: `/api/v2/training/published/${trainingId}/saveAsDraft`,
method: 'post'
});
}
/** 查询步骤列表 */ /** 查询步骤列表 */
export function getTrainingStepList(trainingId) { export function getTrainingStepList(trainingId) {
return request({ return request({

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

View File

@ -4,10 +4,10 @@
<qrcode-vue v-loading="loading" :value="url" :size="400" /> <qrcode-vue v-loading="loading" :value="url" :size="400" />
</div> </div>
<div v-if="group" class="qrcodeGroup"> <div v-if="group" class="qrcodeGroup">
<span>{{ $t('global.roomId')+group }}</span> <span>{{ 'Simulation number:'+group }}</span>
</div> </div>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="doClose">{{ $t('global.close') }}</el-button> <el-button @click="doClose">Close</el-button>
</span> </span>
</el-dialog> </el-dialog>
</template> </template>

View File

@ -32,7 +32,7 @@ import trainingManage from './trainingManage';
import newRouter from './newRouter'; import newRouter from './newRouter';
export default { export default {
enLocale, ...enLocale,
map, map,
global, global,
router, router,

View File

@ -38,12 +38,6 @@ export default {
permissionManage: 'Permission', permissionManage: 'Permission',
authorityTransferManage: 'Privilege distribution management', authorityTransferManage: 'Privilege distribution management',
userRulesManage: 'User Rights Statistics', userRulesManage: 'User Rights Statistics',
contestDataManage:'Contest data management',
contestSubjectManage:'contest subject management',
contestTaskManage:'contest task management',
contestSceneManage:'contest scene management',
contestTaskScoreManage:'contest task score management',
contestSeasonManage:'contest season management',
fileManage: 'File Manage', fileManage: 'File Manage',
frontResourceManage: 'Front-End Resource Management', frontResourceManage: 'Front-End Resource Management',
iscsPrerecordManage: 'ISCS Advance record management', iscsPrerecordManage: 'ISCS Advance record management',

View File

@ -107,6 +107,4 @@ export default {
iscsResourcesManage: 'ISCS Resources Manage', iscsResourcesManage: 'ISCS Resources Manage',
projectManage: 'Project Manage', projectManage: 'Project Manage',
frontProjectConfigManage: 'Front Project Config Manage', frontProjectConfigManage: 'Front Project Config Manage',
training: 'Training', }
theory: 'Theory'
};

View File

@ -51,7 +51,7 @@ export default {
menuSignal: { menuSignal: {
routeSelect: '进路选排', routeSelect: '进路选排',
routeCancel: '进路取消', routeCancel: '进路取消',
signalBlock: '信号封', signalBlock: '信号封',
signalDeblock: '信号解封', signalDeblock: '信号解封',
signalReopen: '信号重开', signalReopen: '信号重开',
guideRouteHandle: '引导进路办理', guideRouteHandle: '引导进路办理',

View File

@ -1,7 +1,7 @@
export default { export default {
simulation: '仿真', simulation: 'Simulation',
multiplayerSimulation: '多人仿真', multiplayerSimulation: '多人仿真',
regulationSimulation: '监管仿真', regulationSimulation: 'Regulation of the simulation',
teachingManagement: '教学管理', teachingManagement: '教学管理',
classroom: '班级管理', classroom: '班级管理',
student: '学生管理', student: '学生管理',
@ -38,12 +38,6 @@ export default {
permissionManage: '权限管理', permissionManage: '权限管理',
authorityTransferManage: '权限分发管理', authorityTransferManage: '权限分发管理',
userRulesManage: '用户权限管理', userRulesManage: '用户权限管理',
contestDataManage:'竞赛数据管理',
contestSubjectManage:'竞赛题目管理',
contestTaskManage:'竞赛任务管理',
contestSceneManage:'竞赛场景管理',
contestTaskScoreManage:'竞赛任务评分管理',
contestSeasonManage:'竞赛赛季管理',
fileManage: '文件管理', fileManage: '文件管理',
frontResourceManage: '前端资源管理', frontResourceManage: '前端资源管理',
iscsPrerecordManage: 'ISCS预录管理', iscsPrerecordManage: 'ISCS预录管理',

View File

@ -111,6 +111,4 @@ export default {
iscsResourcesManage: 'ISCS资源管理', iscsResourcesManage: 'ISCS资源管理',
projectManage: '项目管理', projectManage: '项目管理',
frontProjectConfigManage: '前端项目配置管理', frontProjectConfigManage: '前端项目配置管理',
training: '实训', }
theory: '理论'
};

View File

@ -9,15 +9,7 @@ const mapDeviceStyle = {
'09': 'xian_02', '09': 'xian_02',
'10': 'xian_01', // 西安一号线 '10': 'xian_01', // 西安一号线
'11': 'xian_01', // 西安三号线 '11': 'xian_01', // 西安三号线
'12': 'ningbo_03', // 宁波三号线 '12': 'ningbo_03' // 宁波三号线
'13': 'race_01', // 2020国赛线路
'14':'nanjing_02', // 南京二号线
'15': 'datie_01', // 大铁线路一
'16': 'datie_02', // 大铁线路二
'17':'datie_tky', // 铁科院大铁线路
'18':'datie_jd1a',
'19': 'datie_ksk', // 大铁 卡斯柯
'20': 'ningbo_01'
}; };
export function selectLineCode(code) { export function selectLineCode(code) {

View File

@ -396,7 +396,7 @@ export function JobPaneData() {
], ],
}, },
{ {
name:"电调度", name:"调度",
value:"dldd", value:"dldd",
text:"负责供电系统的正常运行。", text:"负责供电系统的正常运行。",
picurl:"", picurl:"",

View File

@ -17,8 +17,7 @@ const mapDeviceStyle = {
'16': 'datie_02', // 大铁线路二 '16': 'datie_02', // 大铁线路二
'17':'datie_tky', // 铁科院大铁线路 '17':'datie_tky', // 铁科院大铁线路
'18':'datie_jd1a', '18':'datie_jd1a',
'19': 'datie_ksk', // 大铁 卡斯柯 '19': 'datie_ksk' // 大铁 卡斯柯
'20': 'ningbo_special'
}; };
export function selectLineCode(code) { export function selectLineCode(code) {

View File

@ -346,15 +346,14 @@ class SkinCode extends defaultStyle {
this[deviceType.StationTurnBack] = { // 站后折返 this[deviceType.StationTurnBack] = { // 站后折返
lamp: { lamp: {
fill: '#ccc', // 填充色 fill: '#f1f1f1', // 填充色
radiusR: 6, radiusR: 7 // 控制灯大小
otherFill: '#0F0' // 控制灯大小
}, },
text: { text: {
titleTextShow: false, titleTextShow: false,
fontWeight: 580, fontWeight: 580,
fontSize: 10, fontSize: 10,
distance: 5 distance: 10
}, },
rect: { rect: {
fill: 'rgba(0,0,0,0)', fill: 'rgba(0,0,0,0)',

View File

@ -415,24 +415,24 @@ class SkinCode extends defaultStyle {
lineWidth: 1 lineWidth: 1
}, },
emergencyControl: { // 紧急站控 emergencyControl: { // 紧急站控
show: false, show: true,
offset: { x: 0, y: 0 }, offset: { x: 10, y: 0 },
text: '紧急站控', text: 'Emergency Ctrl',
arrowShow: false, arrowShow: false,
grayColor: '#7F7F7F' grayColor: '#7F7F7F'
}, },
centerControl: { // 中控 centerControl: { // 中控
show: false, show: true,
offset: { x: 0, y: 0 }, offset: { x: -190, y: 0 },
text: '中控', text: 'Center Ctrl',
buttonShow: false, buttonShow: false,
arrowShow: false, arrowShow: false,
grayColor: '#7F7F7F' grayColor: '#7F7F7F'
}, },
substationControl: { // 站控按钮 substationControl: { // 站控按钮
show: false, show: true,
offset: { x: 0, y: 0 }, offset: { x: -160, y: 0 },
text: '站控', text: 'Station Ctrl',
arrowShow: false, arrowShow: false,
grayColor: '#7F7F7F' grayColor: '#7F7F7F'
}, },
@ -444,34 +444,34 @@ class SkinCode extends defaultStyle {
grayColor: '#7F7F7F' grayColor: '#7F7F7F'
}, },
veryControl: { veryControl: {
show: true, show: false,
offset: { x: 0, y: 0 }, offset: { x: 50, y: 0 },
lightColor: '#f00', lightColor: '#f00',
defaultColor: '#7F7F7F', defaultColor: '#7F7F7F',
text: '非常站控' text: 'Very station controlled'
},
selfDiscipline: {
show: true,
offset: { x: 0, y: 0 },
text: '允许自律',
defaultColor: '#7F7F7F',
lightColor: '#ff0'
}, },
// selfDiscipline: {
// show: false,
// offset: { x: -140, y: 0 },
// text: 'Self-regulation allowed',
// defaultColor: '#7F7F7F',
// lightColor: '#ff0'
// },
selfDisciplineControl: { selfDisciplineControl: {
show: true, show: false,
offset: { x: 0, y: 0 }, offset: { x: -50, y: 0 },
lightColor: '#0f0', lightColor: '#0f0',
defaultColor: '#7F7F7F', defaultColor: '#7F7F7F',
text: '自律控制' text: 'Self-discipline control'
},
veryControlButton: {
offset: { x: 0, y: 0 },
text: '非常站控',
lightColor: '#ff0',
border:true, // 有边框
borderLine:1,
defaultColor: '#ccc'
}, },
// veryControlButton: {
// offset: { x: 140, y: 0 },
// text: 'Very station controlled',
// lightColor: '#ff0',
// border:true, // 有边框
// borderLine:1,
// defaultColor: '#ccc'
// },
selfDisciplineThree: { selfDisciplineThree: {
offset: { x: 0, y: 0 }, offset: { x: 0, y: 0 },
text: '分散自律', text: '分散自律',
@ -487,27 +487,41 @@ class SkinCode extends defaultStyle {
}, },
planControl: { planControl: {
show: true, show: true,
offset: { x: 0, y: 0 }, offset: { x: -20, y: 0 },
text: '计划控制', text: 'Plan Ctrl',
lightColor: '#0f0', lightColor: '#0f0',
defaultColor: '#7F7F7F' defaultColor: '#7F7F7F'
}, },
centerCommunication: { centerCommunication: {
show: true, show: true,
offset: { x: 0, y: 30 }, offset: { x: 100, y: 0 },
text: '中心通信', text: 'COMM',
lightColor: '#FF0000', lightColor: '#FF0000',
defaultColor: '#0f0' defaultColor: '#0f0'
}, },
selfDisciplineCommunication: { etcs2: {
show: true, show: true,
offset: { x: 40, y: 0 },
text: 'ETCS-2',
lightColor: '#FF0000',
defaultColor: '#0f0'
},
etcs3: {
show: true,
offset: { x: 100, y: 0 },
text: 'ETCS-3',
lightColor: '#FF0000',
defaultColor: '#ccc'
},
selfDisciplineCommunication: {
show: false,
offset: { x: 0, y: 30 }, offset: { x: 0, y: 30 },
text: '自律机通信', text: '自律机通信',
lightColor: '#7F7F7F', lightColor: '#7F7F7F',
defaultColor: '#0f0' defaultColor: '#0f0'
}, },
allowedTurnBack: { allowedTurnBack: {
show: true, show: false,
offset: { x: 0, y: 30 }, offset: { x: 0, y: 30 },
text: '允许转回', text: '允许转回',
lightColor: '#ff0', lightColor: '#ff0',
@ -847,16 +861,18 @@ class SkinCode extends defaultStyle {
trainBody: { trainBody: {
fontFamily: 'consolas', fontFamily: 'consolas',
trainBodyLineWidth: 1, // 车身line宽 trainBodyLineWidth: 1, // 车身line宽
changeTrainWidth: false, // 是否根据车身上车组号、服务号、车次号、目的地码显示情况改变列车长度 changeTrainWidth: true, // 是否根据车身上车组号、服务号、车次号、目的地码显示情况改变列车长度
specialTrainType: [ specialTrainType: [
{ {
type: '03', type: '03',
serviceNumber: '---', serviceNumber: '---',
nameFormat: 'groupNumber:serviceNumber' // nameFormat: 'groupNumber:serviceNumber'
nameFormat:'groupNumber'
}, },
{ {
type: '03', type: '03',
nameFormat: 'serviceNumber:trainNumber' // nameFormat: 'serviceNumber:trainNumber'
nameFormat:'groupNumber'
} }
], // 特殊列车类型需设置显示格式 ], // 特殊列车类型需设置显示格式
lrPadding: 4, // 两边间隔 lrPadding: 4, // 两边间隔
@ -865,7 +881,7 @@ class SkinCode extends defaultStyle {
trainSidelineColor: '#F00', trainSidelineColor: '#F00',
trainSidelineStopColor: '#000', trainSidelineStopColor: '#000',
// trainNameFormat: 'serviceNumber:targetCode'// 列车显示格式 // trainNameFormat: 'serviceNumber:targetCode'// 列车显示格式
trainNameFormat:'tripNumber' trainNameFormat:'groupNumber'
}, },
directionArrow: { directionArrow: {
}, },
@ -954,15 +970,15 @@ class SkinCode extends defaultStyle {
directionType: [ directionType: [
{ {
type: 1, type: 1,
lineLShow: true, lineLShow: false,
lineRShow: true, lineRShow: false,
arrowLShow: false, arrowLShow: false,
arrowRShow: true arrowRShow: true
}, },
{ {
type: 0, type: 0,
lineLShow: true, lineLShow: false,
lineRShow: true, lineRShow: false,
arrowLShow: true, arrowLShow: true,
arrowRShow: false arrowRShow: false
} }

View File

@ -189,13 +189,6 @@ class SkinCode extends defaultStyle {
}, },
lowButton:{ lowButton:{
display: false // 现地 信号机按钮 display: false // 现地 信号机按钮
},
transmission: { // 传输信号机
fillColor: '#f00',
fillColorVirtual: '#f00',
sideLength: 20,
textColor: '#fff',
strokeColor: '#00FFFF'
} }
}; };
@ -448,8 +441,7 @@ class SkinCode extends defaultStyle {
monolockLocationColor: '#ea282c', // 道岔单锁'定位'颜色 monolockLocationColor: '#ea282c', // 道岔单锁'定位'颜色
monolockInversionColor: '#ea282c', // 道岔单锁'反位'颜色 monolockInversionColor: '#ea282c', // 道岔单锁'反位'颜色
block: true, // 封锁名称 block: true, // 封锁名称
faultFlashing: true, // 故障闪烁 faultFlashing: true // 故障闪烁
lossRect: true // 道岔失表矩形
}, },
sectionAction: { sectionAction: {
flag: false, // 道岔 关联区段显示 flag: false, // 道岔 关联区段显示

View File

@ -192,7 +192,6 @@ class SkinCode extends defaultStyle {
closeSignalVerColor: '#FF1F10', // 关闭信号 灯柱竖柱颜色 level 1 closeSignalVerColor: '#FF1F10', // 关闭信号 灯柱竖柱颜色 level 1
guideSignalVerColor: '#FFFF00', // 引导信号控制级 灯柱竖柱颜色 level 2 guideSignalVerColor: '#FFFF00', // 引导信号控制级 灯柱竖柱颜色 level 2
autoRouteVerColor: '#9DFF6E', // 联锁自动进路颜色 autoRouteVerColor: '#9DFF6E', // 联锁自动进路颜色
atpLevelColor: '#009600', // ATP级别灯柱颜色
standardVerticalShape: '8', // 灯柱 竖杆 8边型 standardVerticalShape: '8', // 灯柱 竖杆 8边型
standardLength: 12, // 高柱长度 standardLength: 12, // 高柱长度
standardHeight: 5, // 灯柱高度 standardHeight: 5, // 灯柱高度
@ -562,7 +561,7 @@ class SkinCode extends defaultStyle {
this[deviceType.Switch] = { this[deviceType.Switch] = {
shapeFlash: true, // 道岔转动失去表示 道岔遮罩删除 shapeFlash: true, // 道岔转动失去表示 道岔遮罩删除
faultNoHandle: false, // 南京二 道岔长闪 道岔无状态 道岔区段 bc 闪烁 (南京叶老师要求有短闪) faultNoHandle: true, // 南京二 道岔长闪 道岔无状态 道岔区段 bc 闪烁
text: { text: {
show: true, // 道岔名称显示 show: true, // 道岔名称显示
position: 0, // 区段名称位置 1 上面 -1 下面 0 对称 position: 0, // 区段名称位置 1 上面 -1 下面 0 对称

View File

@ -1,870 +0,0 @@
import defaultStyle from '../defaultStyle';
import deviceType from '../../constant/deviceType';
class SkinCode extends defaultStyle {
constructor() {
super();
this.fontFamily = '宋体';
this[deviceType.Section] = {
elemnetType:['name', 'standTrackText', 'reentryTrackText', 'transferTrackText', 'destinationText', 'line', 'separator', 'speedLimit'],
active: {
routeColor: false // 进路触发颜色
},
name: {
z: 10,
position: 0, // 区段名称位置 1 上面 -1 下面 0 对称
distance: 10, // 文字离区段距离
fontSize: 12, // 字体大小
fontWeight: 'normal', // 字体粗细
fontColor: 'lightgreen', // 字体颜色
textAlign: 'center', // 水平对齐方式
textPosition: 'inside', // 文字位置
textVerticalAlign: 'middle', // 文字垂直对齐方式
approachColor: '#FFFFFF'
},
logicText: { // 逻辑区段名称
z: 10,
position: 0, // 区段名称位置 1 上面 -1 下面 0 对称
distance: 12, // 文字离区段距离
fontSize: 11, // 字体大小
fontWeight: 'normal', // 字体粗细
fontColor: '#FFFFFF', // 字体颜色
textAlign: 'center', // 水平对齐方式
textPosition: 'inside', // 文字位置
textVerticalAlign: 'middle' // 文字垂直对齐方式
},
standTrackText: { // 站台
z: 10,
position: 0, // 区段名称位置 1 上面 -1 下面 0 对称
distance: 24, // 文字离区段距离
fontSize: 11, // 字体大小
fontWeight: 'normal', // 字体粗细
fontColor: '#FFFFFF', // 字体颜色
textAlign: 'center', // 水平对齐方式
textPosition: 'inside', // 文字位置
textVerticalAlign: 'middle' // 文字垂直对齐方式
},
reentryTrackText: { // 折返
z: 10,
position: 0, // 区段名称位置 1 上面 -1 下面 0 对称
distance: 36, // 文字离区段距离
fontSize: 11, // 字体大小
fontWeight: 'normal', // 字体粗细
fontColor: '#FFFFFF', // 字体颜色
textAlign: 'center', // 水平对齐方式
textPosition: 'inside', // 文字位置
textVerticalAlign: 'middle' // 文字垂直对齐方式
},
transferTrackText: { // 转换轨
z: 10,
position: 0, // 区段名称位置 1 上面 -1 下面 0 对称
distance: 36, // 文字离区段距离
fontSize: 11, // 字体大小
fontWeight: 'normal', // 字体粗细
fontColor: '#FFFFFF', // 字体颜色
textAlign: 'center', // 水平对齐方式
textPosition: 'inside', // 文字位置
textVerticalAlign: 'middle' // 文字垂直对齐方式
},
destinationText: { // 目的地
z: 10,
position: 0, // 区段名称位置 1 上面 -1 下面 0 对称
distance: 12, // 文字离区段距离
fontSize: 11, // 字体大小
fontWeight: 'bold', // 字体粗细
fontColor: 'yellow', // 字体颜色
textAlign: 'center', // 水平对齐方式
textPosition: 'inside', // 文字位置
textVerticalAlign: 'middle' // 文字垂直对齐方式
},
line: {
z: 0,
width: 5, // 区段宽度
beyondWidth: 0, // 区段宽超出宽度
invadeColor: '#FFFFFF', // 区段侵入颜色
spareColor: '#5578B6', // 区段空闲颜色
communicationOccupiedColor: 'red', // 区段通信车占用颜色 // 调整 未确定
unCommunicationOccupiedColor: '#FF0000', // 区段非通讯车占用颜色
routeLockColor: '#00ff00', // 区段进路锁定颜色
faultLockColor: 'white', // 区段故障锁定颜色
undefinedColor: '#0071C1', // 区段未定义颜色
blockColor: '#d659d6', // 区段封锁颜色(淡紫色)
atcExcisionColor: '#A0522D', // 区段atc切除颜色
atsExcisionColor: '#A0522D', // 区段ats切除颜色
invalidColor: '#AC8F40', // 计轴故障颜色
timeReleaseColor: '#3F3F3F', // 区段延时释放颜色
protectiveLockColor: '#03C85C', // 区段保护锁闭 延续保护
protectiveTimeReleaseColor: '#0071C1', // 区段保护延时解锁
logicalColor: '#FFFF00', // 逻辑区段颜色 (未用)
logicalTextColor: 'white' // 逻辑区段名称颜色 (未用)
},
speedLimit: { // 限速元素
z: 2,
width: 1, // 限速线的宽度
distance: 5, // 限速线距离区段距离
lineColor: '#C0C000', // 限速线颜色 (黄色透明光)
nameShow: false // 名称显示
},
separator: {
z: 3, // 分割符层级
width: 1.5, // 物理区段分隔符宽度
logicWidth:1.5, // 逻辑区段分隔符宽度
endWidth: 1.5, // 尽头分隔符宽度
endColor: '#FFFFFF', // 尽头分隔符颜色
color: 'white', // 区段边界符颜色
halfHeight: 5 // 区段分隔符高度的一半
},
block: {
blockGlint: true // 区段封锁闪烁显示
},
trainPosition:{
display: false // 列车实时位置显示
},
mouseOverStyle: {
borderColor: '#fff',
borderBackgroundColor: '#22DFDF',
textShadowColor: '#22DFDF',
nameShow: true,
nameBackgroundColor: '#000',
lineDash: [3, 3],
lineWidthMore: 2.5
}
};
this[deviceType.Signal] = {
distance: 8, // 设备距离区段的距离
post: {
standardLength: 6, // 高柱长度
standardHeight: 6, // 灯柱高度
standardColor: '#C0C0C0', // 灯柱颜色
standardVerticalWidth: 2, // 灯柱竖杆宽度
standardRailWidth: 2, // 灯柱横杆宽度
approachLockColor: '#FFFF00' // 接近锁闭灯柱颜色
},
text: {
show: true, // 信号机名称显示
distance: 3, // 文字和灯杆的距离
isAlignCenter: false, // 信号字体对其方式
fontSize: 11, // 信号机名称字体大小
fontWeight: 'bold', // 信号机名称字体粗细
defaultColor: 'white', // 信号灯字体默认色
blockColor: '#EF0C08', // 信号灯字体锁定颜色
checkColor: '#00FF00' // 信号保护区段检查颜色
},
lamp: {
bgShow: false, // 是否被选中
guidName: 'double', // 默认引导类型
borderVariable: true, // 信号灯边框可变
stopWidth: 2, // 禁止线宽度
borderWidth: 2, // 信号灯边框线宽度
borderColor: '#EF0C08', // 信号灯边框线颜色
radiusR: 5, // 信号灯半径
grayColor: '#C0C0C0', // 信号灯灰色
redColor: 'red', // 信号灯红色
greenColor: 'green', // 信号灯绿色
yellowColor: 'yellow', // 信号灯黄色
whiteColor: '#FFFFFF', // 信号灯白色
blueColor: '#0070C0', // 信号灯蓝色
blockColor: '#339933', // 信号灯墨绿色
blockFlash: true // 信号机封锁闪烁
},
route: {
direction: false, // 自动通过方向
radiusR: 8, // 自动通过三角半径
offset: { x: 2, y: 0 }, // 自动通过偏移量
routeColor: '#00FF00' // 自动进路
},
auto: {
signalFrontTriangle: true, // 信号灯前三角展示
direction: true, // 自动通过方向
offset: { x: 4, y: 0 }, // 自动通过偏移量
width: 5, // 自动宽度
manualControl: '#FFFF00', // 人工控制
autoRoute: '#00FF00', // 自动进路 (绿色)
autoTrigger: '#FFFF00', // 自动触发
outConflict: '#C00808' // 出车冲突
},
delay: {
direction: false, // 延时解锁方向
offset: { x: -5, y: 0 }, // 延时解锁偏移量
fontSize: 11, // 延迟解锁字体大小
fontColor: '#C00808', // 延迟解锁颜色
fontWeight: 'bold' // 字体粗细
},
button: {
distance: 5, // 信号灯按钮距离区段的距离
borderDashColor: '#FFFFFF', // 信号灯按钮边线
buttonColor: 'darkgreen', // 信号灯按钮颜色
buttonLightenColor: 'yellow' // 信号灯按钮闪烁颜色
},
lowButton:{
display: false // 现地 信号机按钮
},
mouseOverStyle: {
borderLineColor: '#FFFFFF',
borderLineDash: [3, 3],
nameBackgroundColor: '#22DFDF',
lampBorderLineColor: '#22DFDF'
}
};
this[deviceType.Station] = {
// 宁波一号线 车站元素 车站名称
elemnetType:['stationText'],
stationText:{
z:0,
fontWeight:'normal', // 字体粗细
textPadding:[0, 0], // 字体边距
borderColor:'', // 字体边框颜色
textBorderWidth:0 // 字体边框宽度
},
kmPostShow: false, // 公里标显示
kilometerPosition: 'up', // 公里标朝向
text: {
fontSize: 11, // 字体大小
fontWeight: 'normal', // 字体粗细
distance: 5 // 灯跟文字距离
},
lamp: {
radiusR: 6, // 控制灯大小
controlColor: '#FFFF00' // 控制灯颜色
},
turnBack: { // 按图折返
lamp: 1, // 灯数量
lampSpace: 60 // 灯间距
},
StationControl: {
text: {
distance: 12, // 灯和文字之间的距离
fontSize: 12, // 字体大小
fontFormat: 'consolas', // 字体格式
fontColor: '#ffffff', // 字体颜色
fontWeight: 'normal', // 字体粗细
textAlign: 'middle', // 字体水平对齐
textVerticalAlign: 'top' // 字体垂直对齐
},
lamp: {
count: 4, // 控制模式的个数
offset: { x: 20, y: 0 }, // 偏移量
emergencyOffset: {x: 0, y: 0},
radiusR: 6, // 控制模式灯的半径
distance: 46, // 控制模式之间灯之间的距离
grayColor: '#C0C0C0', // 控制模式灰色
greenColor: 'green', // 控制模式绿色
redColor: 'red', // 控制模式红色
yellowColor: 'yellow', // 控制模式黄色
stroke: '#FFFFFF', // 框的颜色
fill: 'rgba(0,0,0,0)', // 填充色
textColorNoChange: true
},
emergencyControl: { // 紧急站控
show: true,
offset: { x: 0, y: 0 },
text: '紧急站控',
arrowShow: false,
grayColor: '#7F7F7F'
},
centerControl: { // 中控
show: true,
offset: { x: 0, y: 0 },
text: '遥控',
buttonText: '站遥控按钮',
buttonShow: true,
arrowShow: false,
grayColor: '#7F7F7F',
lightShow: true,
lightText: '强制点灯',
preResetShow: true,
preResetText: '计轴复位'
},
substationControl: { // 站控按钮
show: true,
offset: { x: 0, y: 0 },
text: '站控',
arrowShow: false,
grayColor: '#7F7F7F'
},
interconnectedControl: { // 联锁控
show: false,
offset: { x: 0, y: 0 },
text: '联锁控',
arrowShow: false,
grayColor: '#7F7F7F'
},
mouseOverStyle: { // 鼠标悬浮样式
fontSize: 10,
fontFormat: 'consolas',
fontColor: '#FFF000',
fontWeight: 'normal',
textAlign: 'middle',
textVerticalAlign: 'top'
}
}
};
this[deviceType.Switch] = {
text: {
show: true, // 道岔名称显示
position: 0, // 区段名称位置 1 上面 -1 下面 0 对称
offset: { x: 5, y: -10 }, // 道岔名称与区段距离
fontSize: 11, // 字体大小
fontColor: '#C0C0C0', // 道岔名称颜色
fontWeight: 'normal', // 字体粗细
borderColor: '#FE0000', // 道岔名称边框颜色
lossColor: 'lightgreen', // 道岔名称失去颜色
locateColor: 'lightgreen', // 道岔定位颜色
inversionColor: '#FFFF00', // 道岔反位颜色
monolockLocationColor: 'lightgreen', // 道岔单锁'定位'颜色 (浅绿色)
monolockInversionColor: '#FFFF00', // 道岔单锁'反位'颜色 (黄色)
block: true, // 封锁名称
faultFlashing: true, // 故障闪烁
lossRect: false // 道岔失表矩形
},
sectionAction: {
flag: false, // 道岔 关联区段显示
spareColor: '#5b5b5b' // 区段显示颜色
},
core: {
length: 6 // 道岔单边长度
},
jointImg: { // 道岔 A B C D四元素属性配置
trapezoidLength: 8, // 直角梯形元素默认长度
block: true, // 联合图形封锁状态
flashingColors: '#D600D5', // 联合图形封锁闪烁显示颜色
fork: true, // 挤岔专用(如有挤岔操作 变为true
faultStatus: true, // 宁波失表状态用 挤岔表示
forKColor: 'red' // 挤岔颜色 配合挤岔专用
},
arcBlcok: { // 圆形封锁图形
show: true, // 显示
shapeR: 5,
arcBorderColor: 'green', // 默认边框颜色
locationColor: 'green', // 定位封锁颜色
inversionColor: '#FFFF00' // 反位封锁颜色
},
rectLock: { // 矩形封锁框图形
rectWidth: 22, // 矩形框 宽高
rectBorderColor: '#fff', // 矩形边框颜色
monolock: false, // 单锁显示
block: false // 封锁显示
},
mouseOverStyle: {
borderBackgroundColor: '#22DFDF', // 边框背景色
borderColor: '#fff', // 边框颜色
textShadowColor: '#22DFDF', // 字体阴影颜色
coreBackgroundColor: '#00BFFF', // 岔心颜色 浅蓝色
coreBackgroundColorOver: '#001AFC' // 岔心颜色 深蓝色
}
};
// 屏蔽门
this[deviceType.Psd] = {
// 宁波一号线 屏蔽门
elemnetType:['safetyDoorNormal'],
safetyDoorNormal: { // 屏蔽门
z:0,
height: 3, // 站台屏蔽门高度
distance: 4, // 站台和屏蔽门之间的距离
defaultColor: 'green', // 屏蔽门默认颜色
splitDoorColor: 'green' // 屏蔽门切除颜色
}
};
this[deviceType.StationStand] = {
// 宁波一号线站台元素 站台 站台紧急关闭 扣车元素 停站时间 运行等级
elemnetType:['solidStand', 'emergentRhombus', 'detainNormal', 'stopTime', 'level'],
// 站台
solidStand:{
// 层级
z:0,
spareColor: 'white', // 站台空闲颜色
jumpStopColor: '#6260f3', // 站台跳停颜色
designatedJumpStopColor: 'lightSkyBlue', // 站台指定列车跳停颜色
headFontSize: 10, // 站台首端字体大小
stopColor: 'yellow' // 站台列车停站颜色
},
// 站台紧急关闭
emergentRhombus:{
z:1,
mergentR: 4, // 站台紧急关闭半径
mergentN: 4, // 站台紧急关闭边数
insideOffset: { x: 0, y: 25 }, // 内站台紧急关闭偏移量
outsideOffset: { x: 0, y: -25 }, // 外站台紧急关闭偏移量
closeColor: 'red' // 站台紧急关闭颜色
},
// 扣车元素 普通扣车
detainNormal:{
z:0,
position: 1, // 扣车标识在站台上显示方向
text: 'H', // 扣车显示内容
insideOffset: { x: -8, y: 10 }, // 内站台扣车偏移量
outsideOffset: { x: -8, y: 10 }, // 外站台扣车偏移量
centerTrainColor: 'white', // 中心扣车颜色
andCenterTrainColor: 'red', // 车站+中心扣车颜色
detainTrainTextColor: '#E4EF50', // 车站扣除文字颜色
fontSize: 10, // 字体大小
fontWeight: 'normal'
},
// 停站时间
stopTime:{
z:1,
textFontSize: 10, // 停站时间字体大小
textColor: 'white', // 停站时间字体颜色
position: 1, // 停站时间方向
offset: { x: -8, y: 4 } // 停站时间偏移量
},
// 运行等级
level:{
z:1,
textFontSize: 10, // 运行等级字体大小
position: -1, // 运行等级方向
offset: { x: -8, y: 4 }, // 运行等级偏移量
textColor: '#FFF000' // 停站等级字体颜色
},
common: { // 通用属性
textFontSize: 10, // 站台默认字体大小
functionButtonShow: '03' // 功能灯按钮显示条件01所有模式下显示 02 行调显示 03现地显示
},
lamp: {
radiusR: 6, // 控制灯大小
lampColor: '#5A5D5A' // 功能按钮颜色
},
text: {
fontSize: 11, // 字体大小
fontWeight: 'normal', // 字体粗细
distance: 5 // 灯跟文字距离
},
mouseOverStyle: {
borderLineColor: '#FFFFFF',
borderLineDash: [3, 3],
standBackgroundColor: '#00BFFF', // 浅蓝色
standBackgroundColorOver: '#001AFC' // 深蓝色
}
// reentry: {}, // 站台折返策略
// jump: {},
// trainStop: {}, // 停车标志
// trainDepart: {}, // 停车计时
};
this[deviceType.StationTurnBack] = { // 站后折返
lamp: {
fill: '#FFFF00', // 填充色
radiusR: 6 // 控制灯大小
},
text: {
titleTextShow: false,
fontWeight: 580,
fontSize: 12,
distance: 10
},
rect: {
fill: 'rgba(0,0,0,0)',
stroke: '#fff',
lineWidth: 2,
padding: 6
}
};
this[deviceType.AutoTurnBack] = {
// 是否显示
visibleConditions: '01',
text: {
fontSize: 11, // 字体大小
fontWeight: 'normal', // 字体粗细
distance: 5 // 灯跟文字距离
},
subtitleText: {
fontSize: 11, // 字体大小
fontWeight: 'normal', // 字体粗细
distance: 17 // 等于副标题距离
},
lamp: {
borderShow: true, // 是否显示边框
lineDash: null, // 灯的包围框
stroke: '#FFFFFF', // 框的颜色
fill: 'rgba(0,0,0,0)', // 填充色
radiusR: 6, // 控制灯大小
controlColor: '#b5b3b3', // 控制灯颜色 (灰色)
lightUpColor: '#ffff00' // 点亮灯颜色
},
OutFrame: {
}
};
/** 引导总锁 */
this[deviceType.GuideLock] = {
text: {
fontSize: 11, // 字体大小
fontWeight: 'normal', // 字体粗细
distance: 5 // 灯跟文字距离
},
lamp: {
fill: 'rgba(0,0,0,0)', // 填充色
radiusR: 6, // 控制灯大小
controlColor: '#b5b3b3', // 控制灯颜色 (灰色)
lightUpColor: '#FF0000' // 点亮灯颜色
}
};
this[deviceType.StationCounter] = {
text: {
distance: 2, // 计数器名称和文字的距离
fontColor: '#FFFFFF', // 计数器字体颜色
borderColor: '#E4EF50' // 计数器边框颜色
}
};
// 供电线路
this[deviceType.Power] = {
noElectricStrokeColor:'#808080', // 无电颜色
defaultStrokeColor: '#F00', // 线条颜色
extendLength: 10 // 延伸长度
};
// 延续保护计时
this[deviceType.OverAp] = {
show: false
};
this[deviceType.StationDelayUnlock] = {
text: {
distance: 3, // 延迟解锁和设备之间的距离
fontColor: '#FFFFFF', // 延时解锁字体颜色
borderColor: '#FFFFFF' // 延迟解锁边框颜色
}
};
this[deviceType.LcControl] = {
text: {
fontSize: 11, // 字体大小
fontWeight: 'normal', // 字体粗细
distance: 5 // 灯跟文字距离
},
lamp: {
radiusR: 6, // 控制灯大小
controlColor: '#FFFF00' // 控制灯颜色
},
mouseOverStyle: {
fontSize: 10,
fontFormat: 'consolas',
fontColor: '#FFF000',
fontWeight: 'normal',
textAlign: 'middle',
textVerticalAlign: 'top',
arcColor: '#00FFFF',
textColor: '#000000'
}
};
this[deviceType.ZcControl] = {
// 是否显示
visible: true,
text: {
fontSize: 11, // 字体大小
fontWeight: 'normal', // 字体粗细
distance: 5 // 灯跟文字距离
},
lamp: {
radiusR: 6, // 控制灯大小
controlColor: '#00FF00', // 控制灯颜色
activeColor:'#ff0000' // 控制灯激活颜色
},
mouseOverStyle: {
fontSize: 10,
fontFormat: 'consolas',
fontColor: '#FFF000',
fontWeight: 'normal',
textAlign: 'middle',
textVerticalAlign: 'top',
arcColor: '#00FFFF',
textColor: '#000000'
}
};
this[deviceType.LimitControl] = {
text: {
fontSize: 11, // 字体大小
fontWeight: 'normal', // 字体粗细
distance: 5 // 灯跟文字距离
},
lamp: {
radiusR: 6, // 控制灯大小
controlColor: '#ECE9D8' // 控制灯颜色
},
mouseOverStyle: {
fontSize: 10,
fontFormat: 'consolas',
fontColor: '#FFF000',
fontWeight: 'normal',
textAlign: 'middle',
textVerticalAlign: 'top',
textColor: '#000000',
arcColor: '#00FFFF'
}
};
this[deviceType.Line] = {
lineColor: '#FFFFFF' // 线条颜色
};
this[deviceType.AutomaticRoute] = {
text: {
fontSize: 11, // 字体大小
fontWeight: 'normal', // 字体粗细
distance: 5 // 灯跟文字距离
},
lamp: {
fill: 'rgba(0,0,0,0)', // 填充色
radiusR: 6, // 控制灯大小
controlColor: '#b5b3b3' // 控制灯颜色 (灰色)
}
};
this[deviceType.AxleReset] = {
text: {
fontSize: 11, // 字体大小
fontWeight: 'normal', // 字体粗细
distance: 5 // 灯跟文字距离
},
lamp: {
fill: 'rgba(0,0,0,0)', // 填充色
radiusR: 6, // 控制灯大小
controlColor: 'red' // 控制灯颜色 (灰色)
}
};
/* 上电解锁 */
this[deviceType.PowerUnLock] = {
text: {
fontSize: 11, // 字体大小
fontWeight: 'normal', // 字体粗细
distance: 5 // 灯跟文字距离
},
lamp: {
fill: 'rgba(0,0,0,0)', // 填充色
radiusR: 6, // 控制灯大小
controlColor: 'red' // 控制灯颜色 (灰色)
}
};
/** 引导总锁 */
this[deviceType.GuideLock] = {
text: {
fontSize: 11, // 字体大小
fontWeight: 'normal', // 字体粗细
distance: 5 // 灯跟文字距离
},
lamp: {
fill: 'rgba(0,0,0,0)', // 填充色
radiusR: 6, // 控制灯大小
controlColor: '#b5b3b3' // 控制灯颜色 (灰色)
}
};
this[deviceType.TrainWindow] = {
lineColor: '#fff', // 车次窗颜色
lineDash: [3], // 车次窗虚线间隔
lineWidth: 0.5, // 车次窗线宽
trainWindowSmooth: 0, // 车次窗矩形圆滑程度
show: true // 车次窗是否显示
};
this[deviceType.SplitStation] = {
lineLength: 15, // 箭头线长度
lineWidth: 2, // 线宽
height: 35, // 分隔整体高度
strokeColor: '#00FF00', // 线颜色
triangleFillColor: '#00FF00', // 三角填充颜色
textFill: '#FFFFFF', // 文字颜色
verticalDistance: 10, // 箭头三角垂直高度
horizontalDistance: 7// 箭头三角水平高度
};
this[deviceType.Train] = {
trainBody: {
fontFamily: 'consolas',
trainBodyLineWidth: 1, // 车身line宽
changeTrainWidth: false, // 是否根据车身上车组号、服务号、车次号、目的地码显示情况改变列车长度
specialTrainType: [
{
type: 'MANUAL',
serviceNumber: '',
nameFormat: 'groupNumber:targetCode'
},
{
type: 'HEAD',
nameFormat: 'serviceNumber:tripNumber:targetCode'
}
], // 特殊列车类型需设置显示格式
lrPadding: 4, // 两边间隔
upPadding: 4, // 上边距离
trainSidelineColor: '#ABFE9B',
trainBodyFillColor: '#A388B1', // 列车车身填充颜色
trainNameFormat: 'serviceNumber:tripNumber:targetCode'// 列车显示格式
},
directionArrow: {
hasArrow: true,
width: 6,
radiusR: 4,
fillColor: '#00FF00',
distanceTop: 15,
distanceBottom: 35
},
hsda: {
lrPaddingHSDA: 3, // HSDA两边间隔
upPaddingHSDA: 4, // HSDA上边距离
trainHSDATextFontSize: 12, // 列车HDSA字号
textHContent: 'H', // textH文本
textSContent: 'S', // textS文本
textDContent: 'D', // textD文本
textAContent: 'A' // textA文本
},
trainNumber: {
targetCodePrefix: '00', // 目的地码前缀
defaultTargetCode: 'DD', // 默认目的地码
trainTargetTextAlign: 'left', // 目的地码文字显示位置
trainNumberOffset: { x: 36, y: 4 }, // 目的地码偏移量
headTypeColor: '#1CBAFD', // 头码车目的地号显示颜色
manualTypeColor: '#1CBAFD' // 人工车目的地号显示颜色
},
trainServer: {
serviceNumberPrefix: '000', // 服务号(表号)前缀
defaultServiceNumber: 'TTT', // 默认服务号(表号)
defaultServerNoColor: '#FFFFFF', // 默认服务号状态显示颜色
trainServerOffset: { x: 4, y: 4 } // 列车服务号偏移
},
trainTarget: {
tripNumberPrefix: '00', // 车次号前缀
defaultTripNumber: 'DD', // 默认车次号2
trainTargetOffset: { x: 24, y: 4 }, // 列车车次号偏移
trainTargetTextAlign: 'right' // 车次号文字显示位置
},
trainTargetNumber: {
groupNumberPrefix: '00000', // 车组号前缀
defaultGroupNumber: 'EEEEE', // 默认车组号
trainTargetNumberOffset: {x: -4, y: 4}, // 车组号偏移量
lineNumber: '01', // 线路号在人工车时车组号拼接线路号
manualTypeColor: '#FA7FD7', // 人工车车组号显示颜色
maskText: '0' // 车组号遮罩
},
trainHead: {
trainConntWidth: 2, // 列车竖杠的宽度
trainHeadFillColor: '#000000', // 列车车头矩形填充颜色
trainHeadRectHeight: 20, // 列车车头矩形高度
directionStopType:'normal', // special 西安二号线 停车 列车方向图标不消失 normal 正常
trainHeadHeight: 'trainBox', // 列车车头高度取决于trainBox高度
trainHeadArrowWidth: 5, // 列车车头三角宽度
trainHeadArrowOffsetX: 4 // 列车车头三角偏移
},
common: {
trainHeight: 20, // 列车高度
trainHeadDistance: 2, // 列车和车头之间的间距
trainWidth: 70, // 列车长度
trainTextFontSize: 16, // 列车字号
fontFamily: 'consolas', // 默认字体 族类
haveTextHSDA: true, // 是否需创建textHSDA对象
haveArrowText: true, // 是否需创建arrowText对象
textOffset: 4, // 字体偏移(用以控制字体据车头的距离)
trainWidthMoreText: 8, // 计算列车长度时--列车长比text多出尺寸
trainHeadColorChangeMode: 1, // 1:driveMode + runlevel
trainTip:false // 鼠标悬停列车状态信息框是否显示
},
mouseOverStyle:{
borderLineColor: '#FFFFFF',
borderLineDash: [3, 3],
leftOffset:30,
rightOffset:30
},
trainStatusStyle: {
defaultDestinationColor: '#FFFFFF', // 默认目的地状态显示颜色
destinationStatusSetText: 'trainTarget', // 目的地状态设置的对应哪个text的颜色
destinationStatus: [
{ status: '01', showColor: '#FFFFFF' },
{ status: '02', showColor: '#00FF00' },
{ status: '03', showColor: '#A0522D' },
{ status: '04', showColor: '#FFFF00' }
], // 目的地状态 01准点 02早点 03晚点 04头码车
serverNoType: [
{ type: '01', showColor: '#FFFFFF' },
{ type: '02', showColor: '#FFF000' }
], // 服务号状态类型 01显示服务号 计划车 02显示车组号: 头码车与人工车
directionType: [
{
type: 1,
lineLShow: false,
lineRShow: true,
arrowLShow: false,
arrowRShow: true
},
{
type: 0,
lineLShow: true,
lineRShow: false,
arrowLShow: true,
arrowRShow: false
}
], // 列车运行方向状态类型对应车头显示状态 1从左往右 0从右往左
directionStopType: [
{
type: 1,
lineLShow: false,
lineRShow: true
},
{
type: 0,
lineLShow: true,
lineRShow: false
}
], // 列车停止方向类型对应车头显示状态 1从左往右 0从右往左
driveModeStatus: [
{
status: 'AMCBTC',
trainLColor: '#FFCE4D',
trainRColor: '#FFCE4D'
},
{
status: 'CMCBTC',
trainLColor: '#FFFFCD',
trainRColor: '#FFFFCD'
},
{
status: 'AMITC',
trainLColor: '#B903E1',
trainRColor: '#B903E1'
},
{
status: 'CMITC',
trainLColor: '#9370DB',
trainRColor: '#9370DB'
},
{
status: 'RMIL',
trainLColor: '#808080',
trainRColor: '#808080'
},
{
status: 'RMITC',
trainLColor: '#808080',
trainRColor: '#808080'
},
{
status: 'RMCBTC',
trainLColor: '#808080',
trainRColor: '#808080'
},
{
status: 'NRMCBTC',
trainLColor: 'rgba(0, 0, 0, 0)',
trainRColor: 'rgba(0, 0, 0, 0)'
}
], // 列车运行模式对应车头颜色 ATO自动驾驶模式AM ATP监控下的人工驾驶模式CM 限制人工驾驶模式RM 非限制人工驾驶模式NRM
communicationStatus: [
] // 设置通信状态 cbtc级别CBTC 点式通信ITC 联锁级IL
}
};
this[deviceType.FloodGate] = {};
this[deviceType.DirectionRod] = {};
this[deviceType.IndicatorLight] = {};
}
}
export default new SkinCode();

View File

@ -233,13 +233,6 @@ class SkinCode extends defaultStyle {
fontSize: 12, fontSize: 12,
distance: 20, distance: 20,
defaultText: 'E' defaultText: 'E'
},
transmission: { // 传输信号机
fillColor: '#f00',
fillColorVirtual: '#f00',
sideLength: 20,
textColor: '#fff',
strokeColor: '#00FFFF'
} }
}; };
@ -289,7 +282,6 @@ class SkinCode extends defaultStyle {
position: -1, // 扣车标识在站台上显示方向 position: -1, // 扣车标识在站台上显示方向
text: 'H', // 扣车显示内容 text: 'H', // 扣车显示内容
offset: {x: 8, y: 0}, // 扣车偏移量 offset: {x: 8, y: 0}, // 扣车偏移量
ibpTrainColor: '#E4EF50', // ibp扣车颜色
centerTrainColor: '#E400E4', // 中心扣车颜色 centerTrainColor: '#E400E4', // 中心扣车颜色
andCenterTrainColor: 'red', // 车站+中心扣车颜色 andCenterTrainColor: 'red', // 车站+中心扣车颜色
detainTrainTextColor: '#E4EF50', // 车站扣除颜色 detainTrainTextColor: '#E4EF50', // 车站扣除颜色
@ -483,10 +475,7 @@ class SkinCode extends defaultStyle {
spareColor: '#5b5b5b' // 区段显示颜色 spareColor: '#5b5b5b' // 区段显示颜色
}, },
core: { core: {
length: 10, // 道岔单边长度 length: 10 // 道岔单边长度
graphShow: true, // 图形显示
graphInversionColor: '#FFFF00', // 反位颜色
graphLocalColor: '#00FF00' // 定位颜色
}, },
jointImg: { // 道岔 A B C D四元素属性配置 jointImg: { // 道岔 A B C D四元素属性配置
trapezoidLength: 8 // 直角梯形元素默认长度 trapezoidLength: 8 // 直角梯形元素默认长度

View File

@ -440,7 +440,7 @@ class Jlmap {
const trainList = []; const trainList = [];
list.forEach(item => { list.forEach(item => {
const device = this.mapDevice[item]; const device = this.mapDevice[item];
if (device && device._type !== deviceType.Switch && device._type !== deviceType.Train && device._type !== deviceType.TrainWindow) { if (device && device._type !== deviceType.Switch && device._type !== deviceType.Train) {
const pictureDevice = store.getters['map/getPictureDeviceByCode'](item); const pictureDevice = store.getters['map/getPictureDeviceByCode'](item);
device._pictureHide = pictureDevice ? pictureDevice.pictureHide : false; device._pictureHide = pictureDevice ? pictureDevice.pictureHide : false;
this.$painter.updatePicture(device); this.$painter.updatePicture(device);
@ -585,6 +585,7 @@ class Jlmap {
if (elem.hasOwnProperty('applicantId')) { if (elem.hasOwnProperty('applicantId')) {
controlTransferList.push(elem); controlTransferList.push(elem);
} }
if (!elem.applicantId) {
const oDevice = this.mapDevice[code] || deviceFactory(type, elem, this.showConfig); const oDevice = this.mapDevice[code] || deviceFactory(type, elem, this.showConfig);
const guideLock = this.mapDevice[oDevice.guideLockCode]; const guideLock = this.mapDevice[oDevice.guideLockCode];
const guideLockStatus = {totalGuideLock: elem.totalGuideLock}; const guideLockStatus = {totalGuideLock: elem.totalGuideLock};
@ -596,6 +597,7 @@ class Jlmap {
} else { } else {
this.$painter.update(oDevice); this.$painter.update(oDevice);
} }
}
store.commit('map/mapStationStateUpdate'); store.commit('map/mapStationStateUpdate');
} else if (elem.deviceType === 'STATION_DIRECTION') { } else if (elem.deviceType === 'STATION_DIRECTION') {
const mapStationDirectionData = store.state.map.mapStationDirectionData; const mapStationDirectionData = store.state.map.mapStationDirectionData;

View File

@ -27,11 +27,7 @@ export function parser(data, skinCode, showConfig) {
zrUtil.each(centralStationList, elem => { zrUtil.each(centralStationList, elem => {
mapDevice[elem.code].stationCode = elem.code; mapDevice[elem.code].stationCode = elem.code;
zrUtil.each(elem.chargeStationCodeList || [], item => { zrUtil.each(elem.chargeStationCodeList || [], item => {
if (mapDevice[item]) {
mapDevice[item].stationCode = elem.code; mapDevice[item].stationCode = elem.code;
} else {
console.error('未获取到设备' + item);
}
}); });
}); });
zrUtil.each(data.sectionList || [], elem => { zrUtil.each(data.sectionList || [], elem => {

View File

@ -177,7 +177,10 @@ class ETextName extends Group {
this.text && this.text.stopAnimation(false); this.text && this.text.stopAnimation(false);
} }
setState() { setState(bool) {
if (this.text) {
bool ? this.text.show() : this.text.hide();
}
// 区段名称类暂时不做状态处理 // 区段名称类暂时不做状态处理
} }
} }

View File

@ -483,9 +483,6 @@ export default class Section extends Group {
// 哈尔滨线路 南京二 道岔相关区段设置 默认颜色 // 哈尔滨线路 南京二 道岔相关区段设置 默认颜色
if (this.style.Switch.sectionAction.flag && model.relSwitchCode && !flag) { if (this.style.Switch.sectionAction.flag && model.relSwitchCode && !flag) {
const switchModel = this.mapDevice[model.relSwitchCode]; const switchModel = this.mapDevice[model.relSwitchCode];
if (!switchModel) {
return;
}
const sectionB = switchModel.sectionBCode === model.code ? this.mapDevice[switchModel.sectionBCode] : null; const sectionB = switchModel.sectionBCode === model.code ? this.mapDevice[switchModel.sectionBCode] : null;
const sectionC = switchModel.sectionCCode === model.code ? this.mapDevice[switchModel.sectionCCode] : null; const sectionC = switchModel.sectionCCode === model.code ? this.mapDevice[switchModel.sectionCCode] : null;
const sectionA = this.mapDevice[switchModel.sectionACode]; const sectionA = this.mapDevice[switchModel.sectionACode];
@ -602,6 +599,7 @@ export default class Section extends Group {
// 分路不良 // 分路不良
// model.shuntingTypeList.length > 0 && // model.shuntingTypeList.length > 0 &&
model.badShunt && this.badShuntStatus(); model.badShunt && this.badShuntStatus();
this.name.setState(model.nameShow);
// 停车倒计时 // 停车倒计时
if (this.remainTimeText) { if (this.remainTimeText) {
if (model.stopCountDown) { if (model.stopCountDown) {

View File

@ -847,15 +847,6 @@ class Signal extends Group {
case 'LIGHTING_UNIT_FAULT_HEAD': case 'LIGHTING_UNIT_FAULT_HEAD':
this.lightingUnitFaultHead(); this.lightingUnitFaultHead();
break; break;
case 'R_WIRE_FAULT':
this.lightingUnitFaultName();
break;
case 'G_WIRE_FAULT':
this.lightingUnitFaultName();
break;
case 'Y_WIRE_FAULT':
this.lightingUnitFaultName();
break;
} }
} }
@ -931,8 +922,8 @@ class Signal extends Group {
// 隐藏自动信号和自动进路 // 隐藏自动信号和自动进路
setAutoClose() { setAutoClose() {
if (this.style.Signal.auto.autoRouteType != 'text') { if (this.style.Signal.auto.autoRouteType != 'text') {
this.sigAuto && this.sigAuto.hide(); this.sigAuto.hide();
this.sigAuto && this.sigAuto.setColor(this.style.backgroundColor); this.sigAuto.setColor(this.style.backgroundColor);
} else { } else {
this.sigName.setColor(this.style.Signal.text.defaultColor); this.sigName.setColor(this.style.Signal.text.defaultColor);
} }
@ -1197,8 +1188,8 @@ class Signal extends Group {
this.sigPost.setVerColor(this.style.Signal.post.closeSignalVerColor); this.sigPost.setVerColor(this.style.Signal.post.closeSignalVerColor);
} else if (model.level === 1 && this.style.Signal.post.guideSignalVerColor && !model.fleetMode) { } else if (model.level === 1 && this.style.Signal.post.guideSignalVerColor && !model.fleetMode) {
this.sigPost.setVerColor(this.style.Signal.post.guideSignalVerColor); this.sigPost.setVerColor(this.style.Signal.post.guideSignalVerColor);
} else if (model.level === 2 && this.style.Signal.post.atpLevelColor && !model.fleetMode) { } else if (model.level === 2 && this.style.Signal.post.autoRouteVerColor && !model.fleetMode) {
this.sigPost.setVerColor(this.style.Signal.post.atpLevelColor); this.sigPost.setVerColor(this.style.Signal.post.autoRouteVerColor);
} }
if (this.style.Signal.lamp.special) { if (this.style.Signal.lamp.special) {

View File

@ -186,11 +186,68 @@ export default class Station extends Group {
this.createInterconnectedControl(); // 联锁控 this.createInterconnectedControl(); // 联锁控
this.createVeryControl(); this.createVeryControl();
this.createSelfDiscipline(); this.createSelfDiscipline();
this.createTaiguo();
} }
} }
} }
this.setState(model); this.setState(model);
} }
createTaiguo() {
const computedControlModePoint = this.computedControlModePoint;
this.centerCommunication = new ESingleControl({
_subType: 'centerCommunication',
style: this.style,
zlevel: this.zlevel,
z: this.z,
point: {
x: computedControlModePoint.x - this.style.Station.StationControl.lamp.distance * 2 + this.style.Station.StationControl.centerCommunication.offset.x,
y: computedControlModePoint.y + this.style.Station.StationControl.centerCommunication.offset.y
},
context: this.style.Station.StationControl.centerCommunication.text,
pop: false
});
this.add(this.centerCommunication);
// 计划控制
this.planControl = new ESingleControl({
_subType: 'planControl',
style: this.style,
zlevel: this.zlevel,
z: this.z,
point: {
x: computedControlModePoint.x + this.style.Station.StationControl.lamp.distance * 2 + this.style.Station.StationControl.planControl.offset.x,
y: computedControlModePoint.y + this.style.Station.StationControl.planControl.offset.y
},
context: this.style.Station.StationControl.planControl.text,
pop: false
});
this.add(this.planControl);
this.etcs2 = new ESingleControl({
_subType: 'etcs2',
style: this.style,
zlevel: this.zlevel,
z: this.z,
point: {
x: computedControlModePoint.x + this.style.Station.StationControl.lamp.distance * 2 + this.style.Station.StationControl.etcs2.offset.x,
y: computedControlModePoint.y + this.style.Station.StationControl.etcs2.offset.y
},
context: this.style.Station.StationControl.etcs2.text,
pop: false
});
this.add(this.etcs2);
this.etcs3 = new ESingleControl({
_subType: 'etcs3',
style: this.style,
zlevel: this.zlevel,
z: this.z,
point: {
x: computedControlModePoint.x + this.style.Station.StationControl.lamp.distance * 2 + this.style.Station.StationControl.etcs3.offset.x,
y: computedControlModePoint.y + this.style.Station.StationControl.etcs3.offset.y
},
context: this.style.Station.StationControl.etcs3.text,
pop: false
});
this.add(this.etcs3);
}
createCtcControlMode() { // 大铁 createCtcControlMode() { // 大铁
// 非常站控 // 非常站控
// const model = this.model; // const model = this.model;
@ -357,7 +414,7 @@ export default class Station extends Group {
zlevel: this.zlevel, zlevel: this.zlevel,
z: this.z, z: this.z,
style: { style: {
x: computedControlModePoint.x, x: computedControlModePoint.x + this.style.Station.StationControl.text.offsetX,
y: computedControlModePoint.y + this.style.Station.StationControl.text.offsetY, y: computedControlModePoint.y + this.style.Station.StationControl.text.offsetY,
fontWeight: this.style.Station.StationControl.text.fontWeight, fontWeight: this.style.Station.StationControl.text.fontWeight,
fontSize: this.style.Station.StationControl.text.fontSize, fontSize: this.style.Station.StationControl.text.fontSize,
@ -635,7 +692,7 @@ export default class Station extends Group {
_subType: 'veryControlButtonText', _subType: 'veryControlButtonText',
position: [0, 0], position: [0, 0],
style: { style: {
x: computedControlModePoint.x + this.style.Station.StationControl.lamp.distance * 3 / 2 + this.style.Station.StationControl.veryControlButton.offset.y, x: computedControlModePoint.x + this.style.Station.StationControl.lamp.distance * 3 / 2 + this.style.Station.StationControl.veryControlButton.offset.x,
y: computedControlModePoint.y + this.style.Station.StationControl.veryControlButton.offset.y + this.style.Station.StationControl.lamp.radiusR + this.style.Station.StationControl.text.distance, y: computedControlModePoint.y + this.style.Station.StationControl.veryControlButton.offset.y + this.style.Station.StationControl.lamp.radiusR + this.style.Station.StationControl.text.distance,
fontWeight: this.style.Station.StationControl.text.fontWeight, fontWeight: this.style.Station.StationControl.text.fontWeight,
fontSize: this.style.Station.StationControl.text.fontSize, fontSize: this.style.Station.StationControl.text.fontSize,
@ -877,9 +934,7 @@ export default class Station extends Group {
if (this.graphRoad && model.routeSetMode == 'Manual_Set_Route') { if (this.graphRoad && model.routeSetMode == 'Manual_Set_Route') {
this.graphRoad.setColor(this.style.Station.StationControl.graphRoad.lightColor); this.graphRoad.setColor(this.style.Station.StationControl.graphRoad.lightColor);
} }
if (this.planControl && model.planControl) {
this.planControl.setColor(this.style.Station.StationControl.planControl.lightColor);
}
// if (this.style.Station.StationControl.disPlayNone) { // if (this.style.Station.StationControl.disPlayNone) {
// this.stationText && this.stationText.setStyle('textFill', '#fff'); // this.stationText && this.stationText.setStyle('textFill', '#fff');
// if (this.model.subheadDisplay) { // 副标题 // if (this.model.subheadDisplay) { // 副标题
@ -954,7 +1009,6 @@ export default class Station extends Group {
this.substationArrowsControl && this.substationArrowsControl.setColor(this.style.Station.StationControl.lamp.grayColor); this.substationArrowsControl && this.substationArrowsControl.setColor(this.style.Station.StationControl.lamp.grayColor);
this.emergencyArrowsControl && this.emergencyArrowsControl.setColor(this.style.Station.StationControl.lamp.grayColor); this.emergencyArrowsControl && this.emergencyArrowsControl.setColor(this.style.Station.StationControl.lamp.grayColor);
this.stationControlCC && this.stationControlCC.setStyle({text:'EL', textFill:this.style.Station.StationControl.text.emergencyControlColor}); this.stationControlCC && this.stationControlCC.setStyle({text:'EL', textFill:this.style.Station.StationControl.text.emergencyControlColor});
this.stationControlCC && this.stationControlCC.stopAnimation(true);
this.veryControl && this.veryControl.setColor(this.style.Station.StationControl.veryControl.defaultColor); this.veryControl && this.veryControl.setColor(this.style.Station.StationControl.veryControl.defaultColor);
this.selfDiscipline && this.selfDiscipline.setColor(this.style.Station.StationControl.selfDiscipline.defaultColor); this.selfDiscipline && this.selfDiscipline.setColor(this.style.Station.StationControl.selfDiscipline.defaultColor);
this.selfDisciplineControl && this.selfDisciplineControl.setColor(this.style.Station.StationControl.selfDisciplineControl.defaultColor); this.selfDisciplineControl && this.selfDisciplineControl.setColor(this.style.Station.StationControl.selfDisciplineControl.defaultColor);
@ -963,6 +1017,7 @@ export default class Station extends Group {
this.graphRoad && this.graphRoad.setColor(this.style.Station.StationControl.graphRoad.defaultColor); this.graphRoad && this.graphRoad.setColor(this.style.Station.StationControl.graphRoad.defaultColor);
this.planControl && this.planControl.setColor(this.style.Station.StationControl.planControl.defaultColor); this.planControl && this.planControl.setColor(this.style.Station.StationControl.planControl.defaultColor);
this.trainControl && this.trainControl.setColor(this.style.Station.StationControl.trainControl.defaultColor); this.trainControl && this.trainControl.setColor(this.style.Station.StationControl.trainControl.defaultColor);
this.etcs2 && this.etcs2.setColor(this.style.Station.StationControl.etcs2.defaultColor);
this.allowedTurnBack && this.allowedTurnBack.setColor(this.style.Station.StationControl.allowedTurnBack.defaultColor); this.allowedTurnBack && this.allowedTurnBack.setColor(this.style.Station.StationControl.allowedTurnBack.defaultColor);
this.selfDisciplineCommunication && this.selfDisciplineCommunication.setColor(this.style.Station.StationControl.selfDisciplineCommunication.defaultColor); this.selfDisciplineCommunication && this.selfDisciplineCommunication.setColor(this.style.Station.StationControl.selfDisciplineCommunication.defaultColor);
if (this.selfDisciplineThree) { if (this.selfDisciplineThree) {
@ -1010,6 +1065,9 @@ export default class Station extends Group {
model.controlApplicant && this.handleControlApplicant(model); model.controlApplicant && this.handleControlApplicant(model);
model.allowAutonomy && this.handleAllowAutonomy(model); model.allowAutonomy && this.handleAllowAutonomy(model);
// this.handlePowerUnlockShow(model); // this.handlePowerUnlockShow(model);
if (this.planControl && model.planControl) {
this.planControl.setColor(this.style.Station.StationControl.planControl.lightColor);
}
this.handleGuideLock(model); this.handleGuideLock(model);
if (this.style.Station.syncCentralizeStation && (model.controlMode || model.controller || model.emergencyController != undefined) && model.centralized) { if (this.style.Station.syncCentralizeStation && (model.controlMode || model.controller || model.emergencyController != undefined) && model.centralized) {
model.chargeStationCodeList.forEach(item => { model.chargeStationCodeList.forEach(item => {
@ -1048,25 +1106,7 @@ export default class Station extends Group {
device && device.instance && device.instance.setCount(countNum); device && device.instance && device.instance.setCount(countNum);
} }
} }
if (this.style.Station.StationControl.special && model.apply2TheControlMode) {
this.controlTextFlash(model.apply2TheControlMode);
}
}
}
controlTextFlash(apply2TheControlMode) {
if (this.stationControlCC && apply2TheControlMode) {
let color;
if (apply2TheControlMode === 'Local') {
color = this.style.Station.StationControl.text.stationControlColor;
this.stationControlCC && this.stationControlCC.setStyle({text:'LC', textFill:color});
} else if (apply2TheControlMode === 'Center') {
color = this.style.Station.StationControl.text.centerControlColor;
this.stationControlCC && this.stationControlCC.setStyle({text:'CC', textFill:color});
}
this.stationControlCC.animateStyle(true)
.when(500, {textFill: '#000'})
.when(1000, {textFill: color})
.when(1500, {textFill: '#000'}).start();
} }
} }
handleGuideLock(model) { handleGuideLock(model) {

View File

@ -18,19 +18,7 @@ class EDetainCircle extends Group {
const x = computedPosition.x + (model.width / 2) * detainD + detainD * style.StationStand.detainCircle.offset.x + detainD * style.StationStand.detainCircle.circleWidth / 2; const x = computedPosition.x + (model.width / 2) * detainD + detainD * style.StationStand.detainCircle.offset.x + detainD * style.StationStand.detainCircle.circleWidth / 2;
const y = computedPosition.y; const y = computedPosition.y;
const radius = style.StationStand.detainCircle.circleWidth / 2; const radius = style.StationStand.detainCircle.circleWidth / 2;
this.ibpDetainCircle = new Circle({
zlevel: this.model.zlevel,
z: this.model.z,
shape: {
cx: x + detainD * 12,
cy: y,
r: 3
},
style:{
lineWidth:2,
stroke: '#ffff00'
}
});
this.detainCircle = new Circle({ this.detainCircle = new Circle({
zlevel: this.model.zlevel, zlevel: this.model.zlevel,
z: this.model.z, z: this.model.z,
@ -73,7 +61,6 @@ class EDetainCircle extends Group {
} }
}); });
this.add(this.detainCircle); this.add(this.detainCircle);
this.add(this.ibpDetainCircle);
this.add(this.line1); this.add(this.line1);
this.add(this.line2); this.add(this.line2);
} }
@ -87,7 +74,6 @@ class EDetainCircle extends Group {
recover() { recover() {
const style = this.model.style; const style = this.model.style;
this.detainCircle && this.detainCircle.show(); this.detainCircle && this.detainCircle.show();
this.ibpDetainCircle && this.ibpDetainCircle.hide();
this.line1 && this.line1.show(); this.line1 && this.line1.show();
this.line2 && this.line2.show(); this.line2 && this.line2.show();
this.setColor(style.StationStand.detainCircle.defaultColor); this.setColor(style.StationStand.detainCircle.defaultColor);
@ -102,8 +88,6 @@ class EDetainCircle extends Group {
this.setColor(style.StationStand.detainCircle.centerTrainColor); this.setColor(style.StationStand.detainCircle.centerTrainColor);
} else if (model.centerHoldTrain) { } else if (model.centerHoldTrain) {
this.setColor(style.StationStand.detainCircle.centerTrainColor); this.setColor(style.StationStand.detainCircle.centerTrainColor);
} else if (model.ibpHoldTrain) {
this.ibpDetainCircle && this.ibpDetainCircle.show();
} }
} }
} }

View File

@ -166,11 +166,6 @@ export default class StationTurnBack extends Group {
this.control && this.control.highlightType3(this.style.ReturnModeGroup.highlightColor); this.control && this.control.highlightType3(this.style.ReturnModeGroup.highlightColor);
} }
} }
if (this.style.StationTurnBack.lamp.otherFill) {
if (name == '自动折返' || name == '固定折返轨1' || name == '固定折返轨1') {
this.control && this.control.setStyle({fill: this.style.StationTurnBack.lamp.otherFill});
}
}
} }
setAshShow() { setAshShow() {

View File

@ -326,9 +326,9 @@ export default class Switch extends Group {
} }
this.name.getTextRect().animateStyle(true) this.name.getTextRect().animateStyle(true)
.when(0, { textFill: this.style.transparentColor }) .when(0, { textFill: this.style.backgroundColor })
.when(1000, { textFill: this.style.Switch.text.borderColor }) .when(1000, { textFill: this.style.Switch.text.borderColor })
.when(2000, { textFill: this.style.transparentColor }) .when(2000, { textFill: this.style.backgroundColor })
.start(); .start();
} }
@ -354,7 +354,7 @@ export default class Switch extends Group {
this.lockCircle && this.lockCircle.hide(); // 圆形包围框 this.lockCircle && this.lockCircle.hide(); // 圆形包围框
this.lockArc && this.lockArc.hide(); // 圆形单锁框 this.lockArc && this.lockArc.hide(); // 圆形单锁框
this.name.getNameText().stopAnimation(false); this.name.getNameText().stopAnimation(false);
this.name.getTextRect().setStyle({ fill: this.style.transparentColor }); this.name.getTextRect().setStyle({ fill: this.style.backgroundColor });
this.shapeModelC && this.shapeModelC.hide(); // 形状 C this.shapeModelC && this.shapeModelC.hide(); // 形状 C
this.shapeModelA && this.shapeModelA.hide(); // 形状 A this.shapeModelA && this.shapeModelA.hide(); // 形状 A
this.shapeModelB && this.shapeModelB.hide(); // 形状 B this.shapeModelB && this.shapeModelB.hide(); // 形状 B
@ -474,6 +474,12 @@ export default class Switch extends Group {
this.specialCircle && this.specialCircle.animate(); this.specialCircle && this.specialCircle.animate();
} }
this.lossShow && this.lossShow.show(); // 西安线路专有
this.lossShow && this.lossShow.animateStyle(true)
.when(0, { stroke: this.style.backgroundColor })
.when(500, { stroke: '#F00' })
.when(1000, { stroke: this.style.backgroundColor })
.start();
if (this.style.Switch.jointImg.loseNameFlash) { if (this.style.Switch.jointImg.loseNameFlash) {
this.name.getNameText().animateStyle(true) this.name.getNameText().animateStyle(true)
.when(0, { textFill: this.style.backgroundColor }) .when(0, { textFill: this.style.backgroundColor })
@ -503,14 +509,6 @@ export default class Switch extends Group {
} }
} }
} }
if (pos === 'NO' && fault && faultList.includes(fault)) {
this.lossShow && this.lossShow.show(); // 西安线路专有
this.lossShow && this.lossShow.animateStyle(true)
.when(0, { stroke: this.style.backgroundColor })
.when(500, { stroke: '#F00' })
.when(1000, { stroke: this.style.backgroundColor })
.start();
}
// stopAnimation // stopAnimation
this.shapeModelB.stopAnimation(false); this.shapeModelB.stopAnimation(false);
this.shapeModelC.stopAnimation(false); this.shapeModelC.stopAnimation(false);
@ -626,7 +624,7 @@ export default class Switch extends Group {
} }
if (this.style.Switch.core.specialCircle) { if (this.style.Switch.core.specialCircle) {
this.name.getTextRect().setStyle({ fill: this.style.transparentColor }); this.name.getTextRect().setStyle({ fill: this.style.backgroundColor });
this.setTextColor(this.style.Switch.text.guideMasterLockColor); this.setTextColor(this.style.Switch.text.guideMasterLockColor);
} else { } else {
this.setTextColor(this.style.Switch.text.monolockLocationColor); this.setTextColor(this.style.Switch.text.monolockLocationColor);
@ -836,6 +834,7 @@ export default class Switch extends Group {
// N-定位 R-反位 NO-无(失表) EX-挤叉 // N-定位 R-反位 NO-无(失表) EX-挤叉
// model.pos = 'EX'; // model.pos = 'EX';
if (model.pos == 'N') { if (model.pos == 'N') {
this.switchPosition = 'normal'; this.switchPosition = 'normal';
this.setLocationAction(model); /** 定位*/ this.setLocationAction(model); /** 定位*/
@ -911,7 +910,7 @@ export default class Switch extends Group {
this.setHasTextBorder(1, this.style.Switch.text.fpLockBorderColor); this.setHasTextBorder(1, this.style.Switch.text.fpLockBorderColor);
} }
if (this.style.Switch.core.specialCircle) { if (this.style.Switch.core.specialCircle) {
this.name.getTextRect().setStyle({ fill: this.style.transparentColor }); this.name.getTextRect().setStyle({ fill: this.style.backgroundColor });
this.setTextColor(this.style.Switch.text.fpLockColor); this.setTextColor(this.style.Switch.text.fpLockColor);
} }
} }

View File

@ -2,7 +2,7 @@ import Group from 'zrender/src/container/Group';
import TrainBodyBox from './TrainBodyBox'; import TrainBodyBox from './TrainBodyBox';
// import '../StationStand/EDetain'; // import '../StationStand/EDetain';
import ETextName from '../element/ETextName'; // 名称文字 (共有) import ETextName from '../element/ETextName'; // 名称文字 (共有)
import EMouse from './EMouse'; // import EMouse from './EMouse';
import store from '@/store/index'; import store from '@/store/index';
import Circle from 'zrender/src/graphic/shape/Circle'; import Circle from 'zrender/src/graphic/shape/Circle';
import BoundingRect from 'zrender/src/core/BoundingRect'; import BoundingRect from 'zrender/src/core/BoundingRect';
@ -21,26 +21,26 @@ export default class TrainBody extends Group {
} }
createMouse() { createMouse() {
this.mouseEvent = new EMouse(this); // this.mouseEvent = new EMouse(this);
this.add(this.mouseEvent); // this.add(this.mouseEvent);
if (this.deviceModel.__down) { // if (this.deviceModel.__down) {
store.dispatch('map/setTrainDetails', this.deviceModel); // store.dispatch('map/setTrainDetails', this.deviceModel);
this.mouseEvent.mouseover(); // this.mouseEvent.mouseover();
} // }
if (this.deviceModel.__click) { // if (this.deviceModel.__click) {
this.mouseEvent.mouseClick(); // this.mouseEvent.mouseClick();
} // }
this.on('mouseover', () => { // this.on('mouseover', () => {
store.dispatch('map/setTrainDetails', this.deviceModel); // store.dispatch('map/setTrainDetails', this.deviceModel);
this.mouseEvent.mouseover(); // this.mouseEvent.mouseover();
}); // });
this.on('mouseout', () => { // this.on('mouseout', () => {
store.dispatch('map/setTrainDetails', null); // store.dispatch('map/setTrainDetails', null);
this.mouseEvent.mouseout(); // this.mouseEvent.mouseout();
}); // });
this.on('click', () => { // this.on('click', () => {
this.mouseEvent.mouseClick(); // this.mouseEvent.mouseClick();
}); // });
} }
create() { create() {
@ -261,13 +261,12 @@ export default class TrainBody extends Group {
this.add(this.travelNum); this.add(this.travelNum);
} }
if (style.Train.common.hasDelayTime) { if (style.Train.common.hasDelayTime) {
const time = Math.abs(model.dt) <= 15 ? Math.abs(model.dt) : (model.dt > 0 ? '-' + model.dt : '+' + Math.abs(model.dt));
this.delayTime = new ETextName({ this.delayTime = new ETextName({
zlevel: model.zlevel, zlevel: model.zlevel,
z: model.z + 1, z: model.z + 1,
x: parseInt(model.point.x + style.Train.delayTime.trainDelayTimeOffset.x), x: parseInt(model.point.x + style.Train.delayTime.trainDelayTimeOffset.x),
y: parseInt(model.point.y + style.Train.delayTime.trainDelayTimeOffset.y), y: parseInt(model.point.y + style.Train.delayTime.trainDelayTimeOffset.y),
text: time, text: model.dt > 0 ? '+' + model.dt : model.dt,
textFill: '#DADA00', textFill: '#DADA00',
textStroke: style.trainTextColor, textStroke: style.trainTextColor,
textStrokeWidth: 0, textStrokeWidth: 0,
@ -309,12 +308,12 @@ export default class TrainBody extends Group {
setTrainBorderColor(color) { setTrainBorderColor(color) {
this.trainBodyBox && this.trainBodyBox.setColor('stroke', color); this.trainBodyBox && this.trainBodyBox.setColor('stroke', color);
} }
setHShow(isShow, parking) { setHShow(isShow) {
if (this.textH) { if (this.textH) {
isShow ? this.textH.show() : this.textH.hide(); isShow ? this.textH.show() : this.textH.hide();
} }
if (this.style.Train.common.HSDASpliceShow && isShow) { if (this.style.Train.common.HSDASpliceShow) {
this.trainBodyBox.buckleTrain(parking); isShow ? this.trainBodyBox.buckleTrain() : this.trainBodyBox.release();
} }
} }
setSShow(isShow) { setSShow(isShow) {
@ -551,12 +550,9 @@ export default class TrainBody extends Group {
trainBodyFault() { trainBodyFault() {
this.trainBodyBox && this.trainBodyBox.trainBodyFault(); this.trainBodyBox && this.trainBodyBox.trainBodyFault();
} }
recoverTrainBoxAnimation() { untrainBodyFault() {
this.trainBodyBox && this.trainBodyBox.recoverAnimation(); this.trainBodyBox && this.trainBodyBox.untrainBodyFault();
} }
// untrainBodyFault() {
// this.trainBodyBox && this.trainBodyBox.untrainBodyFault();
// }
updateTextPosition(point) { updateTextPosition(point) {
this.mouseEvent.updateTextPosition(point); this.mouseEvent.updateTextPosition(point);
} }

View File

@ -38,10 +38,10 @@ export default class TrainBodyBox extends Group {
} }
} }
// 列车扣车 // 列车扣车
buckleTrain(parking) { buckleTrain() {
if (this.trainBodyBox) { if (this.trainBodyBox) {
if (parking) { // 列车停稳状态下开始闪烁
this.trainBodyBox.setStyle('fill', 'yellow'); this.trainBodyBox.setStyle('fill', 'yellow');
if (!this.model.speed) { // 列车停稳状态下开始闪烁
this.trainBodyBox.animateStyle(true) this.trainBodyBox.animateStyle(true)
.when(0, { fill: this.model.style.backgroundColor }) .when(0, { fill: this.model.style.backgroundColor })
.when(1000, { fill: 'yellow' }) .when(1000, { fill: 'yellow' })
@ -50,13 +50,13 @@ export default class TrainBodyBox extends Group {
} }
} }
} }
// // 列车放行 // 列车放行
// release() { release() {
// if (this.trainBodyBox) { if (this.trainBodyBox) {
// this.trainBodyBox.setStyle('fill', this.model.style.Train.trainBody.trainBodyFillColor); this.trainBodyBox.setStyle('fill', this.model.style.Train.trainBody.trainBodyFillColor);
// this.trainBodyBox.stopAnimation(false); this.trainBodyBox.stopAnimation(false);
// } }
// } }
// 西安二号线 列车停车状态 闪烁红色 // 西安二号线 列车停车状态 闪烁红色
trainBodyFault() { trainBodyFault() {
if (this.trainBodyBox) { if (this.trainBodyBox) {
@ -69,14 +69,8 @@ export default class TrainBodyBox extends Group {
} }
} }
// // 西安二号线 列车取消停车状态 // 西安二号线 列车取消停车状态
// untrainBodyFault() { untrainBodyFault() {
// if (this.trainBodyBox) {
// this.trainBodyBox.setStyle('fill', this.model.style.Train.trainBody.trainBodyFillColor);
// this.trainBodyBox.stopAnimation(false);
// }
// }
recoverAnimation() {
if (this.trainBodyBox) { if (this.trainBodyBox) {
this.trainBodyBox.setStyle('fill', this.model.style.Train.trainBody.trainBodyFillColor); this.trainBodyBox.setStyle('fill', this.model.style.Train.trainBody.trainBodyFillColor);
this.trainBodyBox.stopAnimation(false); this.trainBodyBox.stopAnimation(false);

View File

@ -221,7 +221,7 @@ export default class Train extends Group {
// 恢复颜色状态 // 恢复颜色状态
recover() { recover() {
this.trainB && this.trainB.setHShow(false, false); this.trainB && this.trainB.setHShow(false);
this.trainB && this.trainB.setSShow(false); this.trainB && this.trainB.setSShow(false);
this.trainB && this.trainB.setDShow(false); this.trainB && this.trainB.setDShow(false);
this.trainB && this.trainB.setAShow(false); this.trainB && this.trainB.setAShow(false);
@ -231,7 +231,6 @@ export default class Train extends Group {
this.trainL && this.trainL.setArrowShow(false); this.trainL && this.trainL.setArrowShow(false);
this.trainR && this.trainR.setArrowShow(false); this.trainR && this.trainR.setArrowShow(false);
this.trainB && this.trainB.setTrainBorderColor(this.style.Train.trainBody.trainSidelineColor || this.style.trainSidelineColor); this.trainB && this.trainB.setTrainBorderColor(this.style.Train.trainBody.trainSidelineColor || this.style.trainSidelineColor);
this.trainB && this.trainB.recoverTrainBoxAnimation();
} }
// 设置运行方向状态类型 // 设置运行方向状态类型
@ -328,11 +327,11 @@ export default class Train extends Group {
this.trainB && this.trainB.setSoonerOrLater(dt); this.trainB && this.trainB.setSoonerOrLater(dt);
} }
// 设置扣车状态 // 设置扣车状态
setHoldStatus(status, parking) { setHoldStatus(status) {
if (status) { if (status) {
this.trainB && this.trainB.setHShow(true, parking); this.trainB && this.trainB.setHShow(true);
} else { } else {
this.trainB && this.trainB.setHShow(false, parking); this.trainB && this.trainB.setHShow(false);
} }
} }
@ -409,7 +408,7 @@ export default class Train extends Group {
} }
this.setDoorStatus(model.doorCloseLock); this.setDoorStatus(model.doorCloseLock);
this.setAlarmStatus(model.alarmStatus); this.setAlarmStatus(model.alarmStatus);
this.setHoldStatus(model.hold, model.parking); this.setHoldStatus(model.hold);
this.setJumpStatus(model.jump); this.setJumpStatus(model.jump);
// this.setSoonerOrLater(model.dt); // this.setSoonerOrLater(model.dt);
this.setTrainTypeColor(model.type); this.setTrainTypeColor(model.type);
@ -422,11 +421,9 @@ export default class Train extends Group {
if (store.state.map.picture == 'largePassengerView') { if (store.state.map.picture == 'largePassengerView') {
this.handlePassagerColor(model.num); this.handlePassagerColor(model.num);
} }
if (style.Train.trainBody.trainBodyFaultFlashColor) {
// 西安二号线 列车停车状态 闪烁红色 // 西安二号线 列车停车状态 闪烁红色
this.updateTrainBodyFault(model.orderStop); this.updateTrainBodyFault(model.orderStop);
if (!model.groundCommunicable) {
this.trainL && this.trainL.setColor('#f00');
this.trainR && this.trainR.setColor('#f00');
} }
} }
} }
@ -441,10 +438,17 @@ export default class Train extends Group {
} }
updateTrainBodyFault(orderStop) { updateTrainBodyFault(orderStop) {
if (orderStop) {
// 西安二号线 列车停车状态 闪烁红色 // 西安二号线 列车停车状态 闪烁红色
if (this.style.Train.trainBody.trainBodyFaultFlashColor && orderStop && this.trainB) { if (this.trainB) {
this.trainB.trainBodyFault(); this.trainB.trainBodyFault();
} }
} else {
// 西安二号线 列车取消停车状态
if (this.trainB) {
this.trainB.untrainBodyFault();
}
}
} }
handlePassagerColor(num) { handlePassagerColor(num) {

View File

@ -48,8 +48,7 @@ export default class EMouse extends Group {
e.target._subType == 'Text') { e.target._subType == 'Text') {
this.text.hide(); this.text.hide();
} else { } else {
// this.device.control.setControlColor(this.device.style.ZcControl.lamp.controlColor); this.device.control.setControlColor(this.device.style.ZcControl.lamp.controlColor);
this.device.setState(this.device.model)
this.device.control.setTextColor('#FFFFFF'); this.device.control.setTextColor('#FFFFFF');
this.device.control.setTextBorder(false); this.device.control.setTextBorder(false);
this.device.control.setArcBorder(false); this.device.control.setArcBorder(false);

View File

@ -73,6 +73,7 @@ export default class ZcControl extends Group {
// 设置状态 // 设置状态
setState(model) { setState(model) {
this.recover(); this.recover();
// 只响应前端自定义类型的状态变化 // 只响应前端自定义类型的状态变化
if (model._free) { if (model._free) {
this.setAshShow(); this.setAshShow();

View File

@ -1,373 +0,0 @@
<template>
<div class="menus" :style="{width: width + 'px'}">
<menu-station-stand ref="menuStationStand" :selected="selected" :work="'atsWork'" />
<menu-switch ref="menuSwitch" :selected="selected" :work="'atsWork'" />
<menu-signal ref="menuSignal" :selected="selected" :work="'atsWork'" />
<menu-section ref="menuSection" :selected="selected" :work="'atsWork'" />
<menu-train ref="menuTrain" :selected="selected" :work="'atsWork'" />
<menu-station ref="menuStation" :selected="selected" :work="'atsWork'" />
<menu-limit ref="menuLimit" :selected="selected" :work="'atsWork'" />
<passive-alarm ref="passiveAlarm" />
<passive-contorl ref="passiveControl" pop-class="beijing-01__systerm" />
<passive-timeout ref="passiveTimeout" />
</div>
</template>
<script>
import { mapGetters } from 'vuex';
import MenuSignal from './menuSignal';
import MenuStationStand from './menuStationStand';
import MenuSwitch from './menuSwitch';
import MenuSection from './menuSection';
import MenuTrain from './menuTrain';
import MenuStation from './menuStation';
import MenuLimit from './menuLimit';
import PassiveAlarm from './passiveDialog/alarm';
import PassiveContorl from '@/jmapNew/theme/components/menus/passiveDialog/control';
import PassiveTimeout from './passiveDialog/timeout';
export default {
name: 'AtsWorkMenus',
components: {
MenuSignal,
MenuSwitch,
MenuSection,
MenuStationStand,
MenuStation,
MenuTrain,
MenuLimit,
PassiveAlarm,
PassiveContorl,
PassiveTimeout
},
props: {
selected: {
type: Object,
default() {
return null;
}
}
},
computed: {
...mapGetters('config', [
'width'
])
},
watch: {
'$store.state.trainingNew.trainingSwitch': function (val) {
if (val) {
this.$store.dispatch('menuOperation/setButtonOperation', null);
}
}
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('config/updateMenuBar');
this.$refs['menuSignal'].setRouteSignal();
});
this.$root.$on('dialogOpen', e => {
if (this.selected == e &&
this.selected &&
this.selected.instance &&
this.selected.instance.mouseEvent) {
this.selected.instance.mouseEvent.mouseover();
}
});
this.$root.$on('dialogClose', e => {
if (this.selected == e &&
this.selected &&
this.selected.instance &&
this.selected.instance.mouseEvent) {
this.selected.instance.__down = false;
this.selected.instance.mouseEvent.mouseout();
this.$jlmap.clearEvent();
}
});
},
beforeDestroy() {
this.$root.$off('dialogOpen');
this.$root.$off('dialogClose');
}
};
</script>
<style>
.menus .pop-menu {
background: #F0F0F0;
}
.menus .pop-menu span {
color: #000;
}
.menus .pop-menu .is-disabled span {
color: #B4B3B8;
}
.beijing-01__systerm {
overflow: hidden !important;
}
.beijing-01__systerm .el-dialog {
background: rgba(100, 100, 100, 0.3);
border: 2px solid rgb(144, 144, 144, 0.8);
border-radius: 6px;
color: #000;
font-size: 14px;
}
.beijing-01__systerm .el-dialog .el-dialog__header {
padding: 10px;
height: 26px;
}
.beijing-01__systerm .el-dialog .el-dialog__footer {
background: #F0F0F0;
opacity: 1;
}
.beijing-01__systerm .el-dialog .el-dialog__body {
padding: 10px;
margin: 5px;
border: 2px solid rgba(120, 121, 123, 0.5);
box-shadow: 1px hsla(240, 0%, 100%, 0.5) inset;
background: #F0F0F0;
opacity: 1;
}
.beijing-01__systerm .el-dialog .el-dialog__title {
position: absolute;
top: 6px;
color: #000;
border-radius: 4px;
padding: 0px 2px;
height: 20px;
line-height: 20px
}
.beijing-01__systerm .el-dialog .el-dialog__title::before {
content: '';
position: absolute;
top: 0;
left: 0;
filter: blur(7px);
height: 20px;
width: -webkit-fill-available;
background: rgba(190, 190, 190, 0.8);
z-index: -1;
}
.beijing-01__systerm .el-dialog .el-dialog__headerbtn {
background: linear-gradient(#CD98A0, #C27D6E, #B63022, #C68770);
border: 1px solid #fff;
border-radius: 4px;
top: 5px;
right: 5px;
line-height: 18px;
}
.beijing-01__systerm .el-dialog .el-dialog__headerbtn .el-icon-close:before {
font-size: 16px;
}
.beijing-01__systerm .el-dialog .el-dialog__headerbtn .el-dialog__close {
color: #fff;
}
.beijing-01__systerm .el-dialog .el-button {
height: 32px;
line-height: 32px;
padding: 0px;
width: 80px;
border: 2px outset #E2E2E2;
border-radius: 0px !important;
color: #000;
background: #F0F0F0;
}
.beijing-01__systerm .el-dialog .expand {
width: 120px;
}
.beijing-01__systerm .el-dialog .el-button:focus span {
border: 1px dashed gray;
}
.beijing-01__systerm .el-dialog .el-button:active {
border: 2px inset #E2E2E2;
}
.beijing-01__systerm .el-dialog .el-button:disabled {
border: 2px inset #E2E2E2;
}
.beijing-01__systerm .el-dialog .el-button:disabled span {
border: 0px;
}
.beijing-01__systerm .el-dialog .el-input {
border: 2px inset #E9E9E9;
}
.beijing-01__systerm .el-dialog .el-input .el-input__inner {
color: #000;
background: #fff !important;
border: 0px;
border-radius: 0px !important;
box-sizing: border-box;
}
.beijing-01__systerm .el-dialog .el-input.is-disabled .el-input__inner {
background: #F0F0F0 !important;
}
.beijing-01__systerm .el-dialog .el-textarea {
border: 2px inset #E9E9E9;
border-radius: 0px;
}
.beijing-01__systerm .el-dialog .el-textarea .el-textarea__inner {
color: #000;
background: #fff !important;
border: 0px;
border-radius: 0px !important;
box-sizing: border-box;
}
.beijing-01__systerm .el-dialog .el-textarea.is-disabled .el-textarea__inner {
background: #F0F0F0 !important;
}
.beijing-01__systerm .el-dialog .el-table--border th.gutter {
background: #EBEADB !important;
}
.beijing-01__systerm .el-dialog .el-table {
border: 2px inset #E9E9E9;
color: #000 !important;
}
.beijing-01__systerm .el-dialog .el-table .cell {
line-height: unset !important;
}
.beijing-01__systerm .el-dialog .el-table th.is-leaf {
background: #F0F0F0 !important;
border-right: 1px solid #BDBDBD !important;
border-bottom: 1px solid #BDBDBD !important;
color: #000 !important;
height: 20px !important;
padding: 0px;
}
.beijing-01__systerm .el-dialog .el-table tr td {
height: 20px !important;
padding: 0px;
}
.beijing-01__systerm .el-dialog .el-table .el-table__empty-text {
top: 15px !important;
}
.beijing-01__systerm .el-dialog .current-row>td {
background: #3399FF !important;
color: #fff !important;
}
.beijing-01__systerm .el-dialog .el-checkbox__inner {
border: 1px inset #dcdfe6 !important;
}
.beijing-01__systerm .el-dialog .el-checkbox__label {
color: #000 !important;
}
.beijing-01__systerm .el-dialog .el-checkbox.is-disabled .el-checkbox__inner {
background: #E6E6E6 !important;
}
.beijing-01__systerm .el-dialog .el-checkbox.is-disabled .el-checkbox__label {
color: #C5C9CC !important;
}
.beijing-01__systerm .el-dialog .el-checkbox__input.is-checked .el-checkbox__inner {
background: #fff !important;
border: 1px inset #dcdfe6 !important;
}
.beijing-01__systerm .el-dialog .el-checkbox__input.is-checked .el-checkbox__inner::after {
position: absolute;
-webkit-box-sizing: content-box;
box-sizing: content-box;
content: "";
border: 1px solid #000;
border-left: 0;
border-top: 0;
height: 7px;
left: 4px;
top: 1px;
}
.beijing-01__systerm .el-dialog .el-radio__inner {
border: 1px inset #dcdfe6 !important;
}
.beijing-01__systerm .el-dialog .el-radio__label {
color: #000 !important;
}
.beijing-01__systerm .el-dialog .el-radio__input.is-checked .el-radio__inner {
background: #fff !important;
border: 1px inset #dcdfe6 !important;
}
.beijing-01__systerm .el-dialog .el-radio__input.is-checked .el-radio__inner::after {
width: 4px;
height: 4px;
border-radius: 100%;
background-color: #000 !important;
position: absolute;
left: 50%;
top: 50%;
}
.beijing-01__systerm .el-dialog .el-radio.is-disabled .el-radio__inner {
background: #E6E6E6 !important;
}
.beijing-01__systerm .el-dialog .el-radio.is-disabled .el-radio__label {
color: #C5C9CC !important;
}
.beijing-01__systerm .el-dialog .base-label {
background: rgba(0, 0, 0, x);
position: relative;
left: -15px;
top: -18px;
}
.beijing-01__systerm .el-dialog .el-form-item label {
font-weight: normal !important;
color: #000 !important;
}
.beijing-01__systerm .el-dialog .context {
height: 100px;
border: 2px inset #E2E2E2;
overflow-y: scroll;
}
.beijing-01__systerm .el-dialog .table {
margin-top: 10px;
}
.beijing-01__systerm .el-dialog .notice {
margin-left: 62px;
line-height: 30px;
}
.beijing-01__systerm .el-dialog .button-group {
margin-top: 10px;
}
</style>

View File

@ -1,435 +0,0 @@
<template>
<div class="chengdou-01__menus" :style="{width: width + 'px'}">
<menu-request ref="menuRequest" />
<menu-station-stand ref="menuStationStand" :selected="selected" :work="work" />
<menu-switch ref="menuSwitch" :selected="selected" :work="work" />
<menu-signal ref="menuSignal" :selected="selected" :work="work" />
<menu-section ref="menuSection" :selected="selected" :work="work" />
<menu-train ref="menuTrain" :selected="selected" :work="work" />
<menu-station ref="menuStation" :selected="selected" :work="work" />
<menu-station-platform ref="menuStationPlatform" :selected="selected" @popMenuStationStand="popMenuStationStand" />
<passive-alarm ref="passiveAlarm" />
<passive-contorl ref="passiveControl" pop-class="chengdou-01__system" :work="work" />
<passive-Timeout ref="passiveTimeout" />
</div>
</template>
<script>
import { mapGetters } from 'vuex';
import MenuRequest from './menuRequest';
import MenuSignal from './menuSignal';
import MenuStationStand from './menuStationStand';
import MenuSwitch from './menuSwitch';
import MenuSection from './menuSection';
import MenuTrain from './menuTrain';
import MenuStation from './menuStation';
import PassiveAlarm from './passiveDialog/alarm';
import PassiveContorl from '@/jmapNew/theme/components/menus/passiveDialog/control';
import PassiveTimeout from './passiveDialog/timeout';
import MenuStationPlatform from './menuStationPlatform';
export default {
name: 'AtsWorkMenu',
components: {
MenuRequest,
// MenuCancel,
MenuSignal,
MenuSwitch,
MenuSection,
MenuStationStand,
MenuStation,
MenuTrain,
PassiveAlarm,
PassiveContorl,
PassiveTimeout,
MenuStationPlatform
},
props: {
selected: {
type: Object,
default() {
return null;
}
}
},
data() {
return {
work: 'atsWork'
};
},
computed: {
...mapGetters('config', [
'width'
])
},
watch: {
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('config/updateMenuBar');
});
},
methods: {
popMenuStationStand(param) {
this.$refs.menuStationStand.doShow(param.position, param.type);
}
}
};
</script>
<style>
.chengdou-01__menus .pop-menu {
background: #5F9EA0;
}
.chengdou-01__menus .pop-menu .el-popover{
background: #5F9EA0;
}
.chengdou-01__menus .pop-menu span {
color: #000;
}
.chengdou-01__menus .pop-menu .is-disabled span {
color: #B4B3B8;
}
.chengdou-01__systerm {
overflow: hidden !important;
}
.chengdou-01__system .el-dialog {
background: #0055E8;
box-shadow: 1px hsla(240, 0%, 100%, 0.5) inset;
border: 1px solid rgb(69, 134, 247);
border-radius: 6px;
font-size: 13px !important;
color: #000;
}
.chengdou-01__system .el-dialog span {
font-size: 13px !important;
line-height: 22px;
}
.chengdou-01__system .el-dialog .el-dialog__footer {
background: #5F9EA0;
opacity: 1;
}
.chengdou-01__system .el-dialog .el-dialog__body {
padding: 20px;
margin: 0px 3px 3px;
border: 2px solid rgba(120, 121, 123, 0.5);
box-shadow: 1px hsla(240, 0%, 100%, 0.5) inset;
background: #5F9EA0;
opacity: 1;
}
.chengdou-01__system .station-stand .el-dialog__body {
background: #000;
color: #E8E8E8;
}
.chengdou-01__system .el-dialog .el-dialog__title {
font-size: 16px;
color: #fff;
position: absolute;
top: 4px;
left:25px;
}
.chengdou-01__system .el-dialog .el-dialog__headerbtn {
background: linear-gradient(#CD98A0, #C27D6E, #B63022, #C68770);
border: 1px solid #fff;
border-radius: 4px;
top: 6px;
right: 3px;
line-height: 16px;
}
.chengdou-01__system .el-dialog .el-dialog__headerbtn .el-icon-close:before {
font-size: 16px;
}
.chengdou-01__system .el-dialog .el-dialog__headerbtn .el-dialog__close {
color: #fff;
}
.chengdou-01__system .el-dialog .el-button {
height: 24px;
line-height: 22px;
padding: 0px;
width: 80px;
border: 2px outset #B7D4D5;
border-radius: 0 !important;
color: #000;
background: #5F9EA0;
}
.chengdou-01__system .el-dialog .expand {
width: 120px;
}
.chengdou-01__system .el-dialog .el-button:focus span {
border: 1px dashed #315253;
}
.chengdou-01__system .el-dialog .el-button:active {
border: 2px inset #B7D4D5;
}
.chengdou-01__system .el-dialog .el-button:disabled {
border: 2px inset #B7D4D5;
}
.chengdou-01__system .el-dialog .el-button:disabled span {
border: 0px;
}
.chengdou-01__select-option .el-select-dropdown__item{
background: #5F9EA0;
}
.chengdou-01__select-option .el-scrollbar__wrap {
background-color: #5F9EA0;
overflow: hidden;
overflow-y: scroll;
}
.chengdou-01__select-option{
border-style: solid;
border-width: 1px;
border-color: #335658 #99C1C3 #99C1C3 #335658;
border-radius: 0;
background:#5F9EA0;
}
.chengdou-01__select-option .el-scrollbar{
border-style: solid;
border-width: 1px;
border-color: #467576 #A0C6C7 #A0C6C7 #467576;
border-radius: 0;
}
.chengdou-01__select-option .el-select-dropdown__item.selected{
color: #fff;
}
.chengdou-01__select-option .el-select-dropdown__item{
color: #000;
}
.chengdou-01__system .el-dialog .el-transfer-panel{
border-style: solid;
border-width: 1px;
border-color: #467576 #A0C6C7 #A0C6C7 #467576;
border-radius: 0;
background: #5F9EA0;
}
.chengdou-01__system .el-dialog .el-transfer .el-button{
width: 40px;
}
.chengdou-01__system .el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span {
color: #000;
}
.chengdou-01__system .el-dialog .el-transfer-panel .el-transfer-panel__header {
background: #5F9EA0;
border-bottom: 1px solid #467576;
}
.chengdou-01__system .el-dialog .el-transfer-panel .el-transfer-panel__empty {
color: #5F9EA0;
}
.chengdou-01__system .el-dialog .el-input {
border-style:solid;
border-width: 1px;
border-color: #335658 #99C1C3 #99C1C3 #335658;
height: 22px !important;
line-height: 22px !important;
background: #5F9EA0;
}
.chengdou-01__system .el-dialog .el-input__inner {
color: #000;
background: #5F9EA0 !important;
border-style:solid;
border-width: 1px;
border-color: #467576 #A0C6C7 #A0C6C7 #467576;
border-radius: 0px !important;
box-sizing: border-box;
height: 22px !important;
line-height: 22px !important;
}
.chengdou-01__system .el-dialog .el-input.is-disabled .el-input__inner {
background: #F0F0F0 !important;
}
.chengdou-01__system .el-dialog .el-textarea {
border-style:solid;
border-width: 1px;
border-color: #335658 #99C1C3 #99C1C3 #335658;
border-radius: 0;
}
.chengdou-01__system .el-dialog .el-textarea .el-textarea__inner {
color: #000;
background: #5F9EA0 !important;
border-style:solid;
border-width: 1px;
border-color: #467576 #A0C6C7 #A0C6C7 #467576;
border-radius: 0px !important;
box-sizing: border-box;
}
.chengdou-01__system .el-dialog .el-textarea.is-disabled .el-textarea__inner {
background: #F0F0F0 !important;
}
.chengdou-01__system .el-dialog .el-table--border th.gutter {
background: #EBEADB !important;
}
.chengdou-01__system .el-dialog .el-table {
border: 2px inset #E9E9E9;
color: #000 !important;
}
.chengdou-01__system .el-dialog .el-table .cell {
height: 22px;
line-height: 22px;
}
.chengdou-01__system .el-dialog .el-table th.is-leaf {
background: #F0F0F0 !important;
border-right: 1px solid #BDBDBD !important;
border-bottom: 1px solid #BDBDBD !important;
color: #000 !important;
height: 20px !important;
padding: 0px;
}
.chengdou-01__system .el-dialog .el-table tr td {
height: 20px !important;
padding: 0px;
}
.chengdou-01__system .el-dialog .el-table .el-table__empty-text {
top: 15px !important;
}
.chengdou-01__system .el-dialog .current-row>td {
background: #3399FF !important;
color: #fff !important;
}
.chengdou-01__system .el-dialog .el-checkbox__inner {
border: 1px inset #dcdfe6 !important;
}
.chengdou-01__system .el-dialog .el-checkbox__label {
color: #000 !important;
}
.chengdou-01__system .el-dialog .el-checkbox.is-disabled .el-checkbox__inner {
background: #E6E6E6 !important;
}
.chengdou-01__system .el-dialog .el-checkbox.is-disabled .el-checkbox__label {
color: #C5C9CC !important;
}
.chengdou-01__system .el-dialog .el-checkbox__input.is-checked .el-checkbox__inner {
background: #fff !important;
border: 1px inset #dcdfe6 !important;
}
.chengdou-01__system .el-dialog .el-checkbox__input.is-checked .el-checkbox__inner::after {
position: absolute;
-webkit-box-sizing: content-box;
box-sizing: content-box;
content: "";
border: 1px solid #000;
border-left: 0;
border-top: 0;
height: 7px;
left: 4px;
top: 1px;
}
.chengdou-01__system .el-dialog .el-radio__inner {
border: 1px inset #dcdfe6 !important;
}
.chengdou-01__system .el-dialog .el-radio__label {
color: #000 !important;
}
.chengdou-01__system .el-dialog .el-radio__input.is-checked .el-radio__inner {
background: #fff !important;
border: 1px inset #dcdfe6 !important;
}
.chengdou-01__system .el-dialog .el-radio__input.is-checked .el-radio__inner::after {
width: 4px;
height: 4px;
border-radius: 100%;
background-color: #000 !important;
position: absolute;
left: 50%;
top: 50%;
}
.chengdou-01__system .el-dialog .el-radio.is-disabled .el-radio__inner {
background: #E6E6E6 !important;
}
.chengdou-01__system .el-dialog .el-radio.is-disabled .el-radio__label {
color: #C5C9CC !important;
}
.chengdou-01__system .el-dialog .base-label {
background: rgba(0, 0, 0, x);
position: relative;
left: -15px;
top: -18px;
}
.chengdou-01__system .el-dialog .el-form-item label {
font-weight: normal !important;
color: #000 !important;
}
.chengdou-01__system .el-dialog .context {
height: 100px;
border: 2px inset #E2E2E2;
overflow-y: scroll;
}
.chengdou-01__system .el-dialog .table {
margin-top: 10px;
}
.chengdou-01__system .el-dialog .notice {
margin-left: 62px;
line-height: 30px;
}
.chengdou-01__system .el-dialog .button-group {
margin-top: 20px;
}
.chengdou-01__system.request_box .content-box .el-table__body-wrapper .el-table__row{
background: #000;
height: 30px;
color: #518E86;
}
.chengdou-01__system.request_box .content-box .el-table__body-wrapper .el-table__row.hover-row td{
background: #d5ecf7;
}
.chengdou-01__system.request_box .content-box .el-table__body-wrapper .el-table__row.current-row td{
background: #d5ecf7;
}
.chengdou-01__system .el-select .el-input__suffix {
top: 5px;
}
.chengdou-01__system .el-select .is-focus .el-input__suffix {
top: -5px;
}
.chengdou-01__select-option .el-scrollbar__thumb {
border-style:solid;
border-width: 1px;
border-color: #335658 #99C1C3 #99C1C3 #335658;
background: #518E86;
}
</style>

View File

@ -52,8 +52,7 @@ export default {
cmdType: CMD.Signal.CMD_SIGNAL_SET_ROUTE, cmdType: CMD.Signal.CMD_SIGNAL_SET_ROUTE,
isDisabled: (signal, work) => { isDisabled: (signal, work) => {
return false; return false;
}, }
isShow: (signal, work) => work !== 'atsWork'
}, },
{ {
label: '取消进路', label: '取消进路',
@ -61,8 +60,7 @@ export default {
cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE, cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE,
isDisabled: (signal, work) => { isDisabled: (signal, work) => {
return false; return false;
}, }
isShow: (signal, work) => work !== 'atsWork'
}, },
{ {
label: '开放自动进路', label: '开放自动进路',
@ -70,8 +68,7 @@ export default {
cmdType: CMD.Signal.CMD_SIGNAL_SET_CI_AUTO, cmdType: CMD.Signal.CMD_SIGNAL_SET_CI_AUTO,
isDisabled: (signal, work) => { isDisabled: (signal, work) => {
return false; return false;
}, }
isShow: (signal, work) => work !== 'atsWork'
}, },
{ {
label: '关闭自动进路', label: '关闭自动进路',
@ -79,8 +76,7 @@ export default {
cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_CI_AUTO, cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_CI_AUTO,
isDisabled: (signal, work) => { isDisabled: (signal, work) => {
return false; return false;
}, }
isShow: (signal, work) => work !== 'atsWork'
}, },
{ {
label: '终端信号封锁', label: '终端信号封锁',
@ -88,8 +84,7 @@ export default {
cmdType: CMD.Signal.CMD_SIGNAL_BLOCK, cmdType: CMD.Signal.CMD_SIGNAL_BLOCK,
isDisabled: (signal, work) => { isDisabled: (signal, work) => {
return signal.blockade !== 0; return signal.blockade !== 0;
}, }
isShow: (signal, work) => work !== 'atsWork'
}, },
{ {
label: '终端信号解封', label: '终端信号解封',
@ -97,8 +92,7 @@ export default {
cmdType: CMD.Signal.CMD_SIGNAL_UNBLOCK, cmdType: CMD.Signal.CMD_SIGNAL_UNBLOCK,
isDisabled: (signal, work) => { isDisabled: (signal, work) => {
return signal.blockade === 0; return signal.blockade === 0;
}, }
isShow: (signal, work) => work !== 'atsWork'
}, },
{ {
label: '引导信号', label: '引导信号',
@ -106,8 +100,7 @@ export default {
cmdType: CMD.Signal.CMD_SIGNAL_ROUTE_GUIDE, cmdType: CMD.Signal.CMD_SIGNAL_ROUTE_GUIDE,
isDisabled: (signal, work) => { isDisabled: (signal, work) => {
return false; return false;
}, }
isShow: (signal, work) => work !== 'atsWork'
}, },
{ {
label: '设备标签', label: '设备标签',
@ -120,8 +113,7 @@ export default {
cmdType: '', cmdType: '',
show: false show: false
} }
], ]
isShow: (signal, work) => work !== 'atsWork'
}, },
{ {
label: '模拟', label: '模拟',

View File

@ -66,8 +66,7 @@ export default {
} else { } else {
return switchDevice.normalPosition === 1; return switchDevice.normalPosition === 1;
} }
}, }
isShow: (switchDevice, work) => work !== 'atsWork'
}, },
{ {
label: '道岔反位', label: '道岔反位',
@ -79,8 +78,7 @@ export default {
} else { } else {
return switchDevice.reversePosition === 1; return switchDevice.reversePosition === 1;
} }
}, }
isShow: (switchDevice, work) => work !== 'atsWork'
}, },
{ {
label: '道岔单锁', label: '道岔单锁',
@ -92,8 +90,7 @@ export default {
} else { } else {
return switchDevice.singleLock !== 0; return switchDevice.singleLock !== 0;
} }
}, }
isShow: (switchDevice, work) => work !== 'atsWork'
}, },
{ {
label: '道岔单解', label: '道岔单解',
@ -105,8 +102,7 @@ export default {
} else { } else {
return switchDevice.singleLock !== 1; return switchDevice.singleLock !== 1;
} }
}, }
isShow: (switchDevice, work) => work !== 'atsWork'
} }
], ],
menuForce: [ menuForce: [

View File

@ -1,346 +0,0 @@
<template>
<div class="menus" :style="{width: width + 'px'}">
<menu-station-stand ref="menuStationStand" :selected="selected" :work="'atsWork'" />
<menu-switch ref="menuSwitch" :selected="selected" :work="'atsWork'" />
<menu-signal ref="menuSignal" :selected="selected" :work="'atsWork'" />
<menu-section ref="menuSection" :selected="selected" :work="'atsWork'" />
<menu-station ref="menuStation" :selected="selected" :work="'atsWork'" />
<menu-train ref="menuTrain" :selected="selected" :work="'atsWork'" />
<passive-alarm ref="passiveAlarm" />
<passive-contorl ref="passiveControl" pop-class="chengdou-03__systerm" />
<passive-Timeout ref="passiveTimeout" />
</div>
</template>
<script>
import { mapGetters } from 'vuex';
import MenuSignal from './menuSignal';
import MenuStationStand from './menuStationStand';
import MenuSwitch from './menuSwitch';
import MenuSection from './menuSection';
import MenuStation from './menuStation';
import MenuTrain from './menuTrain';
import PassiveAlarm from './passiveDialog/alarm';
import PassiveContorl from '@/jmapNew/theme/components/menus/passiveDialog/control';
import PassiveTimeout from './passiveDialog/timeout';
export default {
name: 'AtsWorkMenu',
components: {
MenuSignal,
MenuStationStand,
MenuSwitch,
MenuSection,
MenuStation,
MenuTrain,
PassiveAlarm,
PassiveContorl,
PassiveTimeout
},
props: {
selected: {
type: Object,
default() {
return null;
}
}
},
computed: {
...mapGetters('config', [
'width'
])
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('config/updateMenuBar');
const _that = this;
window.onclick = function (e) {
if (!_that.$store.state.training.trainingStart) {
_that.$refs.menuBar && _that.$refs.menuBar.blankClickClose();
}
};
});
},
beforeDestroy() {
window.onclick = function (e) {};
}
};
</script>
<style>
.menus .pop-menu {
background: #F0F0F0;
}
.menus .pop-menu span {
color: #000;
}
.menus .pop-menu .is-disabled span {
color: #B4B3B8;
}
.chengdou-03__systerm {
overflow: hidden !important;
}
.chengdou-03__systerm .el-dialog {
background: #0055E8;
box-shadow: 1px hsla(240, 0%, 100%, 0.5) inset;
border: 1px solid rgb(69, 134, 247);
border-radius: 6px;
font-size: 13px !important;
color: #000;
}
.chengdou-03__systerm .el-dialog span {
font-size: 13px !important;
line-height: 22px;
}
.chengdou-03__systerm .el-dialog span .el-icon-arrow-up{
line-height: 18px;
}
.chengdou-03__systerm .el-dialog .el-dialog__footer {
background: #ECE9D8;
opacity: 1;
}
.chengdou-03__systerm .el-dialog .el-dialog__body {
padding: 20px;
margin: 0px 3px 3px;
border: 2px solid rgba(120, 121, 123, 0.5);
box-shadow: 1px hsla(240, 0%, 100%, 0.5) inset;
background: #ECE9D8;
opacity: 1;
}
.chengdou-03__systerm .el-dialog .el-dialog__title {
font-size: 16px;
color: #fff;
position: absolute;
top: 4px;
left: 7px;
}
.chengdou-03__systerm .el-dialog .el-dialog__headerbtn {
background: linear-gradient(#CD98A0, #C27D6E, #B63022, #C68770);
border: 1px solid #fff;
border-radius: 4px;
top: 6px;
right: 3px;
line-height: 16px;
}
.chengdou-03__systerm .el-dialog .el-dialog__headerbtn .el-icon-close:before {
font-size: 16px;
}
.chengdou-03__systerm .el-dialog .el-dialog__headerbtn .el-dialog__close {
color: #fff;
}
.chengdou-03__systerm .el-dialog .el-button {
height: 24px;
line-height: 22px;
padding: 0px;
width: 80px;
border: 2px outset #E2E2E2;
border-radius: 4px !important;
color: #000;
background: #F0F0F0;
}
.chengdou-03__systerm .el-dialog .expand {
width: 120px;
}
.chengdou-03__systerm .el-dialog .el-button:focus span {
border: 1px dashed gray;
}
.chengdou-03__systerm .el-dialog .el-button:active {
border: 2px inset #E2E2E2;
}
.chengdou-03__systerm .el-dialog .el-button:disabled {
border: 2px inset #E2E2E2;
}
.chengdou-03__systerm .el-dialog .el-button:disabled span {
border: 0px;
}
.chengdou-03__systerm .el-dialog .el-input {
border: 2px inset #E9E9E9;
height: 22px !important;
line-height: 22px !important;
}
.chengdou-03__systerm .el-dialog .el-input__inner {
color: #000;
background: #fff !important;
border: 0px;
border-radius: 0px !important;
box-sizing: border-box;
height: 22px !important;
line-height: 22px !important;
}
.chengdou-03__systerm .el-dialog .el-input.is-disabled .el-input__inner {
background: #F0F0F0 !important;
}
.chengdou-03__systerm .el-dialog .el-textarea {
border: 2px inset #E9E9E9;
border-radius: 0px;
}
.chengdou-03__systerm .el-dialog .el-textarea .el-textarea__inner {
color: #000;
background: #fff !important;
border: 0px;
border-radius: 0px !important;
box-sizing: border-box;
}
.chengdou-03__systerm .el-dialog .el-textarea.is-disabled .el-textarea__inner {
background: #F0F0F0 !important;
}
.chengdou-03__systerm .el-dialog .el-table--border th.gutter {
background: #EBEADB !important;
}
.chengdou-03__systerm .el-dialog .el-table {
border: 2px inset #E9E9E9;
color: #000 !important;
}
.chengdou-03__systerm .el-dialog .el-table .cell {
height: 22px;
line-height: 22px;
}
.chengdou-03__systerm .el-dialog .el-table th.is-leaf {
background: #F0F0F0 !important;
border-right: 1px solid #BDBDBD !important;
border-bottom: 1px solid #BDBDBD !important;
color: #000 !important;
height: 20px !important;
padding: 0px;
}
.chengdou-03__systerm .el-dialog .el-table tr td {
height: 20px !important;
padding: 0px;
}
.chengdou-03__systerm .el-dialog .el-table .el-table__empty-text {
top: 15px !important;
}
.chengdou-03__systerm .el-dialog .current-row>td {
background: #3399FF !important;
color: #fff !important;
}
.chengdou-03__systerm .el-dialog .el-checkbox__inner {
border: 1px inset #dcdfe6 !important;
}
.chengdou-03__systerm .el-dialog .el-checkbox__label {
color: #000 !important;
}
.chengdou-03__systerm .el-dialog .el-checkbox.is-disabled .el-checkbox__inner {
background: #E6E6E6 !important;
}
.chengdou-03__systerm .el-dialog .el-checkbox.is-disabled .el-checkbox__label {
color: #C5C9CC !important;
}
.chengdou-03__systerm .el-dialog .el-checkbox__input.is-checked .el-checkbox__inner {
background: #fff !important;
border: 1px inset #dcdfe6 !important;
}
.chengdou-03__systerm .el-dialog .el-checkbox__input.is-checked .el-checkbox__inner::after {
position: absolute;
-webkit-box-sizing: content-box;
box-sizing: content-box;
content: "";
border: 1px solid #000;
border-left: 0;
border-top: 0;
height: 7px;
left: 4px;
top: 1px;
}
.chengdou-03__systerm .el-dialog .el-radio__inner {
border: 1px inset #dcdfe6 !important;
}
.chengdou-03__systerm .el-dialog .el-radio__label {
color: #000 !important;
}
.chengdou-03__systerm .el-dialog .el-radio__input.is-checked .el-radio__inner {
background: #fff !important;
border: 1px inset #dcdfe6 !important;
}
.chengdou-03__systerm .el-dialog .el-radio__input.is-checked .el-radio__inner::after {
width: 4px;
height: 4px;
border-radius: 100%;
background-color: #000 !important;
position: absolute;
left: 50%;
top: 50%;
}
.chengdou-03__systerm .el-dialog .el-radio.is-disabled .el-radio__inner {
background: #E6E6E6 !important;
}
.chengdou-03__systerm .el-dialog .el-radio.is-disabled .el-radio__label {
color: #C5C9CC !important;
}
.chengdou-03__systerm .el-dialog .base-label {
background: rgba(0, 0, 0, x);
position: relative;
left: -15px;
top: -18px;
}
.chengdou-03__systerm .el-dialog .el-form-item label {
font-weight: normal !important;
color: #000 !important;
}
.chengdou-03__systerm .el-dialog .context {
height: 100px;
border: 2px inset #E2E2E2;
overflow-y: scroll;
}
.chengdou-03__systerm .el-dialog .table {
margin-top: 10px;
}
.chengdou-03__systerm .el-dialog .notice {
margin-left: 62px;
line-height: 30px;
}
.chengdou-03__systerm .el-dialog .button-group {
margin-top: 20px;
}
</style>

View File

@ -1,174 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm stand-run-level"
:title="title"
:visible.sync="show"
width="320px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<div style="font-size: 16px; margin-bottom: 5px;">变通节点</div>
<div style="margin-bottom: 5px;">
<el-input v-model="stationName" size="mini" disabled />
</div>
<div style="font-size: 16px; margin-bottom: 5px;">当前变通策略</div>
<div style="margin-bottom: 5px;">
<el-input v-model="stationStrategy" size="mini" disabled />
</div>
<div style="font-size: 16px; margin-bottom: 5px;">变通策略选项</div>
<el-table
ref="table"
:data="strategyList"
border
:cell-style="tableStyle"
style="width: 100%; margin-top:10px"
size="mini"
height="180"
highlight-current-row
:show-header="false"
@row-click="clickEvent"
>
<el-table-column :id="domIdChoose" prop="label" style="margin-left:30px" />
</el-table>
<el-row justify="center" class="button-group">
<el-col :span="10" :offset="2">
<el-button :id="domIdConfirm" type="primary" :loading="loading" :disabled="!isConfirm" @click="commit">
确定</el-button>
</el-col>
<el-col :span="8" :offset="4">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
<notice-info ref="noticeInfo" pop-class="chengdou-03__systerm" />
</el-dialog>
</template>
<script>
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
import { mapGetters } from 'vuex';
export default {
name: 'StandBackStrategy',
components: {
NoticeInfo
},
data() {
return {
dialogShow: false,
loading: false,
strategyList: [],
stationName: '',
stationStrategy: '',
selection: [],
isConfirm: false,
strategyId: '',
tableStyle: {
'border-bottom': 'none'
}
};
},
computed: {
...mapGetters('map', [
'stationList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Station.setBackStrategy.menu.domId : '';
},
domIdChoose() {
return this.dialogShow ? OperationEvent.Station.setBackStrategy.choose.domId : '';
},
title() {
return '策略选择';
}
},
methods: {
doShow(operate, selected) {
this.selected = selected;
if (!this.dialogShow) {
const name = selected.optionList.find(ele => ele.id == selected.tbStrategyId).label;
this.stationName = selected.name || '';
this.stationStrategy = selected.tbStrategyId ? name : '无策略折返'; //
this.strategyList = selected.optionList; //
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
clickEvent(row, column, event) {
const operate = {
operation: OperationEvent.Station.setBackStrategy.choose.operation
};
this.strategyId = row.id;
this.isConfirm = true;
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
});
},
checkTableDataSelction(data) {
const selection = [];
if (data && data.length > 0) {
data.forEach(row => {
if (row.check && !row.disabled) {
selection.push(row);
}
});
}
this.disabledSend = !selection.length;
if (JSON.stringify(selection) !== JSON.stringify(this.selection)) {
this.selection = selection;
}
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
commit() {
if (this.isConfirm) {
this.loading = true;
commitOperate(menuOperate.StationControl.setBackStrategy, {id: this.strategyId}, 2).then(({valid})=>{
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow();
});
} else {
this.doClose();
}
},
cancel() {
const operate = {
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => {
this.doClose();
});
}
}
};
</script>

View File

@ -8,7 +8,6 @@
<menu-section ref="menuSection" :selected="selected" :work="'dispatchWork'" /> <menu-section ref="menuSection" :selected="selected" :work="'dispatchWork'" />
<menu-station ref="menuStation" :selected="selected" :work="'dispatchWork'" /> <menu-station ref="menuStation" :selected="selected" :work="'dispatchWork'" />
<menu-train ref="menuTrain" :selected="selected" :work="'dispatchWork'" /> <menu-train ref="menuTrain" :selected="selected" :work="'dispatchWork'" />
<menu-station-turn-back ref="menuStationTurnBack" :selected="selected" :work="'dispatchWork'" />
<passive-alarm ref="passiveAlarm" /> <passive-alarm ref="passiveAlarm" />
<passive-contorl ref="passiveControl" pop-class="chengdou-03__systerm" /> <passive-contorl ref="passiveControl" pop-class="chengdou-03__systerm" />
@ -25,7 +24,6 @@ import MenuSwitch from './menuSwitch';
import MenuSection from './menuSection'; import MenuSection from './menuSection';
import MenuStation from './menuStation'; import MenuStation from './menuStation';
import MenuTrain from './menuTrain'; import MenuTrain from './menuTrain';
import MenuStationTurnBack from './menuStationTurnBack.vue';
import PassiveAlarm from './passiveDialog/alarm'; import PassiveAlarm from './passiveDialog/alarm';
import PassiveContorl from '@/jmapNew/theme/components/menus/passiveDialog/control'; import PassiveContorl from '@/jmapNew/theme/components/menus/passiveDialog/control';
@ -42,8 +40,7 @@ export default {
MenuTrain, MenuTrain,
PassiveAlarm, PassiveAlarm,
PassiveContorl, PassiveContorl,
PassiveTimeout, PassiveTimeout
MenuStationTurnBack
}, },
props: { props: {
selected: { selected: {

View File

@ -2,14 +2,7 @@
<div class="menus" :style="{width: width + 'px'}"> <div class="menus" :style="{width: width + 'px'}">
<menu-bar ref="menuBar" :selected="selected" /> <menu-bar ref="menuBar" :selected="selected" />
<menu-button ref="menuButton" /> <menu-button ref="menuButton" />
<menu-station-stand ref="menuStationStand" :selected="selected" :work="'localWork'" />
<menu-switch ref="menuSwitch" :selected="selected" :work="'localWork'" />
<menu-signal ref="menuSignal" :selected="selected" :work="'localWork'" />
<menu-section ref="menuSection" :selected="selected" :work="'localWork'" />
<menu-station ref="menuStation" :selected="selected" :work="'localWork'" />
<menu-train ref="menuTrain" :selected="selected" :work="'localWork'" /> <menu-train ref="menuTrain" :selected="selected" :work="'localWork'" />
</div> </div>
</template> </template>
<script> <script>
@ -17,22 +10,12 @@ import { mapGetters } from 'vuex';
import MenuTrain from './menuTrain'; import MenuTrain from './menuTrain';
import MenuButton from './menuButton'; import MenuButton from './menuButton';
import MenuBar from './localWorkMenuBar'; import MenuBar from './localWorkMenuBar';
import MenuSignal from './menuSignal';
import MenuStationStand from './menuStationStand';
import MenuSwitch from './menuSwitch';
import MenuSection from './menuSection';
import MenuStation from './menuStation';
export default { export default {
name: 'LocalWorkMenu', name: 'LocalWorkMenu',
components: { components: {
MenuTrain, MenuTrain,
MenuButton, MenuButton,
MenuBar, MenuBar
MenuSignal,
MenuStationStand,
MenuSwitch,
MenuSection,
MenuStation
}, },
props: { props: {
selected: { selected: {

View File

@ -350,7 +350,7 @@ export default {
} }
} }
// //
if (signal.lockedRouteCode) { // if (signal.aspect == 'R' && isArrangementRoute) { //
operate.over = true; operate.over = true;
operate.cmdType = CMD.Signal.CMD_SIGNAL_REOPEN_SIGNAL; operate.cmdType = CMD.Signal.CMD_SIGNAL_REOPEN_SIGNAL;
operate.code = deviceList[0].code; operate.code = deviceList[0].code;
@ -370,8 +370,7 @@ export default {
this.routeList.forEach(item => { this.routeList.forEach(item => {
// item.endButtonSignalCode // item.endButtonSignalCode
// //
const endSignalCode = item.endButtonSignalCode || item.endSignalCode; if (item.startSignalCode === deviceList[0].code && item.endSignalCode === deviceList[1].code) {
if (item.startSignalCode === deviceList[0].code && endSignalCode === deviceList[1].code) {
operate.over = true; operate.over = true;
operate.cmdType = CMD.Signal.CMD_SIGNAL_SET_ROUTE; operate.cmdType = CMD.Signal.CMD_SIGNAL_SET_ROUTE;
operate.code = deviceList[1].code; operate.code = deviceList[1].code;
@ -397,28 +396,19 @@ export default {
operation: this.$store.state.menuOperation.buttonOperation, operation: this.$store.state.menuOperation.buttonOperation,
param: {} param: {}
}; };
let controlMode = ''; if (model._type === 'StationStand' && subType === 'StopJumpLamp') {
const station = this.$store.getters['map/getDeviceByCode'](model.stationCode);
if (station) {
controlMode = station.controlMode;
// if (station.controlMode == 'Local' || station.controlMode == 'Emergency') {
// controlFlag = true;Interlock
// }
}
const list2 = ['Local', 'Emergency'];
if (model._type === 'StationStand' && subType === 'StopJumpLamp' && list2.includes(controlMode)) {
operate.cmdType = CMD.Stand.CMD_STAND_SET_JUMP_STOP; operate.cmdType = CMD.Stand.CMD_STAND_SET_JUMP_STOP;
operate.param = {standCode: model.code, trainGroupNumber: ''}; operate.param = {standCode: model.code, trainGroupNumber: ''};
operate.code = model.code; operate.code = model.code;
} else if (model._type === 'StationStand' && subType === 'CancelStopJumpLamp' && list2.includes(controlMode)) { } else if (model._type === 'StationStand' && subType === 'CancelStopJumpLamp') {
operate.cmdType = CMD.Stand.CMD_STAND_CANCEL_JUMP_STOP; operate.cmdType = CMD.Stand.CMD_STAND_CANCEL_JUMP_STOP;
operate.param = {standCode: model.code, trainGroupNumber: ''}; operate.param = {standCode: model.code, trainGroupNumber: ''};
operate.code = model.code; operate.code = model.code;
} else if (model._type === 'AutoTurnBack' && controlMode === 'Interlock') { } else if (model._type === 'AutoTurnBack' ) {
operate.cmdType = CMD.Signal.CMD_SIGNAL_SET_AUTO_TURN_BACK; operate.cmdType = CMD.Signal.CMD_SIGNAL_SET_AUTO_TURN_BACK;
operate.param = {cycleCode: model.cycleCode}; operate.param = {cycleCode: model.cycleCode};
operate.code = model.code; operate.code = model.code;
} else if (model._type === 'AutomaticRoute' && controlMode === 'Interlock') { } else if (model._type === 'AutomaticRoute') {
const route = this.routeData[model.automaticRouteCode]; const route = this.routeData[model.automaticRouteCode];
operate.cmdType = CMD.Signal.CMD_SIGNAL_SET_CI_AUTO; operate.cmdType = CMD.Signal.CMD_SIGNAL_SET_CI_AUTO;
operate.param = {signalCode: route.startSignalCode}; operate.param = {signalCode: route.startSignalCode};
@ -433,34 +423,31 @@ export default {
break; break;
case 'center': case 'center':
operate.cmdType = CMD.ControlConvertMenu.CMD_CM_APPLY_FOR_CENTER_CONTROL; operate.cmdType = CMD.ControlConvertMenu.CMD_CM_APPLY_FOR_CENTER_CONTROL;
delete operate.over; // delete operate.over;
operate.subType = 'center'; operate.subType = 'center';
operate.param = {stationCodes: [model.code]}; operate.param = {stationCodes: [model.code]};
operate.code = model.code; operate.code = model.code;
break; break;
case 'emergency': case 'emergency':
operate.cmdType = CMD.ControlConvertMenu.CMD_CM_EMERGENCY_STATION_CONTROL; operate.cmdType = CMD.ControlConvertMenu.CMD_CM_EMERGENCY_STATION_CONTROL;
delete operate.over; // delete operate.over;
operate.subType = 'emergency'; operate.subType = 'emergency';
operate.param = {stationCodes: [model.code]}; operate.param = {stationCodes: [model.code]};
operate.code = model.code; operate.code = model.code;
break; break;
case 'interconnected': case 'interconnected':
operate.cmdType = CMD.ControlConvertMenu.CMD_CM_INTERLOCK_CONTROL; operate.cmdType = CMD.ControlConvertMenu.CMD_CM_EMERGENCY_STATION_CONTROL;
delete operate.over; // delete operate.over;
operate.subType = 'interconnected'; operate.subType = 'interconnected';
operate.param = {stationCodes: [model.code]}; operate.param = {stationCodes: [model.code]};
operate.code = model.code; operate.code = model.code;
break; break;
} }
} else {
this.$message.info('请检查操作设备或控制权');
return;
} }
this.$store.dispatch('trainingNew/next', operate).then(({ valid, response }) => { this.$store.dispatch('trainingNew/next', operate).then(({ valid, response }) => {
// //
// const operate = Object.assign({}, operate); // const operate = Object.assign({}, operate);
if (subType == 'center' || subType == 'emergency' || subType == 'interconnected' ) { if (subType == 'center ' || subType == 'emergency' || subType == 'interconnected' ) {
operate['operateNext'] = operate.operation = this.Command.close.password.operation; operate['operateNext'] = operate.operation = this.Command.close.password.operation;
if (subType == 'center') { if (subType == 'center') {
operate['nextCmdType'] = CMD.ControlConvertMenu.CMD_CM_APPLY_FOR_CENTER_CONTROL; operate['nextCmdType'] = CMD.ControlConvertMenu.CMD_CM_APPLY_FOR_CENTER_CONTROL;
@ -572,8 +559,7 @@ export default {
}; };
let flag = false; let flag = false;
this.routeList.forEach(item => { this.routeList.forEach(item => {
const endSignalCode = item.endButtonSignalCode || item.endSignalCode; if (item.startSignalCode === deviceList[0].code && item.endSignalCode === deviceList[1].code) {
if (item.startSignalCode === deviceList[0].code && endSignalCode === deviceList[1].code) {
operate.param = {routeCode: item.code, signalCode: deviceList[0].code}; operate.param = {routeCode: item.code, signalCode: deviceList[0].code};
this.deviceList = []; this.deviceList = [];
flag = true; flag = true;
@ -719,36 +705,37 @@ export default {
this.handelFunctionButton(model, subType); this.handelFunctionButton(model, subType);
} else { } else {
const station = this.$store.getters['map/getDeviceByCode'](model.stationCode); const station = this.$store.getters['map/getDeviceByCode'](model.stationCode);
const list1 = ['Local', 'Emergency', 'Interlock'];
const list2 = ['Local', 'Emergency'];
if (station) { if (station) {
if (station.controlMode == 'Local' || station.controlMode == 'Emergency') {
if (buttonOperation && this.commandTypeList.includes(model._type)) { if (buttonOperation && this.commandTypeList.includes(model._type)) {
this.deviceList.push(model); this.deviceList.push(model);
if (buttonOperation === this.Signal.arrangementRoute.button.operation && list1.includes(station.controlMode)) { if (buttonOperation === this.Signal.arrangementRoute.button.operation) {
this.arrangementRouteOperation(this.deviceList); this.arrangementRouteOperation(this.deviceList);
} else if (buttonOperation === this.MixinCommand.totalCancel.button.operation) { } else if (buttonOperation === this.MixinCommand.totalCancel.button.operation) {
this.handelTotalCancel(model, subType); this.handelTotalCancel(model, subType);
} else if (buttonOperation === this.Signal.humanTrainRoute.button.operation && list1.includes(station.controlMode)) { } else if (buttonOperation === this.Signal.humanTrainRoute.button.operation) {
this.handleTotalHumanSolution(model); this.handleTotalHumanSolution(model);
} else if (buttonOperation === this.Signal.guide.button.operation && list1.includes(station.controlMode)) { } else if (buttonOperation === this.Signal.guide.button.operation) {
this.handleGuideRoute(this.deviceList); this.handleGuideRoute(this.deviceList);
} else if ((buttonOperation === this.Signal.atsAutoControl.button.operation || buttonOperation === this.Signal.humanControl.button.operation) && list2.includes(station.controlMode)) { } else if (buttonOperation === this.Signal.atsAutoControl.button.operation || buttonOperation === this.Signal.humanControl.button.operation) {
this.handelControlRoute(model); this.handelControlRoute(model);
} else if (switchOperation.includes(buttonOperation) && list1.includes(station.controlMode)) { } else if (switchOperation.includes(buttonOperation)) {
this.handelSwitchOperate(model); this.handelSwitchOperate(model);
} else if ((buttonOperation === this.MixinCommand.block.button.operation || buttonOperation === this.MixinCommand.unblock.button.operation) && list1.includes(station.controlMode)) { } else if (buttonOperation === this.MixinCommand.block.button.operation || buttonOperation === this.MixinCommand.unblock.button.operation) {
this.handelBlockOrUnblock(model); this.handelBlockOrUnblock(model);
} else if (buttonOperation === this.Station.guideLock.button.operation && station.controlMode === 'Interlock') { } else if (buttonOperation === this.Station.guideLock.button.operation) {
this.handelGuideLock(model); this.handelGuideLock(model);
} else if (buttonOperation === this.Section.fault.button.operation && list1.includes(station.controlMode)) { } else if (buttonOperation === this.Section.fault.button.operation) {
this.handelFaultSection(model); this.handelFaultSection(model);
} else { } else {
this.clearOperate(); this.clearOperate();
this.operatemode != OperateMode.FAULT && this.$message.info('请检查操作设备或控制权');
} }
} else { } else {
this.clearOperate(); this.clearOperate();
this.operatemode != OperateMode.FAULT && this.$message.info('请检查操作设备或控制权'); }
} else {
this.clearOperate();
this.operatemode != OperateMode.FAULT && this.$message.info('请先切换到站控或紧急站控');
} }
} }
} }

View File

@ -1,105 +0,0 @@
<template>
<div>
<pop-menu ref="popMenu" :menu="menu" />
<station-back-strategy ref="stationBackStrategy" />
</div>
</template>
<script>
import PopMenu from '@/components/PopMenu';
import StationBackStrategy from './dialog/stationBackStrategy';
import { mapGetters } from 'vuex';
import { DeviceMenu, OperateMode } from '@/scripts/ConstDic';
import CMD from '@/scripts/cmdPlugin/CommandEnum';
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
export default {
name: 'MenuStationTurnBack',
components: {
PopMenu,
StationBackStrategy
},
props: {
selected: {
type: Object,
default() {
return null;
}
},
work: {
type: String,
default() {
return '';
}
}
},
data() {
return {
menu: [],
menuNormal: [
{
label: '设置折返策略',
handler: this.setBackStrategy,
cmdType: CMD.Station.CMD_STATION_SET_TURN_BACK_STRATEGY
}
],
menuForce: [
]
};
},
computed: {
...mapGetters('training', [
'mode',
'operatemode'
]),
...mapGetters('menuOperation', [
'buttonOperation'
])
},
watch: {
'$store.state.menuOperation.menuCount': function (val) {
if (this.$store.getters['menuOperation/checkDialogIsOpen'](DeviceMenu.StationTurnBack) && !this.buttonOperation) {
this.doShow(this.$store.state.menuOperation.menuPosition);
} else {
this.doClose();
}
}
},
methods: {
initMenu() {
//
this.menu = [];
this.menuNormal.forEach(menuItem => {
menuItem.disabled = menuItem.isDisabled ? menuItem.isDisabled(this.selected, this.work) : false;
menuItem.show = menuItem.isShow ? menuItem.isShow(this.selected, this.work) : true;
this.menu.push(menuItem);
});
//
if (this.operatemode === OperateMode.FAULT) {
this.menu = this.menuForce;
}
},
doShow(point) {
this.initMenu();
if (this.menu && this.menu.length > 0) {
this.setBackStrategy();
}
},
doClose() {
if (this.$refs && this.$refs.popMenu) {
this.$refs.popMenu.close();
}
},
//
setBackStrategy() {
commitOperate(menuOperate.StationControl.setBackStrategy, {stationCode: this.selected.stationCode}, 0).then(({valid, operate})=>{
if (valid) {
this.$refs.stationBackStrategy.doShow(operate, this.selected);
}
});
}
}
};
</script>

View File

@ -13,48 +13,48 @@
> >
<div class="main"> <div class="main">
<div class="left"> <div class="left">
<div class="left-type">车站</div> <div class="left-type">Station</div>
<div class="type-content"> <div class="type-content">
<div class="content-item"> <div class="content-item">
<img :src="shouxinImg" style="width: 58px; height: 58px"> <img :src="shouxinImg" style="width: 58px; height: 58px">
<div>收令箱</div> <div>Receive order box</div>
</div> </div>
</div> </div>
</div> </div>
<div class="content-box"> <div class="content-box">
<div class="box-top"> <div class="box-top">
<div class="top-title">收令箱</div> <div class="top-title">Receive order box</div>
<div class="top-table"> <div class="top-table">
<el-table :data="cmdTableData" border style="width: 100%" height="160" highlight-current-row :row-class-name="tableRowClassName" @current-change="handleCurrentChange"> <el-table :data="cmdTableData" border style="width: 100%" height="160" highlight-current-row :row-class-name="tableRowClassName" @current-change="handleCurrentChange">
<el-table-column prop="title" label="标题" show-overflow-tooltip /> <el-table-column prop="title" label="Title" show-overflow-tooltip />
<el-table-column prop="cmdCode" label="号码" width="80" /> <el-table-column prop="cmdCode" label="Number" width="80" />
<el-table-column label="命令类型" width="100"> <el-table-column label="Order type" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<span style="margin-left: 10px">{{ typeObj[scope.row.type] || '' }}</span> <span style="margin-left: 10px">{{ typeObj[scope.row.type] || '' }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="收令日期" width="160"> <el-table-column label="Date of receipt" width="160">
<template slot-scope="scope"> <template slot-scope="scope">
<span style="margin-left: 10px">{{ getStateInfo(scope.row.rcvCompanies).time || '' }}</span> <span style="margin-left: 10px">{{ getStateInfo(scope.row.rcvCompanies).time || '' }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="发令单位" show-overflow-tooltip> <el-table-column label="Issuing unit" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
<span style="margin-left: 10px">{{ scope.row.sendCompany ? scope.row.sendCompany.name : '' }}</span> <span style="margin-left: 10px">{{ scope.row.sendCompany ? scope.row.sendCompany.name : '' }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="sender" label="发令人" show-overflow-tooltip /> <el-table-column prop="sender" label="Initiator" show-overflow-tooltip/>
<el-table-column label="签否"> <el-table-column label="Signed or not">
<template slot-scope="scope"> <template slot-scope="scope">
<span style="margin-left: 10px">{{ getSignedStatus(getStateInfo(scope.row.rcvCompanies)) }}</span> <span style="margin-left: 10px">{{ getSignedStatus(getStateInfo(scope.row.rcvCompanies)) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="签收人" show-overflow-tooltip> <el-table-column label="Signatory" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
<span style="margin-left: 10px">{{ getSignedBy(scope.row.rcvCompanies) || '' }}</span> <span style="margin-left: 10px">{{ getSignedBy(scope.row.rcvCompanies) || '' }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="签收时间" width="160"> <el-table-column label="Receipt time" width="160">
<template slot-scope="scope"> <template slot-scope="scope">
<span style="margin-left: 10px">{{ getStateInfo(scope.row.rcvCompanies).time || '' }}</span> <span style="margin-left: 10px">{{ getStateInfo(scope.row.rcvCompanies).time || '' }}</span>
</template> </template>
@ -64,26 +64,26 @@
</div> </div>
<div class="box-middle"> <div class="box-middle">
<div class="middle-left"> <div class="middle-left">
<el-input v-model="currentInfo.content" readonly type="textarea" rows="19" resize="none" placeholder="请输入内容" /> <el-input v-model="currentInfo.content" readonly type="textarea" rows="19" resize="none" placeholder="Please enter the content" />
</div> </div>
<div class="middle-right"> <div class="middle-right">
<div class="middle-right-top"> <div class="middle-right-top">
<el-table :data="getTableData" border style="width: 100%" height="190"> <el-table :data="getTableData" border style="width: 100%" height="190">
<el-table-column type="index" label="序" width="50" /> <el-table-column type="index" label="Index" width="53" />
<el-table-column prop="name" label="受令单位" /> <el-table-column prop="name" label="Ordered unit" width="105" />
<el-table-column prop="copyers" label="抄知处所" /> <el-table-column prop="copyers" label="Place of receipt" />
</el-table> </el-table>
</div> </div>
<div class="middle-right-middle"> <div class="middle-right-middle">
<span>阅读信息</span> <span>Read information</span>
<el-checkbox v-model="needRead">需阅读</el-checkbox> <el-checkbox v-model="needRead">To be read</el-checkbox>
<el-checkbox v-model="stopRead">停止阅读</el-checkbox> <el-checkbox v-model="stopRead">Stop reading</el-checkbox>
</div> </div>
<div class="middle-right-bottom"> <div class="middle-right-bottom">
<el-table :data="readList" border style="width: 100%" height="200"> <el-table :data="readList" border style="width: 100%" height="200">
<el-table-column type="index" label="序" width="50" /> <el-table-column type="index" label="Index" width="53" />
<el-table-column prop="reader" label="阅读人" /> <el-table-column prop="reader" label="Read by" />
<el-table-column prop="readTime" label="阅读时间" /> <el-table-column prop="readTime" label="Reading time" />
</el-table> </el-table>
</div> </div>
</div> </div>
@ -91,9 +91,9 @@
</div> </div>
</div> </div>
<div class="bottom-btn"> <div class="bottom-btn">
<el-button :id="getDomObj('signCmdFalse').domId" :disabled="!commandId || currentHasSigned" @click="signCmd(false)">拒签</el-button> <el-button :id="getDomObj('signCmdFalse').domId" :disabled="!commandId || currentHasSigned" @click="signCmd(false)">Refusal</el-button>
<el-button :id="getDomObj('signCmdTrue').domId" :disabled="!commandId || currentHasSigned" @click="signCmd(true)">签收</el-button> <el-button :id="getDomObj('signCmdTrue').domId" :disabled="!commandId || currentHasSigned" @click="signCmd(true)">Sign</el-button>
<el-button @click="doClose">关闭</el-button> <el-button @click="doClose">Close</el-button>
</div> </div>
</el-dialog> </el-dialog>
</template> </template>
@ -115,21 +115,21 @@ export default {
currentInfo: {}, currentInfo: {},
queryResData: {}, queryResData: {},
typeObj: { typeObj: {
Normal: '普通调度命令', Normal: 'General scheduling command',
Construct: '施工调度命令', Construct: 'Construction scheduling command',
Forward: '转发调度命令', Forward: 'Forward scheduling command',
Request: '请求调度命令', Request: 'Request scheduling command',
LongTerm: '长效调度命令', LongTerm: 'Long-acting scheduling command',
ShiftScheduling: '班计划调度命令', ShiftScheduling: 'Shift scheduling command',
Other: '其他调度命令' Other: 'Other'
}, },
signedStatusObj: { signedStatusObj: {
Cache: '缓存', Cache: 'Cache',
Sent: '已发送', Sent: 'Send',
SrmReceived: '自律机接收', SrmReceived: 'Self-regulating machine received',
Received: '已接收', Received: 'Received',
Signed: '已签收', Signed: 'Signed',
Reject: '已拒签' Reject: 'Reject'
} }
}; };
}, },
@ -147,7 +147,7 @@ export default {
return this.$route.query.group; return this.$route.query.group;
}, },
title() { title() {
return '调度命令管理'; return 'Scheduling command management';
}, },
commandId() { commandId() {
return this.currentInfo.cmdId || ''; return this.currentInfo.cmdId || '';

View File

@ -33,16 +33,6 @@
</el-select> </el-select>
</el-col> </el-col>
</el-row> </el-row>
<el-row>
<el-col :span="11">预选模式</el-col>
</el-row>
<el-row>
<el-col :span="11">
<el-select v-model="addModel.preselectionMode" size="small">
<el-option v-for="option in modeList" :key="option.value" :label="option.label" :value="option.value" />
</el-select>
</el-col>
</el-row>
<el-row justify="center" class="button-group"> <el-row justify="center" class="button-group">
<el-col :span="10"> <el-col :span="10">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button> <el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
@ -81,18 +71,10 @@ export default {
addModel: { addModel: {
groupNumber: '', groupNumber: '',
right: '', right: '',
sectionCode: '', sectionCode: ''
preselectionMode: 'RM'
}, },
dialogShow: false, dialogShow: false,
loading: false, loading: false
modeList: [
{ value: 'AM_C', label: 'AM-C模式' },
{ value: 'SM_C', label: 'SM-C模式' },
{ value: 'AM_I', label: 'AM-I模式'},
{ value: 'SM_I', label: 'SM-I模式' },
{ value: 'RM', label: 'RM模式' }
]
}; };
}, },
computed: { computed: {
@ -137,8 +119,7 @@ export default {
this.addModel = { this.addModel = {
groupNumber: '', groupNumber: '',
right: '', right: '',
sectionCode: '', sectionCode: ''
preselectionMode: 'RM'
}; };
this.$store.dispatch('training/emitTipFresh'); this.$store.dispatch('training/emitTipFresh');
this.$store.dispatch('map/setTrainWindowShow', false); this.$store.dispatch('map/setTrainWindowShow', false);
@ -152,8 +133,7 @@ export default {
const params = { const params = {
groupNumber: this.addModel.groupNumber, groupNumber: this.addModel.groupNumber,
sectionCode: this.addModel.sectionCode, sectionCode: this.addModel.sectionCode,
right: this.addModel.right, right: this.addModel.right
preselectionMode: this.addModel.preselectionMode
}; };
this.messageTip1 = ''; this.messageTip1 = '';
this.loading = true; this.loading = true;

View File

@ -16,23 +16,24 @@
<el-row> <el-row>
<el-form ref="form" :model="formModel" :rules="rules"> <el-form ref="form" :model="formModel" :rules="rules">
<el-col :span="24"> <el-col :span="24">
<el-form-item prop="speedLimit" label="限速"> <el-form-item prop="speedLimit" label="Speed limit">
<el-input v-model="formModel.speedLimit" style="width: 115px;margin-right: 10px;" size="small" /> <el-input v-model="formModel.speedLimit" style="width: 115px;margin-right: 10px;" size="small" />
<span>km/h</span> <span>km/h</span>
<el-tooltip style="margin-left: 10px;" effect="dark" content="值为5-65之间不填为取消限速" placement="top-start"> <el-tooltip style="margin-left: 10px;" effect="dark" content="Value between 5 and 65, leave blank to cancel speed limit" placement="top-start">
<i class="el-icon-warning" /> <i class="el-icon-warning" />
</el-tooltip> </el-tooltip>
</el-form-item> </el-form-item>
<el-form-item prop="through" label="方式:"> <el-form-item prop="through" label="Mode">
<el-radio-group v-model="formModel.through" style="text-align: left;"> <el-radio-group v-model="formModel.through">
<el-radio :label="1">越红灯行驶</el-radio><br> <el-radio :label="1">Drive through red lights</el-radio><br>
<el-radio style="margin-top: 10px" :label="2">越引导行驶</el-radio><br> <el-radio style="margin-top: 10px" :label="2">Oversteer</el-radio><br>
<el-radio style="margin-top: 10px" :label="3">运行至前方车站</el-radio><br> <el-radio style="margin-top: 10px" :label="3">Running to the station ahead</el-radio><br>
<el-radio style="margin-top: 10px" :label="0">进路闭塞法行车</el-radio> <el-radio style="margin-top: 10px" :label="4">Approach blocking method of travel</el-radio><br>
<el-radio style="margin-top: 10px" :label="0">No</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item prop="targetDeviceCode" label="目的地:"> <el-form-item prop="targetDeviceCode" label="Destination:">
<el-select ref="faultSelect1" v-model="formModel.targetDeviceCode" filterable clearable size="small" style="height: 32px;line-height: 32px;" placeholder="请选择"> <el-select ref="faultSelect1" v-model="formModel.targetDeviceCode" filterable clearable size="small" style="height: 32px;line-height: 32px;" placeholder="Please select">
<el-option <el-option
v-for="item in selectedList" v-for="item in selectedList"
:key="item.code" :key="item.code"
@ -40,7 +41,7 @@
:value="item.code" :value="item.code"
/> />
</el-select> </el-select>
<el-tooltip style="margin-left: 10px;" effect="dark" content="可在站场图上进行点选" placement="top-start"> <el-tooltip style="margin-left: 10px;" effect="dark" content="Point-and-click on the station map" placement="top-start">
<i class="el-icon-warning" /> <i class="el-icon-warning" />
</el-tooltip> </el-tooltip>
<!--<el-button--> <!--<el-button-->
@ -55,8 +56,8 @@
</template> </template>
<template v-else> <template v-else>
<el-row class="header"> <el-row class="header">
<el-col :span="11"><span>设备:</span></el-col> <el-col :span="11"><span>Equipment:</span></el-col>
<el-col :span="11" :offset="2"><span>故障类型:</span></el-col> <el-col :span="11" :offset="2"><span>Fault type:</span></el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-form ref="form" :model="form" :rules="rules"> <el-form ref="form" :model="form" :rules="rules">
@ -67,7 +68,7 @@
</el-col> </el-col>
<el-col :span="11" :offset="2"> <el-col :span="11" :offset="2">
<el-form-item prop="faultType"> <el-form-item prop="faultType">
<el-select ref="faultSelect2" v-model="form.faultType" size="small" style="height: 32px;line-height: 32px;" placeholder="请选择"> <el-select ref="faultSelect2" v-model="form.faultType" size="small" style="height: 32px;line-height: 32px;" placeholder="Please select">
<el-option <el-option
v-for="item in faultList" v-for="item in faultList"
:key="item.value" :key="item.value"
@ -82,10 +83,10 @@
</template> </template>
<el-row justify="center" class="button-group"> <el-row justify="center" class="button-group">
<el-col :span="10" :offset="2"> <el-col :span="10" :offset="2">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button> <el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">Confirm</el-button>
</el-col> </el-col>
<el-col :span="8" :offset="4"> <el-col :span="8" :offset="4">
<el-button :id="domIdCancel" @click="cancel">取消</el-button> <el-button :id="domIdCancel" @click="cancel">Cancel</el-button>
</el-col> </el-col>
</el-row> </el-row>
</div> </div>
@ -134,7 +135,7 @@ export default {
selected: null, selected: null,
rules: { rules: {
faultType: [ faultType: [
{ required: true, message: '请选择故障类型', trigger: 'change'} { required: true, message: 'Please select fault type', trigger: 'change'}
] ]
} }
}; };
@ -160,11 +161,11 @@ export default {
}, },
title() { title() {
if (this.operation == OperationEvent.MixinCommand.stoppage.menu.operation) { if (this.operation == OperationEvent.MixinCommand.stoppage.menu.operation) {
return '设置故障'; return 'Set faults';
} else if (this.operation == OperationEvent.MixinCommand.cancelStoppage.menu.operation) { } else if (this.operation == OperationEvent.MixinCommand.cancelStoppage.menu.operation) {
return '取消故障'; return 'Cancel faults';
} else if (this.operation == OperationEvent.MixinCommand.collocation.menu.operation) { } else if (this.operation == OperationEvent.MixinCommand.collocation.menu.operation) {
return '驾驶'; return 'Driving';
} }
return ''; return '';
} }
@ -203,7 +204,7 @@ export default {
if (name) { if (name) {
this.deviceName = deviceType[selected._type] + '-' + name; this.deviceName = deviceType[selected._type] + '-' + name;
} else if (selected._type == 'Server') { } else if (selected._type == 'Server') {
this.deviceName = '服务器'; this.deviceName = 'Server';
} else { } else {
this.deviceName = deviceType[selected._type]; this.deviceName = deviceType[selected._type];
} }
@ -216,70 +217,38 @@ export default {
// } // }
if (selected._type === 'Section' && this.popClass === 'haerbin-01__systerm') { if (selected._type === 'Section' && this.popClass === 'haerbin-01__systerm') {
this.faultList = [ this.faultList = [
{label: '计轴故障', value: 'FAULT'}, {label: 'Gauge shaft fault', value: 'FAULT'},
{label: '通信车占用', value: 'CBTC_OCCUPIED_FAULT'} {label: 'Communication train occupancy', value: 'CBTC_OCCUPIED_FAULT'}
]; ];
} else if (selected._type === 'Section' && this.popClass === 'datie-02__systerm') { } else if (selected._type === 'Section' && this.popClass === 'datie-02__systerm') {
this.faultList = [ this.faultList = [
{label: '电路故障', value: 'FAULT'}, {label: 'Circuit failure', value: 'FAULT'},
{label: '故障锁闭', value: 'FAULT_LOCK'} {label: 'Fault lockout', value: 'FAULT_LOCK'}
// {label: '', value: 'CBTC_OCCUPIED_FAULT'} // {label: '', value: 'CBTC_OCCUPIED_FAULT'}
]; ];
} else if (selected._type === 'Switch' && this.popClass === 'haerbin-01__systerm') { // } else if (selected._type === 'Switch' && this.popClass === 'haerbin-01__systerm') {
this.faultList = [ // this.faultList = [
{label: '失表', value: 'SPLIT'}, // {label: 'Split', value: 'SPLIT'},
{label: '定位失表', value: 'NORMAL_SPLIT'}, // {label: 'Normal split', value: 'NORMAL_SPLIT'},
{label: '反位失表', value: 'REVERSE_SPLIT'}, // {label: 'Reverse split', value: 'REVERSE_SPLIT'},
{label: '挤岔', value: 'SQUEEZE'}, // {label: 'Squeeze', value: 'SQUEEZE'},
{label: '通信车占用', value: 'CBTC_OCCUPIED_FAULT'}, // {label: 'Communication train occupancy', value: 'CBTC_OCCUPIED_FAULT'},
{label: '计轴故障', value: 'AXLE_FAULT'} // {label: 'Axle fault', value: 'AXLE_FAULT'}
]; // ];
} else if (selected._type === 'Switch' && this.popClass === 'datie-02__systerm') { } else if (selected._type === 'Switch' && this.popClass === 'datie-02__systerm') {
this.faultList = [ this.faultList = [
{label: '失表', value: 'SPLIT'}, {label: 'Out of position', value: 'SPLIT'},
{label: '定位失表', value: 'NORMAL_SPLIT'}, {label: 'Normal Out of position', value: 'NORMAL_SPLIT'},
{label: '反位失表', value: 'REVERSE_SPLIT'}, {label: 'Reverse Out of position', value: 'REVERSE_SPLIT'},
{label: '挤岔', value: 'SQUEEZE'}, {label: 'Squeeze off', value: 'SQUEEZE'},
// {label: '', value: 'CBTC_OCCUPIED_FAULT'}, // {label: '', value: 'CBTC_OCCUPIED_FAULT'},
{label: '电路故障', value: 'AXLE_FAULT'} {label: 'Circuit failure', value: 'AXLE_FAULT'}
];
} else if (selected._type === 'Section' && this.popClass === 'xian-01__systerm') {
this.faultList = [
{label: '红光带故障', value: 'FAULT'},
{label: '粉光带故障', value: 'CBTC_OCCUPIED_FAULT'},
{label: '橙光带故障', value: 'ARB'}
];
} else if (selected._type === 'Switch' && this.popClass === 'xian-01__systerm' ) {
this.faultList = [
{label: '失表', value: 'SPLIT'},
{label: '定位失表', value: 'NORMAL_SPLIT'},
{label: '反位失表', value: 'REVERSE_SPLIT'},
{label: '挤岔', value: 'SQUEEZE'},
{label: '粉光带故障', value: 'CBTC_OCCUPIED_FAULT'},
{label: '红光带故障', value: 'AXLE_FAULT'},
{label: '橙光带故障', value: 'ARB'}
];
} else if (selected._type === 'Switch' && this.popClass === 'nanjing-02__systerm' ) {
this.faultList = [
{label: '短闪', value: 'SPLIT'},
{label: '短闪(转动后恢复)', value: 'SPLIT_1'},
{label: '定位短闪', value: 'NORMAL_SPLIT'},
{label: '反位短闪', value: 'REVERSE_SPLIT'},
{label: '长闪', value: 'SQUEEZE'},
{label: '道岔区段灰显', value: 'SECTION_NO_STATUS'},
{label: '红光带故障', value: 'CBTC_OCCUPIED_FAULT'},
{label: '紫光带故障', value: 'AXLE_FAULT'},
{label: '计轴受扰', value: 'ARB'}
];
} else if (selected._type === 'Server' && this.popClass === 'nanjing-02__systerm') {
this.faultList = [
{label: 'ATS故障', value: 'ATS_FAULT' }
]; ];
} else if (selected._type === 'Signal' && this.popClass === 'nanjing-02__systerm') { } else if (selected._type === 'Signal' && this.popClass === 'nanjing-02__systerm') {
this.faultList = [ this.faultList = [
{label: '红灯断丝', value: 'R_WIRE_FAULT'}, {label: '无法开放(非CTC)', value: 'NO_OPEN'},
{label: '绿灯断丝', value: 'G_WIRE_FAULT'}, {label: '编号闪', value: 'LIGHTING_UNIT_FAULT_NAME'},
{label: '黄灯断丝', value: 'Y_WIRE_FAULT'} {label: '机头闪', value: 'LIGHTING_UNIT_FAULT_HEAD'}
]; ];
} else if (selected._type === 'Section' && this.popClass === 'nanjing-02__systerm') { } else if (selected._type === 'Section' && this.popClass === 'nanjing-02__systerm') {
this.faultList = [ this.faultList = [
@ -408,12 +377,12 @@ export default {
this.doClose(); this.doClose();
} else { } else {
this.doClose(); this.doClose();
this.$messageBox('设置或取消故障操作失败!'); this.$messageBox('Failed to set or cancel the fault!');
} }
}).catch((error) => { }).catch((error) => {
this.loading = false; this.loading = false;
this.doClose(); this.doClose();
this.$messageBox(error.message || '设置或取消故障操作失败!'); this.$messageBox(error.message || 'Failed to set or cancel the fault!');
}); });
}, },

View File

@ -11,8 +11,8 @@
:close-on-click-modal="false" :close-on-click-modal="false"
> >
<el-row class="header"> <el-row class="header">
<el-col :span="11"><span>车站名称</span></el-col> <el-col :span="11"><span>Station name</span></el-col>
<el-col :span="11" :offset="2"><span>道岔</span></el-col> <el-col :span="11" :offset="2"><span>Switch</span></el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="11"> <el-col :span="11">
@ -23,20 +23,20 @@
</el-col> </el-col>
</el-row> </el-row>
<div style="padding: 10px 15px; border: 1px double lightgray;height: 60px;margin-top: 15px;"> <div style="padding: 10px 15px; border: 1px double lightgray;height: 60px;margin-top: 15px;">
<span class="base-label" style="left:-10px;background:#f0f0f0;">钩锁位置</span> <span class="base-label" style="left:-10px;background:#f0f0f0;">Hook lock position</span>
<div style=" position: relative; top:10px;"> <div style=" position: relative; top:-10px;">
<el-radio-group v-model="normal"> <el-radio-group v-model="normal">
<el-radio :label="true">定位</el-radio> <el-radio :label="true">Normal</el-radio>
<el-radio :label="false">反位</el-radio> <el-radio :label="false">Reverse</el-radio>
</el-radio-group> </el-radio-group>
</div> </div>
</div> </div>
<el-row justify="center" class="button-group"> <el-row justify="center" class="button-group">
<el-col :span="10" :offset="2"> <el-col :span="10" :offset="2">
<el-button type="primary" :loading="loading" @click="commit">确定</el-button> <el-button type="primary" :loading="loading" @click="commit">Confirm</el-button>
</el-col> </el-col>
<el-col :span="8" :offset="4"> <el-col :span="8" :offset="4">
<el-button @click="doClose"></el-button> <el-button @click="doClose">Cancel</el-button>
</el-col> </el-col>
</el-row> </el-row>
<notice-info ref="noticeInfo" :pop-class="popClass" /> <notice-info ref="noticeInfo" :pop-class="popClass" />

View File

@ -1,7 +1,7 @@
<template> <template>
<el-dialog <el-dialog
v-dialogDrag v-dialogDrag
title="列车操作" title="Train Control"
:visible.sync="dialogVisible" :visible.sync="dialogVisible"
width="30%" width="30%"
:modal="false" :modal="false"
@ -20,7 +20,7 @@
/> />
</el-col> </el-col>
<el-col :span="3" :offset="2"> <el-col :span="3" :offset="2">
<el-button size="mini" type="danger" style="margin-top: 15px;" @click="brakeTrain">刹车</el-button> <el-button size="mini" type="danger" style="margin-top: 15px;" @click="brakeTrain">brake</el-button>
</el-col> </el-col>
</el-row> </el-row>
<el-row style="margin-top: 40px"> <el-row style="margin-top: 40px">
@ -35,7 +35,7 @@
</el-col> </el-col>
</el-row> </el-row>
<el-row style="text-align: center;margin-top: 15px;"> <el-row style="text-align: center;margin-top: 15px;">
<el-button type="primary" size="mini" @click="handleRun">自动运行</el-button> <el-button type="primary" size="mini" @click="handleRun">Run</el-button>
</el-row> </el-row>
</el-dialog> </el-dialog>
</template> </template>
@ -44,7 +44,7 @@
import LeftTrain from '@/assets/left_train.png'; import LeftTrain from '@/assets/left_train.png';
import RightTrain from '@/assets/right_train.png'; import RightTrain from '@/assets/right_train.png';
import { sandTableTrainControl } from '@/api/simulation'; import { sandTableTrainControl } from '@/api/simulation';
import {menuOperate} from '@/jmapNew/theme/components/utils/menuOperate'; import { menuOperate } from '@/jmapNew/theme/components/utils/menuOperate';
export default { export default {
name: 'TrainOperation', name: 'TrainOperation',
data() { data() {
@ -117,7 +117,7 @@ export default {
adjustDirection() { adjustDirection() {
sandTableTrainControl(this.$route.query.group, { groupNumber: this.groupNumber, right: !this.right, speed: this.speed }).then(resp => { sandTableTrainControl(this.$route.query.group, { groupNumber: this.groupNumber, right: !this.right, speed: this.speed }).then(resp => {
this.right = !this.right; this.right = !this.right;
}).catch(err => { this.$message.error(err.message); }).finally(() => { this.changeSpeedFlag = false; }); }).catch(err => { this.$message.error(err.message); });
}, },
brakeTrain() { brakeTrain() {
sandTableTrainControl(this.$route.query.group, { groupNumber: this.groupNumber, right: this.right, speed: 0 }).then(resp => { sandTableTrainControl(this.$route.query.group, { groupNumber: this.groupNumber, right: this.right, speed: 0 }).then(resp => {
@ -146,7 +146,7 @@ export default {
} }
}).catch((error) => { }).catch((error) => {
this.$messageBox(error.message || 'Failed to set or cancel the fault!'); this.$messageBox(error.message || 'Failed to set or cancel the fault!');
}).finally(() => { this.changeSpeedFlag = false; }); });
} }
} }
}; };

View File

@ -13,7 +13,7 @@
> >
<el-form ref="form" size="small" label-width="80px" :model="addModel" @submit.native.prevent> <el-form ref="form" size="small" label-width="80px" :model="addModel" @submit.native.prevent>
<div style="width: 96%;"> <div style="width: 96%;">
<el-form-item label="是否EB:" label-width="95px" prop="speedLimit"> <el-form-item label="is or isn't EB:" label-width="95px" prop="speedLimit">
<div style="display: flex;align-items: center;"> <div style="display: flex;align-items: center;">
<el-checkbox v-model="addModel.eb" /> <el-checkbox v-model="addModel.eb" />
</div> </div>
@ -22,10 +22,10 @@
</el-form> </el-form>
<el-row justify="center" class="button-group"> <el-row justify="center" class="button-group">
<el-col :span="10" :offset="2"> <el-col :span="10" :offset="2">
<el-button type="primary" :loading="loading" @click="commit">确定</el-button> <el-button type="primary" :loading="loading" @click="commit">Confirm</el-button>
</el-col> </el-col>
<el-col :span="8" :offset="4"> <el-col :span="8" :offset="4">
<el-button @click="doClose"></el-button> <el-button @click="doClose">Cancel</el-button>
</el-col> </el-col>
</el-row> </el-row>
<notice-info ref="noticeInfo" :pop-class="popClass" /> <notice-info ref="noticeInfo" :pop-class="popClass" />
@ -67,7 +67,7 @@ export default {
return this.dialogShow && !this.$store.state.menuOperation.break; return this.dialogShow && !this.$store.state.menuOperation.break;
}, },
title() { title() {
return '输入限速值'; return 'Input speed limit';
} }
}, },
watch:{ watch:{

View File

@ -13,7 +13,6 @@ import SetTrainOperation from '@/jmapNew/theme/components/menus/dialog/setTrainO
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo'; import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import SetFault from '@/jmapNew/theme/components/menus/dialog/setFault'; import SetFault from '@/jmapNew/theme/components/menus/dialog/setFault';
import { DeviceMenu } from '@/scripts/ConstDic'; import { DeviceMenu } from '@/scripts/ConstDic';
import CMD from '@/scripts/cmdPlugin/CommandEnum';
export default { export default {
name: 'MenuTrain', name: 'MenuTrain',
components: { components: {
@ -88,31 +87,6 @@ export default {
{ {
label: '回库', label: '回库',
handler: this.setInbound handler: this.setInbound
},
{
label: '受电弓操作',
children: [
{
label: '受电弓1升',
handler: this.pantogrphOneUp,
cmdType: CMD.Driver.CMD_SPECIAL_PANTOGRAPH_UP_DOWN
},
{
label: '受电弓1降',
handler: this.pantogrphOneDown,
cmdType: CMD.Driver.CMD_SPECIAL_PANTOGRAPH_UP_DOWN
},
{
label: '受电弓2升',
handler: this.pantogrphTwoUp,
cmdType: CMD.Driver.CMD_SPECIAL_PANTOGRAPH_UP_DOWN
},
{
label: '受电弓2降',
handler: this.pantogrphTwoDown,
cmdType: CMD.Driver.CMD_SPECIAL_PANTOGRAPH_UP_DOWN
}
]
} }
] ]
}; };
@ -237,34 +211,6 @@ export default {
this.$refs.popMenu.close(); this.$refs.popMenu.close();
// this.$store.dispatch('map/setTrainWindowShow', false); // this.$store.dispatch('map/setTrainWindowShow', false);
} }
},
pantogrphOneUp() {
commitOperate(menuOperate.Driver.specialPantographUpDown, { index: 1, up: true, groupNumber: this.selected.code }, 3).then(({valid, operate}) => {
}).catch((error)=> {
console.error(error);
this.$refs.noticeInfo.doShow();
});
},
pantogrphOneDown() {
commitOperate(menuOperate.Driver.specialPantographUpDown, { index: 1, up: false, groupNumber: this.selected.code }, 3).then(({valid, operate}) => {
}).catch((error)=> {
console.error(error);
this.$refs.noticeInfo.doShow();
});
},
pantogrphTwoUp() {
commitOperate(menuOperate.Driver.specialPantographUpDown, { index: 2, up: true, groupNumber: this.selected.code }, 3).then(({valid, operate}) => {
}).catch((error)=> {
console.error(error);
this.$refs.noticeInfo.doShow();
});
},
pantogrphTwoDown() {
commitOperate(menuOperate.Driver.specialPantographUpDown, { index: 2, up: false, groupNumber: this.selected.code }, 3).then(({valid, operate}) => {
}).catch((error)=> {
console.error(error);
this.$refs.noticeInfo.doShow();
});
} }
} }
}; };

View File

@ -2,7 +2,7 @@
<el-dialog <el-dialog
v-dialogDrag v-dialogDrag
:class="popClass+' passive-control'" :class="popClass+' passive-control'"
title="控制模式请求" title="Request Control Mode"
:visible.sync="show" :visible.sync="show"
width="700px" width="700px"
:before-close="doClose" :before-close="doClose"
@ -11,7 +11,7 @@
:modal="false" :modal="false"
:close-on-click-modal="false" :close-on-click-modal="false"
> >
<span class="control-label">{{ `${requestInfo}请求如下区域的控制模式` }}</span> <span class="control-label">{{ `${requestInfo} request control mode for the following areas` }}</span>
<el-table <el-table
ref="multipleTable" ref="multipleTable"
:data="tableData" :data="tableData"
@ -23,35 +23,35 @@
size="mini" size="mini"
highlight-current-row highlight-current-row
> >
<el-table-column prop="operate" label="操作区域"> <el-table-column prop="operate" label="Operating area">
<template slot-scope="scope"> <template slot-scope="scope">
<span :style="{color: scope.row.disabled ? '#CBCBCB':'unset'}">{{ scope.row.operate }}</span> <span :style="{color: scope.row.disabled ? '#CBCBCB':'unset'}">{{ scope.row.operate }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="control" label="当前控制模式" width="120"> <el-table-column prop="control" label="Current control mode" width="120">
<template slot-scope="scope"> <template slot-scope="scope">
<span :style="{color: scope.row.disabled ? '#CBCBCB':'unset'}">{{ scope.row.control.name }}</span> <span :style="{color: scope.row.disabled ? '#CBCBCB':'unset'}">{{ scope.row.control.name }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="target" label="请求控制模式" width="120"> <el-table-column prop="target" label="Request control mode" width="120">
<template slot-scope="scope"> <template slot-scope="scope">
<span :style="{color: scope.row.disabled ? '#CBCBCB':'unset'}">{{ scope.row.target.name }}</span> <span :style="{color: scope.row.disabled ? '#CBCBCB':'unset'}">{{ scope.row.target.name }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="agree" label="是否同意" width="140"> <el-table-column prop="agree" label="Agree" width="140">
<template slot-scope="scope"> <template slot-scope="scope">
<el-checkbox ref="agree" v-model="scope.row.agree" :disabled="scope.row.disabled" /> <el-checkbox ref="agree" v-model="scope.row.agree" :disabled="scope.row.disabled" />
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<span class="control-label">距离对话还有{{ count }}请应答</span> <span class="control-label">Two {{ count }} to speak. Respond.</span>
<el-row class="button-group"> <el-row class="button-group">
<el-col :span="10" :offset="3"> <el-col :span="10" :offset="3">
<el-button :id="domAgree" :disabled="disabledAgree" @click="agree">同意 <el-button :id="domAgree" :disabled="disabledAgree" @click="agree">Agree
</el-button> </el-button>
</el-col> </el-col>
<el-col :span="6" :offset="4"> <el-col :span="6" :offset="4">
<el-button :id="domIdRefuse" :disabled="disabledRefuse" @click="refuse">拒绝</el-button> <el-button :id="domIdRefuse" :disabled="disabledRefuse" @click="refuse">Refuse</el-button>
</el-col> </el-col>
</el-row> </el-row>
<!-- ningbo-01__systerm --> <!-- ningbo-01__systerm -->
@ -83,11 +83,11 @@ export default {
dialogShow: false, dialogShow: false,
disabledAgree: false, disabledAgree: false,
disabledRefuse: false, disabledRefuse: false,
requestInfo: '调度员1工作站', requestInfo: 'Dispatcher 1 workstation',
controlProps: { controlProps: {
'Center': this.$t('menu.passiveDialog.inTheControl'), 'Center': 'Center',
'Local': this.$t('menu.passiveDialog.stationControl'), 'Local': 'Local',
'Emergency':this.$t('menu.passiveDialog.emergencyControl') 'Emergency':'Emergency'
}, },
selection: [], selection: [],
tableData: [], tableData: [],
@ -206,8 +206,10 @@ export default {
let info = SimulationType[member.type]; let info = SimulationType[member.type];
if (member.deviceCode) { if (member.deviceCode) {
const device = this.$store.getters['map/getDeviceByCode'](member.deviceCode); const device = this.$store.getters['map/getDeviceByCode'](member.deviceCode);
if (device) {
info = info + `(${device.name})`; info = info + `(${device.name})`;
} }
}
if (member.userId) { if (member.userId) {
simulationUserList.forEach(item => { simulationUserList.forEach(item => {
if (item.userId === member.userId) { if (item.userId === member.userId) {
@ -269,7 +271,7 @@ export default {
} }
}); });
} else if (!selection) { } else if (!selection) {
this.$messageBox('请选择一条数据'); this.$messageBox('Please select a piece of data');
} }
}, },
agree() { agree() {

View File

@ -1,34 +1,19 @@
import store from "@/store/index"; import store from '@/store/index';
/** /**
* 判断菜单行值控制全 * 判断菜单行值控制全
* @param {String} stationCode 所属车站code * @param {String} stationCode 所属车站code
* @param {String} centralStationCode 所属集中站code * @param {String} centralStationCode 所属集中站code
* @param {String} work 当前客户端 * @param {String} work 当前客户端
* */ * */
export function judgeStationControl( export function judgeStationControl(stationCode, centralStationCode, work) {
stationCode, const centralStation = store.getters['map/getDeviceByCode'](centralStationCode);
centralStationCode,
work,
isAvailableInOtherControlMode
) {
const centralStation = store.getters["map/getDeviceByCode"](
centralStationCode
);
const isCenterMode = centralStation.controlMode === "Center";
const isLocalMode =
centralStation.controlMode === "Local" ||
centralStation.controlMode === "Emergency";
// 角色车站是 设备所属车站或所属集中站 // 角色车站是 设备所属车站或所属集中站
if (work === "localWork") { if (work === 'localWork') {
const isBelongingStation = const flag1 = store.state.training.roleDeviceCode === stationCode || store.state.training.roleDeviceCode === centralStationCode;
store.state.training.roleDeviceCode === stationCode || const flag2 = centralStation.controlMode === 'Local' || centralStation.controlMode === 'Emergency';
store.state.training.roleDeviceCode === centralStationCode; return flag1 && flag2;
return ( } else if ( work === 'dispatchWork' ) {
((isCenterMode && isAvailableInOtherControlMode) || isLocalMode) && return centralStation.controlMode === 'Center';
isBelongingStation
);
} else if (work === "dispatchWork") {
return isCenterMode || (isLocalMode && isAvailableInOtherControlMode);
} else { } else {
return true; return true;
} }

View File

@ -388,14 +388,6 @@ export const menuOperate = {
// 非常站控 大铁线路 // 非常站控 大铁线路
operation: OperationEvent.StationControl.requestVeryControl.menu.operation, operation: OperationEvent.StationControl.requestVeryControl.menu.operation,
cmdType:CMD.ControlConvertMenu.CMD_CM_SPECIAL_STATION_CONTROL cmdType:CMD.ControlConvertMenu.CMD_CM_SPECIAL_STATION_CONTROL
},
replyStationControl: {
operation: OperationEvent.StationControl.controlResponse.agree.operation,
cmdType: CMD.ControlConvertMenu.CMD_CM_REPLY_STATION_CONTROL
},
replyCenterControl: {
operation: OperationEvent.StationControl.controlResponse.agree.operation,
cmdType: CMD.ControlConvertMenu.CMD_CM_REPLY_CENTER_CONTROL
} }
}, },
TrainWindow: { TrainWindow: {
@ -639,10 +631,6 @@ export const menuOperate = {
takeOver: { takeOver: {
operation: OperationEvent.Driver.takeOver.menu.operation, operation: OperationEvent.Driver.takeOver.menu.operation,
cmdType: CMD.Driver.CMD_DRIVER_TAKEOVER cmdType: CMD.Driver.CMD_DRIVER_TAKEOVER
},
specialPantographUpDown: {
operation: OperationEvent.Driver.pantograph.menu.operation,
cmdType: CMD.Driver.CMD_SPECIAL_PANTOGRAPH_UP_DOWN
} }
}, },
CTC: { CTC: {

View File

@ -1,141 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm confirm-control"
:title="title"
:visible.sync="show"
width="360px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
append-to-body
>
<div class="context">
<template v-for="(message, index) in messages">
<span :key="index">{{ message }}</span>
</template>
</div>
<el-row justify="center" class="button-group">
<el-col :span="10" :offset="2">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="4">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
<notice-info ref="noticeInfo" pop-class="chengdou-03__systerm" />
</el-dialog>
</template>
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import CMD from '@/scripts/cmdPlugin/CommandEnum';
export default {
name: 'ConfirmControl',
components: {
NoticeInfo
},
data() {
return {
dialogShow: false,
loading: false,
operate: {},
messages: '',
operation: null
};
},
computed: {
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
title() {
if (this.operation === OperationEvent.Signal.signalClose.menu.operation) {
return '信号关灯';
}
return '';
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
if (this.dialogShow) {
if (this.operation === OperationEvent.Signal.signalClose.menu.operation) {
/** 信号关灯*/
return OperationEvent.Signal.signalClose.confirm.domId;
}
}
return '';
}
},
methods: {
doShow(operate) {
if (!this.dialogShow) {
this.loading = false;
this.operate = operate || {};
this.messages = operate.messages;
this.operation = operate.operation;
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
commit() {
if (this.operation === OperationEvent.Signal.signalClose.menu.operation) {
/** 信号关灯*/
this.signalClose();
}
},
//
signalClose() {
const operate = {
over: true,
operation: OperationEvent.Signal.signalClose.confirm.operation,
cmdType: CMD.Signal.CMD_SIGNAL_CLOSE_SIGNAL
};
this.loading = true;
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
}
}).catch((error) => {
this.loading = false;
this.doClose();
console.error(error);
this.$refs.noticeInfo.doShow();
});
},
cancel() {
const operate = {
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => {
this.doClose();
});
}
}
};
</script>
<style>
.confirm-control .context {
padding-bottom: 40px !important;
border: 1px solid lightgray;
}
</style>

View File

@ -1,156 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm confirm-control-speed"
:title="title"
:visible.sync="show"
width="540px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
append-to-body
>
<div style="height: 60px; padding-left: 20px">
<span style="font-size: 18px">{{ message }}</span>
</div>
<el-row justify="center" class="button-group">
<el-col :span="6" :offset="6">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="10" :offset="2">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
</el-dialog>
</template>
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
export default {
name: 'ConfirmControlSpeed',
data() {
return {
dialogShow: false,
loading: false,
type: '',
operation: '',
message: ''
};
},
computed: {
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
title() {
if (this.operation === OperationEvent.Section.setSpeed.order.operation) {
return '区段设置限速';
} else if (this.operation === OperationEvent.Section.cancelSpeed.order.operation) {
return '区段取消限速';
} else if (this.operation === OperationEvent.Switch.setSpeed.order.operation) {
return '道岔设置限速';
} else if (this.operation === OperationEvent.Switch.cancelSpeed.order.operation) {
return '道岔取消限速';
}
return '';
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
if (this.operation === OperationEvent.Section.setSpeed.order.operation) {
/** 区段设置限速*/
return OperationEvent.Section.setSpeed.confirm.domId;
} else if (this.operation === OperationEvent.Section.cancelSpeed.order.operation) {
/** 区段取消限速*/
return OperationEvent.Section.cancelSpeed.confirm.domId;
} else if (this.operation === OperationEvent.Switch.setSpeed.order.operation) {
/** 道岔设置限速*/
return OperationEvent.Switch.setSpeed.confirm.domId;
} else if (this.operation === OperationEvent.Switch.cancelSpeed.order.operation) {
/** 道岔取消限速*/
return OperationEvent.Switch.cancelSpeed.confirm.domId;
}
return '';
}
},
methods: {
doShow(operate) {
if (!this.dialogShow) {
this.type = operate.type;
this.operation = operate.operation;
this.message = operate.message;
}
this.loading = false;
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
commit() {
const operate = {
type: this.type
};
if (this.operation === OperationEvent.Section.setSpeed.order.operation) {
/** 区段设置限速*/
operate.operation = OperationEvent.Section.setSpeed.confirm.operation;
} else if (this.operation === OperationEvent.Section.cancelSpeed.order.operation) {
/** 区段取消限速*/
operate.operation = OperationEvent.Section.cancelSpeed.confirm.operation;
} else if (this.operation === OperationEvent.Switch.setSpeed.order.operation) {
/** 道岔设置限速*/
operate.operation = OperationEvent.Switch.setSpeed.confirm.operation;
} else if (this.operation === OperationEvent.Switch.cancelSpeed.order.operation) {
/** 道岔取消限速*/
operate.operation = OperationEvent.Switch.cancelSpeed.confirm.operation;
}
this.loading = true;
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
this.loading = false;
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
if (valid) {
this.$emit('setOperate', { step: 1, success: true });
this.doClose();
}
}).catch(() => {
this.loading = false;
this.$emit('setOperate', { step: 0, success: false });
this.doClose();
});
},
cancel() {
const operate = {
type: this.type,
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
if (valid) {
this.$emit('setOperate', { step: 0, success: false });
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.doClose();
}
}).catch(() => {
this.doClose();
});
}
}
};
</script>
<style>
.confirm-control-speed .context {
padding-bottom: 40px !important;
border: 1px solid lightgray;
}
</style>

View File

@ -1,74 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm confirm-control-speed"
:title="title"
:visible.sync="show"
width="340px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
append-to-body
>
<div style="height: 60px; padding-left: 20px">
<span style="font-size: 18px">{{ message }}</span>
</div>
<el-row justify="center" class="button-group">
<el-col :span="11">
<el-button :id="confirmId" type="primary" @click="confirm">确定</el-button>
</el-col>
<el-col :span="11" :offset="2">
<el-button @click="doClose"> </el-button>
</el-col>
</el-row>
</el-dialog>
</template>
<script>
export default {
name: 'ConfirmTip',
data() {
return {
dialogShow: false,
message: '',
confirmId: ''
};
},
computed: {
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
title() {
return '提示';
}
},
mounted() {
},
methods: {
doShow(operate) {
this.message = operate.message;
this.dialogShow = true;
this.confirmId = operate.confirmId;
},
confirm() {
this.$emit('close');
},
doClose() {
this.dialogShow = false;
}
}
};
</script>
<style scoped>
.confirm-control-speed .context {
padding-bottom: 40px !important;
border: 1px solid lightgray;
}
.chengdou-03__systerm .el-dialog .el-button{
display: block;
margin: 0 auto;
}
</style>

View File

@ -1,173 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm confirm-control"
:title="title"
:visible.sync="show"
width="360px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
append-to-body
>
<div class="context">
<template v-for="(message, index) in messages">
<span :key="index">{{ message }}</span>
</template>
</div>
<el-row justify="center" class="button-group">
<el-col :span="10" :offset="2">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="4">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
<notice-info ref="noticeInfo" pop-class="chengdou-03__systerm" />
</el-dialog>
</template>
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
export default {
name: 'ConfirmTrain',
components: {
NoticeInfo
},
data() {
return {
dialogShow: false,
loading: false,
operate: {},
messages: '',
operation: null
};
},
computed: {
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
title() {
if (this.operation === OperationEvent.Train.addTrainId.menu.operation) {
return '添加列车识别号';
} else if (this.operation === OperationEvent.Train.editTrainId.menu.operation) {
return '修改列车识别号';
} else if (this.operation === OperationEvent.Train.delTrainId.menu.operation) {
return '删除列车识别号';
} else if (this.operation === OperationEvent.Train.moveTrainId.menu.operation) {
return '移动列车识别号';
} else if (this.operation === OperationEvent.Train.switchTrainId.menu.operation) {
return '交换列车识别号';
} else if (this.operation === OperationEvent.Train.editTrainNo.menu.operation) {
return '修改车组号';
}
return '';
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
if (this.operation === OperationEvent.Train.addTrainId.menu.operation) {
/** 添加列车识别号*/
return OperationEvent.Train.addTrainId.confirm.domId;
} else if (this.operation === OperationEvent.Train.editTrainId.menu.operation) {
/** 修改列车识别号*/
return OperationEvent.Train.editTrainId.confirm.domId;
} else if (this.operation === OperationEvent.Train.delTrainId.menu.operation) {
/** 删除列车识别号*/
return OperationEvent.Train.delTrainId.confirm.domId;
} else if (this.operation === OperationEvent.Train.moveTrainId.menu.operation) {
/** 移动列车识别号*/
return OperationEvent.Train.moveTrainId.confirm.domId;
} else if (this.operation === OperationEvent.Train.switchTrainId.menu.operation) {
/** 交换列车识别号*/
return OperationEvent.Train.switchTrainId.confirm.domId;
} else if (this.operation === OperationEvent.Train.editTrainNo.menu.operation) {
/** 修改车组号*/
return OperationEvent.Train.editTrainNo.confirm.domId;
}
return '';
}
},
methods: {
doShow(operate) {
if (!this.dialogShow) {
this.loading = false;
this.operate = operate || {};
this.messages = operate.messages;
this.operation = operate.operation;
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('map/setTrainWindowShow', false);
this.$store.dispatch('training/emitTipFresh');
},
commit() {
if (this.operation === OperationEvent.Train.addTrainId.menu.operation) {
this.routeSetting();
} else if (this.operation === OperationEvent.Train.editTrainId.menu.operation) {
this.routeSetting();
} else if (this.operation === OperationEvent.Train.delTrainId.menu.operation) {
this.routeSetting();
} else if (this.operation === OperationEvent.Train.moveTrainId.menu.operation) {
this.routeSetting();
} else if (this.operation === OperationEvent.Train.switchTrainId.menu.operation) {
this.routeSetting();
} else if (this.operation === OperationEvent.Train.editTrainNo.menu.operation) {
this.routeSetting();
}
},
//
routeSetting() {
const operate = {
send: true,
type: this.operate.type,
operation: OperationEvent.Train.addTrainId.confirm.operation
};
this.loading = true;
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow();
});
},
cancel() {
const operate = {
type: this.operate.type,
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => {
this.doClose();
});
}
}
};
</script>
<style>
.confirm-control .context {
padding-bottom: 40px !important;
border: 1px solid lightgray;
}
</style>

View File

@ -1,194 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm"
:visible.sync="show"
width="360px"
:before-close="doClose"
:z-index="2000"
:modal="false"
title="密码校验"
:close-on-click-modal="false"
append-to-body
>
<el-row>
<el-col :span="22" :offset="1">
<el-input v-model="encryptionPassword" placeholder="请使用软键盘输入" size="medium" :disabled="true" />
</el-col>
</el-row>
<el-row v-if="showMistake">
<el-col :span="22" :offset="1">
<span class="password-error">*密码输入错误请重新输入*</span>
</el-col>
</el-row>
<el-row justify="center" class="button-group">
<el-col :span="4" :offset="1">
<el-button @click="inputNum(7)">7</el-button>
</el-col>
<el-col :span="4" :offset="4">
<el-button @click="inputNum(8)">8</el-button>
</el-col>
<el-col :span="4" :offset="4">
<el-button @click="inputNum(9)">9</el-button>
</el-col>
</el-row>
<el-row justify="center" class="button-group">
<el-col :span="4" :offset="1">
<el-button @click="inputNum(4)">4</el-button>
</el-col>
<el-col :span="4" :offset="4">
<el-button @click="inputNum(5)">5</el-button>
</el-col>
<el-col :span="4" :offset="4">
<el-button @click="inputNum(6)">6</el-button>
</el-col>
</el-row>
<el-row justify="center" class="button-group">
<el-col :span="4" :offset="1">
<el-button @click="inputNum(1)">1</el-button>
</el-col>
<el-col :span="4" :offset="4">
<el-button @click="inputNum(2)">2</el-button>
</el-col>
<el-col :span="4" :offset="4">
<el-button @click="inputNum(3)">3</el-button>
</el-col>
</el-row>
<el-row justify="center" class="button-group">
<el-col :span="4" :offset="1">
<el-button @click="inputNum(0)">0</el-button>
</el-col>
<el-col :span="4" :offset="4">
<el-button @click="inputClear">C</el-button>
</el-col>
<el-col :span="4" :offset="4">
<el-button @click="backSpace"> &lt; </el-button>
</el-col>
</el-row>
<el-row justify="center" class="button-group">
<el-col :span="4" :offset="1">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="4" :offset="12">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
</el-dialog>
</template>
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import OperationHandler from '@/scripts/cmdPlugin/OperationHandler';
export default {
name: 'PasswordBox',
data() {
return {
/* 写死的初始密码*/
correctPassword: '123',
dialogShow: false,
operation: '',
checkHasInput: false,
/* 输入值*/
passwordCheck: '',
/* 输入值替换为对应长度的星号*/
encryptionPassword: '',
loading: false,
showMistake: false
};
},
computed: {
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.password.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationHandler.getDomIdByOperation(this.operation) : '';
}
},
methods: {
doShow(operate) {
this.operate = operate || {};
this.operation = operate.operation;
if (operate.operateNext) {
this.operation = operate.operateNext;
}
this.dialogShow = true;
this.checkHasInput = false;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.showMistake = false;
this.$store.dispatch('training/emitTipFresh');
},
commit() { //
if (this.passwordCheck === this.correctPassword) {
this.$emit('checkOver', this.operate);
this.doClose();
this.inputClear();
} else {
this.showMistake = true;
}
},
/* 软键盘输入*/
inputNum(num) {
this.showMistake = false;
this.passwordCheck += num;
this.encryptionPassword = this.passwordCheck.replace(/./g, '*');
},
/* 软键盘清除*/
inputClear() {
this.showMistake = false;
this.passwordCheck = '';
this.encryptionPassword = '';
},
/* 软键盘回退*/
backSpace() {
this.showMistake = false;
const password = this.passwordCheck;
if (password !== '') {
this.passwordCheck = password.substring(0, password.length - 1);
this.encryptionPassword = this.passwordCheck;
}
},
cancel() {
const operate = {
send: false,
type: this.operate.type,
operation: OperationEvent.Command.cancel.password.operation
};
this.$emit('checkCancel');
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
this.inputClear();
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
}).catch(() => {
this.loading = false;
this.$refs.noticeInfo && this.$refs.noticeInfo.doShow();
});
}
}
};
</script>
<style>
.notice-info .context {
padding-bottom: 40px !important;
border: 1px solid lightgray;
}
.password-error {
color: red;
}
</style>

View File

@ -1,94 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm popup-alarm"
:title="title"
:visible.sync="show"
width="500px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
append-to-body
>
<el-row>
<el-col :offset="2">
<span v-for="(message, index) in messages" :key="index">{{ message }}</span><br>
</el-col>
</el-row>
<el-row justify="center" class="button-group">
<el-col :span="10" :offset="8">
<el-button :id="domIdSure" type="primary" @click="commit">确定</el-button>
</el-col>
</el-row>
</el-dialog>
</template>
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
export default {
name: 'PopupAlarm',
data() {
return {
dialogShow: false,
messages: [],
operate: null,
operation: ''
};
},
computed: {
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
title() {
return '弹出式告警';
},
domIdSure() {
return this.dialogShow ? OperationEvent.Command.close.alarm.domId : '';
}
},
methods: {
doShow(operate, messages) {
this.operate = operate || {};
this.operation = operate.operation;
this.dialogShow = true;
this.messages = messages || [];
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
commit() {
if (this.operation == OperationEvent.Section.alxeEffective.menu.operation) {
//
this.alxeEffective();
}
},
alxeEffective() {
const operate = {
type: this.operate.type,
operation: OperationEvent.Command.close.alarm.operation
};
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.doClose();
}
});
}
}
};
</script>
<style>
.popup-alarm .context {
padding-bottom: 40px !important;
border: 1px solid lightgray;
}
</style>

View File

@ -1,163 +0,0 @@
<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 v-if="selected" :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';
import { DrawingType } from '@/scripts/ConstDic';
export default {
name: 'TrainMove',
mixins: [
CancelMouseState
],
data() {
return {
selected: null,
selectedType: '',
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() {
if (this.selectedType === 'normStudy') {
return '规范学习';
} else if (this.selectedType === 'clCaAn') {
return '经典案例分析';
} else if (this.selectedType === 'baDeTr') {
return '基础设备培训';
} else {
return '图纸检索';
}
}
},
methods: {
doShow(selected, selectedType) {
this.selectedType = selectedType;
const params = { mapId: this.$route.query.mapId, fileType: DrawingType[selectedType] };
this.selected = selected;
if (this.selected) {
this.form.deviceName = selected.name;
this.form.deviceType = selected._type;
params.deviceType = selected._type.toUpperCase();
params.deviceId = selected.code;
}
this.loading = true;
getUploadFile(params).then(resp => {
this.tableData = resp.data;
this.loading = false;
}).catch(() => {
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>

View File

@ -1,196 +0,0 @@
<template>
<div>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm route-detail"
:title="title"
:visible.sync="show"
width="460px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-row>
<el-col :span="2"><span>车站</span></el-col>
<el-col :span="6">
<el-input v-model="stationName" size="small" disabled />
</el-col>
<el-col :span="6" :offset="1"><span>始端信号机</span></el-col>
<el-col :span="6">
<el-input v-model="signalName" size="small" disabled />
</el-col>
</el-row>
<div style="margin-top: 20px">
<el-table
ref="tempTable"
:data="tempData"
border
style="width: 100%"
size="mini"
highlight-current-row
:height="140"
>
<el-table-column :id="domIdChoose" prop="name" label="进路" style="margin-left:30px;" width="150px">
<template slot-scope="scope">
<div :style="{color: scope.row.turnBack? '#00FFFF':'#000000'}">
{{ handleRouteName(scope.row.name) }}
</div>
</template>
</el-table-column>
<el-table-column :id="domIdChoose" prop="startSignalCode" label="方向" style="margin-left: 30px">
<template slot-scope="scope">
<div :style="{color: scope.row.turnBack? '#00FFFF':'#000000'}">
{{ handleDirection(scope.row.startSignalCode) }}
</div>
</template>
</el-table-column>
<el-table-column :id="domIdChoose" prop="turnBack" label="属性" style="margin-left:30px">
<template slot-scope="scope">
<div :style="{color: scope.row.turnBack? '#00FFFF':'#000000'}">
{{ scope.row.turnBack ? '折返': '直通' }}
</div>
</template>
</el-table-column>
<el-table-column :id="domIdChoose" prop="controlType" label="控制" style="margin-left:30px">
<template slot-scope="scope">
<div :style="{color: scope.row.turnBack? '#00FFFF':'#000000'}">
{{ scope.row.atsControl == '0' ? '人工' : '自动' }}
</div>
</template>
</el-table-column>
</el-table>
</div>
<el-row justify="center" class="button-group">
<el-col :span="10" :offset="2">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="4">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
<notice-info ref="noticeInfo" pop-class="chengdou-03__systerm" />
</el-dialog>
</div>
</template>
<script>
import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import CancelMouseState from '@/mixin/CancelMouseState';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
export default {
name: 'RouteDetail',
components: {
NoticeInfo
},
mixins: [
CancelMouseState
],
data() {
return {
dialogShow: false,
loading: false,
selected: null,
tempData: [],
stationName: '',
signalName: '',
domIdChoose: ''
};
},
computed: {
...mapGetters('map', [
'signalList',
'mapConfig'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Signal.detail.menu.domId : '';
},
title() {
return '查询进路状态';
}
},
methods: {
doShow(operate, selected, tempData) {
this.selected = selected;
//
if (!this.dialogShow) {
this.signalName = '';
this.stationName = '';
if (selected && selected._type.toUpperCase() === 'Signal'.toUpperCase()) {
this.signalName = selected.name;
const station = this.$store.getters['map/getDeviceByCode'](selected.stationCode);
if (station) {
this.stationName = station.name;
}
}
this.tempData = tempData || [];
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
handleRouteName(name) {
return name.replace(/-/, '-->');
},
handleDirection(signalCode) {
let signalDirection = '';
this.signalList.some(item => {
if (item.code === signalCode) {
signalDirection = item.right;
return true;
}
});
if ((signalDirection && this.mapConfig.upRight) || (!signalDirection && !this.mapConfig.upRight)) {
return '上行';
} else {
return '下行';
}
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
commit() {
const operate = {
operation: OperationEvent.Signal.detail.menu.operation
};
this.loading = true;
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow();
});
},
cancel() {
const operate = {
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => {
this.doClose();
});
}
}
};
</script>

View File

@ -1,278 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm route-setting"
:title="title"
:visible.sync="show"
width="460px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-row>
<el-col :span="2"><span class="item-lable">车站</span></el-col>
<el-col :span="6">
<el-input v-model="stationName" size="small" disabled />
</el-col>
<el-col :span="4" :offset="1"><span class="item-lable">始端信号机</span></el-col>
<el-col :span="6">
<el-input v-model="signalName" size="small" disabled />
</el-col>
</el-row>
<div class="route-table-box">
<span class="route-table-tip">进路列表</span>
<el-table ref="table" :data="tempData" border :cell-style="tableStyle" style="width: 99%;" size="mini" height="90" highlight-current-row @row-click="clickEvent">
<el-table-column :id="domIdChoose" prop="name" label="进路" style="margin-left:30px;" width="150px">
<template slot-scope="scope">
<div :style="{color: scope.row.turnBack? '#00FFFF':'#000000'}">
{{ handleRouteName(scope.row.name) }}
</div>
</template>
</el-table-column>
<el-table-column :id="domIdChoose" prop="startSignalCode" label="方向" style="margin-left: 30px">
<template slot-scope="scope">
<div :style="{color: scope.row.turnBack? '#00FFFF':'#000000'}">
{{ handleDirection(scope.row.startSignalCode) }}
</div>
</template>
</el-table-column>
<el-table-column :id="domIdChoose" prop="turnBack" label="属性" style="margin-left:30px">
<template slot-scope="scope">
<div :style="{color: scope.row.turnBack? '#00FFFF':'#000000'}">
{{ scope.row.turnBack ? '折返': '直通' }}
</div>
</template>
</el-table-column>
<el-table-column :id="domIdChoose" prop="controlType" label="控制" style="margin-left:30px">
<template slot-scope="scope">
<div :style="{color: scope.row.turnBack? '#00FFFF':'#000000'}">
{{ scope.row.atsControl == '0' ? '人工' : '自动' }}
</div>
</template>
</el-table-column>
</el-table>
</div>
<el-row justify="center" style="margin-top: 40px">
<el-col :span="12" :offset="12">
<el-button
:id="domIdConfirm"
type="primary"
:loading="loading"
:disabled="commitDisabled"
@click="commit"
>执行</el-button>
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
<notice-info ref="noticeInfo" pop-class="chengdou-03__systerm" />
<!--<password-box ref="passwordBox" @checkOver="passWordCommit" />-->
</el-dialog>
</template>
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import CancelMouseState from '@/mixin/CancelMouseState';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
// import PasswordBox from './childDialog/passwordInputBox.vue';
import CMD from '@/scripts/cmdPlugin/CommandEnum';
import { mapGetters } from 'vuex';
export default {
name: 'RouteSelection',
components: {
NoticeInfo
// PasswordBox
},
mixins: [
CancelMouseState
],
data() {
return {
tempData: [],
beforeSectionList: [],
dialogShow: false,
loading: false,
selected: null,
operation: '',
display: true,
stationName: '',
signalName: '',
tableStyle: {
'border-bottom': 'none'
},
commitDisabled:true,
controlTypeNameMap: {
'01': '折返',
'02': '直通'
},
row: ''
};
},
computed: {
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdChoose() {
return this.dialogShow ? OperationEvent.Signal.guide.choose.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Signal.guide.confirm.domId : '';
},
title() {
return '办理引导进路';
},
...mapGetters('map', [
'signalList',
'mapConfig'
])
},
methods: {
getProtectedSectionName(row) {
let name = '';
if (row &&
row.overlapSectionList &&
row.overlapSectionList &&
row.overlapSectionList.length > 0) {
const protect = row.overlapSectionList[0];
name = `${protect.name}`;
const station = this.$store.getters['map/getDeviceByCode'](protect.stationCode);
if (station) {
name = `${name}(${station.name})`;
}
}
return name;
},
handleRouteName(name) {
return name.replace(/-/, '-->');
},
handleDirection(signalCode) {
let signalDirection = '';
this.signalList.some(item => {
if (item.code === signalCode) {
signalDirection = item.right;
return true;
}
});
if ((signalDirection && this.mapConfig.upRight) || (!signalDirection && !this.mapConfig.upRight)) {
return '上行';
} else {
return '下行';
}
},
doShow(operate, selected, tempData) {
this.selected = selected;
this.commitDisabled = true;
//
if (!this.dialogShow) {
this.signalName = '';
this.stationName = '';
if (selected && selected._type.toUpperCase() === 'Signal'.toUpperCase()) {
this.signalName = selected.name;
const station = this.$store.getters['map/getDeviceByCode'](selected.stationCode);
if (station) {
this.stationName = station.name;
}
}
this.tempData = tempData || [];
this.operation = operate.operation;
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$refs.table.setCurrentRow();
this.$store.dispatch('training/emitTipFresh');
},
clickEvent(row, event, column) {
this.commitDisabled = false;
this.row = row;
if (row) {
const operate = {
operation: OperationEvent.Signal.guide.choose.operation,
val: row.code
};
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
});
}
},
//
commit() {
if (this.row && this.row.code) {
const operate = {
over: true,
operation: OperationEvent.Signal.guide.confirm.operation,
cmdType: CMD.Signal.CMD_SIGNAL_ROUTE_GUIDE,
param: {
routeCode: this.row.code
}
};
this.loading = true;
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
} else {
this.doClose();
this.$refs.noticeInfo.doShow();
}
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow();
});
}
},
cancel() {
const operate = {
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => {
this.doClose();
});
}
}
};
</script>
<style scoped>
.route-table-tip {
position: relative !important;
color: #3C72DF !important;
background: #ECE9D8 !important;
font-size: 12px;
top: -7px;
left: 7px;
}
.route-table-box {
margin-top: 20px !important;
line-height: 10px !important;
border: 2px solid #FFFFFF !important;
border-radius: 5px !important;
z-index: 1;
padding-bottom: 40px;
}
.item-lable {
line-height: 26px !important;
font-size: 13px;
}
</style>

View File

@ -1,268 +0,0 @@
<template>
<div>
<el-dialog v-dialogDrag class="chengdou-03__systerm route-hand-control" :title="title" :visible.sync="show" width="500px" :before-close="doClose" :z-index="2000" :modal="false" :close-on-click-modal="false">
<el-row class="header">
<el-col :span="11"><span>车站</span></el-col>
<el-col :span="11" :offset="2"><span>始端信号机</span></el-col>
</el-row>
<el-row>
<el-col :span="11">
<el-input v-model="stationName" size="small" disabled />
</el-col>
<el-col :span="11" :offset="2">
<el-input v-model="signalName" size="small" disabled />
</el-col>
</el-row>
<div class="table">
<el-table ref="tempTable" :data="tempData" border style="width: 100%" size="mini" :highlight-current-row="highlight" :height="140" @row-click="clickEvent">
<el-table-column :id="domIdChoose" prop="name" label="进路" style="margin-left:30px;" width="150px">
<template slot-scope="scope">
<div :style="{color: scope.row.turnBack? '#00FFFF':'#000000'}">
{{ handleRouteName(scope.row.name) }}
</div>
</template>
</el-table-column>
<el-table-column :id="domIdChoose" prop="startSignalCode" label="方向" style="margin-left: 30px">
<template slot-scope="scope">
<div :style="{color: scope.row.turnBack? '#00FFFF':'#000000'}">
{{ handleDirection(scope.row.startSignalCode) }}
</div>
</template>
</el-table-column>
<el-table-column :id="domIdChoose" prop="turnBack" label="属性" style="margin-left:30px">
<template slot-scope="scope">
<div :style="{color: scope.row.turnBack? '#00FFFF':'#000000'}">
{{ scope.row.turnBack ? '折返': '直通' }}
</div>
</template>
</el-table-column>
<el-table-column :id="domIdChoose" prop="controlType" label="控制" style="margin-left:30px">
<template slot-scope="scope">
<div :style="{color: scope.row.turnBack? '#00FFFF':'#000000'}">
{{ scope.row.atsControl == '0' ? '人工' : '自动' }}
</div>
</template>
</el-table-column>
</el-table>
</div>
<el-row justify="center" class="button-group">
<el-col :span="10" :offset="2">
<el-button :id="domIdConfirm" type="primary" :disabled="commitDisabled" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="4">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
<confirm-control ref="confirmControl" />
<notice-info ref="noticeInfo" pop-class="chengdou-03__systerm" />
</el-dialog>
</div>
</template>
<script>
import { mapGetters } from 'vuex';
import { UserOperationType } from '@/scripts/ConstDic';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import OperationHandler from '@/scripts/cmdPlugin/OperationHandler';
import ConfirmControl from './childDialog/confirmControl';
import CancelMouseState from '@/mixin/CancelMouseState';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
export default {
name: 'RouteHandControl',
components: {
ConfirmControl,
NoticeInfo
},
mixins: [
CancelMouseState
],
data() {
return {
dialogShow: false,
loading: false,
selected: null,
tempData: [],
operation: null,
selection: [],
stationName: '',
signalName: '',
highlight: true,
row: '',
commitDisabled: true
};
},
computed: {
...mapGetters('map', [
'signalList',
'mapConfig'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdChoose() {
if (this.operation == OperationEvent.Signal.humanControl.menu.operation) {
return OperationEvent.Signal.humanControl.choose.domId;
} else if (this.operation == OperationEvent.Signal.atsAutoControl.menu.operation) {
return OperationEvent.Signal.atsAutoControl.choose.domId;
}
return '';
},
domIdConfirm() {
return this.dialogShow ? OperationHandler.getDomIdByOperation(this.operation) : '';
},
title() {
if (this.operation == OperationEvent.Signal.humanControl.menu.operation) {
return '进路收人工控';
} else if (this.operation == OperationEvent.Signal.atsAutoControl.menu.operation) {
return '进路交自动控';
}
return '';
}
},
methods: {
doShow(operate, selected, tempData) {
this.selected = selected;
this.selection = [];
this.commitDisabled = true;
//
if (!this.dialogShow) {
this.signalName = '';
this.stationName = '';
if (selected && selected._type.toUpperCase() === 'Signal'.toUpperCase()) {
this.signalName = selected.name;
const station = this.$store.getters['map/getDeviceByCode'](selected.stationCode);
if (station) {
this.stationName = station.name;
}
}
if (tempData && tempData.length > 0) {
tempData.forEach(elem => {
elem.check = false;
elem.disabled = false;
//
if (operate.operation === OperationEvent.Signal.humanControl.menu.operation &&
(elem.atsControl == '0') ) {
elem.disabled = true;
} if (operate.operation === OperationEvent.Signal.atsAutoControl.menu.operation &&
(elem.atsControl == '1') ) {
elem.disabled = true;
}
});
}
this.tempData = tempData || [];
this.operation = operate.operation;
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
handleRouteName(name) {
return name.replace(/-/, '-->');
},
handleDirection(signalCode) {
let signalDirection = '';
this.signalList.some(item => {
if (item.code === signalCode) {
signalDirection = item.right;
return true;
}
});
if ((signalDirection && this.mapConfig.upRight) || (!signalDirection && !this.mapConfig.upRight)) {
return '上行';
} else {
return '下行';
}
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$refs.tempTable.setCurrentRow();
this.$store.dispatch('training/emitTipFresh');
},
clickEvent(row, event, column) {
this.highlight = false;
if (row && row.code) {
this.highlight = true;
this.selection = [row];
this.beforeSectionList = row.containSectionList || [];
this.row = row;
//
const operate = {
operation: '',
val: row.code
};
if (this.operation == OperationEvent.Signal.humanControl.menu.operation) {
/** 进路交人工控*/
operate.operation = OperationEvent.Signal.humanControl.choose.operation;
this.commitDisabled = !row.atsControl;
} else if (this.operation == OperationEvent.Signal.atsAutoControl.menu.operation) {
/** 进路交自动控*/
this.commitDisabled = Boolean(row.atsControl);
operate.operation = OperationEvent.Signal.atsAutoControl.choose.operation;
}
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
});
}
},
commit() {
if (this.operation == OperationEvent.Signal.humanControl.menu.operation) {
/** 进路交人工控*/
this.humanControl();
} else if (this.operation == OperationEvent.Signal.atsAutoControl.menu.operation) {
/** 进路交自动控*/
this.atsAutoControl();
}
},
//
humanControl() {
commitOperate(menuOperate.Signal.humanControl, {routeCodeList: [this.row.code]}, 2).then(({valid, operate}) => {
if (valid) {
this.doClose();
}
}).catch((error) => {
this.loading = false;
this.doClose();
console.error(error);
this.$refs.noticeInfo.doShow();
});
},
//
atsAutoControl() {
commitOperate(menuOperate.Signal.atsAutoControl, {routeCodeList: [this.row.code]}, 2).then(({valid, operate}) => {
if (valid) {
this.doClose();
}
}).catch((error) => {
this.loading = false;
this.doClose();
console.error(error);
this.$refs.noticeInfo.doShow();
});
},
cancel() {
const operate = {
userOperationType: UserOperationType.LEFTCLICK,
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => { this.doClose(); });
}
}
};
</script>

View File

@ -1,325 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm route-setting"
:title="title"
:visible.sync="show"
width="500px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-row>
<el-col :span="2"><span class="item-lable">车站</span></el-col>
<el-col :span="6">
<el-input v-model="stationName" size="small" disabled />
</el-col>
<el-col :span="4" :offset="1"><span class="item-lable">始端信号机</span></el-col>
<el-col :span="6">
<el-input v-model="signalName" size="small" disabled />
</el-col>
</el-row>
<div class="route-table-box">
<span class="route-table-tip">进路列表</span>
<el-table
ref="table"
:data="tempData"
border
:cell-style="tableStyle"
style="width: 99%;"
size="mini"
height="150"
highlight-current-row
@row-click="clickEvent"
>
<el-table-column :id="domIdChoose" prop="name" label="进路" style="margin-left:30px;" width="150px">
<template slot-scope="scope">
<div :style="{color: scope.row.turnBack? '#00FFFF':'#000000'}">
{{ handleRouteName(scope.row.name) }}
</div>
</template>
</el-table-column>
<el-table-column :id="domIdChoose" prop="startSignalCode" label="方向" style="margin-left: 30px">
<template slot-scope="scope">
<div :style="{color: scope.row.turnBack? '#00FFFF':'#000000'}">
{{ handleDirection(scope.row.startSignalCode) }}
</div>
</template>
</el-table-column>
<el-table-column :id="domIdChoose" prop="turnBack" label="属性" style="margin-left:30px">
<template slot-scope="scope">
<div :style="{color: scope.row.turnBack? '#00FFFF':'#000000'}">
{{ scope.row.turnBack ? '折返': '直通' }}
</div>
</template>
</el-table-column>
<el-table-column :id="domIdChoose" prop="controlType" label="控制" style="margin-left:30px">
<template slot-scope="scope">
<div :style="{color: scope.row.turnBack? '#00FFFF':'#000000'}">
{{ scope.row.atsControl == '0' ? '人工' : '自动' }}
</div>
</template>
</el-table-column>
</el-table>
</div>
<el-row justify="center" style="margin-top: 70px">
<el-col :span="12" :offset="12">
<el-button
:id="domIdConfirm"
type="primary"
:loading="loading"
:disabled="commitDisabled"
@click="commit"
>执行</el-button>
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
<notice-info ref="noticeInfo" pop-class="chengdou-03__systerm" />
<password-box ref="passwordBox" @checkOver="passWordCommit" />
</el-dialog>
</template>
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import CancelMouseState from '@/mixin/CancelMouseState';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import { mapGetters } from 'vuex';
import { deepAssign } from '@/utils/index';
import PasswordBox from './childDialog/passwordInputBox.vue';
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
export default {
name: 'RouteSelection',
components: {
NoticeInfo,
PasswordBox
},
mixins: [
CancelMouseState
],
data() {
return {
tempData: [],
beforeSectionList: [],
dialogShow: false,
loading: false,
selected: null,
row: null,
operation: '',
display: true,
stationName: '',
signalName: '',
commitDisabled:true,
tableStyle: {
'border-bottom': 'none'
}
};
},
computed: {
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdChoose() {
return this.dialogShow ? OperationEvent.Signal.arrangementRoute.choose.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Signal.arrangementRoute.confirm.domId : '';
},
title() {
return '办理进路';
},
...mapGetters('map', [
'signalList',
'sectionList',
'mapConfig'
])
},
methods: {
getProtectedSectionName(row) {
let name = '';
if (row &&
row.overlapSectionList &&
row.overlapSectionList &&
row.overlapSectionList.length > 0) {
const protect = row.overlapSectionList[0];
name = `${protect.name}`;
const station = this.$store.getters['map/getDeviceByCode'](protect.stationCode);
if (station) {
name = `${name}(${station.name})`;
}
}
return name;
},
handleRouteName(name) {
return name.replace(/-/, '-->');
},
handleDirection(signalCode) {
let signalDirection = '';
this.signalList.some(item => {
if (item.code === signalCode) {
signalDirection = item.right;
return true;
}
});
if ((signalDirection && this.mapConfig.upRight) || (!signalDirection && !this.mapConfig.upRight)) {
return '上行';
} else {
return '下行';
}
},
doShow(operate, selected, tempData) {
this.selected = selected;
this.commitDisabled = true;
//
if (!this.dialogShow) {
this.signalName = '';
this.stationName = '';
if (selected && selected._type.toUpperCase() === 'Signal'.toUpperCase()) {
this.signalName = selected.name;
const station = this.$store.getters['map/getDeviceByCode'](selected.stationCode);
if (station) {
this.stationName = station.name;
}
}
this.tempData = tempData || [];
this.operation = operate.operation;
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.restoreBeforeDevices();
this.$refs.table.setCurrentRow();
this.$store.dispatch('training/emitTipFresh');
},
restoreBeforeDevices() {
//
if (this.beforeSectionList && this.beforeSectionList.length) {
this.beforeSectionList.forEach(elem => {
elem.cutOff = false;
});
}
this.$store.dispatch('training/updateMapState', [...this.beforeSectionList]);
this.beforeSectionList = [];
},
clickEvent(row, event, column) {
this.row = row;
if (row) {
//
this.restoreBeforeDevices();
row.canSetting = true;
this.commitDisabled = false;
//
const containSectionList = [];
if (row.routeSectionList && row.routeSectionList.length) {
//
row.routeSectionList.forEach(elem => {
const section = deepAssign({}, this.$store.getters['map/getDeviceByCode'](elem));
if (section.logicSectionCodeList && section.logicSectionCodeList.length) {
section.logicSectionCodeList.forEach(item => {
const sec = deepAssign({}, this.$store.getters['map/getDeviceByCode'](item));
sec.cutOff = true;
containSectionList.push(sec);
});
} else {
section.cutOff = true;
containSectionList.push(section);
}
});
}
this.$store.dispatch('training/updateMapState', [...containSectionList]);
this.beforeSectionList = containSectionList || [];
//
const operate = {
operation: OperationEvent.Signal.arrangementRoute.choose.operation,
val: row.code
};
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
});
}
},
commit() {
if (this.row && this.row.canSetting) {
this.loading = true;
commitOperate({operation:OperationEvent.Signal.arrangementRoute.confirm.operation}, {routeCode: this.row.code}, 1).then(({valid, operate})=>{
this.loading = false;
if (valid) {
this.$refs.passwordBox.doShow({operation:OperationEvent.Signal.arrangementRoute.menu.operation});
this.doClose();
}
}).catch((error) => {
this.loading = false;
this.doClose();
console.error(error);
this.$refs.noticeInfo.doShow();
});
}
},
passWordCommit(data) {
this.loading = true;
commitOperate(menuOperate.Signal.arrangementRoute, {}, 2).then(({valid, operate})=>{
this.loading = false;
if (valid) {
this.doClose();
}
}).catch((error) => {
this.loading = false;
this.doClose();
console.error(error);
this.$refs.noticeInfo.doShow();
});
},
cancel() {
const operate = {
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => {
this.doClose();
});
}
}
};
</script>
<style scoped>
.route-table-tip {
position: relative !important;
color: #3C72DF !important;
background: #ECE9D8 !important;
font-size: 12px;
top: -7px;
left: 7px;
}
.route-table-box {
margin-top: 15px !important;
line-height: 10px !important;
border: 2px solid #FFFFFF !important;
border-radius: 5px !important;
z-index: 1;
}
.item-lable {
line-height: 26px !important;
font-size: 13px;
}
</style>

View File

@ -1,114 +0,0 @@
<template>
<div>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm section-detail"
:title="title"
:visible.sync="show"
width="320px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-form ref="form" label-position="left" :model="formModel" label-width="100px">
<el-form-item label="区段名称">
<el-input v-model="formModel.sectionName" disabled />
</el-form-item>
<el-form-item label="车站名称">
<el-input v-model="formModel.stationName" disabled />
</el-form-item>
<el-form-item label="公里标(Km)">
<el-input v-model="formModel.kmPost" disabled />
</el-form-item>
<el-form-item label="长度(m)">
<el-input v-model="formModel.lengthFact" disabled />
</el-form-item>
</el-form>
<el-row justify="center" style="margin-top: 50px">
<el-col :span="7" :offset="17">
<el-button :id="domIdConfirm" @click="commit">确定</el-button>
</el-col>
</el-row>
<notice-info ref="noticeInfo" pop-class="chengdou-03__systerm" />
</el-dialog>
</div>
</template>
<script>
import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
export default {
name: 'RouteDetail',
components: {
NoticeInfo
},
data() {
return {
dialogShow: false,
loading: false,
selected: null,
formModel: {
sectionName: '',
stationName: '',
kmPost: '',
lengthFact: ''
}
};
},
computed: {
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Section.detail.menu.domId : '';
},
title() {
return '无岔区段属性对话框';
}
},
methods: {
doShow(operate, selected) {
this.selected = selected;
//
if (!this.dialogShow) {
if (selected && selected._type.toUpperCase() === 'Section'.toUpperCase()) {
const hasParentCode = (this.selected.type == '02');
this.formModel.sectionName = hasParentCode ? selected.parentName + '-' + selected.name : selected.name;
this.formModel.lengthFact = selected.lengthFact;
const station = this.$store.getters['map/getDeviceByCode'](selected.stationCode);
if (station) {
this.formModel.stationName = station.name;
this.formModel.kmPost = station.kmPost;
}
}
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
commit() {
const operate = {
operation: OperationEvent.Section.detail.menu.operation
};
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => {
this.doClose();
});
}
}
};
</script>

View File

@ -1,603 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm stand-detain-train"
:title="title"
:visible.sync="show"
width="400px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-row class="header">
<el-col :span="11">
<span>车站</span>
<el-input v-model="stationName" style="width: 110px; margin-left: 10px;" size="small" disabled />
</el-col>
<el-col :span="11" :offset="1">
<span>站台</span>
<el-input v-model="standName" style="width: 110px; margin-left: 10px;" size="small" disabled />
</el-col>
</el-row>
<div v-if="DetainTrain">
<div
style="padding: 15px; margin-bottom: 25px; margin-top: 20px; border: 1px solid lightgray;"
>
<span class="base-label" style="left: -5px; top: -22px; background: #ECE9D8; padding: 0 4px;">范围</span>
<el-row style="margin-top: -13px;">
<el-radio-group v-model="radio" @change="choose">
<el-col :span="24">
<el-radio
:id="domIdDetainCar"
label="01"
style="display: block; text-align: left; float: left; margin-right: 10px;"
>本站台
</el-radio>
<el-radio
:id="isUpDirection? domIdDetainChoose: ''"
v-if="radio1 == 2"
:disabled="!isUpDirection"
:label="`${isUpDirection}`"
style="display: block; text-align: left; float: left; margin-right: 10px;"
>上行全线
</el-radio>
<el-radio
:id="isUpDirection ? '': domIdDetainChoose"
v-if="radio1 == 2"
:label="`${!isUpDirection}`"
:disabled="isUpDirection"
style="display: block; text-align: left; float: left;"
>下行全线</el-radio>
</el-col>
</el-radio-group>
</el-row>
</div>
<div style="padding: 15px; margin-top: 20px; border: 1px solid lightgray;">
<span class="base-label" style="left: -5px; top: -22px; background: #ECE9D8; padding: 0 4px;">功能</span>
<el-row style="margin-top: -13px;">
<el-col :span="11">
<el-radio
v-model="radio1"
label="1"
:disabled="radio1 == '2'"
style="display: block; text-align: left;"
>
扣车</el-radio>
</el-col>
<el-col :span="11" :offset="2">
<el-radio
v-model="radio1"
label="2"
:disabled="radio1 == '1'"
style="display: block; text-align: left;"
>
取消扣车</el-radio>
</el-col>
</el-row>
</div>
</div>
<div v-if="JumpStop">
<div
style="padding: 15px; margin-bottom: 25px; margin-top: 20px; border: 1px solid lightgray; height: 115px;"
>
<span class="base-label" style="left: -5px; top: -22px; background: #ECE9D8; padding: 0 4px;">范围</span>
<el-row style="margin-top: -13px;">
<el-col :span="24">
<el-radio-group v-model="radio" @change="chooseJumpStop">
<el-radio
:id="radio == '02' ? domIdChoose : ''"
label="01"
style="display: block; text-align: left; margin-right: 10px; margin-bottom: 20px; width: 80px;"
>
站台跳停
</el-radio>
<el-radio
:id="radio == '01' ? domIdChoose : ''"
label="02"
style="display: block; text-align: left; margin-left: 0; float: left;"
>
指定列车跳停</el-radio>
<div style="float: left;">
<span>车组号</span>
<el-select
:id="domIdCancelJumpStop"
v-model="tripNumber"
style="width: 120px; margin-left: 20px;"
size="mini"
:disabled="radio == '01'"
@change="trainNoSelectChange"
>
<el-option
v-for="option in trainList"
:key="option.groupNumber"
:label="option.groupNumber"
:value="option.groupNumber"
/>
</el-select>
</div>
</el-radio-group>
</el-col>
</el-row>
</div>
<div style="padding: 15px; margin-top: 20px; border: 1px solid lightgray;">
<span class="base-label" style="left: -5px; top: -22px; background: #ECE9D8; padding: 0 4px;">功能</span>
<el-row style="margin-top: -13px;">
<el-col :span="11">
<el-radio
v-model="radio1"
label="1"
:disabled="radio1 == 2"
style="display: block; text-align: left;"
>
跳停</el-radio>
</el-col>
<el-col :span="11" :offset="2">
<el-radio
v-model="radio1"
label="2"
:disabled="radio1 == 1"
style="display: block; text-align: left;"
>
取消跳停</el-radio>
</el-col>
</el-row>
</div>
</div>
<div v-if="RunLevel">
<div
style="padding: 15px; margin-bottom: 25px; margin-top: 20px; border: 1px solid lightgray; height: 105px;"
>
<span class="base-label" style="left: -5px; top: -22px; background: #ECE9D8; padding: 0 4px;">范围</span>
<el-row style="margin-top: -13px;">
<el-radio-group v-model="radio" @change="chooseStopTime">
<el-col :span="24">
<el-radio
:id="radio == '02' ? domIdChoose1 : ''"
label="01"
style="display: block; text-align: left; margin-right: 10px; margin-bottom:10px; width: 60px;"
>
自动
</el-radio>
<el-radio
:id="radio == '01' ? domIdChoose1 : ''"
label="02"
style="display: block; text-align: left; margin-left: 0; float: left;"
>
人工</el-radio>
<div v-if="radio2 == 2" style="float: left; margin-left: 20px;">
<span>运行等级</span>
<el-select
:id="domIdRunLevel"
v-model="trainRunlevel"
style="width: 120px; margin-left: 20px;"
size="mini"
:disabled="radio == '01'"
@change="trainNoSelectLevel"
>
<el-option
v-for="option in runLevelList"
:key="option.value"
:label="option.label"
:value="option.value"
/>
</el-select>
</div>
<div v-if="radio2 == 1" style="float: left; margin-left: 20px;">
<span>停站时间</span>
<el-input-number
:id="domIdStopTime"
v-model="trainStopTime"
:min="15"
:max="300"
:step="1"
size="mini"
:controls="false"
style="width:100px;display:inline-block;margin-left:10px;height:34px;"
:disabled="radio == '01'"
@blur="handleTrainStopTime"
/>
<div style="margin-left: 5px;display: inline-block;font-size: 14px;"></div>
</div>
</el-col>
</el-radio-group>
</el-row>
</div>
<div style="padding: 15px; margin-top: 20px; border: 1px solid lightgray;">
<span class="base-label" style="left: -5px; top: -22px; background: #ECE9D8; padding: 0 4px;">功能</span>
<el-row style="margin-top: -13px;">
<el-radio-group v-model="effective" :disabled="disabledTime" @change="chooseEffective">
<el-radio :id="effective === false? '': domIdChoose2" :label="false">一次有效</el-radio>
<el-radio :id="effective === true? '': domIdChoose2" :label="true">一直有效</el-radio>
</el-radio-group>
<!-- <el-radio-group v-model="effective" :disabled="disabledTime" @change="chooseEffective">
<el-col :span="11">
<el-radio
:id="effective == '02' ? '': domIdChoose2"
label="01"
style="display: block; text-align: left;"
>
一次有效</el-radio>
</el-col>
<el-col :span="11" :offset="2">
<el-radio
:id="effective == '01' ? '': domIdChoose2"
label="02"
style="display: block; text-align: left;"
>
一直有效</el-radio>
</el-col>
</el-radio-group> -->
</el-row>
</div>
</div>
<el-row class="button-group">
<el-col :span="10" :offset="2">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="4">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
<notice-info ref="noticeInfo" pop-class="chengdou-03__systerm" />
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import OperationHandler from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
export default {
name: 'StandDetainTrain',
components: {
NoticeInfo
},
data() {
return {
dialogShow: false,
loading: false,
standName: '',
stationName: '',
selected: null,
operation: null,
isUpDirection:true,
radio: '01',
radio1: '1',
radio2: '1',
DetainTrain: false,
JumpStop: false,
RunLevel: false,
trainList: [],
runLevelList: [
{ value: 2, label: '常速' },
{ value: 1, label: '低速' },
{ value: 3, label: '高速' }
],
tripNumber: '',
effective: '01',
trainRunlevel: 2,
trainStopTime: 30,
disabledTime: true
};
},
computed: {
...mapGetters('map', [
'map',
'mapConfig'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationHandler.getDomIdByOperation(this.operation) : '';
},
domIdDetainCar() {
return this.dialogShow ? OperationEvent.StationStand.cancelDetainTrain.choose.domId : '';
},
domIdDetainChoose() {
return this.dialogShow ? OperationEvent.Command.common.choose.domId : '';
},
domIdChoose() {
if (this.radio1 == '1') { //
return this.dialogShow ? OperationEvent.StationStand.setJumpStop.select.domId : '';
} else { //
return this.dialogShow ? OperationEvent.StationStand.cancelJumpStop.select.domId : '';
}
},
// domIdJumpStop() {
// return this.dialogShow ? OperationEvent.StationStand.setJumpStop.choose.domId : '';
// },
domIdCancelJumpStop() {
return this.dialogShow ? OperationEvent.StationStand.cancelJumpStop.choose.domId : '';
},
domIdChoose1() {
if (this.radio2 == '1') { //
return this.dialogShow ? OperationEvent.StationStand.setStopTime.choose1.domId : '';
} else { //
return this.dialogShow ? OperationEvent.StationStand.setRunLevel.choose1.domId : '';
}
},
domIdChoose2() {
if (this.radio2 == '1') { //
return this.dialogShow ? OperationEvent.StationStand.setStopTime.choose2.domId : '';
} else { //
return this.dialogShow ? OperationEvent.StationStand.setRunLevel.choose2.domId : '';
}
},
domIdStopTime() {
return this.dialogShow ? OperationEvent.StationStand.setStopTime.input.domId : '';
},
domIdRunLevel() {
return this.dialogShow ? OperationEvent.StationStand.setRunLevel.chooseTrain.domId : '';
},
title() {
if (this.operation == OperationEvent.StationStand.setDetainTrain.menu.operation) {
return '扣车';
} else if (this.operation == OperationEvent.StationStand.cancelDetainTrain.menu.operation || this.operation == OperationEvent.StationStand.cancelDetainTrainAll.menu.operation) {
return '取消扣车';
} else if (this.operation == OperationEvent.StationStand.setJumpStop.menu.operation) {
return '设置跳停';
} else if (this.operation == OperationEvent.StationStand.cancelJumpStop.menu.operation) {
return '取消跳停';
} else if (this.operation == OperationEvent.StationStand.setStopTime.menu.operation) {
return '设置停站时间';
} else if (this.operation == OperationEvent.StationStand.setRunLevel.menu.operation) {
return '设置站间运行等级';
}
return '';
}
},
watch: {
operation(data) {
if (data != OperationEvent.StationStand.cancelDetainTrainAll.menu.operation) {
this.JumpStop = false;
this.RunLevel = false;
this.DetainTrain = false;
this.radio = '01';
this.radio1 = '1';
this.radio2 = '1';
if (data == OperationEvent.StationStand.setDetainTrain.menu.operation) {
this.radio1 = '1';
this.radio = '01';
this.DetainTrain = true;
} else if (data == OperationEvent.StationStand.cancelDetainTrain.menu.operation) {
this.radio1 = '2';
this.radio = '01';
this.DetainTrain = true;
} else if (data == OperationEvent.StationStand.setJumpStop.menu.operation) {
this.JumpStop = true;
this.radio1 = '1';
} else if (data == OperationEvent.StationStand.cancelJumpStop.menu.operation) {
this.JumpStop = true;
this.radio1 = '2';
} else if (data == OperationEvent.StationStand.setStopTime.menu.operation) {
this.RunLevel = true;
this.radio2 = '1';
} else if (data == OperationEvent.StationStand.setRunLevel.menu.operation) {
this.RunLevel = true;
this.radio2 = '2';
}
}
}
},
methods: {
doShow(operate, selected, tempDate = null) {
this.selected = selected;
if (!this.dialogShow) {
this.tripNumber = '';
this.standName = '';
this.stationName = '';
this.operation = operate.operation;
if (selected) {
this.getDirection(selected);
}
if (selected && selected._type.toUpperCase() === 'StationStand'.toUpperCase()) {
this.getDirection(selected);
const station = this.$store.getters['map/getDeviceByCode'](selected.stationCode);
if (station) {
this.stationName = station.name;
}
}
if (this.operation == OperationEvent.StationStand.setJumpStop.menu.operation || this.operation == OperationEvent.StationStand.setJumpStop.menu.operation) {
this.radio = selected.direction;
}
this.effective = false;
this.radio = '01';
this.disabledTime = true;
this.trainList = this.map.trainList; //
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
getDirection(selected) {
if (this.mapConfig.upRight) {
this.standName = selected.right ? '上行' : '下行';
this.isUpDirection = selected.right;
} else if (!this.mapConfig.upRight) {
this.standName = selected.right ? '下行' : '上行';
this.isUpDirection = !selected.right;
}
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
this.operation = '';
this.trainStopTime = 30;
},
choose(upDown) { // code
const operate = {
operation: upDown == '01'
? OperationEvent.StationStand.cancelDetainTrain.choose.operation
: OperationEvent.Command.common.choose.operation,
val: this.radio
};
if (this.radio == '02' || this.radio == '03') {
this.operation = OperationEvent.StationStand.cancelDetainTrainAll.menu.operation;
} else {
this.operation = OperationEvent.StationStand.cancelDetainTrain.menu.operation;
}
this.handleBreak(operate);
},
trainNoSelectChange(upDown) { //
const operate = {
operation: OperationEvent.StationStand.cancelDetainTrain.choose.operation
};
this.handleBreak(operate);
},
chooseJumpStop(upDown) {
const operate = {
operation: ''
};
if (this.radio1 == '1') { //
operate.operation = OperationEvent.StationStand.setJumpStop.select.operation;
} else { //
operate.operation = OperationEvent.StationStand.cancelJumpStop.select.operation;
}
this.handleBreak(operate);
},
chooseEffective(effective) {
const operate = {
operation: '',
val: effective
};
if (this.radio2 == '1') { //
operate.operation = OperationEvent.StationStand.setStopTime.choose2.operation;
} else { //
operate.operation = OperationEvent.StationStand.setRunLevel.choose2.operation;
}
this.handleBreak(operate);
},
chooseStopTime(upDown) {
const operate = {
operation: '',
val: this.radio
};
if (this.radio2 == '1') { //
operate.operation = OperationEvent.StationStand.setStopTime.choose1.operation;
} else { //
operate.operation = OperationEvent.StationStand.setRunLevel.choose1.operation;
}
if (this.radio === '01') {
this.disabledTime = true;
this.trainRunlevel = 2;
this.effective = false;
} else {
this.disabledTime = false;
this.effective = true;
}
this.handleBreak(operate);
},
trainNoSelectLevel(upDown) {
const operate = {
operation: OperationEvent.StationStand.setRunLevel.chooseTrain.operation,
val: `${upDown}`,
param: {
standRunLevel: `${upDown}`
}
};
this.handleBreak(operate);
},
handleTrainStopTime() {
const operate = {
operation: OperationEvent.StationStand.setStopTime.input.operation,
val: `${this.trainStopTime}`
};
this.handleBreak(operate);
},
handleBreak(operate) { //
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
valid && this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
});
},
commit() {
if (this.operation == OperationEvent.StationStand.setDetainTrain.menu.operation) {
this.setDetainTrain(); /** 设置扣车*/
} else if (this.operation == OperationEvent.StationStand.cancelDetainTrain.menu.operation || this.operation == OperationEvent.StationStand.cancelDetainTrainAll.menu.operation) {
this.cancelDetainTrain(); /** 取消扣车*/
} else if (this.operation == OperationEvent.StationStand.setJumpStop.menu.operation) {
this.setJumpStop(); /** 设置跳停*/
} else if (this.operation == OperationEvent.StationStand.cancelJumpStop.menu.operation) {
this.cancelJumpStop(); /** 取消跳停*/
} else if (this.operation == OperationEvent.StationStand.setStopTime.menu.operation) {
this.setStopTime(); /** 设置停站时间*/
} else if (this.operation == OperationEvent.StationStand.setRunLevel.menu.operation) {
this.setRunLevel(); /** 设置站间运行等级*/
}
},
//
setDetainTrain() {
this.sendCommand(menuOperate.StationStand.setDetainTrain);
},
//
cancelDetainTrain() {
if (this.operation == OperationEvent.StationStand.cancelDetainTrain.menu.operation) {
this.sendCommand(menuOperate.StationStand.cancelDetainTrain);
} else {
this.sendCommand(menuOperate.StationStand.cancelDetainTrainAll);
}
},
//
setJumpStop() {
this.sendCommand(menuOperate.StationStand.setJumpStop, {trainGroupNumber:this.tripNumber});
},
//
cancelJumpStop() {
this.sendCommand(menuOperate.StationStand.cancelJumpStop, {trainGroupNumber:this.tripNumber});
},
//
setStopTime() {
this.sendCommand(menuOperate.StationStand.setStopTime, {parkingTime: this.radio == '01' ? -1 : this.trainStopTime, parkingAlwaysValid: this.effective});
},
//
setRunLevel() {
this.sendCommand(menuOperate.StationStand.setRunLevel, {runLevelTime:this.radio === '02' ? this.trainRunlevel : 2, runLevelTimeForever: this.effective});
},
sendCommand(operate, param) {
this.loading = true;
commitOperate(operate, param, 2).then(({valid})=>{
this.loading = false;
if (valid) {
this.doClose();
}
}).catch((error) => {
this.loading = false;
this.doClose();
console.error(error);
this.$refs.noticeInfo.doShow();
});
},
cancel() {
const operate = {
operation: OperationEvent.Command.cancel.menu.operation
};
this.loading = false;
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => {
this.doClose();
});
}
}
};
</script>
<style lang="scss" scoped>
.stand-detain-train .context {
height: 80px !important;
}
/deep/ {
.el-input--mini .el-input__icon{
line-height: 100%;
}
}
</style>

View File

@ -1,217 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm stand-detail"
:title="title"
:visible.sync="show"
width="380px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-row class="header">
<el-col :span="10">
<span>车站</span>
</el-col>
<el-col :span="10" :offset="2">
<span>站台</span>
</el-col>
</el-row>
<el-row class="header">
<el-col :span="10">
<el-input v-model="stationName" size="small" disabled />
</el-col>
<el-col :span="10" :offset="2">
<el-input v-model="standName" style="padding: 0 3px;" size="small" disabled />
</el-col>
</el-row>
<el-row class="content">
<el-col :span="6">
<span>停站时间</span>
</el-col>
<el-col :span="18">
<el-input v-model="modelData.stopTime" size="small" disabled />
</el-col>
</el-row>
<el-row class="content">
<el-col :span="6">
<span>运行等级</span>
</el-col>
<el-col :span="18">
<el-input v-model="modelData.runLevel" size="small" disabled />
</el-col>
</el-row>
<el-row class="content">
<el-col :span="6">
<span>扣车</span>
</el-col>
<el-col :span="18">
<el-input v-model="modelData.detainCar" size="small" disabled />
</el-col>
</el-row>
<el-row class="content">
<el-col :span="6">
<span>跳停</span>
</el-col>
<el-col :span="18">
<el-input v-model="modelData.jumpStop" size="small" disabled />
</el-col>
</el-row>
<el-row justify="center" class="button-group">
<el-col :span="18">
<span style="opacity: 0;">1</span>
</el-col>
<el-col :span="4">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">退出</el-button>
</el-col>
</el-row>
<notice-info ref="noticeInfo" pop-class="chengdou-03__systerm" />
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
// import CMD from '@/scripts/cmdPlugin/CommandEnum';
import CancelMouseState from '@/mixin/CancelMouseState';
export default {
name: 'StandDetail',
components: {
NoticeInfo
},
mixins: [
CancelMouseState
],
data() {
return {
dialogShow: false,
loading: false,
tempData: [],
stationName: '',
standName: '',
runLevelList: [
'自动',
'低速',
'常速',
'高速'
],
modelData: {
stopTime: '自动',
runLevel: '自动',
detainCar: '无扣车',
jumpStop: '无跳停'
}
};
},
computed: {
...mapGetters('map', [
'mapConfig',
'stationList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Command.close.confirm.domId : '';
},
title() {
return '站台信息';
}
},
methods: {
loadInitData(selected, opts) {
this.tempData = [];
// const stationList = this.stationList.slice();
// const index = this.stationList.findIndex(n => n.code == selected.stationCode);
// let stationStand, station;
// if (selected.direction == '01') { //
// //
// if (index != 0) {
// stationStand = this.$store.getters['map/getDeviceByCode'](this.stationList[index - 1].code);
// station = this.$store.getters['map/getDeviceByCode'](stationStand.stationCode);
// }
// } else {
// //
// if (index != this.stationList.length - 1) {
// stationStand = this.$store.getters['map/getDeviceByCode'](this.stationList[index + 1].code);
// station = this.$store.getters['map/getDeviceByCode'](stationStand.stationCode);
// }
// }
this.modelData = {
stopTime: selected.parkingTime < 0 ? '自动' : `${selected.parkingTime}`,
runLevel: this.runLevelList[selected.runLevelTime],
detainCar: selected.stationHoldTrain || selected.centerHoldTrain ? '已设置' : '无扣车',
jumpStop: selected.allSkip || selected.assignSkip ? '已设置' : '无跳停'
};
},
doShow(operate, selected, opts) {
this.selected = selected;
if (!this.dialogShow) {
this.standName = '';
this.stationName = '';
if (selected && selected._type.toUpperCase() === 'StationStand'.toUpperCase()) {
if (this.mapConfig.upRight) {
this.standName = selected.right ? '上行' : '下行';
} else if (!this.mapConfig.upRight) {
this.standName = selected.right ? '下行' : '上行';
}
const station = this.$store.getters['map/getDeviceByCode'](selected.stationCode);
if (station) {
this.stationName = station.name;
}
}
this.loadInitData(selected, opts);
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
commit() {
const operate = {
operation: OperationEvent.Command.close.confirm.operation
};
this.loading = true;
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(() => {
this.loading = false;
this.doClose();
});
},
cancel() {
const operate = {
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => {
this.doClose();
});
}
}
};
</script>
<style>
.content {
margin-top: 20px;
}
</style>

View File

@ -1,332 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm train-control"
:title="title"
:visible.sync="show"
width="480px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<div class="el-dialog-div">
<el-form ref="form" size="small" label-width="80px" :model="addModel" :rules="rules" label-position="left">
<el-row>
<el-col :span="11">
<el-form-item prop="stationName">
<span slot="label">车站</span>
<el-input v-model="addModel.stationName" />
</el-form-item>
</el-col>
<el-col :span="11" :offset="1">
<el-form-item v-if="operation != '70c'" prop="sectionCode">
<span slot="label">轨道</span>
<el-input v-model="addModel.sectionCode" />
</el-form-item>
<el-form-item v-else prop="trainWindowCode">
<span slot="label">车次窗</span>
<el-input v-model="addModel.trainWindowCode" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="11">
<el-form-item label="车组号:" prop="groupNumber">
<el-select v-model="addModel.groupNumber" filterable>
<el-option
v-for="train in trainList"
:key="train.groupNumber"
:label="train.groupNumber"
:value="train.groupNumber"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="11">
<el-form-item v-if="operation == '708'" prop="serviceNumber">
<span slot="label">服务号</span>
<el-input v-model="addModel.serviceNumber" />
</el-form-item>
<el-form-item v-else-if="operation == '70c'" prop="targetCode">
<span slot="label">目的地</span>
<el-input v-model="addModel.targetCode" />
</el-form-item>
</el-col>
<el-col :span="11" :offset="1">
<el-form-item v-if="operation == '708'" prop="trainCode">
<span slot="label">序列号</span>
<el-input v-model="addModel.trainCode" />
</el-form-item>
<el-form-item v-else-if="operation == '70c'" prop="serviceNumber">
<span slot="label">服务号</span>
<el-input v-model="addModel.serviceNumber" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col>
<el-form-item v-if="operation == '70c'" prop="trainType">
<span slot="label">运行模式</span>
<br>
<el-radio-group v-model="addModel.runningMode" style="margin-left: 15px;">
<el-radio :label="'01'">普通</el-radio>
<el-radio :label="'02'">专列</el-radio>
<el-radio :label="'03'">不停站直达</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<el-row justify="center" class="button-group">
<el-col :span="10" :offset="2">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="4">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
<confirm-train ref="confirmTrain" />
<notice-info ref="noticeInfo" pop-class="chengdou-03__systerm" />
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import CancelMouseState from '@/mixin/CancelMouseState';
import ConfirmTrain from './childDialog/confirmTrain';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
export default {
name: 'TrainControl',
components: {
ConfirmTrain,
NoticeInfo
},
mixins: [
CancelMouseState
],
data() {
return {
trainList: [],
selected: null,
addModel: {
stationName: '',
sectionCode: '',
trainWindowCode: '',
groupNumber: '',
serviceNumber: '',
targetCode: '',
trainCode: '',
runningMode: ''
},
rules: {
stationName: [
{ required: true, message: '请输入车站', trigger: 'blur'}
],
sectionCode: [
{ required: true, message: '请输入轨道', trigger: 'blur'}
],
trainWindowCode: [
{ required: true, message: '请输入车次窗', trigger: 'blur'}
],
groupNumber: [
{ required: true, message: '请选择车组号', trigger: 'change' }
],
serviceNumber: [
{ required: true, message: '请输入服务号', trigger: 'blur'}
],
targetCode: [
{ required: true, message: '请输入目的地号', trigger: 'blur'}
],
trainCode: [
{ required: true, message: '请输入序列号', trigger: 'blur'}
],
runningMode: [
{ required: true, message: '请选择运行模式', trigger: 'blur'}
]
},
operation: null,
dialogShow: false,
loading: false,
direction: 0
};
},
computed: {
...mapGetters('map', [
'map'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
if (this.dialogShow) {
if (this.operation == OperationEvent.Train.destinationTrainId.menu.operation) {
/* 设目的地*/
return OperationEvent.Train.destinationTrainId.menu.domId;
} else if (this.operation == OperationEvent.Train.setPlanTrainId.menu.operation) {
/* 设计划车*/
return OperationEvent.Train.setPlanTrainId.menu.domId;
} else if (this.operation == OperationEvent.Train.artificialTrainId.menu.operation) {
/* 设人工车*/
return OperationEvent.Train.artificialTrainId.menu.domId;
}
return '';
}
return '';
},
title() {
if ( this.operation == OperationEvent.Train.destinationTrainId.menu.operation) {
return '设目的地车';
} else if ( this.operation == OperationEvent.Train.setPlanTrainId.menu.operation ) {
return '设计划车';
} else if ( this.operation == OperationEvent.Train.artificialTrainId.menu.operation ) {
return '设人工车';
}
return '';
}
},
methods: {
loadInitData(map) {
},
doShow(operate, selected) {
this.selected = selected;
//
if (!this.dialogShow) {
this.operation = operate.operation;
}
this.addModel = {
tripNumber: '',
groupNumber: '',
trainType: '01',
serviceNumber: '',
targetCode: ''
};
/** 加载列车数据*/
this.loadInitData(this.map);
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
this.$store.dispatch('map/setTrainWindowShow', false);
this.mouseCancelState(this.selected);
},
commit() {
if ( this.operation == OperationEvent.Train.destinationTrainId.menu.operation ) {
this.destinationTrainId();
} else if (this.operation == OperationEvent.Train.setPlanTrainId.menu.operation ) {
this.setPlanTrainId();
} else if (this.operation == OperationEvent.Train.artificialTrainId.menu.operation ) {
this.artificialTrainId();
}
},
//
destinationTrainId() {
this.$refs['form'].validate((valid) => {
if (valid) {
const operate = {
operation: OperationEvent.Train.destinationTrainId.menu.operation,
message: [`设目的地车:成功`],
val: ''
};
this.loading = true;
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
this.doClose();
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow();
});
} else {
return false;
}
});
},
//
setPlanTrainId() {
this.$refs['form'].validate((valid) => {
if (valid) {
const operate = {
operation: OperationEvent.Train.setPlanTrainId.menu.operation,
message: [`设计划车:成功`],
val: ''
};
this.loading = true;
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
this.doClose();
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow();
});
} else {
return false;
}
});
},
//
artificialTrainId() {
this.$refs['form'].validate((valid) => {
if (valid) {
const operate = {
operation: OperationEvent.Train.artificialTrainId.menu.operation,
message: [`设人工车:成功`],
val: ''
};
this.loading = true;
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
this.doClose();
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow();
});
} else {
return false;
}
});
},
cancel() {
const operate = {
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => {
this.doClose();
});
}
}
};
</script>
<style scoped>
.el-dialog-div {
height: 400px;
overflow: auto;
}
</style>

View File

@ -1,133 +0,0 @@
<template>
<el-dialog v-dialogDrag class="chengdou-03__systerm route-create" :title="title" :visible.sync="show" width="380px" label-position="top" :before-close="doClose" :z-index="2000" :modal="false" :close-on-click-modal="false">
<div style="padding: 10px 20px; border: 1px solid lightgray;">
<el-form size="small" label-width="100px">
<el-form-item label="列车:" prop="trainCode">
<el-select v-model="trainCode" filterable placeholder="列车">
<el-option
v-for="item in trainList"
:key="item.code"
:label="item.groupNumber"
:value="item.code"
/>
</el-select>
</el-form-item>
<el-form-item label="列车方向:" prop="direction">
<el-select v-model="direction" filterable placeholder="列车方向">
<el-option v-for="no in directionList" :key="no.value" :label="no.label" :value="no.value" />
</el-select>
<!-- <div style="font-size: 12px;">(上行路线车次号选择偶数下行路线车次号选择基数)</div> -->
</el-form-item>
</el-form>
<el-row>
<el-col style="text-align: right;">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
</div>
<notice-info ref="noticeInfo" pop-class="chengdou-03__systerm" />
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import CMD from '@/scripts/cmdPlugin/CommandEnum';
export default {
name: 'RouteCreate',
components: {
NoticeInfo
},
data() {
return {
dialogShow: false,
loading: false,
trainList: [],
trainNoList: [],
directionList: [
{
value: '2',
label: '上行'
},
{
value: '1',
label: '下行'
}
],
trainCode: '',
tripNumber: '',
direction: '',
selected: null
};
},
computed: {
...mapGetters('map', [
'map'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return OperationEvent.Section.newtrain.menu.domId;
},
title() {
return '设置列车';
}
},
methods: {
doShow(operate, selected) {
this.dialogShow = true;
this.selected = selected;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.trainCode = '';
this.direction = '';
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
commit() {
const operate = {
send: true,
operation: OperationEvent.Section.newtrain.menu.operation,
cmdType: CMD.Section.CMD_NEW_TRAIN,
val: '' + this.direction + '::' + this.trainCode
};
this.loading = true;
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow();
});
},
cancel() {
const operate = {
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => {
this.doClose();
});
}
}
};
</script>

View File

@ -1,181 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm stand-stop-time"
:title="title"
:visible.sync="show"
width="480px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<div class="el-dialog-div">
<el-form ref="form" size="small" label-width="80px" :model="addModel" :rules="rules" label-position="left">
<el-row>
<el-col :span="11">
<el-form-item prop="stationName">
<span slot="label">车站</span>
<el-input v-model="addModel.stationName" :disabled="true" />
</el-form-item>
</el-col>
<el-col :span="11" :offset="1">
<el-form-item prop="trainWindowCode">
<span slot="label">车次窗</span>
<el-input v-model="addModel.trainWindowCode" :disabled="true" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="11">
<el-form-item label="车 组 号:" prop="groupNumber">
<el-select v-model="addModel.groupNumber" filterable>
<el-option
v-for="train in trainList"
:key="train.groupNumber"
:label="train.groupNumber"
:value="train.groupNumber"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<el-row justify="center" class="button-group">
<el-col :span="10" :offset="2">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="4">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import CancelMouseState from '@/mixin/CancelMouseState';
export default {
name: 'TrainCreateNumber',
mixins: [
CancelMouseState
],
data() {
return {
trainNoList: [],
trainList: [],
selected: null,
addModel: {
stationName:'',
trainWindowCode: '',
groupNumber:''
},
rules: {
groupNumber: [
{ required: true, message: '请输入车组号', trigger: 'blur'}
]
},
dialogShow: false,
loading: false
};
},
computed: {
...mapGetters('map', [
'stationStandList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Train.editTrainNo.menu.domId : '';
},
title() {
return '新建车组号';
}
},
methods: {
loadInitData(map) {
},
doShow(operate, selected) {
this.selected = selected;
//
if (!this.dialogShow) {
this.addModel = {
stationName:'',
trainWindowCode: '',
groupNumber:''
};
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
this.$store.dispatch('map/setTrainWindowShow', false);
this.mouseCancelState(this.selected);
},
commit() {
this.$refs['form'].validate((valid) => {
if (valid) {
const operate = {
send: true,
operation: OperationEvent.Train.createTrainNo.menu.operation
};
this.loading = true;
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(() => {
this.loading = false;
this.doClose();
// this.$refs.noticeInfo.doShow();
});
} else {
return false;
}
});
},
cancel() {
const operate = {
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => { this.doClose(); });
}
}
};
</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;
}
.el-dialog-div {
height: 400px;
overflow: auto;
}
</style>

View File

@ -1,150 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm stand-stop-time"
:title="title"
:visible.sync="show"
width="320px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-form ref="form" size="small" label-width="90px" :model="addModel" :rules="rules">
<el-form-item label="车 组 号:" prop="groupNumber">
<el-input v-model="addModel.groupNumber" />
</el-form-item>
</el-form>
<el-row justify="center" class="button-group">
<el-col :span="10" :offset="2">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="4">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
<confirm-control ref="confirmControl" />
<notice-info ref="noticeInfo" pop-class="chengdou-03__systerm" />
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
// import { getPublishMapTrainNos } from '@/api/runplan';
import CancelMouseState from '@/mixin/CancelMouseState';
import ConfirmControl from './childDialog/confirmControl';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
export default {
name: 'TrainDelete',
components: {
ConfirmControl,
NoticeInfo
},
mixins: [
CancelMouseState
],
data() {
return {
trainNoList: [],
selected: null,
addModel: {
groupNumber: ''
},
rules: {
groupNumber: [
{ required: true, message: '请输入车组号', trigger: 'blur' }
]
},
operation: null,
dialogShow: false,
loading: false
};
},
computed: {
...mapGetters('map', [
'map'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Train.delTrainId.menu.domId : '';
},
title() {
return '删除列车识别号';
}
},
methods: {
loadInitData(map) {
if (map) {
// getPublishMapTrainNos(map.skinCode).then(response => {
// this.trainNoList = response.data;
// }).catch(() => {
// this.$messageBox(``);
// });
}
},
doShow(operate, selected) {
this.selected = selected;
//
if (!this.dialogShow) {
this.operation = operate.operation;
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
this.$store.dispatch('map/setTrainWindowShow', false);
mouseCancelState(this.selected);
},
commit() {
this.$refs['form'].validate((valid) => {
if (valid) {
const operate = {
send: true,
operation: OperationEvent.Train.delTrainId.menu.operation
};
this.loading = true;
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow();
});
} else {
return false;
}
});
},
cancel() {
const operate = {
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => { this.doClose(); });
}
}
};
</script>

View File

@ -1,176 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm stand-stop-time"
:title="title"
:visible.sync="show"
width="480px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<div class="el-dialog-div">
<el-form ref="form" size="small" label-width="80px" :model="addModel" label-position="left">
<el-row>
<el-col :span="11">
<el-form-item prop="stationName">
<span slot="label">车站</span>
<el-input v-model="addModel.stationName" :disabled="true" />
</el-form-item>
</el-col>
<el-col :span="11" :offset="1">
<el-form-item prop="trainWindowCode">
<span slot="label">车次窗</span>
<el-input v-model="addModel.trainWindowCode" :disabled="true" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="11">
<el-form-item label="车 组 号:" prop="groupNumber">
<el-select v-model="addModel.groupNumber" filterable disabled>
<el-option
v-for="train in trainList"
:key="train.groupNumber"
:label="train.groupNumber"
:value="train.groupNumber"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<el-row justify="center" class="button-group">
<el-col :span="10" :offset="2">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="4">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import CancelMouseState from '@/mixin/CancelMouseState';
export default {
name: 'TrainDeleteNumber',
mixins: [
CancelMouseState
],
data() {
return {
trainNoList: [],
trainList: [],
selected: null,
addModel: {
stationName:'',
trainWindowCode: '',
groupNumber:''
},
dialogShow: false,
loading: false
};
},
computed: {
...mapGetters('map', [
'stationStandList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Train.editTrainNo.menu.domId : '';
},
title() {
return '删除车组号';
}
},
methods: {
loadInitData(map) {
},
doShow(operate, selected) {
this.selected = selected;
//
if (!this.dialogShow) {
this.addModel = {
stationName:'',
trainWindowCode: '',
groupNumber:''
};
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
this.$store.dispatch('map/setTrainWindowShow', false);
this.mouseCancelState(this.selected);
},
commit() {
this.$refs['form'].validate((valid) => {
if (valid) {
const operate = {
send: true,
operation: OperationEvent.Train.deleteTrainNo.menu.operation
};
this.loading = true;
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(() => {
this.loading = false;
this.doClose();
// this.$refs.noticeInfo.doShow();
});
} else {
return false;
}
});
},
cancel() {
const operate = {
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => { this.doClose(); });
}
}
};
</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;
}
.el-dialog-div {
height: 400px;
overflow: auto;
}
</style>

View File

@ -1,378 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm stand-stop-time"
:title="title"
:visible.sync="show"
width="480px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<div class="el-dialog-div">
<el-tabs v-model="activeName" type="card" @tab-click="handleClick">
<el-tab-pane :id="domIdBasicInfo" label="基本信息" name="first">
<el-form ref="form" size="small" label-width="80px" :model="addModel" label-position="left">
<el-row>
<el-col :span="11">
<el-form-item prop="groupNumber">
<span slot="label">车组号</span>
<el-input v-model="addModel.groupNumber" :disabled="true" />
</el-form-item>
</el-col>
<el-col :span="11" :offset="1">
<el-form-item prop="type">
<span slot="label">服务类型</span>
<el-input v-model="addModel.type" :disabled="true" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="11">
<el-form-item prop="serviceNumber">
<span slot="label">服务号</span>
<el-input v-model="addModel.serviceNumber" :disabled="true" />
</el-form-item>
</el-col>
<el-col :span="11" :offset="1">
<el-form-item prop="trainCode">
<span slot="label">序列号</span>
<el-input v-model="addModel.trainCode" :disabled="true" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="11">
<el-form-item prop="driverCode">
<span slot="label">司机号</span>
<el-input v-model="addModel.driverCode" :disabled="true" />
</el-form-item>
</el-col>
<el-col :span="11" :offset="1">
<el-form-item prop="targetCode">
<span slot="label">目的地号</span>
<el-input v-model="addModel.targetCode" :disabled="true" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="11">
<el-form-item prop="stationName">
<span slot="label">车站</span>
<el-input v-model="addModel.stationName" :disabled="true" />
</el-form-item>
</el-col>
<el-col :span="11" :offset="1">
<el-form-item prop="sectionCode">
<span slot="label">轨道</span>
<el-input v-model="addModel.sectionCode" :disabled="true" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="11">
<el-form-item prop="nextStation">
<span slot="label">下一站</span>
<el-input v-model="addModel.nextStation" :disabled="true" />
</el-form-item>
</el-col>
<el-col :span="11" :offset="1">
<el-form-item prop="targetName">
<span slot="label">目的地</span>
<el-input v-model="addModel.targetName" :disabled="true" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="11">
<el-form-item prop="trackingMode">
<span slot="label">跟踪模式</span>
<el-input v-model="addModel.trackingMode" :disabled="true" />
</el-form-item>
</el-col>
<el-col :span="11" :offset="1">
<el-form-item prop="runStatus">
<span slot="label">运行状态</span>
<el-input v-model="addModel.runStatus" :disabled="true" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="11">
<el-form-item prop="departureTime">
<span slot="label">出发时刻</span>
<el-input v-model="addModel.departureTime" :disabled="true" />
</el-form-item>
</el-col>
<el-col :span="11" :offset="1">
<el-form-item prop="arrivedTime">
<span slot="label">到达时刻</span>
<el-input v-model="addModel.arrivedTime" :disabled="true" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="11">
<el-form-item prop="planDeviation">
<span slot="label">计划偏离</span>
<el-input v-model="addModel.planDeviation" :disabled="true" />
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-tab-pane>
<el-tab-pane :id="domIdMarshalInfo" label="编组信息" name="second">
<el-form ref="form" size="small" label-width="80px" :model="addModel" label-position="left">
<el-row>
<el-col :span="11">
<el-form-item prop="marshallingNo">
<span slot="label">编组号</span>
<el-input v-model="addModel.marshallingNo" :disabled="true" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="11">
<el-form-item prop="carNo1">
<span slot="label">车头号1</span>
<el-input v-model="addModel.carNo1" :disabled="true" />
</el-form-item>
</el-col>
<el-col :span="11" :offset="1">
<el-form-item prop="carNo2">
<span slot="label">车头号2</span>
<el-input v-model="addModel.carNo2" :disabled="true" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-table :data="tableData" style="width: 100%" height="250">
<el-table-column prop="carriage" label="车厢" width="80" />
<el-table-column prop="carriageNumber" label="车厢号" width="80" />
</el-table>
</el-tab-pane>
<el-tab-pane :id="domIdAtpInfo" label="ATP信息" name="third">
<el-form ref="form" size="small" label-width="80px" :model="addModel" label-position="left">
<el-row>
<el-col :span="11">
<el-form-item prop="trainId">
<span slot="label">车载ID</span>
<el-input v-model="addModel.trainId" :disabled="true" />
</el-form-item>
</el-col>
<el-col :span="11" :offset="1">
<el-form-item prop="directionType">
<span slot="label">运行方向</span>
<el-input v-model="addModel.directionType" :disabled="true" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="11">
<el-form-item prop="drivingMode">
<span slot="label">驾驶模式</span>
<el-input v-model="addModel.drivingMode" :disabled="true" />
</el-form-item>
</el-col>
<el-col :span="11" :offset="1">
<el-form-item prop="speed">
<span slot="label">速度</span>
<el-input v-model="addModel.speed" :disabled="true" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="11">
<el-form-item prop="stopQuasiState">
<span slot="label">停准状态</span>
<el-input v-model="addModel.stopQuasiState" :disabled="true" />
</el-form-item>
</el-col>
<el-col :span="11" :offset="1">
<el-form-item prop="doorStatus">
<span slot="label">车门状态</span>
<el-input v-model="addModel.doorStatus" :disabled="true" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="11">
<el-form-item prop="runLevel">
<span slot="label">运行等级</span>
<el-input v-model="addModel.runLevel" :disabled="true" />
</el-form-item>
</el-col>
<el-col :span="11" :offset="1">
<el-form-item prop="stopState">
<span slot="label">停跳状态</span>
<el-input v-model="addModel.stopState" :disabled="true" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="11">
<el-form-item prop="position">
<span slot="label">车头位置</span>
<el-input v-model="addModel.position" :disabled="true" />
</el-form-item>
</el-col>
<el-col :span="11" :offset="1">
<el-form-item prop="loadingRate">
<span slot="label">载重率</span>
<el-input v-model="addModel.loadingRate" :disabled="true" />
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-tab-pane>
<el-tab-pane :id="domIdCarAlarm" label="车辆报警" name="fourth" />
</el-tabs>
</div>
<el-row justify="center" class="button-group">
<el-col :span="4" :offset="19">
<el-button :id="domIdCancel" @click="cancel">退出</el-button>
</el-col>
</el-row>
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import CancelMouseState from '@/mixin/CancelMouseState';
export default {
name: 'TrainDetailInfo',
mixins: [
CancelMouseState
],
data() {
return {
trainNoList: [],
trainList: [],
selected: null,
addModel: {
stationName:'',
groupNumber:'',
type:'',
serviceNumber:'',
trainCode:'',
driverCode:'',
targetCode:'',
sectionCode:'',
nextStation:'',
targetName:'',
trackingMode:'',
runStatus:'',
departureTime:'',
arrivedTime:'',
planDeviation:'',
marshallingNo:'',
carNo1:'',
carNo2:'',
trainId:'',
directionType:'',
drivingMode:'',
speed:'',
stopQuasiState:'',
doorStatus:'',
runLevel:'',
stopState:'',
position:'',
loadingRate:''
},
activeName:'first',
dialogShow: false,
loading: false,
tableData:[
{carriage:'1', carriageNumber:'101'},
{carriage:'2', carriageNumber:'102'},
{carriage:'3', carriageNumber:'103'},
{carriage:'4', carriageNumber:'104'},
{carriage:'5', carriageNumber:'105'},
{carriage:'6', carriageNumber:'106'}
]
};
},
computed: {
...mapGetters('map', [
'stationStandList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdCarAlarm() {
return this.dialogShow ? OperationEvent.Train.detailTrainInfo.carAlarm.domId : '';
},
domIdBasicInfo() {
return this.dialogShow ? OperationEvent.Train.detailTrainInfo.basicInfo.domId : '';
},
domIdMarshalInfo() {
return this.dialogShow ? OperationEvent.Train.detailTrainInfo.marshalInfo.domId : '';
},
domIdAtpInfo() {
return this.dialogShow ? OperationEvent.Train.detailTrainInfo.atpInfo.domId : '';
},
title() {
return '列车信息显示';
}
},
methods: {
doShow(operate, selected) {
this.selected = selected;
//
if (!this.dialogShow) {
this.addModel = {
stationName:'',
tripNumber: '',
groupNumber:''
};
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
this.$store.dispatch('map/setTrainWindowShow', false);
this.mouseCancelState(this.selected);
},
handleClick() {
},
cancel() {
const operate = {
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => { this.doClose(); });
}
}
};
</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;
}
.el-dialog-div {
height: 400px;
overflow: auto;
}
</style>

View File

@ -1,174 +0,0 @@
<template>
<el-dialog v-dialogDrag class="chengdou-03__systerm stand-stop-time" :title="title" :visible.sync="show" width="480px" :before-close="doClose" :z-index="2000" :modal="false" :close-on-click-modal="false">
<div class="el-dialog-div">
<el-form ref="form" size="small" label-width="80px" :model="addModel" :rules="rules" label-position="left">
<el-form-item>
<el-col :span="11">
<el-form-item prop="stationName">
<span slot="label">车站</span>
<el-input v-model="addModel.stationName" :disabled="true" />
</el-form-item>
</el-col>
<el-col :span="11" :offset="1">
<el-form-item prop="trainWindowCode">
<span slot="label">车次窗</span>
<el-input v-model="addModel.trainWindowCode" :disabled="true" />
</el-form-item>
</el-col>
</el-form-item>
<el-row>
<el-col :span="11">
<el-form-item label="旧车组号" prop="oldGroupNumber">
<el-select v-model="addModel.oldGroupNumber" filterable disabled>
<el-option v-for="train in trainList" :key="train.oldGroupNumber" :label="train.oldGroupNumber" :value="train.oldGroupNumber" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="11" :offset="1">
<el-form-item label="新车组号" prop="newGroupNumber">
<el-select v-model="addModel.newGroupNumber">
<el-option v-for="train in trainList" :key="train.newGroupNumber" :label="train.newGroupNumber" :value="train.newGroupNumber" />
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<el-row justify="center" class="button-group-train">
<el-col :span="10" :offset="2">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="4">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import CancelMouseState from '@/mixin/CancelMouseState';
export default {
name: 'TrainEditNumber',
mixins: [
CancelMouseState
],
data() {
return {
trainNoList: [],
trainList: [],
selected: null,
addModel: {
stationName: '',
trainWindowCode: '',
oldGroupNumber: '',
newGroupNumber: ''
},
rules: {
newGroupNumber: [
{ required: true, message: '请输入新车组号', trigger: 'blur'}
]
},
dialogShow: false,
loading: false
};
},
computed: {
...mapGetters('map', [
'stationStandList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Train.editTrainNo.menu.domId : '';
},
title() {
return '修改车组号';
}
},
methods: {
loadInitData(map) {
},
doShow(operate, selected) {
this.selected = selected;
//
if (!this.dialogShow) {
this.addModel = {
stationName: '',
trainWindowCode: '',
oldGroupNumber: '',
newGroupNumber: ''
};
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
this.$store.dispatch('map/setTrainWindowShow', false);
this.mouseCancelState(this.selected);
},
commit() {
this.$refs['form'].validate((valid) => {
if (valid) {
const operate = {
send: true,
operation: OperationEvent.Train.editTrainNo.menu.operation
};
this.loading = true;
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(() => {
this.loading = false;
this.doClose();
});
} else {
return false;
}
});
},
cancel() {
const operate = {
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => { this.doClose(); });
}
}
};
</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;
}
.el-dialog-div {
height: 400px;
overflow: auto;
}
</style>

View File

@ -1,200 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm stand-stop-time"
:title="title"
:visible.sync="show"
width="640px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-form ref="form" size="small" label-width="80px" :model="addModel" :rules="rules">
<div style="width: 46%;">
<el-form-item label="车 组 号:" label-width="95px" prop="tripNumber">
<el-input v-model="addModel.tripNumber" disabled />
</el-form-item>
</div>
<div style="overflow: hidden;">
<div
style="width: 48%; float: left; padding: 10px 15px; border: 1px double lightgray; margin: 20px 0px; height: 120px; margin-right: 4%;"
>
<span class="base-label">源车次窗</span>
<div style="position: relative; top:-10px;">
<el-form-item prop="stationStandSource">
<span slot="label">&emsp; :</span>
<el-select v-model="addModel.stationStandSource" filterable placeholder="请选择">
<el-option
v-for="item in stationStandList"
:key="item.code"
:label="item.name"
:value="item.code"
/>
</el-select>
</el-form-item>
<el-form-item label="车 次 窗:" prop="trainSource">
<el-input v-model="addModel.trainSource" />
</el-form-item>
</div>
</div>
<div
style="width: 48%; float: left; padding: 10px 15px; border: 1px double lightgray; margin: 20px 0px; height: 120px;"
>
<span class="base-label">目的车次窗</span>
<div style="position: relative; top:-10px;">
<el-form-item prop="stationStandGoal">
<span slot="label">&emsp; :</span>
<el-select v-model="addModel.stationStandGoal" filterable placeholder="请选择">
<el-option
v-for="item in stationStandList"
:key="item.code"
:label="item.name"
:value="item.code"
/>
</el-select>
</el-form-item>
<el-form-item label="车 次 窗:" prop="trainGoal">
<el-input v-model="addModel.trainGoal" />
</el-form-item>
</div>
</div>
</div>
</el-form>
<el-row justify="center" class="button-group">
<el-col :span="10" :offset="2">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="4">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import CancelMouseState from '@/mixin/CancelMouseState';
export default {
name: 'TrainMove',
mixins: [
CancelMouseState
],
data() {
return {
trainNoList: [],
selected: null,
addModel: {
tripNumber: '',
trainSource: '',
stationStandSource: '',
trainGoal: '',
stationStandGoal: ''
},
rules: {
tripNumber: [
{ required: true, message: '请输入车组号', trigger: 'blur' }
],
trainSource: [
{ required: true, message: '请输入车次号', trigger: 'blur' }
],
stationStandSource: [
{ required: true, message: '请选择车站', trigger: 'change' }
],
trainGoal: [
{ required: true, message: '请输入车次号', trigger: 'blur' }
],
stationStandGoal: [
{ required: true, message: '请选择车站', trigger: 'change' }
]
},
dialogShow: false,
loading: false
};
},
computed: {
...mapGetters('map', [
'stationStandList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Train.moveTrainId.menu.domId : '';
},
title() {
return '移动列车识别号';
}
},
methods: {
doShow(operate, selected) {
this.selected = selected;
//
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
this.$store.dispatch('map/setTrainWindowShow', false);
this.mouseCancelState(this.selected);
},
commit() {
this.$refs['form'].validate((valid) => {
if (valid) {
const operate = {
send: true,
operation: OperationEvent.Train.moveTrainId.menu.operation
};
this.loading = true;
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(() => {
this.loading = false;
this.doClose();
// this.$refs.noticeInfo.doShow();
});
} else {
return false;
}
});
},
cancel() {
const operate = {
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => { this.doClose(); });
}
}
};
</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;
}
</style>

View File

@ -1,193 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm stand-stop-time"
:title="title"
:visible.sync="show"
width="480px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<div class="el-dialog-div">
<el-form ref="form" size="small" label-width="90px" :model="addModel" label-position="left">
<el-row>
<el-col :span="11">
<el-form-item prop="stationName">
<span slot="label">车站</span>
<el-input v-model="addModel.stationName" :disabled="true" />
</el-form-item>
</el-col>
<el-col :span="11" :offset="1">
<el-form-item prop="trainWindowCode">
<span slot="label">车次窗</span>
<el-input v-model="addModel.trainWindowCode" :disabled="true" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="11">
<el-form-item label="车 组 号:" prop="groupNumber">
<el-select v-model="addModel.groupNumber" filterable disabled>
<el-option
v-for="train in trainList"
:key="train.groupNumber"
:label="train.groupNumber"
:value="train.groupNumber"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="11">
<el-form-item prop="purposeStationName">
<span slot="label">车站</span>
<el-input v-model="addModel.purposeStationName" :disabled="true" />
</el-form-item>
</el-col>
<el-col :span="11" :offset="1">
<el-form-item prop="purposeTrainWindowCode">
<span slot="label">目的车次窗</span>
<el-input v-model="addModel.purposeTrainWindowCode" :disabled="true" />
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<el-row justify="center" class="button-group">
<el-col :span="10" :offset="2">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="4">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import CancelMouseState from '@/mixin/CancelMouseState';
export default {
name: 'TrainMoveNumber',
mixins: [
CancelMouseState
],
data() {
return {
trainNoList: [],
trainList: [],
selected: null,
addModel: {
stationName: '',
trainWindowCode: '',
groupNumber: '',
purposeStationName: '',
purposeTrainWindowCode: ''
},
dialogShow: false,
loading: false
};
},
computed: {
...mapGetters('map', [
'stationStandList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Train.editTrainNo.menu.domId : '';
},
title() {
return '移动车组号';
}
},
methods: {
loadInitData(map) {
},
doShow(operate, selected) {
this.selected = selected;
//
if (!this.dialogShow) {
this.addModel = {
stationName: '',
trainWindowCode: '',
groupNumber: '',
purposeStationName: '',
purposeTrainWindowCode: ''
};
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
this.$store.dispatch('map/setTrainWindowShow', false);
this.mouseCancelState(this.selected);
},
commit() {
this.$refs['form'].validate((valid) => {
if (valid) {
const operate = {
send: true,
operation: OperationEvent.Train.moveTrainNo.menu.operation
};
this.loading = true;
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(() => {
this.loading = false;
this.doClose();
// this.$refs.noticeInfo.doShow();
});
} else {
return false;
}
});
},
cancel() {
const operate = {
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => { this.doClose(); });
}
}
};
</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;
}
.el-dialog-div {
height: 400px;
overflow: auto;
}
</style>

View File

@ -1,209 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm stand-stop-time"
:title="title"
:visible.sync="show"
width="640px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-form ref="form" size="small" label-width="80px" :model="addModel" :rules="rules">
<div style="overflow: hidden;">
<div
style="width: 48%; float: left; padding: 10px 15px; border: 1px double lightgray; margin: 20px 0px; height: 177px; margin-right: 4%;"
>
<span class="base-label">源车次窗</span>
<div style="position: relative; top:-10px;">
<el-form-item label="车 组 号:" prop="trainNumberSource">
<el-input v-model="addModel.trainNumberSource" />
</el-form-item>
<el-form-item prop="stationStandSource">
<span slot="label">&emsp; :</span>
<el-select v-model="addModel.stationStandSource" filterable placeholder="请选择">
<el-option
v-for="item in stationStandList"
:key="item.code"
:label="item.name"
:value="item.code"
/>
</el-select>
</el-form-item>
<el-form-item label="车 次 窗:" prop="trainSource">
<el-input v-model="addModel.trainSource" />
</el-form-item>
</div>
</div>
<div
style="width: 48%; float: left; padding: 10px 15px; border: 1px double lightgray; margin: 20px 0px; height: 177px;"
>
<span class="base-label">目的车次窗</span>
<div style="position: relative; top:-10px;">
<el-form-item label="车 组 号:" prop="trainNumberGoal">
<el-input v-model="addModel.trainNumberGoal" />
</el-form-item>
<el-form-item prop="stationStandGoal">
<span slot="label">&emsp; :</span>
<el-select v-model="addModel.stationStandGoal" filterable placeholder="请选择">
<el-option
v-for="item in stationStandList"
:key="item.code"
:label="item.name"
:value="item.code"
/>
</el-select>
</el-form-item>
<el-form-item label="车 次 窗:" prop="trainGoal">
<el-input v-model="addModel.trainGoal" />
</el-form-item>
</div>
</div>
</div>
</el-form>
<el-row justify="center" class="button-group">
<el-col :span="10" :offset="2">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="4">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import CancelMouseState from '@/mixin/CancelMouseState';
export default {
name: 'TrainSwitch',
mixins: [
CancelMouseState
],
data() {
return {
trainNoList: [],
selected: null,
addModel: {
trainNumberSource: '',
trainSource: '',
stationStandSource: '',
trainGoal: '',
stationStandGoal: '',
trainNumberGoal: ''
},
rules: {
trainNumberSource: [
{ required: true, message: '请输入车组号', trigger: 'blur' }
],
trainSource: [
{ required: true, message: '请输入车次号', trigger: 'blur' }
],
stationStandSource: [
{ required: true, message: '请选择车站', trigger: 'change' }
],
trainNumberGoal: [
{ required: true, message: '请输入车组号', trigger: 'blur' }
],
trainGoal: [
{ required: true, message: '请输入车次号', trigger: 'blur' }
],
stationStandGoal: [
{ required: true, message: '请选择车站', trigger: 'change' }
]
},
dialogShow: false,
loading: false
};
},
computed: {
...mapGetters('map', [
'stationStandList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Train.moveTrainId.menu.domId : '';
},
title() {
return '移动列车识别号';
}
},
methods: {
doShow(operate, selected) {
this.selected = selected;
//
if (!this.dialogShow) {
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
this.$store.dispatch('map/setTrainWindowShow', false);
this.mouseCancelState(this.selected);
},
commit() {
this.$refs['form'].validate((valid) => {
if (valid) {
const operate = {
send: true,
operation: OperationEvent.Train.moveTrainId.menu.operation
};
this.loading = true;
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(error => {
this.loading = false;
this.doClose();
console.error(error);
// this.$refs.noticeInfo.doShow();
});
} else {
return false;
}
});
},
cancel() {
const operate = {
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(error => { this.doClose(); });
}
}
};
</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;
}
</style>

View File

@ -1,364 +0,0 @@
<template>
<div class="menus" :style="{width: width + 'px'}">
<!--<menu-bar v-show="isShowBar" ref="menuBar" :selected="selected" />-->
<menu-button ref="menuButton" :selected="selected" />
<menu-station-stand ref="menuStationStand" :selected="selected" />
<menu-switch ref="menuSwitch" :selected="selected" />
<menu-signal ref="menuSignal" :selected="selected" />
<menu-section ref="menuSection" :selected="selected" />
<menu-train ref="menuTrain" :selected="selected" />
<menu-station ref="menuStation" :selected="selected" />
<passive-alarm ref="passiveAlarm" />
<passive-contorl ref="passiveControl" pop-class="chengdou-03__systerm" />
<passive-Timeout ref="passiveTimeout" />
</div>
</template>
<script>
import { mapGetters } from 'vuex';
import MenuSignal from './menuSignal';
import MenuButton from './menuButton';
import MenuStationStand from './menuStationStand';
import MenuSwitch from './menuSwitch';
import MenuSection from './menuSection';
import MenuTrain from './menuTrain';
import MenuStation from './menuStation';
import MenuBar from './menuBar';
import PassiveAlarm from './passiveDialog/alarm';
import PassiveContorl from '@/jmapNew/theme/components/menus/passiveDialog/control';
import PassiveTimeout from './passiveDialog/timeout';
export default {
name: 'Menus',
components: {
MenuBar,
MenuButton,
MenuSignal,
MenuSwitch,
MenuSection,
MenuStationStand,
MenuStation,
MenuTrain,
PassiveAlarm,
PassiveContorl,
PassiveTimeout
},
props: {
selected: {
type: Object,
default() {
return null;
}
}
},
computed: {
...mapGetters('config', [
'width'
]),
isShowBar() {
return this.$store.state.training.prdType && this.$store.state.training.prdType !== '07';
}
},
watch: {
isShowBar(val) {
val && this.$store.dispatch('config/updateMenuBar');
}
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('config/updateMenuBar');
const _that = this;
window.onclick = function (e) {
if (!_that.$store.state.training.trainingStart) {
_that.$refs.menuBar && _that.$refs.menuBar.blankClickClose();
}
_that.$refs.menuStationStand.doClose();
_that.$refs.menuSwitch.doClose();
_that.$refs.menuSignal.doClose();
_that.$refs.menuSection.doClose();
_that.$refs.menuTrain.doClose();
_that.$refs.menuStation.doClose();
};
});
},
beforeDestroy() {
window.onclick = function (e) {};
}
};
</script>
<style>
.menus .pop-menu {
background: #F0F0F0;
}
.menus .pop-menu span {
color: #000;
}
.menus .pop-menu .is-disabled span {
color: #B4B3B8;
}
.chengdou-03__systerm {
overflow: hidden !important;
}
.chengdou-03__systerm .el-dialog {
background: #0055E8;
box-shadow: 1px hsla(240, 0%, 100%, 0.5) inset;
border: 1px solid rgb(69, 134, 247);
border-radius: 6px;
font-size: 13px !important;
color: #000;
}
.chengdou-03__systerm .el-dialog span {
font-size: 13px !important;
line-height: 22px;
}
.chengdou-03__systerm .el-dialog span .el-icon-arrow-up{
line-height: 18px;
}
.chengdou-03__systerm .el-dialog .el-dialog__footer {
background: #ECE9D8;
opacity: 1;
}
.chengdou-03__systerm .el-dialog .el-dialog__body {
padding: 20px;
margin: 0px 3px 3px;
border: 2px solid rgba(120, 121, 123, 0.5);
box-shadow: 1px hsla(240, 0%, 100%, 0.5) inset;
background: #ECE9D8;
opacity: 1;
}
.chengdou-03__systerm .el-dialog .el-dialog__title {
font-size: 16px;
color: #fff;
position: absolute;
top: 4px;
left: 7px;
}
.chengdou-03__systerm .el-dialog .el-dialog__headerbtn {
background: linear-gradient(#CD98A0, #C27D6E, #B63022, #C68770);
border: 1px solid #fff;
border-radius: 4px;
top: 6px;
right: 3px;
line-height: 16px;
}
.chengdou-03__systerm .el-dialog .el-dialog__headerbtn .el-icon-close:before {
font-size: 16px;
}
.chengdou-03__systerm .el-dialog .el-dialog__headerbtn .el-dialog__close {
color: #fff;
}
.chengdou-03__systerm .el-dialog .el-button {
height: 24px;
line-height: 22px;
padding: 0px;
width: 80px;
border: 2px outset #E2E2E2;
border-radius: 4px !important;
color: #000;
background: #F0F0F0;
}
.chengdou-03__systerm .el-dialog .expand {
width: 120px;
}
.chengdou-03__systerm .el-dialog .el-button:focus span {
border: 1px dashed gray;
}
.chengdou-03__systerm .el-dialog .el-button:active {
border: 2px inset #E2E2E2;
}
.chengdou-03__systerm .el-dialog .el-button:disabled {
border: 2px inset #E2E2E2;
}
.chengdou-03__systerm .el-dialog .el-button:disabled span {
border: 0px;
}
.chengdou-03__systerm .el-dialog .el-input {
border: 2px inset #E9E9E9;
height: 22px !important;
line-height: 22px !important;
}
.chengdou-03__systerm .el-dialog .el-input__inner {
color: #000;
background: #fff !important;
border: 0px;
border-radius: 0px !important;
box-sizing: border-box;
height: 22px !important;
line-height: 22px !important;
}
.chengdou-03__systerm .el-dialog .el-input.is-disabled .el-input__inner {
background: #F0F0F0 !important;
}
.chengdou-03__systerm .el-dialog .el-textarea {
border: 2px inset #E9E9E9;
border-radius: 0px;
}
.chengdou-03__systerm .el-dialog .el-textarea .el-textarea__inner {
color: #000;
background: #fff !important;
border: 0px;
border-radius: 0px !important;
box-sizing: border-box;
}
.chengdou-03__systerm .el-dialog .el-textarea.is-disabled .el-textarea__inner {
background: #F0F0F0 !important;
}
.chengdou-03__systerm .el-dialog .el-table--border th.gutter {
background: #EBEADB !important;
}
.chengdou-03__systerm .el-dialog .el-table {
border: 2px inset #E9E9E9;
color: #000 !important;
}
.chengdou-03__systerm .el-dialog .el-table .cell {
height: 22px;
line-height: 22px;
}
.chengdou-03__systerm .el-dialog .el-table th.is-leaf {
background: #F0F0F0 !important;
border-right: 1px solid #BDBDBD !important;
border-bottom: 1px solid #BDBDBD !important;
color: #000 !important;
height: 20px !important;
padding: 0px;
}
.chengdou-03__systerm .el-dialog .el-table tr td {
height: 20px !important;
padding: 0px;
}
.chengdou-03__systerm .el-dialog .el-table .el-table__empty-text {
top: 15px !important;
}
.chengdou-03__systerm .el-dialog .current-row>td {
background: #3399FF !important;
color: #fff !important;
}
.chengdou-03__systerm .el-dialog .el-checkbox__inner {
border: 1px inset #dcdfe6 !important;
}
.chengdou-03__systerm .el-dialog .el-checkbox__label {
color: #000 !important;
}
.chengdou-03__systerm .el-dialog .el-checkbox.is-disabled .el-checkbox__inner {
background: #E6E6E6 !important;
}
.chengdou-03__systerm .el-dialog .el-checkbox.is-disabled .el-checkbox__label {
color: #C5C9CC !important;
}
.chengdou-03__systerm .el-dialog .el-checkbox__input.is-checked .el-checkbox__inner {
background: #fff !important;
border: 1px inset #dcdfe6 !important;
}
.chengdou-03__systerm .el-dialog .el-checkbox__input.is-checked .el-checkbox__inner::after {
position: absolute;
-webkit-box-sizing: content-box;
box-sizing: content-box;
content: "";
border: 1px solid #000;
border-left: 0;
border-top: 0;
height: 7px;
left: 4px;
top: 1px;
}
.chengdou-03__systerm .el-dialog .el-radio__inner {
border: 1px inset #dcdfe6 !important;
}
.chengdou-03__systerm .el-dialog .el-radio__label {
color: #000 !important;
}
.chengdou-03__systerm .el-dialog .el-radio__input.is-checked .el-radio__inner {
background: #fff !important;
border: 1px inset #dcdfe6 !important;
}
.chengdou-03__systerm .el-dialog .el-radio__input.is-checked .el-radio__inner::after {
width: 4px;
height: 4px;
border-radius: 100%;
background-color: #000 !important;
position: absolute;
left: 50%;
top: 50%;
}
.chengdou-03__systerm .el-dialog .el-radio.is-disabled .el-radio__inner {
background: #E6E6E6 !important;
}
.chengdou-03__systerm .el-dialog .el-radio.is-disabled .el-radio__label {
color: #C5C9CC !important;
}
.chengdou-03__systerm .el-dialog .base-label {
background: rgba(0, 0, 0, x);
position: relative;
left: -15px;
top: -18px;
}
.chengdou-03__systerm .el-dialog .el-form-item label {
font-weight: normal !important;
color: #000 !important;
}
.chengdou-03__systerm .el-dialog .context {
height: 100px;
border: 2px inset #E2E2E2;
overflow-y: scroll;
}
.chengdou-03__systerm .el-dialog .table {
margin-top: 10px;
}
.chengdou-03__systerm .el-dialog .notice {
margin-left: 62px;
line-height: 30px;
}
.chengdou-03__systerm .el-dialog .button-group {
margin-top: 20px;
}
</style>

View File

@ -1,685 +0,0 @@
<template>
<div id="menuBarChengdu3">
<menu-bar ref="menuBar" :menu-normal="menuNormal" style="width:100%" />
<station-control-convert ref="stationControlConvert" />
<password-box ref="passwordBox" @setLoginResult="getLoginResult" />
<view-name ref="viewName" />
<train-add ref="trainAdd" />
<train-transtalet ref="trainTranstalet" />
<train-delete ref="trainDelete" />
<manage-user ref="manageUser" />
<help-about ref="helpAbout" />
<set-limit-speed ref="setLimitSpeed" />
</div>
</template>
<script>
import { mapGetters } from 'vuex';
import MenuBar from '@/jmapNew/theme/components/menus/menuBar';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import StationControlConvert from './menuDialog/stationControlConvert';
import TrainAdd from './menuDialog/trainAdd';
import TrainTranstalet from './menuDialog/trainTranstalet';
import TrainDelete from './menuDialog/trainDelete';
import PasswordBox from './menuDialog/passwordBox';
import ViewName from './menuDialog/viewName';
import ManageUser from './menuDialog/manageUser';
import HelpAbout from './menuDialog/helpAbout';
import SetLimitSpeed from './menuDialog/setLimitSpeed';
export default {
name: 'MenuBarChengdu03',
components: {
MenuBar,
StationControlConvert,
PasswordBox,
ViewName,
TrainAdd,
TrainTranstalet,
TrainDelete,
ManageUser,
HelpAbout,
SetLimitSpeed
},
data() {
return {
menuNormal: {
Local: [
{
title: '系统',
// operate: OperationEvent.Command.mBar.system,
operate: '',
children: [
{
title: '登录',
click: this.undeveloped
},
{
title: '注销',
click: this.undeveloped
},
{
type: 'separator'
},
{
title: '连接主用中心',
click: this.undeveloped
},
{
title: '连接备用中心',
click: this.undeveloped
},
{
type: 'separator'
},
{
title: '退出',
click: this.undeveloped
}
]
},
{
title: '临时限速',
operate: OperationEvent.Command.mBar.limitSpeed,
children: [
{
title: '设置临时限速',
operate: OperationEvent.Section.setLimitSpeed,
click: this.setLimitSpeed
},
{
title: '取消临时限速',
operate: OperationEvent.Section.cancelSpeed,
click: this.cancleLimitSpeed
}
]
},
{
title: '查看',
// operate: OperationEvent.Command.mBar.check,
operate: '',
children: [
{
title: '运行图',
click: this.undeveloped
},
{
title: '报告分析',
click: this.undeveloped
},
{
type: 'separator'
},
{
title: '视图',
click: this.undeveloped,
operate: '',
children: [{
title: '报警',
click: this.undeveloped
},
{
title: '列车运行信息',
click: this.undeveloped
},
{
title: '设备状态',
click: this.undeveloped
},
{
title: '列车详细信息',
click: this.undeveloped
},
{
title: '站台详细信息',
click: this.undeveloped
}]
},
{
title: '终端站发车列表',
click: this.undeveloped
},
{
title: '详细设备状态',
click: this.undeveloped
},
{
title: '查找列车',
click: this.undeveloped
},
{
type: 'separator'
},
{
title: '显示目的地号',
click: this.undeveloped
},
{
title: '显示轨道名',
click: this.undeveloped
},
{
title: '显示道岔名',
click: this.undeveloped
},
{
title: '显示信号机名',
click: this.undeveloped
},
{
title: '显示车次窗位置',
click: this.undeveloped
},
{
type: 'separator'
},
{
title: '显示车次号',
click: this.undeveloped
},
{
title: '显示车组号',
click: this.undeveloped
},
{
type: 'separator'
},
{
title: '全屏',
click: this.undeveloped
},
{
title: '放大',
click: this.undeveloped
},
{
title: '缩小',
click: this.undeveloped
},
{
title: '恢复',
click: this.undeveloped
}
]
},
// {
// title: '',
// operate: '',
// children: [
// ]
// },
{
title: '显示',
// operate: OperationEvent.Command.mBar.view,
operate: '',
hide: true,
children: [
{
title: '设置列车识别号显示',
click: this.setTrainIdDisplay,
operate: OperationEvent.Command.view.setTrainIdDisplay
},
{
title: '设置名称显示',
click: this.setNameDisplay,
operate: OperationEvent.Command.view.setNameDisplay
},
{
title: '设置设备显示',
click: this.setDeviceDisplay,
operate: OperationEvent.Command.view.setDeviceDisplay
}
]
},
{
title: 'ATS终端操作',
operate: '',
children: [
{
title: '当天运行车计划',
click: this.undeveloped
},
{
title: '出入库预告',
click: this.undeveloped
}
]
},
{
title: '计划车操作',
operate: '',
children: [
{
title: '添加计划车',
click: this.undeveloped
},
{
title: '平移计划车',
click: this.undeveloped
},
{
title: '删除计划车',
click: this.undeveloped
}
]
},
{
title: '批处理命令',
operate: '',
children: [
{
title: '全线扣车',
click: this.undeveloped
},
{
title: '取消全线扣车',
click: this.undeveloped
},
{
title: '取消上行全线扣车',
click: this.undeveloped
},
{
title: '取消下行全线扣车',
click: this.undeveloped
}
]
},
{
title: '信息管理',
operate: '',
children: [
{
title: '调度日志',
click: this.undeveloped
},
{
title: '调度留言提醒',
click: this.undeveloped
},
{
title: '报警设置',
click: this.undeveloped
}
]
},
{
title: '帮助',
operate: '',
children: [
{
title: '关于ITS GPC 工作站',
click: this.about,
operate: OperationEvent.Command.help.about
}
]
}
],
Center: [
{
title: '系统',
operate: OperationEvent.Command.mBar.system,
children: [
{
title: '登录',
click: this.undeveloped
},
{
title: '注销',
click: this.undeveloped
},
{
type: 'separator'
},
{
title: '连接主用中心',
click: this.undeveloped
},
{
title: '连接备用中心',
click: this.undeveloped
},
{
type: 'separator'
},
{
title: '退出',
click: this.undeveloped
}
]
},
{
title: '临时限速',
operate: OperationEvent.Command.mBar.limitSpeed,
children: [
{
title: '设置临时限速',
operate: OperationEvent.Section.setLimitSpeed,
click: this.setLimitSpeed
},
{
title: '取消临时限速',
operate: OperationEvent.Section.cancelSpeed,
click: this.cancleLimitSpeed
}
]
},
{
title: '查看',
operate: OperationEvent.Command.mBar.check,
children: [
{
title: '运行图',
click: this.undeveloped
},
{
title: '报告分析',
click: this.undeveloped
},
{
type: 'separator'
},
{
title: '视图',
click: this.undeveloped,
operate: '',
children: [{
title: '报警',
click: this.undeveloped
},
{
title: '列车运行信息',
click: this.undeveloped
},
{
title: '设备状态',
click: this.undeveloped
},
{
title: '列车详细信息',
click: this.undeveloped
},
{
title: '站台详细信息',
click: this.undeveloped
}]
},
{
title: '终端站发车列表',
click: this.undeveloped
},
{
title: '详细设备状态',
click: this.undeveloped
},
{
title: '查找列车',
click: this.undeveloped
},
{
type: 'separator'
},
{
title: '显示目的地号',
click: this.undeveloped
},
{
title: '显示轨道名',
click: this.undeveloped
},
{
title: '显示道岔名',
click: this.undeveloped
},
{
title: '显示信号机名',
click: this.undeveloped
},
{
title: '显示车次窗位置',
click: this.undeveloped
},
{
type: 'separator'
},
{
title: '显示车次号',
click: this.undeveloped
},
{
title: '显示车组号',
click: this.undeveloped
},
{
type: 'separator'
},
{
title: '全屏',
click: this.undeveloped
},
{
title: '放大',
click: this.undeveloped
},
{
title: '缩小',
click: this.undeveloped
},
{
title: '恢复',
click: this.undeveloped
}
]
},
{
title: '车站定位',
operate: '',
children: [
]
},
{
title: '显示',
operate: OperationEvent.Command.mBar.view,
hide: true,
children: [
{
title: '设置列车识别号显示',
click: this.setTrainIdDisplay,
operate: OperationEvent.Command.view.setTrainIdDisplay
},
{
title: '设置名称显示',
click: this.setNameDisplay,
operate: OperationEvent.Command.view.setNameDisplay
},
{
title: '设置设备显示',
click: this.setDeviceDisplay,
operate: OperationEvent.Command.view.setDeviceDisplay
}
]
},
{
title: 'ATS终端操作',
operate: '',
children: [
{
title: '当天运行车计划',
click: this.undeveloped
},
{
title: '出入库预告',
click: this.undeveloped
}
]
},
{
title: '计划车操作',
operate: '',
children: [
{
title: '添加计划车',
click: this.undeveloped
},
{
title: '平移计划车',
click: this.undeveloped
},
{
title: '删除计划车',
click: this.undeveloped
}
]
},
{
title: '批处理命令',
operate: '',
children: [
{
title: '全线扣车',
click: this.undeveloped
},
{
title: '取消全线扣车',
click: this.undeveloped
},
{
title: '取消上行全线扣车',
click: this.undeveloped
},
{
title: '取消下行全线扣车',
click: this.undeveloped
}
]
},
{
title: '信息管理',
operate: '',
children: [
{
title: '调度日志',
click: this.undeveloped
},
{
title: '调度留言提醒',
click: this.undeveloped
},
{
title: '报警设置',
click: this.undeveloped
}
]
},
{
title: '帮助',
operate: '',
children: [
{
title: '关于ITS GPC 工作站',
click: this.about,
operate: OperationEvent.Command.help.about
}
]
}
]
}
};
},
computed: {
...mapGetters('map', [
'stationList'
])
},
created() {
this.menuNormal['Center'][3].children = this.initStationList();
},
methods: {
initStationList() {
const list = [];
this.stationList.forEach(station => {
if (station.visible) {
const node = {
title: station.name,
operate: station.code,
show: true,
click: this.mapLocation,
code: station.code
};
list.push(node);
}
});
return list;
},
//
mapLocation(code) {
if (code) {
this.$store.dispatch('training/updateOffsetStationCode', { offsetStationCode: code });
}
},
//
about(order) {
const operate = {
operation: order.operate
};
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.helpAbout.doShow(operate);
}
});
},
getLoginResult(operate) {
/** 密码校验*/
if (operate.operation == OperationEvent.StationControl.forcedStationControl.passwordConfirm.operation) {
if (operate.success) {
/** 校验成功*/
this.$refs.stationControlConvert.doShow({ operation: OperationEvent.StationControl.forcedStationControl.mbar.operation });
}
}
},
setLimitSpeed(order) {
const operate = {
operation: order.operate
};
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.setLimitSpeed.doShow(operate, true);
}
});
},
blankClickClose() {
this.$refs.menuBar.doClose();
},
cancleLimitSpeed(order) {
const operate = {
operation: order.operate
};
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.setLimitSpeed.doShow(operate, false);
}
});
},
undeveloped() {
this.$refs.menuBar.doClose();
this.$alert('实现中......', '提示', {
confirmButtonText: '确定',
callback: action => {
}
});
}
}
};
</script>
<style rel="stylesheet/scss" lang="scss">
#menuBarChengdu3{
line-height:30px;
}
#menuBarChengdu3 #menuBar .menu-li-block .label{
padding: 0px 30px 0px 5px !important;
}
</style>

View File

@ -1,133 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm two-confirmation"
title="二次确认"
:visible.sync="show"
width="360px"
:before-close="doClose"
:show-close="false"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
append-to-body
>
<div class="context">
<template v-for="(message, index) in messages">
<span :key="index">{{ message }}</span>
</template>
</div>
<el-row class="button-group">
<el-col :span="10" :offset="3">
<el-button :id="show? domIdConfirm: ''" :loading="loading" @click="commit">确认</el-button>
</el-col>
<el-col :span="6" :offset="4">
<el-button :id="domIdCancel" @click="cancel">关闭</el-button>
</el-col>
</el-row>
<notice-info ref="noticeInfo" />
</el-dialog>
</template>
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import OperationHandler from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
export default {
name: 'TwoConfirmation',
components: {
NoticeInfo
},
data() {
return {
dialogShow: false,
loading: false,
operate: '',
timer: null,
domIdConfirm: ''
};
},
computed: {
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.close.confirm.domId : '';
},
messages() {
if (this.operate) {
return this.operate.messages;
}
return [];
}
},
methods: {
doShow(operate) {
this.domIdConfirm = '';
if (OperationHandler.checkOperationIsCurrentOperate(operate.operation, OperationEvent.StationControl.forcedStationControl)) {
this.domIdConfirm = OperationEvent.StationControl.forcedStationControl.confirm.domId;
} else if (OperationHandler.checkOperationIsCurrentOperate(operate.operation, OperationEvent.StationControl.requestStationControl)) {
this.domIdConfirm = OperationEvent.StationControl.requestStationControl.confirm.domId;
} else if (OperationHandler.checkOperationIsCurrentOperate(this.operation, OperationEvent.StationControl.requestCentralControl)) {
this.domIdConfirm = OperationEvent.StationControl.requestCentralControl.confirm.domId;
}
this.operate = operate || {};
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
cancel() {
const operate = {
type: this.operate.type,
operation: OperationEvent.Command.close.confirm.operation
};
this.$emit('setOperate', { selection: this.operate.selection, cancel: true });
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.doClose();
}
});
},
commit() {
if (this.operate && this.operate.selection) {
const operate = {
send: true,
type: this.operate.type,
val: this.operate.val,
selection: this.operate.selection
};
if (OperationHandler.checkOperationIsCurrentOperate(this.operate.operation, OperationEvent.StationControl.forcedStationControl)) {
operate.operation = OperationEvent.StationControl.forcedStationControl.confirm.operation;
} else if (OperationHandler.checkOperationIsCurrentOperate(this.operate.operation, OperationEvent.StationControl.requestStationControl)) {
operate.operation = OperationEvent.StationControl.requestStationControl.confirm.operation;
} else if (OperationHandler.checkOperationIsCurrentOperate(this.operate.operation, OperationEvent.StationControl.requestCentralControl)) {
operate.operation = OperationEvent.StationControl.requestCentralControl.confirm.operation;
}
this.loading = true;
this.doClose();
this.$emit('setOperate', { selection: this.operate.selection, commit: true });
this.$store.dispatch('trainingNew/next', operate).then(({ valid, response }) => {
if (valid) {
this.loading = false;
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
}, 1000).catch(() => {
this.loading = true;
this.$refs.noticeInfo.doShow();
});
}
}
}
};
</script>

View File

@ -1,157 +0,0 @@
<template>
<el-dialog class="chengdou-03__systerm user-add" :title="title" :visible.sync="show" width="420px"
:before-close="doClose" :zIndex="2000" :modal="false" :close-on-click-modal="false" append-to-body v-dialogDrag>
<div style="padding: 15px 40px; border: 1px double lightgray; margin: 20px 10px; ">
<el-form size="small" label-width="90px" :model="model" label-position="left" :rules="rules" ref="form">
<el-form-item label="工号:" prop="jobNumber">
<el-input v-model="model.jobNumber"></el-input>
</el-form-item>
<el-form-item label="用户名:" prop="userName">
<el-input v-model="model.userName"></el-input>
</el-form-item>
<el-form-item label="密码:" prop="password">
<el-input type="password" v-model="model.password"></el-input>
</el-form-item>
<el-form-item label="确认密码:" prop="confirm">
<el-input type="password" v-model="model.confirm"></el-input>
</el-form-item>
</el-form>
</div>
<el-row justify="center" class="button-group">
<el-col :span="8" :offset="6">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="0">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
export default {
name: 'UserAdd',
components: {
},
data() {
return {
operate: {},
operation: null,
dialogShow: false,
loading: false,
model: {
type: 'ADD',
jobNumber: '',
userName: '',
password: '',
confirm: '',
},
rules: {
jobNumber: [
{ required: true, message: '请输入工号', trigger: 'blur' }
],
userName: [
{ required: true, message: '请输入用户名', trigger: 'blur' }
],
password: [
{ required: true, message: '请输入密码', trigger: 'change' }
],
confirm: [
{ required: true, message: '请再次输入密码', trigger: 'change' }
],
},
}
},
computed: {
...mapGetters('map', [
'stationStandList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Command.close.confirm.domId : '';
},
title() {
return '增加用户'
}
},
methods: {
doShow(operate) {
//
if (!this.dialogShow) {
this.loading = false;
this.operate = operate || {};
this.operation = operate.operation;
this.$nextTick(() => {
this.$refs.form.resetFields();
});
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
commit() {
this.$refs['form'].validate((valid) => {
if (valid) {
let operate = {
type: this.operate.type,
operation: OperationEvent.Command.close.confirm.operation,
}
this.loading = true;
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
if (this.model.password === this.model.confirm) {
this.doClose();
this.$emit('operateUser', this.model);
} else {
this.$messageBox('二次输入密码不一致');
}
}
})
} else {
return false;
}
});
},
cancel() {
let operate = {
type: this.operate.type,
operation: OperationEvent.Command.cancel.menu.operation,
}
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(error => { this.doClose(); this.model });
}
}
}
</script>
<style scoped>
.chengdou-03__systerm .el-dialog .base-label {
background: rgba(0, 0, 0, x);
position: relative;
left: -5px;
top: -10px;
padding: 0 5px;
background-color: #F0F0F0;
}
</style>

View File

@ -1,129 +0,0 @@
<template>
<el-dialog class="chengdou-03__systerm user-delete" :title="title" :visible.sync="show" width="260px"
:before-close="doClose" :zIndex="2000" :modal="false" :close-on-click-modal="false" append-to-body v-dialogDrag>
<div style="padding-left: 10px; padding-bottom: 10px">
<i class="el-icon-info"></i>
<template v-for="message in messages">
<span>{{message}}</span>
</template>
</div>
<el-row justify="center" class="button-group">
<el-col :span="8" :offset="3">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="2">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
export default {
name: 'UserDelete',
components: {
},
data() {
return {
operate: {},
messages: [],
model: {
type: 'DELETE',
jobNumber: '',
userName: '',
},
operation: null,
dialogShow: false,
loading: false,
}
},
computed: {
...mapGetters('map', [
'stationStandList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Command.close.confirm.domId : '';
},
title() {
return '删除用户'
}
},
methods: {
doShow(operate, selected) {
//
if (!this.dialogShow) {
this.loading = false;
this.operate = operate || {};
this.operation = operate.operation;
this.messages = operate.messages;
this.model.userName = '';
this.model.jobNumber = '';
if (selected) {
this.model.userName = selected.userName;
this.model.jobNumber = selected.jobNumber;
}
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
commit() {
if (this.model.userName && this.model.jobNumber) {
let operate = {
type: this.operate.type,
operation: OperationEvent.Command.close.confirm.operation,
}
this.loading = true;
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
this.$emit('operateUser', this.model);
}
})
} else {
this.$messageBox('选择的用户名或工号为空');
}
},
cancel() {
let operate = {
type: this.operate.type,
operation: OperationEvent.Command.cancel.menu.operation,
}
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(error => { this.doClose(); });
}
}
}
</script>
<style scoped>
.chengdou-03__systerm .el-dialog .base-label {
background: rgba(0, 0, 0, x);
position: relative;
left: -5px;
top: -10px;
padding: 0 5px;
background-color: #F0F0F0;
}
</style>

View File

@ -1,173 +0,0 @@
<template>
<el-dialog class="chengdou-03__systerm user-edit" :title="title" :visible.sync="show" width="420px"
:before-close="doClose" :zIndex="2000" :modal="false" :close-on-click-modal="false" append-to-body v-dialogDrag>
<div style="padding: 15px 40px; border: 1px double lightgray; margin: 20px 10px; ">
<el-form size="small" label-width="90px" :model="model" label-position="left" :rules="rules" ref="form">
<el-form-item label="工号:" prop="jobNumber">
<el-input v-model="model.jobNumber" disabled></el-input>
</el-form-item>
<el-form-item label="用户名:" prop="userName">
<el-input v-model="model.userName" disabled></el-input>
</el-form-item>
<el-form-item label="原始密码:" prop="oldPassword">
<el-input type="oldPassword" v-model="model.oldPassword"></el-input>
</el-form-item>
<el-form-item label="密码:" prop="password">
<el-input type="password" v-model="model.password"></el-input>
</el-form-item>
<el-form-item label="确认密码:" prop="confirm">
<el-input type="password" v-model="model.confirm"></el-input>
</el-form-item>
</el-form>
</div>
<el-row justify="center" class="button-group">
<el-col :span="8" :offset="6">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="0">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
export default {
name: 'UserEdit',
components: {
},
data() {
return {
operate: {},
selected: {},
operation: null,
dialogShow: false,
loading: false,
model: {
type: 'EDIT',
jobNumber: '',
userName: '',
oldPassword: '',
password: '',
confirm: '',
},
rules: {
jobNumber: [
{ required: true, message: '请输入工号', trigger: 'blur' }
],
userName: [
{ required: true, message: '请输入用户名', trigger: 'blur' }
],
oldPassword: [
{ required: true, message: '请输入原始密码', trigger: 'change' }
],
password: [
{ required: true, message: '请输入新密码', trigger: 'change' }
],
confirm: [
{ required: true, message: '请再次输入新密码', trigger: 'change' }
],
},
}
},
computed: {
...mapGetters('map', [
'stationStandList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Command.close.confirm.domId : '';
},
title() {
return '用户编辑页面'
}
},
methods: {
doShow(operate, selected) {
//
if (!this.dialogShow) {
this.loading = false;
this.operate = operate || {};
this.operation = operate.operation;
this.$nextTick(() => {
this.$refs.form.resetFields();
this.selected = selected;
if (selected) {
this.model.jobNumber = selected.jobNumber;
this.model.userName = selected.userName;
}
});
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
commit() {
this.$refs['form'].validate((valid) => {
if (valid) {
let operate = {
type: this.operate.type,
operation: OperationEvent.Command.close.confirm.operation,
}
this.loading = true;
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
this.loading = false;
if (valid)
if (this.selected.password !== this.model.oldPassword) {
this.$messageBox('原始密码错误');
} else if (this.model.password !== this.model.confirm) {
this.$messageBox('二次输入的密码错误');
} else if (this.model.oldPassword === this.model.password) {
this.$messageBox('老密码和新密相同');
} else {
this.doClose();
this.$emit('operateUser', this.model);
}
})
} else {
return false;
}
});
},
cancel() {
let operate = {
type: this.operate.type,
operation: OperationEvent.Command.cancel.menu.operation,
}
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(error => { this.doClose(); });
}
}
}
</script>
<style scoped>
.chengdou-03__systerm .el-dialog .base-label {
background: rgba(0, 0, 0, x);
position: relative;
left: -5px;
top: -10px;
padding: 0 5px;
background-color: #F0F0F0;
}
</style>

View File

@ -1,138 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm stand-stop-time"
:title="title"
:visible.sync="show"
width="320px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-row justify="center" class="button-group">
<el-col :span="10" :offset="2">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="4">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
export default {
name: 'TrainAdd',
components: {
},
data() {
return {
trainNoList: [],
addModel: {
},
rules: {
// groupNumber: [
// { required: true, message: '', trigger: 'blur' }
// ],
// stationStandCode: [
// { required: true, message: '', trigger: 'change' }
// ],
},
operation: null,
dialogShow: false,
loading: false
};
},
computed: {
...mapGetters('map', [
'stationStandList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Command.planTrain.addPlanTrain.domId : '';
},
title() {
return '设置限速';
}
},
methods: {
doShow(operate) {
this.operate = operate || {};
this.operation = operate.operation;
if (!this.dialogShow) {
this.loading = false;
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
commit() {
this.$refs['form'].validate((valid) => {
if (valid) {
const operate = {
send: true,
operation: OperationEvent.Command.planTrain.addPlanTrain.operation
};
this.loading = true;
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(error => {
this.loading = false;
this.doClose();
console.error(error);
// this.$refs.noticeInfo.doShow();
});
} else {
return false;
}
});
},
cancel() {
const operate = {
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(error => { this.doClose(); });
}
}
};
</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;
}
</style>

View File

@ -1,285 +0,0 @@
<template>
<el-dialog class="chengdou-03__systerm manage-user" :title="title" :visible.sync="show" width="420px"
:before-close="doClose" :zIndex="2000" :modal="false" :close-on-click-modal="false" v-dialogDrag>
<div style="padding: 5px 5px; border: 1px double lightgray; margin: 20px 0px; ">
<span class="base-label">用户列表</span>
<el-row>
<el-col :span="18">
<el-table ref="multipleTable" :data="tableData" border row-key="code" style="width: 100%"
height="450" center size="mini" highlight-current-row @row-click="chooseUser">
<el-table-column prop="jobNumber" label="工号" width="120">
<template slot-scope="scope">
<span>{{scope.row.jobNumber}}</span>
</template>
</el-table-column>
<el-table-column prop="userName" label="用户名">
<template slot-scope="scope">
<span>{{scope.row.userName}}</span>
</template>
</el-table-column>
<el-table-column width="20">
</el-table-column>
</el-table>
</el-col>
<el-col :span="4">
<el-button style="margin-top: 140px; margin-left: 10px;" :id="domIdFreshUser" @click="freshUser">刷新
</el-button>
<el-button style="margin-top: 30px; margin-left: 10px;" :id="domIdAddUser" @click="addUser">增加
</el-button>
<el-button style="margin-top: 30px; margin-left: 10px;" :id="domIdEditUser" @click="editUser">修改
</el-button>
<el-button style="margin-top: 30px; margin-left: 10px;" :id="domIdDelUser" @click="delUser">删除
</el-button>
</el-col>
</el-row>
</div>
<el-row justify="center" class="button-group">
<el-col :span="8" :offset="6">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="0">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
<user-add ref="userAdd" @operateUser="operateUser"></user-add>
<user-edit ref="userEdit" @operateUser="operateUser"></user-edit>
<user-delete ref="userDelete" @operateUser="operateUser"></user-delete>
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import UserAdd from './childDialog/userAdd';
import UserEdit from './childDialog/userEdit';
import UserDelete from './childDialog/userDelete';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
export default {
name: 'ManageUser',
components: {
UserAdd,
UserEdit,
UserDelete
},
data() {
return {
tableData: [],
operate: {},
operation: null,
dialogShow: false,
loading: false,
selected: null,
}
},
computed: {
...mapGetters('map', [
'stationStandList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdAddUser() {
return this.dialogShow ? OperationEvent.Command.manage.addUser.domId : '';
},
domIdEditUser() {
return this.dialogShow ? OperationEvent.Command.manage.editUser.domId : '';
},
domIdDelUser() {
return this.dialogShow ? OperationEvent.Command.manage.delUser.domId : '';
},
domIdFreshUser() {
return this.dialogShow ? OperationEvent.Command.manage.freshUser.domId : '';
},
domIdChooseUser() {
return this.dialogShow ? OperationEvent.Command.manage.chooseUser.domId : '';
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Command.close.menu.domId : '';
},
title() {
return '用户管理'
}
},
methods: {
doShow(operate) {
//
if (!this.dialogShow) {
this.loading = false;
this.operate = operate || {};
this.operation = operate.operation;
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
//
addUser() {
let operate = {
type: this.operate.type,
operation: OperationEvent.Command.manage.addUser.operation,
}
this.loading = true;
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.$refs.userAdd.doShow(operate);
}
}).catch(error => {
this.loading = false;
})
},
//
editUser() {
if (this.selected) {
let operate = {
type: this.operate.type,
operation: OperationEvent.Command.manage.editUser.operation,
}
this.loading = true;
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.$refs.userEdit.doShow(operate, this.selected);
}
}).catch(error => {
this.loading = false;
})
} else {
this.$messageBox('请先选择用户');
}
},
//
delUser() {
if (this.selected) {
let operate = {
type: this.operate.type,
operation: OperationEvent.Command.manage.delUser.operation,
messages: [`你确定删除用户${this.selected.userName}吗?`]
}
this.loading = true;
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.$refs.userDelete.doShow(operate, this.selected);
}
}).catch(error => {
this.loading = false;
})
} else {
this.$messageBox('请先选择用户');
}
},
//
freshUser() {
let operate = {
type: this.operate.type,
operation: OperationEvent.Command.manage.freshUser.operation,
}
this.loading = true;
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
this.loading = false;
}).catch(error => {
this.loading = false;
})
},
//
chooseUser(row) {
let operate = {
type: this.operate.type,
operation: OperationEvent.Command.manage.chooseUser.operation,
}
this.loading = true;
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
this.loading = false;
this.selected = row;
}).catch(error => {
this.loading = false;
})
},
commit() {
let operate = {
type: this.operate.type,
operation: OperationEvent.Command.close.menu.operation,
}
this.loading = true;
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(error => {
this.loading = false;
this.doClose();
})
},
cancel() {
let operate = {
type: this.operate.type,
operation: OperationEvent.Command.cancel.menu.operation,
}
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(error => { this.doClose(); });
},
//
operateUser(data) {
if (data && data.type === 'ADD') {
let index = this.tableData.indexOf(this.tableData.find(elem => { return elem.jobNumber === data.jobNumber }));
if (index < 0) {
this.tableData.push({
jobNumber: data.jobNumber,
userName: data.userName,
password: data.password
});
} else {
this.$messageBox('添加失败,存在相同工号的用户');
}
} else if (data && data.type === 'EDIT') {
let index = this.tableData.indexOf(this.tableData.find(elem => { return elem.jobNumber === data.jobNumber }));
if (index >= 0) {
this.tableData[index].password = data.password;
this.tableData[index].userName = data.userName;
} else {
this.$messageBox('修改失败');
}
} else if (data && data.type === 'DELETE') {
let index = this.tableData.indexOf(this.tableData.find(elem => { return elem.jobNumber === data.jobNumber }));
if (index >= 0) {
this.tableData.splice(index, 1);
} else {
this.$messageBox('删除失败');
}
}
}
}
}
</script>
<style scoped>
.chengdou-03__systerm .el-dialog .base-label {
background: rgba(0, 0, 0, x);
position: relative;
left: -5px;
top: -10px;
padding: 0 5px;
background-color: #F0F0F0;
}
</style>

View File

@ -1,221 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm password-box"
title="密码框"
:visible.sync="show"
width="320px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<div class="context" style="overflow:hidden">
<el-form label-width="80px" size="mini">
<el-form-item prop="username">
<span slot="label">用户名</span>
<el-input v-model="model.username" disabled />
</el-form-item>
<el-form-item prop="password">
<span slot="label">&emsp;</span>
<el-input v-model="model.password" type="password" />
</el-form-item>
</el-form>
<div class="operate">
<el-button-group v-model="key" class="left" size="mini">
<el-button size="mini" @click="click(1)">1</el-button>
<el-button size="mini" @click="click(2)">2</el-button>
<el-button size="mini" @click="click(3)">3</el-button>
<el-button size="mini" @click="click(4)">4</el-button>
<el-button size="mini" @click="click(5)">5</el-button>
</el-button-group>
<el-button-group v-model="key" class="right" size="mini">
<el-button @click="esc">回退</el-button>
</el-button-group>
<el-button-group v-model="key" class="left" size="mini">
<el-button size="mini" @click="click(6)">6</el-button>
<el-button size="mini" @click="click(7)">7</el-button>
<el-button size="mini" @click="click(8)">8</el-button>
<el-button size="mini" @click="click(9)">9</el-button>
<el-button size="mini" @click="click(0)">0</el-button>
</el-button-group>
<el-button-group v-model="key" class="right" size="mini">
<el-button @click="clr">清空</el-button>
</el-button-group>
</div>
</div>
<el-row class="button-group">
<el-col :span="6" :offset="4">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="6" :offset="4">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
<notice-info ref="noticeInfo" />
</el-dialog>
</template>
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import OperationHandler from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
export default {
name: 'PasswordBox',
components: {
NoticeInfo
},
data() {
return {
dialogShow: false,
loading: false,
operate: null,
operation: null,
model: {
username: '',
password: ''
},
key: ''
};
},
computed: {
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.close.password.domId : '';
},
domIdConfirm() {
if (OperationHandler.checkOperationIsCurrentOperate(this.operation, OperationEvent.StationControl.forcedStationControl)) {
/** 强制站控*/
return OperationEvent.StationControl.forcedStationControl.passwordConfirm.domId;
}
return '';
}
},
methods: {
loadInitData(operate) {
this.model.username = '';
this.model.password = '';
this.operate = operate || {};
this.operation = operate.operation;
this.model.username = this.$store.state.user.name;
},
doShow(operate) {
/** 如果不是断点激活,而是第一次显示需要初始化数据*/
if (!this.dialogShow) {
this.loadInitData(operate);
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
cancel() {
const operate = {
type: this.operate.type,
operation: OperationEvent.Command.close.password.operation
};
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
});
},
commit() {
const operate = {
type: this.operate.type
};
if (OperationHandler.checkOperationIsCurrentOperate(this.operation, OperationEvent.StationControl.forcedStationControl)) {
/** 强制站控*/
operate.operation = OperationEvent.StationControl.forcedStationControl.passwordConfirm.operation;
}
if (this.model.password == '123456') {
this.loading = true;
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
this.loading = false;
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
if (valid) {
this.$emit('setLoginResult', {
operation: operate.operation,
success: valid
});
this.doClose();
}
}).catch(() => {
this.loading = false;
this.$emit('setLoginResult', {
operation: operate.operation,
success: false
});
});
} else {
this.$refs.noticeInfo.doShow('密码输入错误!');
}
},
click(key) {
if (!this.model.password) {
this.model.password = '';
}
this.model.password += key;
},
esc() {
if (this.model.password) {
this.model.password = this.model.password.substring(0, this.model.password.length - 1);
}
},
clr() {
this.model.password = '';
}
}
};
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
@import "src/styles/mixin.scss";
.password-box .el-form {
margin-top: 10px !important;
margin-right: 20px !important;
}
.password-box .el-form-item {
margin-bottom: 5px !important;
}
.password-box .context {
height: 170px !important;
}
.password-box .operate {
margin-top: 10px !important;
padding-bottom: 10px !important;
}
.password-box .left {
margin-left: 10px !important;
}
.password-box .left .el-button {
color: #000;
background: #F0F0F0;
text-align: center;
width: 30px !important;
}
.password-box .right {
color: #000;
margin-left: 10px !important;
background: #F0F0F0;
width: 80px !important;
}
</style>

View File

@ -1,286 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm stand-stop-time"
:title="title"
:visible.sync="show"
width="800px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-row>
<el-col :span="14">
<div class="card-box">
<span class="tip-label">请求</span>
<el-row style="margin: 5px">
<el-col :span="6" class="item-label">线路选择</el-col>
<el-col :span="6">
<el-select v-model="data.path">
<el-option
v-for="item in pathList"
:key="item.value"
:label="item.name"
:value="item.value"
/>
</el-select>
</el-col>
<el-col :span="6" class="item-label">限制速度</el-col>
<el-col :span="6">
<el-select v-model="data.speed">
<el-option
v-for="item in speedList"
:key="item.value"
:label="item.name"
:value="item.value"
/>
</el-select>
</el-col>
</el-row>
<el-row>
<el-col :span="6" class="item-label">起始公里标</el-col>
<el-col :span="6">
<el-input v-model="data.begKmPost" />
</el-col>
<el-col :span="6" class="item-label">结束公里标</el-col>
<el-col :span="6">
<el-input v-model="data.endKmPost" />
</el-col>
</el-row>
<el-row>
<el-col :span="6" class="item-label">限速区段长度</el-col>
<el-col :span="6">
<el-input v-model="data.length" />
</el-col>
<el-col :span="3">
<el-button>查看</el-button>
</el-col>
<el-col :span="3">
<el-button>请求</el-button>
</el-col>
</el-row>
</div>
<div class="card-box">
<span class="tip-label">执行</span>
<el-row style="margin: 5px">
<el-col :span="6" class="item-label">线路选择</el-col>
<el-col :span="6">
<el-select v-model="form.path">
<el-option
v-for="item in pathList"
:key="item.value"
:label="item.name"
:value="item.value"
/>
</el-select>
</el-col>
<el-col :span="6" class="item-label">限制速度</el-col>
<el-col :span="6">
<el-select v-model="form.speed">
<el-option
v-for="item in speedList"
:key="item.value"
:label="item.name"
:value="item.value"
/>
</el-select>
</el-col>
</el-row>
<el-row>
<el-col :span="6" class="item-label">起始公里标</el-col>
<el-col :span="6">
<el-input v-model="form.begKmPost" />
</el-col>
<el-col :span="6" class="item-label">结束公里标</el-col>
<el-col :span="6">
<el-input v-model="form.endKmPost" />
</el-col>
</el-row>
<el-row>
<el-col :span="6" class="item-label">限速区段长度</el-col>
<el-col :span="6">
<el-input v-model="form.length" />
</el-col>
<el-col :span="3">
<el-button>查看</el-button>
</el-col>
<el-col :span="3">
<el-button>请求</el-button>
</el-col>
</el-row>
</div>
<div class="card-box">
<span class="tip-label">操作提示</span>
</div>
</el-col>
<el-col :span="9" :offset="1">
<div class="card-box">
<span class="tip-label">设备列表</span>
<el-table class="card-table" :data="deviceData" border style="width: 100%" height="300">
<el-table-column prop="stationName" label="站名" />
<el-table-column prop="deviceCode" label="设备号" />
<el-table-column prop="deviceName" label="设备名" />
</el-table>
</div>
</el-col>
</el-row>
<el-row justify="center" class="button-group">
<el-col :span="10" :offset="2">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="4">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
export default {
name: 'TrainAdd',
components: {
},
data() {
return {
operation: null,
dialogShow: false,
loading: false,
data: {
path: '',
speed: '',
begKmPost: '',
endKmPost: '',
length: ''
},
form: {
path: '',
speed: '',
begKmPost: '',
endKmPost: '',
length: ''
},
pathList: [
{ name: '上行站线', value: '01' },
{ name: '下行站线', value: '02' }
],
speedList: [
{ name: '10Km/h', value: '10' },
{ name: '15Km/h', value: '15' },
{ name: '20Km/h', value: '20' },
{ name: '25Km/h', value: '25' }
],
deviceData: []
};
},
computed: {
...mapGetters('map', [
'stationStandList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Command.planTrain.addPlanTrain.domId : '';
},
title() {
return '设置临时限速';
}
},
methods: {
doShow(operate) {
this.operate = operate || {};
this.operation = operate.operation;
if (!this.dialogShow) {
this.loading = false;
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
commit() {
this.$refs['form'].validate((valid) => {
if (valid) {
const operate = {
send: true,
operation: OperationEvent.Command.planTrain.addPlanTrain.operation
};
this.loading = true;
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(error => {
this.loading = false;
this.doClose();
console.error(error);
// this.$refs.noticeInfo.doShow();
});
} else {
return false;
}
});
},
cancel() {
const operate = {
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(error => { this.doClose(); });
}
}
};
</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;
}
.card-box {
border: 1px solid #c0c0c0;
margin-bottom: 20px;
}
.card-table {
position: relative;
top: -15px;
}
.tip-label {
position: relative;
left: 5px;
top: -15px;
background: #ECE9D8;
}
.item-label {
text-align: center;
}
</style>

View File

@ -1,168 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm stand-stop-time"
:title="title"
:visible.sync="show"
width="320px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-form ref="form" size="small" label-width="100px" :model="addModel" :rules="rules">
<div style="padding: 10px 15px; border: 1px double lightgray; margin: 20px 0px; height: 120px;">
<span class="base-label">添加位置</span>
<div style="position: relative; top:-10px;">
<el-form-item prop="stationStandCode">
<span slot="label">&emsp;&emsp;&emsp;:</span>
<el-select v-model="addModel.stationStandCode" filterable placeholder="请选择">
<el-option
v-for="item in stationStandList"
:key="item.code"
:label="item.name"
:value="item.code"
/>
</el-select>
</el-form-item>
<el-form-item label="前车车次号:" prop="trainNumberLimber">
<el-input v-model="addModel.trainNumberLimber" />
</el-form-item>
</div>
</div>
<el-form-item label="添加车次号:" label-width="115px" prop="groupNumber">
<el-input v-model="addModel.groupNumber" />
</el-form-item>
</el-form>
<el-row justify="center" class="button-group">
<el-col :span="10" :offset="2">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="4">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
export default {
name: 'TrainAdd',
components: {
},
data() {
return {
trainNoList: [],
addModel: {
groupNumber: '',
stationStandCode: '',
trainNumberLimber: ''
},
rules: {
groupNumber: [
{ required: true, message: '请输入车次号', trigger: 'blur' }
],
// trainNumberLimber: [
// { required: true, message: '', trigger: 'blur' }
// ],
stationStandCode: [
{ required: true, message: '请选择终端', trigger: 'change' }
]
},
operation: null,
dialogShow: false,
loading: false
};
},
computed: {
...mapGetters('map', [
'stationStandList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Command.planTrain.addPlanTrain.domId : '';
},
title() {
return '添加计划车';
}
},
methods: {
doShow(operate) {
this.operate = operate || {};
this.operation = operate.operation;
//
if (!this.dialogShow) {
this.loading = false;
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
commit() {
this.$refs['form'].validate((valid) => {
if (valid) {
const operate = {
send: true,
operation: OperationEvent.Command.planTrain.addPlanTrain.operation
};
this.loading = true;
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(error => {
this.loading = false;
this.doClose();
console.error(error);
// this.$refs.noticeInfo.doShow();
});
} else {
return false;
}
});
},
cancel() {
const operate = {
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(error => { this.doClose(); });
}
}
};
</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;
}
</style>

View File

@ -1,151 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm stand-stop-time"
:title="title"
:visible.sync="show"
width="320px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-form ref="form" size="small" label-width="100px" :model="addModel" :rules="rules">
<el-form-item prop="stationStandCode">
<span slot="label">&emsp;&emsp;:</span>
<el-select v-model="addModel.stationStandCode" filterable placeholder="请选择">
<el-option v-for="item in stationStandList" :key="item.code" :label="item.name" :value="item.code" />
</el-select>
</el-form-item>
<el-form-item label="车 次 号:" prop="groupNumber">
<el-input v-model="addModel.groupNumber" />
</el-form-item>
</el-form>
<el-row justify="center" class="button-group">
<el-col :span="10" :offset="2">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="4">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
export default {
name: 'TrainAdd',
components: {
},
data() {
return {
trainNoList: [],
addModel: {
groupNumber: '',
stationStandCode: ''
},
rules: {
groupNumber: [
{ required: true, message: '请输入车次号', trigger: 'blur' }
],
stationStandCode: [
{ required: true, message: '请选择终端', trigger: 'change' }
]
},
operation: null,
dialogShow: false,
loading: false
};
},
computed: {
...mapGetters('map', [
'stationStandList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Command.planTrain.delPlanTrain.domId : '';
},
title() {
return '删除计划车';
}
},
methods: {
doShow(operate) {
this.operate = operate || {};
this.operation = operate.operation;
//
if (!this.dialogShow) {
this.loading = false;
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
commit() {
this.$refs['form'].validate((valid) => {
if (valid) {
const operate = {
send: true,
operation: OperationEvent.Command.planTrain.delPlanTrain.operation
};
this.loading = true;
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(error => {
this.loading = false;
this.doClose();
console.error(error);
// this.$refs.noticeInfo.doShow();
});
} else {
return false;
}
});
},
cancel() {
const operate = {
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(error => { this.doClose(); });
}
}
};
</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;
}
</style>

Some files were not shown because too many files have changed in this diff Show More