You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

259 lines
6.3 KiB
Plaintext

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div id="timeTable">
<template>
<el-table
:data="tableData"
style="width: 100%;"
>
<el-table-column
fixed
prop="idx"
label="序号"
width="60">
</el-table-column>
<el-table-column
prop="NodeName"
label="执行环节"
width="120">
</el-table-column>
<el-table-column
prop="Province"
label="办理情况"
width="120">
</el-table-column>
<el-table-column
prop="ActionType"
label="状态"
width="120">
</el-table-column>
<el-table-column
prop="EmpName"
label="执行人"
width="100">
</el-table-column>
<el-table-column
prop="StartTime"
label="开始时间"
width="140">
</el-table-column>
<el-table-column
prop="EndTime"
label="结束时间"
width="140">
</el-table-column>
<el-table-column
prop="PassTime"
label="历时"
width="120">
</el-table-column>
</el-table>
</template>
</div>
</template>
<script>
import $ from 'jquery';
import {ActionType} from "../api/CommEnum.js";
export default {
name: "timeTable",
data() {
return {
data:[],
params:{},
tableData:[],
};
},
beforeCreate() {},
created() {},
mounted() {
this.$Bus.$on("track", () => {
});
console.log("进入时间轴");
this.params = this.$route.query;
var handler = new this.HttpHandler("BP.WF.HttpHandler.WF_WorkOpt_OneWork");
handler.AddJson(this.params);
var data = handler.DoMethodReturnString("TimeBase_Init");
this.data=JSON.parse(data);
this.CreateTimeTable();
},
methods: {
CreateTimeTable(){
var tracks = this.data["Track"];//轨迹信息
var fwc = this.data["FrmWorkCheck"][0];//审核组件信息
var gwls = this.data["WF_GenerWorkerList"];//获得工作人员列表.
var idx=1;
for(var i=0;i<tracks.length;i++){
var track = tracks[i];
if (track.ActionType == ActionType.FlowBBS)
continue;
if (track.ActionType == ActionType.WorkCheck)
continue;
if (fwc.FWCMsgShow == "1" && track.NDFrom == this.params.FK_Node && this.params.UserNo != track.EmpTo)
continue;
var at = track.ActionType;
if (at == ActionType.Forward || at == ActionType.FlowOver || at == ActionType.TeampUp) {
//找到该节点该人员的审核track, 如果没有就输出Msg, 可能是焦点字段。
if (fwc.FWCVer == 0) {
for (var myIdx = 0; myIdx < tracks.length; myIdx++) {
var checkTrack = tracks[myIdx];
if (checkTrack.NDFrom == track.NDFrom && checkTrack.ActionType == ActionType.WorkCheck && checkTrack.EmpFrom == track.EmpFrom) {
track.Msg = checkTrack.Msg;
break;
}
}
}
track.Msg = track.Msg.replace('null', '').replace("WorkCheck@","");
}
var msg = track.Msg;
msg = track.Msg.replace('null', '').replace("WorkCheck@","");
if (msg == "0")
msg = "";
if (msg != "") {
const reg = new RegExp('\t\n', "g");// eslint-disable-line
msg = msg.replace(reg, '');
msg = msg.replace('null', '');
if (msg == "" || msg == undefined)
msg = "无";
}
var startTime="";
var endTime="";
var passTime="";
//获取轨迹中上一个节点的时间
if(i==tracks.length-1){
startTime = track.RDT;
endTime = track.RDT;
} else {
//上一节点的到达时间就是本节点的开始时间
var track1 = tracks[i+1];
startTime = track.RDT;
endTime = track1.RDT;
}
//求得历时时间差
var sdt = startTime.replace(/\-/g, "/");// eslint-disable-line
sdt = new Date(Date.parse(sdt.replace(/-/g, "/")));
var edt = endTime.replace(/\-/g, "/");// eslint-disable-line
edt = new Date(Date.parse(edt.replace(/-/g, "/")));
passTime = this.GetSpanTime(sdt, edt);
if (passTime == '')
passTime = '0秒';
//存储track的信息
this.tableData.push({
idx:idx, //处理人编号
NodeName:track.NDFromT,//节点名称
Province:msg,//处理情况
ActionType:track.ActionTypeText, //工作内容
EmpName:track.EmpFromT,
StartTime:startTime,
EndTime:endTime,
PassTime:passTime
});
idx++;
}
//处理待办
if (gwls) {
var isHaveNoChecker = false;
$.each(gwls,function(i,gwl){
if(gwl.IsPass==0){
isHaveNoChecker=true;
return false;
}
});
//如果有尚未审核的人员,就输出.
if (isHaveNoChecker == true) {
var gwl;
for(var k=0;k<gwls.length;k++){
gwl = gwls[k];
if (gwl.IsPass == 1)
continue;
var state="尚未阅读";
if (gwl.IsRead == "1")
state="已阅读";
//存储track的信息
this.tableData.push({
idx:idx, //处理人编号
NodeName:gwl.FK_NodeText,//节点名称
Province:state,//处理情况
ActionType:"等待审批", //工作内容
EmpName:gwl.FK_EmpText,
StartTime:gwl.RDT,
EndTime:"-",
PassTime:"-"
});
idx++;
}
}
}
},
GetSpanTime:function(date1,date2){
//计算date2-date1的时间差返回使用“x天x小时x分x秒”形式的字符串表示</summary>
var date3 = date2.getTime() - date1.getTime(); //时间差秒
if (date1.getTime() > date2.getTime())
date3 = date1.getTime() - date2.getTime();
var str = '';
//计算出相差天数
var days = Math.floor(date3 / (24 * 3600 * 1000));
if (days > 0) {
str += days + '天';
}
//计算出小时数
var leave1 = date3 % (24 * 3600 * 1000); //计算天数后剩余的毫秒数
var hours = Math.floor(leave1 / (3600 * 1000));
if (hours > 0) {
str += hours + '小时';
}
//计算相差分钟数
var leave2 = leave1 % (3600 * 1000); //计算小时数后剩余的毫秒数
var minutes = Math.floor(leave2 / (60 * 1000));
if (minutes > 0) {
str += minutes + '分';
}
var leave3 = leave2 % (60 * 1000);
var seconds = Math.floor(leave3 / 1000);
if (seconds > 0)
str += seconds + '秒';
if (date1.getTime() > date2.getTime())
return "-" + str;
return str;
}
},
//监听
computed: {},
components: {},
//监听后执行动作
watch: {}
};
</script>
<style lang="less" scoped>
/deep/ .el-card__body {
p {
line-height: 1;
}
}
.portrait {
width: 50px;
height: 50px;
border-radius: 50%;
}
</style>