0213bigScreenShowopl
This commit is contained in:
parent
723e2db9c5
commit
7e54d59bd1
|
@ -460,20 +460,41 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="alarm-detail-info left_arrow" v-if="workDetail" style="width: 50%;top: 220px;">
|
||||
<div class="simple-title">
|
||||
<div><span>作业</span></div>
|
||||
<!-- @click="areaItemHandle(1)" -->
|
||||
<span class="icon-close" @click="workDetailClose"></span>
|
||||
</div>
|
||||
<div class="detail-content">
|
||||
<div class="content-body">
|
||||
<el-table class="bigScreenTable" v-if="areaShowType==1" :data="areaOperation" :height="300" @row-click="areaOperationRowClick">
|
||||
<el-table-column label="作业简介" prop="name"></el-table-column>
|
||||
<el-table-column label="开始时间" prop="start_time"></el-table-column>
|
||||
<el-table-column label="结束时间" prop="end_time"></el-table-column>
|
||||
<el-table-column label="业务部门">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.dept_ter_">{{scope.row.dept_ter_.name}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--危险作业-->
|
||||
<div class="screen-job" v-if="screenOperation">
|
||||
<div class="simple-title">
|
||||
<div>查看作业详情</div>
|
||||
<div>作业详情</div>
|
||||
<div class="simple-btn" @click="closeScreenOperation">关闭</div>
|
||||
</div>
|
||||
<div class="job-content">
|
||||
<div class="job-basic">
|
||||
<div class="job-item">
|
||||
<span class="job-item-name">作业证名称:</span>
|
||||
<span class="job-item-name">作业名称:</span>
|
||||
<span class="job-item-info">{{screenJobItem.name}}</span>
|
||||
</div>
|
||||
<div class="job-item">
|
||||
<span class="job-item-name">作业证编号:</span>
|
||||
<span class="job-item-name">作业编号:</span>
|
||||
<span class="job-item-info">{{screenJobItem.number}}</span>
|
||||
</div>
|
||||
<div class="job-item">
|
||||
|
@ -504,6 +525,17 @@
|
|||
<span class="job-item-name">业务部门:</span>
|
||||
<span class="job-item-info">{{screenJobItem.dept_bus_.name}}</span>
|
||||
</div>
|
||||
<div class="job-item">
|
||||
<span class="job-item-name">监控设备:</span>
|
||||
<el-tag
|
||||
v-for="item in screenJobItem.vchannels_"
|
||||
:key="item.id"
|
||||
@click="showVchannel(item)"
|
||||
style="margin-right: 10px;margin-left:0"
|
||||
>{{ item.name }}
|
||||
</el-tag>
|
||||
<!-- <span class="job-item-info">{{screenJobItem.vchannels_[0].name}}</span> -->
|
||||
</div>
|
||||
</div>
|
||||
<div class="simple-title">
|
||||
<div>作业票</div>
|
||||
|
@ -512,8 +544,9 @@
|
|||
<el-tag
|
||||
v-for="item in screenJobItem.cates_"
|
||||
:key="item.id"
|
||||
@click="showOpretion(item)"
|
||||
style="margin-right: 10px;margin-left:0"
|
||||
>{{ item.name }}
|
||||
>{{ item.cate_name }}
|
||||
</el-tag>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -622,6 +655,18 @@
|
|||
<audio id="audio" :src="audioSrc" autoplay @ended="audioFinished" preload>
|
||||
对不起,您的浏览器不支持HTML5音频播放。
|
||||
</audio>
|
||||
<el-dialog class="videoViewWrap" :title="channelName" v-model="limitedVisible" with="100%">
|
||||
<video-view id="videoView" v-if="limitedVisible" :channelCode="channelCode"></video-view>
|
||||
<template #footer>
|
||||
<el-button @click="viewClose">关闭</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<el-dialog class="videoViewWrap" :title="opreationName" v-model="limitedOpreation" with="100%">
|
||||
<opreation-view v-if="limitedOpreation" :ticketId="ticketId" :projectId="projectId" :cateType="cateType"></opreation-view>
|
||||
<template #footer>
|
||||
<el-button @click="viewClose">关闭</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -629,11 +674,20 @@
|
|||
import flvjs from "../../utils/flv.js";
|
||||
import { genTree } from "@/utils/verificate";
|
||||
import sysConfig from "@/config";
|
||||
import videoView from "./../am/videoView";
|
||||
import opreationView from "./oplDetail";
|
||||
export default {
|
||||
components: {
|
||||
videoView,
|
||||
opreationView
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
line1:null,
|
||||
music:null,
|
||||
ticketId:null,
|
||||
projectId:null,
|
||||
cateType:null,
|
||||
timerUser: null,
|
||||
timerTime: null,
|
||||
eventTimer:null,
|
||||
|
@ -662,6 +716,7 @@ export default {
|
|||
tracking: false,
|
||||
lineTracking:false,
|
||||
areaDetail: false,
|
||||
workDetail:false,
|
||||
screenJob: false,
|
||||
screenUser: false,
|
||||
screenRisk: false,
|
||||
|
@ -673,6 +728,8 @@ export default {
|
|||
warningDetail: false,
|
||||
filterCtrlFocus: true,
|
||||
screenOperation:false,
|
||||
limitedVisible:false,
|
||||
limitedOpreation:false,
|
||||
warningListTotal: 0,
|
||||
heightNum:0,
|
||||
warningData: {
|
||||
|
@ -773,7 +830,9 @@ export default {
|
|||
audioList:{},
|
||||
employeeScroll:0,
|
||||
searchKeyWord:'',
|
||||
ElLoading:null
|
||||
ElLoading:null,
|
||||
channelCode:'',
|
||||
channelName:'',
|
||||
}
|
||||
},
|
||||
// created() {
|
||||
|
@ -970,14 +1029,23 @@ export default {
|
|||
}
|
||||
} else if (type === 'Symbol(polygonmarker)') {
|
||||
//危险作业
|
||||
that.screenRisk = false;
|
||||
that.screenWarning = false;
|
||||
that.areaDetailId = item.properties.get("area");
|
||||
let areaWork = that.areaList.filter(area=>{
|
||||
return area.id==that.areaDetailId
|
||||
});
|
||||
debugger;
|
||||
console.log(item)
|
||||
let workId = item.properties.get("workId");
|
||||
if(workId){
|
||||
that.areaDetailId = item.properties.get("area");
|
||||
that.getAreaOperation();
|
||||
that.workDetail = true;
|
||||
}else{
|
||||
that.screenRisk = false;
|
||||
that.screenWarning = false;
|
||||
that.areaDetailId = item.properties.get("area");
|
||||
let areaWork = that.areaList.filter(area=>{
|
||||
return area.id==that.areaDetailId
|
||||
});
|
||||
that.areaRowClick(areaWork[0]);
|
||||
}
|
||||
|
||||
that.areaRowClick(areaWork[0]);
|
||||
}
|
||||
} else {
|
||||
}
|
||||
|
@ -1390,9 +1458,14 @@ export default {
|
|||
areaOperationRowClick(row){
|
||||
let that = this;
|
||||
debugger;
|
||||
console.log(row)
|
||||
console.log(row);
|
||||
that.screenJobItem = row;
|
||||
that.screenOperation = true;
|
||||
that.$API.opm.opl.list.req({ operation: row.id}).then((res) => {
|
||||
debugger;
|
||||
console.log(res)
|
||||
that.screenJobItem.cates_ = res.results;
|
||||
that.screenOperation = true;
|
||||
});
|
||||
},
|
||||
closeScreenOperation(){
|
||||
this.screenOperation = false;
|
||||
|
@ -1500,12 +1573,13 @@ export default {
|
|||
//获取危险作业
|
||||
getDangers() {
|
||||
let that = this;
|
||||
// that.$API.opm.operation.list.req({state:40}).then(res => {
|
||||
that.$API.opm.operation.list.req({state:10}).then(res => {
|
||||
that.$API.opm.operation.list.req({state:40}).then(res => {
|
||||
// that.$API.opm.operation.list.req({state:10}).then(res => {
|
||||
if (res.err_msg) {
|
||||
|
||||
} else {
|
||||
that.dangerList = res.results;
|
||||
debugger;
|
||||
that.showPolygonMarkers(that.dangerList);
|
||||
}
|
||||
})
|
||||
|
@ -1897,6 +1971,7 @@ export default {
|
|||
showPolygonMarkers(data) {
|
||||
let that = this;
|
||||
if(data.length>0){
|
||||
debugger;
|
||||
data.forEach(item => {
|
||||
let polygonMarker = null;
|
||||
let areaWork = that.areaList.filter(area=>{
|
||||
|
@ -1910,15 +1985,16 @@ export default {
|
|||
return obj
|
||||
});
|
||||
polygonMarker = new jsmap.JSPolygonMarker({
|
||||
id: item.id,//id
|
||||
id: item.id+'work',//id
|
||||
position: pointsList,//坐标集合
|
||||
floorId: 1,//楼层id
|
||||
color: 'rgba(0,0,255,.44)',//填充颜色
|
||||
color: 'rgba(241,193,105,.44)',//填充颜色
|
||||
strokeColor: '#2bff1d',//边线颜色
|
||||
depthTest: false,//是否开启深度检测
|
||||
allowPicking: true, //是否允许点击
|
||||
displayCondition: new jsmap.JSDisplayCondition(0.0, 1000), //可见范围
|
||||
properties: {
|
||||
workId:item.id,
|
||||
area: item.area
|
||||
},//属性设置
|
||||
callback: (marker) => {
|
||||
|
@ -2292,6 +2368,37 @@ export default {
|
|||
this.speakerPlayStatus = true;
|
||||
this.music.play();//播放
|
||||
},
|
||||
//关闭作业列表
|
||||
workDetailClose(){
|
||||
this.workDetail = false;
|
||||
},
|
||||
//查看监控
|
||||
showVchannel(item){
|
||||
let that = this;
|
||||
debugger;
|
||||
console.log(item)
|
||||
that.channelCode = item.code;
|
||||
that.channelName = item.name;
|
||||
that.limitedVisible = true;
|
||||
},
|
||||
viewClose(){
|
||||
this.limitedVisible = false;
|
||||
},
|
||||
showOpretion(item){
|
||||
let that = this;
|
||||
that.ticketId = item.ticket;
|
||||
// that.projectId = item.operation;
|
||||
that.cateType = item.cate_.code;
|
||||
if (that.cateType === "visit") {
|
||||
that.projectId = item.ticket_.ticket_data.visit;
|
||||
} else if (that.cateType === "rpj") {
|
||||
that.projectId = item.ticket_.ticket_data.rpj;
|
||||
} else {
|
||||
that.cateType = "opl";
|
||||
that.projectId = item.ticket_.ticket_data.opl;
|
||||
}
|
||||
that.limitedOpreation = true;
|
||||
},
|
||||
},
|
||||
beforeRouteLeave(to, from, next){
|
||||
next();
|
||||
|
|
|
@ -0,0 +1,295 @@
|
|||
<template>
|
||||
<el-container>
|
||||
<el-main v-loading="mainLoading">
|
||||
<!-- <el-card header="流程" style="position:relative">
|
||||
<work-step v-if="ticketDetail.state" ref="workStep" :ticket="ticketDetail"></work-step>
|
||||
</el-card> -->
|
||||
<!-- <el-card style="margin-top: 4px">
|
||||
<el-descriptions title="工单信息" :column="3">
|
||||
<el-descriptions-item label="工单流水号:">
|
||||
{{ticketDetail.sn }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="所属流程:">
|
||||
<span v-if="ticketDetail.workflow">{{ticketDetail.workflow_.name }}</span>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="创建时间:">
|
||||
{{ticketDetail.create_time }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="工单标题:" :span="3">
|
||||
{{ticketDetail.title }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-card> -->
|
||||
<el-card style="margin-top: 4px" shadow="never" v-if="cateType==='visit'">
|
||||
<el-descriptions title="来访信息" :column="3">
|
||||
<el-descriptions-item label="来访概述:">
|
||||
{{visitDetail.name }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="来访级别:">
|
||||
{{levelOptions[visitDetail.level] }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="来访事由:">
|
||||
{{purpose_[visitDetail.purpose] }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="来访人数:">
|
||||
<el-tag size="small">{{ visitDetail.count_people }}人</el-tag>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="来访人员:">
|
||||
<el-tag v-for="item in visitDetail.visitors_" :key='item.id' size="small">
|
||||
{{ item.visitor_.name }}
|
||||
</el-tag>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="状态:">
|
||||
{{state_[visitDetail.state] }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="来访时间:">
|
||||
{{visitDetail.visit_time }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="离访时间:">
|
||||
{{visitDetail.leave_time }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="接待人:" v-if="visitDetail.receptionist_">
|
||||
{{ visitDetail.receptionist_.name }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<div style="text-align: center">
|
||||
<el-link type="primary" @click="showMoreVisit"> 更多信息</el-link>
|
||||
</div>
|
||||
<visit-dialog v-if="visitShow" ref="visitDialog"></visit-dialog>
|
||||
</el-card>
|
||||
<el-card style="margin-top: 4px" shadow="never" v-if="cateType==='rpj'">
|
||||
<el-descriptions title="入厂项目" :column="3">
|
||||
<el-descriptions-item label="相关方:">
|
||||
{{rpjDetail.rparty_name}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="入厂项目:">
|
||||
{{rpjDetail.name }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="项目类型:">
|
||||
<el-tag size="small">{{rpjType_[rpjDetail.type]}}</el-tag>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="合同编号:">
|
||||
{{rpjDetail.contract_number }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="状态:">
|
||||
{{state_[rpjDetail.state] }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="进厂时间:">
|
||||
{{rpjDetail.come_time }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="离厂时间:">
|
||||
{{rpjDetail.leave_time }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="所属部门:">
|
||||
{{rpjDetail.belong_dept_name }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<div style="text-align: center">
|
||||
<el-link type="primary" @click="showMore"> 更多信息</el-link>
|
||||
</div>
|
||||
<show-dialog v-if="rpjShow" ref="showDialog"></show-dialog>
|
||||
</el-card>
|
||||
<el-card style="margin-top: 4px" shadow="never" v-if="cateType==='opl'">
|
||||
<el-descriptions title="作业票详情" :column="3">
|
||||
<el-descriptions-item label="所属作业:">
|
||||
<span v-if="oplDetail.operation">{{oplDetail.operation_.name }}</span>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="许可证类型:">
|
||||
{{oplDetail.cate_name }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="作业区域:">
|
||||
<span v-if="oplDetail.operation">{{oplDetail.operation_.area_.name}}</span>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="作业状态:">
|
||||
<span v-if="oplDetail.operation">{{state2_[oplDetail.operation_.state]}}</span>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="生产状态:">
|
||||
<span v-if="oplDetail.operation">{{oplDetail.operation_.state_work }}</span>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="开始时间:">
|
||||
{{oplDetail.start_time }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="结束时间:">
|
||||
{{oplDetail.end_time }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<!-- <div style="text-align: center">
|
||||
<el-link type="primary" @click="showMoreInfo"> 作业许可证详情</el-link>
|
||||
</div> -->
|
||||
<show-dialog v-if="rpjShow" ref="showDialog"></show-dialog>
|
||||
</el-card>
|
||||
<el-card shadow="never" style="margin-top: 4px" header="处理日志">
|
||||
<work-details ref="workDetails" :ticket="ticketId"></work-details>
|
||||
</el-card>
|
||||
</el-main>
|
||||
</el-container>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import workDetails from "./../wf/details.vue";
|
||||
import workStep from "./../wf/steps.vue";
|
||||
export default {
|
||||
components: {
|
||||
workDetails,
|
||||
workStep,
|
||||
},
|
||||
name: "ticketdetail",
|
||||
props: {
|
||||
//工单id
|
||||
ticketId: {
|
||||
type: String,
|
||||
},
|
||||
//对应项目的id
|
||||
projectId: {
|
||||
type: String,
|
||||
},
|
||||
cateType: {
|
||||
type: String,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
mainLoading: false,
|
||||
userName: "",
|
||||
rpjDetail: {},
|
||||
oplDetail: {},
|
||||
ticketDetail: {},
|
||||
visitDetail: {},
|
||||
employeeLists: [],
|
||||
operationBtn: [],
|
||||
rpjShow: false,
|
||||
visitShow: false,
|
||||
limitedUserSelect: false,
|
||||
purpose_: {
|
||||
10: "参观",
|
||||
20: "拜访",
|
||||
30: "面试",
|
||||
40: "开会"
|
||||
},
|
||||
rpjType_: {
|
||||
10: "建筑施工",
|
||||
20: "设备设施检维修",
|
||||
30: "保安保洁服务",
|
||||
40: "其他",
|
||||
},
|
||||
state_: {
|
||||
10: "创建中",
|
||||
20: "审批中",
|
||||
30: "待入厂",
|
||||
40: "进行中",
|
||||
50: "已完成",
|
||||
60: "已关闭"
|
||||
},
|
||||
state2_: {
|
||||
10: "创建中",
|
||||
20: "审批中",
|
||||
30: "待作业",
|
||||
40: "作业中",
|
||||
50: "已结束",
|
||||
},
|
||||
levelOptions: {
|
||||
10: "一般",
|
||||
20: "重要"
|
||||
},
|
||||
noteOption: [
|
||||
{id: 10, name: '作业正常结束'},
|
||||
{id: 20, name: '因计划改变停止作业'},
|
||||
{id: 30, name: '因发生异常终止作业'},
|
||||
{id: 40, name: '其他'},
|
||||
],
|
||||
dosOption: [],
|
||||
submitLoading: false,
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
debugger;
|
||||
console.log(this.ticketId);
|
||||
console.log(this.projectId);
|
||||
console.log(this.cateType);
|
||||
if (this.cateType === 'visit') {
|
||||
this.getVisit();
|
||||
} else if (this.cateType === 'rpj') {
|
||||
this.getRpj();
|
||||
} else {
|
||||
this.getOpl();
|
||||
}
|
||||
this.getticketItem(this.ticketId);
|
||||
// this.getBtns();
|
||||
},
|
||||
methods: {
|
||||
//关闭工作
|
||||
getCloseDos() {
|
||||
this.$API.system.dict.list
|
||||
.req({page: 0, type__code: "close_options"})
|
||||
.then((res) => {
|
||||
let dosOption = res.filter(item => {
|
||||
return item.is_used
|
||||
});
|
||||
this.dosOption = dosOption.slice(0, 3)
|
||||
});
|
||||
},
|
||||
showMore() {
|
||||
this.rpjShow = true;
|
||||
this.$nextTick(() => {
|
||||
this.$refs.showDialog.open().setData({id: this.projectId});
|
||||
})
|
||||
},
|
||||
showMoreVisit() {
|
||||
this.visitShow = true;
|
||||
this.$nextTick(() => {
|
||||
this.$refs.visitDialog.open('show').setData({id: this.projectId});
|
||||
})
|
||||
},
|
||||
//工单详情
|
||||
getticketItem(ticketId) {
|
||||
this.mainLoading = true;
|
||||
let that = this;
|
||||
this.$API.wf.ticket.ticketItem.req(ticketId).then((res) => {
|
||||
that.mainLoading = false;
|
||||
debugger;
|
||||
that.ticketDetail = res;
|
||||
if(that.ticketDetail.state_.key == 'opl_close'){
|
||||
// 如果是作业关闭,展示需要提交的表单
|
||||
that.getCloseDos()
|
||||
}
|
||||
}).catch(e=>{that.mainLoading = false});
|
||||
},
|
||||
// //获取应有的流转
|
||||
// getBtns() {
|
||||
// this.$API.wf.ticket.ticketTransitions.req(this.ticketId).then(res => {
|
||||
// this.operationBtn = res;
|
||||
// })
|
||||
// },
|
||||
|
||||
//访客详情
|
||||
getVisit() {
|
||||
this.$API.vm.visit.read.req(this.projectId).then((res) => {
|
||||
this.visitDetail = res;
|
||||
});
|
||||
},
|
||||
|
||||
//入厂项目详情
|
||||
getRpj() {
|
||||
this.$API.rpm.rpj.item.req(this.projectId).then((res) => {
|
||||
debugger;
|
||||
this.rpjDetail = res;
|
||||
});
|
||||
},
|
||||
//许可证详情
|
||||
getOpl() {
|
||||
this.$API.opm.opl.read.req(this.projectId).then((res) => {
|
||||
debugger;
|
||||
this.oplDetail = res;
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.ticketRetry {
|
||||
right: 20px;
|
||||
top: 30px;
|
||||
position: absolute;
|
||||
}
|
||||
</style>
|
|
@ -27,7 +27,7 @@ export default {
|
|||
};
|
||||
},
|
||||
mounted() {
|
||||
this.workId = this.$route.query.id;
|
||||
this.workId = this.ticket?this.ticket:this.$route.query.id;
|
||||
this.getFlowSteps();
|
||||
},
|
||||
methods: {
|
||||
|
|
Loading…
Reference in New Issue