fix:修改病害通知单生成

This commit is contained in:
SunTao 2025-02-21 15:42:51 +08:00
parent 46360914af
commit fb2e653074
11 changed files with 1200 additions and 203 deletions

View File

@ -2,7 +2,7 @@
* @Author: SunTao 328867980@qq.com
* @Date: 2024-11-27 10:58:33
* @LastEditors: SunTao 328867980@qq.com
* @LastEditTime: 2024-11-27 10:58:33
* @LastEditTime: 2025-02-21 14:11:52
* @FilePath: \znxjxt-ui\src\api\xj\document.js
* @Description: 养护通知单相关接口
*/
@ -69,3 +69,138 @@ export function listDefect(query) {
params: query,
});
}
// 查询病害成因下拉列表
export function getCausesList(params) {
return request({
url: "/hxDic/diseCauses",
method: "get",
params,
});
}
// 获取路段类型下拉列表
export function getSegmentTypeList(params) {
return request({
url: "/hxDic/roadPosiType",
method: "get",
params,
});
}
// 获取匝道类型下拉数据
export function getRampTypeList(params) {
return request({
url: "/hxDic/rampType",
method: "get",
params,
});
}
// 获取道路方向下拉数据
export function getRoadDirectionList(params) {
return request({
url: "/hxDic/roadDirection",
method: "get",
params,
});
}
//获取收费站位置下拉数据
export function getStationLocation(params) {
return request({
url: "/hxDic/stationLocation",
method: "get",
params,
});
}
// 获取一级病害类型下拉列表
export function getDiseFirstType(params) {
return request({
url: "/hxDic/diseFirstType",
method: "get",
params,
});
}
// 获取病害详细类型下拉数据
export function getDiseTypeDetailed(params) {
return request({
url: "/hxDic/diseTypeDetailed",
method: "get",
params,
});
}
// 获取海信路段下拉数据
export function getDiseRoadPartDropDown(params) {
return request({
url: "/hxsection/dropDown",
method: "get",
params,
});
}
// 获取工区下拉数据
export function getTaskareaDropDown(params) {
return request({
url: "/hxtaskarea/dropDown",
method: "get",
params,
});
}
// 获取工作站下拉数据
export function getWorkstationDropDown(params) {
return request({
url: "/hxworkstation/dropDown",
method: "get",
params,
});
}
// 获取桥梁下拉数据
export function getBridgeDropDown(params) {
return request({
url: "/hxBridge/dropDown",
method: "get",
params,
});
}
// 获取隧道下拉数据
export function getTunnelDropDown(params) {
return request({
url: "/hxtunnel/dropDown",
method: "get",
params,
});
}
// 获取收费站下拉数据
export function getStationDropDown(params) {
return request({
url: "/hxstation/dropDown",
method: "get",
params,
});
}
// 获取匝道下拉数据
export function getRampDropDown(params) {
return request({
url: "/hxramp/dropDown",
method: "get",
params,
});
}
// 获取互通立交下拉数据
export function getCrossDropDown(params) {
return request({
url: "/hxCross/dropDown",
method: "get",
params,
});
}

View File

