上层平台设备台账功能更新

This commit is contained in:
zhangjunwen 2024-06-20 16:02:46 +08:00
parent b4858b078e
commit 1a0b410185
6 changed files with 421 additions and 38 deletions

View File

@ -4,14 +4,7 @@ import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import com.inspur.common.annotation.Log;
import com.inspur.common.core.controller.BaseController;
import com.inspur.common.core.domain.AjaxResult;
@ -46,6 +39,12 @@ public class IpcEquipDrawingsController extends BaseController
return getDataTable(list);
}
@GetMapping("/listByEquipId")
public AjaxResult listByEquipId(@RequestParam String equipId)
{
return AjaxResult.success(ipcEquipDrawingsService.selectIpcEquipDrawingsListByEquipId(equipId));
}
/**
* 导出图纸信息列表
*/

View File

@ -27,6 +27,11 @@ public interface IIpcEquipDrawingsService
*/
public List<IpcEquipDrawings> selectIpcEquipDrawingsList(IpcEquipDrawings ipcEquipDrawings);
/**
* 通过设备id查询图纸信息列表
*/
public List<IpcEquipDrawings> selectIpcEquipDrawingsListByEquipId(String equipId);
/**
* 新增图纸信息
*

View File

@ -45,6 +45,16 @@ public class IpcEquipDrawingsServiceImpl implements IIpcEquipDrawingsService
return ipcEquipDrawingsMapper.selectIpcEquipDrawingsList(ipcEquipDrawings);
}
/**
* 通过设备id查询图纸信息列表
*/
@Override
public List<IpcEquipDrawings> selectIpcEquipDrawingsListByEquipId(String equipId){
IpcEquipDrawings query = new IpcEquipDrawings();
query.setEquipId(equipId);
return ipcEquipDrawingsMapper.selectIpcEquipDrawingsList(query);
}
/**
* 新增图纸信息
*

View File

@ -33,6 +33,14 @@ export function getInfoByParentId(query) {
});
}
//通过部门获取设备树
export function getEquipTreeByDept(query) {
return request({
url: "/equip/info/getEquipTreeByDept",
method: "get",
params: query,
});
}
// 查询设备信息详细
export function getInfo(id) {
return request({

View File

@ -9,6 +9,25 @@
label-width="68px"
style="text-align:right"
>
<el-form-item
label="所属部门"
prop="deptIds"
>
<el-cascader
v-model="queryParams.deptIds"
:options="deptOptions"
/>
</el-form-item>
<el-form-item
label="所属设备"
prop="equipId"
>
<el-cascader
:disabled="equipDisabled"
v-model="queryParams.equipIds"
:options="equipOptions"
/>
</el-form-item>
<el-form-item
label="图纸编号"
prop="drawingNum"
@ -31,16 +50,6 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item
label="所属设备"
prop="equipId"
>
<el-cascader
v-model="queryParams.equipIds"
:props="props"
placeholder="请选择设备"
/>
</el-form-item>
<el-form-item>
<el-button
type="primary"
@ -233,7 +242,7 @@
<el-cascader
v-model="form.equipIds"
:props="props"
placeholder="请选择设备"
placeholder="请选择设备"
/>
</el-form-item>
</el-col>
@ -250,7 +259,10 @@
</el-form-item></el-col>
</el-row>
<el-form-item label="设备图纸路径">
<el-form-item
label="设备图纸路径"
prop="equipDrawingPath"
>
<file-upload
:fileType="['doc','docx', 'xls','xlsx', 'ppt', 'txt', 'pdf']"
v-model="form.equipDrawingPath"
@ -335,7 +347,8 @@ import {
addDrawings,
updateDrawings,
} from "@/api/equip/drawings";
import { getInfoByParentId } from "@/api/equip/equip";
import { getInfoByParentId, getEquipTreeByDept } from "@/api/equip/equip";
import { deptTreeSelect } from "@/api/system/user";
import _ from "lodash";
export default {
name: "Drawings",
@ -391,6 +404,9 @@ export default {
equipId: [
{ required: true, message: "图纸所属设备不能为空", trigger: "blur" },
],
equipDrawingPath: [
{ required: true, message: "图纸文件不能为空", trigger: "blur" },
],
remark: [
{
max: 200,
@ -438,12 +454,40 @@ export default {
downloadOpen: false,
fileDataList: [],
fileLoading: false,
deptOptions: [],
equipOptions: [],
equipDisabled: true,
};
},
watch: {
"queryParams.deptIds": {
handler() {
console.log("deptIds改变");
if (this.queryParams.deptIds && this.queryParams.deptIds != "") {
this.getEquipTree();
}
},
},
},
created() {
this.getList();
this.getDeptTree();
},
methods: {
getEquipTree() {
const query = {};
query.deptId = _.last(this.queryParams.deptIds);
getEquipTreeByDept(query).then((response) => {
this.equipOptions = response.data;
this.equipDisabled = false;
});
},
/** 查询部门下拉树结构 */
getDeptTree() {
deptTreeSelect().then((response) => {
this.deptOptions = response.data;
});
},
/** 查询图纸信息列表 */
getList() {
this.loading = true;
@ -515,6 +559,8 @@ export default {
/** 重置按钮操作 */
resetQuery() {
this.queryParams.equipIds = null;
this.queryParams.deptIds = null;
this.equipDisabled = true;
this.resetForm("queryForm");
this.handleQuery();
},

View File

@ -314,6 +314,18 @@
icon="el-icon-document"
@click="handleDetails(scope.row)"
>详情</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-receiving"
@click="handlePatrol(scope.row)"
>巡检记录</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-notebook-2"
@click="handleAlarm(scope.row)"
>报警记录</el-button>
</template>
</el-table-column>
<el-table-column
@ -322,13 +334,13 @@
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
<!-- <el-button
size="mini"
type="text"
icon="el-icon-upload2"
@click="handleFileUpload(scope.row)"
v-hasPermi="['equip:info:fileUpload']"
>文件上传</el-button>
>文件上传</el-button> -->
<el-button
size="mini"
type="text"
@ -336,6 +348,13 @@
@click="handleFileDownload(scope.row)"
v-hasPermi="['equip:info:edit']"
>文件下载</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-folder"
@click="handleDrawingDownload(scope.row)"
v-hasPermi="['equip:info:edit']"
>图纸下载</el-button>
</template>
</el-table-column>
</el-table>
@ -807,7 +826,7 @@
:title="fileDownloadTitle"
:visible.sync="downloadOpen"
width="800px"
:fullscreen="true"
:before-close="cancelDownload"
append-to-body
>
<el-form
@ -854,17 +873,12 @@
</el-table-column>
</el-table>
<!-- <div
<div
slot="footer"
class="dialog-footer"
>
<el-button
type="primary"
@click="submitUploadFiles(form)"
:disabled="fileDataList.length === 0"
>确认上传</el-button>
<el-button @click="cancelUpload"> </el-button>
</div> -->
<el-button @click="cancelDownload"> </el-button>
</div>
</el-form>
</el-dialog>
@ -1311,6 +1325,191 @@
<el-button @click="upkeepCancel"> </el-button>
</div>
</el-dialog>
<!-- 设备巡检弹出框 -->
<el-dialog
:title="patrolTitle"
:visible.sync="patrolOpen"
width="1200px"
:close-on-click-modal="false"
class="card-detail-class"
:before-close="patrolCancel"
>
<el-table
v-loading="patrolLoading"
:data="patrolList"
>
<el-table-column
label="工单编号"
align="center"
prop="taskNum"
show-overflow-tooltip
/>
<el-table-column
label="设备"
align="center"
prop="equip"
show-overflow-tooltip
/>
<el-table-column
label="工单创建时间"
align="center"
prop="createTime"
show-overflow-tooltip
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{mi}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column
label="计划完成时间"
align="center"
prop="planTime"
show-overflow-tooltip
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.planTime, '{y}-{m}-{d} {h}:{mi}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column
label="实际完成时间"
align="center"
prop="actualTime"
show-overflow-tooltip
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.actualTime, '{y}-{m}-{d} {h}:{mi}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column
label="巡检类型"
align="center"
prop="type"
show-overflow-tooltip
>
<template slot-scope="scope">
<dict-tag
:options="dict.type.patrol_type"
:value="scope.row.type"
/>
</template>
</el-table-column>
<el-table-column
label="状态"
align="center"
prop="status"
show-overflow-tooltip
>
<template slot-scope="scope">
<dict-tag
:options="dict.type.patrol_task_status"
:value="scope.row.status"
/>
</template>
</el-table-column>
</el-table>
<pagination
v-show="patrolTotal>0"
:total="patrolTotal"
:page.sync="queryParamsPatrol.pageNum"
:limit.sync="queryParamsPatrol.pageSize"
@pagination="getPatrolList"
/>
<div
slot="footer"
class="dialog-footer"
>
<el-button @click="patrolCancel"> </el-button>
</div>
</el-dialog>
<!-- 设备报警弹出框 -->
<el-dialog
:title="alarmTitle"
:visible.sync="alarmOpen"
width="1200px"
:close-on-click-modal="false"
class="card-detail-class"
:before-close="alarmCancel"
>
<el-table
v-loading="alarmLoading"
:data="alarmList"
>
<el-table-column
label="监测设备名称"
align="center"
prop="equipInfo.equipName"
/>
<el-table-column
label="参数名称"
align="center"
prop="alarmRules.alarmName"
/>
<el-table-column
label="报警值"
align="center"
prop="alarmValue"
/>
<el-table-column
label="单位"
align="center"
prop="alarmRules.alarmInfoUnit"
/>
<el-table-column
label="报警内容"
align="center"
prop="content"
/>
<el-table-column
label="报警等级"
align="center"
prop="alarmLevel"
/>
<el-table-column
label="报警时间"
align="center"
prop="alarmTime"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.alarmTime, '{y}-{m}-{d} {h}:{mi}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column
label="报警记录的状态"
align="center"
prop="status"
>
<template slot-scope="scope">
<dict-tag
:options="dict.type.alarm_status"
:value="scope.row.status"
/>
</template>
</el-table-column>
<el-table-column
label="处理结果"
align="center"
prop="result"
/>
</el-table>
<pagination
v-show="alarmTotal>0"
:total="alarmTotal"
:page.sync="queryParamsAlarm.pageNum"
:limit.sync="queryParamsAlarm.pageSize"
@pagination="getAlarmList"
/>
<div
slot="footer"
class="dialog-footer"
>
<el-button @click="alarmCancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
@ -1342,6 +1541,9 @@ import { deptTreeSelect } from "@/api/system/user";
import _ from "lodash";
import { listUpkeepRecord } from "@/api/upkeep/record";
import { listMaintRecord } from "@/api/maintenance/record";
import { listTask } from "@/api/patrol/task";
import { listRecord } from "@/api/industrial/record";
import { listDrawings, listDrawingsByEquipId } from "@/api/equip/drawings";
export default {
name: "Info",
components: {
@ -1355,6 +1557,8 @@ export default {
"upkeep_priority",
"upkeep_plan_complete_status",
"maintenance_status",
"patrol_task_status",
"patrol_type",
],
data() {
return {
@ -1639,6 +1843,26 @@ export default {
children: "children",
label: "label",
},
//
patrolTitle: "巡检记录",
patrolOpen: false,
patrolLoading: false,
patrolList: [],
patrolTotal: 0,
queryParamsPatrol: {
pageNum: 1,
pageSize: 10,
},
//
alarmTitle: "报警记录",
alarmOpen: false,
alarmLoading: false,
alarmList: [],
alarmTotal: 0,
queryParamsAlarm: {
pageNum: 1,
pageSize: 10,
},
};
},
watch: {
@ -1654,6 +1878,95 @@ export default {
this.getDeptTree();
},
methods: {
//
cancelDownload() {
this.downloadOpen = false;
this.fileList = [];
this.fileDataList = [];
},
handleDrawingDownload(row) {
this.fileDownloadTitle = "图纸下载";
this.downloadOpen = true;
this.form = row;
const query = {};
query.equipId = row.id;
listDrawingsByEquipId(query).then((response) => {
const list = response.data;
if (list.length == 0) {
return;
}
this.fileList = [];
this.fileDataList = [];
list.forEach((drawData) => {
const data = drawData.equipDrawingPath;
if (data != null && data.length != 0) {
console.log("图纸数据:", data);
var paths = data.split(",");
paths.forEach((f) => {
var fileInfo = f.split("/");
this.fileList.push({
name: fileInfo.slice(-1)[0],
path: f,
});
var fileDetail = fileInfo.slice(-1)[0];
this.fileDataList.push({
name: fileDetail,
type: fileDetail.split(".").slice(-1)[0],
url: process.env.VUE_APP_BASE_API + f,
});
});
}
});
});
},
//
getAlarmList() {
this.alarmLoading = true;
this.queryParamsAlarm.equipId = this.selectedEquipId;
listRecord(this.queryParamsAlarm).then((response) => {
this.alarmList = response.rows;
this.alarmTotal = response.total;
this.alarmLoading = false;
});
},
handleAlarm(row) {
this.selectedEquipId = row.id;
this.getAlarmList();
this.alarmOpen = true;
},
alarmCancel() {
this.alarmOpen = false;
this.alarmList = [];
this.alarmTotal = 0;
this.queryParamsAlarm = {
pageNum: 1,
pageSize: 10,
};
},
//
getPatrolList() {
this.patrolLoading = true;
this.queryParamsPatrol.equipId = this.selectedEquipId;
listTask(this.queryParamsPatrol).then((response) => {
this.patrolList = response.rows;
this.patrolTotal = response.total;
this.patrolLoading = false;
});
},
handlePatrol(row) {
this.selectedEquipId = row.id;
this.patrolOpen = true;
this.getPatrolList();
},
patrolCancel() {
this.patrolOpen = false;
this.patrolList = [];
this.patrolTotal = 0;
this.queryParamsPatrol = {
pageNum: 1,
pageSize: 10,
};
},
//
filterNode(value, data) {
if (!value) return true;
@ -1670,6 +1983,10 @@ export default {
this.maintTotal = 0;
this.upkeepList = [];
this.upkeepTotal = 0;
this.queryParamsMaint = this.queryParamsUpkeep = {
pageNum: 1,
pageSize: 10,
};
},
//
getUpkeepList() {
@ -1733,7 +2050,6 @@ export default {
submitUploadFiles(row) {
// this.fileLoading = true;
console.log("row:", row);
//
this.fileData = new FormData();
this.$refs.upload.submit();
@ -1741,12 +2057,10 @@ export default {
Authorization: "Bearer " + getToken(),
});
this.fileData.append("withCredentials", false);
console.log("fileData:", this.fileData.get("files"));
//
uploadFile(this.fileData).then((res) => {
this.uploadFileForm.equipFilesPath =
row.equipFilesPath + "," + res.fileNames;
console.log("拼接设备文件:", this.uploadFileForm.equipFilesPath);
updateInfo(this.uploadFileForm).then((response) => {
if (response.code == 200) {
this.$modal.msgSuccess("文件上传成功!");
@ -1808,6 +2122,7 @@ export default {
handleFileDownload(row) {
// var filePaths = row.equipFilesPath;
// var suffix = url.substring(url.lastIndexOf("."), url.length);
this.fileDownloadTitle = "文件下载";
this.downloadOpen = true;
this.fileList = [];
this.fileDataList = [];
@ -1819,10 +2134,10 @@ export default {
name: fileInfo.slice(-1)[0],
path: f,
});
var fileDetail = fileInfo.slice(-1)[0].split(".");
var fileDetail = fileInfo.slice(-1)[0];
this.fileDataList.push({
name: fileDetail.slice(0)[0],
type: fileDetail.slice(-1)[0],
name: fileDetail,
type: fileDetail.split(".").slice(-1)[0],
url: process.env.VUE_APP_BASE_API + f,
});
});