This commit is contained in:
sunzhenyu 2020-10-12 09:27:07 +08:00
commit 7d1a852322
20 changed files with 240 additions and 38 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

View File

@ -6,10 +6,24 @@ import psdSystem from '@/assets/iscs_picture/iscs-psd.png';
import psdRight from '@/assets/iscs_picture/iscs-psd-right.png'; import psdRight from '@/assets/iscs_picture/iscs-psd-right.png';
import fireBlue from '@/assets/iscs_picture/iscs-fire-blue.png'; import fireBlue from '@/assets/iscs_picture/iscs-fire-blue.png';
import fireRed from '@/assets/iscs_picture/iscs-fire-red.png'; import fireRed from '@/assets/iscs_picture/iscs-fire-red.png';
import envPersonDoor from '@/assets/iscs_picture/renfangmen.png' import envPersonDoor from '@/assets/iscs_picture/renfangmen.png';
import hand from '@/assets/iscs_picture/hand.png';
import fmBlue from '@/assets/iscs_picture/fm-blue.png';
import fmGray from '@/assets/iscs_picture/fm-gray.png';
import fmGreen from '@/assets/iscs_picture/fm-green.png';
import airCond from '@/assets/iscs_picture/kongtiao.png';
import airCondMul from '@/assets/iscs_picture/mul-kongtiao.png';
import setting from '@/assets/iscs_picture/setting.png';
import blowerRedLeft from '@/assets/iscs_picture/gufengji-red-l.png';
import blowerGrayLeft from '@/assets/iscs_picture/gufengji-gray-l.png';
import blowerRedRight from '@/assets/iscs_picture/gufengji-red-r.png';
import blowerGrayRight from '@/assets/iscs_picture/gufengji-gray-r.png';
import iscsAPF from '@/assets/iscs_picture/iscs_APF.png'; import iscsAPF from '@/assets/iscs_picture/iscs_APF.png';
import drum from '@/assets/iscs_picture/drum.png';
import exhaustFan from '@/assets/iscs_picture/exhaustFan.png'
import waterCooler from '@/assets/iscs_picture/ZSDF533.png';
import textBgBluePoint from '@/assets/iscs_picture/textBgBluePoint.png';
import ventilationFan from '@/assets/iscs_picture/ventilationFan.png'
const pictureObj = { const pictureObj = {
'psdLeft': psdLeft, 'psdLeft': psdLeft,
@ -18,7 +32,23 @@ const pictureObj = {
'APF': iscsAPF, 'APF': iscsAPF,
'envPersonDoor': envPersonDoor, 'envPersonDoor': envPersonDoor,
's': fireBlue, 's': fireBlue,
'a': fireRed 'a': fireRed,
hand,
fmBlue,
fmGray,
fmGreen,
airCond,
airCondMul,
setting,
blowerRedLeft,
blowerGrayLeft,
blowerRedRight,
blowerGrayRight,
drum,
exhaustFan,
waterCooler,
textBgBluePoint,
ventilationFan
}; };
export default class Picture extends Group { export default class Picture extends Group {
constructor(device) { constructor(device) {
@ -40,6 +70,8 @@ export default class Picture extends Group {
this.imageButton = new Image({ this.imageButton = new Image({
zlevel: model.zlevel, zlevel: model.zlevel,
z: model.z, z: model.z,
origin: [model.width/2, model.height/2],
rotation: (model.rotation||0)*Math.PI/180,
style: { style: {
x: 0, x: 0,
y: 0, y: 0,

View File

@ -1,8 +1,8 @@
<template> <template>
<el-dialog :title="title" :visible.sync="dialogVisible" width="1200px" :before-close="doClose" top="50px" center custom-class="sceneModifyOut"> <el-dialog :title="title" :visible.sync="dialogVisible" :before-close="doClose" top="50px" center custom-class="sceneModifyOut" fullscreen>
<el-form ref="form" :model="formModel" label-width="120px" class="sceneModify" @submit.native.prevent> <el-form ref="form" :model="formModel" label-width="120px" class="sceneModify" @submit.native.prevent>
<!-- :rules="rules" --> <!-- :rules="rules" -->
<el-table :data="actionList" border style="width:100%;" height="550" :span-method="objectSpanMethod"> <el-table :data="actionList" border style="width:1250px;margin: 0 auto;" height="500" :span-method="objectSpanMethod">
<el-table-column label="步骤名称" width="100"> <el-table-column label="步骤名称" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="stepVOs[scope.row.id]"> <div v-if="stepVOs[scope.row.id]">
@ -10,14 +10,15 @@
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="动作内容" width="300"> <el-table-column label="动作内容" width="350">
<template slot-scope="scope"> <template slot-scope="scope">
<!-- v-model="scope.row.id" --> <!-- v-model="scope.row.id" -->
<el-checkbox v-if="isModify" v-model="checkBoxActionList[scope.row.id].status" :disabled="checkBoxActionList[scope.row.id].disabled" class="checkBoxAction" @change="((val)=>{changeSelectActionId(val, scope.row.id, scope.$index)})" /> <el-checkbox v-if="isModify" v-model="checkBoxActionList[scope.row.id].status" :disabled="checkBoxActionList[scope.row.id].disabled" class="checkBoxAction" @change="((val)=>{changeSelectActionId(val, scope.row.id, scope.$index)})" />
<el-radio v-if="isOperate" v-model="radioBoxAction" :label="scope.row.id" name="operateAction" class="checkBoxAction" @change="((val)=>{changeSelectRadioActionId(val, scope.row.id, scope.$index)})">{{ '' }}</el-radio>
<div v-if="dialogVisible">{{ covert(scope.row) }}</div> <div v-if="dialogVisible">{{ covert(scope.row) }}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="语音识别关键词列表" width="300"> <el-table-column label="语音识别关键词列表" width="350">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="commandEvaluationRuleVOs[scope.row.id]&&commandEvaluationRuleVOs[scope.row.id].keyWords"> <div v-if="commandEvaluationRuleVOs[scope.row.id]&&commandEvaluationRuleVOs[scope.row.id].keyWords">
<el-tag v-for="(tag,index) in commandEvaluationRuleVOs[scope.row.id].keyWords" :key="index" closable :disable-transitions="false" @close="handleClose(scope.row.id,index)">{{ tag }}</el-tag> <el-tag v-for="(tag,index) in commandEvaluationRuleVOs[scope.row.id].keyWords" :key="index" closable :disable-transitions="false" @close="handleClose(scope.row.id,index)">{{ tag }}</el-tag>
@ -107,18 +108,88 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<table class="operateStatistic">
<thead>
<tr>
<th class="operateStatisticLT">
<div class="operateStatisticLIn">每一项分值</div>
</th>
<th class="operateStatisticRT">
<div class="operateStatisticLIn">运营统计项列表</div>
</th>
</tr>
</thead>
<tr>
<td class="operateStatisticLB">
<el-input-number
v-model="formModel.operationStatisticVO.score"
:style="{width: '130px'}"
:min="0"
size="small"
:max="100"
:step="1"
/>
</td>
<td class="operateStatisticRB">
<el-table :data="formModel.operationStatisticVO.itemVOS" border style="width:651px;float:left;" height="240">
<el-table-column prop="description" label="简介" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.description" type="text" :style="{width: '125px'}" size="small" :maxlength="100" />
</template>
</el-table-column>
<el-table-column prop="type" label="类型" width="150">
<template slot-scope="scope">
<el-select v-model="scope.row.type" :style="{width: '125px'}" size="small">
<el-option
v-for="option in operationItemType"
:key="option.value"
:label="option.label"
:value="option.value"
/>
</el-select>
</template>
</el-table-column>
<el-table-column prop="actionId" label="关联步骤" width="150">
<template slot-scope="scope">
<el-button v-if="scope.row.type=='Time'" type="primary" size="small" class="selectStep" @click="selectStep(scope.row.actionId,scope.$index)">选择步骤</el-button>
<div v-if="scope.row.actionId">步骤id:{{ scope.row.actionId }}</div>
<!-- <el-select v-model="scope.row.stepId" :style="{width: '125px'}" size="small">
<el-option
v-for="option in stepVOs"
:key="option.id"
:label="option.description"
:value="option.id"
/>
</el-select> -->
</template>
</el-table-column>
<el-table-column prop="standardAnswer" label="非时间标准答案" width="150">
<template slot-scope="scope">
<el-input v-if="scope.row.type=='Non_Time'" v-model="scope.row.standardAnswer" type="text" :style="{width: '125px'}" size="small" :maxlength="100" />
</template>
</el-table-column>
<el-table-column label="操作" width="50">
<template slot-scope="scope">
<span class="el-icon-error deleteScene" @click="handleDelete(scope.$index)" />
</template>
</el-table-column>
</el-table>
<el-button type="primary" size="small" class="addOperateItem" @click="addItemVO">添加</el-button>
</td>
</tr>
</table>
</el-form> </el-form>
<div style="margin-top:15px;"> <div style="margin-top:15px;width:1250px;margin-left:auto;margin-right:auto;">
<el-button v-if="!isModify" type="primary" @click="doModifyDes">编辑步骤描述</el-button> <el-button v-if="!isModify" type="primary" @click="doModifyDes">编辑步骤描述</el-button>
<el-button v-if="isModify" type="success" @click="cancleModifyDes">取消编辑步骤描述</el-button> <el-button v-if="isModify" type="success" @click="cancleModifyDes">取消编辑步骤描述</el-button>
<el-button v-if="idOperateStatistic" type="success" @click="doOperateStatistic">编辑运营统计</el-button> <!-- <el-button v-if="idOperateStatistic" type="success" @click="doOperateStatistic">编辑运营统计</el-button> -->
</div> </div>
<step-description <step-description
ref="addStepDescription" ref="addStepDescription"
@cancleDescription="cancleDescription" @cancleDescription="cancleDescription"
@submitDescription="submitDescription" @submitDescription="submitDescription"
/> />
<operate-statistic ref="operateStatistic" @submitOperateStatistic="submitOperateStatistic" /> <!-- <operate-statistic ref="operateStatistic" @submitOperateStatistic="submitOperateStatistic" /> -->
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button type="primary" @click="doSave">保存</el-button> <el-button type="primary" @click="doSave">保存</el-button>
@ -133,15 +204,15 @@ import ConstConfig from '@/scripts/ConstConfig';
import Cookies from 'js-cookie'; import Cookies from 'js-cookie';
import {getScriptByIdNew} from '@/api/script'; import {getScriptByIdNew} from '@/api/script';
import StepDescription from './stepDescription'; import StepDescription from './stepDescription';
import OperateStatistic from './operateStatistic'; // import OperateStatistic from './operateStatistic';
import {covertOperate} from '@/views/newMap/displayNew/scriptDisplay/component/covertOperation'; import {covertOperate} from '@/views/newMap/displayNew/scriptDisplay/component/covertOperation';
import {updateCompetitionPracticalStep, getCompetitionPracticalSceneById} from '@/api/competition'; import {updateCompetitionPracticalStep, getCompetitionPracticalSceneById} from '@/api/competition';
import {getPublishMapDetailById} from '@/api/jmap/map'; import {getPublishMapDetailById} from '@/api/jmap/map';
export default { export default {
name:'ModifyStep', name:'ModifyStep',
components:{ components:{
StepDescription, StepDescription
OperateStatistic // OperateStatistic
}, },
props: { props: {
title:{ title:{
@ -154,10 +225,14 @@ export default {
data() { data() {
return { return {
isModify:false, isModify:false,
isOperate:false,
dialogVisible:false, dialogVisible:false,
currentSelectStep:'',
actionList:[], actionList:[],
memberList:[], memberList:[],
operationItemType:[{label:'时间', value:'Time'}, {label:'非时间', value:'Non_Time'}],
checkBoxActionList:[], checkBoxActionList:[],
radioBoxAction:'',
commandEvaluationRuleVOs:{}, commandEvaluationRuleVOs:{},
currentstepAction:[], currentstepAction:[],
startArray:[], startArray:[],
@ -173,7 +248,10 @@ export default {
scriptId:'', scriptId:'',
commandEvaluationRuleVOs:[], commandEvaluationRuleVOs:[],
stepVOs:[], stepVOs:[],
operationStatisticVO:{} operationStatisticVO:{
score:'',
itemVOS:[]
}
} }
}; };
}, },
@ -215,6 +293,8 @@ export default {
this.commandEvaluationRuleVOs = commandEvaluationRuleVOs; this.commandEvaluationRuleVOs = commandEvaluationRuleVOs;
if (response.data.operationStatisticVO) { if (response.data.operationStatisticVO) {
this.formModel.operationStatisticVO = response.data.operationStatisticVO; this.formModel.operationStatisticVO = response.data.operationStatisticVO;
} else {
this.formModel.operationStatisticVO = {score:0, itemVOS:[]};
} }
this.stepVOs = stepVOs; this.stepVOs = stepVOs;
}); });
@ -396,13 +476,13 @@ export default {
}); });
}, },
doConfirm() { doConfirm() {
this.doUpdate(null); this.doUpdate();
this.doClose(); this.doClose();
}, },
doSave() { doSave() {
this.doUpdate(null); this.doUpdate();
}, },
doUpdate(operationStatisticVO) { doUpdate() {
let commandEvaluationRuleVOs = Object.values(this.commandEvaluationRuleVOs); let commandEvaluationRuleVOs = Object.values(this.commandEvaluationRuleVOs);
const stepVOs = Object.values(this.stepVOs); const stepVOs = Object.values(this.stepVOs);
commandEvaluationRuleVOs = commandEvaluationRuleVOs.filter(eachData=>{ commandEvaluationRuleVOs = commandEvaluationRuleVOs.filter(eachData=>{
@ -423,10 +503,25 @@ export default {
delete data.deductScoreVisible; delete data.deductScoreVisible;
}); });
} }
// && operationStatisticVO.itemVOS const itemVOS = this.formModel.operationStatisticVO.itemVOS;
if (operationStatisticVO) { if (itemVOS.length > 0) {
this.formModel.operationStatisticVO = operationStatisticVO; let result = true;
itemVOS.forEach(item=>{
delete item.id;
if (item.description && (item.actionId || item.standardAnswer)) {
result = result && true;
} else {
result = result && false;
} }
});
if (!result) {
this.$messageBox('请填写运营统计项列表');
return false;
}
}
// if (operationStatisticVO) {
// this.formModel.operationStatisticVO = operationStatisticVO;
// }
this.formModel.commandEvaluationRuleVOs = commandEvaluationRuleVOs; this.formModel.commandEvaluationRuleVOs = commandEvaluationRuleVOs;
this.formModel.stepVOs = stepVOs; this.formModel.stepVOs = stepVOs;
updateCompetitionPracticalStep(this.formModel).then(res=>{ updateCompetitionPracticalStep(this.formModel).then(res=>{
@ -460,6 +555,11 @@ export default {
this.currentstepAction.splice(data, 1); this.currentstepAction.splice(data, 1);
} }
}, },
changeSelectRadioActionId(val, actionId, index) {
this.formModel.operationStatisticVO.itemVOS[this.currentSelectStep].actionId = actionId;
this.isOperate = false;
this.currentSelectStep = '';
},
cancleDescription() { cancleDescription() {
this.currentstepAction.forEach(data=>{ this.currentstepAction.forEach(data=>{
this.checkBoxActionList[data.actionId].status = false; this.checkBoxActionList[data.actionId].status = false;
@ -517,8 +617,19 @@ export default {
} }
} }
}, },
doOperateStatistic() { // doOperateStatistic() {
this.$refs.operateStatistic.doShow(this.stepVOs, this.formModel.operationStatisticVO); // this.$refs.operateStatistic.doShow(this.stepVOs, this.formModel.operationStatisticVO);
// },
handleDelete(index) {
this.formModel.operationStatisticVO.itemVOS.splice(index, 1);
},
addItemVO() {
this.formModel.operationStatisticVO.itemVOS.push({'description':'', actionId:'', type:'Time'});
},
selectStep(actionId, index) {
this.currentSelectStep = index;
this.radioBoxAction = actionId;
this.isOperate = true;
} }
} }
@ -538,6 +649,46 @@ export default {
} }
.button-new-tag{ .button-new-tag{
margin-bottom:10px; margin-bottom:10px;
}
.operateStatistic{
width: 1250px;
margin: 15px auto;
border: 1px #EBEEF5 solid;
}
.operateStatisticLT{
width: 300px;
padding: 10px;
border-bottom: 1px #EBEEF5 solid;
border-right: 1px solid #EBEEF5;
}
.operateStatisticLB{
padding: 10px;
border-right: 1px solid #EBEEF5;
}
.operateStatisticRT{
width: 950px;
padding: 10px;
border-bottom: 1px #EBEEF5 solid;
}
.operateStatisticRB{
padding: 10px;
}
.operateStatisticLIn{
text-align: left;
padding-left: 5px;
color: #909399;
}
.addOperateItem{
margin-left: 20px;
margin-top: 200px;
}
.deleteScene{
font-size: 24px;
color: #f00;
cursor: pointer;
}
.selectStep{
} }
</style> </style>
<style lang="scss"> <style lang="scss">

View File

@ -9,6 +9,9 @@
<el-option v-for="(item, index) in typeList" :key="index" :label="item.name" :value="item.value" /> <el-option v-for="(item, index) in typeList" :key="index" :label="item.name" :value="item.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="旋转角度:" prop="rotation">
<el-input-number v-model="form.rotation" controls-position="right" size="small" />
</el-form-item>
<el-form-item label="宽度:" prop="width"> <el-form-item label="宽度:" prop="width">
<el-input-number v-model="form.width" controls-position="right" :min="1" size="small" /> <el-input-number v-model="form.width" controls-position="right" :min="1" size="small" />
</el-form-item> </el-form-item>
@ -48,6 +51,7 @@ export default {
size: 10, size: 10,
width: 50, width: 50,
height: 50, height: 50,
rotation: 0,
x: 10, x: 10,
y: 10 y: 10
}, },
@ -59,6 +63,22 @@ export default {
{ name: '蓝色FIRE', value: 's'}, { name: '蓝色FIRE', value: 's'},
{ name: '红色FIRE', value: 'a'}, { name: '红色FIRE', value: 'a'},
{ name: 'APF', value: 'APF'}, { name: 'APF', value: 'APF'},
{ name: '手动阀', value: 'hand'},
{ name: '蓝色-阀门', value: 'fmBlue'},
{ name: '灰色-阀门', value: 'fmGray'},
{ name: '绿色-阀门', value: 'fmGreen'},
{ name: '空调', value: 'airCond'},
{ name: '多联空调', value: 'airCondMul'},
{ name: '管件', value: 'setting'},
{ name: '汽包', value: 'drum' },
{ name: '红色-左侧-鼓风机', value: 'blowerRedLeft'},
{ name: '灰色-左侧-鼓风机', value: 'blowerGrayLeft'},
{ name: '红色-右侧-鼓风机', value: 'blowerRedRight'},
{ name: '灰色-右侧-鼓风机', value: 'blowerGrayRight'},
{ name: '排风机', value: 'exhaustFan' },
{ name: '冷水机', value: 'waterCooler'},
{ name: '顶部排风机', value: 'ventilationFan'},
{ name: '文字蓝色背景', value: 'textBgBluePoint'}
], ],
rules: { rules: {
@ -86,6 +106,7 @@ export default {
this.form.code = model.code; this.form.code = model.code;
this.form.type = model.type; this.form.type = model.type;
this.form.size = model.size; this.form.size = model.size;
this.form.rotation = model.rotation;
this.form.width = model.width; this.form.width = model.width;
this.form.height = model.height; this.form.height = model.height;
this.form.x = model.point.x; this.form.x = model.point.x;
@ -107,6 +128,7 @@ export default {
_type: 'IscsPicture', _type: 'IscsPicture',
type: this.form.type, type: this.form.type,
size: this.form.size, size: this.form.size,
rotation: this.form.rotation,
width: this.form.width, width: this.form.width,
height: this.form.height height: this.form.height
}; };
@ -126,7 +148,8 @@ export default {
code: this.form.code, code: this.form.code,
_type: 'IscsPicture', _type: 'IscsPicture',
type: this.form.type, type: this.form.type,
size: this.form.size size: this.form.size,
rotation: this.form.rotation,
}; };
this.$emit('deleteDataModel', rectModel); this.$emit('deleteDataModel', rectModel);
}, },
@ -138,6 +161,7 @@ export default {
code: '', code: '',
type: '', type: '',
size: 10, size: 10,
rotation: 0,
width: 50, width: 50,
height: 50, height: 50,
x: 10, x: 10,

View File

@ -114,15 +114,6 @@ export default {
}).catch(() => { }).catch(() => {
this.$message.error('ISCS数据保存异常'); this.$message.error('ISCS数据保存异常');
}); });
// {
// "graphData": "string",
// "id": 0,
// "lineCode": "string",
// "stationCode": "string",
// "system": "string",
// "totalSystem": "string",
// "userInterface": "string"
// }
} }
} }
}; };

