Commit f39055f3 authored by yanzhongrong's avatar yanzhongrong

feeder all

parent aacebaea
<template>
<div id="app">
<router-view />
<audio id="my_audio" ref="audio" src="./assets/audio/urgent.wav" muted autoplay />
<audio ref="audio" src="./assets/audio/urgent.wav" muted="true" loop="false" />
<transition name="tipalerm">
<div v-if="tflag" class="tips">
<p>提示</p>
......@@ -29,7 +29,7 @@ export default {
alevel: {
color: ''
},
audioUrl: '',
audioUrl: '/assets/audio/urgent.wav',
audioObj: {
'一般': 'commonly.wav',
'重要': 'importang.wav',
......@@ -40,9 +40,7 @@ export default {
},
computed: {
...mapState('user', ['userBaseInfo', 'token']),
userId() {
return this.userBaseInfo.userId
},
...mapState('alarm', ['cableList', 'deviceList']),
usertoken() {
return this.token
}
......@@ -51,8 +49,6 @@ export default {
$route(to, from) {
if (to.path === '/login') {
setTimeout(this.closeWebsocket(), 300)
// this.websocket.close()
console.log('在登录页')
}
},
usertoken: {
......@@ -62,14 +58,33 @@ export default {
if (newV !== '') {
this.websocket = socket({ onmessage: this.receiveMessage })
} else {
this.closeWebsocket();
this.closeWebsocket()
}
}
}
},
cableList: {
handler(newV) {
if (newV.length || this.deviceList.length) {
setTimeout(() => {
this.$refs.audio.play()
this.$refs.audio.loop = true
}, 500)
} else {
this.$refs.audio.loop = false
}
}
}
},
mounted() {
let audioPlay = document.getElementById('my_audio')
document.body.addEventListener(
'mousedown',
() => {
this.$refs.audio.muted = false
document.body.removeEventListener('mousedown', () => {})
},
false
)
EventBus.$on('dialogAlarm', (data) => {
// 接收消息之后 声音弹窗显示
this.msg = data
......@@ -82,14 +97,19 @@ export default {
EventBus.$on('autioPlay', (data) => {
this.audioUrl = './assets/audio/' + this.audioObj[data.level]
setTimeout(() => {
audioPlay.play()
this.$refs.audio.play()
}, 500)
if (this.cableList.length || this.deviceList.length) {
this.$refs.audio.loop = true
}
})
EventBus.$on('cancelWS', () => {
this.websocket.close()
console.log('关闭ws')
this.closeWebsocket()
})
},
destroyed() {
document.body.removeEventListener('mousedown', () => {})
},
methods: {
receiveMessage,
closeWebsocket() {
......
......@@ -11,6 +11,7 @@ const path = {
exportFsu: "fsu/export",
exportMonitorEquip: "monitorEquip/export",
exportLeaky: "leakyCable/export",
exportFeeder: "antennaFeeder/export",
// 实时状态
exportLeakyCableTime: 'sysLeakyCableStatus/export',
......@@ -56,6 +57,9 @@ export function exportMonitorEquip() {
export function exportLeaky() {
return requestBlob(path.exportLeaky, ...arguments)
}
export function exportFeeder() {
return requestBlob(path.exportFeeder, ...arguments)
}
export function exportLeakyCableTime() {
......
......@@ -25,6 +25,7 @@ function dispatchWithPromise(path) {
const beforeEnterApp = () => {
dispatchWithPromise('depart/getDepart')
dispatchWithPromise('user/getInfo')
dispatchWithPromise('alarm/getAlarmList')
}
beforeEnterApp()
......
......@@ -5,7 +5,7 @@ import app from './modules/app'
import settings from './modules/settings'
import user from './modules/user'
import depart from './modules/depart'
import alarm from './modules/alarm'
Vue.use(Vuex)
......@@ -16,6 +16,7 @@ const store = new Vuex.Store({
settings,
user,
depart,
alarm
},
getters
})
......
import { deptList } from '@/api/baseData'
import { cableTimeList, deviceList } from '@/views/alarm/api.js'
const getDefaultState = () => {
return {
cableList: null,
deviceList: null
cableList: [],
deviceList: []
}
}
......@@ -13,38 +13,64 @@ const mutations = {
RESET_STATE: state => {
Object.assign(state, getDefaultState())
},
SET_DEPART: (state, payload) => {
state.departList = handleDepart(payload)
state.departMap = listToMap(payload)
SET_CABLE: (state, payload) => {
state.cableList = handleCable(payload)
},
SET_DEVICE: (state, payload) => {
state.deviceList = handleAlarm(payload)
}
}
const actions = {
getDepart({ commit }) {
deptList({}).then(res => {
if (!res) return
commit('SET_DEPART', res)
getAlarmList({ commit }, resolve) {
Promise.all([
cableTimeList({ confirmStatus: 0 }),
deviceList({ confirmStatus: 0 })
]).then(res => {
commit('SET_CABLE', res[0].records.filter(item => { item.alarmLevel !== 1 }))
commit('SET_DEVICE', res[1].records.filter(item => item.connectStatusName === '连接异常'))
resolve && resolve()
})
},
getCableTime({ commit }) {
cableTimeList({ confirmStatus: 0 }).then(res => {
commit('SET_CABLE', res.records.filter(item => item.alarmLevel !== 1))
})
},
getDevice({ commit }) {
return deviceList({ confirmStatus: 0 }).then(res => {
commit('SET_DEVICE', res.records.filter(item => item.connectStatusName === '连接异常'))
})
}
}
const getters = {
departMap(state) {
return state.departMap
cableList(state) {
return state.cableList
},
departList(state) {
return state.departList
deviceList(state) {
return state.deviceList
}
}
function handleDepart(list) {
function handleAlarm(list) {
if (!list) return
return list.map(item => {
const data = {}
data.id = item.id
data.value = item.connectStatusName
data.data = item
return data
})
}
function handleCable(list) {
if (!list) return
return list.map(item => {
const data = {}
data.label = item.dictValue
data.name = item.dictValue
data.id = item.id
data.value = item.id
data.alarmLevel = item.alarmLevel
data.value = item.alarmLevelName
data.data = item
return data
})
......
import Vue from 'vue'
const EventBus = new Vue()
export default EventBus
\ No newline at end of file
export default EventBus
export default function (res, type, fileName = '') {
export default function(res, type, fileName = '') {
let blob = new Blob([res], { type: `application/${type}` })
let a = document.createElement('a')
let url = window.URL.createObjectURL(blob)
a.href = url
a.download = fileName
a.click()
}
\ No newline at end of file
}
......@@ -7,7 +7,7 @@ const path = {
deviceList: 'sysConnectAlarm/selectPage',
deviceConfirm: 'sysConnectAlarm/confirm',
deviceCancel: 'sysConnectAlarm/cancel',
deviceCancel: 'sysConnectAlarm/cancel'
}
export function cableTimeList() {
......
......@@ -280,6 +280,7 @@ export default {
let id = dialogInfo.id
cableConfirm({ id: id }).then((res) => {
this.getTableData()
this.$store.dispatch('alarm/getCableTime')
})
this.centerDialogVisible = false
},
......
<template>
<div>
<el-form class="search-form" :model="form" ref="form" label-width="80px" :inline="true" size="mini">
<el-form-item label="网元设备" >
<el-form class="search-form" ref="form" :model="form" label-width="80px" :inline="true" size="mini">
<el-form-item label="网元设备">
<el-input v-model="form.pointDeviceName" clearable placeholder="请输入网元设备"></el-input>
</el-form-item>
<el-form-item label="上传时间">
<el-date-picker
<el-date-picker
v-model="dateRange"
type="daterange"
range-separator="至"
......@@ -16,8 +15,8 @@
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="success" @click="toSearch">查询</el-button>
<el-button type="primary" @click="reset">重置</el-button>
<el-button type="success" @click="toSearch">查询</el-button>
<el-button type="primary" @click="reset">重置</el-button>
</el-form-item>
</el-form>
</div>
......@@ -26,15 +25,14 @@
<script>
import { ConnectStatusEnum } from '@/const/index'
export default {
name: 'search',
name: 'Search',
data() {
return {
form: formInit(),
ConnectStatusEnum,
dateRange: [],
dateRange: []
}
},
mounted() {
},
methods: {
......@@ -47,7 +45,7 @@ export default {
this.dateRange = []
this.form = formInit()
this.$emit('search')
},
}
}
}
......@@ -55,8 +53,8 @@ function formInit() {
return {
pointDeviceName: '',
pointConnectStatus: '',
startUploadTime:'',
endUploadTime:''
startUploadTime: '',
endUploadTime: ''
}
}
</script>
......
......@@ -170,6 +170,12 @@ export default {
exids: []
}
},
mounted() {
this.getTableData()
},
created() {
this.searchOption = this.$route.query
},
methods: {
// 表格背景图颜色
cellClassFn({ row, column, rowIndex, columnIndex }) {
......@@ -233,6 +239,7 @@ export default {
let id = dialogInfo.id;
deviceConfirm({ id: id }).then((res) => {
this.getTableData();
this.$store.dispatch('alarm/getDevice')
});
this.centerDialogVisible = false;
},
......@@ -255,7 +262,6 @@ export default {
this.confirmStatus = item.key;
this.getTableData();
},
exportList() {
if (this.exids.length == 0) {
this.$message.warning("暂无数据");
......@@ -263,18 +269,11 @@ export default {
} else {
exportConnet({ ids: this.exids }).then((res) => {
download(res, "vnd.ms-excel", `设备连接告警.xls`);
});
})
}
},
},
mounted() {
this.getTableData();
},
created() {
console.log(this.$route.query);
this.searchOption =this.$route.query
},
};
}
}
}
</script>
<style lang="scss" scoped>
......
......@@ -14,6 +14,7 @@ import Type2 from "./type2.vue";
import Type3 from "./type3.vue";
import Type4 from "./type4.vue";
import Type5 from "./type5.vue";
import Type6 from "./type6.vue";
export default {
data() {
......@@ -40,6 +41,7 @@ export default {
Type3,
Type4,
Type5,
Type6,
},
methods: {
toUpdate() {
......
......@@ -199,21 +199,34 @@
<div slot="header" class="clearfix posa">
<span>当前状态</span>
</div>
<div>
<el-row v-for="(item, i) in statusAlarmfun" class="text" :gutter="24">
<div>
<el-row
v-for="(item, i) in statusAlarmfun"
class="text"
:gutter="24"
>
<el-col :span="10">
<div class="item_name">{{ item.name }}</div>
</el-col>
<el-col :span="8">
<div class="item_data levelData" >{{item.value}}</div>
</el-col>
<el-col :span="6"
><el-button class="alarmbtn" type="primary" size="mini" v-if="item.value == '连接异常' || item.value == '紧急' || item.value == '重要' || item.value == '一般'"
@click="toalarm(item.value)" >处理告警</el-button
<div class="item_data levelData">{{ item.value }}</div>
</el-col>
<el-col :span="6"
><el-button
class="alarmbtn"
type="primary"
size="mini"
v-if="
item.value == '连接异常' ||
item.value == '紧急' ||
item.value == '重要' ||
item.value == '一般'
"
@click="toalarm(item.name)"
>处理告警</el-button
></el-col
>
</el-row>
</div>
</el-card>
</el-col>
......@@ -239,6 +252,29 @@ export default {
]
};
},
computed: {
statusAlarmfun() {
if (this.form.status) {
return this.form.status;
} else {
return this.defaultList
}
},
},
watch: {
statusAlarmfun: {
immediate: true,
handler(newV) {
if (newV) {
this.$nextTick(function () {
this.levelcolor2();
});
}
},
},
},
methods: {
savebtn() {
this.flag = true;
......@@ -247,69 +283,43 @@ export default {
});
},
levelcolor2() {
let la = document.getElementsByClassName("levelData");
let la = document.getElementsByClassName("levelData")
for (var i = 0; i < this.statusAlarmfun.length; i++) {
if (la[i].innerHTML == "连接正常") {
la[i].style.color = "green";
la[i].innerHTML = "连接正常"
} if (la[i].innerHTML == "连接异常") {
la[i].style.color = "#f00";
la[i].innerHTML = "告警"
la[i].innerHTML = "告警"
} if (la[i].innerHTML == "正常") {
la[i].style.color = "green";
} if (la[i].innerHTML == "紧急") {
la[i].style.color = "#f00";
} if (la[i].innerHTML == "重要") {
} if (la[i].innerHTML == "重要") {
la[i].style.color = "#f89850";
la[i].innerHTML = "重要告警"
} if (la[i].innerHTML == "一般") {
la[i].style.color = "#ead906";
la[i].innerHTML = "一般告警"
la[i].innerHTML = "一般告警"
}
}
},
toalarm(data){
console.log(data);
let topath = ''
if (data == '告警') {
topath = '/alarm/device'
} else{
topath = '/alarm/cableTime'
}
toalarm(data) {
let topath = ''
if (data === '设备状态') {
topath = '/alarm/device'
} else {
topath = '/alarm/cableTime'
}
this.$router.push({
path: topath,
query: {
siteId :this.form.baseInfo.id
},
});
},
},
mounted() {},
computed: {
statusAlarmfun() {
if (this.form.status) {
return this.form.status;
} else {
return this.defaultList
}
},
},
watch: {
statusAlarmfun: {
immediate: true,
handler(newV) {
if (newV) {
this.$nextTick(function () {
this.levelcolor2();
});
siteId: this.form.baseInfo.id
}
},
},
},
};
})
}
}
}
</script>
<style lang="scss" scoped>
......
......@@ -159,14 +159,14 @@
<div class="item_data">{{ form.baseInfo.sendPower }}</div>
</el-col>
</el-row>
<el-row class="text" :gutter="24">
<!-- <el-row class="text" :gutter="24">
<el-col :span="10">
<div class="item_name">漏缆接头数量</div>
</el-col>
<el-col :span="colspan">
<div class="item_data">{{ form.baseInfo.kmSign }}</div>
</el-col>
</el-row>
</el-row> -->
<el-row class="text" :gutter="24">
<el-col :span="10">
<div class="item_name">跳线长度</div>
......
This diff is collapsed.
......@@ -126,6 +126,30 @@ export function formInit5(data = {}) {
...data
}
}
export function formInit6(data = {}) {
return {
deviceStatus: null,
baseInfo: {
antennaFeederLength: null,
equipId: null,
fsuId: null,
feederLossMeters: null,
inserterLength: null,
jumperLength: null,
feederCode: "",
feederDescribe: "",
feederLength: null,
feederModel: "",
reductRatio: null,
sendPower: null,
siteId: null,
wayId: null,
},
log: 0,
loss: 0,
...data
}
}
let formFuncData = {
1: formInit1,
......@@ -133,6 +157,7 @@ let formFuncData = {
3: formInit3,
4: formInit4,
5: formInit5,
6: formInit6,
};
export function formInit(type) {
......
......@@ -149,6 +149,7 @@ export default {
if (!token) return
this.$store.commit('user/SET_TOKEN', token)
this.$store.commit('user/SET_USERID', userId)
this.$store.dispatch('user/getInfo')
setToken(token)
this.$router.push({ path: '/' })
},
......
<template>
<div>
<el-form
ref="leakyCableForm"
:model="leakyCableForm"
:rules="rules"
label-width="200px"
class="form"
>
<el-form-item label="所在铁路线:" prop="wayId">
<el-select
v-model="leakyCableForm.wayId"
placeholder="请选择铁路线"
@change="changerailWay()"
>
<el-option
v-for="item in railWaySelect"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="所在站点:" prop="siteId">
<el-select
v-model="leakyCableForm.siteId"
placeholder="请选择站点"
@change="changesite()"
>
<el-option
v-for="item in stationSelect2"
:key="item.id"
:label="item.siteName"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="所在FSU:" prop="fsuId">
<el-select
v-model="leakyCableForm.fsuId"
placeholder="请选择FSU"
@change="changefsu()"
>
<el-option
v-for="item in fsuSelect2"
:key="item.id"
:label="item.equipName"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="所在监测设备:" prop="equipId">
<el-select
v-model="leakyCableForm.equipId"
placeholder="请选择监测设备"
>
<el-option
v-for="item in monitor2"
:key="item.id"
:label="item.equipName"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="天馈线编号:" prop="feederCode">
<el-input
v-model="leakyCableForm.feederCode"
placeholder="请输入天馈线编号"
/>
</el-form-item>
<el-form-item label="天馈线描述:" prop="feederDescribe">
<el-input
v-model="leakyCableForm.feederDescribe"
placeholder="请输入天馈线描述"
/>
</el-form-item>
<el-form-item label="天馈线型号:" prop="feederModel">
<el-input
v-model="leakyCableForm.feederModel"
placeholder="请输入天馈线型号"
/>
</el-form-item>
<el-form-item label="天馈线长度:" prop="feederLength">
<el-input
v-model="leakyCableForm.feederLength"
placeholder="请输入天馈线长度"
/>
</el-form-item>
<el-form-item label="天馈线百米损耗:" prop="feederLossMeters">
<el-input
v-model="leakyCableForm.feederLossMeters"
placeholder="请输入天馈线百米损耗"
/>
</el-form-item>
<el-form-item label="天馈线速度衰减系数:" prop="reductRatio">
<el-input
v-model="leakyCableForm.reductRatio"
placeholder="请输入天馈线速度衰减系数"
/>
</el-form-item>
<el-form-item label="天馈线测试信号发射功率:" prop="sendPower">
<el-input
v-model="leakyCableForm.sendPower"
placeholder="请输入天馈线测试信号发射功率"
/>
</el-form-item>
<el-form-item label="跳线长度:" prop="jumperLength">
<el-input
v-model="leakyCableForm.jumperLength"
placeholder="请输入跳线长度"
/>
</el-form-item>
<el-form-item label="插入器长度:" prop="inserterLength">
<el-input
v-model="leakyCableForm.inserterLength"
placeholder="请输入插入器长度"
/>
</el-form-item>
</el-form>
<div class="btn">
<el-button type="primary" @click="reset">重置</el-button>
<el-button type="primary" @click="submit">确认提交</el-button>
</div>
</div>
</template>
<script>
import {
antennaFeederSave,
selectForSite,
selectForFsu,
selectForEquip,
railWaylist,
} from "../../api";
import { successAlert, warningAlert } from "@/utils/alert";
export default {
props: [],
components: {},
data() {
return {
railWaySelect: [],
stationSelect2: [],
fsuSelect2: [],
monitor2: [],
FSUrailway: [],
leakyCableForm: formInit(),
params: {
current: 1,
size: 10,
},
rules: {
wayId: [{ required: true, message: "请选择铁路线", trigger: "blur" }],
siteId: [{ required: true, message: "请选择站点", trigger: "blur" }],
fsuId: [{ required: true, message: "请选择FSU", trigger: "blur" }],
equipId: [
{ required: true, message: "请选择监测设备", trigger: "blur" },
],
feederLength: [
{ required: true, message: "请输入天馈线长度", trigger: "blur" },
],
// feederLossMeters: [
// { required: true, message: "请输入天馈线百米损耗", trigger: "blur" },
// ],
inserterLength: [
{ required: true, message: "请输入插入器长度", trigger: "blur" },
],
jumperLength: [
{ required: true, message: "请输入跳线长度", trigger: "blur" },
],
feederCode: [
{ required: true, message: "请输入天馈线编号", trigger: "blur" },
],
feederDescribe: [
{ required: true, message: "请输入天馈线描述", trigger: "blur" },
],
feederModel: [
{
required: true,
message: "请输入天馈线型号",
trigger: "blur",
},
],
reductRatio: [
{
required: true,
message: "请输入天馈线速度衰减系数",
trigger: "blur",
},
],
sendPower: [
{
required: true,
message: "请输入天馈线测试信号发射功率",
trigger: "blur",
},
],
},
};
},
computed: {},
methods: {
changerailWay() {
selectForSite({ wayId: this.leakyCableForm.wayId }).then((res) => {
this.stationSelect2 = res;
});
},
changesite() {
selectForFsu({ siteId: this.leakyCableForm.siteId }).then((res) => {
this.fsuSelect2 = res;
});
},
changefsu() {
selectForEquip({ fsuId: this.leakyCableForm.fsuId }).then((res) => {
this.monitor2 = res;
});
},
reset() {
this.$refs.leakyCableForm.resetFields();
},
submit() {
this.$refs.leakyCableForm.validate((valid) => {
if (valid) {
antennaFeederSave(this.leakyCableForm).then((res) => {
if (res.code == 200) {
successAlert("添加成功");
} else {
warningAlert("添加失败");
}
});
}
this.leakyCableForm = formInit();
});
},
getAllWay() {
railWaylist(this.params).then((res) => {
this.railWaySelect = res.records;
if (res.total > this.params.size) {
this.params.size = res.total;
this.getAllWay();
}
});
},
},
mounted() {
this.getAllWay();
},
};
function formInit(data = {}) {
return {
parentId: "",
siteId: "",
fsuId: "",
equipId: "",
feederLossMeters: "",
inserterLength: 0,
jumperLength: 0,
feederCode: "",
feederDescribe: "",
feederLength: 0,
feederModel: "",
parentId: 0,
reductRatio: 0,
sendPower: 0,
...data,
};
}
</script>
<style lang="scss" scoped>
.form {
padding: 20px 0;
width: 600px;
margin: 0 auto;
}
.btn {
padding: 20px 0 50px 0;
text-align: center;
}
</style>
......@@ -36,6 +36,7 @@
<el-tab-pane label="天馈线" name="5">
<div v-if="activeName === '5'" class="content">
<div class="content-title">添加天馈线</div>
<antennaFeeder />
</div>
</el-tab-pane>
</el-tabs>
......@@ -49,13 +50,15 @@ import monitorEquip from "./comp/monitorEquip.vue";
import station from "./comp/station.vue";
import FSU from "./comp/FSU.vue";
import leakyCable from "./comp/leakyCable.vue";
import antennaFeeder from "./comp/line.vue";
export default {
components: {
monitorEquip,
station,
railWay,
FSU,
leakyCable
leakyCable,
antennaFeeder
},
data() {
return {
......
......@@ -37,6 +37,11 @@ const path = {
leakyCablebatchDelete: 'leakyCable/batchDeleteEquip',
leakyCableselectList: 'leakyCable/selectList',
selectForCable: 'leakyCable/selectForCable',
antennaFeederSave: 'antennaFeeder/save',
antennaFeederDelete: 'antennaFeeder/batchDeleteEquip',
antennaFeederDetail: 'antennaFeeder/detail',
antennaFeederList: 'antennaFeeder/selectFeederPage',
}
// 铁路线
export function railWaylist() {
......@@ -64,8 +69,6 @@ export function railWayselectList() {
export function selectForSite() {
return request.post(path.selectForSite, ...arguments)
}
export function sitelist() {
return request.post(path.sitelist, ...arguments)
}
......@@ -154,3 +157,16 @@ export function selectForCable() {
return request.post(path.selectForCable, ...arguments)
}
// 天馈线
export function antennaFeederSave() {
return request.post(path.antennaFeederSave, ...arguments)
}
export function antennaFeederDelete() {
return request.post(path.antennaFeederDelete, ...arguments)
}
export function antennaFeederDetail() {
return request.post(path.antennaFeederDetail, ...arguments)
}
export function antennaFeederList() {
return request.post(path.antennaFeederList, ...arguments)
}
\ No newline at end of file
This diff is collapsed.
......@@ -16,6 +16,7 @@
<fsuTable v-if="activeName == '2'" />
<monitorTable v-if="activeName == '3'" />
<leakyTable v-if="activeName == '4'" />
<lineTable v-if="activeName == '5'" />
</div>
</template>
......@@ -25,6 +26,7 @@ import stationTable from "./comp/stationTable.vue";
import fsuTable from "./comp/fsuTable.vue";
import monitorTable from "./comp/monitorTable.vue";
import leakyTable from "./comp/leakyTable.vue";
import lineTable from "./comp/lineTable.vue";
export default {
components: {
......@@ -32,7 +34,8 @@ export default {
stationTable,
fsuTable,
monitorTable,
leakyTable
leakyTable,
lineTable
},
data() {
return {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment