IDCDatasync-vue/src/views/data/dataManage.vue

239 lines
6.9 KiB
Vue
Raw Normal View History

2025-02-28 16:06:28 +08:00
<template>
2025-03-07 15:44:35 +08:00
<a-row :gutter="30">
<a-col :md="12" :sm="1" >
<!-- 查询区域 -->
<div class="table-page-search-wrapper">
<a-select placeholder="选择数据类型" option-filter-prop="children" @change="getTables" style="width: 40%;">
2025-03-07 15:44:35 +08:00
<a-select-option v-for="d in dataTypedataSources" :key="d.id">
{{ d.cnName }}
</a-select-option>
</a-select>
</div>
<!-- table区域-begin -->
<div style="height:900px;overflow-y:auto;">
<a-table
ref="table"
size="middle"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource">
<!-- :locale="myLocale"-->
2025-02-28 16:06:28 +08:00
2025-03-07 15:44:35 +08:00
<!-- 字符串超长截取省略号显示-->
</a-table>
</div>
</a-col>
<a-col :md="12" :sm="2" >
<a-card :bordered="false">
<!-- 查询区域 -->
<div class="table-page-search-wrapper">
<a-form layout="inline">
<a-row :gutter="30">
<a-col :md="6" :sm="10" >
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-button @click="dataAdd" type="primary" v-has="'cont:btn'" icon="plus">发布到专题库</a-button>
2025-03-07 15:44:35 +08:00
</span>
</a-col>
</a-row>
</a-form>
<a-progress :percent="percent" status="active" />
</div>
<!-- table区域-begin -->
<div style="height:900px;overflow-y:auto;">
<a-list bordered :data-source="contentList">
<a-list-item slot="renderItem" slot-scope="item, index">
{{ item }}
</a-list-item>
</a-list>
</div>
</a-card>
</a-col>
</a-row>
2025-02-28 16:06:28 +08:00
</template>
<script>
2025-02-28 16:46:55 +08:00
import store from '@/store/'
2025-02-28 16:06:28 +08:00
import {getAction} from '@/api/manage'
2025-03-07 15:44:35 +08:00
import {
dataTypePageList,
dataTypeDeleteById } from '@/api/dataType'
2025-02-28 16:06:28 +08:00
export default {
name: "dataManage",
components: {
},
data () {
return {
2025-03-07 15:44:35 +08:00
description: '标准库',
2025-02-28 16:39:13 +08:00
contentList:[],
percent:0,
websock:{},
2025-03-07 15:44:35 +08:00
queryParam: {
2025-03-08 13:51:02 +08:00
pageNum :1,
pageSize:20
2025-03-07 15:44:35 +08:00
},
dataTypedataSources: [],
dataSource:[
{
tableName:"LA_DATA_TABLE_0001",
data1:"舰艇综合导航信息II",
data2:"2024-03-06 10:30:26",
data3:"2024-03-06 15:30:26",
data4:"侦察预警、指挥控制",
},
{
tableName:"LA_DATA_TABLE_0002",
data1:"动力报文",
data2:"2024-03-06 10:30:26",
data3:"2024-03-06 15:30:26",
data4:"指挥控制",
},
{
tableName:"LA_DATA_TABLE_0003",
data1:"电测试报文",
data2:"2024-03-06 10:30:26",
data3:"2024-03-06 15:30:26",
data4:"支援保障",
},
{
tableName:"LA_DATA_TABLE_0004",
data1:"损管测试报文",
data2:"2024-03-06 10:30:26",
data3:"2024-03-06 15:30:26",
data4:"支援保障",
},
{
tableName:"LA_DATA_TABLE_0005",
data1:"舰炮测试报文",
data2:"2024-03-06 10:30:26",
data3:"2024-03-06 15:30:26",
data4:"装备运行状态",
},
{
tableName:"LA_DATA_TABLE_0006",
data1:"反潜测试报文",
data2:"2024-03-06 10:30:26",
data3:"2024-03-06 15:30:26",
data4:"装备运行状态",
},
2025-03-07 15:44:35 +08:00
],
columns: [
{
title: '#',
dataIndex: '',
key:'id',
width:60,
align:"id",
customRender:function (t,r,index) {
return parseInt(index)+1;
}
},
{
title: '表名',
align:"center",
dataIndex: 'tableName',
},
{
title: '报文名',
align:"center",
dataIndex: 'data1'
2025-03-07 15:44:35 +08:00
},
{
title: '开始时间',
align:"center",
dataIndex: 'data2'
2025-03-07 15:44:35 +08:00
},
{
title: '最后更新时间',
align:"center",
dataIndex: 'data3'
2025-03-07 15:44:35 +08:00
},
{
title: '标签类型',
align:"center",
dataIndex: 'data4'
2025-03-07 15:44:35 +08:00
},
],
2025-02-28 16:06:28 +08:00
}
},
mounted() {
//初始化websocket
this.initWebSocket()
2025-03-07 15:44:35 +08:00
this.getselect()
2025-02-28 16:06:28 +08:00
},
computed: {
},
destroyed: function () { // 离开页面生命周期函数
var userId = store.getters.userInfo.id;
this.websock.send("close_"+userId);
this.websocketclose();
2025-02-28 16:06:28 +08:00
},
created () {
2025-02-28 16:39:13 +08:00
2025-02-28 16:06:28 +08:00
},
methods: {
initWebSocket: function () {
// WebSocket与普通的请求所用协议有所不同ws等同于httpwss等同于https
2025-02-28 16:46:55 +08:00
var userId = store.getters.userInfo.id;
var url = window._CONFIG['domianURL'].replace("https://","ws://").replace("http://","ws://")+"/websocket/"+userId+"/data_distribute";
2025-02-28 16:06:28 +08:00
this.websock = new WebSocket(url);
this.websock.onopen = this.websocketonopen;
this.websock.onerror = this.websocketonerror;
this.websock.onmessage = this.websocketonmessage;
this.websock.onclose = this.websocketclose;
},
websocketonopen: function () {
2025-03-01 17:03:57 +08:00
this.contentList.unshift("消息服务连接成功");
2025-02-28 16:06:28 +08:00
},
websocketonerror: function (e) {
2025-03-01 17:03:57 +08:00
this.contentList.unshift("消息服务连接失败"+JSON.stringify(e));
2025-02-28 16:06:28 +08:00
},
websocketonmessage: function (e) {
var data = eval("(" + e.data + ")");
2025-02-28 16:39:13 +08:00
console.log(data);
2025-02-28 16:06:28 +08:00
//处理订阅信息
2025-03-01 11:53:38 +08:00
if(data.content.length >0){
2025-03-01 17:03:57 +08:00
this.contentList.unshift(data.content);
2025-03-01 11:53:38 +08:00
}
if(data.currProgress != null){
2025-03-01 12:05:05 +08:00
this.percent = data.currProgress;
2025-03-01 11:53:38 +08:00
}
2025-02-28 16:06:28 +08:00
},
websocketclose: function (e) {
2025-02-28 16:46:55 +08:00
console.log("connection closed (" + e + ")");
2025-02-28 16:06:28 +08:00
},
dataAdd(){
getAction("/dataSpecial/special").then((res) => {
if (res.success) {
this.$message.success(res.message);
}
});
},
2025-03-07 15:44:35 +08:00
getselect(){
dataTypePageList(this.queryParam).then((res) => {
if (res.success) {
this.dataTypedataSources = res.result.rows||res.result;
} else {
this.$message.warning(res.message);
}
});
},
getTables(){
// datasyncgetTableInfo().then((res) => {
// if (res.result) {
// this.confirmLoading = false;
// this.dataSource = res.result;
// this.models = 2;
// } else {
// this.$message.warning(res.message);
// }
// });
2025-03-07 15:44:35 +08:00
},
2025-02-28 16:06:28 +08:00
}
}
</script>
<style scoped>
@import '~@assets/less/common.less';
</style>