操作日志和数据同步用户体验及逻辑优化

This commit is contained in:
zhouyuejun
2019-02-26 11:14:31 +08:00
parent f231197046
commit 430d096d92
9 changed files with 316 additions and 237 deletions
@@ -1,28 +1,35 @@
<div class="system-main-container">
<div class="system-main-content card">
<div nz-row>
<div nz-col nzSpan="8">
<nz-form-item >
<nz-form-label class="left">请求的消息类型</nz-form-label>
<nz-form-control nzSpan="10">
<nz-select style="width: 160px;" [(ngModel)]="selectedValue" nzAllowClear nzPlaceHolder="Choose">
<nz-option nzValue="1" nzLabel="日航班计划"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col nzSpan="9">
<nz-form-item >
<nz-form-label class="left">时间</nz-form-label>
<nz-form-control nzSpan="20">
<nz-range-picker [(ngModel)]="dateRange" (ngModelChange)="onChange($event)" nzShowTime></nz-range-picker>
</nz-form-control>
</nz-form-item>
</div>
</div>
<div class="user-footer">
<button (click)='save()' nz-button nzType="primary" class="mr10" [disabled]='!dateRange'>确定</button>
<button (click)='cancel()' nz-button nzType="default">取消</button>
</div>
</div>
<div class="system-main-container">
<div class="system-main-content card">
<div>
<div class="dip mr-5">
<nz-form-item>
<nz-form-label class="mr-1" style="vertical-align:top">请求的消息类型</nz-form-label>
<nz-form-control style="display:inline-block">
<nz-select style="width: 200px;" [(ngModel)]="selectedValue" nzAllowClear nzPlaceHolder="Choose">
<nz-option nzValue="1" nzLabel="日航班计划"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
</div>
<div class="dip">
<nz-form-item>
<nz-form-label class="mr-1" style="vertical-align:top">时间</nz-form-label>
<nz-form-control style="display:inline-block">
<nz-date-picker class="mr-2" [nzShowToday]="false" [nzDisabledDate]="disabledStartDate" [nzShowTime]="{nzFormat:'HH:mm'}" nzFormat="yyyy-MM-dd HH:mm"
[(ngModel)]="startValue" nzPlaceHolder="请选择开始日期" (ngModelChange)="onStartChange($event)"
(nzOnOpenChange)="handleStartOpenChange($event)">
</nz-date-picker>
<nz-date-picker [nzShowToday]="false" [nzDisabledDate]="disabledEndDate" [nzShowTime]="{nzFormat:'HH:mm'}" nzFormat="yyyy-MM-dd HH:mm"
[(ngModel)]="endValue" nzPlaceHolder="请选择结束时间" [nzOpen]="endOpen" (ngModelChange)="onEndChange($event)"
(nzOnOpenChange)="handleEndOpenChange($event)">
</nz-date-picker>
</nz-form-control>
</nz-form-item>
</div>
</div>
<div class="user-footer">
<button (click)='save()' nz-button nzType="primary" class="mr10" [disabled]='!dateRange'>确定</button>
<!-- <button (click)='cancel()' nz-button nzType="default">取消</button> -->
</div>
</div>
</div>
@@ -1,54 +1,88 @@
import { Component, OnInit } from '@angular/core';
import { HttpClientService } from '../../../services/http-client.service';
import { Router } from '@angular/router';
import { NzMessageService,NzModalRef, NzModalService } from 'ng-zorro-antd';
import { NzMessageService, NzModalRef, NzModalService } from 'ng-zorro-antd';
@Component({
selector: 'app-data-synchronize',
templateUrl: './data-synchronize.component.html',
styleUrls: ['./data-synchronize.component.scss']
selector: 'app-data-synchronize',
templateUrl: './data-synchronize.component.html',
styleUrls: ['./data-synchronize.component.scss']
})
export class DataSynchronizeComponent implements OnInit {
selectedValue:any='1';
dateRange:any='';
search:any={
startDate:'',
endDate:''
}
constructor(
private http:HttpClientService,
private message: NzMessageService,
private modal: NzModalService,
) { }
selectedValue: any = '1';
dateRange: any = '';
search: any = {
startDate: '',
endDate: ''
}
constructor(
private http: HttpClientService,
private message: NzMessageService,
) { }
ngOnInit() {
}
onChange(result: Date): void {
this.search.startDate=this.changeDate(result[0]);
this.search.endDate=this.changeDate(result[1]);
}
//日期时间处理
changeDate(time){
var date = new Date(time);
var Y = date.getFullYear()+'';
var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1)+'';
var D = (date.getDate()<10?'0'+date.getDate():date.getDate())+'';
var h = (date.getHours()<10?'0'+date.getHours():date.getHours())+'' ;
var m = (date.getMinutes()<10?'0'+date.getMinutes():date.getMinutes())+'';
var s = date.getSeconds()<10?'0'+date.getSeconds():date.getSeconds()+'';
return Y+'-'+M+'-'+D+' '+h+':'+m+':'+s;
}
endOpen: boolean = false;
startValue: Date = null;
endValue: Date = null;
//保存
save(){
this.http.post('/msgexchangeapi/schd/sync',this.search).subscribe((json)=>{
if(json.is_success){
this.message.success(`提交成功!`);
}else{
this.message.error(`提交失败!`);
}
})
}
ngOnInit() {
}
disabledStartDate = (startValue: Date): boolean => {
if (!startValue || !this.endValue) {
return false;
}
return startValue.getTime() >= this.endValue.getTime();
};
disabledEndDate = (endValue: Date): boolean => {
if (!endValue || !this.startValue) {
return false;
}
return endValue.getTime() <= this.startValue.getTime();
};
onStartChange(date: Date): void {
this.startValue = date;
this.search.startDate = this.changeDate(date)
}
onEndChange(date: Date): void {
this.endValue = date;
this.search.endDate = this.changeDate(date)
console.log(this.search.endDate)
}
handleStartOpenChange(open: boolean): void {
if (!open && this.startValue) {
this.endOpen = true;
}
}
handleEndOpenChange(open: boolean): void {
this.endOpen = open;
}
//日期时间处理
changeDate(time) {
var date = new Date(time);
var Y = date.getFullYear() + '';
var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '';
var D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + '';
var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + '';
var m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + '';
var s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds() + '';
return Y + '-' + M + '-' + D + ' ' + h + ':' + m ;
}
//保存
save() {
this.http.post('/msgexchangeapi/schd/sync', this.search).subscribe((json) => {
if (json.is_success) {
this.message.success(`提交成功!`);
} else {
this.message.error(`提交失败!`);
}
})
}
}
@@ -1,63 +1,67 @@
<div class="system-main-container">
<div class="user-manage">
<div class="system-main-content card" id="main-box">
<div class="search-box">
<div nz-row>
<div nz-col nzSpan="8">
<nz-form-item >
<nz-form-label class="left">关键词</nz-form-label>
<nz-form-control nzSpan="17">
<input nz-input [(ngModel)]='search.keyword' placeholder="请输入关键词">
</nz-form-control>
</nz-form-item>
</div>
<div nz-col nzSpan="9">
<nz-form-item >
<nz-form-label class="left">时间</nz-form-label>
<nz-form-control nzSpan="20">
<nz-range-picker [(ngModel)]="dateRange" (ngModelChange)="onChange($event)" nzShowTime></nz-range-picker>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col nzSpan="6">
<nz-form-item >
<nz-form-control nzSpan="24">
<button class="mr10" nz-button nzType="primary" (click)="queryTable()"><i nz-icon type="search"></i>查询</button>
<button (click)="reset()" nz-button nzType="primary"><i nz-icon type="sync" theme="outline"></i>重置</button>
</nz-form-control>
</nz-form-item>
</div>
</div>
</div>
<app-request-status *ngIf='statusParamsTable.status!=4' [statusParams]='statusParamsTable'></app-request-status>
<div class="table-box" *ngIf='statusParamsTable.status==3||statusParamsTable.status==4||statusParamsTable.status==0'>
<nz-table [nzShowPagination]='false' #dataSet [nzData]="tableData">
<thead>
<tr>
<th>序号</th>
<th>用户名</th>
<th>模块</th>
<th>操作内容</th>
<th>操作时间</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let item of dataSet.data;let i=index">
<td>{{i+1}}</td>
<td>{{item.user_name}}</td>
<td>{{item.model_name}}</td>
<td>{{item.summary}}</td>
<td>{{item.log_datetime| date:'yyyy-MM-dd HH:mm:ss'}}</td>
</tr>
</tbody>
</nz-table>
<div class="page-box" *ngIf="statusParamsTable.status==3">
<nz-pagination [nzPageIndex]="search.page_index" (nzPageIndexChange)='pageChange($event)' [nzPageSize]='search.page_size' [nzTotal]="collectionSize"></nz-pagination>
</div>
</div>
</div>
</div>
</div>
<div class="system-main-container">
<div class="user-manage">
<div class="system-main-content card" id="main-box-logs">
<div class="search-box">
<div class="dip mr-5">
<nz-form-item>
<nz-form-label class="mr-1" style="vertical-align:top">关键词</nz-form-label>
<nz-form-control style="display:inline-block">
<input nz-input [(ngModel)]='search.keyword' placeholder="请输入关键词">
</nz-form-control>
</nz-form-item>
</div>
<div class="dip mr-4">
<nz-form-item>
<nz-form-label class="mr-1" style="vertical-align:top">时间</nz-form-label>
<nz-form-control style="display:inline-block">
<nz-date-picker [nzShowToday]="false" class="mr-2" [nzDisabledDate]="disabledStartDate" nzShowTime nzFormat="yyyy-MM-dd HH:mm:ss"
[(ngModel)]="startValue" nzPlaceHolder="请选择开始时间" (ngModelChange)="onStartChange($event)"
(nzOnOpenChange)="handleStartOpenChange($event)">
</nz-date-picker>
<nz-date-picker [nzShowToday]="false" [nzDisabledDate]="disabledEndDate" nzShowTime nzFormat="yyyy-MM-dd HH:mm:ss"
[(ngModel)]="endValue" nzPlaceHolder="请选择结束时间" [nzOpen]="endOpen"
(ngModelChange)="onEndChange($event)" (nzOnOpenChange)="handleEndOpenChange($event)">
</nz-date-picker>
</nz-form-control>
</nz-form-item>
</div>
<div class="dip">
<nz-form-item>
<nz-form-control>
<button class="mr10" nz-button nzType="primary" (click)="queryTable()"><i nz-icon type="search"></i>查询</button>
<button (click)="reset()" nz-button nzType="primary"><i nz-icon type="sync" theme="outline"></i>重置</button>
</nz-form-control>
</nz-form-item>
</div>
</div>
<app-request-status *ngIf='statusParamsTable.status!=4' [statusParams]='statusParamsTable'></app-request-status>
<div class="table-box" *ngIf='statusParamsTable.status==3||statusParamsTable.status==4||statusParamsTable.status==0'>
<nz-table [nzShowPagination]='false' #dataSet [nzData]="tableData">
<thead>
<tr>
<th>序号</th>
<th>用户名</th>
<th>模块</th>
<th>操作内容</th>
<th>操作时间</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let item of dataSet.data;let i=index">
<td>{{i+1}}</td>
<td>{{item.user_name}}</td>
<td>{{item.model_name}}</td>
<td>{{item.summary}}</td>
<td>{{item.log_datetime| date:'yyyy-MM-dd HH:mm:ss'}}</td>
</tr>
</tbody>
</nz-table>
<div class="page-box" *ngIf="statusParamsTable.status==3">
<nz-pagination [nzPageIndex]="search.page_index" (nzPageIndexChange)='pageChange($event)'
[nzPageSize]='search.page_size' [nzTotal]="collectionSize"></nz-pagination>
</div>
</div>
</div>
</div>
</div>
@@ -3,94 +3,126 @@ import { HttpClientService } from '../../../services/http-client.service';
import { Router } from '@angular/router';
import { NzMessageService } from 'ng-zorro-antd';
@Component({
selector: 'app-operation-logs',
templateUrl: './operation-logs.component.html',
styleUrls: ['./operation-logs.component.scss']
selector: 'app-operation-logs',
templateUrl: './operation-logs.component.html',
styleUrls: ['./operation-logs.component.scss']
})
export class OperationLogsComponent implements OnInit {
collectionSize:any ;
public tableData:any=[];
statusParamsTable:any={ //获取用户列表接口的状态,0请求失败 1请求前 2请求中 3请求成功,有数据 4请求成功,无数据
status:1,
}
public search:any={
page_index:'1',
page_size:'10',
date_start:'',
date_end:'',
keyword:'',
orgId:'',
}
logType:any={
'LOGIN':'登录',
'LOGOUT':'退出',
'USER_UI_SET':'修改用户设置',
'USER_INFO_OPT':'增删改用户信息',
};
optType:any={
'ADD':'新增',
'UPDATE':'修改',
'DELETE':'删除',
};
dateRange = [];
constructor(
private http:HttpClientService,
private router:Router,
private message: NzMessageService,
) { }
collectionSize: any;
public tableData: any = [];
statusParamsTable: any = { //获取用户列表接口的状态,0请求失败 1请求前 2请求中 3请求成功,有数据 4请求成功,无数据
status: 1,
}
public search: any = {
page_index: '1',
page_size: '10',
date_start: '',
date_end: '',
keyword: '',
orgId: '',
}
logType: any = {
'LOGIN': '登录',
'LOGOUT': '退出',
'USER_UI_SET': '修改用户设置',
'USER_INFO_OPT': '增删改用户信息',
};
optType: any = {
'ADD': '新增',
'UPDATE': '修改',
'DELETE': '删除',
};
ngOnInit() {
this.queryTable();
}
onChange(result: Date): void {
this.search.date_start=this.changeDate(result[0]);
this.search.date_end=this.changeDate(result[1]);
}
//日期时间处理
changeDate(time){
var date = new Date(time);
var Y = date.getFullYear()+'';
var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1)+'';
var D = (date.getDate()<10?'0'+date.getDate():date.getDate())+'';
var h = (date.getHours()<10?'0'+date.getHours():date.getHours())+'' ;
var m = (date.getMinutes()<10?'0'+date.getMinutes():date.getMinutes())+'';
var s = date.getSeconds()<10?'0'+date.getSeconds():date.getSeconds()+'';
return Y+'-'+M+'-'+D+' '+h+':'+m+':'+s;
}
//重置,重置搜索条件
reset(){
this.search.page_index=1;
this.search.page_size=10;
this.search.keyword='';
this.search.date_start='';
this.search.date_end='';
this.queryTable();
}
//获取列表
queryTable():void{
this.statusParamsTable.status=1;
this.tableData=[];
this.http.get('/sysapi/oplog/list',this.search).subscribe((json)=>{
if(json.is_success){
this.tableData=json.body.recordList;
this.collectionSize=json.body.recordCount;
if(json.body.recordList&&json.body.recordList.length>0){
this.statusParamsTable.status=3;
}else{
this.statusParamsTable.status=4;
}
}else{
this.statusParamsTable.status=0;
}
})
}
//翻页
pageChange(event){
this.search.page_index=event;
this.queryTable();
}
endOpen: boolean = false;
startValue: Date = null;
endValue: Date = null;
constructor(
private http: HttpClientService,
) { }
ngOnInit() {
this.queryTable();
}
disabledStartDate = (startValue: Date): boolean => {
if (!startValue || !this.endValue) {
return false;
}
return startValue.getTime() >= this.endValue.getTime();
};
disabledEndDate = (endValue: Date): boolean => {
if (!endValue || !this.startValue) {
return false;
}
return endValue.getTime() <= this.startValue.getTime();
};
onStartChange(date: Date): void {
this.startValue = date;
this.search.date_start = this.changeDate(date)
}
onEndChange(date: Date): void {
this.endValue = date;
this.search.date_end = this.changeDate(date)
}
handleStartOpenChange(open: boolean): void {
if (!open && this.startValue) {
this.endOpen = true;
}
}
handleEndOpenChange(open: boolean): void {
this.endOpen = open;
}
//日期时间处理
changeDate(time) {
var date = new Date(time);
var Y = date.getFullYear() + '';
var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '';
var D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + '';
var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + '';
var m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + '';
var s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds() + '';
return Y + '-' + M + '-' + D + ' ' + h + ':' + m + ':' + s;
}
//重置,重置搜索条件
reset() {
this.search.page_index = 1;
this.search.page_size = 10;
this.search.keyword = '';
this.search.date_start = '';
this.startValue = null;
this.search.date_end = '';
this.endValue = null;
}
//获取列表
queryTable(): void {
this.statusParamsTable.status = 1;
this.tableData = [];
this.http.get('/sysapi/oplog/list', this.search).subscribe((json) => {
if (json.is_success) {
this.tableData = json.body.recordList;
this.collectionSize = json.body.recordCount;
if (json.body.recordList && json.body.recordList.length > 0) {
this.statusParamsTable.status = 3;
} else {
this.statusParamsTable.status = 4;
}
} else {
this.statusParamsTable.status = 0;
}
})
}
//翻页
pageChange(event) {
this.search.page_index = event;
this.queryTable();
}
}
@@ -1,5 +1,5 @@
<div class="system-main-container">
<div class="card " id="main-box">
<div class="card " id="main-box-setting">
<nz-tabset [nzTabPosition]="'top'" [nzType]="'card'" class="self-main-content">
<nz-tab nzTitle="自定义显示列">
<div class="self-row-box">
@@ -41,9 +41,9 @@ export class PersonalSettingsComponent implements OnInit {
ngOnInit() {
// 页面监听 动态改变表单高度
$('#main-box').css('height', (document.documentElement.clientHeight - 106 + 'px'));
$('#main-box-setting').css('height', (document.documentElement.clientHeight - 106 + 'px'));
$(window).resize(function () {
$('#main-box').css('height', (document.documentElement.clientHeight - 106 + 'px'));
$('#main-box-setting').css('height', (document.documentElement.clientHeight - 106 + 'px'));
})
//this.list=[{"COL_CODE":"FLNO", "COL_CN":"航班号", "COL_ORDER":"10"}, {"COL_CODE":"ALCD", "COL_CN":"航空公司", "COL_ORDER":"8"}, {"COL_CODE":"FLIN", "COL_CN":"航线类别", "COL_ORDER":"4"}, {"COL_CODE":"FLTY", "COL_CN":"航班类别", "COL_ORDER":"5"}, {"COL_CODE":"MVIN", "COL_CN":"航向指示", "COL_ORDER":"9"}, {"COL_CODE":"TRML", "COL_CN":"候机楼", "COL_ORDER":"7"}, {"COL_CODE":"RENO", "COL_CN":"飞机号", "COL_ORDER":"3"}, {"COL_CODE":"SODT", "COL_CN":"计划到达/出发", "COL_ORDER":"13"}, {"COL_CODE":"ESTT", "COL_CN":"预计到达/出发", "COL_ORDER":"14"}, {"COL_CODE":"ACTT", "COL_CN":"实际到达/出发", "COL_ORDER":"15"}, {"COL_CODE":"STND", "COL_CN":"停机位", "COL_ORDER":"16"}, {"COL_CODE":"ORDER", "COL_CN":"排序", "COL_ORDER":"17"} ]
this.defaultCols = [
@@ -57,14 +57,15 @@ export class RoleManagementComponent implements OnInit {
})
}
//重置,重置搜索条件
reset(){
this.search.page_index=1;
this.search.page_size=10;
this.search.role_name='';
this.queryTable();
}
// reset(){
// this.search.page_index=1;
// this.search.page_size=10;
// this.search.role_name='';
// this.queryTable();
// }
//获取列表
queryTable():void{
this.search.page_index=1;
this.statusParamsTable.status=1;
this.tableData=[];
this.http.get('/sysapi/setting/role/list',this.search).subscribe((json)=>{
@@ -5,7 +5,7 @@
<ul [hidden]='statusParamsTree.status!=3' id="treeDemo" class="ztree"></ul>
</div>
<!-- <div nz-col nzSpan="1"></div> -->
<div class="system-main-content card" id="main-box">
<div class="system-main-content card" id="main-box-user">
<div class="search-box">
<div class="dip mr-4">
<nz-form-item>
@@ -45,10 +45,10 @@ export class UserManagementComponent implements OnInit {
ngOnInit() {
// 页面监听 动态改变表单高度
$('#tree-box').css('height',(document.documentElement.clientHeight-106+'px'));
$('#main-box').css('height',(document.documentElement.clientHeight-106+'px'));
$('#main-box-user').css('height',(document.documentElement.clientHeight-106+'px'));
$(window).resize(function(){
$('#tree-box').css('height',(document.documentElement.clientHeight-126+'px'));
$('#main-box').css('height',(document.documentElement.clientHeight-126+'px'));
$('#main-box-user').css('height',(document.documentElement.clientHeight-126+'px'));
})
this.initTree();
this.queryTable();
@@ -96,15 +96,16 @@ export class UserManagementComponent implements OnInit {
this.visible = false;
}
//重置,重置搜索条件
reset(){
this.search.page_index=1;
this.search.page_size=10;
this.search.real_name='';
this.search.login_name='';
this.queryTable();
}
// reset(){
// this.search.page_index=1;
// this.search.page_size=10;
// this.search.real_name='';
// this.search.login_name='';
// this.queryTable();
// }
//获取列表
queryTable():void{
this.search.page_index=1;
this.statusParamsTable.status=1;
this.http.get('/sysapi/setting/user/list',this.search).subscribe((json)=>{
if(json.is_success){