Commit b887b7d6 authored by 纪泽龙's avatar 纪泽龙

上传

parent e28c31ff
<template>
<div
class="app-container detail"
style="background-color: rgb(238, 241, 245)"
>
<!-- 工单信息 -->
<div style="padding-top: 10px; background: #fff; height: 100%">
<div>
<div
style="width: 5%; height: 50px; margin-left: 20px"
@click="$router.go(-1)"
>
<el-button
size="medium"
type="text"
style="font-size: 18px; color: rgb(7, 63, 112); float: left"
>返回</el-button
>
<div style="float: left; margin-top: 8px; margin-left: 5px">
<img
src="../../../assets/logo/fanhui.png"
style="width: 25px"
alt=""
/>
</div>
</div>
<el-steps
:active="active"
finish-status="success"
simple
prop="orderStatus"
style="margin-top: 5px"
>
<el-step title="未接收"></el-step>
<el-step title="已接收"></el-step>
<!-- <el-step title="进行中" ></el-step>-->
<el-step title="已反馈"></el-step>
<el-step title="已归档"></el-step>
</el-steps>
</div>
<div style="width: 100%; height: 280px">
<el-divider></el-divider>
<div style="color: #31eaea; width: 30%; height: 40px">
<ul>
<li>详细信息</li>
</ul>
</div>
<el-form
ref="form"
v-model="form"
:rules="rules"
label-width="100px"
style="float: left; margin-left: 50px"
>
<el-form-item label="工单类型:" prop="orderType">
<font v-if="form.orderType == 1">巡检信息</font>
<font v-if="form.orderType == 2">隐患信息</font>
<font v-if="form.orderType == 3">报警信息</font>
</el-form-item>
<el-form-item label="工单编号:" prop="orderId">
<font>{{ form.orderId }}</font>
</el-form-item>
<el-form-item label="工单名称:" prop="orderName">
<font>{{ form.orderName }}</font>
</el-form-item>
<el-form-item label="工单状态:" prop="orderStatus">
<font v-if="form.orderStatus == 0">未接收</font>
<font v-if="form.orderStatus == 1">已接收</font>
<font v-if="form.orderStatus == 2">已反馈</font>
<font v-if="form.orderStatus == 3">已归档</font>
</el-form-item>
<el-form-item label="指定执行人员:" prop="appointInspectorName">
<font>{{ form.appointInspectorName }}</font>
</el-form-item>
<el-form-item label="工单描述:" prop="remarks">
<font>{{ form.remarks }}</font>
</el-form-item>
</el-form>
<el-form
ref="form"
v-model="form"
:rules="rules"
label-width="100px"
style="float: left; width: 25%"
>
<el-form-item
label="设备类型:"
prop="deviceType"
v-if="form.orderType != 1"
>
<font v-if="form.deviceType == 0">管道</font>
<font v-if="form.deviceType == 1">调压阀</font>
<font v-if="form.deviceType == 2">阀门井</font>
<font v-if="form.deviceType == 3">流量计</font>
<font v-if="form.deviceType == 4">压力表</font>
</el-form-item>
<el-form-item label="设备名称:" prop="deviceName">
<font v-if="form.orderType != 1">{{ form.deviceName }}</font>
<el-tree
:data="deviceOptions"
:props="defaultProps"
:expand-on-click-node="false"
ref="tree"
@node-click="handleNodeClick"
v-if="form.orderType == 1"
/>
</el-form-item>
<el-form-item label="设备位置:" v-if="form.orderType != 1">
<font>{{ form.address }}</font>
</el-form-item>
<el-form-item label="工单进度:" v-if="form.orderType == 1">
<font>{{ form.finishNum }}/{{ form.deviceNum }}</font>
</el-form-item>
<el-form-item label="下发时间:" prop="allotTime">
<font>{{ form.allotTime }}</font>
</el-form-item>
<!-- <el-form-item label="接收时间:" prop="actualTime">
<font>{{form.actualTime}}</font>
</el-form-item> -->
</el-form>
<div
id="marbox"
style="
width: 700px;
height: 250px;
float: left;
margin-top: -35px;
border: 1px solid rgb(218, 213, 213);
"
>
<div style="width: 100%; height: 100%" id="container"></div>
</div>
</div>
<!-- 接单信息 -->
<div v-if="form.actualTime != '' && form.actualTime != null">
<el-divider></el-divider>
<div style="color: #31eaea; width: 100%; height: 40px">
<ul>
<li>接单信息</li>
</ul>
</div>
<el-form
ref="form"
v-model="form"
:rules="rules"
label-width="100px"
style="margin-left: 50px; height: 30px; width: 100%"
>
<el-form-item
label="接单人:"
prop="actualInspectorName"
style="float: left; width: 20%"
>
<font>{{ form.actualInspectorName }}</font>
</el-form-item>
<el-form-item label="接单时间:" prop="actualTime" style="float: left">
<font>{{ form.actualTime }}</font>
</el-form-item>
</el-form>
</div>
<!-- 反馈信息 -->
<!-- <div style="width: 100%;font-weight: 600;height: 200px;" v-if="form.dealStatus != '' && form.dealStatus != null"> -->
<div style="width: 100%; font-weight: 600">
<el-divider></el-divider>
<div style="color: #31eaea; width: 100%; height: 40px">
<ul>
<li>反馈信息</li>
</ul>
</div>
<div class="block" style="width: 95%; margin-left: 2%">
<el-timeline>
<el-timeline-item
v-for="(activity, index) in form.feedbackList"
:key="index"
:timestamp="activity.feedbackTime"
>
<el-card>
<div style="width: 600px; float: left">
<div style="width: 600px">
<div style="float: left; margin-left: 50px; width: 250px">
<p>
设备类型:
<span v-if="activity.deviceType == 0">管道</span>
<span v-if="activity.deviceType == 1">调压箱</span>
<span v-if="activity.deviceType == 2">阀门井</span>
<span v-if="activity.deviceType == 3">流量计</span>
<span v-if="activity.deviceType == 4">压力表</span>
</p>
<p>设备名称:{{ activity.deviceName }}</p>
<p>
是否有隐患:
<span v-if="activity.isHiddenDanger == 1"></span>
<span v-if="activity.isHiddenDanger == 2"></span>
</p>
<div style="width: 600px">
<p>
反馈信息:
<span>{{ activity.contents }}</span>
</p>
</div>
</div>
<div style="float: left; margin-left: 50px; width: 250px">
<p v-if="activity.dealStatus == 3">是否解决:未解决</p>
<p v-if="activity.dealStatus != 3">是否解决:已解决</p>
<p>反馈时间:{{ activity.feedbackTime }}</p>
<p v-if="activity.isHiddenDanger == 1">
处理状态:
<span v-if="activity.dealStatus == 1">不需要处理</span>
<span v-if="activity.dealStatus == 2">已处理完成</span>
<span v-if="activity.dealStatus == 3">未处理完成</span>
</p>
</div>
</div>
</div>
<div class="feedbackTime-div">
<div class="feedbackTime">
<el-image
:src="activity.pictureUrl1"
:preview-src-list="[activity.pictureUrl1]"
v-if="
activity.pictureUrl1 != null &&
activity.pictureUrl1 != ''
"
style="width: 90px"
></el-image>
</div>
<div class="feedbackTime">
<el-image
:src="activity.pictureUrl2"
:preview-src-list="[activity.pictureUrl2]"
v-if="
activity.pictureUrl2 != null &&
activity.pictureUrl2 != ''
"
style="width: 9s0px"
></el-image>
</div>
<div class="feedbackTime">
<el-image
:src="activity.pictureUrl3"
:preview-src-list="[activity.pictureUrl3]"
v-if="
activity.pictureUrl3 != null &&
activity.pictureUrl3 != ''
"
style="width: 90px"
></el-image>
</div>
</div>
</el-card>
</el-timeline-item>
</el-timeline>
</div>
</div>
<!-- 返回按钮 -->
</div>
</div>
</template>
<script>
import {
listBasicsInfo,
getBasicsInfo,
delBasicsInfo,
addBasicsInfo,
updateBasicsInfo,
exportBasicsInfo,
} from "@/api/workOrder/basicsInfo";
import { deviceTree } from "@/api/device/deviceInfo";
import gaodeMap from "utils/gaodeMap.js";
import { map, DEVICE_TYPE } from "utils/gaodeMap.js";
export default {
name: "BasicsInfo",
components: {},
data() {
return {
dialogImageUrl: "",
dialogVisible: false,
disabled: false,
imageUrl: "",
// 遮罩层
loading: true,
// 导出遮罩层
exportLoading: false,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 工单基础信息表格数据
basicsInfoList: [],
// feedbackList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 工单状态字典
typeOptions: [],
pickerOptions: [],
// 工单类型字典
ordertypeOptions: [],
// 设备树选项
deviceOptions: [
{
label: "设备列表",
childList: [],
},
],
defaultProps: {
children: "childList",
label: "label",
},
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
orderType: null,
orderName: null,
orderStatus: null,
appointInspector: null,
allotTime: null,
actualInspector: null,
actualTime: null,
remarks: null,
},
// 表单参数
form: {},
// 表单校验
rules: {},
active: 0,
orderId: "",
};
},
created() {
// 如果是跳转来的,则接受初始化参数
// this.user_id = this.$route.query.id; //详细信息页接收参数
this.orderId = this.$route.query.orderId;
this.getList();
this.getDicts("t_order_status").then((response) => {
this.typeOptions = response.data;
});
this.getDicts("t_order_type").then((response) => {
this.ordertypeOptions = response.data;
});
this.getBasicsInfo();
},
mounted() {
let gaoMap = new gaodeMap("石家庄");
this.gaoMap = gaoMap;
this.getBasicsInfo();
},
methods: {
handleRemove(file) {
console.log(file);
},
handlePictureCardPreview(file) {
this.dialogImageUrl = file.url;
this.dialogVisible = true;
},
handleDownload(file) {
console.log(file);
},
/** 查询工单基础信息列表 */
getList() {
this.loading = true;
listBasicsInfo(this.queryParams).then((response) => {
this.basicsInfoList = response.rows;
this.total = response.total;
this.loading = false;
});
},
getBasicsInfo() {
getBasicsInfo(this.orderId).then((response) => {
this.form = response.data;
console.log(this.form.feedbackList, "00000000000");
this.active = parseInt(response.data.orderStatus) + 1;
if (this.form.deviceInfoList.length > 0) {
this.gaoMap.resetMapCenter([
this.form.deviceInfoList[0].longitude,
this.form.deviceInfoList[0].latitude,
]);
}
for (var i = 0; i < this.form.deviceInfoList.length; i++) {
let obj = this.form.deviceInfoList[i];
this.gaoMap.addMarker(DEVICE_TYPE.WORKORDER, obj);
}
if (this.form.orderType == "1") {
// 获取设备列表树
let data = this.form.deviceInfoList;
console.log(data, "====");
deviceTree(data).then((response) => {
this.deviceOptions[0].childList = response.data;
});
}
});
},
// 筛选节点
// filterNode(value, data) {
// if (!value) return true;
// return data.label.indexOf(value) !== -1;
// },
// 节点单击事件
handleNodeClick(data) {},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
orderId: null,
orderType: null,
orderName: null,
orderStatus: "0",
createTime: null,
appointInspector: null,
allotTime: null,
actualInspector: null,
actualTime: null,
remarks: null,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.orderId);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加工单基础信息";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const orderId = row.orderId || this.ids;
getBasicsInfo(orderId).then((response) => {
this.form = response.data;
this.open = true;
this.title = "修改工单基础信息";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.orderId != null) {
updateBasicsInfo(this.form).then((response) => {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addBasicsInfo(this.form).then((response) => {
this.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const orderIds = row.orderId || this.ids;
this.$confirm(
'是否确认删除工单基础信息编号为"' + orderIds + '"的数据项?',
"警告",
{
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}
)
.then(function () {
return delBasicsInfo(orderIds);
})
.then(() => {
this.getList();
this.msgSuccess("删除成功");
})
.catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
const queryParams = this.queryParams;
this.$confirm("是否确认导出所有工单基础信息数据项?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
this.exportLoading = true;
return exportBasicsInfo(queryParams);
})
.then((response) => {
this.download(response.msg);
this.exportLoading = false;
})
.catch(() => {});
},
},
};
</script>
<style>
.feedbackTime-div {
float: left;
margin-left: 150px;
margin-top: 10px;
}
.feedbackTime {
height: 120px;
width: 120px;
float: left;
margin-left: 15px;
margin-top: 5px;
margin-bottom: 15px;
display: flex;
justify-content: center;
align-items: center;
}
.el-card__body {
padding: 5px 20px 20px 20px;
}
.detail .el-form {
width: 20%;
}
.detail .el-form-item {
margin-bottom: 0px;
}
.el-tree {
margin-top: 5px;
}
.avatar-uploader {
width: 25%;
float: left;
}
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
}
.avatar-uploader .el-upload:hover {
border-color: #409eff;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 178px;
height: 178px;
line-height: 178px;
text-align: center;
}
.avatar {
width: 178px;
height: 178px;
display: block;
}
li {
font-size: 15px;
font-weight: 900;
}
</style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment