Commit 8b8ba6b7 authored by yanzhongrong's avatar yanzhongrong

Merge branch 'dev' into dev_yzr

parents 39e6c236 fafe7550
......@@ -92,10 +92,30 @@ export const constantRoutes = [
path: 'statistics',
name: 'settingAtatistics',
component: () => import('@/views/setting/statistics/index'),
meta: { title: '配置信息统计' }
}
meta: { title: '配置信息统计' },
children: [
]
},
{
path: "/detail",
name: "detail",
component: () => import('@/views/setting/statistics/detail'),
meta: { title: "详情" },
hidden: true,
},
{
path: "/sitedetail",
name: "sitedetail",
component: () => import('@/views/setting/statistics/sitedetail'),
meta: { title: "站点详情" },
hidden: true,
},
]
},
{
path: '/monitor',
component: Layout,
......@@ -122,7 +142,7 @@ export const constantRoutes = [
component: Layout,
redirect: '/maintain/oneself',
name: 'Maintain',
meta: { title: '维护管理', icon:'maintain' },
meta: { title: '维护管理', icon: 'maintain' },
children: [
{
path: 'oneself',
......
......@@ -9,6 +9,7 @@ import railWay from './modules/railWay'
import station from './modules/station'
import FSU from './modules/FSU'
import monitor from './modules/monitor'
import leaky from './modules/leaky'
Vue.use(Vuex)
......@@ -21,7 +22,8 @@ const store = new Vuex.Store({
railWay,
station,
FSU,
monitor
monitor,
leaky
},
getters
})
......
import { leakyCablelist } from "../../views/setting/api"
const state = {
list: [],
pageNum:1,
pageSize:10,
}
const mutations = {
changeList(state, arr) {
state.list = arr
},
}
const actions = {
asyncList(context) {
leakyCablelist( {
current: context.state.pageNum,
size: context.state.pageSize,
}).then(res => {
let arr = res.records?res.records:[]
context.commit("changeList", arr)
})
}
}
const getters = {
list(state) {
return state.list
}
}
export default {
state,
mutations,
actions,
getters,
namespaced: true
}
\ No newline at end of file
......@@ -51,4 +51,10 @@
}
.form .el-form-item .el-select{
width: 100%;
}
.search-input-box{
display: inline-block;
margin-right: 20px;
margin-bottom: 20px;
}
\ No newline at end of file
......@@ -51,6 +51,7 @@ export default {
},
}
}
</script>
<style lang="scss" scoped>
......
......@@ -54,9 +54,9 @@
>
<el-option
v-for="item in backupModeSelect"
:key="item.key"
:label="item.label"
:value="item.key"
:key="item.id"
:label="item.dictValue"
:value="item.dictValue"
></el-option
></el-select>
</el-form-item>
......@@ -64,9 +64,9 @@
<el-select v-model="FSUForm.connectMode" placeholder="请选择通信方式">
<el-option
v-for="item in connectModeSelect"
:key="item.key"
:label="item.label"
:value="item.key"
:key="item.id"
:label="item.dictValue"
:value="item.dictValue"
></el-option>
</el-select>
</el-form-item>
......@@ -74,9 +74,9 @@
<el-select v-model="FSUForm.equipType" placeholder="请选择设备类型">
<el-option
v-for="item in equipTypeSelect"
:key="item.key"
:label="item.label"
:value="item.key"
:key="item.id"
:label="item.dictValue"
:value="item.dictValue"
></el-option>
</el-select>
</el-form-item>
......@@ -87,9 +87,9 @@
>
<el-option
v-for="item in equipSubTypeSelect"
:key="item.key"
:label="item.label"
:value="item.key"
:key="item.id"
:label="item.dictValue"
:value="item.dictValue"
></el-option>
</el-select>
</el-form-item>
......@@ -119,7 +119,7 @@
</div>
</template>
<script>
import { fsusave, selectForSite } from "../../api";
import { fsusave, selectFsuItem, selectForSite } from "../../api";
import { mapGetters, mapActions } from "vuex";
import { successAlert, warningAlert } from "@/utils/alert";
export default {
......@@ -127,82 +127,36 @@ export default {
components: {},
data() {
return {
asd: {
"01": [{ ss: "dasda", fsa: "dasd" }],
"02": [{ ss2: "dasda", fsasdasd: "dasd" }],
},
type: 1,
railWaySelect: [],
stationSelect: [],
stationSelect2: [],
backupModeSelect: [
{
key: 0,
label: "整机备份",
},
{
key: 1,
label: "整机备份2",
},
{
key: 2,
label: "整机备份3",
},
],
connectModeSelect: [
{
key: 0,
label: "以太网",
},
{
key: 1,
label: "以太网2",
},
{
key: 2,
label: "以太网3",
},
],
equipTypeSelect: [
{
key: 0,
label: "漏缆监控单元",
},
{
key: 1,
label: "漏缆监控单元2",
},
{
key: 2,
label: "漏缆监控单元3",
},
],
equipSubTypeSelect: [
{
key: 0,
label: "故障定位设备",
},
{
key: 1,
label: "故障定位设备2",
},
{
key: 2,
label: "故障定位设备3",
},
],
backupModeSelect: [],
connectModeSelect: [],
equipTypeSelect: [],
equipSubTypeSelect: [],
FSUForm: {
backupMode: 2,
connectMode: 1,
equipFactory: "打发点",
equipName: "阿达21",
equipSerialNumber: "4651",
equipSubType: 2,
equipType: 0,
fsuCode: "212",
fsuPort: 10,
ip: "151511",
kmSign: "46511",
parentId: 17,
siteId: 11,
siteName:"asd",
softVersion: "8451",
wayId: 17
backupMode: '',
connectMode: '',
equipFactory: "设备厂商1",
equipName: "设备名称1",
equipSerialNumber: "4651",
equipSubType: '',
equipType: '',
fsuCode: "212",
fsuPort: 10,
ip: "192.168.2.1",
kmSign: "46511",
parentId: '',
siteId: '',
wayId: '',
siteName: "站点1",
softVersion: "6.0.2",
},
rules: {
wayId: [{ required: true, message: "请选择铁路线", trigger: "blur" }],
......@@ -312,12 +266,22 @@ wayId: 17
});
},
},
created() {
selectFsuItem().then((res) => {
this.backupModeSelect = res["01"];
this.connectModeSelect = res["02"];
this.equipTypeSelect = res["03"];
this.equipSubTypeSelect = res["04"];
});
},
mounted() {
this.asyncrailWayList();
this.asyncstationList();
this.railWaySelect = this.railWaylist;
this.stationSelect = this.stationlist;
console.log(this.asd);
},
};
</script>
......
......@@ -128,12 +128,9 @@ export default {
components: {},
data() {
return {
railWaySelect: [],
stationSelect: [],
stationSelect2: [],
fsuSelect: [],
railWaySelect: [],
stationSelect2: [],
fsuSelect2: [],
monitorSelect: [],
monitor2: [],
FSUrailway: [
{
......@@ -233,17 +230,17 @@ export default {
},
changesite() {
this.fsuSelect2 = this.fsuSelect.filter(
this.fsuSelect2 = this.fsulist.filter(
(item) => item.parentId === this.leakyCableForm.siteId
);
},
changefsu() {
console.log(this.leakyCableForm.fsuId);
this.monitor2 = this.monitorSelect.filter(
this.monitor2 = this.monitorEquiplist.filter(
(item) => item.parentId === this.leakyCableForm.fsuId
);
console.log(this.monitorSelect);
},
reset() {
this.$refs.leakyCableForm.resetFields();
......@@ -287,9 +284,7 @@ export default {
this.asyncmonitorList();
this.railWaySelect = this.railWaylist;
this.stationSelect = this.stationlist;
this.fsuSelect = this.fsulist;
this.monitorSelect = this.monitorEquiplist;
},
};
</script>
......
......@@ -7,7 +7,7 @@
label-width="200px"
class="form"
>
<el-form-item label="所在铁路线:" prop="wayId">
<el-form-item label="所在铁路线:" prop="wayId">
<el-select
v-model="monitorForm.wayId"
placeholder="请选择铁路线"
......@@ -22,7 +22,11 @@
</el-select>
</el-form-item>
<el-form-item label="所在站点:" prop="siteId">
<el-select v-model="monitorForm.siteId" placeholder="请选择站点" @change="changesite()">
<el-select
v-model="monitorForm.siteId"
placeholder="请选择站点"
@change="changesite()"
>
<el-option
v-for="item in stationSelect2"
:key="item.id"
......@@ -31,7 +35,7 @@
></el-option>
</el-select>
</el-form-item>
<el-form-item label="所在FSU:" prop="fsuId">
<el-form-item label="所在FSU:" prop="fsuId">
<el-select v-model="monitorForm.fsuId" placeholder="请选择FSU">
<el-option
v-for="item in fsuSelect2"
......@@ -47,8 +51,11 @@
placeholder="请输入设备身份编号"
/>
</el-form-item>
<el-form-item label="设备名称:" prop="equipName">
<el-input v-model="monitorForm.equipName" placeholder="请输入设备名称" />
<el-form-item label="设备名称:" prop="equipName">
<el-input
v-model="monitorForm.equipName"
placeholder="请输入设备名称"
/>
</el-form-item>
<el-form-item label="设备厂商:" prop="equipFactory">
<el-input
......@@ -56,40 +63,34 @@
placeholder="请输入设备厂商"
/>
</el-form-item>
<el-form-item label="设备类别:" prop="equipType">
<el-select
v-model="monitorForm.equipType"
placeholder="请输入设备类别"
>
<el-form-item label="设备类别:" prop="equipType">
<el-select v-model="monitorForm.equipType" placeholder="请输入设备类别">
<el-option
v-for="item in equipTypeSelect"
:key="item.key"
:label="item.label"
:value="item.key"
:key="item.id"
:label="item.dictValue"
:value="item.dictValue"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="设备型号:" prop="equipMode">
<el-select
v-model="monitorForm.equipMode"
placeholder="请输入设备型号"
>
<el-select v-model="monitorForm.equipMode" placeholder="请输入设备型号">
<el-option
v-for="item in equipModeSelect"
:key="item.key"
:label="item.label"
:value="item.key"
:key="item.id"
:label="item.dictValue"
:value="item.dictValue"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="设备生产序列号:" prop="equipSerialNumber">
<el-input
v-model="monitorForm.equipSerialNumber"
placeholder="请输入设备生产序列号"
/>
</el-form-item>
<el-form-item label="设备所在铁路公里标:" prop="kmSign">
<el-form-item label="设备所在铁路公里标:" prop="kmSign">
<el-input
v-model="monitorForm.kmSign"
placeholder="请输入设备所在铁路公里标"
......@@ -101,7 +102,7 @@
placeholder="请输入安装日期"
/>
</el-form-item>
<el-form-item label=" 维护日期:" prop="repairDate">
<el-input
v-model="monitorForm.repairDate"
......@@ -116,15 +117,15 @@
</div>
</template>
<script>
import { monitorEquipsave } from "../../api";
import { monitorEquipsave, selectMonitorItem } from "../../api";
import { mapGetters, mapActions } from "vuex";
import { successAlert,warningAlert } from "@/utils/alert";
import { successAlert, warningAlert } from "@/utils/alert";
export default {
props: [],
components: {},
data() {
return {
railWaySelect: [],
railWaySelect: [],
stationSelect: [],
stationSelect2: [],
fsuSelect: [],
......@@ -139,48 +140,22 @@ export default {
label: "南昆客运专线",
},
],
equipTypeSelect: [
{
key: 0,
label: "漏缆监控单元",
},
{
key: 1,
label: "漏缆监控单元2",
},
{
key: 2,
label: "漏缆监控单元3",
},
],
equipModeSelect: [
{
key: 0,
label: "型号",
},
{
key: 1,
label: "型号2",
},
{
key: 2,
label: "型号3",
},
],
equipTypeSelect: [],
equipModeSelect: [],
monitorForm: {
wayId:"",
parentId:"",
siteId:"",
fsuId:"",
wayId: "",
parentId: "",
siteId: "",
fsuId: "",
equipCode: "",
equipFactory: "",
equipMode: 0,
equipMode: '',
equipName: "",
equipSerialNumber: "",
equipType: 0,
equipType: '',
installDate: "2022-02-24 12:24:84",
kmSign: "",
repairDate: "2022-02-24 12:24:84",
},
rules: {
......@@ -235,18 +210,14 @@ export default {
asyncfsuList: "FSU/asyncList",
}),
changerailWay() {
this.stationSelect2 = this.stationlist.filter(
(item) => item.parentId === this.monitorForm.wayId
);
},
changesite() {
this.fsuSelect2 = this.fsuSelect.filter(
changesite() {
this.fsuSelect2 = this.fsulist.filter(
(item) => item.parentId === this.monitorForm.siteId
);
},
reset() {
this.$refs.monitorForm.resetFields();
......@@ -254,43 +225,47 @@ export default {
submit() {
this.$refs.monitorForm.validate((valid) => {
if (valid) {
this.monitorForm.parentId=this.monitorForm.fsuId
this.monitorForm.parentId = this.monitorForm.fsuId;
monitorEquipsave(this.monitorForm).then((res) => {
if (res.code==200) {
successAlert("添加成功")
console.log(res);
}else{
warning("添加失败")
if (res.code == 200) {
successAlert("添加成功");
} else {
warning("添加失败");
}
});
}
this.monitorForm = {
wayId:"",
parentId:"",
siteId:"",
fsuId:"",
wayId: "",
parentId: "",
siteId: "",
fsuId: "",
equipCode: "",
equipFactory: "",
equipMode: 0,
equipMode: '',
equipName: "",
equipSerialNumber: "",
equipType: 0,
equipType: '',
installDate: "2022-02-22 12:24:84",
kmSign: "",
repairDate: "2022-02-24 12:24:84",
};
});
},
},
created() {
selectMonitorItem().then((res) => {
this.equipTypeSelect=res["03"]
this.equipModeSelect=res["09"]
});
},
mounted() {
this.asyncrailWayList();
this.asyncrailWayList();
this.asyncstationList();
this.asyncfsuList();
this.railWaySelect = this.railWaylist;
this.stationSelect = this.stationlist;
this.fsuSelect = this.fsulist;
},
};
</script>
......
......@@ -38,6 +38,7 @@
<script>
import { railWaysave } from "../../api";
import { successAlert,warningAlert } from "@/utils/alert";
import { mapGetters, mapActions } from "vuex";
export default {
props: [],
components: {},
......@@ -72,6 +73,9 @@ export default {
},
computed: {},
methods: {
...mapActions({
asyncrailWayList: "railWay/asyncList",
}),
reset() {
this.$refs.form.resetFields();
},
......@@ -81,7 +85,7 @@ export default {
railWaysave(this.formData).then((res) => {
if (res.code==200) {
successAlert("添加成功")
console.log(res);
this.asyncrailWayList()
}else{
warning("添加失败")
}
......
......@@ -19,13 +19,16 @@ const path = {
fsusave: 'fsu/save',
fsubatchDelete: 'fsu/batchDeleteFsu',
fsuselectList: 'fsu/selectList',
selectFsuItem:'dict/selectFsuItem',//fsu数据字典
monitorEquipList: 'monitorEquip/selectPage',
monitorEquipdetail: 'monitorEquip/detail',
monitorEquipsave: 'monitorEquip/save',
monitorEquipbatchDelete: 'monitorEquip/batchDeleteEquip',
monitorEquipselectList: 'monitorEquip/selectList',
selectMonitorItem:'dict/selectMonitorItem',//监测设备字典
leakyCableList: 'leakyCable/selectPage',
leakyCabledetail: 'leakyCable/detail',
leakyCablesave: 'leakyCable/save',
......@@ -75,6 +78,10 @@ export function sitelist() {
return request.post(path.siteselectList, ...arguments)
}
//fsu
export function selectFsuItem() {//fsu字典
return request.post(path.selectFsuItem, ...arguments)
}
export function fsulist() {
return request.post(path.fsuList, ...arguments)
}
......@@ -93,6 +100,10 @@ export function sitelist() {
return request.post(path.fsuselectList, ...arguments)
}
//监测
export function selectMonitorItem() {
return request.post(path.selectMonitorItem, ...arguments)
}
export function monitorEquiplist() {
return request.post(path.monitorEquipList, ...arguments)
}
......
......@@ -14,6 +14,76 @@
<el-button type="primary" @click="query">查询</el-button>
<el-button type="primary" @click="exportData">导出</el-button>
</div>
</div>
<div>
<div class="search-input-box">
<label>设备名称:</label>
<el-input
size="small"
placeholder="请输入设备名称"
style="width: 180px"
v-model="FSUForm.equipName"
clearable
>
</el-input>
</div>
<div class="search-input-box">
<label>FSU身份编号:</label>
<el-input
size="small"
placeholder="请输入FSU身份编号"
style="width: 180px"
v-model="FSUForm.fsuCode"
clearable
>
</el-input>
</div>
<div class="search-input-box">
<label>IP地址:</label>
<el-input
size="small"
placeholder="请输入IP地址"
style="width: 180px"
v-model="FSUForm.ip"
clearable
>
</el-input>
</div>
<div class="search-input-box">
<label>所在铁路线:</label>
<el-select
size="small"
placeholder="请选择所在铁路线"
style="width: 180px"
v-model="FSUForm.wayId"
clearable
@change="changerailWay()"
>
<el-option
v-for="item in railWaySelect"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</div>
<div class="search-input-box">
<label>所在站点:</label>
<el-select
size="small"
placeholder="请选择所在站点"
style="width: 180px"
v-model="FSUForm.siteId"
clearable
>
<el-option
v-for="item in stationSelect2"
:key="item.id"
:label="item.siteName"
:value="item.id"
></el-option>
</el-select>
</div>
</div>
<el-table
ref="multipleTable"
......@@ -269,11 +339,25 @@
import Pagination from "@/components/Pagination";
import { fsulist, fsubatchDelete, fsudetail } from "../../api";
import { successAlert,warningAlert } from "@/utils/alert";
import { mapGetters, mapActions } from "vuex";
export default {
props: [],
components: { Pagination },
data() {
return {
railWaySelect: [],
stationSelect: [],
stationSelect2: [],
FSUForm: {
fsuCode:"",
equipName: "阿达21",
equipSerialNumber: "4651",
ip: "151511",
parentId: "",
siteId: "",
siteName: "asd",
wayId: "",
},
Info:[],
visible:false,
tableData: [],
......@@ -286,8 +370,25 @@ export default {
ids: [],
};
},
computed: {},
computed: {
...mapGetters({
railWaylist: "railWay/list",
stationlist: "station/list",
}),
},
methods: {
...mapActions({
asyncrailWayList: "railWay/asyncList",
asyncstationList: "station/asyncList",
asyncfsuList: "FSU/asyncList",
}),
changerailWay() {
this.stationSelect2 = this.stationlist.filter(
(item) => item.wayId === this.FSUForm.wayId
);
},
tableRowClassName({ row, rowIndex }) {
return rowIndex % 2 === 0 ? "" : "single-row";
},
......@@ -299,6 +400,7 @@ export default {
fsubatchDelete({ ids }).then((res) => {
if (res.code==200) {
successAlert("删除成功");
this.asyncfsuList();
this.getTableData();
}else{
warningAlert("删除失败")
......@@ -319,7 +421,14 @@ export default {
},
handleView(row) {
this.$router.push({
path:'/detail',
query:{
id:row.id
},
})
let id = row.id;
fsudetail({ id }).then((res) => {
this.Info=res
......@@ -347,6 +456,10 @@ export default {
},
mounted() {
this.getTableData();
this.asyncrailWayList();
this.asyncstationList();
this.railWaySelect = this.railWaylist;
// this.stationSelect = this.stationlist;
},
};
</script>
......
......@@ -15,6 +15,113 @@
<el-button type="primary" @click="exportData">导出</el-button>
</div>
</div>
<div>
<div class="search-input-box">
<label>漏缆描述:</label>
<el-input
size="small"
placeholder="请输入漏缆描述"
style="width: 180px"
v-model="leakyCableForm.leakyCableDescribe"
clearable
>
</el-input>
</div>
<div class="search-input-box">
<label>漏缆编号:</label>
<el-input
size="small"
placeholder="请输入漏缆编号"
style="width: 180px"
v-model="leakyCableForm.leakyCableCode"
clearable
>
</el-input>
</div>
<div class="search-input-box">
<label>漏缆型号:</label>
<el-input
size="small"
placeholder="请输入漏缆型号"
style="width: 180px"
v-model="leakyCableForm.leakyCableMode"
clearable
>
</el-input>
</div>
<div class="search-input-box">
<label>所在铁路线:</label>
<el-select
size="small"
placeholder="请选择所在铁路线"
style="width: 180px"
v-model="leakyCableForm.wayId"
clearable
@change="changerailWay()"
>
<el-option
v-for="item in railWaySelect"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</div>
<div class="search-input-box">
<label>所在站点:</label>
<el-select
size="small"
placeholder="请选择所在站点"
style="width: 180px"
v-model="leakyCableForm.siteId"
@change="changesite()"
clearable
>
<el-option
v-for="item in stationSelect2"
:key="item.id"
:label="item.siteName"
:value="item.id"
></el-option>
</el-select>
</div>
<div class="search-input-box">
<label>所在FSU:</label>
<el-select
size="small"
placeholder="请选择所在FSU"
style="width: 180px"
v-model="leakyCableForm.fsuId"
@change="changefsu()"
clearable
>
<el-option
v-for="item in fsuSelect2"
:key="item.id"
:label="item.equipName"
:value="item.id"
></el-option>
</el-select>
</div>
<div class="search-input-box">
<label>所在监测设备:</label>
<el-select
size="small"
placeholder="请选择所在监测设备"
style="width: 180px"
v-model="leakyCableForm.monitor"
clearable
>
<el-option
v-for="item in monitor2"
:key="item.id"
:label="item.equipName"
:value="item.id"
></el-option>
</el-select>
</div>
</div>
<el-table
ref="multipleTable"
class="statistics-table"
......@@ -32,63 +139,68 @@
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column
prop="wayId"
label="所在铁路线"
align="center"
/>
<el-table-column prop="wayId" label="所在铁路线" align="center" />
<el-table-column
prop="hundredMetersLoss"
label="漏缆百米损耗"
show-overflow-tooltip
align="center"
/>
/>
<el-table-column
prop="leakyCableCode"
label="漏缆编号"
show-overflow-tooltip
align="center"
/> <el-table-column
/>
<el-table-column
prop="leakyCableDescribe"
label="描述"
show-overflow-tooltip
align="center"
/> <el-table-column
/>
<el-table-column
prop="leakyCableLength"
label="漏缆长度"
show-overflow-tooltip
align="center"
/> <el-table-column
/>
<el-table-column
prop="leakyCableMode"
label="漏缆型号"
show-overflow-tooltip
align="center"
/> <el-table-column
/>
<el-table-column
prop="reductRatio"
label="漏缆速度衰减系数:"
show-overflow-tooltip
align="center"
/> <el-table-column
/>
<el-table-column
prop="sendPower"
label="发射功率"
show-overflow-tooltip
align="center"
/>
<el-table-column
/>
<el-table-column
prop="jumperLength"
label="跳线长度"
show-overflow-tooltip
align="center"
/>
/>
<el-table-column
prop="inserterLength"
label="插入器长度"
show-overflow-tooltip
align="center"
/>
<el-table-column prop="antennaFeederLength" label="天馈线长度:" align="center" />
<el-table-column
prop="antennaFeederLength"
label="天馈线长度:"
align="center"
/>
<el-table-column
prop="action"
label="详细信息"
......@@ -113,13 +225,33 @@
</template>
<script>
import Pagination from "@/components/Pagination";
import { leakyCablelist, leakyCablebatchDelete, leakyCabledetail } from "../../api";
import { successAlert,warningAlert } from "@/utils/alert";
import {
leakyCablelist,
leakyCablebatchDelete,
leakyCabledetail,
} from "../../api";
import { successAlert, warningAlert } from "@/utils/alert";
import { mapGetters, mapActions } from "vuex";
export default {
props: [],
components: { Pagination },
data() {
return {
railWaySelect: [],
stationSelect2: [],
fsuSelect2: [],
monitor2: [],
leakyCableForm: {
wayId: "",
parentId: "",
siteId: "",
fsuId: "",
monitor:"",
leakyCableCode: "22",
leakyCableDescribe: "打打",
leakyCableMode: "打打",
},
tableData: [],
params: {
pageNum: 1,
......@@ -130,8 +262,38 @@ export default {
ids: [],
};
},
computed: {},
computed: {
...mapGetters({
railWaylist: "railWay/list",
stationlist: "station/list",
fsulist: "FSU/list",
monitorEquiplist: "monitor/list",
}),
},
methods: {
...mapActions({
asyncrailWayList: "railWay/asyncList",
asyncstationList: "station/asyncList",
asyncfsuList: "FSU/asyncList",
asyncmonitorList: "monitor/asyncList",
asyncleakyList: "leaky/asyncList",
}),
changerailWay() {
this.stationSelect2 = this.stationlist.filter(
(item) => item.parentId === this.leakyCableForm.wayId
);
},
changesite() {
this.fsuSelect2 = this.fsulist.filter(
(item) => item.parentId === this.leakyCableForm.siteId
);
},
changefsu() {
this.monitor2 = this.monitorEquiplist.filter(
(item) => item.parentId === this.leakyCableForm.fsuId
);
},
tableRowClassName({ row, rowIndex }) {
return rowIndex % 2 === 0 ? "" : "single-row";
},
......@@ -141,15 +303,14 @@ export default {
delData() {
let ids = this.ids;
leakyCablebatchDelete({ ids }).then((res) => {
if (res.code==200) {
if (res.code == 200) {
successAlert("删除成功");
this.asyncleakyList()
this.getTableData();
}else{
warningAlert("删除失败")
} else {
warningAlert("删除失败");
}
});
},
refresh() {
this.getTableData();
......@@ -160,15 +321,17 @@ export default {
this.multipleSelection = val;
this.ids = this.multipleSelection.map((i) => i.id);
},
handleView(row) {
let id = row.id;
leakyCabledetail({ id }).then((res) => {
this.$router.push({
path: "/detail",
query: {
id: row.id,
},
});
let id = row.id;
leakyCabledetail({ id }).then((res) => {});
},
handlePageChange(pageData) {
this.params.pageSize = pageData.size;
......@@ -193,6 +356,14 @@ export default {
},
mounted() {
this.getTableData();
this.asyncrailWayList();
this.asyncstationList();
this.asyncfsuList();
this.asyncmonitorList();
this.railWaySelect = this.railWaylist;
this.monitorSelect = this.monitorEquiplist;
},
};
</script>
......
......@@ -14,6 +14,94 @@
<el-button type="primary" @click="query">查询</el-button>
<el-button type="primary" @click="exportData">导出</el-button>
</div>
</div>
<div>
<div class="search-input-box">
<label>设备名称:</label>
<el-input
size="small"
placeholder="请输入设备名称"
style="width: 180px"
v-model="monitorForm.equipName"
clearable
>
</el-input>
</div>
<div class="search-input-box">
<label>设备身份编号:</label>
<el-input
size="small"
placeholder="请输入设备身份编号"
style="width: 180px"
v-model="monitorForm.equipCode"
clearable
>
</el-input>
</div>
<div class="search-input-box">
<label>IP地址:</label>
<el-input
size="small"
placeholder="请输入IP地址"
style="width: 180px"
v-model="monitorForm.ip"
clearable
>
</el-input>
</div>
<div class="search-input-box">
<label>所在铁路线:</label>
<el-select
size="small"
placeholder="请选择所在铁路线"
style="width: 180px"
v-model="monitorForm.wayId"
clearable
@change="changerailWay()"
>
<el-option
v-for="item in railWaySelect"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</div>
<div class="search-input-box">
<label>所在站点:</label>
<el-select
size="small"
placeholder="请选择所在站点"
style="width: 180px"
v-model="monitorForm.siteId"
@change="changesite()"
clearable
>
<el-option
v-for="item in stationSelect2"
:key="item.id"
:label="item.siteName"
:value="item.id"
></el-option>
</el-select>
</div>
<div class="search-input-box">
<label>所在FSU:</label>
<el-select
size="small"
placeholder="请选择所在FSU"
style="width: 180px"
v-model="monitorForm.fsuId"
clearable
>
<el-option
v-for="item in fsuSelect2"
:key="item.id"
:label="item.equipName"
:value="item.id"
></el-option>
</el-select>
</div>
</div>
<el-table
ref="multipleTable"
......@@ -113,11 +201,25 @@ import {
monitorEquipdetail,
} from "../../api";
import { successAlert,warningAlert } from "@/utils/alert";
import { mapGetters, mapActions } from "vuex";
export default {
props: [],
components: { Pagination },
data() {
return {
railWaySelect: [],
stationSelect2: [],
fsuSelect2: [],
monitorForm: {
wayId:"",
parentId:"",
siteId:"",
fsuId:"",
equipCode: "",
equipName: "",
},
tableData: [],
params: {
pageNum: 1,
......@@ -128,8 +230,34 @@ export default {
ids: [],
};
},
computed: {},
computed: {
...mapGetters({
railWaylist: "railWay/list",
stationlist: "station/list",
fsulist: "FSU/list",
}),
},
methods: {
...mapActions({
asyncrailWayList: "railWay/asyncList",
asyncstationList: "station/asyncList",
asyncfsuList: "FSU/asyncList",
asyncmonitorList: "monitor/asyncList",
}),
changerailWay() {
this.stationSelect2 = this.stationlist.filter(
(item) => item.parentId === this.monitorForm.wayId
);
},
changesite() {
this.fsuSelect2 = this.fsuSelect.filter(
(item) => item.parentId === this.monitorForm.siteId
);
},
tableRowClassName({ row, rowIndex }) {
return rowIndex % 2 === 0 ? "" : "single-row";
},
......@@ -141,6 +269,7 @@ export default {
monitorEquipbatchDelete({ ids }).then((res) => {
if (res.code==200) {
successAlert("删除成功");
this.asyncmonitorList();
this.getTableData();
}else{
warningAlert("删除失败")
......@@ -161,7 +290,14 @@ export default {
},
handleView(row) {
this.$router.push({
path:'/detail',
query:{
id:row.id
},
})
let id = row.id;
monitorEquipdetail({ id }).then((res) => {
......@@ -191,6 +327,11 @@ export default {
},
mounted() {
this.getTableData();
this.asyncrailWayList();
this.asyncstationList();
this.asyncfsuList();
this.railWaySelect = this.railWaylist;
this.fsuSelect = this.fsulist;
},
};
</script>
......
......@@ -15,6 +15,38 @@
<el-button type="primary" @click="exportData">导出</el-button>
</div>
</div>
<div>
<div class="search-input-box">
<label>铁路名称:</label>
<el-input
size="small"
placeholder="请输入铁路名称"
style="width: 180px"
clearable
>
</el-input>
</div>
<div class="search-input-box">
<label>铁路起点站名:</label>
<el-input
size="small"
placeholder="请输入起点站名"
style="width: 180px"
clearable
>
</el-input>
</div>
<div class="search-input-box">
<label>铁路终点站名:</label>
<el-input
size="small"
placeholder="请输入终点站名"
style="width: 180px"
clearable
>
</el-input>
</div>
</div>
<el-table
ref="multipleTable"
class="statistics-table"
......@@ -63,62 +95,53 @@
</template>
</el-table-column>
</el-table>
<el-dialog
:showClose="false"
title="铁路线详情"
:visible.sync="visible"
width="500px">
<table style="margin: auto" class="device-detail-tb">
<tr style="line-height: 50px">
<td style="width: 145px">
<label >铁路名:</label>
</td>
<td style="width: 180px; text-align: left">
<label v-text="Info.name"></label>
</td>
</tr>
<el-dialog
:showClose="false"
title="铁路线详情"
:visible.sync="visible"
width="500px"
>
<table style="margin: auto" class="device-detail-tb">
<tr style="line-height: 50px">
<td style="width: 145px">
<label>铁路名:</label>
</td>
<td style="width: 180px; text-align: left">
<label v-text="Info.name"></label>
</td>
</tr>
<tr style="line-height: 50px">
<td style="width: 145px">
<label >铁路线起点站名:</label>
</td>
<td style="width: 180px; text-align: left">
<label v-text="Info.startPointName"></label>
</td>
</tr>
<tr style="line-height: 50px">
<td style="width: 145px">
<label >铁路线终点站名:</label>
</td>
<td style="width: 180px; text-align: left">
<label v-text="Info.endPointName"></label>
</td>
</tr>
<tr style="line-height: 50px">
<td style="width: 145px">
<label >铁路全长(公里):</label>
</td>
<td style="width: 180px; text-align: left">
<label v-text="Info.totalLong"></label>
</td>
</tr>
</table>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="visible=false"
>关闭</el-button
></span>
</el-dialog>
<tr style="line-height: 50px">
<td style="width: 145px">
<label>铁路线起点站名:</label>
</td>
<td style="width: 180px; text-align: left">
<label v-text="Info.startPointName"></label>
</td>
</tr>
<tr style="line-height: 50px">
<td style="width: 145px">
<label>铁路线终点站名:</label>
</td>
<td style="width: 180px; text-align: left">
<label v-text="Info.endPointName"></label>
</td>
</tr>
<tr style="line-height: 50px">
<td style="width: 145px">
<label>铁路全长(公里):</label>
</td>
<td style="width: 180px; text-align: left">
<label v-text="Info.totalLong"></label>
</td>
</tr>
</table>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="visible = false"
>关闭</el-button
></span
>
</el-dialog>
<pagination
:limit="params.pageSize"
:page="params.pageNum"
......@@ -130,15 +153,16 @@
</template>
<script>
import Pagination from "@/components/Pagination";
import { railWaylist, railWaybatchDelete, railWaydetail } from "../../api";
import { successAlert,warningAlert } from "@/utils/alert";
import { railWaylist,railWaydetail, railWaybatchDelete } from "../../api";
import { mapGetters, mapActions } from "vuex";
import { successAlert, warningAlert } from "@/utils/alert";
export default {
props: [],
components: { Pagination },
data() {
return {
visible: false,
Info:[],
visible: false,
Info: [],
tableData: [],
params: {
pageNum: 1,
......@@ -151,7 +175,9 @@ export default {
},
computed: {},
methods: {
...mapActions({
asyncrailWayList: "railWay/asyncList",
}),
tableRowClassName({ row, rowIndex }) {
return rowIndex % 2 === 0 ? "" : "single-row";
},
......@@ -161,14 +187,14 @@ export default {
delData() {
let ids = this.ids;
railWaybatchDelete({ ids }).then((res) => {
if (res.code==200) {
if (res.code == 200) {
successAlert("删除成功");
this.getTableData();
}else{
warningAlert("删除失败")
this.asyncrailWayList()
this.getTableData();
} else {
warningAlert("删除失败");
}
});
},
refresh() {
this.getTableData();
......@@ -182,13 +208,17 @@ export default {
},
handleView(row) {
this.$router.push({
path: "/detail",
query: {
id: row.id,
},
});
let id = row.id;
railWaydetail({ id }).then((res) => {
console.log(res);
// this.$router.push('/')
// this.visible=true
this.Info=res
console.log(this.Info);
this.Info = res;
});
},
handlePageChange(pageData) {
......@@ -197,10 +227,6 @@ export default {
this.getTableData();
},
getTableData() {
// this.tableData2 = this.tableData.slice(( this.params.pageNum - 1) * this.params.pageSize,
// this.params.pageNum * this.params.pageSize
// );
// this.total = this.tableData.length
let params = {
current: this.params.pageNum,
size: this.params.pageSize,
......
......@@ -14,6 +14,55 @@
<el-button type="primary" @click="query">查询</el-button>
<el-button type="primary" @click="exportData">导出</el-button>
</div>
</div>
<div>
<div class="search-input-box">
<label>站名:</label>
<el-input
size="small"
placeholder="请输入站名"
style="width: 180px"
clearable
>
</el-input>
</div>
<div class="search-input-box">
<label>站点编号:</label>
<el-input
size="small"
placeholder="请输入起点编号"
style="width: 180px"
clearable
>
</el-input>
</div>
<div class="search-input-box">
<label>站点地址:</label>
<el-input
size="small"
placeholder="请输入站点地址"
style="width: 180px"
clearable
>
</el-input>
</div>
<div class="search-input-box">
<label>所在铁路线:</label>
<el-select
size="small"
placeholder="请选择所在铁路线"
style="width: 180px"
clearable
>
<el-option
v-for="item in railWaySelect"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</div>
</div>
<el-table
ref="multipleTable"
......@@ -209,11 +258,13 @@
import Pagination from "@/components/Pagination";
import { sitelist,sitebatchDelete,sitedetail } from "../../api";
import { successAlert,warningAlert } from "@/utils/alert";
import { mapGetters, mapActions } from "vuex";
export default {
props: [],
components: { Pagination },
data() {
return {
railWaySelect:[],
visible:false,
Info:[],
tableData:[],
......@@ -226,9 +277,17 @@ export default {
ids: [],
};
},
computed: {},
computed: {
...mapGetters({
railWaylist:"railWay/list",
}),
},
methods: {
...mapActions({
asyncrailWayList: "railWay/asyncList",
asyncstationList: "station/asyncList",
}),
tableRowClassName({ row, rowIndex }) {
return rowIndex % 2 === 0 ? "" : "single-row";
},
......@@ -240,6 +299,7 @@ export default {
sitebatchDelete({ ids }).then((res) => {
if (res.code==200) {
successAlert("删除成功");
this.asyncstationList();
this.getTableData();
}else{
warningAlert("删除失败")
......@@ -260,7 +320,14 @@ export default {
},
handleView(row) {
this.$router.push({
path:'/sitedetail',
query:{
id:row.id
},
})
let id = row.id;
sitedetail({ id }).then((res) => {
this.Info=res
......@@ -292,7 +359,9 @@ export default {
},
mounted() {
this.getTableData();
this.asyncrailWayList()
this.railWaySelect= this.railWaylist;
},
};
......
<template>
<div class="dashboard-container">
<!-- 首页 -->
<header class="header_title">{{titleinfo}}</header>
<el-row :gutter="24">
<el-col :span="12" v-for="item in listData" class="mb20">
<el-card shadow="never">
<div slot="header" class="clearfix posa">
<span>{{ item.title }}</span>
<el-button v-if="item.option" style="float: right; padding: 3px 0;margin-right:20px" type="text" class="savebtn">保存</el-button>
</div>
<div v-for="k in item.list" :key="k.name" :class="item.list.length<=2? 'text2' : 'text'">
<el-row :gutter="24">
<el-col :span="10">
<div class="item_name">{{ k.name }}</div>
</el-col>
<el-col :span="10">
<div v-if="item.option">
<el-input v-model="k.value" clearable placeholder="请输入内容">{{ k.value }}</el-input>
</div>
<el-row :gutter="20" v-else-if="k.handle">
<el-col :span="10" class="value_handle">{{ k.value }}</el-col>
<el-col :span="10"><el-button class="alarmbtn" type="primary" size="mini">处理告警</el-button></el-col>
</el-row>
<div class="item_data" v-else>{{ k.value }}</div>
</el-col>
</el-row>
</div>
</el-card>
</el-col>
</el-row>
<div>
</div>
</div>
</template>
<script>
import { mapGetters, mapActions } from "vuex";
import { railWaydetail,sitedetail,fsudetail,monitorEquipdetail } from "../api";
export default {
props: [],
components: {},
data() {
return {
titleinfo:'',
listData2: [],
listData : [
{
title: '服务器信息',
list: [
{
name: '服务器IP',
value: '192.168.1.110',
},
{
name: '操作系统',
value: 'Red Hat EnterpiseLin...',
},
{
name: '系统软件版本',
value: '192.168.1.110',
},
]
},
{
title: '当前状态',
list: [
{
handle: true,
name: '设备状态',
value: '告警',
},
{
handle: true,
name: '漏缆状态',
value: '紧急告警',
}
]
},
{
title: '管理员(admin)管理范围',
list: [
{
name: '基站',
value: '20个',
},
{
name: 'FSU',
value: '20台',
},
{
name: '监测设备',
value: '81台',
},
{
name: '混缆',
value: '142根',
},
]
},
{
title: '基本信息',
option: true,
list: [
{
name: '铁路名称',
value: '张呼铁路客运专线',
},
{
name: '铁路起点站名',
value: '张家口',
},
{
name: '铁路终点站名',
value: '呼和浩特',
},
{
name: '铁路总长度(公里)',
value: '286.8',
},
]
},
],
id: "",
};
},
computed: {
...mapGetters({}),
},
methods: {
...mapActions({}),
},
methods: {
getParams() {
this.id = this.$route.query.id;
// console.log(this.id);
railWaydetail({ id: this.id }).then((res) => {
this.titleinfo=res.name + '信息'
this.listData[3].list[0].value=res.name
this.listData[3].list[1].value=res.startPointName
this.listData[3].list[2].value=res.endPointName
this.listData[3].list[3].value=res.totalLong
});
},
},
created() {
this.getParams();
},
mounted() {},
};
</script>
<style lang="scss" scoped>
.header_title {
font-size: 23px;
font-family: Source Han Sans CN;
font-weight: 500;
line-height: 40px;
text-align: center;
color: #0058ff;
letter-spacing: 10px;
opacity: 1;
margin-bottom: 20px;
}
::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;
}
}
.posa {
position: relative;
}
.savebtn {
position: absolute;
right: 2%;
}
// .el-col {
// margin-bottom: 20px;
// }
.text {
// display: flex;
padding: 10px 20px 10px 20px;
border-bottom: 1px solid #e3e3e3;
&:last-child {
border-bottom: none;
}
.item_name,
.item_data,
.value_handle {
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;
}
.item_data {
}
.value_handle {
color: red;
margin-right: 10px;
}
.alarmbtn {
margin-top: 6px;
margin-bottom: 6px;
}
.el-card:last-child .text {
border-bottom: none !important;
}
}
.text2 {
// display: flex;
padding: 10px 20px 10px 20px;
border-bottom: 1px solid #e3e3e3;
.item_name,
.item_data,
.value_handle {
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;
}
.item_data {
}
.value_handle {
color: red;
margin-right: 10px;
min-width: 52px;
}
.alarmbtn {
margin-top: 6px;
margin-bottom: 6px;
}
.el-card:last-child .text {
border-bottom: none !important;
}
}
</style>
<template>
<div class="dashboard-container">
<!-- 首页 -->
<header class="header_title">{{titleinfo}}</header>
<el-row :gutter="24">
<el-col :span="12" v-for="item in listData" class="mb20">
<el-card shadow="never">
<div slot="header" class="clearfix posa">
<span>{{ item.title }}</span>
<el-button v-if="item.option" style="float: right; padding: 3px 0;margin-right:20px" type="text" class="savebtn">保存</el-button>
</div>
<div v-for="k in item.list" :key="k.name" :class="item.list.length<=2? 'text2' : 'text'">
<el-row :gutter="24">
<el-col :span="10">
<div class="item_name">{{ k.name }}</div>
</el-col>
<el-col :span="10">
<div v-if="item.option">
<el-input v-model="k.value" clearable placeholder="请输入内容">{{ k.value }}</el-input>
</div>
<el-row :gutter="20" v-else-if="k.handle">
<el-col :span="10" class="value_handle">{{ k.value }}</el-col>
<el-col :span="10"><el-button class="alarmbtn" type="primary" size="mini">处理告警</el-button></el-col>
</el-row>
<div class="item_data" v-else>{{ k.value }}</div>
</el-col>
</el-row>
</div>
</el-card>
</el-col>
</el-row>
<div>
</div>
</div>
</template>
<script>
import {mapGetters,mapActions} from 'vuex';
import { railWaydetail,sitedetail,fsudetail,monitorEquipdetail } from "../api";
export default {
props: [],
components: {},
data() {
return {
titleinfo:'',
id: "",
listData : [
{
title: '管理范围',
list: [
{
name: 'FSU',
value: '1台',
},
{
name: '监测设备',
value: '1台',
},
{
name: '漏缆',
value: '2根',
},
]
},
{
title: '基本信息',
option: true,
list: [
{
name: '站点编号',
value: '',
},
{
name: '站名',
value: '',
}, {
name: '站点地址',
value: '',
}, {
name: '所在铁路线',
value: '',
}, {
name: '站点所在局',
value: '',
},
{
name: '站点所在段号',
value: '',
}, {
name: '站点所在铁路公里标',
value: '',
}, {
name: '站点经度',
value: '',
}, {
name: '站点纬度',
value: '',
}, {
name:'站点监控时间',
value: '',
},
{
name:'站点其他信息',
value: '',
},
]
},
{
title: '当前状态',
list: [
{
handle: true,
name: '设备状态',
value: '正常',
},
{
handle: true,
name: '漏缆状态',
value: '正常',
}
]
},
],
};
},
computed: {
...mapGetters({}),
},
methods: {
...mapActions({}),
getParams() {
this.id = this.$route.query.id;
sitedetail({ id: this.id }).then((res) => {
this.titleinfo='站点(' + res.siteName + ")"
this.listData[1].list[0].value=res.siteCode
this.listData[1].list[1].value=res.siteName
this.listData[1].list[2].value=res.siteAddress
this.listData[1].list[3].value=res.siteArea
this.listData[1].list[4].value=res.wayId
this.listData[1].list[5].value=res.siteSectionCode
this.listData[1].list[6].value=res.siteKmSign
this.listData[1].list[7].value=res.siteLatitude
this.listData[1].list[8].value=res.siteLongitude
this.listData[1].list[10].value=res.siteOtherMessage
});
},
},
created() {
this.getParams();
},
mounted() {},
};
</script>
<style lang="scss" scoped>
.header_title {
font-size: 23px;
font-family: Source Han Sans CN;
font-weight: 500;
line-height: 40px;
text-align: center;
color: #0058ff;
letter-spacing: 10px;
opacity: 1;
margin-bottom: 20px;
}
::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;
}
}
.posa {
position: relative;
}
.savebtn {
position: absolute;
right: 2%;
}
// .el-col {
// margin-bottom: 20px;
// }
.text {
// display: flex;
padding: 10px 20px 10px 20px;
border-bottom: 1px solid #e3e3e3;
&:last-child {
border-bottom: none;
}
.item_name,
.item_data,
.value_handle {
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;
}
.item_data {
}
.value_handle {
color: red;
margin-right: 10px;
}
.alarmbtn {
margin-top: 6px;
margin-bottom: 6px;
}
.el-card:last-child .text {
border-bottom: none !important;
}
}
.text2 {
// display: flex;
padding: 10px 20px 10px 20px;
border-bottom: 1px solid #e3e3e3;
.item_name,
.item_data,
.value_handle {
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;
}
.item_data {
}
.value_handle {
color: red;
margin-right: 10px;
min-width: 52px;
}
.alarmbtn {
margin-top: 6px;
margin-bottom: 6px;
}
.el-card:last-child .text {
border-bottom: none !important;
}
}
</style>
\ No newline at end of file
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