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
})
......
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)
......
......@@ -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
v-model="dateRange"
type="daterange"
......@@ -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() {
......
......@@ -200,20 +200,33 @@
<span>当前状态</span>
</div>
<div>
<el-row v-for="(item, i) in statusAlarmfun" class="text" :gutter="24">
<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>
<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
><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,7 +283,7 @@ 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";
......@@ -268,48 +304,22 @@ export default {
}
}
},
toalarm(data){
console.log(data);
toalarm(data) {
let topath = ''
if (data == '告警') {
if (data === '设备状态') {
topath = '/alarm/device'
} else{
} 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
siteId: this.form.baseInfo.id
}
},
},
watch: {
statusAlarmfun: {
immediate: true,
handler(newV) {
if (newV) {
this.$nextTick(function () {
this.levelcolor2();
});
})
}
},
},
},
};
}
}
</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>
......
<template>
<div class="dashboard-container">
<!-- 首页 -->
<header class="header_title">
天馈线({{ form.baseInfo.feederDescribe }})
</header>
<el-row :gutter="24">
<el-col :span="12" class="mb20">
<el-card shadow="never">
<div slot="header" class="clearfix posa">
<span>记录信息</span>
</div>
<div>
<el-row class="text" :gutter="24">
<el-col :span="7">
<div class="item_name">历史记录</div>
</el-col>
<el-col :span="8">
<div class="item_data">{{ form.log.all }}</div>
</el-col>
<el-col :span="6">
<el-button
class="picbtn"
type="success"
size="mini"
>趋势分析图形</el-button>
</el-col>
</el-row>
<el-row class="text" :gutter="24">
<el-col :span="7">
<div class="item_name">维修记录</div>
</el-col>
<el-col :span="7">
<div class="item_data">{{ form.log.monitor }}</div>
</el-col>
<el-col :span="7" />
</el-row>
</div>
</el-card>
</el-col>
<el-col :span="12" class="mb20">
<el-card shadow="never">
<div slot="header" class="clearfix posa">
<span>基础信息</span>
<el-button
v-if="flag == true"
style="float: right; padding: 3px 0; margin-right: 20px"
type="text"
class="savebtn"
@click="editbtn()"
><svg-icon icon-class="edit" /> 编辑</el-button>
<el-button
v-else
style="float: right; padding: 3px 0; margin-right: 20px"
type="text"
class="savebtn"
@click="savebtn()"
><svg-icon icon-class="save" /> 保存</el-button>
</div>
<div>
<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.feederCode }}</div>
</el-col>
</el-row>
<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.feederDescribe }}
</div>
</el-col>
</el-row>
<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.railWayName }}</div>
</el-col>
</el-row>
<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.siteName }}</div>
</el-col>
</el-row>
<el-row class="text" :gutter="24">
<el-col :span="10">
<div class="item_name">所在FSU</div>
</el-col>
<el-col :span="colspan">
<div class="item_data">{{ form.baseInfo.fsuName }}</div>
</el-col>
</el-row>
<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.equipName }}</div>
</el-col>
</el-row>
<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.feederModel }}</div>
</el-col>
</el-row>
<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.feederLength }}
</div>
</el-col>
</el-row>
<el-row class="text" :gutter="24">
<el-col :span="10">
<div class="item_name">天馈线百米损耗</div>
</el-col>
<el-col :span="colspan">
<div>
<el-input
v-model="form.baseInfo.feederLossMeters"
clearable
placeholder="请输入内容"
:disabled="flag"
/>
</div>
</el-col>
</el-row>
<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.reductRatio }}</div>
</el-col>
</el-row>
<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.sendPower }}</div>
</el-col>
</el-row>
<!-- <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 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.jumperLength }}</div>
</el-col>
</el-row>
<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.inserterLength }}</div>
</el-col>
</el-row>
<el-row class="text" :gutter="24">
<el-col :span="10">
<div class="item_name">开通状态</div>
</el-col>
<el-col :span="colspan">
<el-select
v-model="form.baseInfo.isOpen"
:disabled="flag"
style="width: 100%"
>
<el-option
v-for="item in isOpenSelect"
:key="item.key"
:label="item.label"
:value="item.key"
/>
</el-select>
</el-col>
</el-row>
</div>
</el-card>
</el-col>
<el-col :span="12" class="mb20 specialCard">
<el-card shadow="never">
<div slot="header" class="clearfix posa">
<span>当前状态</span>
</div>
<div>
<!-- === -->
<el-row class="text" :gutter="24">
<el-col :span="10">
<div class="item_name">天馈线状态</div>
</el-col>
<el-col :span="8">
<div
v-if="statusl.length != 0"
class="item_data levelData"
:style="acolor"
/>
</el-col>
<el-col :span="6">
<el-button
v-if="
timeStatus.level == '紧急告警' || timeStatus.level == '重要告警' || timeStatus.level == '一般告警'
"
class="alarmbtn"
type="primary"
size="mini"
@click="toalarm()"
>处理告警</el-button>
</el-col>
</el-row>
<el-row class="text" :gutter="24">
<el-col :span="10">
<div class="item_name">最后更新时间</div>
</el-col>
<el-col :span="colspan">
<div v-if="statusl.length != 0" class="item_data">
{{ statusl[1].value }}
</div>
</el-col>
</el-row>
<el-row
v-for="(item, i) in long"
:key="i"
class="text"
:gutter="24"
>
<el-col :span="10">
<div class="item_name">
距({{ form.baseInfo.leakyCableDescribe }}方向){{
item.value
}}
</div>
</el-col>
<el-col :span="colspan">
<div class="item_data">驻波比:{{ zhubobi[i].value }}</div>
</el-col>
</el-row>
<!-- ==== -->
<el-row class="text" :gutter="24">
<el-col :span="10">
<div class="item_name">百米损耗</div>
</el-col>
<el-col :span="8">
<div class="item_data">
{{ form.baseInfo.hundredMetersLoss }}
</div>
</el-col>
<el-col :span="6">
<el-button
class="picbtn"
type="success"
size="mini"
>生成图形</el-button>
</el-col>
</el-row>
</div>
</el-card>
</el-col>
</el-row>
</div>
</template>
<script>
import { DetailMixins } from './mixins'
import { leakyCableOpen } from '../api'
export default {
mixins: [DetailMixins],
data() {
return {
colspan: 14,
acolor: {
color: ''
},
leakyList: [],
timeStatus: {},
zhubobi: [],
long: [],
statusl: []
}
},
computed: {
statusAlarmfun() {
return this.form.status || []
}
},
watch: {
statusAlarmfun: {
immediate: true,
handler(newV) {
if (newV) {
this.trans()
this.$nextTick(function() {
this.leakylevelcolor()
})
}
}
},
deep: true
},
methods: {
savebtn() {
this.flag = true
const params = {
id: this.form.baseInfo.id,
isOpen: this.form.baseInfo.isOpen,
hundredMetersLoss: this.form.baseInfo.hundredMetersLoss
}
leakyCableOpen(params).then((res) => {
this.$message.success('修改成功')
})
},
leakylevelcolor() {
if (this.timeStatus.level === '正常') {
this.acolor.color = 'green'
} else if (this.timeStatus.level === '紧急') {
this.acolor.color = '#f00'
this.timeStatus.level = '紧急告警'
} else if (this.timeStatus.level === '重要') {
this.acolor.color = '#f89850'
this.timeStatus.level = '重要告警'
} else if (this.timeStatus.level === '一般') {
this.acolor.color = '#ead906'
this.timeStatus.level = '一般告警'
}
},
toalarm() {
this.$router.push({
path: '/alarm/cableTime',
query: {
alarmTargetName: this.form.baseInfo.leakyCableDescribe
}
})
},
trans() {
const arr1 = []; const arr2 = []; const arr3 = []
if (this.statusAlarmfun.length !== 0) {
for (let i = 0; i < this.statusAlarmfun.length; i++) {
if (i % 2 !== 0) {
if (this.statusAlarmfun[i].name === '最后更新时间') {
arr1.push(this.statusAlarmfun[i])
} else {
arr2.push(this.statusAlarmfun[i])
}
} else {
if (this.statusAlarmfun[i].name === '天馈线状态') {
arr1.push(this.statusAlarmfun[i])
} else {
arr3.push(this.statusAlarmfun[i])
}
}
}
this.statusl = arr1
this.zhubobi = arr2
this.long = arr3
}
}
}
}
</script>
<style lang="scss" scoped>
::v-deep.el-card {
border: 1px solid #e3e3e3;
border-radius: 8px;
// min-height: 243px;
.el-card__header {
font-size: 18px;
color: #333333;
font-weight: 500;
text-align: center;
background: rgba(226, 235, 255, 0.39);
opacity: 1;
}
.el-card__body {
padding: 0px;
}
}
.specialCard {
position: absolute;
top: 205px;
}
.posa {
position: relative;
}
.savebtn {
position: absolute;
right: 2%;
}
.text {
padding: 10px 20px 10px 20px;
border-bottom: 1px solid #e3e3e3;
&:last-child {
border-bottom: none;
}
.item_name,
.item_data {
height: 16px;
line-height: 16px;
margin-top: 12px;
margin-bottom: 12px;
}
.item_name {
width: 262px;
height: 16px;
line-height: 16px;
color: #7e7e7e;
margin-top: 12px;
margin-bottom: 12px;
}
.el-card:last-child .text {
border-bottom: none !important;
}
}
</style>
......@@ -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
<template>
<div>
<div class="leakage-top">
<div style="color: #666666"></div>
<div class="operate-btn">
<delids :multipleSelection2="multipleSelection" @del="del()"
>删除</delids
>
<el-button type="primary" @click="refresh">刷新</el-button>
<el-button type="primary" @click="block = !block">查询</el-button>
<el-button type="primary" @click="exportData">导出</el-button>
</div>
</div>
<el-form
class="search-div"
v-if="block"
:model="form"
:inline="true"
size="mini"
>
<el-form-item label="天馈线描述:">
<el-input
placeholder="请输入天馈线描述"
v-model="form.feederDescribe"
clearable
>
</el-input>
</el-form-item>
<el-form-item label="天馈线编号:">
<el-input
placeholder="请输入天馈线编号"
v-model="form.feederCode"
clearable
>
</el-input>
</el-form-item>
<el-form-item label="天馈线型号:">
<el-select
placeholder="请选择天馈线型号"
v-model="form.feederModel"
clearable
>
<el-option
v-for="item in equipTypeList"
:key="item.feederModel"
:label="item.feederModel"
:value="item.feederModel"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="所在铁路线:">
<el-select
placeholder="请选择所在铁路线"
v-model="form.wayId"
clearable
@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="所在站点:">
<el-select
placeholder="请选择所在站点"
v-model="form.siteId"
@change="changesite()"
clearable
>
<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:">
<el-select
placeholder="请选择所在FSU"
v-model="form.fsuId"
@change="changefsu()"
clearable
>
<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="所在监测设备:">
<el-select
placeholder="请选择所在监测设备"
v-model="form.monitor"
clearable
>
<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>
<el-button type="success" @click="searchQuery()">查询</el-button>
<el-button type="primary" @click="reset">重置</el-button>
</el-form-item>
</el-form>
<el-table
ref="multipleTable"
class="statistics-table"
:data="tableData"
tooltip-effect="dark"
style="width: 100%"
:row-class-name="tableRowClassName"
:row-style="{ height: '50px' }"
:header-cell-style="{
background: '#eaf1fe',
color: '#000',
fontWeight: 700,
height: '50px',
}"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column
prop="feederDescribe"
label="天馈线描述"
show-overflow-tooltip
align="center"
/>
<el-table-column
prop="feederCode"
label="天馈线编号"
show-overflow-tooltip
align="center"
/>
<el-table-column
prop="feederModel"
label="天馈线型号"
show-overflow-tooltip
align="center"
/>
<el-table-column prop="railWayName" label="所在铁路线" align="center" />
<el-table-column prop="siteName" label="所在站点" align="center" />
<el-table-column prop="fsuName" label="所在FSU" align="center" />
<el-table-column prop="equipName" label="所在监测设备" align="center" />
<el-table-column
prop="action"
label="详细信息"
show-overflow-tooltip
align="center"
>
<template slot-scope="{ row }">
<el-link type="primary" :underline="false" @click="handleView(row)"
>查看</el-link
>
</template>
</el-table-column>
</el-table>
<Pagination
:limit="form.size"
:page="form.current"
:total="total"
class="pagination"
@pagination="handlePageChange"
/>
</div>
</template>
<script>
import {
antennaFeederList,
antennaFeederDelete,
antennaFeederDetail,
railWaylist,
selectForSite,
selectForFsu,
selectForEquip,
} from "../../api";
import { cableTypeEnum } from "../../../maintain/api";
import { successAlert, warningAlert } from "@/utils/alert";
import download from "@/utils/download";
import { exportFeeder } from "@/api/export";
export default {
props: [],
components: {},
data() {
return {
railWaySelect: [],
stationSelect2: [],
fsuSelect2: [],
equipTypeList: [],
monitor2: [],
form: formInit(),
tableData: [],
params: {
current: 1,
size: 10,
},
total: 10,
multipleSelection: [],
ids: [],
block: 0,
istrue: 0,
exids: [],
};
},
computed: {},
methods: {
changerailWay() {
selectForSite({ wayId: this.form.wayId }).then((res) => {
this.stationSelect2 = res;
});
},
changesite() {
selectForFsu({ siteId: this.form.siteId }).then((res) => {
this.fsuSelect2 = res;
});
},
changefsu() {
selectForEquip({ fsuId: this.form.fsuId }).then((res) => {
this.monitor2 = res;
});
},
tableRowClassName({ row, rowIndex }) {
return rowIndex % 2 === 0 ? "" : "single-row";
},
changeType(item) {
this.activeName = item.key;
},
del() {
let ids = this.ids;
antennaFeederDelete({ ids }).then((res) => {
if (res.code == 200) {
successAlert("删除成功");
this.getTableData();
} else {
warningAlert("删除失败");
}
});
},
refresh() {
this.reset();
},
searchQuery() {
this.istrue = 1;
this.getTableData();
},
reset() {
this.form = formInit();
this.searchQuery();
},
exportData() {
if (this.exids.length == 0) {
this.$message.warning("暂无数据");
return false;
} else {
exportFeeder({ ids: this.exids }).then((res) => {
download(res, "vnd.ms-excel", `天馈线表.xls`);
});
}
},
handleSelectionChange(val) {
this.multipleSelection = val;
this.ids = this.multipleSelection.map((i) => i.id);
},
handleView(row) {
this.$router.push({
path: "/detail",
query: {
id: row.id,
type: 5,
},
});
},
handlePageChange(pageData) {
this.form.size = pageData.size;
this.form.current = pageData.page;
this.getTableData();
},
getTableData() {
antennaFeederList(this.form).then((res) => {
let list = res.records || [];
this.tableData = list;
this.total = res.total;
this.exids = list.map((i) => i.id);
if (this.istrue == 1) {
if (this.tableData.length) {
successAlert("操作成功");
} else {
warningAlert("查询结果为空");
}
this.istrue = 0;
}
});
},
getAllWay() {
railWaylist(this.params).then((res) => {
this.railWaySelect = res.records;
if (res.total > this.params.size) {
this.params.size = res.total;
this.getAllWay();
}
});
},
getLeakyCablel() {
cableTypeEnum().then((res) => {
let list = res || [];
this.equipTypeList = list;
});
},
},
created() {
var that = this;
document.onkeydown = function (e) {
var key = window.event.keyCode;
if (key == 13) {
that.searchQuery();
}
};
},
mounted() {
this.getTableData();
this.getLeakyCablel();
this.getAllWay();
},
};
function formInit(data = {}) {
return {
wayId: "",
parentId: "",
siteId: "",
fsuId: "",
monitor: "",
feederCode: "",
feederDescribe: "",
siteName: "",
feederModel: "",
current: 1,
size: 10,
...data,
};
}
</script>
<style lang="scss" scoped>
.leakage-cable {
.leakage-top {
margin-bottom: 20px;
display: flex;
align-items: flex-end;
justify-content: space-between;
}
& ::v-deep .cell {
color: #333333;
}
& ::v-deep .stripe {
background-color: #eaf1fe;
}
& ::v-deep .red {
background-color: #f00;
}
& ::v-deep .green {
background-color: green;
}
.page {
display: flex;
align-items: center;
justify-content: center;
margin: 20px 0;
.pageNum {
margin: 0 20px;
}
}
}
</style>
<style lang="scss">
.statistics-table {
.single-row {
background: #f1f6ff;
}
td {
padding: 5px !important;
}
}
</style>
\ No newline at end of file
......@@ -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