<template> <div id="main" class="h-all"> <el-container class="h-all"> <el-header height="auto"> <div class="header-button-box"> <el-button size='mini' icon="el-icon-document" type="primary" @click="save">{{$t('AlarmConfigManagement.save')}}</el-button> </div> </el-header> <!-- table数据表格 --> <el-main class="adapt-height-box"> <el-table :empty-text="$t('common.noData')" ref="multipleTable" :data="alarmLevelConfigList" header-row-class-name="table-header" cell-class-name="table-cell" class="adapt-height" height="auto" border tooltip-effect="dark" highlight-current-row stripe @selection-change="handleSelectionChange"> <el-table-column type="selection" v-if="false" width="28"> </el-table-column> <el-table-column type="index" width="50"> </el-table-column> <el-table-column prop="alarmLevel" :label="$t('AlarmConfigManagement.alarmLevel')" align="left" :formatter="alarmLevelTurnWord" :show-overflow-tooltip="true"> </el-table-column> <el-table-column prop="alarmColor" :label="$t('AlarmConfigManagement.alarmColor')" align="left" :show-overflow-tooltip="true"> <template slot-scope="scope"> <el-select size='mini' v-model="alarmLevelConfigList[scope.$index].alarmColor" :placeholder="$t('common.placeholder')" style="width: 180px" :style="{'background-color':alarmLevelConfigList[scope.$index].alarmColor}" > <el-option v-for="item in colorOptions" :key="item.value" :label="item.label" :value="item.value" :style="{'background-color':item.value}"> </el-option> </el-select> </template> </el-table-column> <el-table-column prop="alarmVoice" :label="$t('AlarmConfigManagement.alarmVoice')" align="left" :show-overflow-tooltip="true"> </el-table-column> <el-table-column label=""> <template slot-scope="scope"> <el-upload accept="music/mp3,music/mp4,music/war" class="upload-demo" :action="uploadUrl()" :on-preview="handlePreview" :on-remove="handleRemove" :before-remove="beforeRemove" :limit="1" :on-exceed="handleExceed" :on-success="successUpload" :auto-upload="true" :before-upload="beforeUpload" :file-list="fileList"> <el-button size="mini" @click="loadFileClick(scope.$index)">{{$t('common.importBtn')}}</el-button> </el-upload> </template> </el-table-column> </el-table> </el-main> </el-container> </div> </template> <script> import Vue from 'vue'; import VueResource from 'vue-resource' import ElCol from 'element-ui/packages/col/src/col' import AlarmManagerService from '@/domain/services/AlarmManagerService.js' import DeviceService from '@/domain/services/DeviceService.js' import AlarmLevelConfigService from '@/domain/services/AlarmLevelConfigService.js' import HelperUtil from "../../utils/HelperUtil"; export default { name: 'AlarmConfigManagement', data() { return { //颜色选择 colorOptions: [{ value: '#FF6347', label: this.$t('AlarmConfigManagement.red') }, { value: '#FFFF00', label: this.$t('AlarmConfigManagement.yellow') }, { value: '#FFA500', label: this.$t('AlarmConfigManagement.orange') }], colorValue0: 'color1', colorValue1: 'color2', colorValue2: 'color0', colorValue0_backup: 'color1', colorValue1_backup: 'color2', colorValue2_backup: 'color0', uploadUrl1: '', voiceValue0: 'voice0', voiceValue1: 'voice1', voiceValue2: 'voice2', fileList: [], alarmLevelConfigList: [], //报警等级配置列表 alarmLevelConfigList_backup: [], //报警等级配置列表(备份) alarmLevelListUpdate: [], //报警配置列表上传内容 alarmLevelListUpdateNum: 0, //报警配置列表上传列表长度 updateRowIndex: '', //上传文件的行数 alertContain: '', //告警等级信息修改内容 } }, created: function () { this.getAlarmConfigList(); this.getAlarmConfigList1(); }, methods: { uploadUrl: function () { //return protocal + ip + port + project + "cxf/nms/alarmconfig/uploadaudio"; return AlarmManagerService.getUplaodUrl() }, loadFileClick: function (index) { this.updateRowIndex = index; }, handleRemove(file, fileList) { console.log(file, fileList); }, handlePreview(file) { console.log(file); }, handleExceed(files, fileList) { //当前限制选择 1 个文件" this.InfoTip.warningTip(this, HelperUtil.getCheckStatusCodeObjectByCode(this.successCode.UPDATE_LIMIT_CODE)) }, beforeRemove(file, fileList) { //return this.$confirm(`确定移除 ${ file.name }?`); }, beforeUpload(file) { var FileExt = file.name.replace(/.+\./, ""); if (['mp3','wma','wav','ape','flac','ogg','aac'].indexOf(FileExt.toLowerCase()) === -1){ this.InfoTip.warningTip(this, {message: this.$t('AlarmConfigManagement.voiceTip')}) return false; } }, /** * 当成功上传的时候 */ successUpload(response, file, fileList) { console.log(file); this.alarmLevelConfigList[this.updateRowIndex].alarmVoice = file.name; this.alarmLevelConfigList_backup[this.updateRowIndex].alarmVoice = file.name; this.alarmLevelListUpdate.push(this.alarmLevelConfigList_backup[this.updateRowIndex]); this.handleAlertContain(this.alarmLevelListUpdate[0], 1); let alartContainObject = new Object(); alartContainObject.message = this.alertContain; this.InfoTip.conformTip(this, alartContainObject).then(() => { this.updateAlarmLevelVoice() }).catch(()=>{ this.alertContain = ""; }); }, /** * 获取告警配置的数据 */ getAlarmConfigList: function () { let _this = this; AlarmLevelConfigService.getNormalAlarmLevelConfig().then(result => { //成功 _this.alarmLevelConfigList = Object.values(result) }).catch(err => { //失败 _this.InfoTip.errorTip(_this, err); }) }, /** * 获取告警配置的数据(备份) */ getAlarmConfigList1: function () { let _this = this; AlarmLevelConfigService.getNormalAlarmLevelConfig().then(result => { //成功 _this.alarmLevelConfigList_backup = Object.values(result) }).catch(err => { //失败 _this.InfoTip.errorTip(_this, err); }) }, /** * 处理告警配置数据 */ handleAlarmConfigList: function () { for (let i = 0; i < this.alarmLevelConfigList.length; i++) { if (this.alarmLevelConfigList[i].alarmLevel === 0) { this.colorValue0 = this.alarmLevelConfigList[i].alarmColor; this.colorValue0_backup = this.alarmLevelConfigList[i].alarmColor; } if (this.alarmLevelConfigList[i].alarmLevel === 1) { this.colorValue1 = this.alarmLevelConfigList[i].alarmColor; this.colorValue1_backup = this.alarmLevelConfigList[i].alarmColor; } if (this.alarmLevelConfigList[i].alarmLevel === 2) { this.colorValue2 = this.alarmLevelConfigList[i].alarmColor; this.colorValue2_backup = this.alarmLevelConfigList[i].alarmColor; } } }, /** * 保存数据 */ save: function () { this.alertContain = ''; this.alarmLevelListUpdate = []; this.alarmLevelListUpdateNum = 0; let alarmLevelChangeIs = false; //用于判断告警等级的告警颜色是否发生变化 //判断是否有数据发生修改 //等级颜色 for (let i = 0; i < this.alarmLevelConfigList.length; i++) { alarmLevelChangeIs = false; //判断如果不相等 if (this.alarmLevelConfigList[i].alarmColor !== this.alarmLevelConfigList_backup[i].alarmColor) { this.alarmLevelListUpdate.push(this.alarmLevelConfigList[i]); this.alarmLevelListUpdateNum++; alarmLevelChangeIs = true; } if (this.alarmLevelConfigList[i].alarmVoice !== this.alarmLevelConfigList_backup[i].alarmVoice) { if (alarmLevelChangeIs === false) { this.alarmLevelListUpdate.push(this.alarmLevelConfigList[i]); this.alarmLevelListUpdateNum++; this.handleAlertContain(this.alarmLevelConfigList[i],1); } else { this.handleAlertContain(this.alarmLevelConfigList[i],2); } }else{ if(alarmLevelChangeIs === true){ this.handleAlertContain(this.alarmLevelConfigList[i],0); } } } if (this.alarmLevelListUpdateNum !== 0) { if(this.IsAlarmLevelColorSame(this.alarmLevelConfigList) === true){ this.InfoTip.warningTip(this, HelperUtil.getCheckStatusCodeObjectByCode(this.successCode.COLOR_SAME_CODE)) }else{ // this.$alert(this.alertContain, '修改内容', { // confirmButtonText: '确定', // }); let alartContainObject = new Object(); alartContainObject.message = this.alertContain; this.InfoTip.conformTip(this, alartContainObject).then(() => { this.updateAlarmLevel(); }).catch(()=>{ }); } }else{ //未修改任何内容!" this.InfoTip.warningTip(this, HelperUtil.getCheckStatusCodeObjectByCode(this.successCode.UNUPDATE_CODE)) } }, /** * 判断告警等级颜色是否相同 */ IsAlarmLevelColorSame:function (List) { if(List[0].alarmColor === List[1].alarmColor || List[0].alarmColor === List[2].alarmColor || List[2].alarmColor === List[1].alarmColor){ return true } return false }, /** * 告警信息修改提示内容 */ handleAlertContain: function (alarmLevelConfigListOne,type) { this.alertContain = this.alertContain + this.alarmLevelTurnName(alarmLevelConfigListOne.alarmLevel); //根据type去决定什么样的处理方式,一共三种 //0,只是修改了颜色 if(type === 0){ this.alertContain = this.alertContain + this.$t('AlarmConfigManagement.colorChange') + this.alarmLevelColorTurnName(alarmLevelConfigListOne.alarmColor) + "\n"; } //1,只是修改了声音 if(type === 1){ this.alertContain = this.alertContain + this.$t('AlarmConfigManagement.voiceChange') + alarmLevelConfigListOne.alarmVoice; } //2,修改了颜色和声音 if(type === 2){ this.alertContain = this.alertContain + this.$t('AlarmConfigManagement.colorChange') + this.alarmLevelColorTurnName(alarmLevelConfigListOne.alarmColor); this.alertContain = this.alertContain + this.$t('AlarmConfigManagement.voiceChange') + alarmLevelConfigListOne.alarmVoice; } }, /** * 上传修改值 */ updateAlarmLevel: function () { let _this = this; let loadingInstance = _this.Loading.openLoading(); AlarmManagerService.updateAlarmLevel(this.alarmLevelListUpdate).then(result => { //成功 _this.Loading.closeLoading(loadingInstance); // _this.InfoTip.successTip(_this,HelperUtil.getStatusCodeObjectByCode(_this.successCode.MODIFY_CODE)); this.getAlarmConfigList(); this.getAlarmConfigList1(); }).catch(err => { //失败 _this.Loading.closeLoading(loadingInstance); _this.InfoTip.errorTip(_this, err); }) }, /** * 上传声音修改值 */ updateAlarmLevelVoice: function () { this.alertContain = ''; let _this = this; let loadingInstance = _this.Loading.openLoading(); AlarmManagerService.updateAlarmLevel(this.alarmLevelListUpdate).then(result => { //成功 this.alarmLevelListUpdate = []; _this.Loading.closeLoading(loadingInstance); }).catch(err => { //失败 _this.Loading.closeLoading(loadingInstance); _this.InfoTip.errorTip(_this, err); }) }, /** * 告警等级转换为文字,0:警告,1:严重,2:紧急 */ alarmLevelTurnWord: function (row, column) { if (row.alarmLevel === 0) { return this.$t('AlarmConfigManagement.MinorAlarm') } else if (row.alarmLevel === 1) { return this.$t('AlarmConfigManagement.MajorAlarm') } else if (row.alarmLevel === 2) { return this.$t('AlarmConfigManagement.CriticalAlarm') } }, /** * 告警等级转换为文字 */ alarmLevelTurnName: function (alarmLevel) { if (alarmLevel === 0) { return this.$t('AlarmConfigManagement.MinorAlarm') } else if (alarmLevel === 1) { return this.$t('AlarmConfigManagement.MajorAlarm') } else if (alarmLevel === 2) { return this.$t('AlarmConfigManagement.CriticalAlarm') } }, /** * 告警等级颜色转换为文字 */ alarmLevelColorTurnName: function (alarmColor) { if (alarmColor === '#FF6347') { return this.$t('AlarmConfigManagement.red') } else if (alarmColor === '#FFFF00') { return this.$t('AlarmConfigManagement.yellow') } else if (alarmColor === '#FFA500') { return this.$t('AlarmConfigManagement.orange') } }, }, computed: { queryNodeTypeChange(){ this.colorOptions[0].label=this.$t('AlarmConfigManagement.red'); this.colorOptions[1].label=this.$t('AlarmConfigManagement.yellow'); this.colorOptions[2].label=this.$t('AlarmConfigManagement.orange'); } }, watch:{ '$i18n.locale' () { this.queryNodeTypeChange() } }, } </script> <style lang="scss" scoped> </style>