Browse Source

feat: 巡查记录接口对完

sy-water-data-board-ui
hejunjie 1 month ago
parent
commit
d5bbb2aa4f
  1. 48
      src/api/dike/patrolMaintenance.js
  2. 15
      src/views/dike/runManage/patrolMaintenance/InspectionRecords/index.vue
  3. 49
      src/views/dike/runManage/patrolMaintenance/acceptanceRecords/index.vue
  4. 183
      src/views/dike/runManage/patrolMaintenance/componentsDetails/defectDetails.vue
  5. 403
      src/views/dike/runManage/patrolMaintenance/componentsDetails/inspectionRecordDetails.vue
  6. 24
      src/views/dike/runManage/patrolMaintenance/defectList/index.vue
  7. 53
      src/views/dike/runManage/patrolMaintenance/maintenanceRecords/index.vue
  8. 2
      src/views/dike/runManage/patrolMaintenance/patrolItemsManage/index.vue
  9. 4
      vue.config.js

48
src/api/dike/patrolMaintenance.js

@ -11,6 +11,14 @@ export function postV2RecordList (data) {
data
})
}
// 堤防巡视检查记录新增或修改v2
export function postV2Record (data,commit) {
return request({
url: `/run/df/v2/record/${commit}`,
method: 'post',
data
})
}
// 堤防巡视检查记录详情v2
export function gettV2Record (id) {
@ -38,6 +46,23 @@ export function postV2YhList (data) {
data
})
}
// 堤防养护详情v2
export function getV2Yh (id) {
return request({
url: `/run/df/v2/yh/${id}`,
method: 'get'
})
}
// 堤防养护新增或修改v2
export function postV2Yh (data, commit) {
return request({
url: `/run/df/v2/yh/${commit}`,
method: 'post',
data
})
}
/*************************************验收记录管理**************************************/
// 审批列表
export function postV2ApprovalList (data) {
@ -47,3 +72,26 @@ export function postV2ApprovalList (data) {
data
})
}
// 审批通过
export function postV2ApprovalPassed (data, id) {
return request({
url: `/run/df/v2/approval/passed/${id}`,
method: 'post',
data
})
}
// 审批驳回
export function postV2ApprovalRejected (data, id) {
return request({
url: `/run/df/v2/approval/rejected/${id}`,
method: 'post',
data
})
}
// 审批意见
export function getV2ApprovalComment (formId) {
return request({
url: `/run/df/v2/approval/comment/${formId}`,
method: 'get'
})
}

15
src/views/dike/runManage/patrolMaintenance/InspectionRecords/index.vue

