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.
 
 
 
 

550 lines
14 KiB

<template>
<div>
<div class="page-container">
<el-form
:model="queryParams"
ref="queryForm"
:inline="true"
label-width="75px"
>
<el-form-item label="算法类型" prop="taskType">
<el-select
style="width: 150px;"
v-model="queryParams.taskType"
placeholder="全部"
filterable
clearable
popper-class="card-select-dropdown"
>
<el-option
v-for="item in listPatroltype"
:key="item.algId"
:label="item.algName"
:value="item.algName"
/>
</el-select>
</el-form-item>
<el-form-item label="算法名称" prop="devType">
<el-select
style="width: 150px;"
v-model="queryParams.devType"
placeholder="全部"
filterable
clearable
popper-class="card-select-dropdown"
>
<el-option label="表记识别算法" value="0" />
<el-option label="机器人" value="1" />
<el-option label="视频" value="2" />
</el-select>
</el-form-item>
<el-form-item label="算法状态" prop="fileStatus">
<el-select
style="width: 150px;"
v-model="queryParams.fileStatus"
placeholder="全部"
filterable
clearable
popper-class="card-select-dropdown"
>
<el-option label="未归档" value="0" />
<el-option label="已归档" value="1" />
</el-select>
</el-form-item>
<el-form-item label="时间">
<el-date-picker
style="width: 200px;border-radius: 5px;border:1px"
v-model="timeValue"
type="date"
clearable
placeholder="选择时间"
value-format="yyyy-MM-dd HH:mm:ss"
:picker-options="pickerOptions0"
>
</el-date-picker>
</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>
<div class="table-card" ref="tableCardRef">
<el-table
class="card-table"
v-loading="loading"
:data="dataList"
height="500"
border
stripe
>
<el-table-column
label="序号"
type="index"
width="50"
align="center"
/>
<el-table-column label="算法标识" align="center" prop="algSubtypeCode" />
<el-table-column label="算法名称" align="center" prop="algSubtypeName" />
<el-table-column label="算法类型" align="center" prop="algName" />
<!-- <el-table-column label="厂商" align="center" prop="createTime" >
<template slot-scope="scope">
<span>**********</span>
</template>
</el-table-column> -->
<el-table-column label="时间" align="center" prop="createTime" />
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<!-- 只有未归档才能修正 -->
<el-button v-if="scope.row.delFlag !=1"
size="mini"
type="primary"
@click="archiveInfo(scope.row)"
>启用
</el-button>
<el-button v-else
style="background-color: #909399;"
size="mini"
type="info"
@click="lookDetail(scope.row)"
>停用</el-button
>
</template>
</el-table-column>
</el-table>
<CardPagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</div>
</div>
<el-dialog
title="归档"
id="dialoga"
:visible.sync="showContrastEdit"
:close-on-click-modal="false"
:close-on-press-escape="false"
:destroy-on-close="true"
append-to-body
custom-class="card-dialog card-page card-dialog-height-auto"
>
<el-form
ref="contrastForm"
:model="contrastForm"
:rules="contrastRules"
label-width="100px"
label-position="top"
>
<el-form-item label="审核人" prop="chechkPerson">
<el-input
v-model="contrastForm.chechkPerson"
placeholder="请输入审核人"
/>
</el-form-item>
<el-form-item label="巡检结论" prop="taskResult">
<el-input
style="resize: none"
type="textarea"
:rows="3"
v-model="contrastForm.taskResult"
placeholder="请输入巡检结论"
/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button
class="card-dialog-cancel-btn"
@click="() => (showContrastEdit = false)"
> </el-button
>
<el-button
type="primary"
class="card-dialog-sure-btn"
:loading="isArchiving"
:disable="isLock"
@click="handleArchiveClicked"
> </el-button
>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listPartrolResult,
} from "@/api/algorithmConfiguration/index";
import {
partrolResultArchive,
} from "@/api/inspectionDataManage/inspectionArchive";
// import InspectionArchiveContrastDialog from "@/views/components/InspectionArchiveContrastDialog.vue";
import debounce from "lodash.debounce";
import { listPatroltype } from "@/api/algorithmConfiguration/index";
import { normalizePatrolName } from "@/utils/patrolName";
import { openDialog } from "../common.js";
import CardPagination from "@/components/CardPagination/index.vue";
import CardBox from "@/components/cardBox.vue";
export default {
name: "InspectionArchive",
components: {
// InspectionArchiveContrastDialog,
CardPagination,
CardBox },
dicts: [
"patrol_result_value_type",
"patrol_result_recognition_type",
"patrol_result_valid_type",
// "patrol_type",
"device_type",
],
data() {
return {
pickerOptions0: {
disabledDate(time) {
return time.getTime() < Date.now() - 8.64e7;
}
},
timeValue:'',
// 遮罩层
loading: true,
isArchiving: false, // 正在归档
isLock: false,
// 总条数
total: 0,
// 数据
dataList: [],
//时间范围
dateRange: [],
dateRangePickerOptions: {
disabledDate(selectDate) {
return new Date().getTime() < selectDate.getTime();
},
},
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
taskType: null,
devType: null,
fileStatus: null,
},
// 是否显示对比数据
showContrast: false,
// 显示编辑修正
showContrastEdit: false,
contrastForm: {
chechkPerson: null,
taskResult: null,
},
contrastRules: {
chechkPerson: [
{ required: true, message: "请输入审核人", trigger: "change" },
],
taskResult: [
{ required: true, message: "请输入巡检结论", trigger: "change" },
],
},
// 最新详细信息
newInfo: null,
// 原始详细信息
originalInfo: null,
listPatroltype: [],
};
},
created() {
// 防抖
this.setTableHeight = debounce(this.setTableHeight, 300);
window.addEventListener("resize", this.setTableHeight);
this.getlistPatroltype();
this.getList();
},
mounted() {
this.setTableHeight();
},
destroyed() {
this.setTableHeight.cancel();
window.removeEventListener("resize", this.setTableHeight);
},
methods: {
getlistPatroltype() {
listPatroltype().then((res) => {
this.listPatroltype = res.rows;
});
},
// 获取巡检任务
getPatrolTypeStr(type) {
const element = this.listPatroltype.find(
(item) => item.patrolTypeCode == type
);
if (element) {
return normalizePatrolName(element.patrolTypeName);
}
return "";
},
setTableHeight() {
this.tableHeight = this.$refs.tableCardRef.clientHeight - 40;
},
/** 获取数据列表 */
getList() {
this.loading = true;
const params = { ...this.queryParams };
// 拍摄时间筛选范围
if (this.dateRange && this.dateRange.length === 2) {
params.beginTime = this.dateRange[0];
params.endTime = this.dateRange[1];
}
listPartrolResult(params).then((response) => {
this.dataList = response.rows;
this.total = response.total;
this.loading = false;
});
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.dateRange = [];
this.resetForm("queryForm");
this.handleQuery();
},
// 设备类型
getDeviceTypeStr(dataType) {
switch (dataType) {
case "0":
return "无人机";
case "1":
return "机器人";
case "2":
return "视频";
}
},
// 修正
archiveInfo(info) {
this.contrastForm = {
lineId: info.lineId,
chechkPerson: null,
taskResult: null,
};
this.resetForm("contrastForm");
this.showContrastEdit = true;
},
// 查看详情
lookDetail(info) {
this.$router.push({
name: "cardInspectionArchivePointInfo",
params: {
id: info.lineId,
},
});
// // 开发
// if (process.env.VUE_APP_DIALOG == "true") {
// this.$router.push({
// name: "cardInspectionArchivePointInfo",
// params: {
// id: info.lineId,
// },
// });
// } else {
// sessionStorage.setItem("archiveLineId", JSON.stringify(info.lineId));
// openDialog({
// sourceCardId: "wuhan@videoMonitor-card-45",
// targetCardId: "wuhan@videoMonitor-card-46",
// dialogTitle: "巡检结果归档详情",
// });
// }
},
// 归档
handleArchiveClicked() {
this.$refs["contrastForm"].validate((valid) => {
if (valid) {
const params = { ...this.contrastForm };
this.isArchiving = true;
this.isLock = true;
partrolResultArchive(params)
.then((res) => {
this.$modal.msgSuccess("归档成功");
this.showContrastEdit = false;
this.getList();
})
.finally(() => {
this.isArchiving = false;
this.isLock = false;
});
}
});
},
},
};
</script>
<style lang="scss" scoped>
.page-content {
width: 100%;
height: 856px;
}
.page-container {
height: 100%;
display: flex;
flex-direction: column;
}
.query-card {
margin-bottom: 15px;
::v-deep .el-form-item {
margin-bottom: 0;
}
}
.table-card {
flex: 1;
height: 0;
::v-deep .el-card__body {
height: 100%;
}
}
// #dialoga {
// height: 39vh;
// overflow: auto;
// }
</style>
<style>
.vue-treeselect__control {
background-color: rgb(0, 1, 1, 0) !important;
border: 1px solid #40486a !important;
}
.el-tree-node__content:hover {
/* background: RGBA(23, 37, 51, 1) !important; */
}
.el-tree-node:focus > .el-tree-node__content {
/* background-color: RGBA(23, 37, 51, 1) !important; */
}
.el-picker-panel {
/* background: #202f3e !important;
border: 1px solid #40486a !important; */
}
.el-picker-panel__footer {
/* background: #202f3e !important; */
}
.el-date-picker__time-header {
border-bottom: 1px solid #40486a !important;
}
.el-date-table th {
border-bottom: 1px solid #40486a !important;
}
.el-picker-panel__footer {
border-top: 1px solid #40486a !important;
}
.el-popper[x-placement^="top"] .popper__arrow::after {
border-top-color: #40486a !important;
}
.el-time-panel__footer {
border-top: 1px solid #40486a !important;
}
.el-button--medium,
.el-button.is-plain {
background-color: #247382 !important;
border: 1px solid #247382 !important;
}
.el-time-panel {
/* background-color: #202f3e !important;
border: 1px solid #40486a !important; */
}
.el-date-table td.disabled div {
background: RGBA(23, 37, 51, 1) !important;
}
.el-popper[x-placement^="bottom"] .popper__arrow::after {
border-bottom-color: #40486a !important;
}
.el-input-number--medium .el-input-number__increase {
background-color: rgb(1, 1, 1, 0) !important;
}
.el-transfer-panel {
/* background-color: #202f3e !important;
border-color: #40486a !important; */
/* border: 1px solid red; */
width: 300px !important;
}
.el-transfer-panel__header {
/* background-color: #202f3e !important;
border-color: #40486a !important; */
}
.el-step__head.is-finish {
color: #37cbd6 !important;
border-color: #37cbd6 !important;
}
.el-message-box {
/* background-color: #202f3e !important;
border: 1px solid #40486a !important; */
}
.el-button--small {
background-color: #247382 !important;
border: none !important;
}
.el-step__title.is-finish {
color: #37cbd6 !important;
}
.el-input__inner {
border-color: #40486a !important;
}
.el-select-dropdown {
/* background-color: #202f3e !important;
border: 1px solid #40486a !important; */
}
.el-select-dropdown__item.hover,
.el-select-dropdown__item:hover {
background-color: RGBA(23, 37, 51, 1) !important;
}
</style>