@ -2,7 +2,7 @@
* @Author: SunTao 328867980@qq.com
* @Date: 2025-02-13 09:11:50
* @LastEditors: SunTao 328867980@qq.com
* @LastEditTime: 2025-02-17 15:52:12
* @LastEditTime: 2025-02-21 13:20:11
* @FilePath: \znxjxt-ui\src\api\xj\hisense\inter-change.js
* @Description: 海信-桥梁
*/
@ -43,7 +43,7 @@ export function delData(id) {
});
}
// 获取互通立交下拉数据
// 获取桥梁下拉数据
export function getDropDown(params) {
return request({
url: "/hxBridge/dropDown",

View File

@ -0,0 +1,54 @@
/*
* @Author: SunTao 328867980@qq.com
* @Date: 2025-02-13 09:11:50
* @LastEditors: SunTao 328867980@qq.com
* @LastEditTime: 2025-02-21 13:26:37
* @FilePath: \znxjxt-ui\src\api\xj\hisense\inter-change.js
* @Description: 海信-路段
*/
import request from "@/utils/request";
// 获取列表数据
export function getList(query) {
return request({
url: "/hxsection/page",
method: "get",
params: query,
});
}
// 新增数据
export function add(data) {
return request({
url: "/hxsection",
method: "post",
data,
});
}
// 更新数据
export function updata(data) {
return request({
url: "/hxsection",
method: "put",
data,
});
}
// 删除数据
export function delData(id) {
return request({
url: `/hxsection/${id}`,
method: "delete",
});
}
// 获取路段下拉数据
export function getDropDown(params) {
return request({
url: "/hxsection/dropDown",
method: "get",
params,
});
}

View File

@ -2,7 +2,7 @@
* @Author: SunTao 328867980@qq.com
* @Date: 2025-02-13 09:11:50
* @LastEditors: SunTao 328867980@qq.com
* @LastEditTime: 2025-02-14 15:35:33
* @LastEditTime: 2025-02-21 14:11:37
* @FilePath: \znxjxt-ui\src\api\xj\hisense\inter-change.js
* @Description: 海信-收费站
*/
@ -43,7 +43,7 @@ export function delData(id) {
});
}
// 获取互通立交下拉数据
// 获取收费站下拉数据
export function getDropDown(params) {
return request({
url: "/hxstation/dropDown",

View File

@ -2,7 +2,7 @@
* @Author: SunTao 328867980@qq.com
* @Date: 2025-02-13 09:11:50
* @LastEditors: SunTao 328867980@qq.com
* @LastEditTime: 2025-02-17 14:25:08
* @LastEditTime: 2025-02-21 13:15:19
* @FilePath: \znxjxt-ui\src\api\xj\hisense\inter-change.js
* @Description: 海信-工区
*/
@ -43,7 +43,7 @@ export function delData(id) {
});
}
// 获取互通立交下拉数据
// 获取工区下拉数据
export function getDropDown(params) {
return request({
url: "/hxtaskarea/dropDown",

View File

@ -2,9 +2,9 @@
* @Author: SunTao 328867980@qq.com
* @Date: 2025-02-13 09:11:50
* @LastEditors: SunTao 328867980@qq.com
* @LastEditTime: 2025-02-14 15:35:33
* @LastEditTime: 2025-02-21 13:21:08
* @FilePath: \znxjxt-ui\src\api\xj\hisense\inter-change.js
* @Description: 海信-收费站
* @Description: 海信-隧道
*/
import request from "@/utils/request";
@ -43,7 +43,7 @@ export function delData(id) {
});
}
// 获取互通立交下拉数据
// 获取隧道下拉数据
export function getDropDown(params) {
return request({
url: "/hxtunnel/dropDown",

View File

@ -2,7 +2,7 @@
* @Author: SunTao 328867980@qq.com
* @Date: 2025-02-13 09:11:50
* @LastEditors: SunTao 328867980@qq.com
* @LastEditTime: 2025-02-14 15:35:33
* @LastEditTime: 2025-02-21 13:15:57
* @FilePath: \znxjxt-ui\src\api\xj\hisense\inter-change.js
* @Description: 海信-工作站
*/
@ -43,7 +43,7 @@ export function delData(id) {
});
}
// 获取互通立交下拉数据
// 获取工作站下拉数据
export function getDropDown(params) {
return request({
url: "/hxworkstation/dropDown",

View File

@ -2,7 +2,7 @@
* @Author: SunTao 328867980@qq.com
* @Date: 2024-11-20 11:58:33
* @LastEditors: SunTao 328867980@qq.com
* @LastEditTime: 2025-02-12 13:16:22
* @LastEditTime: 2025-02-21 15:20:25
* @FilePath: \znxjxt-ui\src\views\xj\document\maintenance-notice\components\edit-dialog.vue
* @Description: 养护通知单编辑弹窗
-->
@ -11,127 +11,157 @@
<el-form class="editForm" ref="editForm" :model="editForm" :rules="rules" label-width="7rem">
<el-row :gutter="24">
<el-col :span="6">
<el-form-item label="病害成因:" prop="value2">
<el-select v-model="editForm.value2" placeholder="请选择病害成因" clearable>
<el-option v-for="item in value2List" :key="item.value" :label="item.label" :value="item.value" />
<el-form-item label="路段类型:" prop="diseRoadPosiType">
<el-select v-model="editForm.diseRoadPosiType" placeholder="请选择路段类型" clearable>
<el-option v-for="item in segmentTypeList" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="路段类型:" prop="value1">
<el-select v-model="editForm.value1" placeholder="请选择路段类型" clearable>
<el-option v-for="item in value1List" :key="item.value" :label="item.label" :value="item.value" />
<el-form-item label="病害成因:" prop="diseCauses">
<el-select v-model="editForm.diseCauses" placeholder="请选择病害成因" clearable>
<el-option v-for="item in causesList" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="工区:" prop="value3">
<el-select v-model="editForm.value3" placeholder="请选择工区" clearable>
<el-option v-for="item in value3List" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="病害来源:" prop="value4">
<el-select v-model="editForm.value4" placeholder="请选择病害来源" clearable>
<!-- <el-col :span="6">
<el-form-item label="病害来源:" prop="diseFrom">
<el-select v-model="editForm.diseFrom" placeholder="请选择病害来源" clearable>
<el-option v-for="item in value4List" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
</el-col> -->
<el-col :span="6">
<el-form-item label="工作站:" prop="value5">
<el-select v-model="editForm.value5" placeholder="请选择工作站" clearable>
<el-option v-for="item in value5List" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
<el-form-item label="所在路段:" prop="diseRoadPart">
<el-select v-model="editForm.diseRoadPart" placeholder="请选择所在路段" filterable remote clearable reserve-keyword
:filter-method="handleDiseRoadPart" @change="changeDiseRoadPart">
<el-option v-for="(item, index) in roadPartList" :key="`diseRoadPart-name-${index}`" :label="item.label"
:value="item.value"></el-option> </el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="车道:" prop="value7">
<el-select v-model="editForm.value7" placeholder="请选择车道" clearable>
<el-option v-for="item in value7List" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="桥梁:" prop="value8">
<el-select v-model="editForm.value8" placeholder="请选择方向" clearable>
<el-option v-for="item in value8List" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="隧道:" prop="value9">
<el-select v-model="editForm.value9" placeholder="请选择方向" clearable>
<el-option v-for="item in value9List" :key="item.value" :label="item.label" :value="item.value" />
<el-form-item label="病害类型:" prop="diseFirstType">
<el-select v-model="editForm.diseFirstType" placeholder="请选择病害类型" clearable @change="changeDetailed">
<el-option v-for="item in diseFirstType" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="6">
<el-form-item label="道路名称:" prop="segmentId">
<el-select v-model="editForm.segmentId" placeholder="请选择路段" clearable>
<el-option v-for="item in segmentList" :key="item.value" :label="item.label" :value="item.value" />
<el-form-item label="病害二级类型:" prop="diseTypeDetailed">
<el-select v-model="editForm.diseTypeDetailed" placeholder="请选择病害二级类型" filterable clearable>
<el-option v-for="item in diseTypeDetailedList" :key="item.value" :label="item.label"
:value="item.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="开始桩号:" prop="stakeStart">
<el-input v-model="editForm.stakeStart" placeholder="K0000+000" />
<el-form-item label="工区:" prop="matTaskAreaId">
<el-select v-model="editForm.matTaskAreaId" placeholder="请选择工区" filterable remote clearable reserve-keyword
:filter-method="handleMatTaskArea" @change="changeMatTaskArea">
<el-option v-for="(item, index) in taskAreaList" :key="`taskAreaList-name-${index}`" :label="item.label"
:value="item.value"></el-option> </el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="结束桩号:" prop="stakeEnd">
<el-input v-model="editForm.stakeEnd" placeholder="K0000+000" />
<el-form-item label="工作站:" prop="matTWorkStationId">
<el-select v-model="editForm.matTWorkStationId" placeholder="请选择工作站" filterable remote clearable
reserve-keyword :filter-method="handleMatWorkStation" @change="changeMatWorkStation">
<el-option v-for="(item, index) in matWorkStationList" :key="`WorkStationId-name-${index}`"
:label="item.label" :value="item.value"></el-option> </el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="方向:" prop="value6">
<el-select v-model="editForm.value6" placeholder="请选择方向" clearable>
<el-option v-for="item in value6List" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
<el-form-item label="车道:" prop="diseRoadLine">
<el-input v-model="editForm.diseRoadLine" placeholder="请填写车道" clearable>
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="6">
<el-form-item label="收费站:" prop="value10">
<el-select v-model="editForm.value10" placeholder="请选择路段" clearable>
<el-option v-for="item in value10List" :key="item.value" :label="item.label" :value="item.value" />
<el-form-item label="桥梁:" prop="connBridge" v-if="editForm.diseRoadPosiType !== '1'">
<el-select v-model="editForm.connBridge" placeholder="请选择桥梁" filterable remote clearable reserve-keyword
:filter-method="handleConnBridge" @change="changeConnBridge">
<el-option v-for="(item, index) in connBridgeList" :key="`connBridge-name-${index}`" :label="item.label"
:value="item.value"></el-option> </el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="隧道:" prop="connTunnel" v-if="editForm.diseRoadPosiType !== '1'">
<el-select v-model="editForm.connTunnel" placeholder="请选择隧道" filterable remote clearable reserve-keyword
:filter-method="handleConnTunnel" @change="changeConnTunnel">
<el-option v-for="(item, index) in connTunnelList" :key="`connTunnel-name-${index}`" :label="item.label"
:value="item.value"></el-option> </el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="收费站:" prop="stationCode" v-if="editForm.diseRoadPosiType === '1'">
<el-select v-model="editForm.stationCode" placeholder="请选择收费站" filterable remote clearable reserve-keyword
:filter-method="handleStationCode" @change="changeStationCode">
<el-option v-for="(item, index) in stationCodeList" :key="`stationCode-name-${index}`" :label="item.label"
:value="item.value"></el-option> </el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="收费站位置:" prop="stationLocation" v-if="editForm.diseRoadPosiType === '1'">
<el-select v-model="editForm.stationLocation" placeholder="请选择收费站位置" clearable>
<el-option v-for="item in stationLocationList" :key="item.value" :label="item.label"
:value="item.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="收费站位置:" prop="value11">
<el-select v-model="editForm.value11" placeholder="请选择路段" clearable>
<el-option v-for="item in value11List" :key="item.value" :label="item.label" :value="item.value" />
<el-form-item label="方向:" prop="diseRoadDirec">
<el-select v-model="editForm.diseRoadDirec" placeholder="请选择方向" clearable>
<el-option v-for="item in roadDirectionList" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="匝道类型:" prop="value12">
<el-select v-model="editForm.value12" placeholder="请选择匝道类型" clearable>
<el-option v-for="item in value12List" :key="item.value" :label="item.label" :value="item.value" />
<el-form-item label="开始桩号:" prop="diseStartStake">
<el-input v-model="editForm.diseStartStake" placeholder="K0000+000" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="6">
<el-form-item label="结束桩号:" prop="diseEndStake">
<el-input v-model="editForm.diseEndStake" placeholder="K0000+000" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="匝道类型:" prop="rampType">
<el-select v-model="editForm.rampType" placeholder="请选择匝道类型" clearable>
<el-option v-for="item in rampTypeList" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="匝道立交:" prop="value13">
<el-select v-model="editForm.value13" placeholder="请选择匝道立交" clearable>
<el-option v-for="item in value13List" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
<el-form-item label="匝道立交:" prop="rampIntOrientation">
<el-select v-model="editForm.rampIntOrientation" placeholder="请选择匝道立交" filterable remote clearable
reserve-keyword :filter-method="handleRampIntOrientation" @change="changeRampIntOrientation">
<el-option v-for="(item, index) in rampIntOrientationList" :key="`rampIntOrientation-name-${index}`"
:label="item.label" :value="item.value"></el-option> </el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="匝道立交方向:" prop="value14">
<el-select v-model="editForm.value14" placeholder="请选择匝道立交方向" clearable>
<el-option v-for="item in value14List" :key="item.value" :label="item.label" :value="item.value" />
<el-form-item label="匝道立交方向:" prop="rampInterchangeCode">
<el-select v-model="editForm.rampInterchangeCode" placeholder="请选择匝道立交方向" clearable>
<el-option v-for="item in rampInterchangeCodeList" :key="item.value" :label="item.label"
:value="item.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="24"><el-form-item label="详细说明:" prop="diseElaDecs">
<el-input v-model="editForm.diseElaDecs" type="textarea" :rows="3" placeholder="请输入内容" resize="none">
</el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-card shadow="never">
<div slot="header" class="clearfix">
@ -173,7 +203,7 @@
<template slot-scope="scope">
<span>{{
scope.row.inspectDirection === "0" ? "上行" : "下行"
}}</span>
}}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
@ -220,8 +250,19 @@
</template>
<script>
import {
addMaintenanceNotice,
getDiseRoadPartDropDown,
getDiseTypeDetailed,
getTaskareaDropDown,
getWorkstationDropDown,
getBridgeDropDown,
getTunnelDropDown,
getStationDropDown,
getCrossDropDown,
getRampDropDown,
} from "@/api/xj/document";
import FssmScroll from "@/components/scroll/fssm-scroll.vue";
import { addMaintenanceNotice } from "@/api/xj/document";
import DiseaseDialog from "./disease-dialog.vue";
import FssmMap from '@/components/map/fssm-map.vue';
import { Feature } from "ol";
@ -242,6 +283,36 @@ export default {
type: Array,
default: () => [],
},
//
causesList: {
type: Array,
default: () => [],
},
//
diseFirstType: {
type: Array,
default: () => []
},
//
segmentTypeList: {
type: Array,
default: () => [],
},
//
rampTypeList: {
type: Array,
default: () => [],
},
//
roadDirectionList: {
type: Array,
default: () => [],
},
//
stationLocationList: {
type: Array,
default: () => []
},
segmentList: {
type: Array,
default: () => [],
@ -252,142 +323,72 @@ export default {
//
editForm: {
//
value2: "",
diseCauses: "",
//
value1: "",
diseRoadPosiType: "",
//
diseFirstType: "",
// id
diseTypeDetailed: "",
// id
value3: "",
matTaskAreaId: "",
//
value4: "",
diseFrom: "7",
// id
value5: "",
matTWorkStationId: "",
//
value6: "",
diseRoadDirec: "",
//
value7: "",
diseRoadLine: "",
//
value8: "",
connBridge: "",
//
value9: "",
connTunnel: "",
//
value10: "",
stationCode: "",
//
value11: "",
stationLocation: "",
//
value12: "",
//
value13: "",
rampType: "",
//
value14: "",
rampInterchangeCode: "",
//
rampIntOrientation: "",
// id
defectId: "",
//
segmentId: "",
//
stakeStart: "",
diseStartStake: "",
//
stakeEnd: "",
//
receiver: "",
//
// taskDescription: [""],
diseEndStake: "",
//
diseRoadPart: "",
//
diseElaDecs: ""
},
//
value2List: [],
//
value1List: [],
//
diseTypeDetailedList: [],
//
value3List: [],
taskAreaList: [],
//
value4List: [],
//
value5List: [],
//
value6List: [],
matWorkStationList: [],
//
value7List: [],
//
value8List: [],
connBridgeList: [],
//
value9List: [],
connTunnelList: [],
//
value10List: [],
//
value11List: [],
//
value12List: [],
//
value13List: [],
stationCodeList: [],
//
value14List: [],
//
rules: {
value2: [
{
required: true,
message: "请选择病害成因",
trigger: "change",
},
],
value1: [
{ required: true, message: "请选择路段类型", trigger: "change" },
],
value3: [{ required: true, message: "请选择工区", trigger: "change" }],
value4: [
{ required: true, message: "请选择病害来源", trigger: "change" },
],
value5: [
{ required: true, message: "请选择工作站", trigger: "change" },
],
value6: [{ required: true, message: "请选择方向", trigger: "change" }],
value7: [{ required: true, message: "请选择车道", trigger: "change" }],
value8: [{ required: true, message: "请选择桥梁", trigger: "change" }],
value9: [{ required: true, message: "请选择隧道", trigger: "change" }],
value10: [
{ required: true, message: "请选择收费站", trigger: "change" },
],
value11: [
{ required: true, message: "请选择收费站位置", trigger: "change" },
],
value12: [{ required: true, message: "请选择匝道", trigger: "change" }],
value13: [
{ required: true, message: "请选择匝道立交", trigger: "change" },
],
value14: [
{ required: true, message: "请选择匝道立交方向", trigger: "change" },
],
segmentId: [
{ required: true, message: "请选择路段", trigger: "change" },
],
stakeStart: [
{
required: true,
message: "请输入开始桩号",
trigger: "blur",
},
{
pattern: /^K\d{4}\+\d{3}$/,
message: "请输入正确的桩号格式",
trigger: "blur",
},
],
stakeEnd: [
{
required: true,
message: "请输入结束桩号",
trigger: "blur",
},
{
pattern: /^K\d{4}\+\d{3}$/,
message: "请输入正确的桩号格式",
trigger: "blur",
},
],
receiver: [
{ required: true, message: "请输入负责人名称", trigger: "blur" },
],
},
rampInterchangeCodeList: [],
//
rampIntOrientationList: [],
//
roadPartList: [],
//
mapTip: true,
//
@ -408,16 +409,81 @@ export default {
diseaseVisible: false,
};
},
computed: {
rules() {
return {
diseCauses: [
{
required: true,
message: "请选择病害成因",
trigger: "change",
},
],
diseRoadPosiType: [
{ required: true, message: "请选择路段类型", trigger: "change" },
],
diseTypeDetailed: [{ required: true, message: "请选择病害二级类型", trigger: "change" }],
matTaskAreaId: [{ required: true, message: "请选择工区", trigger: "change" }],
diseFirstType: [
{ required: true, message: "请选择病害类型", trigger: "change" },
],
matTWorkStationId: [
{ required: true, message: "请选择工作站", trigger: "change" },
],
diseRoadDirec: [{ required: true, message: "请选择方向", trigger: "change" }],
diseRoadLine: [{ required: true, message: "请选择车道", trigger: "blur" }],
stationCode: [
{ required: true, message: "请选择收费站", trigger: "change" },
],
stationLocation: [
{ required: true, message: "请选择收费站位置", trigger: "change" },
],
rampType: [{ required: true, message: "请选择匝道", trigger: "change" }],
rampInterchangeCode: [
{ required: true, message: "请选择匝道立交方向", trigger: "change" },
],
rampIntOrientation: [
{ required: true, message: "请选择匝道立交", trigger: "change" },
],
segmentId: [
{ required: true, message: "请选择路段", trigger: "change" },
],
diseStartStake: [
{
required: this.isStakeStartRequired,
message: "请输入开始桩号",
trigger: "blur",
},
{
pattern: /^K\d{4}\+\d{3}$/,
message: "请输入正确的桩号格式",
trigger: "blur",
},
],
diseEndStake: [
{
required: this.isStakeStartRequired,
message: "请输入结束桩号",
trigger: "blur",
},
{
pattern: /^K\d{4}\+\d{3}$/,
message: "请输入正确的桩号格式",
trigger: "blur",
},
],
diseRoadPart: [
{ required: true, message: "请选择所在路段", trigger: "change" },
],
}
},
isStakeStartRequired() {
return this.editForm.diseRoadPosiType !== '2'
}
},
watch: {
dialogItem: {
handler(val) {
// this.editForm = {
// ...val,
// segmentId: val.segmentId === "999999999" ? "" : val.segmentId,
// id: null,
// defectId: val.id,
// createdTime: null,
// };
this.checkedDiseaseList = val
},
deep: true,
@ -425,8 +491,214 @@ export default {
},
},
mounted() {
this.handleDiseRoadPart()
this.handleMatTaskArea()
this.handleMatWorkStation()
this.handleConnBridge()
this.handleConnTunnel()
this.handleStationCode()
this.handleRampIntOrientation()
},
methods: {
/**
* @description: 获取所在路段下拉数据
* @param {*}
* @return {*}
*/
handleDiseRoadPart(str) {
getDiseRoadPartDropDown({ name: str }).then(({ code, data }) => {
if (code === 200) {
this.roadPartList = data
}
})
},
/**
* @description: 修改所在路段事件
* @param {*}
* @return {*}
*/
changeDiseRoadPart(value) {
if (!value) {
this.handleDiseRoadPart()
}
},
/**
* @description: 获取工区下拉数据
* @param {*}
* @return {*}
*/
handleMatTaskArea(str) {
getTaskareaDropDown({ name: str }).then(({ code, data }) => {
if (code === 200) {
this.taskAreaList = data
}
})
},
/**
* @description: 修改工区事件
* @param {*}
* @return {*}
*/
changeMatTaskArea(value) {
if (!value) {
this.handleMatTaskArea()
}
},
/**
* @description: 获取工作站下拉数据
* @param {*}
* @return {*}
*/
handleMatWorkStation(str) {
getWorkstationDropDown({ name: str }).then(({ code, data }) => {
if (code === 200) {
this.matWorkStationList = data
}
})
},
/**
* @description: 工作站修改事件
* @param {*}
* @return {*}
*/
changeMatWorkStation(value) {
if (!value) {
this.handleMatWorkStation()
}
},
/**
* @description: 获取桥梁下拉数据
* @param {*}
* @return {*}
*/
handleConnBridge(str) {
getBridgeDropDown({ name: str }).then(({ code, data }) => {
if (code === 200) {
this.connBridgeList = data
}
})
},
/**
* @description: 桥梁修改事件
* @param {*}
* @return {*}
*/
changeConnBridge(value) {
if (!value) {
this.handleConnBridge()
}
},
/**
* @description: 获取隧道下拉数据
* @param {*}
* @return {*}
*/
handleConnTunnel(str) {
getTunnelDropDown({ name: str }).then(({ code, data }) => {
if (code === 200) {
this.connTunnelList = data
}
})
},
/**
* @description: 隧道修改事件
* @param {*}
* @return {*}
*/
changeConnTunnel(value) {
if (!value) {
this.handleConnTunnel()
}
},
/**
* @description: 获取收费站下拉数据
* @param {*}
* @return {*}
*/
handleStationCode(str) {
getStationDropDown({ name: str }).then(({ code, data }) => {
if (code === 200) {
this.stationCodeList = data
}
})
},
/**
* @description: 收费站修改事件
* @param {*}
* @return {*}
*/
changeStationCode(value) {
if (!value) {
this.handleStationCode()
}
},
/**
* @description: 获取互通立交下拉数据
* @param {*}
* @return {*}
*/
handleRampIntOrientation(str) {
getCrossDropDown({ name: str }).then(({ code, data }) => {
if (code === 200) {
this.rampIntOrientationList = data
}
})
},
/**
* @description: 互通立交修改事件
* @param {*}
* @return {*}
*/
changeRampIntOrientation(value) {
if (!value) {
this.handleRampIntOrientation()
}
this.editForm.rampInterchangeCode = ""
this.handleRampInterchangeCode()
},
/**
* @description: 获取匝道下拉数据
* @param {*}
* @return {*}
*/
handleRampInterchangeCode() {
getRampDropDown({ crossid: this.editForm.rampIntOrientation }).then(({ code, data }) => {
if (code === 200) {
this.rampInterchangeCodeList = data
}
})
},
/**
* @description: 病害类型一级修改事件
* @param {*} row
* @return {*}
*/
changeDetailed(value) {
this.editForm.diseTypeDetailed = "";
const [child] = this.diseFirstType.filter(item => item.value === value)
getDiseTypeDetailed({ parentId: child.key }).then(({ code, data }) => {
if (code === 200) {
this.diseTypeDetailedList = data;
}
})
},
/**
* @description: 列表行绑定id
* @param {*} row
@ -456,9 +728,11 @@ export default {
* @description: 提交表单
*/
submitForm() {
this.$refs.editForm.validate((valid) => {
if (valid) {
addMaintenanceNotice(this.editForm).then(({ code, data }) => {
const defectId = this.checkedDiseaseList?.map(item => item.id)
addMaintenanceNotice({ ...this.editForm, defectId }).then(({ code, data }) => {
if (code === 200) {
this.$message.success("生成成功");
this.$emit("cancel");

View File

@ -2,7 +2,7 @@
* @Author: SunTao 328867980@qq.com
* @Date: 2024-11-20 11:58:33
* @LastEditors: SunTao 328867980@qq.com
* @LastEditTime: 2025-02-11 17:12:32
* @LastEditTime: 2025-02-21 11:43:04
* @FilePath: \znxjxt-ui\src\views\xj\document\maintenance-notice\index.vue
* @Description: 养护通知单
-->
@ -105,7 +105,7 @@
<template slot-scope="scope">
<span>{{
scope.row.inspectDirection === "0" ? "上行" : "下行"
}}</span>
}}</span>
</template>
</el-table-column>
<el-table-column label="是否紧急" align="center" prop="urgentFlag">
@ -131,8 +131,10 @@
<!-- 新增弹窗 -->
<el-dialog title="生成表单" :visible.sync="addVisible" width="90%" append-to-body :close-on-click-modal="false"
destroy-on-close @close="addCancel">
<edit-dialog v-if="addVisible" :segmentList="segmentList" :tableDefect="tableDefect" :dialogItem="dialogItem"
@cancel="addCancel" />
<edit-dialog v-if="addVisible" :causesList="causesList" :rampTypeList="rampTypeList"
:diseFirstType="diseFirstType" :stationLocationList="stationLocationList" :roadDirectionList="roadDirectionList"
:segmentTypeList="segmentTypeList" :segmentList="segmentList" :tableDefect="tableDefect"
:dialogItem="dialogItem" @cancel="addCancel" />
</el-dialog>
<!-- 查看图片大图 -->
@ -161,6 +163,12 @@ import {
getSegment,
getDefectList,
getMaintenanceNoticeList,
getCausesList,
getSegmentTypeList,
getRampTypeList,
getRoadDirectionList,
getStationLocation,
getDiseFirstType,
} from "@/api/xj/document";
export default {
name: "MaintenanceNotice",
@ -255,6 +263,18 @@ export default {
addVisible: false,
//
viewVisible: false,
//
causesList: [],
//
segmentTypeList: [],
//
rampTypeList: [],
//
roadDirectionList: [],
//
stationLocationList: [],
//
diseFirstType: [],
//
showImageDialog: false,
@ -268,6 +288,12 @@ export default {
this.getList();
this.getSegmentList();
this.getDefectData();
this.setCausesList();
this.setSegmentTypeList()
this.setRampTypeList()
this.setRoadDirectionList()
this.setStationLocation()
this.setDiseFirstType()
},
methods: {
/**
@ -294,6 +320,78 @@ export default {
});
},
/**
* @description: 获取病害成因下拉列表数据
* @return {*}
*/
setCausesList() {
getCausesList().then(({ code, data }) => {
if (code === 200) {
this.causesList = data;
}
})
},
/**
* @description: 获取路段类型下拉列表数据
* @return {*}
*/
setSegmentTypeList() {
getSegmentTypeList().then(({ code, data }) => {
if (code === 200) {
this.segmentTypeList = data;
}
})
},
/**
* @description: 获取匝道类型下拉列表数据
* @return {*}
*/
setRampTypeList() {
getRampTypeList().then(({ code, data }) => {
if (code === 200) {
this.rampTypeList = data;
}
})
},
/**
* @description: 获取道路方向下拉列表数据
* @return {*}
*/
setRoadDirectionList() {
getRoadDirectionList().then(({ code, data }) => {
if (code === 200) {
this.roadDirectionList = data;
}
})
},
/**
* @description: 获取收费站位置下拉列表数据
* @return {*}
*/
setStationLocation() {
getStationLocation().then(({ code, data }) => {
if (code === 200) {
this.stationLocationList = data;
}
})
},
/**
* @description: 获取病害类型下拉列表数据
* @return {*}
*/
setDiseFirstType() {
getDiseFirstType().then(({ code, data }) => {
if (code === 200) {
this.diseFirstType = data;
}
})
},
/**
* @description: 点击查询
* @param {*}
@ -461,7 +559,7 @@ export default {
*/
addCancel() {
this.addVisible = false;
this.dialogItem = {};
this.dialogItem = [];
this.getList();
},
@ -471,7 +569,7 @@ export default {
* @return {*}
*/
viewCancel() {
this.dialogItem = {};
this.dialogItem = [];
this.viewVisible = false;
},

View File

@ -0,0 +1,155 @@
<!--
* @Author: SunTao 328867980@qq.com
* @Date: 2025-02-12 16:44:44
* @LastEditors: SunTao 328867980@qq.com
* @LastEditTime: 2025-02-21 10:00:26
* @FilePath: \znxjxt-ui\src\views\xj\hisense\inter-change\components\add-inter.vue
* @Description: 海信-收费站-新增/编辑
-->
<template>
<div class="dialog-content">
<el-form class="addForm" ref="addInterForm" :model="addInterForm" :rules="rules" label-width="8rem">
<el-row :gutter="24">
<el-col :span="24">
<el-form-item label="路段名称:" prop="name">
<el-input v-model="addInterForm.name" placeholder="请填写名称" style="width: 100%" clearable>
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="24">
<el-form-item label="路段Id" prop="sectionId">
<el-input v-model="addInterForm.sectionId" placeholder="请填写id" style="width: 100%" clearable>
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="24">
<el-form-item label="开始桩号:" prop="startStake">
<el-input v-model="addInterForm.startStake" placeholder="请填写开始桩号" style="width: 100%" clearable>
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="24">
<el-form-item label="结束桩号:" prop="endStake">
<el-input v-model="addInterForm.endStake" placeholder="请填写结束桩号" style="width: 100%" clearable>
</el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</div>
</template>
<script>
import { add, updata } from '@/api/xj/hisense/route-section'
export default {
name: "AddSection",
props: {
//
dialogItem: {
type: Object,
default: () => { },
},
},
data() {
return {
//
addInterForm: {
name: "",
sectionId: "",
startStake: "",
endStake: "",
},
//
rules: {
name: [{ required: true, message: "请填写名称", trigger: "blur" }],
sectionId: [{ required: true, message: "请填写id", trigger: "blur" }, {
pattern: /^[1-9]\d*$/,
message: "请输入正整数",
}],
startStake: [{ required: true, message: "请填写开始桩号", trigger: "blur" }, {
pattern: /^(0|[1-9]\d*)(\.\d{1,3})?$/,
message: "请输入非负数",
}],
endStake: [{ required: true, message: "请填写桩号", trigger: "blur" }, {
pattern: /^(0|[1-9]\d*)(\.\d{1,3})?$/,
message: "请输入非负数",
},],
}
}
},
watch: {
dialogItem: {
handler(val) {
if (val) {
this.addInterForm = JSON.parse(JSON.stringify(val))
}
}, immediate: true, deep: true
}
},
mounted() {
},
methods: {
/**
* @description: 点击确定事件
* @return {*}
*/
submitForm() {
this.$refs.addInterForm.validate((valid) => {
if (valid) {
const data = {
...this.addInterForm,
};
if (this.addInterForm.id) {
updata(data).then(({ code }) => {
if (code === 200) {
this.$modal.msgSuccess("更新成功");
this.$emit("cancel");
}
});
} else {
add(data).then(({ code }) => {
if (code === 200) {
this.$modal.msgSuccess("新增成功");
this.$emit("cancel");
}
});
}
}
});
},
/**
* @description: 点击取消事件
* @return {*}
*/
cancel() {
this.$emit("cancel");
},
},
}
</script>
<style lang="scss" scoped>
.dialog-content {
width: 100%;
// height: 20rem;
}
/* 页脚 */
.dialog-footer {
display: flex;
justify-content: flex-end;
}
</style>

View File

@ -0,0 +1,281 @@
<template>
<div class="content">
<el-form :model="interForm" ref="interForm" size="small" :inline="true" label-width="7rem">
<el-form-item label="路段名称" prop="name">
<el-select v-model="interForm.name" placeholder="请输入路段名称" filterable remote clearable reserve-keyword
:filter-method="handleRemoteMethod" @change="handleRemoteMethod">
<el-option v-for="(item, index) in segmentList" :key="`enterprise-name-${index}`" :label="item.label"
:value="item.label"></el-option> </el-select>
</el-form-item>
<!-- <el-form-item label="病害类型" prop="defectType">
<el-select v-model="interForm.defectType" placeholder="请选择病害" clearable>
<el-option v-for="item in tableDefect" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item> -->
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd">新增
</el-button>
</el-col>
<!-- <el-col :span="1.5">
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple"
@click="handleDelete(null)">删除
</el-button>
</el-col> -->
</el-row>
<!-- 表格 -->
<el-table ref="setupTable" :data="interList" v-loading="loading" @selection-change="handleSelectionChange"
style="width: 100%">
<!-- <el-table-column type="selection" width="55" align="center" /> -->
<el-table-column type="index" label="序号"> </el-table-column>
<el-table-column label="路段名称" align="center" prop="name" />
<el-table-column label="路段Id(海信)" align="center" prop="sectionId">
</el-table-column>
<el-table-column label="开始桩号" align="center" prop="startStake" />
<el-table-column label="结束桩号" align="center" prop="endStake" />
<el-table-column label="操作" align="center" 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>
</el-table-column>
</el-table>
<!-- 分页组件 -->
<div class="pagination-part">
<el-pagination background :current-page.sync="pagination.pageNum" @current-change="handleCurrentChange"
:page-sizes="[10, 20, 30, 40]" :page-size.sync="pagination.pageSize" @size-change="handleSizeChange"
layout="total, sizes, prev, pager, next, jumper" :total="tableTotal">
</el-pagination>
</div>
<!-- 新增弹窗 -->
<el-dialog :title="title" :visible.sync="addVisible" width="50rem" append-to-body :close-on-click-modal="false"
destroy-on-close>
<add-section v-if="addVisible" :segmentList="segmentList" :dialogItem="dialogItem"
@cancel="addCancel"></add-section>
</el-dialog>
</div>
</template>
<script>
import { getList, getDropDown, delData } from "@/api/xj/hisense/route-section"
import AddSection from "./components/add-section.vue"
export default {
name: "RouteSection",
components: {
AddSection,
},
data() {
return {
//
interForm: {
name: "",
},
searchForm: {},
//
segmentList: [],
//
interList: [],
//
loading: false,
//
checkIds: [],
//
multiple: true,
// -
tableTotal: 0,
// -
pagination: {
pageNum: 1,
pageSize: 10,
},
//
title: "新增",
//
addVisible: false,
//
dialogItem: {},
}
},
mounted() {
this.getTableData()
this.getDownList()
},
methods: {
/**
* @description: 模糊搜索
* @param {*} str 模糊搜索字段
* @return {*}
*/
handleRemoteMethod(str) {
this.interForm.name = str;
this.getDownList();
},
/**
* @description: 获取下拉数据
* @param {*}
* @return {*}
*/
getDownList() {
getDropDown({ name: this.interForm.name }).then(({ code, data }) => {
if (code === 200) {
this.segmentList = data
}
})
},
/**
* @description: 点击搜索
* @param {*}
* @return {*}
*/
handleQuery() {
this.searchForm = JSON.parse(JSON.stringify(this.interForm));
this.pagination.pageNum = 1;
this.getTableData();
},
/**
* @description: 点击重置
* @param {*}
* @return {*}
*/
resetQuery() {
this.interForm = {
name: "",
defectType: "",
}
this.searchForm = {}
this.getTableData();
},
/**
* @description: 点击新增事件
* @param {*}
* @return {*}
*/
handleAdd() {
this.addVisible = true;
this.dialogItem = {};
},
/**
* @description: 获取列表数据
* @param {*}
* @return {*}
*/
getTableData() {
const dataItem = {
...this.searchForm,
...this.pagination,
}
getList(dataItem).then(({ rows, code, total }) => {
if (code === 200) {
this.interList = rows;
this.tableTotal = total;
}
})
},
/**
* @description: 列表选择改变事件
* @param {*}
* @return {*}
*/
handleSelectionChange(selection) {
this.checkIds = selection.map((item) => item.id);
this.multiple = !selection.length;
},
/**
* @description: 点击编辑事件
* @param {*}
* @return {*}
*/
handleUpdate(value) {
this.addVisible = true;
this.dialogItem = value;
},
/**
* @description: 点击删除事件
* @param {*}
* @return {*}
*/
handleDelete(row) {
// const checkIds = row ? row.id : this.checkIds;
// if (!checkIds.length) {
// this.$modal.msgWarning("");
// return;
// }
this.$modal
.confirm(`是否确认删除选中的1条记录`)
.then(() => {
return delData(row.id);
})
.then(() => {
this.getTableData();
// this.$refs.defectTable.clearSelection();
this.$modal.msgSuccess("删除成功");
})
.catch(() => { });
},
/**
* @description: 切换分页
* @param {*} arg
* @return {*}
*/
handleCurrentChange(arg) {
this.pagination.pageNum = arg;
this.getTableData();
},
/**
* @description: 切换每条/
* @param {*} arg
* @return {*}
*/
handleSizeChange(arg) {
this.pagination.pageSize = arg;
this.getTableData();
},
/**
* @description: 关闭弹窗事件
* @param {*}
* @return {*}
*/
addCancel() {
this.addVisible = false;
this.dialogItem = {};
this.getTableData();
}
},
}
</script>
<style lang="scss" scoped>
.content {
width: 100%;
height: calc(100vh - 5.4rem);
padding: 1rem;
overflow-y: auto;
}
/* 分页样式 */
.pagination-part {
width: 100%;
display: flex;
padding-top: 1rem;
justify-content: flex-end;
}
</style>