Browse Source

fix: 修改防治管理页

sy-water-data-board-ui
panyuyi 1 year ago
parent
commit
ed482627e2
  1. 11
      src/api/dike/index.js
  2. 9
      src/api/system/dict/data.js
  3. 355
      src/views/dike/runManage/pestAnimalControl/controlManage/index.vue
  4. 48
      src/views/dike/runManage/pestAnimalControl/governanceRecords/index.vue
  5. 70
      src/views/dike/runManage/pestAnimalControl/planManagement/index.vue

11
src/api/dike/index.js

@ -27,7 +27,16 @@ export function postProjectChecking(data) {
})
}
// 海堤动物防治--获取海堤上报记录详情
// 害堤动物防治--堤防列表
export function getDikeAnimalProList(data) {
return request({
url: `/run/df/animal/project/list`,
method: 'post',
data
})
}
// 害堤动物防治--获取海堤上报记录详情
export function getDikeAnimalRecordDetails(id) {
return request({
url: `/run/df/animal/record/${id}`,

9
src/api/system/dict/data.js

@ -1,5 +1,14 @@
import request from '@/utils/request'
// 查询字典数据map
export function Data(query) {
return request({
url: '/system/dict/data/map',
method: 'post',
data: query
})
}
// 查询字典数据列表
export function listData(query) {
return request({

355
src/views/dike/runManage/pestAnimalControl/controlManage/index.vue

@ -0,0 +1,355 @@
<!-- 动物防治管理 -->
<template>
<div class="patrol-manage-page">
<div class="top-title">防治管理</div>
<div class="table-box">
<div class="top-search">
<span>堤防名称</span>
<el-input
class="search-input"
v-model="searchInput"
placeholder="请输入堤防名称"
/>
<span>堤防类型</span>
<el-select v-model="dikeType" placeholder="请选择">
<el-option
v-for="item in dikeTypeList"
:key="item.dictValue"
:label="item.dictLabel"
:value="item.dictValue"
>
</el-option>
</el-select>
<el-button
class="!ml-10"
type="success"
@click="getTableData(searchInput)"
>搜索</el-button
>
<el-button @click="resetSearch()">重置</el-button>
</div>
<el-table class="mt-16" height="625" :data="tableData" border>
<el-table-column type="index" align="center" label="序号" width="80" />
<el-table-column prop="dikeName" align="center" label="堤防名称" />
<el-table-column prop="dikeCode" align="center" label="堤防代码" />
<el-table-column
prop="engineeringManagementUnit"
align="center"
label="管理单位"
/>
<el-table-column
prop="waterAdministrativeDepartment"
align="center"
label="行政主管部门"
/>
<el-table-column prop="lastTime" align="center" label="最近巡查时间" />
<el-table-column prop="operate" align="center" label="操作">
<template slot-scope="scope">
<el-button
style="margin-right: 16px"
@click="handleGoPlan(scope.row)"
type="text"
size="small"
>防治计划</el-button
>
<el-button
@click="handleGoRecord(scope.row)"
type="text"
size="small"
>防治记录</el-button
>
</template>
</el-table-column>
</el-table>
<el-pagination
background
class="pagination"
style="margin-top: 16px; margin-right: 16px; float: right"
:current-page="pageData.pageNum"
:page-sizes="pageData.pageSizes"
layout="total, prev, pager, next, sizes, jumper"
:total="pageData.total"
@size-change="getTableData()"
>
</el-pagination>
</div>
<!-- 弹窗 -->
<el-dialog
title="巡查项目配置"
@close="dialogVisible = false"
:visible.sync="dialogVisible"
width="520px"
>
<el-form
:model="ruleForm"
:rules="rules"
ref="ruleForm"
label-width="100px"
>
<el-form-item
label-width="120px"
label="日常巡查项目"
prop="checkings[0].xcId"
>
<el-select
filterable
remote
:remote-method="(query) => handleGetRemoteProjectListData(0, query)"
@focus="handleGetRemoteProjectListData(0, '')"
v-model="ruleForm.checkings[0].xcId"
placeholder="请选择"
>
<el-option
v-for="item in projectList0"
:label="item.name"
:value="item.id"
:key="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label-width="120px"
label="定期巡查项目"
prop="checkings[1].xcId"
>
<el-select
filterable
remote
:remote-method="(query) => handleGetRemoteProjectListData(1, query)"
@focus="handleGetRemoteProjectListData(1, '')"
v-model="ruleForm.checkings[1].xcId"
placeholder="请选择"
>
<el-option
v-for="item in projectList1"
:label="item.name"
:value="item.id"
:key="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label-width="120px"
label="特别巡查项目"
prop="checkings[2].xcId"
>
<el-select
filterable
remote
:remote-method="(query) => handleGetRemoteProjectListData(2, query)"
@focus="handleGetRemoteProjectListData(2, '')"
v-model="ruleForm.checkings[2].xcId"
placeholder="请选择"
>
<el-option
v-for="item in projectList2"
:label="item.name"
:value="item.id"
:key="item.id"
></el-option>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button size="mini" @click="resetForm"> </el-button>
<el-button size="mini" type="primary" @click="submitForm"
>保存</el-button
>
</div>
</el-dialog>
</div>
</template>
<script>
import { getDikeProjectList, postProjectChecking } from "@/api/dike";
import { postDFInspectionProjectList } from "@/api/management";
export default {
data() {
return {
dialogVisible: false,
pageData: {
pageNum: 1,
pageSize: 10,
total: 0,
},
searchInput: "",
dikeTypeList: [
{
label: "全部",
value: "",
},
], //
dikeType: "",
tableData: [],
ruleForm: {
dikeCode: "",
checkings: [
{
type: 0,
label: "日常检查",
xcId: "",
},
{
type: 1,
label: "定期检查",
xcId: "",
},
{
type: 2,
label: "特别检查",
xcId: "",
},
],
},
projectList0: [], // type===0
projectList1: [], // type===1
projectList2: [], // type===2
rules: {
["checkings[0].xcId"]: [
{ required: true, message: "请选择", trigger: "change" },
],
["checkings[1].xcId"]: [
{ required: true, message: "请选择", trigger: "change" },
],
["checkings[2].xcId"]: [
{ required: true, message: "请选择", trigger: "change" },
],
},
};
},
created() {
this.getDicts("embankment_type").then((response) => {
this.dikeTypeList = response.data;
});
},
mounted() {
this.getTableData();
},
methods: {
//
getTableData() {
getDikeProjectList({
pageNum: this.pageData.pageNum,
pageSize: this.pageData.pageSize,
data: {
dikeType: this.dikeType || "",
dikeName: this.searchInput || "",
},
}).then((res) => {
if (res) {
this.tableData = res.records;
this.pageData.total = res.total;
}
});
},
//
resetSearch() {
this.searchInput = "";
this.dikeType = "";
this.getTableData();
},
//
handleGoRecord(row) {
this.$router.push({
path: "governanceRecords",
query: {
dikeCode: row.dikeCode,
dikeName: row.dikeName,
},
});
},
//
handleGoPlan(row) {
this.$router.push({
path: "planManagement",
query: {
dikeCode: row.dikeCode,
dikeName: row.dikeName,
},
});
},
//
initProjectList(type, query) {
postDFInspectionProjectList({
data: {
timeView: {
timeField: "create_time",
},
type,
},
cv: {
name: "name",
type: "like",
value: query,
},
pageSize: 20,
pageNum: 1,
}).then((res) => {
if (res) {
this[`projectList${type}`] = res.records;
}
});
},
//
handleGetRemoteProjectListData(type, query) {
this.initProjectList(type, query);
},
resetForm() {
this.$refs.ruleForm.resetFields();
this.dialogVisible = false;
},
submitForm() {
console.log("表单 >>> ", this.ruleForm);
this.$refs.ruleForm.validate((valid) => {
if (valid) {
postProjectChecking(this.ruleForm).then((res) => {
console.log("res >>>>> ", res);
if (res?.success) {
this.$message.success("配置成功");
this.dialogVisible = false;
}
});
}
});
},
},
};
</script>
<style scoped lang="scss">
.patrol-manage-page {
width: 100%;
min-height: calc(100vh - 56px);
padding-left: 24px;
.top-title {
height: 40px;
background-color: white;
display: flex;
padding-left: 16px;
align-items: center;
font-weight: 600;
}
.table-box {
width: 100%;
min-height: calc(100vh - 56px - 64px);
margin-top: 24px;
padding: 16px;
background-color: white;
.top-search {
margin-bottom: 8px;
.search-input {
width: 202px;
margin-right: 10px;
}
}
.table {
height: calc(680px - 34px);
}
}
}
</style>

48
src/views/dike/runManage/pestAnimalControl/governanceRecords/index.vue

@ -7,9 +7,9 @@ import {
postDFMaintenancePlanList,
getDFMaintenancePlan,
listUser,
getDFPreventionControlPlan,
postDFPreventionControlPlanList,
} from "@/api/management";
import { getDikeAnimalRecordDetails } from "@/api/dike";
export default {
name: "InspectionItems",
data() {
@ -60,10 +60,12 @@ export default {
total: 0, //
},
planForm: {
planId: "",
planName: "",
dikeCode: "",
type: "",
name: "",
planTime: 0,
nationalSupplement: "",
instruction: "",
workMonth: "1月",
reminderCycle: "",
selectDate: 1,
@ -91,7 +93,7 @@ export default {
planTime: [
{ required: true, message: "请选择计划名称", trigger: "change" },
],
nationalSupplement: [
instruction: [
{ required: true, message: "请输入资金", trigger: "change" },
],
workMonth: [
@ -167,8 +169,7 @@ export default {
getDFMaintenancePlan(row.id).then((res) => {
console.log("🚀res🚀", res);
this.planForm = res.data;
this.planForm.reminderCycle =
res.data.nationalSupplement + res.data.workMonth;
this.planForm.reminderCycle = res.data.instruction + res.data.workMonth;
this.dialogVisible = true;
});
},
@ -224,7 +225,7 @@ export default {
dikeCode: "",
name: "",
planTime: "",
nationalSupplement: 0,
instruction: "",
workMonth: 0,
location: "",
reminderCycle: 0,
@ -257,7 +258,6 @@ export default {
this.tableData = res.records;
this.pageData.total = res.total;
}
console.log("🚀表格数据🚀", res);
});
},
//
@ -289,10 +289,16 @@ export default {
},
//
changeDikePlan(planId) {
console.log("planId >>>>> ", planId);
if (planId) {
getDFMaintenancePlan(planId).then((res) => {
console.log("getDikeAnimalRecordDetails >>>>> ", res);
getDFPreventionControlPlan(planId).then((res) => {
console.log("res >>>>> ", res);
if (res) {
this.planForm.dikeCode = res.dikeCode;
this.planForm.dikeName = res.dikeName || res.dikeCode;
this.planForm.planId = planId;
this.planForm.planName = res.name;
this.planForm.instruction = res.instruction;
}
});
}
},
@ -346,11 +352,7 @@ export default {
<el-table-column prop="" align="center" label="防治堤防" />
<el-table-column prop="location" align="center" label="堤防级别" />
<el-table-column prop="content" align="center" label="堤防类型" />
<el-table-column
prop="nationalSupplement"
align="center"
label="防治类型"
/>
<el-table-column prop="instruction" align="center" label="防治类型" />
<el-table-column
prop="createTime"
align="center"
@ -470,11 +472,7 @@ export default {
/>
</el-form-item>
<el-form-item label-width="120px" label="防治类型" prop="planTime">
<el-select
v-model="planForm.planTime"
placeholder="请输入"
disabled
>
<el-select v-model="planForm.type" placeholder="请输入" disabled>
<el-option
v-for="item in controlType"
:label="item.dictLabel"
@ -485,13 +483,9 @@ export default {
</el-select>
</el-form-item>
</div>
<el-form-item
label-width="120px"
label="防治说明"
prop="nationalSupplement"
>
<el-form-item label-width="120px" label="防治说明" prop="instruction">
<el-input
v-model="planForm.nationalSupplement"
v-model="planForm.instruction"
type="textarea"
placeholder=" 请输入"
disabled

70
src/views/dike/runManage/pestAnimalControl/planManagement/index.vue

@ -38,6 +38,7 @@ export default {
},
ruleForm: {
dikeCode: "",
dikeName: "",
name: "",
type: "",
instruction: "",
@ -180,9 +181,11 @@ export default {
this.prohibitEditing = true;
}
getDFPreventionControlPlan(row.id).then((res) => {
this.ruleForm = res.data;
this.ruleForm.reminderCycle = res.data.instruction + res.data.month;
this.dialogVisible = true;
setTimeout(() => {
this.ruleForm = res.data;
this.ruleForm.reminderCycle = res.data.instruction + res.data.month;
}, 30);
});
},
changeOtherConfigSelectUser(idsArr) {
@ -205,8 +208,6 @@ export default {
this.ruleForm.cycleType = parseFloat(this.ruleForm.cycleType);
this.ruleForm.frequency = parseFloat(this.ruleForm.frequency);
this.ruleForm.month = parseFloat(this.ruleForm.month);
this.ruleForm.type = parseFloat(this.ruleForm.type);
this.dialogVisible = false;
if (this.ruleForm.id) {
putDFPreventionControlPlan(this.ruleForm).then(() => {
this.getTableData();
@ -239,18 +240,25 @@ export default {
this.dialogVisible = false;
},
// dialog
closeDialog(ruleForm = "ruleForm") {
handleClose(ruleForm = "ruleForm") {
console.log("关闭");
this.$refs[ruleForm].resetFields();
this.ruleForm = {
dikeCode: "",
dikeName: "",
name: "",
type: 0,
type: "",
instruction: "",
month: "",
details: [],
cycleType: "",
isReminder: true,
selectUser: [],
otherConfig: {
selectUser: [],
week: "",
day: "",
},
week: 1,
date: 1,
reminderTime: "",
@ -328,8 +336,11 @@ export default {
});
},
handleChangeDike(value) {
console.log("value >>>>> ", value);
this.ruleForm.name = this.ruleForm.dikeCode;
// let res = this.embankmentList.find(v=> v.dikeCode === value)
let res = this.embankmentList.find((v) => v.dikeCode === value);
console.log("res >>>>> ", res);
this.ruleForm.dikeName = res?.dikeName;
// this.dikeDetailsDialog.id = res?.id || ''
},
},
@ -363,22 +374,6 @@ export default {
v-model="paramsData.name"
placeholder="请输入"
/>
<span>防治堤防</span>
<el-input
class="search-input"
v-model="paramsData.dikeName"
placeholder="请输入"
/>
<span>堤防级别</span>
<el-select v-model="paramsData.dikeGrad" placeholder="请选择">
<el-option label="全部" value="0" />
<el-option
v-for="item in dikeLevel"
:label="item.dictLabel"
:value="item.dictValue"
:key="item.id"
/>
</el-select>
<span style="margin-left: 10px">防治类型</span>
<el-select v-model="paramsData.type" placeholder="请选择">
<el-option label="全部" value="3" />
@ -399,37 +394,21 @@ export default {
style="margin-right: 16px; margin-bottom: 8px; float: right"
type="success"
@click="openAddDialog()"
>添加</el-button
>新增</el-button
>
<el-table class="table" height="640" :data="tableData" border>
<el-table-column type="index" align="center" label="序号" width="100" />
<el-table-column prop="name" align="center" label="防治计划名称" />
<el-table-column prop="dikeCode" align="center" label="堤防名称" />
<el-table-column prop="dikeGrad" align="center" label="堤防级别">
<template #default="{ row }">
{{ resolveDikeGrad(row.dikeGrad) }}
</template>
</el-table-column>
<el-table-column prop="dikeType" align="center" label="堤防类型">
<template #default="{ row }">{{
resolveDikeType(row.dikeType)
}}</template>
</el-table-column>
<el-table-column prop="type" align="center" label="防治类型">
<template #default="{ row }">{{ resolveType(row.type) }}</template>
</el-table-column>
<el-table-column prop="effDate" align="center" label="计划时间" />
<el-table-column
prop="createTime"
align="center"
sortable
label="创建时间"
/>
<el-table-column
prop="updateTime"
align="center"
sortable
label="更新时间"
/>
<el-table-column prop="address" align="center" label="操作">
<template slot-scope="scope">
<el-button
@ -444,10 +423,7 @@ export default {
size="small"
>编辑</el-button
>
<el-button style="margin-right: 9px" type="text" size="small"
>记录</el-button
>
<el-popconfirm
<!-- <el-popconfirm
confirm-button-text="确定"
cancel-button-text="取消"
icon="el-icon-info"
@ -462,7 +438,7 @@ export default {
slot="reference"
>删除</el-button
>
</el-popconfirm>
</el-popconfirm> -->
</template>
</el-table-column>
</el-table>
@ -481,7 +457,7 @@ export default {
<!-- 弹窗 -->
<el-dialog
title="新增/编辑防治计划"
@close=""
@close="handleClose"
:visible.sync="dialogVisible"
:close-on-click-modal="false"
width="720px"

Loading…
Cancel
Save