|
|
@@ -1,35 +1,34 @@
|
|
|
<template>
|
|
|
<div>
|
|
|
- <el-row style="box-shadow: 2px 2px 15px rgba(213, 224, 227, 0.6)">
|
|
|
- <el-card class="box-card">
|
|
|
- <div slot="header" class="clearfix">
|
|
|
- <span style="font-weight: bolder">作业状态</span>
|
|
|
- </div>
|
|
|
- <el-table
|
|
|
- :data="jobTicket"
|
|
|
- :header-cell-style="{ 'text-align': 'center' }"
|
|
|
- :cell-style="{ 'text-align': 'center' }"
|
|
|
- >
|
|
|
- <el-table-column label="作业编号" prop="ticketCode">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="作业名称" prop="ticketCode">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="状态" align="center" prop="ticketStatus">
|
|
|
- <template slot-scope="scope">
|
|
|
- <dict-tag
|
|
|
- :options="dict.type.ticket_status"
|
|
|
- :value="scope.row.ticketStatus"
|
|
|
- />
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="上锁钥匙" prop="lockKeyName">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="解锁钥匙" prop="colockKeyName">
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
- </el-card>
|
|
|
- </el-row>
|
|
|
- <el-row style="margin-top: 10px; height: 620px; overflow-y: auto">
|
|
|
+ <el-card class="box-card">
|
|
|
+ <div slot="header" class="clearfix">
|
|
|
+ <span style="font-weight: bolder">作业状态</span>
|
|
|
+ </div>
|
|
|
+ <el-table
|
|
|
+ :data="jobTicket"
|
|
|
+ :header-cell-style="{ 'text-align': 'center' }"
|
|
|
+ :cell-style="{ 'text-align': 'center' }"
|
|
|
+ >
|
|
|
+ <el-table-column label="作业编号" prop="ticketCode">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="作业名称" prop="ticketCode">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="状态" align="center" prop="ticketStatus">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <dict-tag
|
|
|
+ :options="dict.type.ticket_status"
|
|
|
+ :value="scope.row.ticketStatus"
|
|
|
+ />
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="上锁钥匙" prop="lockKeyName">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="解锁钥匙" prop="colockKeyName">
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </el-card>
|
|
|
+
|
|
|
+ <div style="margin-top: 10px; height: 620px; overflow-y: auto">
|
|
|
<el-col :span="6" style="height: 1000px">
|
|
|
<el-card class="box-card1">
|
|
|
<div slot="header" class="clearfix">
|
|
|
@@ -158,25 +157,29 @@
|
|
|
</el-table>
|
|
|
</el-card>
|
|
|
</el-col>
|
|
|
- </el-row>
|
|
|
+ </div>
|
|
|
<div class="message-list">
|
|
|
- <h1>kakkak</h1>
|
|
|
+ <div class="message_title">作业执行-操作日志</div>
|
|
|
+ <el-timeline style="padding-top: 15px">
|
|
|
+ <el-timeline-item v-for="(v,i) in items" :timestamp="v.date" :key="i" placement="top" color="#0bbd87">
|
|
|
+ <el-card style="width: 450px">
|
|
|
+ <h4>{{ v.index }}</h4>
|
|
|
+ <p>{{ v.content }}</p>
|
|
|
+ </el-card>
|
|
|
+ </el-timeline-item>
|
|
|
+ </el-timeline>
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
import { getJobPlayTicketInfo } from '@/api/mes/jobplay/jobplay'
|
|
|
-import { connectWebsocket, closeWebsocket, sendMsg } from "@/utils/websocket";
|
|
|
-import timeline from '@/components/TimeLine/timeline.vue'
|
|
|
-import card from "@/components/TimeLine/card.vue"
|
|
|
+import { connectWebsocket, closeWebsocket, sendMsg } from '@/utils/websocket'
|
|
|
+
|
|
|
export default {
|
|
|
name: 'jobPlayDetail',
|
|
|
dicts: ['ticket_type', 'ticket_status'],
|
|
|
- components: {
|
|
|
- timeline,
|
|
|
- card
|
|
|
- },
|
|
|
+
|
|
|
data() {
|
|
|
return {
|
|
|
jobTicket: [],
|
|
|
@@ -185,12 +188,32 @@ export default {
|
|
|
ticketPointsList: [],
|
|
|
ticketId: null,
|
|
|
intervalId: null,
|
|
|
- uni_data:[],
|
|
|
- isFetching: false, // 标志位,控制接口请求是否已经执行过
|
|
|
+ items: [
|
|
|
+ {
|
|
|
+ index: '2020-8-14 13:20:30',
|
|
|
+ content: '开始毕设。。',
|
|
|
+ date: '2018/5/4'
|
|
|
+ },
|
|
|
+ { index: '2020-8-15 13:20:30', content: '写前端。。', date: '2018/5/5' },
|
|
|
+ {
|
|
|
+ index: '2020-8-16 13:20:30',
|
|
|
+ content: '还在写前端。。',
|
|
|
+ date: '2018/5/6'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ index: '2020-8-17 13:20:30',
|
|
|
+ content: '仍在写前端。。',
|
|
|
+ date: '2018/5/7'
|
|
|
+ },
|
|
|
+ { index: '2020-8-18 13:20:30', content: '不想写前端。。', date: '2018/5/8' },
|
|
|
+ { index: '2020-8-19 13:20:30', content: '还得写前端。。。。。', date: '2018/5/9' }
|
|
|
+ ],
|
|
|
+
|
|
|
+ isFetching: false // 标志位,控制接口请求是否已经执行过
|
|
|
}
|
|
|
},
|
|
|
- watch:{
|
|
|
- "$route.query.ticketId": {
|
|
|
+ watch: {
|
|
|
+ '$route.query.ticketId': {
|
|
|
immediate: true,
|
|
|
handler(newValue, oldValue) {
|
|
|
this.getJobPlayInfo()
|
|
|
@@ -198,7 +221,7 @@ export default {
|
|
|
},
|
|
|
$route(to, from) {
|
|
|
if (to.path === '/mes/job/jobplay/jobPlayDetail') {
|
|
|
- this.initWebSocket();
|
|
|
+ this.initWebSocket()
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
@@ -232,57 +255,57 @@ export default {
|
|
|
this.ticketPointsList = res.data.ticketPointsList
|
|
|
})
|
|
|
},
|
|
|
- initWebSocket(){
|
|
|
- const timestep= Date.now();
|
|
|
- connectWebsocket(`ws://192.168.1.127:9090/websocket/jobTicket/${timestep}`,{w:'S',},(res)=>{
|
|
|
- console.log(res,'websocket接收服务器的数据');
|
|
|
- const resMsg=res
|
|
|
- if(resMsg=='refresh'){
|
|
|
- this.handleRefresh();
|
|
|
- }
|
|
|
- },
|
|
|
- (err)=>{
|
|
|
- console.log('断开重连',);
|
|
|
+ initWebSocket() {
|
|
|
+ const timestep = Date.now()
|
|
|
+ connectWebsocket(`ws://192.168.1.127:9090/websocket/jobTicket/${timestep}`, { w: 'S' }, (res) => {
|
|
|
+ console.log(res, 'websocket接收服务器的数据')
|
|
|
+ const resMsg = res
|
|
|
+ if (resMsg == 'refresh') {
|
|
|
+ this.handleRefresh()
|
|
|
+ }
|
|
|
+ },
|
|
|
+ (err) => {
|
|
|
+ console.log('断开重连')
|
|
|
})
|
|
|
},
|
|
|
handleRefresh() {
|
|
|
if (this.isFetching) {
|
|
|
- console.log('接口请求正在进行中,忽略本次 refresh 消息');
|
|
|
- return;
|
|
|
+ console.log('接口请求正在进行中,忽略本次 refresh 消息')
|
|
|
+ return
|
|
|
}
|
|
|
|
|
|
- this.isFetching = true; // 设置标志位为 true,表示接口请求正在进行中
|
|
|
+ this.isFetching = true // 设置标志位为 true,表示接口请求正在进行中
|
|
|
|
|
|
- let ticketId;
|
|
|
+ let ticketId
|
|
|
if (this.$route.query.ticketId) {
|
|
|
- ticketId = this.$route.query.ticketId;
|
|
|
+ ticketId = this.$route.query.ticketId
|
|
|
} else {
|
|
|
- ticketId = localStorage.getItem('ticketId');
|
|
|
+ ticketId = localStorage.getItem('ticketId')
|
|
|
}
|
|
|
|
|
|
getJobPlayTicketInfo(ticketId).then((res) => {
|
|
|
- console.log(res, '作业执行详细信息');
|
|
|
+ console.log(res, '作业执行详细信息')
|
|
|
this.jobTicket = [res.data.jobTicket].map((item) => ({
|
|
|
...item,
|
|
|
lockKeyName: res.data.lockKeyName,
|
|
|
colockKeyName: res.data.colockKeyName
|
|
|
- }));
|
|
|
- this.lockUserList = res.data.lockUserList;
|
|
|
- this.colockUserList = res.data.colockUserList;
|
|
|
- this.ticketPointsList = res.data.ticketPointsList;
|
|
|
+ }))
|
|
|
+ this.lockUserList = res.data.lockUserList
|
|
|
+ this.colockUserList = res.data.colockUserList
|
|
|
+ this.ticketPointsList = res.data.ticketPointsList
|
|
|
}).catch((error) => {
|
|
|
- console.error('获取作业执行详细信息失败', error);
|
|
|
+ console.error('获取作业执行详细信息失败', error)
|
|
|
}).finally(() => {
|
|
|
- this.isFetching = false; // 重置标志位为 false,允许下次 refresh 消息执行接口请求
|
|
|
- });
|
|
|
+ this.isFetching = false // 重置标志位为 false,允许下次 refresh 消息执行接口请求
|
|
|
+ })
|
|
|
},
|
|
|
- destory(){
|
|
|
- closeWebsocket();//断开链接
|
|
|
+ destory() {
|
|
|
+ closeWebsocket()//断开链接
|
|
|
},
|
|
|
// 发消息
|
|
|
- sendMsg(){
|
|
|
- sendMsg('aaa');
|
|
|
- },
|
|
|
+ sendMsg() {
|
|
|
+ sendMsg('aaa')
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
}
|
|
|
@@ -290,13 +313,31 @@ export default {
|
|
|
|
|
|
|
|
|
<style scoped lang="scss">
|
|
|
-.message-list{
|
|
|
- height: 500px;
|
|
|
- width: 500px;
|
|
|
- background: pink;
|
|
|
- position: relative;
|
|
|
- right: 0;
|
|
|
+.message-list {
|
|
|
+ height: 820px;
|
|
|
+ width: 570px;
|
|
|
+ background: white;
|
|
|
+ box-shadow: 2px 2px 5px 8px rgba(246, 246, 246, 0.6);
|
|
|
+ position: absolute;
|
|
|
+ right: 50px;
|
|
|
+ top: 0;
|
|
|
+ overflow: auto;
|
|
|
}
|
|
|
+
|
|
|
+.message_title {
|
|
|
+ position: sticky;
|
|
|
+ top: 0;
|
|
|
+ z-index: 999;
|
|
|
+ height: 40px;
|
|
|
+ text-align: center;
|
|
|
+ line-height: 40px;
|
|
|
+ display: block;
|
|
|
+ background: white;
|
|
|
+ font-size: 18px;
|
|
|
+ font-weight: bolder;
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
.text {
|
|
|
font-size: 14px;
|
|
|
}
|
|
|
@@ -316,7 +357,7 @@ export default {
|
|
|
}
|
|
|
|
|
|
.box-card {
|
|
|
- width: 1210px;
|
|
|
+ width: 1010px;
|
|
|
margin: 15px;
|
|
|
}
|
|
|
|
|
|
@@ -332,7 +373,7 @@ export default {
|
|
|
}
|
|
|
|
|
|
.box-card2 {
|
|
|
- width: 780px;
|
|
|
+ width: 580px;
|
|
|
margin: 15px;
|
|
|
}
|
|
|
|