View File

@ -57,6 +57,7 @@ export default {
}; };
if (this.stationId == 'mainHouseOne' || this.stationId == 'mainHouseTwo') { if (this.stationId == 'mainHouseOne' || this.stationId == 'mainHouseTwo') {
this.bacground = 'rgba(0,0,0,0)'; this.bacground = 'rgba(0,0,0,0)';
this.scaleRate = window.innerWidth / 2200;
if (this.stationId == 'mainHouseOne') { if (this.stationId == 'mainHouseOne') {
this.title = '黄山主变电所接线图'; this.title = '黄山主变电所接线图';
} else { } else {
@ -72,14 +73,17 @@ export default {
params.userInterface = 'hybrid'; params.userInterface = 'hybrid';
} else if (this.stationId == 'parkingLot') { } else if (this.stationId == 'parkingLot') {
this.title = '清凉山停车场接触网图'; this.title = '清凉山停车场接触网图';
this.scaleRate = window.innerWidth / 2000;
this.bacground = 'rgba(0,0,0,0)'; this.bacground = 'rgba(0,0,0,0)';
params.userInterface = 'catenary'; params.userInterface = 'catenary';
} else if (this.stationId == 'stationDepot') { } else if (this.stationId == 'stationDepot') {
this.title = '新店车辆段接触网图'; this.title = '新店车辆段接触网图';
this.bacground = 'rgba(0,0,0,0)'; this.bacground = 'rgba(0,0,0,0)';
this.scaleRate = window.innerWidth / 2000;
params.userInterface = 'catenary'; params.userInterface = 'catenary';
} else { } else {
this.title = this.stationName + '牵引降压混合变电所主接线图'; this.title = this.stationName + '牵引降压混合变电所主接线图';
this.scaleRate = window.innerWidth / 2200;
this.bacground = 'rgba(0,0,0,0)'; this.bacground = 'rgba(0,0,0,0)';
params.userInterface = 'combined'; params.userInterface = 'combined';
} }