From bad556856477e7159e403d48247cedf0e0028b5d Mon Sep 17 00:00:00 2001 From: Yuan Date: Wed, 14 Sep 2022 17:21:32 +0800 Subject: [PATCH 1/6] =?UTF-8?q?PIS=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/pis/train.png | Bin 0 -> 22693 bytes src/router/index.js | 7 + src/views/pis/index.vue | 368 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 375 insertions(+) create mode 100644 src/assets/pis/train.png create mode 100644 src/views/pis/index.vue diff --git a/src/assets/pis/train.png b/src/assets/pis/train.png new file mode 100644 index 0000000000000000000000000000000000000000..7926be04040f5aa31c025ac44ff561ea1ef088ef GIT binary patch literal 22693 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 BDAND{ literal 0 HcmV?d00001 diff --git a/src/router/index.js b/src/router/index.js index e7a4c0a99..bf24f13a2 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -203,6 +203,8 @@ const VoiceManage = () => import('@/views/fileManage/voiceManage'); const IscsDeviceManage = () => import('@/views/system/iscsDeviceManage'); const IscsResourcesManage = () => import('@/views/system/iscsResourcesManage'); +const PisScreen = () => import('@/views/pis/index') + // import { GenerateRouteProjectList } from '@/scripts/ProjectConfig'; // import { getSessionStorage } from '@/utils/auth'; @@ -703,6 +705,11 @@ export const publicAsyncRoute = [ path: '/bigTrainRunplanManage', component: BigTrainRunplanManage, hidden: true + }, + { + path: '/pis', + component: PisScreen, + hidden: true } ]; diff --git a/src/views/pis/index.vue b/src/views/pis/index.vue new file mode 100644 index 000000000..e9bb42b15 --- /dev/null +++ b/src/views/pis/index.vue @@ -0,0 +1,368 @@ + + + + + From 6adcfd9f9b5b9684911e7b8a198fa10ea8c20cad Mon Sep 17 00:00:00 2001 From: dong <58670809@qq.com> Date: Wed, 14 Sep 2022 18:31:20 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/scripts/ConstConfig.js | 4 +- src/views/trainingManage/editCondition.vue | 58 ++++--------- src/views/trainingManage/expression.vue | 88 +++++++++++++++----- src/views/trainingManage/expressionValue.vue | 38 +++++++-- 4 files changed, 117 insertions(+), 71 deletions(-) diff --git a/src/scripts/ConstConfig.js b/src/scripts/ConstConfig.js index 5a37e5da9..0e9e545b2 100644 --- a/src/scripts/ConstConfig.js +++ b/src/scripts/ConstConfig.js @@ -291,7 +291,9 @@ export default { { label: '站台', value: 'StationStand' }, // Stand { label: '车站', value: 'Station' }, {label:'进路', value:'Route'}, - { label: '列车', value: 'Train' } + { label: '列车', value: 'Train' }, + { label: '自动闭塞', value: 'StationDirectionAuto' }, + { label: '半自动闭塞', value: 'StationDirectionSemi' } ] } }; diff --git a/src/views/trainingManage/editCondition.vue b/src/views/trainingManage/editCondition.vue index 73b25d2db..649d4f706 100644 --- a/src/views/trainingManage/editCondition.vue +++ b/src/views/trainingManage/editCondition.vue @@ -47,11 +47,6 @@ export default { ExpressionValue, Expression }, - provide() { - return { - optionObj: this.optionObj - }; - }, props: { materialsList: { type: Array, @@ -68,44 +63,7 @@ export default { tableData: [], activeIndexPath: '', rowIndex: 0, - conditionKey: '', - optionObj: { - boolean: [ - { label: '是', value: true }, - { label: '否', value: false } - ], - RunLevel: [ - { label: 'cbtc级别', value: 'CBTC' }, - { label: '点式通信', value: 'ITC' }, - { label: '联锁级', value: 'IL' } - ], - SignalAspect: [ - {label:'红', value:1}, - {label:'绿', value:2}, - {label:'黄', value:3}, - {label:'黄红', value:4}, - {label:'绿绿', value:5}, - {label:'绿黄', value:6}, - {label:'黄黄', value:7}, - {label:'黄闪黄', value:8}, - {label:'白红', value:9}, - {label:'蓝', value:10}, - {label:'白', value:11}, - {label:'红闪', value:12} - ], - SwitchIndication: [// 道岔位置定位、反位 N-定位 R-反位 NO-无(失表) EX-挤叉 - { label: '定位', value: 'N' }, - { label: '反位', value: 'R' }, - { label: '失表', value: 'NO' }, - { label: '挤叉', value: 'EX' } - ], - DriveMode: [ - { label: '自动驾驶模式', value: 'AM' }, - { label: '人工驾驶模式', value: 'CM' }, - { label: '限制人工驾驶模式', value: 'RM' }, - { label: '非限制人工驾驶模式', value: 'NRM' } - ] - } + conditionKey: '' }; }, computed: { @@ -135,6 +93,9 @@ export default { typeObj[ii.value] = ii.label; }); const list = []; + const autoList = ['ASSIST', 'CHANGE_DIRECTION', 'PICK_ASSIST', 'DEPART_ASSIST']; // 自动闭塞 + const SemiList = ['OCCLUSION', 'RECOVERY', 'ACCIDENT']; // 半自动闭塞 + const allList = [...autoList, ...SemiList]; Object.values(this.mapDevice).forEach(item => { if (typeObj[item._type]) { list.push({ @@ -143,6 +104,17 @@ export default { _type: item._type }); } + if (item._type == 'SignalButton' && allList.includes(item.type)) { + let isAuto = true; + if (SemiList.includes(item.type)) { + isAuto = false; + } + list.push({ + code: item.code, + name: `${item.name}(${isAuto ? '自动闭塞' : '半自动闭塞'})`, + _type: `${isAuto ? 'StationDirectionAuto' : 'StationDirectionSemi'}` + }); + } }); this.getRouteList.forEach(item => { list.push({ diff --git a/src/views/trainingManage/expression.vue b/src/views/trainingManage/expression.vue index 90a721381..37c334761 100644 --- a/src/views/trainingManage/expression.vue +++ b/src/views/trainingManage/expression.vue @@ -12,7 +12,7 @@
- + + + + + - + 激活 - +
- + + -
+
激活
- +
@@ -92,7 +102,6 @@ import ConstConfig from '@/scripts/ConstConfig'; export default { name: 'Expression', components:{}, - inject: ['optionObj'], props: { getDeviceList: { type: Array, @@ -111,6 +120,7 @@ export default { return { indexPath: '', field: '', + deviceType: '', formModel: { t: 'E', t1: 'S', @@ -138,15 +148,12 @@ export default { return item.value == 'V'; }); }, - deviceType() { - let type = ''; - const findObj = this.getDeviceList.find(item => { - return item.code == this.formModel.elementCode; + filterDeviceList() { + let list = []; + list = this.getDeviceList.filter(item => { + return item._type == this.deviceType; }); - if (findObj) { - type = findObj._type || ''; - } - return type; + return list; }, getSectionList() { // 区段列表 let list = []; @@ -180,6 +187,22 @@ export default { } return attr; }, + optionObj() { + const obj = { + boolean: [ + { label: '是', value: true }, + { label: '否', value: false } + ] + }; + this.materialsList.forEach(item => { + item.materials.forEach(every => { + if (every.valueList) { + obj[every.type] = every.valueList; + } + }); + }); + return obj; + }, rules() { const crules = { t: [ @@ -234,21 +257,35 @@ export default { if (this.field && this.showDevice) { const model = this.$store.state.menuOperation.selected; let code = model.code; - if (model._type == 'SignalButton') { + if (model._type == 'SignalButton' && model.signalCode) { code = model.signalCode; } - const findObj = this.getDeviceList.find(item => { + let list = this.getDeviceList; + if (this.field == 'v') { + list = this.getSectionList; + } + const findObj = list.find(item => { return item.code == code; }); if (findObj) { this.formModel[this.field] = findObj.code; } + if (this.deviceType != this.getDeviceType()) { + this.deviceType = this.getDeviceType(); + this.formModel.filedName = ''; + this.formModel.v = ''; + } this.field = ''; } } }, created() {}, methods: { + changeDeviceType() { + this.formModel.elementCode = ''; + this.formModel.filedName = ''; + this.formModel.v = ''; + }, hover(field) { this.field = field == this.field ? '' : field; this.$emit('hover', field); @@ -331,6 +368,17 @@ export default { this.formModel.t2 = 'V'; } } + this.deviceType = this.getDeviceType(); + }, + getDeviceType() { + let type = ''; + const findObj = this.getDeviceList.find(item => { + return item.code == this.formModel.elementCode; + }); + if (findObj) { + type = findObj._type || ''; + } + return type; }, clearFromData() { this.$refs.formModel.resetFields(); diff --git a/src/views/trainingManage/expressionValue.vue b/src/views/trainingManage/expressionValue.vue index 42f160f97..beafc3d5b 100644 --- a/src/views/trainingManage/expressionValue.vue +++ b/src/views/trainingManage/expressionValue.vue @@ -45,7 +45,6 @@ import ConstConfig from '@/scripts/ConstConfig'; export default { name: 'ExpressionValue', components:{}, - inject: ['optionObj'], props: { valueObj: { type: Object, @@ -91,6 +90,22 @@ export default { return arr.includes(item.value); }); }, + optionObj() { + const obj = { + boolean: [ + { label: '是', value: true }, + { label: '否', value: false } + ] + }; + this.materialsList.forEach(item => { + item.materials.forEach(every => { + if (every.valueList) { + obj[every.type] = every.valueList; + } + }); + }); + return obj; + }, valueTypeList() { let list = []; Object.values(this.optionObj).forEach(item => { @@ -106,12 +121,21 @@ export default { let value = obj.valuables[1].v; const type = this.getValueType(obj.valuables[0]); if (type) { - const list = this.optionObj[type] || []; - const findObj = list.find(item => { - return item.value == value; - }); - if (findObj) { - value = findObj.label; + if (type != 'Section') { + const list = this.optionObj[type] || []; + const findObj = list.find(item => { + return item.value == value; + }); + if (findObj) { + value = findObj.label; + } + } else { + const findObj = this.getDeviceList.find(item => { + return item.code == value; + }); + if (findObj) { + value = findObj.name; + } } } return value; From 507e01ebe8a6642d2f578a798ed06f780faece97 Mon Sep 17 00:00:00 2001 From: dong <58670809@qq.com> Date: Thu, 15 Sep 2022 09:56:51 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/trainingManage/editCondition.vue | 1 + src/views/trainingManage/expression.vue | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/views/trainingManage/editCondition.vue b/src/views/trainingManage/editCondition.vue index 649d4f706..df5fa07fe 100644 --- a/src/views/trainingManage/editCondition.vue +++ b/src/views/trainingManage/editCondition.vue @@ -258,6 +258,7 @@ export default { doShow(data, rowIndex, conditionKey) { this.dialogVisible = true; this.tabVisible = true; + this.activeIndexPath = ''; if (data) { this.tableData = [data]; } else { diff --git a/src/views/trainingManage/expression.vue b/src/views/trainingManage/expression.vue index 37c334761..5603608c3 100644 --- a/src/views/trainingManage/expression.vue +++ b/src/views/trainingManage/expression.vue @@ -44,7 +44,7 @@ 激活
- + Date: Thu, 15 Sep 2022 10:55:23 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E5=AE=9E=E8=AE=AD=E5=BD=95=E5=88=B6=20?= =?UTF-8?q?=E8=AF=84=E5=88=86=20=E4=BB=A3=E7=A0=81=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/trainingManage.js | 8 ++++++++ src/views/trainingManage/demonMenu.vue | 2 +- src/views/trainingManage/editDetails.vue | 4 ++++ src/views/trainingManage/gradeRules.vue | 6 +++--- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/api/trainingManage.js b/src/api/trainingManage.js index 978d94636..68577b0a2 100644 --- a/src/api/trainingManage.js +++ b/src/api/trainingManage.js @@ -112,6 +112,14 @@ export function getTrainingMmembers(trainingId) { }); } +/** 获取实训所有参与者 */ +export function getTrainingPlayers(trainingId) { + return request({ + url: `/api/v2/draft/training/${trainingId}/player/list`, + method: 'get' + }); +} + /** 更新所有评分规则*/ export function updateTrainingGradeRules(trainingId, data) { return request({ diff --git a/src/views/trainingManage/demonMenu.vue b/src/views/trainingManage/demonMenu.vue index 058c433fb..05bfdc10e 100644 --- a/src/views/trainingManage/demonMenu.vue +++ b/src/views/trainingManage/demonMenu.vue @@ -8,7 +8,7 @@
- + diff --git a/src/views/trainingManage/editDetails.vue b/src/views/trainingManage/editDetails.vue index 7bbfc0559..f58f0fb42 100644 --- a/src/views/trainingManage/editDetails.vue +++ b/src/views/trainingManage/editDetails.vue @@ -10,6 +10,7 @@ 实训名称:{{ editData.name || '' }}
+ 评分 预览 发布 清空步骤 @@ -252,6 +253,9 @@ export default { this.tableData[data.index].tipPosition = data.tipPosition; } }, + gradeRules() { + this.$emit('gradeRules', this.editData); + }, handleDelete(index, row) { console.log('删除', index, row); this.$confirm('确定删除该条步骤数据?', '警告', { diff --git a/src/views/trainingManage/gradeRules.vue b/src/views/trainingManage/gradeRules.vue index a7ea81b42..c583f8f1b 100644 --- a/src/views/trainingManage/gradeRules.vue +++ b/src/views/trainingManage/gradeRules.vue @@ -39,7 +39,7 @@ />