济菏高速业务端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

547 lines
23 KiB

<template>
<div class="app-container">
<div class="filter">
<div>
<ButtonGradient @click="handleAdd" >
<i class="el-icon-plus"></i>
添加
</ButtonGradient>
<ButtonGradient @click="onExport" >
<i class="el-icon-download"></i>
导出
</ButtonGradient>
</div>
<InputSearch ref="searchComp" style="width: 402px" :formList="searchFormList" @handleSearch="getList" />
</div>
<div class="bodyTable">
<Table :data="dcTrafficSurveyDataList" >
<ElTableColumn label="物联id" align="center" width="140" prop="iotDeviceId" />
<ElTableColumn label="观测站名称" align="center" width="140" prop="name" />
<ElTableColumn label="年份" align="center" width="140" prop="year" />
<ElTableColumn label="观测站标识" align="center" width="140" prop="sign" />
<ElTableColumn label="出临行政区划代码" align="center" width="140" prop="regionCode" />
<ElTableColumn label="观测站编号" align="center" width="140" prop="code" />
<ElTableColumn label="观测站类型" align="center" width="140" prop="type" />
<ElTableColumn label="站点桩号" align="center" width="140" prop="stakeMark" />
<ElTableColumn label="起点桩号" align="center" width="140" prop="stakeMarkStart" />
<ElTableColumn label="止点桩号" align="center" width="140" prop="stakeMarkEnd" />
<ElTableColumn label="观测里程" align="center" width="140" prop="observationMileage" />
<ElTableColumn label="比重起点桩号" align="center" width="140" prop="proportionStakeMarkStart" />
<ElTableColumn label="比重止点桩号" align="center" width="140" prop="proportionStakeMarkEnd" />
<ElTableColumn label="比重观测里程" align="center" width="140" prop="proportionMileage" />
<ElTableColumn label="起点名称" align="center" width="140" prop="startName" />
<ElTableColumn label="止点名称" align="center" width="140" prop="endName" />
<ElTableColumn label="调查方法" align="center" width="140" prop="investigationMethods" />
<ElTableColumn label="车道数量" align="center" width="140" prop="lanesNum" />
<ElTableColumn label="技术等级" align="center" width="140" prop="technicalLevel" />
<ElTableColumn label="技术等级唯一" align="center" width="140" prop="uniqueTechnicalLevel" >
<template slot-scope="scope">
<span v-if="scope.row.uniqueTechnicalLevel == '1'">是</span>
<span v-if="scope.row.uniqueTechnicalLevel == '0'">否</span>
</template>
</ElTableColumn>
<ElTableColumn label="路面类型" align="center" width="140" prop="roadSurfaceType" />
<ElTableColumn label="路面宽度" align="center" width="140" prop="roadWidth" />
<ElTableColumn label="设计速度" align="center" width="140" prop="speed" />
<ElTableColumn label="基准通行能力" align="center" width="140" prop="benchmarkTrafficCapacity" />
<ElTableColumn label="地貌" align="center" width="140" prop="landforms" />
<ElTableColumn label="供电方式" align="center" width="140" prop="powerSupplyMode" />
<ElTableColumn label="通讯方式" align="center" width="140" prop="communicationMethod" />
<ElTableColumn label="调查人员数量" align="center" width="140" prop="numberOfInvestigators" />
<ElTableColumn label="建站日期" align="center" prop="dateOfWebsiteEstablishment" width="140">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.dateOfWebsiteEstablishment, '{y}-{m}-{d}') }}</span>
</template>
</ElTableColumn>
<ElTableColumn label="经度" align="center" width="140" prop="longitude" />
<ElTableColumn label="纬度" align="center" width="140" prop="latitude" />
<ElTableColumn label="备注" align="center" width="140" prop="remark" />
<ElTableColumn label="路线标识" align="center" width="140" prop="routeSignage" />
<ElTableColumn label="路线编号" align="center" width="140" prop="routeCode" />
<ElTableColumn label="路线名称" align="center" width="140" prop="routeName" />
<ElTableColumn label="路线类型" align="center" width="140" prop="routeType" />
<ElTableColumn label="路线简称" align="center" width="140" prop="routeAbbreviation" />
<ElTableColumn label="路线业务编号" align="center" width="140" prop="routeBusinessNumber" />
<ElTableColumn label="行政区划代码" align="center" width="140" prop="regionalismCode" />
<ElTableColumn label="行政区划名称" align="center" width="140" prop="regionalismName" />
<ElTableColumn label="行政区划简称" align="center" width="140" prop="regionalismAbbreviation" />
<ElTableColumn label="机构标识" align="center" width="140" prop="institutionIdentification" />
<ElTableColumn label="上级机构标识" align="center" width="140" prop="superiorOrganizationIdentification" />
<ElTableColumn label="管理机构编号" align="center" width="140" prop="managementOrganizationNumber" />
<ElTableColumn label="管理机构名称" align="center" width="140" prop="nameOfManagementOrganization" />
<ElTableColumn label="管理机构类型" align="center" width="140" prop="typeOfManagementOrganization" />
<ElTableColumn label="操作" align="center" width="140" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</el-button>
</template>
</ElTableColumn>
</Table>
</div>
<!-- 添加或修改观测站信息对话框 -->
<Dialog :title="title" :visible.sync="open" @update:close="cancel" width="1080px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" inline label-width="120px">
<el-form-item label="物联id" prop="iotDeviceId">
<el-input v-model="form.iotDeviceId" placeholder="请输入物联id" />
</el-form-item>
<el-form-item label="观测站名称" prop="name">
<el-input v-model="form.name" placeholder="请输入观测站名称" />
</el-form-item>
<el-form-item label="观测站编号" prop="code">
<el-input v-model="form.code" placeholder="请输入观测站编号" />
</el-form-item>
<el-form-item label="年份" prop="year">
<el-input v-model="form.year" placeholder="请输入年份" />
</el-form-item>
<el-form-item label="观测站标识" prop="sign">
<el-input v-model="form.sign" placeholder="请输入观测站标识" />
</el-form-item>
<el-form-item label="出临行政区划代码" prop="regionCode">
<el-input v-model="form.regionCode" placeholder="请输入出临行政区划代码" />
</el-form-item>
<el-form-item label="观测站类型" prop="type">
<el-input v-model="form.type" placeholder="请输入观测站类型" />
</el-form-item>
<el-form-item label="站点桩号" prop="stakeMark">
<el-input v-model="form.stakeMark" placeholder="请输入站点桩号" />
</el-form-item>
<el-form-item label="起点桩号" prop="stakeMarkStart">
<el-input v-model="form.stakeMarkStart" placeholder="请输入起点桩号" />
</el-form-item>
<el-form-item label="止点桩号" prop="stakeMarkEnd">
<el-input v-model="form.stakeMarkEnd" placeholder="请输入止点桩号" />
</el-form-item>
<el-form-item label="观测里程" prop="observationMileage">
<el-input v-model="form.observationMileage" placeholder="请输入观测里程" />
</el-form-item>
<el-form-item label="比重起点桩号" prop="proportionStakeMarkStart">
<el-input v-model="form.proportionStakeMarkStart" placeholder="请输入比重起点桩号" />
</el-form-item>
<el-form-item label="比重止点桩号" prop="proportionStakeMarkEnd">
<el-input v-model="form.proportionStakeMarkEnd" placeholder="请输入比重止点桩号" />
</el-form-item>
<el-form-item label="比重观测里程" prop="proportionMileage">
<el-input v-model="form.proportionMileage" placeholder="请输入比重观测里程" />
</el-form-item>
<el-form-item label="起点名称" prop="startName">
<el-input v-model="form.startName" placeholder="请输入起点名称" />
</el-form-item>
<el-form-item label="止点名称" prop="endName">
<el-input v-model="form.endName" placeholder="请输入止点名称" />
</el-form-item>
<el-form-item label="调查方法" prop="investigationMethods">
<el-input v-model="form.investigationMethods" placeholder="请输入调查方法" />
</el-form-item>
<el-form-item label="车道数量" prop="lanesNum">
<el-input v-model="form.lanesNum" placeholder="请输入车道数量" />
</el-form-item>
<el-form-item label="技术等级" prop="technicalLevel">
<el-input v-model="form.technicalLevel" placeholder="请输入技术等级" />
</el-form-item>
<el-form-item label="技术等级唯一" prop="uniqueTechnicalLevel">
<el-radio-group v-model="form.uniqueTechnicalLevel" style="width: 200px">
<el-radio label="0">否</el-radio>
<el-radio label="1">是</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="路面类型" prop="roadSurfaceType">
<el-input v-model="form.roadSurfaceType" placeholder="请输入路面类型" />
</el-form-item>
<el-form-item label="路面宽度" prop="roadWidth">
<el-input v-model="form.roadWidth" placeholder="请输入路面宽度" />
</el-form-item>
<el-form-item label="设计速度" prop="speed">
<el-input v-model="form.speed" placeholder="请输入设计速度" />
</el-form-item>
<el-form-item label="基准通行能力" prop="benchmarkTrafficCapacity">
<el-input v-model="form.benchmarkTrafficCapacity" placeholder="请输入基准通行能力" />
</el-form-item>
<el-form-item label="地貌" prop="landforms">
<el-input v-model="form.landforms" placeholder="请输入地貌" />
</el-form-item>
<el-form-item label="供电方式" prop="powerSupplyMode">
<el-input v-model="form.powerSupplyMode" placeholder="请输入供电方式" />
</el-form-item>
<el-form-item label="通讯方式" prop="communicationMethod">
<el-input v-model="form.communicationMethod" placeholder="请输入通讯方式" />
</el-form-item>
<el-form-item label="调查人员数量" prop="numberOfInvestigators">
<el-input v-model="form.numberOfInvestigators" placeholder="请输入调查人员数量" />
</el-form-item>
<el-form-item label="建站日期" prop="dateOfWebsiteEstablishment">
<el-date-picker clearable style="width: 200px"
v-model="form.dateOfWebsiteEstablishment"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择建站日期">
</el-date-picker>
</el-form-item>
<el-form-item label="经度" prop="longitude">
<el-input v-model="form.longitude" placeholder="请输入经度" />
</el-form-item>
<el-form-item label="纬度" prop="latitude">
<el-input v-model="form.latitude" placeholder="请输入纬度" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
<el-form-item label="路线标识" prop="routeSignage">
<el-input v-model="form.routeSignage" placeholder="请输入路线标识" />
</el-form-item>
<el-form-item label="路线编号" prop="routeCode">
<el-input v-model="form.routeCode" placeholder="请输入路线编号" />
</el-form-item>
<el-form-item label="路线名称" prop="routeName">
<el-input v-model="form.routeName" placeholder="请输入路线名称" />
</el-form-item>
<el-form-item label="路线类型" prop="routeType">
<el-input v-model="form.routeType" placeholder="请输入路线类型" />
</el-form-item>
<el-form-item label="路线简称" prop="routeAbbreviation">
<el-input v-model="form.routeAbbreviation" placeholder="请输入路线简称" />
</el-form-item>
<el-form-item label="路线业务编号" prop="routeBusinessNumber">
<el-input v-model="form.routeBusinessNumber" placeholder="请输入路线业务编号" />
</el-form-item>
<el-form-item label="行政区划代码" prop="regionalismCode">
<el-input v-model="form.regionalismCode" placeholder="请输入行政区划代码" />
</el-form-item>
<el-form-item label="行政区划名称" prop="regionalismName">
<el-input v-model="form.regionalismName" placeholder="请输入行政区划名称" />
</el-form-item>
<el-form-item label="行政区划简称" prop="regionalismAbbreviation">
<el-input v-model="form.regionalismAbbreviation" placeholder="请输入行政区划简称" />
</el-form-item>
<el-form-item label="机构标识" prop="institutionIdentification">
<el-input v-model="form.institutionIdentification" placeholder="请输入机构标识" />
</el-form-item>
<el-form-item label="上级机构标识" prop="superiorOrganizationIdentification">
<el-input v-model="form.superiorOrganizationIdentification" placeholder="请输入上级机构标识" />
</el-form-item>
<el-form-item label="管理机构编号" prop="managementOrganizationNumber">
<el-input v-model="form.managementOrganizationNumber" placeholder="请输入管理机构编号" />
</el-form-item>
<el-form-item label="管理机构名称" prop="nameOfManagementOrganization">
<el-input v-model="form.nameOfManagementOrganization" placeholder="请输入管理机构名称" />
</el-form-item>
<el-form-item label="管理机构类型" prop="typeOfManagementOrganization">
<el-input v-model="form.typeOfManagementOrganization" placeholder="请输入管理机构类型" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel"> </el-button>
</div>
</Dialog>
</div>
</template>
<script>
import { listDcTrafficSurveyData, getDcTrafficSurveyData, delDcTrafficSurveyData, addDcTrafficSurveyData, updateDcTrafficSurveyData } from "@/api/observationStation/observationStation";
import InputSearch from "@screen/components/InputSearch/index.vue";
import Table from '@screen/components/Table.vue';
import ButtonGradient from "@screen/components/Buttons/ButtonGradient.vue";
import { searchFormList } from "./data";
import Dialog from "@screen/components/Dialog/index.vue";
import { Loading } from 'element-ui';
import request from "@/utils/request";
export default {
name: "DcTrafficSurveyData",
components: {
InputSearch,
Table,
ButtonGradient,
searchFormList,
Dialog,
},
data() {
return {
searchFormList,
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 观测站信息表格数据
dcTrafficSurveyDataList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
year: null,
sign: null,
regionCode: null,
code: null,
name: null,
type: null,
stakeMark: null,
stakeMarkStart: null,
stakeMarkEnd: null,
observationMileage: null,
proportionStakeMarkStart: null,
proportionStakeMarkEnd: null,
proportionMileage: null,
startName: null,
endName: null,
investigationMethods: null,
lanesNum: null,
technicalLevel: null,
uniqueTechnicalLevel: null,
roadSurfaceType: null,
roadWidth: null,
speed: null,
benchmarkTrafficCapacity: null,
landforms: null,
powerSupplyMode: null,
communicationMethod: null,
numberOfInvestigators: null,
dateOfWebsiteEstablishment: null,
longitude: null,
latitude: null,
routeSignage: null,
routeCode: null,
routeName: null,
routeType: null,
routeAbbreviation: null,
routeBusinessNumber: null,
regionalismCode: null,
regionalismName: null,
regionalismAbbreviation: null,
institutionIdentification: null,
superiorOrganizationIdentification: null,
managementOrganizationNumber: null,
nameOfManagementOrganization: null,
typeOfManagementOrganization: null
},
// 表单参数
form: {},
// 表单校验
rules: {
name: [
{ required: true, message: "观测站名称不能为空", trigger: "blur" }
],
iotDeviceId: [
{ required: true, message: "物联id不能为空", trigger: "blur" }
],
}
};
},
created() {
this.getList();
},
methods: {
/** 查询观测站信息列表 */
getList() {
this.loading = true;
listDcTrafficSurveyData(this.queryParams).then(response => {
this.dcTrafficSurveyDataList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
id: null,
year: null,
sign: null,
regionCode: null,
code: null,
name: null,
type: null,
stakeMark: null,
stakeMarkStart: null,
stakeMarkEnd: null,
observationMileage: null,
proportionStakeMarkStart: null,
proportionStakeMarkEnd: null,
proportionMileage: null,
startName: null,
endName: null,
investigationMethods: null,
lanesNum: null,
technicalLevel: null,
uniqueTechnicalLevel: null,
roadSurfaceType: null,
roadWidth: null,
speed: null,
benchmarkTrafficCapacity: null,
landforms: null,
powerSupplyMode: null,
communicationMethod: null,
numberOfInvestigators: null,
dateOfWebsiteEstablishment: null,
longitude: null,
latitude: null,
remark: null,
updateTime: null,
routeSignage: null,
routeCode: null,
routeName: null,
routeType: null,
routeAbbreviation: null,
routeBusinessNumber: null,
regionalismCode: null,
regionalismName: null,
regionalismAbbreviation: null,
institutionIdentification: null,
superiorOrganizationIdentification: null,
managementOrganizationNumber: null,
nameOfManagementOrganization: null,
typeOfManagementOrganization: null
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加观测站";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids
getDcTrafficSurveyData(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改观测站";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
updateDcTrafficSurveyData(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addDcTrafficSurveyData(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除观测站信息编号为"' + ids + '"的数据项?').then(function() {
return delDcTrafficSurveyData(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
onExport(){
const self = this;
this.$confirm("是否确认导出站点管理信息?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(function () {
let loadingInstance = Loading.service({
fullscreen: true,
background: "#00000052",
text: "文件正在下载...",
});
request({
url: `/dcObservationStation/export`,
method: "post",
data: self.queryParams,
responseType: 'blob',
}).then((res) => {
const url = window.URL.createObjectURL(new Blob([res]));
let link = document.createElement("a");
link.style.display = "none";
link.href = url;
link.setAttribute("download", "站点管理.xlsx");
document.body.appendChild(link);
link.click();
URL.revokeObjectURL(link.href); // 释放URL 对象
document.body.removeChild(link);
link = null;
loadingInstance.close();
})
.catch((err) => {
self.$message.error(err);
loadingInstance.close();
});
})
}
}
};
</script>
<style lang="scss" scoped>
.filter {
height: 60px;
display: flex;
justify-content: space-between;
align-items: center;
>div {
display: flex;
gap: 6px;
}
}
::v-deep .dialog-content {
overflow-y: auto !important;
height: 500px;
}
</style>