@ -155,7 +155,7 @@
}}</span>
</template>
</el-table-column>
<el-table-column prop="dutyHolderName" align="center" label="责任人" />
<el-table-column prop="createName" align="center" label="责任人" />
<el-table-column
prop="startDate"
align="center"
@ -187,6 +187,7 @@
<el-button
type="text"
size="small"
:disabled="!scope.row.status === '1'"
@click="handleEditDetails(scope.row, true)"
>编辑</el-button
>
@ -221,9 +222,7 @@ export default {
mixins: [calcTableHeight],
data() {
return {
tableData: [{
id: 1
}],
tableData: [],
maintenanceStatus: [],
maintenanceCategory: [],
maintenanceType: [],
@ -269,7 +268,7 @@ export default {
handleCheckDetails(row) {
this.$router.push({
path: "inspectionRecordDetails",
query: { id: row.id, checkingId: row.checkingId },
query: { id: row.id, checkingId: row.checkingId, mode: "check" },
});
},
handleEditDetails(row) {
@ -287,7 +286,6 @@ export default {
},
//
handleChangeQuery() {
this.reqCountCalc();
this.pageData.pageNum = 1;
this.getTableData();
},
@ -299,7 +297,6 @@ export default {
this.paramsData.dutyHolder = "";
this.paramsData.category = "";
this.paramsData.status = "";
this.reqCountCalc();
this.pageData.pageNum = 1;
this.getTableData();
},
@ -328,9 +325,7 @@ export default {
pageNum: this.pageData.pageNum,
}).then((res) => {
if (res) {
this.tableData = [{
id: 1
}];
this.tableData = res.records;
this.pageData.total = res.total;
}
});

49
src/views/dike/runManage/patrolMaintenance/acceptanceRecords/index.vue

@ -109,6 +109,27 @@
</el-option>
</el-select>
</div>
<div class="search-item flex items-center">
<span class="search-label">问题等级</span>
<el-select
clearable
size="small"
class="w-202 ml-10"
v-model="paramsData.problemLevel"
:popper-append-to-body="false"
filterable
placeholder="请选择"
>
<el-option label="全部" value=""> </el-option>
<el-option
v-for="item in maintenanceLevel"
:key="item.dictValue"
:label="item.dictLabel"
:value="item.dictValue"
>
</el-option>
</el-select>
</div>
<div class="flex-1 flex justify-end search-item">
<el-button
size="small"
@ -155,6 +176,14 @@
}}</span>
</template>
</el-table-column>
<el-table-column prop="level" align="center" label="问题等级">
<template slot-scope="scope">
<span>{{
getDictLabelName(scope.row.level, "maintenanceLevel")
}}</span>
</template>
</el-table-column>
<el-table-column prop="dutyHolderName" align="center" label="责任人" />
<el-table-column
prop="startDate"
@ -181,9 +210,15 @@
<el-button
type="text"
size="small"
@click="handleCheckDetails(scope.row, false)"
@click="handleCheckDetails(scope.row, 'check')"
>查看</el-button
>
<el-button
type="text"
size="small"
@click=" (scope.row, 'edit')"
>编辑</el-button
>
</template>
</el-table-column>
</el-table>
@ -218,12 +253,14 @@ export default {
maintenanceStatus: [],
maintenanceCategory: [],
maintenanceType: [],
maintenanceLevel: [],
paramsData: {
name: "",
type: "",
time: [],
dutyHolder: '',
category: '',
problemLevel: '',
status: ''
},
pageData: {
@ -244,6 +281,9 @@ export default {
this.getDicts("patrol_maintenance_type").then((response) => {
this.maintenanceType = response.data;
});
this.getDicts("patrol_maintenance_level").then((response) => {
this.maintenanceLevel = response.data;
});
},
mounted() {
this.getTableData()
@ -258,9 +298,10 @@ export default {
this.getTableData();
},
handleCheckDetails() {
handleCheckDetails(row, mode) {
this.$router.push({
path: "defectDetails",
query: { id: row.id, formId: row.formId , mode: mode, module: 'acceptance' },
});
},
getDictLabelName(type, dictListName) {
@ -272,7 +313,6 @@ export default {
},
//
handleChangeQuery() {
this.reqCountCalc();
this.pageData.pageNum = 1;
this.getTableData();
},
@ -284,7 +324,7 @@ export default {
this.paramsData.dutyHolder = "";
this.paramsData.category = "";
this.paramsData.status = "";
this.reqCountCalc();
this.paramsData.problemLevel = "";
this.pageData.pageNum = 1;
this.getTableData();
},
@ -295,6 +335,7 @@ export default {
dutyHolder: this.paramsData.dutyHolder,
category: this.paramsData.category,
status: this.paramsData.status,
problemLevel: this.paramsData.problemLevel,
startTime: this.paramsData.time && this.paramsData.time.length > 1 ? this.paramsData.time[0] : '',
endTime: this.paramsData.time && this.paramsData.time.length > 1 ? this.paramsData.time[1] : '',
}

183
src/views/dike/runManage/patrolMaintenance/componentsDetails/defectDetails.vue

@ -8,46 +8,57 @@
<el-row>
<el-col :span="8">
<div class="tc-text2">堤防名称</div>
<div class="tc-text1">123</div>
<div class="tc-text1">{{ form.dikeName }}</div>
</el-col>
<el-col :span="8">
<div class="tc-text2">堤防巡查责任人</div>
<div class="tc-text1">123</div>
<div class="tc-text1">{{ form.createName }}</div>
</el-col>
<el-col :span="8">
<div class="tc-text2">巡查类别</div>
<div class="tc-text1">123</div>
<div class="tc-text1">
{{getDictLabelName(form.category, "maintenanceCategory") }}
</div>
</el-col>
<el-col :span="8">
<div class="tc-text2">堤防巡查开始/结束时间</div>
<div class="tc-text1">123</div>
<div class="tc-text1">{{ form.time[0] }}/{{ form.time[1] }}</div>
</el-col>
<el-col :span="8">
<div class="tc-text2">巡查部位</div>
<div class="tc-text1">123</div>
<div class="tc-text1">{{ form.partsName }}</div>
</el-col>
<el-col :span="8">
<div class="tc-text2">问题位置</div>
<div class="tc-text1">123</div>
<div class="tc-text1">{{ form.position }}</div>
</el-col>
<el-col :span="8">
<div class="tc-text2">问题等级</div>
<div class="tc-text1">123</div>
<div class="tc-text1">
{{getDictLabelName(form.problemLevel, "maintenanceLevel") }}
</div>
</el-col>
<el-col :span="8">
<div class="tc-text2">具体描述</div>
<div class="tc-text1">123</div>
<div class="tc-text1">{{ form.content }}</div>
</el-col>
<el-col :span="24">
<div class="tc-text2">缺陷图片</div>
<div class="tc-text1">123</div>
<div class="tc-text1">
<el-image
v-for="item in form.problemImages"
style="width: 40px; height: 40px;"
:src="item"
:preview-src-list="form.problemImages">
</el-image>
</div>
</el-col>
</el-row>
</div>
<div class="form-row-title">养护记录</div>
<el-form ref="form" :model="form" :rules="rules" label-width="120px" label-position="top">
<el-row gutter="48">
<el-col span="8">
<el-row :gutter="48">
<el-col :span="8">
<el-form-item label="维养责任人:" prop="name">
<el-input
placeholder="请输入内容"
@ -55,7 +66,7 @@
</el-input>
</el-form-item>
</el-col>
<el-col span="8">
<el-col :span="8">
<el-form-item label="维养开始/结束时间:" prop="projectName">
<el-date-picker
size="small"
@ -73,7 +84,7 @@
</el-col>
</el-row>
<el-row>
<el-col span="16">
<el-col :span="16">
<el-form-item label="维养详情:" prop="describe">
<el-input
type="textarea"
@ -103,8 +114,8 @@
<div class="form-row-title">验收意见</div>
<el-form ref="form" :model="form" :rules="rules" label-width="120px" label-position="right">
<el-row gutter="48">
<el-col span="8">
<el-row :gutter="48">
<el-col :span="8">
<el-form-item label="复核人:" prop="name">
<el-input
placeholder="请输入内容"
@ -112,7 +123,7 @@
</el-input>
</el-form-item>
</el-col>
<el-col span="8">
<el-col :span="8">
<el-form-item label="复核时间:" prop="projectName">
<el-date-picker
size="small"
@ -130,7 +141,7 @@
</el-col>
</el-row>
<el-row>
<el-col span="16">
<el-col :span="16">
<el-form-item label="复核意见:" prop="describe">
<el-input
type="textarea"
@ -145,6 +156,21 @@
</el-row>
</el-form>
</div>
<div class="bottom-btns" v-if="$route.query.mode !== 'check'">
<el-button type="danger" v-if="$route.query.module === 'acceptance'" @click="handleAccept(true)"
>通过</el-button
>
<el-button type="danger" v-if="$route.query.module === 'acceptance'" @click="handleAccept(false)"
>驳回</el-button
>
<el-button type="primary" v-if="$route.query.module === 'maintenance'" @click="handleSave(true)"
>保存并提交</el-button
>
<el-button type="primary" v-if="$route.query.module === 'maintenance'" @click="handleSave(false)"
>保存</el-button
>
<el-button @click="$router.go(-1)" v-if="$route.query.module === 'maintenance'">返回</el-button>
</div>
</div>
</template>
<script>
@ -152,6 +178,8 @@ import TopBackTitle from "@/components/TopBackTitle/index.vue";
import {calcTableHeight} from "@/mixins/calcTableHeight";
import SyMixMap from "@/views/components/SyMixMap.vue";
import {getRecordDetails, getRecordTraceList} from "@/api/dike";
import {getV2Yh, postV2Yh, getV2ApprovalComment, gettV2Record, postV2ApprovalPassed, postV2ApprovalRejected} from "@/api/dike/patrolMaintenance";
import {getDictMapData} from "@/api/system/dict/data";
export default {
components: {
@ -163,17 +191,29 @@ export default {
return {
entries: {},
traceList: [],
maintenanceCategory: [],
maintenanceLevel: [],
tableData: [{
nspectionLocation: '堤坡与戗台',
inspectionContent: '是否坚实平整',
}],
form: {
name: '张三',
projectName: '项目名称内容',
dikeName: '堤防名称内容',
inspectionCategory: '工程巡查',
createName: '',
name: '',
dikeName: '',
category: '',
parts: '',
partsName: '',
content: '',
position: '',
problemImages: '',
problemLevel: '',
createUid: '',
dikeCode: '',
dikeType: '',
type: '',
time: [],
describe: '',
scope: '',
},
rules: {
name: [{required: true}],
@ -186,35 +226,91 @@ export default {
};
},
created() {
this.getDicts("patrol_maintenance_category").then((response) => {
this.maintenanceCategory = response.data;
});
this.getDicts("patrol_maintenance_level").then((response) => {
this.maintenanceLevel = response.data;
});
},
mounted() {
this.initData()
},
methods: {
async initData() {
const res = await getRecordDetails(17);
this.entries = res.data?.entries ? JSON.parse(res.data.entries) : {};
getRecordTraceList({
data: {
recordId: 17,
},
params: {
orderBy: "create_time",
sort: "desc", //
},
pageNum: 1,
pageSize: 100,
}).then((res) => {
this.traceList =
res.records
?.map((v) => {
return [v.longitude, v.latitude];
const checking = await gettV2Record(this.$route.query.recordId)
console.log('checking',checking)
this.form.createName = checking.data.createName
this.form.name = checking.data.name
this.form.dikeName = checking.data.dikeName
this.form.category = checking.data.category
this.form.createUid = checking.data.createUid
this.form.dikeCode = checking.data.dikeCode
this.form.dikeType = checking.data.dikeType
this.form.type = checking.data.type
this.form.time[0] = checking.data.startDate
this.form.time[1] = checking.data.endDate
console.log(checking)
checking.data.problems.forEach(item => {
if(item.id === this.$route.query.defectId) {
this.form.content = item.content
this.form.position = item.position
this.form.parts = item.parts
getDictMapData("df_xs_c_classfy").then((res) => {
let parts = ''
item.parts.forEach((part) => {
if (parts) {
parts = parts + ':' + part
} else {
parts = part
}
})
?.reverse() || [];
});
this.form.partsName = res.data[parts]
})
this.form.problemLevel = item.problemLevel
this.form.problemImages = item.problemImages
}
})
// if (this.$route.query.fromId) {
// const ApprovalComment = await getV2ApprovalComment(this.$route.query.fromId)
// } else {
// const ApprovalComment = await getV2ApprovalComment(0)
// }
},
console.log('this.traceList', this.traceList)
console.log('this.entries', this.entries)
getDictLabelName(type, dictListName) {
if (!this[dictListName]) return "";
return (
this[dictListName].find((item) => item.dictValue === type)?.dictLabel ||
""
);
},
handleAccept() {
},
handleSave(commit) {
const data = {
category: this.form.category,
checkingId: this.form.category,
checkingName: this.form.category,
createName: this.form.category,
createUid: this.form.category,
dikeCode: this.form.dikeCode,
dikeName: this.form.dikeName,
dikeType: this.form.dikeType,
startDate: this.form.dikeType,
endDate: this.form.dikeType,
doc: this.form.dikeType,
problems: this.form.dikeType,
scope: this.form.dikeType,
status: this.form.dikeType,
type: this.form.dikeType,
}
console.log(data)
// postV2Yh(data, commit).then(res => {
// this.$message.success('')
// this.$router.go(-1)
// })
}
},
};
@ -225,6 +321,7 @@ export default {
height: calc(100% - 50px - 24px);
margin-top: 24px;
padding: 16px;
padding-bottom: 80px;
background-color: white;
overflow: auto;
}

403
src/views/dike/runManage/patrolMaintenance/componentsDetails/inspectionRecordDetails.vue

@ -1,45 +1,46 @@
<template>
<div class="slider-right">
<!-- <div class="top-title">{{ $router.currentRoute.meta.title }}</div> -->
<TopBackTitle></TopBackTitle>
<div class="table-box">
<div class="form-row-title">巡查路线</div>
<div class="patrol-box">
<el-form ref="form" :model="form" :rules="rules" label-width="120px" label-position="right">
<el-form-item label="巡查人:" prop="name">
{{ form.name }}
<el-form-item label="巡查人:" prop="createName">
{{ form.createName }}
</el-form-item>
<el-form-item label="巡查项目名称:" prop="projectName">
{{ form.projectName }}
<el-form-item label="巡查项目名称:" prop="name">
{{ form.name }}
</el-form-item>
<el-form-item label="巡查堤防名称:" prop="dikeName">
{{ form.dikeName }}
</el-form-item>
<el-form-item label="巡查类别:" prop="inspectionCategory">
{{ form.inspectionCategory }}
<el-form-item label="巡查类别:" prop="category">
{{ getDictLabelName(form.category, "maintenanceCategory") }}
</el-form-item>
<el-form-item label="巡查时间:" prop="time">
<el-date-picker
size="small"
class="ml-10"
:disabled="$route.query.mode === 'check'"
v-model="form.time"
type="daterange"
value-format="yyyy-MM-dd"
value-format="yyyy-MM-dd HH:mm:ss"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="巡查范围:" prop="describe">
<el-form-item label="巡查范围:" prop="scope">
<el-input
type="textarea"
:disabled="$route.query.mode === 'check'"
:rows="4"
placeholder="请输入内容"
maxlength="200"
show-word-limit
resize="none"
v-model="form.describe">
v-model="form.scope">
</el-input>
</el-form-item>
</el-form>
@ -60,47 +61,63 @@
style="margin-bottom: 16px;"
border
>
<el-table-column prop="parts" align="center" label="巡查部位" />
<el-table-column prop="name" align="center" label="巡查部位" />
<el-table-column prop="content" align="center" label="检查内容" />
</el-table>
<div class="form-row-title">缺陷问题列表</div>
<div class="flex-1 flex justify-end search-item">
<div class="flex-1 flex justify-end search-item" style="margin-bottom: 16px;">
<el-button
size="small"
:disabled="$route.query.mode === 'check'"
class="flex-shrink-0 myml-12"
type="success"
@click="addProblems"
>新增</el-button
>
<el-button
type="danger"
:disabled="$route.query.mode === 'check'"
class="flex-shrink-0"
size="small"
@click="delProblems"
size="small"
>删除</el-button
>
</div>
<el-table
:height="tableHeight"
:data="problemsData"
@selection-change="handleSelectionChange"
border
>
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column prop="parts" align="center" label="巡查部位" />
<!-- <el-table-column prop="content" label="检查内容">-->
<!-- <template slot-scope="scope">-->
<!-- <el-input-->
<!-- :disabled="!canEdit"-->
<!-- v-model="scope.row.content"-->
<!-- placeholder="请输入"-->
<!-- ></el-input>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column prop="parts" label="巡查部位">
<template slot-scope="scope">
<el-select
clearable
size="small"
class="w-202 ml-10"
:disabled="$route.query.mode === 'check'"
v-model="scope.row.parts"
filterable
placeholder="请选择"
>
<el-option
v-for="item in tableData"
:key="item.id"
:label="item.name"
:value="item.parts"
>
</el-option>
</el-select>
</template>
</el-table-column>
<el-table-column prop="problemLevel" label="问题等级">
<template slot-scope="scope">
<el-select
clearable
size="small"
class="w-202 ml-10"
:disabled="$route.query.mode === 'check'"
v-model="scope.row.problemLevel"
filterable
placeholder="请选择"
@ -118,6 +135,7 @@
<el-table-column prop="position" label="具体位置">
<template slot-scope="scope">
<el-input
:disabled="$route.query.mode === 'check'"
v-model="scope.row.position"
placeholder="请输入"
></el-input>
@ -126,13 +144,38 @@
<el-table-column prop="content" label="具体描述">
<template slot-scope="scope">
<el-input
:disabled="$route.query.mode === 'check'"
v-model="scope.row.content"
placeholder="请输入"
></el-input>
</template>
</el-table-column>
<el-table-column prop="inspectionContent" align="center" label="缺陷照片" />
<el-table-column prop="inspectionContent" align="center" label="维养状态" />
<el-table-column align="center" label="缺陷照片">
<template slot-scope="scope">
<div class="imgBox">
<div
class="imgList"
v-for="item in scope.row.problemImages"
>
<el-image
style="width: 40px; height: 40px;"
:src="item"
:preview-src-list="scope.row.problemImages">
</el-image>
<div class="delImg" v-if="$route.query.mode !== 'check'" @click="delImage(item, scope.row.problemImages)">
×
</div>
</div>
</div>
</template>
</el-table-column>
<el-table-column prop="status" align="center" label="维养状态">
<template slot-scope="scope">
<span>{{
getDictLabelName(scope.row.status, "maintenanceStatus")
}}</span>
</template>
</el-table-column>
<el-table-column
prop="opera"
align="center"
@ -141,44 +184,63 @@
width="168"
>
<template slot-scope="scope">
<el-button
style="margin-right: 16px"
type="text"
size="small"
@click="handleCheckDetails(scope.row, false)"
>上传图片</el-button
>
<el-popconfirm
confirm-button-text="确定"
cancel-button-text="取消"
icon="el-icon-info"
icon-color="red"
title="确定删除吗?"
@confirm="deleteTableItem(scope.row)"
>
<el-button
style="color: red"
type="text"
size="small"
slot="reference"
v-hasPermi="['df:run:checking:item:delete']"
>删除</el-button
<div style="display:flex;">
<el-upload
class=""
action="#"
:http-request="(e) => {handleUploadProject(e, scope.row)}"
:before-upload="(e) => {beforeUploadProject(e, scope.row)}"
:show-file-list="false"
accept=".png,.jpg,.jpeg"
>
</el-popconfirm>
<el-button :disabled="$route.query.mode === 'check'" size="small" style="margin-right: 10px;" type="text">上传图片</el-button>
</el-upload>
<el-popconfirm
confirm-button-text="确定"
cancel-button-text="取消"
icon="el-icon-info"
icon-color="red"
title="确定删除吗?"
@confirm="deleteTableItem(scope.row)"
>
<el-button
style="color: red"
type="text"
size="small"
:disabled="$route.query.mode === 'check'"
slot="reference"
v-hasPermi="['df:run:checking:item:delete']"
>删除</el-button
>
</el-popconfirm>
</div>
</template>
</el-table-column>
</el-table>
</div>
<div class="bottom-btns" v-if="$route.query.mode !== 'check'">
<el-button type="primary" @click="handleSave(true)"
>保存并提交</el-button
>
<el-button type="primary" @click="handleSave(false)"
>保存</el-button
>
<el-button @click="$router.go(-1)">返回</el-button>
</div>
</div>
</template>
<script>
import { intersection } from "lodash";
import TopBackTitle from "@/components/TopBackTitle/index.vue";
import {calcTableHeight} from "@/mixins/calcTableHeight";
import SyMixMap from "@/views/components/SyMixMap.vue";
import {getCheckingDictTree, getRecordDetails, getRecordTraceList, getV2PatrolChecking} from "@/api/dike";
import {gettV2Record} from "@/api/dike/patrolMaintenance";
import {
getRecordDetails,
getRecordTraceList,
getV2PatrolChecking
} from "@/api/dike";
import {gettV2Record, postV2Record} from "@/api/dike/patrolMaintenance";
import { uploadFileData } from "@/api/system/upload";
import {getDictMapData} from "@/api/system/dict/data";
export default {
components: {
@ -191,30 +253,30 @@ export default {
entries: {},
maintenanceStatus: [],
maintenanceLevel: [],
maintenanceCategory: [],
traceList: [],
problemsData: [{
nspectionLocation: '堤坡与戗台',
inspectionContent: '是否坚实平整',
}],
tableData: [{
nspectionLocation: '堤坡与戗台',
inspectionContent: '是否坚实平整',
}],
problemsCheckData: [],
problemsData: [],
tableData: [],
form: {
name: '张三',
projectName: '项目名称内容',
dikeName: '堤防名称内容',
inspectionCategory: '工程巡查',
createName: '',
name: '',
dikeName: '',
category: '',
createUid: '',
dikeCode: '',
dikeType: '',
type: '',
time: [],
describe: '',
scope: '',
},
rules: {
createName: [{required: true}],
name: [{required: true}],
projectName: [{required: true}],
dikeName: [{required: true}],
inspectionCategory: [{required: true}],
category: [{required: true}],
time: [{required: true}],
describe: [{required: true}],
scope: [{required: true}],
}
};
},
@ -222,6 +284,9 @@ export default {
this.getDicts("patrol_maintenance_status").then((response) => {
this.maintenanceStatus = response.data;
});
this.getDicts("patrol_maintenance_category").then((response) => {
this.maintenanceCategory = response.data;
});
this.getDicts("patrol_maintenance_level").then((response) => {
this.maintenanceLevel = response.data;
});
@ -235,16 +300,38 @@ export default {
this.getMapData()
},
async getDetail() {
console.log(this.$route.query.id)
const details = await gettV2Record(this.$route.query.id);
const checking = await getV2PatrolChecking(22);
console.log(checking)
this.tableData = checking.data.items;
const dictData = await getCheckingDictTree("df_xs_c_classfy");
let _xcTreeData = this.transformArr(dictData?.data);
this.matchXcTreeData(_xcTreeData, this.tableData);
console.log(_xcTreeData)
console.log(this.tableData)
if (this.$route.query.id) {
const details = await gettV2Record(this.$route.query.id);
this.form.time[0] = details.data.startDate
this.form.time[1] = details.data.endDate
this.form.scope = details.data.scope
this.problemsData = details.data.problems
this.form.time = [...this.form.time]
}
const checking = await getV2PatrolChecking(this.$route.query.checkingId);
this.form.createName = checking.data.createName
this.form.name = checking.data.name
this.form.dikeName = checking.data.dikeName
this.form.category = checking.data.category
this.form.createUid = checking.data.createUid
this.form.dikeCode = checking.data.dikeCode
this.form.dikeType = checking.data.dikeType
this.form.type = checking.data.type
const items = checking.data.items
getDictMapData("df_xs_c_classfy").then((res) => {
items.forEach(item => {
let parts = ''
item.parts.forEach((part) => {
if (parts) {
parts = parts + ':' + part
} else {
parts = part
}
})
item.name = res.data[parts]
})
this.tableData = items
});
},
async getMapData() {
//
@ -269,61 +356,104 @@ export default {
?.reverse() || [];
});
},
//
transformArr(treeList) {
//
function deepCalc(item, part = []) {
item.parts = [...part, item.key];
if (item.children?.length) {
item.children.forEach((v) => {
if (!v.children || v.children.length === 0) {
v.parts = [...item.parts, v.key];
v.content = v.remark || "";
delete v.children;
} else {
deepCalc(v, item.parts);
}
});
} else {
delete item.children;
}
//
handleUploadProject(e, row) {
const { file } = e;
let fData = new FormData();
fData.append("file", file);
uploadFileData(fData)
.then((res) => {
row.problemImages.push(res.url);
})
.catch((err) => {
console.log("err >>>>> ", err);
});
},
//
beforeUploadProject(e, row) {
const { name, size } = e;
if (!/\.(jpg|png|jpeg)$/.test(name)) {
this.$message.warning("文件格式不正确");
return false;
}
treeList.forEach((item) => {
deepCalc(item);
});
return treeList;
if (row.problemImages?.length >= 3) {
this.$message({
message: "最多上传3份",
type: "warning",
});
return false;
}
return true;
},
//
matchXcTreeData(treeData, dataList) {
treeData.forEach((v) => {
if (!v.children?.length) {
for (const item of dataList) {
v.id = item.id;
if (intersection(v.parts, item.parts).length === v.parts.length) {
//
v.content = item.content || "";
break;
}
}
} else {
this.matchXcTreeData(v.children, dataList);
}
});
delImage(img, problemImages) {
const index = problemImages.indexOf(img)
problemImages.splice(index, 1)
problemImages
},
addProblems() {
this.problemsData.push({
problemLevel: '1',
partsId: this.tableData[0].parts,
poistion: '',
content: '',
problemImages: [],
status: '1',
status: '4',
})
},
getDictLabelName(type, dictListName) {
if (!this[dictListName]) return "";
return (
this[dictListName].find((item) => item.dictValue === type)?.dictLabel ||
""
);
},
handleSelectionChange(e) {
this.problemsCheckData = e || [];
},
delProblems() {
this.$confirm("是否删除选中的问题?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
this.problemsCheckData.forEach((Check) => {
const index = this.problemsData.indexOf(Check)
this.problemsData.splice(index, 1)
})
})
.catch(() => {
console.log("取消删除");
});
},
deleteTableItem() {
deleteTableItem(row) {
const index = this.problemsData.indexOf(row)
this.problemsData.splice(index, 1)
},
handleSave(commit) {
const data = {
category: this.form.category,
checkingId: this.$route.query.checkingId,
checkingName: this.form.name,
createName: this.form.createName,
createUid: this.form.createUid,
dikeName: this.form.dikeName,
dikeCode: this.form.dikeCode,
dikeType: this.form.dikeType,
scope: this.form.scope,
problems: this.problemsData,
startDate: this.form.time && this.form.time.length > 1 ? this.form.time[0] : '',
endDate: this.form.time && this.form.time.length > 1 ? this.form.time[1] : '',
type: this.form.type,
}
if (this.$route.query.id) {
data.id = this.$route.query.id
}
console.log(data);
postV2Record(data,commit).then(res => {
this.$message.success('保存成功')
this.$router.go(-1)
})
}
},
};
@ -334,6 +464,7 @@ export default {
height: calc(100% - 50px - 24px);
margin-top: 24px;
padding: 16px;
padding-bottom: 80px;
background-color: white;
overflow: auto;
}
@ -357,4 +488,36 @@ export default {
height: 100%;
}
}
.imgBox {
display: flex;
padding: 10px;
.imgList {
position: relative;
margin-right: 10px;
&:hover {
.delImg {
display: flex;
}
}
.el-image {
border-radius: 4px;
}
.delImg {
display: none;
position: absolute;
top: 0;
right: 0;
justify-content: center;
align-items: center;
width: 14px;
height: 14px;
color: #ffffff;
cursor: pointer;
background: rgba(0, 0, 0, 0.6);
}
}
}
.el-upload-list {
display: none;
}
</style>

24
src/views/dike/runManage/patrolMaintenance/defectList/index.vue

@ -115,7 +115,7 @@
clearable
size="small"
class="w-202 ml-10"
v-model="paramsData.level"
v-model="paramsData.problemLevel"
:popper-append-to-body="false"
filterable
placeholder="请选择"
@ -209,13 +209,13 @@
<el-button
type="text"
size="small"
@click="handleCheckDetails(scope.row, false)"
@click="handleCheckDetails(scope.row, 'receive')"
>领单</el-button
>
<el-button
type="text"
size="small"
@click="handleCheckDetails(scope.row, true)"
@click="handleCheckDetails(scope.row, 'check')"
>查看</el-button
>
</template>
@ -248,9 +248,7 @@ export default {
mixins: [calcTableHeight],
data() {
return {
tableData: [{
id: 1
}],
tableData: [],
maintenanceStatus: [],
maintenanceCategory: [],
maintenanceType: [],
@ -261,7 +259,8 @@ export default {
time: [],
dutyHolder: '',
category: '',
status: ''
status: '',
problemLevel: ''
},
pageData: {
pageNum: 1, //
@ -297,9 +296,10 @@ export default {
this.pageData.pageSize = pageSize;
this.getTableData();
},
handleCheckDetails() {
handleCheckDetails(row, mode) {
this.$router.push({
path: "defectDetails",
query: { recordId: row.recordId, defectId: row.id , mode: mode, module: 'maintenance' },
});
},
getDictLabelName(type, dictListName) {
@ -311,7 +311,6 @@ export default {
},
//
handleChangeQuery() {
this.reqCountCalc();
this.pageData.pageNum = 1;
this.getTableData();
},
@ -323,7 +322,7 @@ export default {
this.paramsData.dutyHolder = "";
this.paramsData.category = "";
this.paramsData.status = "";
this.reqCountCalc();
this.paramsData.problemLevel = "";
this.pageData.pageNum = 1;
this.getTableData();
},
@ -334,6 +333,7 @@ export default {
dutyHolder: this.paramsData.dutyHolder,
category: this.paramsData.category,
status: this.paramsData.status,
problemLevel: this.paramsData.problemLevel,
startTime: this.paramsData.time && this.paramsData.time.length > 1 ? this.paramsData.time[0] : '',
endTime: this.paramsData.time && this.paramsData.time.length > 1 ? this.paramsData.time[1] : '',
}
@ -352,9 +352,7 @@ export default {
pageNum: this.pageData.pageNum,
}).then((res) => {
if (res) {
this.tableData = [{
id: 1
}];
this.tableData = res.records;
this.pageData.total = res.total;
}
});

53
src/views/dike/runManage/patrolMaintenance/maintenanceRecords/index.vue

@ -109,6 +109,27 @@
</el-option>
</el-select>
</div>
<div class="search-item flex items-center">
<span class="search-label">问题等级</span>
<el-select
clearable
size="small"
class="w-202 ml-10"
v-model="paramsData.problemLevel"
:popper-append-to-body="false"
filterable
placeholder="请选择"
>
<el-option label="全部" value=""> </el-option>
<el-option
v-for="item in maintenanceLevel"
:key="item.dictValue"
:label="item.dictLabel"
:value="item.dictValue"
>
</el-option>
</el-select>
</div>
<div class="flex-1 flex justify-end search-item">
<el-button
size="small"
@ -155,6 +176,14 @@
}}</span>
</template>
</el-table-column>
<el-table-column prop="level" align="center" label="问题等级">
<template slot-scope="scope">
<span>{{
getDictLabelName(scope.row.level, "maintenanceLevel")
}}</span>
</template>
</el-table-column>
<el-table-column prop="dutyHolderName" align="center" label="责任人" />
<el-table-column
prop="startDate"
@ -181,15 +210,21 @@
<el-button
type="text"
size="small"
@click="handleCheckDetails(scope.row, false)"
@click="handleCheckDetails(scope.row, 'check')"
>查看</el-button
>
<el-button
type="text"
size="small"
@click="handleCheckDetails(scope.row, true)"
@click="handleCheckDetails(scope.row, 'edit')"
>编辑</el-button
>
<el-button
type="text"
size="small"
@click="handleCheckDetails(scope.row, 'receive')"
>领单</el-button
>
</template>
</el-table-column>
</el-table>
@ -222,6 +257,7 @@ export default {
tableData: [],
maintenanceStatus: [],
maintenanceCategory: [],
maintenanceLevel: [],
maintenanceType: [],
paramsData: {
name: "",
@ -229,7 +265,8 @@ export default {
time: [],
dutyHolder: '',
category: '',
status: ''
status: '',
problemLevel: ''
},
pageData: {
pageNum: 1, //
@ -249,6 +286,9 @@ export default {
this.getDicts("patrol_maintenance_type").then((response) => {
this.maintenanceType = response.data;
});
this.getDicts("patrol_maintenance_level").then((response) => {
this.maintenanceLevel = response.data;
});
},
mounted() {
this.getTableData()
@ -262,9 +302,10 @@ export default {
this.pageData.pageSize = pageSize;
this.getTableData();
},
handleCheckDetails() {
handleCheckDetails(row, mode) {
this.$router.push({
path: "defectDetails",
query: { id: row.id, mode: mode, module: 'maintenance' },
});
},
getDictLabelName(type, dictListName) {
@ -276,7 +317,6 @@ export default {
},
//
handleChangeQuery() {
this.reqCountCalc();
this.pageData.pageNum = 1;
this.getTableData();
},
@ -288,7 +328,7 @@ export default {
this.paramsData.dutyHolder = "";
this.paramsData.category = "";
this.paramsData.status = "";
this.reqCountCalc();
this.paramsData.problemLevel = "";
this.pageData.pageNum = 1;
this.getTableData();
},
@ -299,6 +339,7 @@ export default {
dutyHolder: this.paramsData.dutyHolder,
category: this.paramsData.category,
status: this.paramsData.status,
problemLevel: this.paramsData.problemLevel,
startTime: this.paramsData.time && this.paramsData.time.length > 1 ? this.paramsData.time[0] : '',
endTime: this.paramsData.time && this.paramsData.time.length > 1 ? this.paramsData.time[1] : '',
}

2
src/views/dike/runManage/patrolMaintenance/patrolItemsManage/index.vue

@ -106,7 +106,7 @@ export default {
this.$router.push({
path: "inspectionRecordDetails",
query: {
id: row.id,
checkingId: row.id,
},
});
},

4
vue.config.js

@ -81,8 +81,8 @@ module.exports = {
},
[process.env.VUE_APP_BASE_API]: {
// target: "http://shuili-admin.product.dev.com:30115",
// target: "http://shuili.product.dev.com:30115/",
target: 'http://172.16.34.80:18082/',
target: "http://shuili.product.dev.com:30115/",
// target: 'http://172.16.34.80:18082/',
// target: 'http://172.16.32.62:18888/',
// target: "http://172.16.34.27:18082",
changeOrigin: true,

Loading…
Cancel
Save