初始化
This commit is contained in:
413
BLW_Log/Views/ApiLog/Index.cshtml
Normal file
413
BLW_Log/Views/ApiLog/Index.cshtml
Normal file
@@ -0,0 +1,413 @@
|
||||
@{
|
||||
Layout = null;
|
||||
}
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html style="overflow: auto;">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>BLW日志</title>
|
||||
<!-- Vue.js -->
|
||||
<script src="~/js/vue2.js"></script>
|
||||
<!-- 引入样式 -->
|
||||
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
|
||||
<!-- 引入组件库 -->
|
||||
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
|
||||
<!-- jQuery -->
|
||||
<script src="~/js/jquery.min.js"></script>
|
||||
|
||||
<!-- 引入第三方库 -->
|
||||
<script src="~/js/xlsx.mini.min.js"></script>
|
||||
|
||||
|
||||
<style>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.el-table__empty-block {
|
||||
height: auto !important;
|
||||
}
|
||||
|
||||
.el-dialog__footer {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.headbox {
|
||||
/*margin: 10px;*/
|
||||
}
|
||||
|
||||
.seachbox {
|
||||
margin: 10px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.bodybox {
|
||||
margin: 10px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.dialogbox .el-table .el-table__cell {
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.el-table .el-table__cell {
|
||||
padding: 6px 0;
|
||||
}
|
||||
|
||||
.iconClass {
|
||||
font-size: 20px; /* 加大图标大小 */
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.el-table-filter {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
/* 日志列css */
|
||||
.cell .logdata {
|
||||
/* white-space: nowrap; 不换行 */
|
||||
overflow: hidden; /* 超出部分隐藏 */
|
||||
text-overflow: ellipsis; /* 显示省略号 */
|
||||
cursor: pointer;
|
||||
font-size: 12px;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 3;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
/* 表格行颜色设置 */
|
||||
.el-table .up-row {
|
||||
background: #ECF5FF;
|
||||
}
|
||||
|
||||
.el-table .down-row {
|
||||
background: #FEF0F0;
|
||||
}
|
||||
|
||||
.el-table .error-row {
|
||||
background: #F78989;
|
||||
}
|
||||
|
||||
/* 折叠面板 */
|
||||
.collapse-title {
|
||||
font-weight: bold;
|
||||
letter-spacing: 0.5px;
|
||||
}
|
||||
|
||||
.data-details {
|
||||
margin: 10px 0;
|
||||
padding: 15px;
|
||||
background: #f8f9fa;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.el-collapse-item__header {
|
||||
line-height: 16px;
|
||||
}
|
||||
|
||||
.el-collapse-item__content div {
|
||||
margin: 0 !important;
|
||||
word-break: break-all !important;
|
||||
}
|
||||
|
||||
/* 日志列css */
|
||||
.cell .logdata {
|
||||
/* white-space: nowrap; 不换行 */
|
||||
overflow: hidden; /* 超出部分隐藏 */
|
||||
text-overflow: ellipsis; /* 显示省略号 */
|
||||
cursor: pointer;
|
||||
font-size: 12px;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 3;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
|
||||
.cards-container {
|
||||
display: flex; /* 使用flex布局 */
|
||||
flex-wrap: wrap; /* 允许换行 */
|
||||
margin-right: -5px; /* 用负边距抵消最后一行的右边距 */
|
||||
margin-bottom: -3px; /* 用负边距抵消最后一行的下边距 */
|
||||
}
|
||||
|
||||
.card-item {
|
||||
width: 468px; /* 卡片宽度固定为500px */
|
||||
margin-right: 5px; /* 卡片之间的左右间隔 */
|
||||
margin-bottom: 3px; /* 卡片之间的上下间隔 */
|
||||
}
|
||||
|
||||
/* 清除浮动,如果需要的话 */
|
||||
.clearfix::after {
|
||||
content: "";
|
||||
display: table;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.tables-container {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
/* .table {
|
||||
flex: 1 1 48%;
|
||||
margin-bottom: 20px;
|
||||
} */
|
||||
/* 原有.table样式修改 */
|
||||
.table {
|
||||
width: 100%;
|
||||
margin-bottom: 0; /* 用gap替代margin */
|
||||
}
|
||||
|
||||
/* 当屏幕宽度小于某个值时,让表格堆叠显示 */
|
||||
/* @@media (max-width: 800px) {
|
||||
.table {
|
||||
flex: 0 0 100%;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
/* 新增样式 */
|
||||
.tables-container {
|
||||
display: flex;
|
||||
gap: 20px; /* 左右列间距 */
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.left-column {
|
||||
flex: 1;
|
||||
min-width: 300px; /* 防止过度挤压 */
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 20px; /* 内部表格间距 */
|
||||
}
|
||||
|
||||
.right-column {
|
||||
flex: 1;
|
||||
min-width: 300px;
|
||||
}
|
||||
|
||||
|
||||
.tables-container .table {
|
||||
flex: none !important;
|
||||
width: 100% !important;
|
||||
}
|
||||
/* 响应式适配 */
|
||||
@@media (max-width: 800px) {
|
||||
.left-column, .right-column {
|
||||
flex: 0 0 100%; /* 强制占满宽度 */
|
||||
min-width: auto;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div id="app" v-show="isReady" v-cloak style="width:100%;height:100%;">
|
||||
<div style="align-content: center; text-align: center; font-size: 22px; margin: 10px;">
|
||||
<el-button type="primary" v-on:click="logHome" plain circle style="float: left" icon="el-icon-s-home"></el-button>
|
||||
API调用日志系统
|
||||
<span style="font-size:12px;color:gray"> --v1.3.0</span>
|
||||
</div>
|
||||
<!-- 顶部导航栏以及弹窗 -->
|
||||
<div class="headbox">
|
||||
<div class="seachbox">
|
||||
<span v-if="dialogw != '100%'">
|
||||
<el-date-picker v-model="pickerDate"
|
||||
type="datetimerange"
|
||||
align="right"
|
||||
unlink-panels
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:picker-options="pickerOptions"
|
||||
style="width: 388px;">
|
||||
</el-date-picker>
|
||||
</span>
|
||||
<span v-else>
|
||||
<span>
|
||||
<br />
|
||||
<span class="demonstration" style="margin: 0 26px 0 27px;font-size:13px;"> 开始日期 </span>
|
||||
<el-date-picker v-model="pickerDate[0]"
|
||||
type="datetime" style="width: 217px;"
|
||||
placeholder="开始日期">
|
||||
</el-date-picker>
|
||||
<br />
|
||||
<span class="demonstration" style="margin: 0 26px 0 27px;font-size:13px;"> 结束日期 </span>
|
||||
<el-date-picker v-model="pickerDate[1]"
|
||||
type="datetime" style="width: 217px;"
|
||||
placeholder="结束日期">
|
||||
</el-date-picker>
|
||||
</span>
|
||||
|
||||
<br />
|
||||
<span>
|
||||
<span style="margin: 0 0 0 16px;"></span>
|
||||
<el-button type="text" v-on:click="dateMobile(1)">1小时内</el-button>
|
||||
<el-button type="text" v-on:click="dateMobile(3)">3小时内</el-button>
|
||||
<el-button type="text" v-on:click="dateMobile(12)">12小时内</el-button>
|
||||
<el-button type="text" v-on:click="dateMobile(24)">24小时内</el-button>
|
||||
<el-button type="text" v-on:click="dateMobile(72)">72小时内</el-button>
|
||||
</span>
|
||||
<br />
|
||||
|
||||
</span>
|
||||
|
||||
<el-button type="info" class="el-icon-refresh" v-on:click="showSelectedLogs(1)" :disabled="multipleBtn"
|
||||
:size="40" circle plain></el-button>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!-- 主体内容 -->
|
||||
<div class="" style="height: 100%;">
|
||||
<div class="cards-container">
|
||||
<el-card v-for="(item, index) in logs"
|
||||
:key="index"
|
||||
class="card-item"
|
||||
v-on:click.native="cardOpenDialog(item)">
|
||||
<div slot="header" class="clearfix">
|
||||
<span>{{ item.methodName }}</span>
|
||||
</div>
|
||||
<div>
|
||||
时段总调用:{{ item.totalInvokeCount}} 次
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
</div>
|
||||
<el-dialog :width="dialogw" :visible.sync="elcarddialogVisible" title="调用详情">
|
||||
<div class="tables-container">
|
||||
<!-- 左列容器 -->
|
||||
<div class="left-column">
|
||||
<!-- 根据小时区分调用数据表格 -->
|
||||
<el-table :data="selectedTime" border class="table">
|
||||
<!-- 注意这里数据源改为hourlyInvokeData -->
|
||||
<el-table-column prop="hour" label="时间段" width="188"></el-table-column>
|
||||
<el-table-column prop="totalEveryHour_InvokeCount" label="调用数量" width="95"></el-table-column>
|
||||
</el-table>
|
||||
<!-- IP 调用数据表格 -->
|
||||
<el-table :data="selectedItem.ipInvokeData" border class="table">
|
||||
<el-table-column prop="ip" label="IP" width="188"></el-table-column>
|
||||
<el-table-column prop="totalIP_InvokeCount" label="调用数量" width="95"></el-table-column>
|
||||
<el-table-column label="操作" width="66">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="info" :size="40" v-on:click="viewIPRowData(scope.row)" icon="el-icon-search" circle plain></el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
|
||||
<!-- 右列容器 -->
|
||||
<div class="right-column">
|
||||
<!-- 酒店代码调用数据表格 -->
|
||||
<el-table :data="selectedItem.codeInvokeData" border class="table">
|
||||
<el-table-column prop="hotelNameAndCode" label="酒店" width="188"></el-table-column>
|
||||
<el-table-column prop="totalHotelCode_InvokeCount" label="调用数量" width="95"></el-table-column>
|
||||
<el-table-column label="操作" width="66">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="info" :size="40" v-on:click="viewCodeRowData(scope.row)" icon="el-icon-search" circle plain></el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
</el-dialog>
|
||||
@* <el-dialog :width="dialogw" :visible.sync="elcarddialogVisible" title="调用详情">
|
||||
<div class="tables-container">
|
||||
<!-- IP 调用数据表格 -->
|
||||
<el-table :data="selectedItem.ipInvokeData" border class="table">
|
||||
<el-table-column prop="ip" label="IP" width="188"></el-table-column>
|
||||
<el-table-column prop="totalIP_InvokeCount" label="调用数量" width="95"></el-table-column>
|
||||
<el-table-column label="操作" width="66">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="info" :size="40" v-on:click="viewIPRowData(scope.row)" icon="el-icon-search" circle plain></el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 根据小时区分调用数据表格 -->
|
||||
<el-table :data="selectedItem.codeInvokeData" border class="table">
|
||||
<el-table-column prop="timeInterval" label="时间段" width="188"></el-table-column>
|
||||
<el-table-column prop="totalHotelCode_InvokeCount" label="调用数量" width="95"></el-table-column>
|
||||
</el-table>
|
||||
<!-- 酒店代码调用数据表格 -->
|
||||
<el-table :data="selectedItem.codeInvokeData" border class="table">
|
||||
<el-table-column prop="hotelNameAndCode" label="酒店" width="188"></el-table-column>
|
||||
<el-table-column prop="totalHotelCode_InvokeCount" label="调用数量" width="95"></el-table-column>
|
||||
<el-table-column label="操作" width="66">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="info" :size="40" v-on:click="viewCodeRowData(scope.row)" icon="el-icon-search" circle plain></el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
</div>
|
||||
</el-dialog> *@
|
||||
|
||||
<el-dialog :width="dialogw" :visible.sync="openRowDialog">
|
||||
<template v-slot:title>
|
||||
<span>{{ selectedItem.methodName }} </span>
|
||||
<el-button type="success" class="el-icon-document" v-on:click="exportExcel"
|
||||
:size="40" circle plain></el-button>
|
||||
</template>
|
||||
<el-table :data="nowMethodValue" style="width: 100%" border ref="logsTable">
|
||||
<el-table-column prop="methodName" label="接口名称" width="120"></el-table-column>
|
||||
<el-table-column label="时间差" width="75">
|
||||
<template slot-scope="scope">
|
||||
{{ calculateTimeDifference(scope.row.invokStartTime, scope.row.invokEndTime) + 'ms' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="hotelNameAndCode" label="酒店" width="125"></el-table-column>
|
||||
<el-table-column prop="roomNumber" label="房间号" width="75"></el-table-column>
|
||||
<el-table-column label="开始时间" width="100">
|
||||
<template slot-scope="scope">
|
||||
<div style="color:#ADADAD; font-size: 13px">
|
||||
{{ scope.row.invokStartTime }}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="结束时间" width="100">
|
||||
<template slot-scope="scope">
|
||||
<div style="color:#ADADAD; font-size: 13px">
|
||||
{{ scope.row.invokEndTime }}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="参数" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-popover trigger="click"
|
||||
placement="right"
|
||||
width="250">
|
||||
<div style="font-size: 11px; ">
|
||||
{{ scope.row.parameters }}
|
||||
</div>
|
||||
<div class="logdata" title="" style="color:#ADADAD"
|
||||
slot="reference">
|
||||
{{ scope.row.parameters }}
|
||||
</div>
|
||||
</el-popover>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="remoteIp" label="IP" width="120"></el-table-column>
|
||||
|
||||
|
||||
</el-table>
|
||||
</el-dialog>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- JavaScript引入 -->
|
||||
<script src="~/js/LogJs/ApiLogIndex.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
275
BLW_Log/Views/EndPointMonitor/Index.cshtml
Normal file
275
BLW_Log/Views/EndPointMonitor/Index.cshtml
Normal file
@@ -0,0 +1,275 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>端点监控系统</title>
|
||||
<!-- 引入ElementUI样式 -->
|
||||
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
|
||||
<style>
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
font-family: 'Segoe UI', 'Microsoft YaHei', sans-serif;
|
||||
}
|
||||
|
||||
body {
|
||||
max-width: 1440px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
background-color: #f5f7fa;
|
||||
color: #333;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.app-container {
|
||||
background: white;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.page-title {
|
||||
color: #2c3e50;
|
||||
margin-bottom: 20px;
|
||||
padding-bottom: 15px;
|
||||
border-bottom: 1px solid #eaeaea;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.input-section {
|
||||
margin-bottom: 25px;
|
||||
padding: 20px;
|
||||
border: 1px solid #ebeef5;
|
||||
border-radius: 4px;
|
||||
background-color: #fafafa;
|
||||
}
|
||||
|
||||
.form-row {
|
||||
display: flex;
|
||||
margin-bottom: 15px;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.form-label {
|
||||
width: 100px;
|
||||
text-align: right;
|
||||
padding-right: 15px;
|
||||
font-weight: 500;
|
||||
color: #555;
|
||||
}
|
||||
|
||||
.empty-state {
|
||||
text-align: center;
|
||||
padding: 30px;
|
||||
color: #909399;
|
||||
}
|
||||
|
||||
.status-message {
|
||||
padding: 10px;
|
||||
border-radius: 4px;
|
||||
margin: 10px 0;
|
||||
}
|
||||
|
||||
.status-success {
|
||||
background-color: #f0f9eb;
|
||||
color: #67c23a;
|
||||
border: 1px solid #e1f3d8;
|
||||
}
|
||||
|
||||
.status-error {
|
||||
background-color: #fef0f0;
|
||||
color: #f56c6c;
|
||||
border: 1px solid #fde2e2;
|
||||
}
|
||||
|
||||
.table-container {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.operation-cell {
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app">
|
||||
<div class="app-container">
|
||||
<!-- 输入区域 -->
|
||||
<div class="input-section">
|
||||
<div class="form-row">
|
||||
<label class="form-label">IP地址:</label>
|
||||
<el-input v-model="form.ip" placeholder="例如:192.168.1.1" style="width: 300px;"></el-input>
|
||||
|
||||
<label class="form-label">端口:</label>
|
||||
<el-input v-model="form.port" placeholder="例如:8080" style="width: 300px;"></el-input>
|
||||
<el-button type="primary" @@click="addEndpoint" icon="el-icon-plus" style="margin-left: 20px;">添加监控地址</el-button>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- 状态消息 -->
|
||||
<div v-if="statusMessage" :class="['status-message', statusType === 'success' ? 'status-success' : 'status-error']">
|
||||
{{ statusMessage }}
|
||||
</div>
|
||||
|
||||
<el-button type="success" @@click="queryEndpoints" icon="el-icon-refresh">更新监控列表</el-button>
|
||||
</div>
|
||||
|
||||
<!-- 表格区域 -->
|
||||
<div class="table-container">
|
||||
<el-table :data="endpoints" style="width: 100%" empty-text="暂无监控端点,请添加端点或点击更新列表">
|
||||
<el-table-column prop="ipAddress" label="IP地址" width="200"></el-table-column>
|
||||
<el-table-column prop="port" label="端口" width="120"></el-table-column>
|
||||
<el-table-column prop="addDateTime" label="添加时间"></el-table-column>
|
||||
<el-table-column label="操作" width="100" class-name="operation-cell">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="danger" size="mini" @@click ="removeEndpoint(scope.row)" icon="el-icon-delete">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Vue.js -->
|
||||
<script src="~/js/vue2.js"></script>
|
||||
<!-- 引入组件库 -->
|
||||
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
|
||||
<!-- jQuery -->
|
||||
<script src="~/js/jquery.min.js"></script>
|
||||
<script>
|
||||
new Vue({
|
||||
el: '#app',
|
||||
data: {
|
||||
form: {
|
||||
ip: '',
|
||||
port: ''
|
||||
},
|
||||
endpoints: [],
|
||||
statusMessage: '',
|
||||
statusType: 'success'
|
||||
},
|
||||
mounted() {
|
||||
// 页面加载时自动查询端点列表
|
||||
this.queryEndpoints();
|
||||
},
|
||||
methods: {
|
||||
// 显示状态消息
|
||||
showStatus(message, isError = false) {
|
||||
this.statusMessage = message;
|
||||
this.statusType = isError ? 'error' : 'success';
|
||||
|
||||
// 3秒后自动隐藏
|
||||
setTimeout(() => {
|
||||
this.statusMessage = '';
|
||||
}, 6000);
|
||||
},
|
||||
|
||||
// 添加端点
|
||||
addEndpoint() {
|
||||
// 简单验证
|
||||
if (!this.form.ip || !this.form.port) {
|
||||
this.showStatus('请输入IP地址和端口', true);
|
||||
return;
|
||||
}
|
||||
|
||||
let requestData = {
|
||||
Handler: "add",
|
||||
DataList: [{
|
||||
IPAddress: this.form.ip,
|
||||
Port: this.form.port
|
||||
}]
|
||||
};
|
||||
|
||||
$.ajax({
|
||||
url: '/EndPointMonitor/SetData',
|
||||
type: 'POST',
|
||||
contentType: 'application/json',
|
||||
data: JSON.stringify(requestData),
|
||||
success: (response) => {
|
||||
console.log(response);
|
||||
this.showStatus(`端点 ${this.form.ip}:${this.form.port} 已成功添加`);
|
||||
// 清空输入框
|
||||
this.form.ip = '';
|
||||
this.form.port = '';
|
||||
// 刷新列表
|
||||
this.queryEndpoints();
|
||||
},
|
||||
error: (xhr, status, error) => {
|
||||
console.log(error);
|
||||
this.showStatus('添加端点时出错: ' + error, true);
|
||||
},
|
||||
beforeSend: () => {
|
||||
console.log('Sending request...');
|
||||
},
|
||||
complete: () => {
|
||||
console.log('Request completed.');
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// 查询端点列表
|
||||
queryEndpoints() {
|
||||
$.ajax({
|
||||
url: '/EndPointMonitor/Query',
|
||||
type: 'GET',
|
||||
contentType: 'application/json',
|
||||
data: {},
|
||||
success: (response) => {
|
||||
this.endpoints = response || [];
|
||||
if (this.endpoints.length > 0) {
|
||||
this.showStatus(`成功加载 ${this.endpoints.length} 个监控端点`);
|
||||
}
|
||||
},
|
||||
error: (xhr, status, error) => {
|
||||
console.log(error);
|
||||
this.showStatus('查询列表时出错: ' + error, true);
|
||||
},
|
||||
beforeSend: () => {
|
||||
console.log('Sending request...');
|
||||
},
|
||||
complete: () => {
|
||||
console.log('Request completed.');
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// 删除端点
|
||||
removeEndpoint(endpoint) {
|
||||
this.$confirm(`确定要删除端点 ${endpoint.ipAddress}:${endpoint.port} 吗?`, '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
let requestData = {
|
||||
Handler: "remove",
|
||||
DataList: [{
|
||||
IPAddress: endpoint.ipAddress,
|
||||
Port: endpoint.port
|
||||
}]
|
||||
};
|
||||
|
||||
$.ajax({
|
||||
url: '/EndPointMonitor/SetData',
|
||||
type: 'POST',
|
||||
contentType: 'application/json',
|
||||
data: JSON.stringify(requestData),
|
||||
success: (response) => {
|
||||
console.log(response);
|
||||
this.showStatus(`端点 ${endpoint.ipAddress}:${endpoint.port} 已成功移除`);
|
||||
// 刷新列表
|
||||
this.queryEndpoints();
|
||||
},
|
||||
error: (xhr, status, error) => {
|
||||
console.log(error);
|
||||
this.showStatus('移除端点时出错: ' + error, true);
|
||||
}
|
||||
});
|
||||
}).catch(() => {
|
||||
// 用户取消删除
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
118
BLW_Log/Views/Home/Index.cshtml
Normal file
118
BLW_Log/Views/Home/Index.cshtml
Normal file
@@ -0,0 +1,118 @@
|
||||
@{
|
||||
Layout = null;
|
||||
}
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html style="overflow: auto;">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>BLW日志</title>
|
||||
<!-- Vue.js -->
|
||||
<script src="~/js/vue2.js"></script>
|
||||
<!-- 引入样式 -->
|
||||
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
|
||||
<!-- 引入组件库 -->
|
||||
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
|
||||
<!-- jQuery -->
|
||||
<script src="~/js/jquery.min.js"></script>
|
||||
|
||||
<!-- 引入第三方库 -->
|
||||
|
||||
|
||||
<style>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div style="align-content: center; text-align: center; font-size: 22px; margin: 10px;">BLW日志平台</div>
|
||||
<div id="app" v-cloak style="width:100%;">
|
||||
<br />
|
||||
<el-button type="success" round plain v-on:click="RCULog" style="margin: 16px;">RCU通讯日志</el-button>
|
||||
<el-button type="success" round plain v-on:click="AliLog" style="margin: 16px;">语音助手日志</el-button>
|
||||
<el-button type="success" round plain v-on:click="ApiLog" style="margin: 16px;">API接口日志</el-button>
|
||||
<el-button type="success" round plain v-on:click="ConverTool" style="margin: 16px;">转换工具</el-button>
|
||||
<el-button type="success" round plain v-on:click="TestLog" style="margin: 16px;">测试日志</el-button>
|
||||
<el-button type="success" round plain v-on:click="SwitchLog" style="margin: 16px;">雷达日志</el-button>
|
||||
<el-button type="success" round plain v-on:click="XlsxTool" style="margin: 16px;">金蝶导出工具</el-button>
|
||||
<el-button type="success" round plain v-on:click="BLSLog" style="margin: 16px;">BLS日志平台</el-button>
|
||||
<el-button type="success" round plain v-on:click="IpPort" style="margin: 16px;">IP-Port监控</el-button>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
|
||||
var app = new Vue({
|
||||
el: '#app',
|
||||
data() {
|
||||
|
||||
return {
|
||||
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
/* clipboardValue: {
|
||||
handler: function (newVal, oldVal) {
|
||||
//console.log(newVal);
|
||||
if (newVal) {
|
||||
|
||||
}
|
||||
}
|
||||
},*/
|
||||
|
||||
},
|
||||
methods: {
|
||||
RCULog(){
|
||||
window.location.href = "/Log/Index";
|
||||
},
|
||||
AliLog(){
|
||||
window.location.href = "/VoiceLog/Index";
|
||||
},
|
||||
ApiLog(){
|
||||
window.location.href = "/ApiLog/Index";
|
||||
},
|
||||
ConverTool(){
|
||||
window.location.href = "/Tools/Index";
|
||||
},
|
||||
TestLog(){
|
||||
window.location.href = "/TestMachineLog/Index";
|
||||
},
|
||||
XlsxTool(){
|
||||
window.location.href = "/XlsxTool/Index";
|
||||
},
|
||||
SwitchLog(){
|
||||
window.location.href = "http://blv-rd.tech:19059/dbinfolog";
|
||||
},
|
||||
|
||||
BLSLog(){
|
||||
window.location.href = "http://blv-rd.tech:19060/home";
|
||||
},
|
||||
IpPort(){
|
||||
window.location.href = "/EndPointMonitor/Index";
|
||||
},
|
||||
|
||||
},
|
||||
created: function () { // 页面创建时执行
|
||||
|
||||
},
|
||||
mounted: function () {
|
||||
|
||||
|
||||
},
|
||||
beforeDestroy: function () {
|
||||
|
||||
},
|
||||
});
|
||||
|
||||
// 页面加载时
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
854
BLW_Log/Views/Log/Index.cshtml
Normal file
854
BLW_Log/Views/Log/Index.cshtml
Normal file
@@ -0,0 +1,854 @@
|
||||
@{
|
||||
Layout = null;
|
||||
}
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html style="overflow: auto;">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>BLW日志</title>
|
||||
<!-- Vue.js -->
|
||||
<script src="~/js/vue2.js"></script>
|
||||
<!-- 引入样式 -->
|
||||
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
|
||||
<!-- 引入组件库 -->
|
||||
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
|
||||
<!-- jQuery -->
|
||||
<script src="~/js/jquery.min.js"></script>
|
||||
|
||||
<!-- 引入第三方库 -->
|
||||
<script src="~/js/echarts.min.js"></script>
|
||||
<script src="~/js/xlsx.mini.min.js"></script>
|
||||
<script src="~/lib/microsoft/signalr/dist/browser/signalr.min.js"></script>
|
||||
|
||||
|
||||
<style>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.el-table__empty-block {
|
||||
height: auto !important;
|
||||
}
|
||||
|
||||
.el-dialog__footer {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.headbox {
|
||||
/*margin: 10px;*/
|
||||
}
|
||||
|
||||
.seachbox {
|
||||
margin: 10px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.bodybox {
|
||||
margin: 10px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.dialogbox .el-table .el-table__cell {
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.el-table .el-table__cell {
|
||||
padding: 6px 0;
|
||||
}
|
||||
|
||||
.iconClass {
|
||||
font-size: 20px; /* 加大图标大小 */
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* 日志列css */
|
||||
.cell .logdata {
|
||||
/* white-space: nowrap; 不换行 */
|
||||
overflow: hidden; /* 超出部分隐藏 */
|
||||
text-overflow: ellipsis; /* 显示省略号 */
|
||||
cursor: pointer;
|
||||
font-size: 12px;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 3;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
/* 表格行颜色设置 */
|
||||
.el-table .up-row {
|
||||
background: #ECF5FF;
|
||||
}
|
||||
|
||||
.el-table .down-row {
|
||||
background: #FEF0F0;
|
||||
}
|
||||
|
||||
.el-table .error-row {
|
||||
background: #F78989;
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div id="app" v-show="isReady" v-cloak style="width:100%;">
|
||||
|
||||
<div style="align-content: center; text-align: center; font-size: 22px; margin: 10px;">
|
||||
<el-button type="primary" v-on:click="logHome" plain circle style="float: left" icon="el-icon-s-home"></el-button>
|
||||
RCU日志追综系统
|
||||
<span style="font-size:12px;color:gray"> --v1.4.6</span>
|
||||
</div>
|
||||
<div id="appleft" style="display: inline-block; float:left; ">
|
||||
<!-- 顶部导航栏以及弹窗 -->
|
||||
<div class="headbox">
|
||||
<div class="seachbox">
|
||||
<el-button type="warning" v-on:click="openDialog = true" plain round>
|
||||
监控对象
|
||||
</el-button>
|
||||
<el-select v-model="cmdCurrent"
|
||||
multiple
|
||||
clearable
|
||||
collapse-tags
|
||||
placeholder="请选择命令">
|
||||
<el-button type="text" v-on:click="allCmdBtn"> 全选</el-button>
|
||||
<el-option v-for="cmd in cmdList"
|
||||
:key="cmd.value"
|
||||
:label="cmd.label"
|
||||
:value="cmd.value">
|
||||
@* <span style="float: left">{{ room.roomno }}</span>
|
||||
<span style="float: right; color: #8492a6; font-size: 13px"> Mac:{{ room.mac }}</span> *@
|
||||
</el-option>
|
||||
</el-select>
|
||||
<span v-if="dialogw != '100%'">
|
||||
<el-date-picker v-model="pickerDate"
|
||||
type="daterange"
|
||||
align="right"
|
||||
unlink-panels
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:picker-options="pickerOptions"
|
||||
style="width: 230px;">
|
||||
</el-date-picker>
|
||||
</span>
|
||||
<span v-else>
|
||||
<span v-show="mobileSelectedVis">
|
||||
<br />
|
||||
<span class="demonstration" style="margin: 0 26px 0 27px;font-size:13px;"> 开始日期 </span>
|
||||
<el-date-picker v-model="pickerDate[0]"
|
||||
type="date" style="width: 217px;"
|
||||
placeholder="开始日期">
|
||||
</el-date-picker>
|
||||
<br />
|
||||
<span class="demonstration" style="margin: 0 26px 0 27px;font-size:13px;"> 结束日期 </span>
|
||||
<el-date-picker v-model="pickerDate[1]"
|
||||
type="date" style="width: 217px;"
|
||||
placeholder="结束日期">
|
||||
</el-date-picker>
|
||||
</span>
|
||||
|
||||
<br />
|
||||
<span>
|
||||
<span style="margin: 0 0 0 26px;"></span>
|
||||
<el-button type="text" v-on:click="dateMobile(1)">今天</el-button>
|
||||
<el-button type="text" v-on:click="dateMobile(3)">3天内</el-button>
|
||||
<el-button type="text" v-on:click="dateMobile(7)">7天内</el-button>
|
||||
<el-button type="text" v-on:click="dateMobile(15)">15天内</el-button>
|
||||
<el-button type="text" v-on:click="dateMobile(30)">30天内</el-button>
|
||||
</span>
|
||||
<br />
|
||||
</span>
|
||||
|
||||
<el-button v-show="logs != unll" type="info" class="el-icon-refresh" v-on:click="showSelectedLogs(1)" :disabled="multipleBtn"
|
||||
:size="40" circle plain></el-button>
|
||||
<el-button v-show="logs != unll" type="success" class="el-icon-document" v-on:click="exportExcel"
|
||||
:size="40" circle plain></el-button>
|
||||
<el-button v-show="logs != unll" type="warning" class="el-icon-picture-outline" v-on:click="echartShow"
|
||||
:size="40" circle plain></el-button>
|
||||
<div class="seachbox">
|
||||
<el-checkbox v-model="displayCheck" style="display:inline-block">列筛选</el-checkbox>
|
||||
<el-checkbox v-show="displayCheck" :indeterminate="isIndeterminate" v-model="checkAll" v-on:change="handleCheckAllChange" style="display:inline-block">全选</el-checkbox>
|
||||
</div>
|
||||
<div class="seachbox" v-show="displayCheck">
|
||||
<el-checkbox-group v-model="visTabCol" v-on:change="handleCheckedTabChange">
|
||||
<el-checkbox style="display:inline-block" v-for="tabcol in tabCols" :label="tabcol" :key="tabcol">{{tabcol}}</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</div>
|
||||
|
||||
<!-- 弹窗 -->
|
||||
<el-dialog title="日志监控添加"
|
||||
:width="dialogw"
|
||||
:visible.sync="openDialog">
|
||||
<div v-if="mobileSelectedVis || dialogw != '100%'">
|
||||
<div class="seachbox">
|
||||
<el-select v-model="hotelCurrent"
|
||||
value-key="code"
|
||||
filterable
|
||||
clearable
|
||||
remote
|
||||
v-on:change="hotelChange"
|
||||
:remote-method="remoteHotel"
|
||||
placeholder="请选择酒店">
|
||||
<el-option v-for="hotel in hotels"
|
||||
:key="hotel.code"
|
||||
:label="hotel.name"
|
||||
:value="hotel">
|
||||
<span style="float: left">{{ hotel.name }}</span>
|
||||
<span style="float: right; color: #8492a6; font-size: 13px"> Code:{{ hotel.code }}</span>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="seachbox">
|
||||
<el-select v-model="roomCurrent"
|
||||
value-key="roomno"
|
||||
multiple
|
||||
filterable
|
||||
clearable
|
||||
remote
|
||||
collapse-tags
|
||||
:disabled="roomDisable"
|
||||
:remote-method="remoteRoom"
|
||||
placeholder="请选择房间">
|
||||
<el-button type="text" v-on:click="allRoomsBtn"> 全选房间</el-button>
|
||||
<el-option v-for="room in rooms"
|
||||
:key="room.id"
|
||||
:label="room.roomno"
|
||||
:value="room">
|
||||
<span style="float: left">{{ room.roomno }}</span>
|
||||
<span style="float: right; color: #8492a6; font-size: 13px"> Mac:{{ room.mac }}</span>
|
||||
</el-option>
|
||||
</el-select>
|
||||
<div class="seachbox" style="margin-left: 10px">
|
||||
<el-button type="success" v-on:click="handleAdd" :disabled="btnIntoDisable"
|
||||
round plain>加入监控</el-button>
|
||||
</div>
|
||||
<el-button type="danger" v-on:click="delSelectedLogs" :disabled="multipleBtn"
|
||||
round plain>删除所选</el-button>
|
||||
|
||||
<el-button type="info" class="el-icon-zoom-in" :size="40" v-on:click="stateTable" circle plain v-if="dialogw != '100%'"></el-button>
|
||||
<el-button type="success" class="el-icon-refresh" :size="40" v-on:click="refreshViewValue" circle plain></el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display:inline" v-else>
|
||||
<el-button type="success" class="el-icon-refresh" :size="40" v-on:click="refreshViewValue" circle plain></el-button>
|
||||
|
||||
</div>
|
||||
<div style="display:inline" v-if="dialogw == '100%'">
|
||||
<el-button type="info" class="el-icon-zoom-in" :size="40" v-on:click="stateTable" circle plain></el-button>
|
||||
<el-button type="success" class="el-icon-sort" :size="40" v-on:click="mobileSelectedVis = !mobileSelectedVis"
|
||||
circle plain></el-button>
|
||||
</div>
|
||||
|
||||
<div class="dialogbox" style="display: inline-block;width: 100%">
|
||||
<el-table v-if="dialogw != '100%'"
|
||||
border
|
||||
:data="selectHotelRoom"
|
||||
empty-text="暂无监控对象"
|
||||
:height="tableHeight - 350"
|
||||
v-on:selection-change="handleSelectionChange">
|
||||
<el-table-column prop="IsSelect"
|
||||
type="selection"
|
||||
width="50"
|
||||
align="center"
|
||||
header-align="center">
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="158">
|
||||
<template slot-scope="scope">
|
||||
<el-button slot="scope.row" type="primary" icon="el-icon-search" v-on:click="showLog(scope.$index, scope.row)"
|
||||
circle plain></el-button>
|
||||
<el-popconfirm title="确定取消监控吗?"
|
||||
v-on:confirm="handleRemove(scope.row)">
|
||||
<el-button slot="reference" type="danger" icon="el-icon-delete"
|
||||
circle plain></el-button>
|
||||
</el-popconfirm>
|
||||
<el-popconfirm title="确定延长有效期吗?"
|
||||
v-on:confirm="handleDelayed(scope.row)">
|
||||
<el-button slot="reference" type="warning" icon="el-icon-refresh-left"
|
||||
circle plain></el-button>
|
||||
</el-popconfirm>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="hotelNameAndCode" label="酒店" width="188" align="center"
|
||||
:filter-method="filterHandler" :filters="CreatDataTable.hotel" header-align="center" sortable></el-table-column>
|
||||
<el-table-column prop="roomNumber" label="房间" width="90" align="center"
|
||||
:filter-method="filterHandler" :filters="CreatDataTable.room" header-align="center" sortable></el-table-column>
|
||||
<el-table-column prop="mac" label="Mac地址" width="170" align="center"
|
||||
header-align="center" sortable></el-table-column>
|
||||
<el-table-column prop="createDateTime" label="创建时间" width="180" align="center"
|
||||
header-align="center" sortable></el-table-column>
|
||||
<el-table-column prop="remainingTime" label="有效期" width="110" align="center"
|
||||
header-align="center" sortable></el-table-column>
|
||||
<el-table-column label="TX" width="68" align="center"
|
||||
header-align="center">
|
||||
<template slot-scope="scope">
|
||||
<i v-if="!scope.row.lastData" class="el-icon-loading"></i>
|
||||
<span v-else>{{ scope.row.tx }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="RX" width="68" align="center"
|
||||
header-align="center">
|
||||
<template slot-scope="scope">
|
||||
<i v-if="!scope.row.lastData" class="el-icon-loading"></i>
|
||||
<span v-else>{{ scope.row.rx }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="最后记录" width="110" align="center"
|
||||
header-align="center">
|
||||
<template slot-scope="scope">
|
||||
<i v-if="!scope.row.lastData" class="el-icon-loading"></i>
|
||||
<span v-else>{{ scope.row.lastData }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
</el-table>
|
||||
<el-table v-else
|
||||
border
|
||||
:data="selectHotelRoom"
|
||||
empty-text="暂无监控对象"
|
||||
:height="tableHeight - 350"
|
||||
v-on:selection-change="handleSelectionChange">
|
||||
<el-table-column prop="IsSelect"
|
||||
type="selection"
|
||||
width="43"
|
||||
align="center"
|
||||
header-align="center">
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="60" align="center" header-align="center">
|
||||
<template slot-scope="scope">
|
||||
@* <el-popconfirm title="确定取消监控吗?"
|
||||
v-on:confirm="handleRemove(scope.row)">
|
||||
<el-button slot="reference" type="danger" icon="el-icon-delete" size="small"
|
||||
circle plain></el-button>
|
||||
</el-popconfirm> *@
|
||||
<el-button slot="scope.row" type="info" icon="el-icon-search" size="small" v-on:click="showLog(scope.$index, scope.row)"
|
||||
circle plain></el-button>
|
||||
<br />
|
||||
<el-popconfirm title="确定延长有效期吗?"
|
||||
v-on:confirm="handleDelayed(scope.row)">
|
||||
<el-button slot="reference" type="warning" icon="el-icon-refresh-left" size="small"
|
||||
circle plain></el-button>
|
||||
</el-popconfirm>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="酒店&房间" width="140" align="center" header-align="center" :filter-method="filterHandlerMobile" :filters="CreatDataTable.hotel">
|
||||
<template slot-scope="scope">
|
||||
<p style="font-size:10px">{{scope.row.hotelNameAndCode}}</p>
|
||||
<hr style="border: none; height: 1px; background-color: #D3DCE6;">
|
||||
<p>{{scope.row.roomNumber}}</p>
|
||||
<hr style="border: none; height: 1px; background-color: #D3DCE6;">
|
||||
<p style="font-size:11px">{{scope.row.mac}}</p>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="TX/RX" width="77" align="center" header-align="center">
|
||||
<template slot-scope="scope">
|
||||
<i v-if="!scope.row.lastData" class="el-icon-loading"></i>
|
||||
<div v-if="scope.row.lastData">
|
||||
<p>{{scope.row.tx}}</p>
|
||||
<hr style="border: none; height: 1px; background-color: #D3DCE6;">
|
||||
<p>{{scope.row.rx}}</p>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="创建&有效&最后" width="155" align="center" header-align="center">
|
||||
<template slot-scope="scope">
|
||||
<p style="font-size:11px">{{scope.row.createDateTime}}</p>
|
||||
<hr style="border: none; height: 1px; background-color: #D3DCE6;">
|
||||
<p>{{scope.row.remainingTime}}</p>
|
||||
<hr style="border: none; height: 1px; background-color: #D3DCE6;">
|
||||
<i v-if="!scope.row.lastData" class="el-icon-loading"></i>
|
||||
<p v-if="scope.row.lastData" style="font-size:10px">{{scope.row.lastData}}</p>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
|
||||
|
||||
</el-table>
|
||||
</div>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<span>
|
||||
<el-select v-model="cmdCurrent"
|
||||
multiple
|
||||
clearable
|
||||
collapse-tags
|
||||
placeholder="请选择命令">
|
||||
<el-button type="text" v-on:click="allCmdBtn"> 全选</el-button>
|
||||
<el-option v-for="cmd in cmdList"
|
||||
:key="cmd.value"
|
||||
:label="cmd.label"
|
||||
:value="cmd.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</span>
|
||||
<span v-if="dialogw != '100%'">
|
||||
<el-date-picker v-model="pickerDate"
|
||||
type="daterange"
|
||||
align="right"
|
||||
unlink-panels
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:picker-options="pickerOptions"
|
||||
style="width: 230px;">
|
||||
</el-date-picker>
|
||||
</span>
|
||||
<span v-else>
|
||||
<span v-show="mobileSelectedVis">
|
||||
<br />
|
||||
<el-date-picker v-model="pickerDate[0]"
|
||||
type="date" style="width: 217px;"
|
||||
placeholder="开始日期">
|
||||
</el-date-picker>
|
||||
<span class="demonstration">开始日期 </span>
|
||||
<br />
|
||||
<el-date-picker v-model="pickerDate[1]"
|
||||
type="date" style="width: 217px;"
|
||||
placeholder="结束日期">
|
||||
</el-date-picker>
|
||||
<span class="demonstration">结束日期 </span>
|
||||
</span>
|
||||
|
||||
<br />
|
||||
<span>
|
||||
<el-button type="text" v-on:click="dateMobile(1)">今天</el-button>
|
||||
<el-button type="text" v-on:click="dateMobile(3)">3天内</el-button>
|
||||
<el-button type="text" v-on:click="dateMobile(7)">7天内</el-button>
|
||||
<el-button type="text" v-on:click="dateMobile(15)">15天内</el-button>
|
||||
<el-button type="text" v-on:click="dateMobile(30)">30天内</el-button>
|
||||
</span>
|
||||
<br />
|
||||
</span>
|
||||
|
||||
<span>
|
||||
<br v-if="dialogw == '100%'" />
|
||||
<el-button type="primary" v-on:click="showSelectedLogs(1)" style="margin-left:10px" :disabled="multipleBtn"
|
||||
round plain>显示日志</el-button>
|
||||
<el-button type="info" v-on:click="openDialog = false"
|
||||
round plain>取 消</el-button>
|
||||
</span>
|
||||
|
||||
</span>
|
||||
</el-dialog>
|
||||
<!-- 弹窗次级 -->
|
||||
<el-dialog title="监控房间状态"
|
||||
:width="dialogw"
|
||||
:visible.sync="stateVis">
|
||||
<div style="margin: 0 10px 3px 0;">
|
||||
<el-button v-show="selectHotelRoom != null" type="success" class="el-icon-refresh" v-on:click="stateTable"
|
||||
:size="40" circle plain></el-button>
|
||||
</div>
|
||||
|
||||
<div class="dialogbox" style="display: inline-block;width: 100%">
|
||||
<el-table v-if="dialogw != '100%'"
|
||||
border
|
||||
:data="selectHotelRoom"
|
||||
empty-text="暂无监控对象"
|
||||
:height="tableHeight - 177">
|
||||
<el-table-column label="操作" width="66">
|
||||
<template slot-scope="scope">
|
||||
<el-button slot="scope.row" type="primary" icon="el-icon-search" v-on:click="showLog(scope.$index, scope.row)"
|
||||
circle plain></el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="hotelNameAndCode" label="酒店" width="188" align="center"
|
||||
:filter-method="filterHandler" :filters="CreatDataTable.hotel" header-align="center" sortable></el-table-column>
|
||||
<el-table-column prop="roomNumber" label="房间" width="90" align="center"
|
||||
:filter-method="filterHandler" :filters="CreatDataTable.room" header-align="center" sortable></el-table-column>
|
||||
<el-table-column prop="mac" label="Mac地址" width="170" align="center"
|
||||
header-align="center" sortable></el-table-column>
|
||||
<el-table-column label="在线" width="70">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="info" effect="plain">
|
||||
<i v-if="!scope.row.isSupply" class="el-icon-loading iconClass"></i>
|
||||
<span v-else>
|
||||
<i v-if="scope.row.isSupply == 'False'" class="el-icon-minus iconClass"></i>
|
||||
<i v-if="scope.row.isSupply == 'True'" class="el-icon-check iconClass"></i>
|
||||
<i v-if="scope.row.isSupply != 'True' && scope.row.isSupply != 'False'" class="el-icon-close iconClass"></i>
|
||||
</span>
|
||||
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="取电" width="70">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="info" effect="plain">
|
||||
<i v-if="!scope.row.TakeCard_Status" class="el-icon-loading iconClass"></i>
|
||||
<span v-else>
|
||||
<i v-if="scope.row.TakeCard_Status == 'False'" class="el-icon-minus iconClass"></i>
|
||||
<i v-if="scope.row.TakeCard_Status == 'True'" class="el-icon-s-opportunity iconClass"></i>
|
||||
<i v-if="scope.row.TakeCard_Status != 'True' && scope.row.TakeCard_Status != 'False'" class="el-icon-close iconClass"></i>
|
||||
</span>
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
</el-table>
|
||||
<el-table v-else
|
||||
border
|
||||
:data="selectHotelRoom"
|
||||
empty-text="暂无监控对象"
|
||||
:height="tableHeight - 233">
|
||||
<el-table-column label="操作" width="60" align="center" header-align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-button slot="scope.row" type="info" icon="el-icon-search" size="small" v-on:click="showLog(scope.$index, scope.row)"
|
||||
circle plain></el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="酒店&房间" width="140" align="center" header-align="center" :filter-method="filterHandlerMobile" :filters="CreatDataTable.hotel">
|
||||
<template slot-scope="scope">
|
||||
<p style="font-size:10px">{{scope.row.hotelNameAndCode}}</p>
|
||||
<hr style="border: none; height: 1px; background-color: #D3DCE6;">
|
||||
<p>{{scope.row.roomNumber}}</p>
|
||||
<hr style="border: none; height: 1px; background-color: #D3DCE6;">
|
||||
<p style="font-size:11px">{{scope.row.mac}}</p>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="在线/取电" width="62" align="center" header-align="center">
|
||||
<template slot-scope="scope">
|
||||
<i v-if="!scope.row.isSupply" class="el-icon-loading"></i>
|
||||
<div v-else>
|
||||
<i v-if="scope.row.isSupply == 'False'" class="el-icon-minus "></i>
|
||||
<i v-if="scope.row.isSupply == 'True'" class="el-icon-check "></i>
|
||||
<i v-if="scope.row.isSupply != 'True' && scope.row.isSupply != 'False'" class="el-icon-close iconClass"></i>
|
||||
<hr style="border: none; height: 1px; background-color: #D3DCE6;">
|
||||
<i v-if="scope.row.TakeCard_Status == 'False'" class="el-icon-minus "></i>
|
||||
<i v-if="scope.row.TakeCard_Status == 'True'" class="el-icon-s-opportunity "></i>
|
||||
<i v-if="scope.row.TakeCard_Status != 'True' && scope.row.TakeCard_Status != 'False'" class="el-icon-close iconClass"></i>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
|
||||
</el-table>
|
||||
</div>
|
||||
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
||||
<div class="seachbox"></div>
|
||||
|
||||
</div>
|
||||
<!-- 主体内容 -->
|
||||
<div class="">
|
||||
<el-table v-if="dialogw != '100%'"
|
||||
:data="logs"
|
||||
ref="logsTable"
|
||||
border
|
||||
style="width: 100%; "
|
||||
empty-text="请选择监控对象"
|
||||
:row-class-name="tableRowClassName"
|
||||
:height="tableHeight">
|
||||
<el-table-column v-if="visTabCol.includes('时间')" label="时间" width="100">
|
||||
<template slot-scope="scope">
|
||||
<div style="color:#ADADAD; font-size: 13px">
|
||||
{{ scope.row.createTime }}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="visTabCol.includes('酒店名')" label="酒店名" width="150">
|
||||
<template slot-scope="scope">
|
||||
<div style="color:#ADADAD; font-size: 12px">
|
||||
{{ scope.row.hotelNameAndCode }}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="visTabCol.includes('房间号')" label="房间号" width="85">
|
||||
<template slot-scope="scope">
|
||||
<div style="color:#ADADAD; font-size: 12px">
|
||||
{{ scope.row.roomNo }}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="visTabCol.includes('Mac地址')" label="Mac地址" width="150">
|
||||
<template slot-scope="scope">
|
||||
<div style="color:#ADADAD; font-size: 12px">
|
||||
{{ scope.row.mac }}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="visTabCol.includes('主机编号')" label="主机编号" width="130">
|
||||
<template slot-scope="scope">
|
||||
<div style="color:#ADADAD; font-size: 12px">
|
||||
{{ scope.row.hostNumber }}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="visTabCol.includes('内网IP')" label="内网IP" width="115">
|
||||
<template slot-scope="scope">
|
||||
<div style="color:#ADADAD; font-size: 12px">
|
||||
{{ scope.row.lanIp }}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="visTabCol.includes('外网IP')" label="外网IP" width="115">
|
||||
<template slot-scope="scope">
|
||||
<div style="color:#ADADAD; font-size: 12px">
|
||||
{{ scope.row.wwwIp }}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="visTabCol.includes('外网Port')" label="Port" width="65">
|
||||
<template slot-scope="scope">
|
||||
<div style="color:#ADADAD; font-size: 12px">
|
||||
{{ scope.row.wwwPort }}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="visTabCol.includes('间隔')" label="间隔(ms)" width="85">
|
||||
<template slot-scope="scope">
|
||||
<div>
|
||||
{{ scope.row.timeDifference }}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="visTabCol.includes('方向')" label="方向文字" width="70">
|
||||
<template slot-scope="scope">
|
||||
<div v-if="scope.row.sendOrReceive == '主机->服务器'">
|
||||
上传
|
||||
</div>
|
||||
<div v-else>
|
||||
下发
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="visTabCol.includes('方向')" label="方向" width="70">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="info"
|
||||
effect="plain">
|
||||
<i v-if="scope.row.sendOrReceive == '主机->服务器'" class="el-icon-upload iconClass"></i>
|
||||
<i v-if="scope.row.sendOrReceive == '服务器->主机'" class="el-icon-download iconClass"></i>
|
||||
<i v-if="scope.row.sendOrReceive != '服务器->主机' && scope.row.sendOrReceive != '主机->服务器'" class="el-icon-close iconClass"></i>
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="visTabCol.includes('日志')" label="日志" width="80">
|
||||
<template slot-scope="scope">
|
||||
<el-popover trigger="click"
|
||||
placement="right"
|
||||
width="250">
|
||||
<div style="font-size: 11px; ">
|
||||
{{ scope.row.data }}
|
||||
</div>
|
||||
<div class="logdata" title="点击复制" style="color:#ADADAD"
|
||||
slot="reference">
|
||||
{{ scope.row.data }} @* v-on:click="copyData(scope.row.data)" *@
|
||||
</div>
|
||||
</el-popover>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="visTabCol.includes('帧号')" label="帧号" width="80">
|
||||
<template slot-scope="scope">
|
||||
<div style="color:#ADADAD">
|
||||
{{ scope.row.frameNo }}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="visTabCol.includes('命令')" label="命令" width="125">
|
||||
<template slot-scope="scope">
|
||||
<el-popover placement="right"
|
||||
width="500"
|
||||
:style="{maxHeight:'92vh', overflowY:'auto'}"
|
||||
trigger="hover"
|
||||
v-on:show="analyzeLogs(scope.row)">
|
||||
<el-table :data="logAnalysisList"
|
||||
size="small"
|
||||
:style="{maxHeight:'98vh', overflowY:'auto'}"
|
||||
border>
|
||||
<el-table-column width="100" property="key" label="指令编码"></el-table-column>
|
||||
<el-table-column width="180" property="value" label="内容"></el-table-column>
|
||||
<el-table-column min-width="140" property="data" label="上报数据"></el-table-column>
|
||||
</el-table>
|
||||
<div slot="reference">
|
||||
<span>{{ scope.row.commandTypeVal }}</span>
|
||||
<hr style="border: none; height: 1px; background-color: #D3DCE6;">
|
||||
<span>{{ scope.row.commandType }}</span>
|
||||
</div>
|
||||
</el-popover>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
</el-table>
|
||||
<el-table v-else
|
||||
:data="logs"
|
||||
ref="logsTable"
|
||||
border
|
||||
style="width: 100%; "
|
||||
empty-text="请选择监控对象"
|
||||
:row-class-name="tableRowClassName"
|
||||
:height="tableHeight-80">
|
||||
<el-table-column v-if="visTabCol.includes('时间')" label="时间" width="90">
|
||||
<template slot-scope="scope">
|
||||
<div style="color:#ADADAD; font-size: 11px">
|
||||
{{ scope.row.createTime }}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="visTabCol.includes('酒店名')" label="酒店名" width="130">
|
||||
<template slot-scope="scope">
|
||||
<div style="color:#ADADAD; font-size: 11px">
|
||||
{{ scope.row.hotelNameAndCode }}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="visTabCol.includes('房间号')" label="房间号" width="70">
|
||||
<template slot-scope="scope">
|
||||
<div style="color:#ADADAD; font-size: 12px">
|
||||
{{ scope.row.roomNo }}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="visTabCol.includes('Mac地址')" label="Mac地址" width="120">
|
||||
<template slot-scope="scope">
|
||||
<div style="color:#ADADAD; font-size: 10px">
|
||||
{{ scope.row.mac }}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="visTabCol.includes('主机编号')" label="主机编号" width="120">
|
||||
<template slot-scope="scope">
|
||||
<div style="color:#ADADAD; font-size: 10px">
|
||||
{{ scope.row.hostNumber }}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="visTabCol.includes('IP')" label="IP/Prot" width="98">
|
||||
<template slot-scope="scope">
|
||||
<div style="color:#ADADAD; font-size: 11px">
|
||||
{{ scope.row.lanIp }}: {{ scope.row.lanPort }}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="visTabCol.includes('方向')" label="方向" width="45">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="info" size="mini"
|
||||
effect="plain">
|
||||
<i v-if="scope.row.sendOrReceive == '主机->服务器'" class="el-icon-upload"></i>
|
||||
<i v-if="scope.row.sendOrReceive == '服务器->主机'" class="el-icon-download"></i>
|
||||
<i v-if="scope.row.sendOrReceive != '服务器->主机' && scope.row.sendOrReceive != '主机->服务器'" class="el-icon-close"></i>
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="visTabCol.includes('日志')" label="日志" width="75">
|
||||
<template slot-scope="scope">
|
||||
<el-popover trigger="click"
|
||||
placement="right"
|
||||
width="250">
|
||||
<div style="font-size: 11px; ">
|
||||
{{ scope.row.data }}
|
||||
</div>
|
||||
<div class="logdata" title="点击复制" style="color:#ADADAD"
|
||||
slot="reference">
|
||||
{{ scope.row.data }} @* v-on:click="copyData(scope.row.data)" *@
|
||||
</div>
|
||||
</el-popover>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="visTabCol.includes('帧号')" label="帧号 间隔" width="63">
|
||||
<template slot-scope="scope">
|
||||
<div>
|
||||
{{ scope.row.timeDifference }}
|
||||
</div>
|
||||
<hr style="border: none; height: 1px; background-color: #D3DCE6;">
|
||||
<div style="color:#ADADAD">
|
||||
{{ scope.row.frameNo }}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="visTabCol.includes('命令')" label="命令" width="125">
|
||||
<template slot-scope="scope">
|
||||
<el-popover placement="right"
|
||||
width="300"
|
||||
trigger="hover">
|
||||
<el-table :data="testData"
|
||||
border>
|
||||
<el-table-column width="99" property="key" label="指令编码"></el-table-column>
|
||||
<el-table-column width="200" property="value" label="内容"></el-table-column>
|
||||
</el-table>
|
||||
<div slot="reference">
|
||||
<span>{{ scope.row.commandTypeVal }}</span>
|
||||
<hr style="border: none; height: 1px; background-color: #D3DCE6;">
|
||||
<span>{{ scope.row.commandType }}</span>
|
||||
</div>
|
||||
</el-popover>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
|
||||
</el-table>
|
||||
<div class="block" v-show="allPageNum > 0">
|
||||
<span v-if="dialogw != '100%'">
|
||||
<el-pagination style="margin:5px 0 0 10px"
|
||||
background
|
||||
pager-count="10"
|
||||
v-on:size-change="handleSizeChange"
|
||||
v-on:current-change="handleCurrentChange"
|
||||
:current-page="currentPage"
|
||||
:page-sizes="[20, 50, 100, 300, 500]"
|
||||
:page-size="50"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="allPageNum">
|
||||
</el-pagination>
|
||||
</span>
|
||||
<span v-else>
|
||||
<el-pagination style="margin:5px"
|
||||
background
|
||||
small
|
||||
pager-count="5"
|
||||
v-on:size-change="handleSizeChange"
|
||||
v-on:current-change="handleCurrentChange"
|
||||
:current-page="currentPage"
|
||||
:page-size="50"
|
||||
layout="pager, jumper"
|
||||
:total="allPageNum">
|
||||
</el-pagination>
|
||||
</span>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 圆饼图 v-if="logs != unll" -->
|
||||
<div v-show="echartVis">
|
||||
<div style="display:inline-block; width: 51%; height:auto; float:left;margin: 10px 0 0 10px;">
|
||||
<div id="circular-echart" style="width: 440px; height:188px ; float:left;"></div>
|
||||
<div id="circular-echart2" style="width: 440px; height:188px ; float:left;"></div>
|
||||
</div>
|
||||
<!-- 柱状折线图 -->
|
||||
<div style="display:inline-block; width: 52%; height:auto; float:left;">
|
||||
<div id="bar-echart" style="width: 880px; height:233px ; float:left;"></div>
|
||||
</div>
|
||||
<!-- 柱状横置图 -->
|
||||
<div v-show="false" style="display:inline-block; width: 52%; height:auto; float:left;">
|
||||
<div id="profile-echart" style="width: 880px; height:444px ; float:left;"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
@* <script>
|
||||
let startY = 0; // 记录触摸开始的Y坐标
|
||||
let isTop = true; // 标记页面是否在顶部
|
||||
|
||||
document.addEventListener('touchstart', function (event) {
|
||||
// 获取第一个触摸点的Y坐标
|
||||
startY = event.touches.clientY;
|
||||
// 检查页面是否在顶部
|
||||
isTop = document.documentElement.scrollTop === 0 || document.body.scrollTop === 0;
|
||||
});
|
||||
|
||||
document.addEventListener('touchmove', function (event) {
|
||||
// 如果页面在顶部,并且用户正在向下拉动
|
||||
if (isTop && startY < event.touches.clientY) {
|
||||
event.preventDefault(); // 阻止默认的下拉刷新行为
|
||||
}
|
||||
}, { passive: false });
|
||||
</script> *@
|
||||
<!-- JavaScript引入 -->
|
||||
<script src="~/js/LogJs/LogIndex.js"></script>
|
||||
@* <script src="~/js/logjs/echarts.js"></script> *@
|
||||
</body>
|
||||
</html>
|
||||
41
BLW_Log/Views/PmsPostTools/Index.cshtml
Normal file
41
BLW_Log/Views/PmsPostTools/Index.cshtml
Normal file
@@ -0,0 +1,41 @@
|
||||
@{
|
||||
Layout = null;
|
||||
}
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html style="overflow: auto;">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>BLW日志</title>
|
||||
<!-- Vue.js -->
|
||||
<script src="~/js/vue2.js"></script>
|
||||
<!-- 引入样式 -->
|
||||
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
|
||||
<!-- 引入组件库 -->
|
||||
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
|
||||
<!-- jQuery -->
|
||||
<script src="~/js/jquery.min.js"></script>
|
||||
|
||||
<!-- 引入第三方库 -->
|
||||
|
||||
|
||||
<style>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div style="align-content: center; text-align: center; font-size: 22px; margin: 10px;">PMS调用工具</div>
|
||||
<div id="app" v-cloak style="width:100%;">
|
||||
|
||||
</div>
|
||||
|
||||
<script src="~/js/logjs/pmsposttoolsindex.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
25
BLW_Log/Views/Shared/Error.cshtml
Normal file
25
BLW_Log/Views/Shared/Error.cshtml
Normal file
@@ -0,0 +1,25 @@
|
||||
@model ErrorViewModel
|
||||
@{
|
||||
ViewData["Title"] = "Error";
|
||||
}
|
||||
|
||||
<h1 class="text-danger">Error.</h1>
|
||||
<h2 class="text-danger">An error occurred while processing your request.</h2>
|
||||
|
||||
@if (Model.ShowRequestId)
|
||||
{
|
||||
<p>
|
||||
<strong>Request ID:</strong> <code>@Model.RequestId</code>
|
||||
</p>
|
||||
}
|
||||
|
||||
<h3>Development Mode</h3>
|
||||
<p>
|
||||
Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred.
|
||||
</p>
|
||||
<p>
|
||||
<strong>The Development environment shouldn't be enabled for deployed applications.</strong>
|
||||
It can result in displaying sensitive information from exceptions to end users.
|
||||
For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
|
||||
and restarting the app.
|
||||
</p>
|
||||
20
BLW_Log/Views/Shared/_Layout.cshtml
Normal file
20
BLW_Log/Views/Shared/_Layout.cshtml
Normal file
@@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>BLW_Log</title>
|
||||
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="~/css/site.css" asp-append-version="true" />
|
||||
<link rel="stylesheet" href="~/BLW_Log.styles.css" asp-append-version="true" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<main role="main" class="pb-3">
|
||||
@RenderBody()
|
||||
</main>
|
||||
</div>
|
||||
|
||||
@await RenderSectionAsync("Scripts", required: false)
|
||||
</body>
|
||||
</html>
|
||||
48
BLW_Log/Views/Shared/_Layout.cshtml.css
Normal file
48
BLW_Log/Views/Shared/_Layout.cshtml.css
Normal file
@@ -0,0 +1,48 @@
|
||||
/* Please see documentation at https://learn.microsoft.com/aspnet/core/client-side/bundling-and-minification
|
||||
for details on configuring this project to bundle and minify static web assets. */
|
||||
|
||||
a.navbar-brand {
|
||||
white-space: normal;
|
||||
text-align: center;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #0077cc;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
color: #fff;
|
||||
background-color: #1b6ec2;
|
||||
border-color: #1861ac;
|
||||
}
|
||||
|
||||
.nav-pills .nav-link.active, .nav-pills .show > .nav-link {
|
||||
color: #fff;
|
||||
background-color: #1b6ec2;
|
||||
border-color: #1861ac;
|
||||
}
|
||||
|
||||
.border-top {
|
||||
border-top: 1px solid #e5e5e5;
|
||||
}
|
||||
.border-bottom {
|
||||
border-bottom: 1px solid #e5e5e5;
|
||||
}
|
||||
|
||||
.box-shadow {
|
||||
box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .05);
|
||||
}
|
||||
|
||||
button.accept-policy {
|
||||
font-size: 1rem;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
.footer {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
white-space: nowrap;
|
||||
line-height: 60px;
|
||||
}
|
||||
2
BLW_Log/Views/Shared/_ValidationScriptsPartial.cshtml
Normal file
2
BLW_Log/Views/Shared/_ValidationScriptsPartial.cshtml
Normal file
@@ -0,0 +1,2 @@
|
||||
<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
|
||||
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
|
||||
321
BLW_Log/Views/TestMachineLog/Index.cshtml
Normal file
321
BLW_Log/Views/TestMachineLog/Index.cshtml
Normal file
@@ -0,0 +1,321 @@
|
||||
@{
|
||||
Layout = null;
|
||||
}
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html style="overflow: auto;">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>测试日志</title>
|
||||
<!-- Vue.js -->
|
||||
<script src="~/js/vue2.js"></script>
|
||||
<!-- 引入样式 -->
|
||||
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
|
||||
<!-- 引入组件库 -->
|
||||
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
|
||||
<!-- jQuery -->
|
||||
<script src="~/js/jquery.min.js"></script>
|
||||
|
||||
<!-- 引入第三方库 -->
|
||||
<script src="~/js/echarts.min.js"></script>
|
||||
<script src="~/js/xlsx.mini.min.js"></script>
|
||||
<script src="~/lib/microsoft/signalr/dist/browser/signalr.min.js"></script>
|
||||
|
||||
|
||||
<style>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.el-table__empty-block {
|
||||
height: auto !important;
|
||||
}
|
||||
|
||||
.el-dialog__footer {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.headbox {
|
||||
/*margin: 10px;*/
|
||||
}
|
||||
|
||||
.seachbox {
|
||||
margin: 10px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.bodybox {
|
||||
margin: 10px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.dialogbox .el-table .el-table__cell {
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.el-table .el-table__cell {
|
||||
padding: 6px 0;
|
||||
}
|
||||
|
||||
.iconClass {
|
||||
font-size: 20px; /* 加大图标大小 */
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* 日志列css */
|
||||
.cell .logdata {
|
||||
/* white-space: nowrap; 不换行 */
|
||||
overflow: hidden; /* 超出部分隐藏 */
|
||||
text-overflow: ellipsis; /* 显示省略号 */
|
||||
cursor: pointer;
|
||||
font-size: 12px;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 3;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
/* 表格行颜色设置 */
|
||||
.el-table .up-row {
|
||||
background: #ECF5FF;
|
||||
}
|
||||
|
||||
.el-table .down-row {
|
||||
background: #FEF0F0;
|
||||
}
|
||||
|
||||
.el-table .error-row {
|
||||
background: #F78989;
|
||||
}
|
||||
|
||||
.el-select__tags-text {
|
||||
max-width: 7em; /* 假设每个汉字宽度大约是1em */
|
||||
overflow: hidden; /* 隐藏超出部分 */
|
||||
white-space: nowrap; /* 防止文本换行 */
|
||||
text-overflow: ellipsis; /* 显示省略号 */
|
||||
}
|
||||
|
||||
.logs-list-div {
|
||||
color: #888888;
|
||||
border: 1px solid #E9E9E960;
|
||||
background-color: #80808030;
|
||||
transition: all 0.3s ease;
|
||||
position: relative;
|
||||
width: auto;
|
||||
padding: 4px;
|
||||
height: 112px;
|
||||
border-radius: 3px;
|
||||
margin: 4px;
|
||||
background-color: #f9f9f9;
|
||||
}
|
||||
|
||||
.logs-list-div:hover {
|
||||
border-color: #409eff;
|
||||
background-color: #80808010;
|
||||
/* box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); 可选阴影 */
|
||||
}
|
||||
|
||||
.log {
|
||||
position: absolute;
|
||||
font-size: 12px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
strong {
|
||||
color: #444444; /* 示例:将文字颜色设置为红色 */
|
||||
font-size: 13px; /* 示例:将字体大小设置为18像素 */
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div id="app" v-show="isReady" v-cloak style="width:100%;">
|
||||
|
||||
<div style="align-content: center; text-align: center; font-size: 22px; margin: 10px;">
|
||||
<el-button type="primary" v-on:click="logHome" plain circle style="float: left" icon="el-icon-s-home"></el-button>
|
||||
<span>测试日志</span>
|
||||
<span style="font-size:12px;color:gray"> --v1.0.5</span>
|
||||
</div>
|
||||
<div id="appleft" style="display: inline-block; float:left; ">
|
||||
<!-- 顶部导航栏以及弹窗 -->
|
||||
<div class="headbox">
|
||||
<div class="seachbox">
|
||||
<span v-if="dialogw != '100%'">
|
||||
<el-date-picker v-model="pickerDate"
|
||||
type="daterange"
|
||||
align="right"
|
||||
unlink-panels
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:picker-options="pickerOptions"
|
||||
style="width: 230px;">
|
||||
</el-date-picker>
|
||||
</span>
|
||||
<span v-else>
|
||||
<span v-show="mobileSelectedVis">
|
||||
<br />
|
||||
<span class="demonstration" style="margin: 0 10px 0 10px;font-size:13px;">开始日期</span>
|
||||
<el-date-picker v-model="pickerDate[0]"
|
||||
type="date" style="width: 217px;"
|
||||
placeholder="开始日期">
|
||||
</el-date-picker>
|
||||
<br />
|
||||
<span class="demonstration" style="margin: 0 10px 0 10px;font-size:13px;">结束日期</span>
|
||||
<el-date-picker v-model="pickerDate[1]"
|
||||
type="date" style="width: 217px;"
|
||||
placeholder="结束日期">
|
||||
</el-date-picker>
|
||||
</span>
|
||||
|
||||
<br />
|
||||
<span>
|
||||
<span style="margin: 0 0 0 26px;"></span>
|
||||
<el-button type="text" v-on:click="dateMobile(1)">今天</el-button>
|
||||
<el-button type="text" v-on:click="dateMobile(3)">3天内</el-button>
|
||||
<el-button type="text" v-on:click="dateMobile(7)">7天内</el-button>
|
||||
<el-button type="text" v-on:click="dateMobile(0)">全部</el-button>
|
||||
</span>
|
||||
</span>
|
||||
<br v-if="dialogw == '100%'" />
|
||||
<span>
|
||||
<span class="demonstration" style="margin: 0 10px 0 10px;font-size:13px;">测试结果</span>
|
||||
<el-select v-model="resultCurrent"
|
||||
multiple
|
||||
clearable
|
||||
placeholder="测试结果">
|
||||
<el-button type="text" v-on:click="allInfoBtn"> 全选</el-button>
|
||||
<el-option key="0"
|
||||
label="失败"
|
||||
value="0">
|
||||
</el-option>
|
||||
<el-option key="1"
|
||||
label="成功"
|
||||
value="1">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</span>
|
||||
<br v-if="dialogw == '100%'" />
|
||||
<span>
|
||||
<span class="demonstration" style="margin: 0 10px 0 10px;font-size:13px;">测试信息</span>
|
||||
<el-select v-model="cmdCurrent"
|
||||
multiple
|
||||
clearable
|
||||
collapse-tags
|
||||
placeholder="测试信息">
|
||||
<el-button type="text" v-on:click="allCmdBtn"> 全选</el-button>
|
||||
<el-option v-for="cmd in cmdList"
|
||||
:key="cmd.value"
|
||||
:label="cmd.label"
|
||||
:value="cmd.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</span>
|
||||
|
||||
<br v-if="dialogw == '100%'">
|
||||
<div v-if="dialogw == '100%'" style="margin: 6px;"></div>
|
||||
<el-button type="info" class="el-icon-search"
|
||||
v-on:click="showSelectedLogs(1)"
|
||||
:size="40" circle plain></el-button>
|
||||
@* <el-button v-show="logs != unll" type="success" class="el-icon-data-line"
|
||||
v-on:click="showPic"
|
||||
:size="40" circle plain></el-button> *@
|
||||
<span v-if="logs != unll">
|
||||
<span>
|
||||
<el-checkbox v-model="checkUUID" style="margin-left: 10px;">UUID去重 </el-checkbox>
|
||||
</span>
|
||||
<span>总数</span>
|
||||
<el-tag type="info">{{ allPageNum }}</el-tag>
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<!-- 主体内容 -->
|
||||
<div class="">
|
||||
<div v-for="log in logs" :key="log.ID" class="logs-list-div"
|
||||
style="">
|
||||
|
||||
<div class="log-entry">
|
||||
<span class="log" style="top: 3px;left: 4px;">
|
||||
ID: <strong>{{ log.ID }}</strong><span style="color:darkgray"> | </span>{{ log.TestTime }}
|
||||
</span>
|
||||
|
||||
<span class="log" style="top: 3px;right: 4px;">
|
||||
结果:
|
||||
<strong v-if="log.TestResult == 1" style="color:green;">{{ log.TestResult }}</strong>
|
||||
<strong v-else style="color:red;">{{ log.TestResult }}</strong>
|
||||
</span>
|
||||
|
||||
<span class="log" style="top: 21px;left: 4px;">
|
||||
LEV_10: <strong>{{ log.ADC_LEV_10 }}</strong>
|
||||
</span>
|
||||
|
||||
<span class="log" style="top: 21px;right: 4px;">
|
||||
信息:
|
||||
<strong v-if="log.TestResult == 1" style="color:green;">{{ log.TestInfo }}</strong>
|
||||
<strong v-else style="color:red;">{{ log.TestInfo }}</strong>
|
||||
</span>
|
||||
|
||||
<span class="log" style="top: 39px;left: 4px;">
|
||||
LEV_0 : <strong>{{ log.ADC_LEV_0 }}</strong>
|
||||
</span>
|
||||
|
||||
<span class="log" style="top: 39px;right: 4px;">
|
||||
软<span style="color:darkgray">/</span>硬件版本: {{ log.SoftwareVer }}<span style="color:darkgray"> / </span>{{ log.HardwareVer }}
|
||||
</span>
|
||||
|
||||
<span class="log" style="top: 57px;left: 4px;">
|
||||
实时值: <strong>{{ log.RealtimeVal }}</strong><span style="color:darkgray"> | </span>背景值: <strong>{{ log.BackgroundVal }}</strong><span style="color:darkgray"> | </span>基底值: <strong>{{ log.BaseVal }}</strong>
|
||||
</span>
|
||||
<span class="log" style="top: 93px;right: 4px;">
|
||||
稳定状态: {{ log.Stabilise }}
|
||||
</span>
|
||||
<span class="log" style="top: 75px;left: 4px;">
|
||||
UUID: {{ log.UUID }}
|
||||
</span>
|
||||
|
||||
<span class="log" style="top: 93px;left: 4px;">
|
||||
LEL: {{ log.LelPer }}%<span style="color:darkgray"> | </span>温度: {{ log.Temp }}℃<span style="color:darkgray"> | </span>状态机: {{ log.StateMachine }}
|
||||
</span>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<el-drawer title="统计图"
|
||||
:visible.sync="drawerPic"
|
||||
direction="btt"
|
||||
size="100%">
|
||||
|
||||
</el-drawer>
|
||||
<!-- 圆饼图 v-if="logs != unll" -->
|
||||
@* <div v-show="echartVis">
|
||||
<div style="display:inline-block; width: 51%; height:auto; float:left;margin: 10px 0 0 10px;">
|
||||
<div id="circular-echart" style="width: 440px; height:188px ; float:left;"></div>
|
||||
<div id="circular-echart2" style="width: 440px; height:188px ; float:left;"></div>
|
||||
</div>
|
||||
<!-- 柱状折线图 -->
|
||||
<div style="display:inline-block; width: 52%; height:auto; float:left;">
|
||||
<div id="bar-echart" style="width: 880px; height:233px ; float:left;"></div>
|
||||
</div>
|
||||
<!-- 柱状横置图 -->
|
||||
<div v-show="false" style="display:inline-block; width: 52%; height:auto; float:left;">
|
||||
<div id="profile-echart" style="width: 880px; height:444px ; float:left;"></div>
|
||||
</div>
|
||||
</div> *@
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- JavaScript引入 -->
|
||||
<script src="~/js/LogJs/testmachinelogindex.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
57
BLW_Log/Views/Tools/Index.cshtml
Normal file
57
BLW_Log/Views/Tools/Index.cshtml
Normal file
@@ -0,0 +1,57 @@
|
||||
@{
|
||||
Layout = null;
|
||||
}
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html style="overflow: auto;">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>BLW日志</title>
|
||||
<!-- Vue.js -->
|
||||
<script src="~/js/vue2.js"></script>
|
||||
<!-- 引入样式 -->
|
||||
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
|
||||
<!-- 引入组件库 -->
|
||||
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
|
||||
<!-- jQuery -->
|
||||
<script src="~/js/jquery.min.js"></script>
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div id="app" v-cloak style="width:100%;">
|
||||
|
||||
<div style="align-content: center; text-align: center; font-size: 22px; margin: 10px;">
|
||||
<el-button type="primary" v-on:click="logHome" plain circle style="float: left" icon="el-icon-s-home"></el-button>
|
||||
小端序转换工具
|
||||
<span style="font-size:12px;color:gray"> --v1.0.0</span>
|
||||
</div>
|
||||
|
||||
<el-input type="textarea"
|
||||
:rows="4"
|
||||
placeholder="请输入内容"
|
||||
v-model="textareaold">
|
||||
</el-input>
|
||||
<el-button type="danger" icon="el-icon-refresh" circle v-on:click="convertText"></el-button>
|
||||
<el-input type="textarea"
|
||||
:rows="4"
|
||||
placeholder="转换结果"
|
||||
v-model="textareanew">
|
||||
</el-input>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<script src="~/js/logjs/toolsindex.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
504
BLW_Log/Views/VoiceLog/Index.cshtml
Normal file
504
BLW_Log/Views/VoiceLog/Index.cshtml
Normal file
@@ -0,0 +1,504 @@
|
||||
@{
|
||||
Layout = null;
|
||||
}
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html style="overflow: auto;">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>BLW日志</title>
|
||||
<!-- Vue.js -->
|
||||
<script src="~/js/vue2.js"></script>
|
||||
<!-- 引入样式 -->
|
||||
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
|
||||
<!-- 引入组件库 -->
|
||||
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
|
||||
<!-- jQuery -->
|
||||
<script src="~/js/jquery.min.js"></script>
|
||||
|
||||
<!-- 引入第三方库 -->
|
||||
<script src="~/js/xlsx.mini.min.js"></script>
|
||||
|
||||
|
||||
<style>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.el-table__empty-block {
|
||||
height: auto !important;
|
||||
}
|
||||
|
||||
.el-dialog__footer {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.headbox {
|
||||
/*margin: 10px;*/
|
||||
}
|
||||
|
||||
.seachbox {
|
||||
margin: 10px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.bodybox {
|
||||
margin: 10px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.dialogbox .el-table .el-table__cell {
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.el-table .el-table__cell {
|
||||
padding: 6px 0;
|
||||
}
|
||||
|
||||
.iconClass {
|
||||
font-size: 20px; /* 加大图标大小 */
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.el-table-filter{
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
/* 日志列css */
|
||||
.cell .logdata {
|
||||
/* white-space: nowrap; 不换行 */
|
||||
overflow: hidden; /* 超出部分隐藏 */
|
||||
text-overflow: ellipsis; /* 显示省略号 */
|
||||
cursor: pointer;
|
||||
font-size: 12px;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 3;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
/* 表格行颜色设置 */
|
||||
.el-table .up-row {
|
||||
background: #ECF5FF;
|
||||
}
|
||||
|
||||
.el-table .down-row {
|
||||
background: #FEF0F0;
|
||||
}
|
||||
|
||||
.el-table .error-row {
|
||||
background: #F78989;
|
||||
}
|
||||
|
||||
/* 折叠面板 */
|
||||
.collapse-title {
|
||||
font-weight: bold;
|
||||
letter-spacing: 0.5px;
|
||||
}
|
||||
|
||||
.data-details {
|
||||
margin: 10px 0;
|
||||
padding: 15px;
|
||||
background: #f8f9fa;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.el-collapse-item__header {
|
||||
line-height: 16px;
|
||||
}
|
||||
|
||||
.el-collapse-item__content div{
|
||||
margin: 0 !important;
|
||||
word-break: break-all !important;
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div id="app" v-show="isReady" v-cloak style="width:100%;height:100%;">
|
||||
<div style="align-content: center; text-align: center; font-size: 22px; margin: 10px;">
|
||||
<el-button type="primary" v-on:click="logHome" plain circle style="float: left" icon="el-icon-s-home"></el-button>
|
||||
语音助手日志系统
|
||||
<span style="font-size:12px;color:gray"> --v1.3.0</span>
|
||||
</div>
|
||||
<!-- 顶部导航栏以及弹窗 -->
|
||||
<div class="headbox">
|
||||
<div class="seachbox">
|
||||
<el-button type="warning" v-on:click="openDialog = true" plain round>
|
||||
监控对象
|
||||
</el-button>
|
||||
<span v-if="dialogw == '100%'" style="margin-left: 6px;">
|
||||
<el-switch v-if="logs != unll"
|
||||
v-model="onlyCorrect"
|
||||
active-color="#FF0000"
|
||||
inactive-color="#00A000"
|
||||
:active-text="activeTxt"
|
||||
:inactive-text="inactiveTxt">
|
||||
</el-switch>
|
||||
</span>
|
||||
<span v-if="dialogw != '100%'">
|
||||
<el-date-picker v-model="pickerDate"
|
||||
type="daterange"
|
||||
align="right"
|
||||
unlink-panels
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:picker-options="pickerOptions"
|
||||
style="width: 230px;">
|
||||
</el-date-picker>
|
||||
<el-switch v-if="logs != unll"
|
||||
v-model="onlyCorrect"
|
||||
active-color="#FF0000"
|
||||
inactive-color="#00A000"
|
||||
:active-text="activeTxt"
|
||||
:inactive-text="inactiveTxt">
|
||||
</el-switch>
|
||||
</span>
|
||||
<span v-else>
|
||||
<span v-show="mobileSelectedVis">
|
||||
<br />
|
||||
<span class="demonstration" style="margin: 0 26px 0 27px;font-size:13px;"> 开始日期 </span>
|
||||
<el-date-picker v-model="pickerDate[0]"
|
||||
type="date" style="width: 217px;"
|
||||
placeholder="开始日期">
|
||||
</el-date-picker>
|
||||
<br />
|
||||
<span class="demonstration" style="margin: 0 26px 0 27px;font-size:13px;"> 结束日期 </span>
|
||||
<el-date-picker v-model="pickerDate[1]"
|
||||
type="date" style="width: 217px;"
|
||||
placeholder="结束日期">
|
||||
</el-date-picker>
|
||||
</span>
|
||||
|
||||
<br />
|
||||
<span>
|
||||
<span style="margin: 0 0 0 26px;"></span>
|
||||
<el-button type="text" v-on:click="dateMobile(1)">今天</el-button>
|
||||
<el-button type="text" v-on:click="dateMobile(3)">3天内</el-button>
|
||||
<el-button type="text" v-on:click="dateMobile(7)">7天内</el-button>
|
||||
<el-button type="text" v-on:click="dateMobile(15)">15天内</el-button>
|
||||
<el-button type="text" v-on:click="dateMobile(30)">30天内</el-button>
|
||||
</span>
|
||||
<br />
|
||||
|
||||
</span>
|
||||
|
||||
<el-button v-show="logs != unll" type="info" class="el-icon-refresh" v-on:click="showSelectedLogs(1)" :disabled="multipleBtn"
|
||||
:size="40" circle plain></el-button>
|
||||
<el-button v-show="logs != unll" type="success" class="el-icon-document" v-on:click="exportExcel"
|
||||
:size="40" circle plain></el-button>
|
||||
@* <el-button v-show="logs != unll" type="warning" class="el-icon-picture-outline" v-on:click="echartShow"
|
||||
:size="40" circle plain></el-button> *@
|
||||
|
||||
<!-- 弹窗 -->
|
||||
<el-dialog title="监控添加"
|
||||
:width="dialogw"
|
||||
:visible.sync="openDialog">
|
||||
<div v-if="mobileSelectedVis || dialogw != '100%'">
|
||||
<div class="seachbox">
|
||||
<el-select v-model="hotelCurrent"
|
||||
value-key="code"
|
||||
filterable
|
||||
clearable
|
||||
remote
|
||||
v-on:change="hotelChange"
|
||||
:remote-method="remoteHotel"
|
||||
placeholder="请选择酒店">
|
||||
<el-option v-for="hotel in hotels"
|
||||
:key="hotel.code"
|
||||
:label="hotel.name"
|
||||
:value="hotel">
|
||||
<span style="float: left">{{ hotel.name }}</span>
|
||||
<span style="float: right; color: #8492a6; font-size: 13px"> Code:{{ hotel.code }}</span>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="seachbox">
|
||||
<el-select v-model="roomCurrent"
|
||||
value-key="roomno"
|
||||
multiple
|
||||
filterable
|
||||
clearable
|
||||
remote
|
||||
collapse-tags
|
||||
:disabled="roomDisable"
|
||||
:remote-method="remoteRoom"
|
||||
placeholder="请选择房间">
|
||||
<el-button type="text" v-on:click="allRoomsBtn"> 全选房间</el-button>
|
||||
<el-option v-for="room in rooms"
|
||||
:key="room.id"
|
||||
:label="room.roomno"
|
||||
:value="room">
|
||||
<span style="float: left">{{ room.roomno }}</span>
|
||||
<span style="float: right; color: #8492a6; font-size: 13px"> Mac:{{ room.mac }}</span>
|
||||
</el-option>
|
||||
</el-select>
|
||||
<div class="seachbox" style="margin-left: 10px">
|
||||
<el-button type="success" v-on:click="handleAdd" :disabled="btnIntoDisable"
|
||||
round plain>加入监控</el-button>
|
||||
</div>
|
||||
<el-button type="danger" v-on:click="delSelectedLogs" :disabled="multipleBtn"
|
||||
round plain>删除所选</el-button>
|
||||
|
||||
<el-button type="success" class="el-icon-refresh" :size="40" v-on:click="refreshViewValue" circle plain></el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display:inline" v-else>
|
||||
<el-button type="success" class="el-icon-refresh" :size="40" v-on:click="refreshViewValue" circle plain></el-button>
|
||||
|
||||
</div>
|
||||
<div style="display:inline" v-if="dialogw == '100%'">
|
||||
<el-button type="success" class="el-icon-sort" :size="40" v-on:click="mobileSelectedVis = !mobileSelectedVis"
|
||||
circle plain></el-button>
|
||||
</div>
|
||||
|
||||
<div class="dialogbox" style="display: inline-block;width: 100%">
|
||||
<el-table v-if="dialogw != '100%'"
|
||||
border
|
||||
:data="selectHotelRoom"
|
||||
empty-text="暂无监控对象"
|
||||
:height="tableHeight - 350"
|
||||
v-on:selection-change="handleSelectionChange">
|
||||
<el-table-column prop="IsSelect"
|
||||
type="selection"
|
||||
width="50"
|
||||
align="center"
|
||||
header-align="center">
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="158">
|
||||
<template slot-scope="scope">
|
||||
<el-button slot="scope.row" type="primary" icon="el-icon-search" v-on:click="showLog(scope.$index, scope.row)"
|
||||
circle plain></el-button>
|
||||
<el-popconfirm title="确定取消监控吗?"
|
||||
v-on:confirm="handleRemove(scope.row)">
|
||||
<el-button slot="reference" type="danger" icon="el-icon-delete"
|
||||
circle plain></el-button>
|
||||
</el-popconfirm>
|
||||
<el-popconfirm title="确定延长有效期吗?"
|
||||
v-on:confirm="handleDelayed(scope.row)">
|
||||
<el-button slot="reference" type="warning" icon="el-icon-refresh-left"
|
||||
circle plain></el-button>
|
||||
</el-popconfirm>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="hotelNameAndCode" label="酒店" width="188" align="center"
|
||||
:filter-method="filterHandler" :filters="CreatDataTable.hotel" header-align="center" sortable></el-table-column>
|
||||
<el-table-column prop="roomNumber" label="房间" width="90" align="center"
|
||||
:filter-method="filterHandler" :filters="CreatDataTable.room" header-align="center" sortable></el-table-column>
|
||||
<el-table-column prop="createDateTime" label="创建时间" width="180" align="center"
|
||||
header-align="center" sortable></el-table-column>
|
||||
<el-table-column prop="remainingTime" label="有效期" width="110" align="center"
|
||||
header-align="center" sortable></el-table-column>
|
||||
@* <el-table-column label="最后记录" width="110" align="center"
|
||||
header-align="center">
|
||||
<template slot-scope="scope">
|
||||
<i v-if="!scope.row.lastData" class="el-icon-loading"></i>
|
||||
<span v-else>{{ scope.row.lastData }}</span>
|
||||
</template>
|
||||
</el-table-column> *@
|
||||
|
||||
</el-table>
|
||||
<el-table v-else
|
||||
border
|
||||
:data="selectHotelRoom"
|
||||
empty-text="暂无监控对象"
|
||||
:height="tableHeight - 350"
|
||||
v-on:selection-change="handleSelectionChange">
|
||||
<el-table-column prop="IsSelect"
|
||||
type="selection"
|
||||
width="43"
|
||||
align="center"
|
||||
header-align="center">
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="60" align="center" header-align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-button slot="scope.row" type="info" icon="el-icon-search" size="small" v-on:click="showLog(scope.$index, scope.row)"
|
||||
circle plain></el-button>
|
||||
<br />
|
||||
<el-popconfirm title="确定延长有效期吗?"
|
||||
v-on:confirm="handleDelayed(scope.row)">
|
||||
<el-button slot="reference" type="warning" icon="el-icon-refresh-left" size="small"
|
||||
circle plain></el-button>
|
||||
</el-popconfirm>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="酒店&房间" width="140" align="center" header-align="center" :filter-method="filterHandlerMobile" :filters="CreatDataTable.hotel">
|
||||
<template slot-scope="scope">
|
||||
<p style="font-size:10px">{{scope.row.hotelNameAndCode}}</p>
|
||||
<hr style="border: none; height: 1px; background-color: #D3DCE6;">
|
||||
<p>{{scope.row.roomNumber}}</p>
|
||||
@* <hr style="border: none; height: 1px; background-color: #D3DCE6;">
|
||||
<p style="font-size:11px">{{scope.row.mac}}</p> *@
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="创建&有效" width="155" align="center" header-align="center">
|
||||
<template slot-scope="scope">
|
||||
<p style="font-size:11px">{{scope.row.createDateTime}}</p>
|
||||
<hr style="border: none; height: 1px; background-color: #D3DCE6;">
|
||||
<p>{{scope.row.remainingTime}}</p>
|
||||
@* <hr style="border: none; height: 1px; background-color: #D3DCE6;">
|
||||
<i v-if="!scope.row.lastData" class="el-icon-loading"></i>
|
||||
<p v-if="scope.row.lastData" style="font-size:10px">{{scope.row.lastData}}</p> *@
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
|
||||
|
||||
</el-table>
|
||||
</div>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
@* <span>
|
||||
<el-select v-model="cmdCurrent"
|
||||
multiple
|
||||
clearable
|
||||
collapse-tags
|
||||
placeholder="请选择命令">
|
||||
<el-button type="text" v-on:click="allCmdBtn"> 全选</el-button>
|
||||
<el-option v-for="cmd in cmdList"
|
||||
:key="cmd.value"
|
||||
:label="cmd.label"
|
||||
:value="cmd.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</span> *@
|
||||
<span v-if="dialogw != '100%'">
|
||||
<el-date-picker v-model="pickerDate"
|
||||
type="daterange"
|
||||
align="right"
|
||||
unlink-panels
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:picker-options="pickerOptions"
|
||||
style="width: 230px;">
|
||||
</el-date-picker>
|
||||
</span>
|
||||
<span v-else>
|
||||
<span v-show="mobileSelectedVis">
|
||||
<br />
|
||||
<el-date-picker v-model="pickerDate[0]"
|
||||
type="date" style="width: 217px;"
|
||||
placeholder="开始日期">
|
||||
</el-date-picker>
|
||||
<span class="demonstration">开始日期 </span>
|
||||
<br />
|
||||
<el-date-picker v-model="pickerDate[1]"
|
||||
type="date" style="width: 217px;"
|
||||
placeholder="结束日期">
|
||||
</el-date-picker>
|
||||
<span class="demonstration">结束日期 </span>
|
||||
</span>
|
||||
|
||||
<br />
|
||||
<span>
|
||||
<el-button type="text" v-on:click="dateMobile(1)">今天</el-button>
|
||||
<el-button type="text" v-on:click="dateMobile(3)">3天内</el-button>
|
||||
<el-button type="text" v-on:click="dateMobile(7)">7天内</el-button>
|
||||
<el-button type="text" v-on:click="dateMobile(15)">15天内</el-button>
|
||||
<el-button type="text" v-on:click="dateMobile(30)">30天内</el-button>
|
||||
</span>
|
||||
<br />
|
||||
</span>
|
||||
|
||||
<span>
|
||||
<br v-if="dialogw == '100%'" />
|
||||
<el-button type="primary" v-on:click="showSelectedLogs(1)" style="margin-left:10px" :disabled="multipleBtn"
|
||||
round plain>显示日志</el-button>
|
||||
<el-button type="info" v-on:click="openDialog = false"
|
||||
round plain>取 消</el-button>
|
||||
</span>
|
||||
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="seachbox"></div>
|
||||
|
||||
</div>
|
||||
<!-- 主体内容 -->
|
||||
<div class="" style="height: 100%;">
|
||||
<el-collapse v-model="activeName">
|
||||
<!-- 外层循环:按 requestId 分组 -->
|
||||
<el-collapse-item v-for="(logss, requestId) in logs" :key="requestId" :name="requestId">
|
||||
<template slot="title">
|
||||
<span v-if="dialogw != '100%'">
|
||||
<!-- 总步数小于5 -->
|
||||
<span v-if="logss[0].lastStep != 5" style="color:#FF0000">
|
||||
{{ logss[0].hotelName + ' | ' + logss[0].roomNumber + ' | ' + logss[0].platform + ' | ' + logss[0].triggerTime + ' | ' + logss[0].timeDisparity+ 'ms'}}
|
||||
<span v-for="log in logss" :key="log.id" >
|
||||
<span v-if="log.step == 4 && log.commandDescription != 'success'" style="color:#FF0000">
|
||||
{{' | S' + (log.step + 1)}}
|
||||
</span>
|
||||
<span v-else style="color:#00A000">
|
||||
{{' | S' + (log.step + 1)}}
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
<span v-else style="color:#00A000">
|
||||
{{ logss[0].hotelName + ' | ' + logss[0].roomNumber + ' | ' + logss[0].platform + ' | ' + logss[0].triggerTime + ' | ' + logss[0].timeDisparity+ 'ms'}}
|
||||
<span v-for="log in logss" :key="log.id">
|
||||
<span v-if="log.step == 4 && log.commandDescription != 'success'" style="color:#FF0000">
|
||||
{{' | S' + (log.step + 1)}}
|
||||
</span>
|
||||
<span v-else style="color:#00A000">
|
||||
{{' | S' + (log.step + 1)}}
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
<span v-else>
|
||||
<span v-if="logss[0].lastStep != 5" style="color:#FF0000">
|
||||
{{ logss[0].hotelName + ' | ' + logss[0].roomNumber + ' | ' + logss[0].platform }}
|
||||
<br />
|
||||
{{logss[0].triggerTime + ' | ' + logss[0].timeDisparity+ 'ms'}}
|
||||
<span v-for="log in logss" :key="log.id">
|
||||
<span v-if="log.step == 4 && log.commandDescription != 'success'" style="color:#FF0000">
|
||||
{{' | S' + (log.step + 1)}}
|
||||
</span>
|
||||
<span v-else style="color:#00A000">
|
||||
{{' | S' + (log.step + 1)}}
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
<span v-else style="color:#00A000">
|
||||
{{ logss[0].hotelName + ' | ' + logss[0].roomNumber + ' | ' + logss[0].platform }}
|
||||
<br />
|
||||
{{logss[0].triggerTime + ' | ' + logss[0].timeDisparity+ 'ms'}}
|
||||
<span v-for="log in logss" :key="log.id">
|
||||
<span v-if="log.step == 4 && log.commandDescription != 'success'" style="color:#FF0000">
|
||||
{{' | S' + (log.step + 1)}}
|
||||
</span>
|
||||
<span v-else style="color:#00A000">
|
||||
{{' | S' + (log.step + 1)}}
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
</template>
|
||||
<div style="padding: 0 20px;">
|
||||
<!-- 内层循环:按 step 渲染每个步骤 -->
|
||||
<div v-for="log in logss" :key="log.id" style="margin: 10px 0; border-bottom: 1px solid #eee; padding-bottom: 5px;">
|
||||
<div>S{{ log.step + 1 }} - {{ log.triggerTime }}</div>
|
||||
<div style="color: #A0A0A0; margin-top: 1px; font-size:12px;">
|
||||
{{ log.commandDescription || 'null' }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-collapse-item>
|
||||
</el-collapse>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- JavaScript引入 -->
|
||||
<script src="~/js/LogJs/VoiceLogIndex.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
246
BLW_Log/Views/XlsxTool/Index.cshtml
Normal file
246
BLW_Log/Views/XlsxTool/Index.cshtml
Normal file
@@ -0,0 +1,246 @@
|
||||
@{
|
||||
Layout = null;
|
||||
}
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html style="overflow: auto;">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>金蝶表格导出日志</title>
|
||||
<!-- Vue.js -->
|
||||
<script src="~/js/vue2.js"></script>
|
||||
<!-- 引入样式 -->
|
||||
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
|
||||
<!-- 引入组件库 -->
|
||||
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
|
||||
<!-- jQuery -->
|
||||
<script src="~/js/jquery.min.js"></script>
|
||||
|
||||
<!-- 引入第三方库 -->
|
||||
<script src="~/js/echarts.min.js"></script>
|
||||
<script src="~/js/xlsx.mini.min.js"></script>
|
||||
<script src="~/lib/microsoft/signalr/dist/browser/signalr.min.js"></script>
|
||||
|
||||
|
||||
<style>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.el-table__empty-block {
|
||||
height: auto !important;
|
||||
}
|
||||
|
||||
.el-dialog__footer {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.headbox {
|
||||
/*margin: 10px;*/
|
||||
}
|
||||
|
||||
.seachbox {
|
||||
margin: 10px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.bodybox {
|
||||
margin: 10px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.dialogbox .el-table .el-table__cell {
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.el-table .el-table__cell {
|
||||
padding: 6px 0;
|
||||
}
|
||||
|
||||
.iconClass {
|
||||
font-size: 20px; /* 加大图标大小 */
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* 日志列css */
|
||||
.cell .logdata {
|
||||
/* white-space: nowrap; 不换行 */
|
||||
overflow: hidden; /* 超出部分隐藏 */
|
||||
text-overflow: ellipsis; /* 显示省略号 */
|
||||
cursor: pointer;
|
||||
font-size: 12px;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 3;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
/* 表格行颜色设置 */
|
||||
.el-table .up-row {
|
||||
background: #ECF5FF;
|
||||
}
|
||||
|
||||
.el-table .down-row {
|
||||
background: #FEF0F0;
|
||||
}
|
||||
|
||||
.el-table .error-row {
|
||||
background: #F78989;
|
||||
}
|
||||
|
||||
.el-select__tags-text {
|
||||
max-width: 7em; /* 假设每个汉字宽度大约是1em */
|
||||
overflow: hidden; /* 隐藏超出部分 */
|
||||
white-space: nowrap; /* 防止文本换行 */
|
||||
text-overflow: ellipsis; /* 显示省略号 */
|
||||
}
|
||||
|
||||
.logs-list-div {
|
||||
color: #888888;
|
||||
border: 1px solid #E9E9E960;
|
||||
background-color: #80808030;
|
||||
transition: all 0.3s ease;
|
||||
position: relative;
|
||||
width: auto;
|
||||
padding: 4px;
|
||||
height: 112px;
|
||||
border-radius: 3px;
|
||||
margin: 4px;
|
||||
background-color: #f9f9f9;
|
||||
}
|
||||
|
||||
.logs-list-div:hover {
|
||||
border-color: #409eff;
|
||||
background-color: #80808010;
|
||||
/* box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); 可选阴影 */
|
||||
}
|
||||
|
||||
.log {
|
||||
position: absolute;
|
||||
font-size: 12px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
strong {
|
||||
color: #444444; /* 示例:将文字颜色设置为红色 */
|
||||
font-size: 13px; /* 示例:将字体大小设置为18像素 */
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div id="app" v-show="isReady" v-cloak style="width:100%;">
|
||||
|
||||
<div style="align-content: center; text-align: center; font-size: 22px; margin: 10px;">
|
||||
<el-button type="primary" v-on:click="logHome" plain circle style="float: left" icon="el-icon-s-home"></el-button>
|
||||
<span>文档转换工具</span>
|
||||
<span style="font-size:12px;color:gray"> --v1.0.1</span>
|
||||
</div>
|
||||
<div style="margin:20px">
|
||||
<el-button type="success" v-on:click="GenerateFilesDia" plain>临时生成文件</el-button>
|
||||
<el-dialog title="请输入密码"
|
||||
:visible.sync="dialogVisible"
|
||||
width="60%"
|
||||
:close-on-click-modal="false"
|
||||
:before-close="handleClose">
|
||||
<el-input placeholder="请输入密码" v-model="password" show-password></el-input>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button v-on:click="dialogVisible = false">取 消</el-button>
|
||||
<el-button type="primary" v-on:click="GenerateFiles">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
@* <div id="appleft" style="display: inline-block; float:left; ">
|
||||
<!-- 顶部导航栏以及弹窗 -->
|
||||
<div class="headbox">
|
||||
<div class="seachbox">
|
||||
<span v-if="dialogw != '100%'">
|
||||
<el-date-picker v-model="pickerDate"
|
||||
type="daterange"
|
||||
align="right"
|
||||
unlink-panels
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:picker-options="pickerOptions"
|
||||
style="width: 230px;">
|
||||
</el-date-picker>
|
||||
</span>
|
||||
<span v-else>
|
||||
<span v-show="mobileSelectedVis">
|
||||
<br />
|
||||
<span class="demonstration" style="margin: 0 10px 0 10px;font-size:13px;">开始日期</span>
|
||||
<el-date-picker v-model="pickerDate[0]"
|
||||
type="date" style="width: 217px;"
|
||||
placeholder="开始日期">
|
||||
</el-date-picker>
|
||||
<br />
|
||||
<span class="demonstration" style="margin: 0 10px 0 10px;font-size:13px;">结束日期</span>
|
||||
<el-date-picker v-model="pickerDate[1]"
|
||||
type="date" style="width: 217px;"
|
||||
placeholder="结束日期">
|
||||
</el-date-picker>
|
||||
</span>
|
||||
|
||||
<br />
|
||||
<span>
|
||||
<span style="margin: 0 0 0 26px;"></span>
|
||||
<el-button type="text" v-on:click="dateMobile(1)">今天</el-button>
|
||||
<el-button type="text" v-on:click="dateMobile(3)">3天内</el-button>
|
||||
<el-button type="text" v-on:click="dateMobile(7)">7天内</el-button>
|
||||
<el-button type="text" v-on:click="dateMobile(0)">全部</el-button>
|
||||
</span>
|
||||
</span>
|
||||
<br v-if="dialogw == '100%'" />
|
||||
<span>
|
||||
<span class="demonstration" style="margin: 0 10px 0 10px;font-size:13px;">测试结果</span>
|
||||
<el-select v-model="resultCurrent"
|
||||
multiple
|
||||
clearable
|
||||
placeholder="测试结果">
|
||||
<el-button type="text" v-on:click="allInfoBtn"> 全选</el-button>
|
||||
<el-option key="0"
|
||||
label="失败"
|
||||
value="0">
|
||||
</el-option>
|
||||
<el-option key="1"
|
||||
label="成功"
|
||||
value="1">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</span>
|
||||
|
||||
<div v-if="dialogw == '100%'" style="margin: 6px;"></div>
|
||||
<el-button type="info" class="el-icon-search"
|
||||
v-on:click="showSelectedLogs(1)"
|
||||
:size="40" circle plain></el-button>
|
||||
|
||||
<span v-if="logs != unll">
|
||||
<span>总数</span>
|
||||
<el-tag type="info">{{ allPageNum }}</el-tag>
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<!-- 主体内容 -->
|
||||
<div class="">
|
||||
<div v-for="log in logs" :key="log.ID" class="logs-list-div"
|
||||
style="">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div> *@
|
||||
</div>
|
||||
|
||||
<!-- JavaScript引入 -->
|
||||
<script src="~/js/logjs/xlsxtool.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
3
BLW_Log/Views/_ViewImports.cshtml
Normal file
3
BLW_Log/Views/_ViewImports.cshtml
Normal file
@@ -0,0 +1,3 @@
|
||||
@using BLW_Log
|
||||
@using BLW_Log.Models
|
||||
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
|
||||
3
BLW_Log/Views/_ViewStart.cshtml
Normal file
3
BLW_Log/Views/_ViewStart.cshtml
Normal file
@@ -0,0 +1,3 @@
|
||||
@{
|
||||
Layout = "_Layout";
|
||||
}
|
||||
Reference in New Issue
Block a user