Compare commits

...

9 Commits

  1. 4
      proxy.config.json
  2. 49
      src/app/pages/home-page-comprehensive/home-page-comprehensive.component.html
  3. 938
      src/app/pages/home-page-comprehensive/home-page-comprehensive.component.ts
  4. 10
      src/app/pages/home-page/home-page.component.html
  5. 10
      src/app/pages/home-page/home-page.component.ts
  6. 18
      src/app/pages/home/home.component.html
  7. 6
      src/app/pages/home/home.component.ts
  8. 7
      src/app/pages/records/criminal-records-admin/criminal-records-admin.component.ts
  9. 1140
      src/app/pages/records/criminal-records/criminal-records.component.ts
  10. 121
      src/app/pages/singlelogin/singlelogin.component.html
  11. 234
      src/app/pages/singlelogin/singlelogin.component.scss
  12. 73
      src/app/pages/singlelogin/singlelogin.component.ts
  13. 7
      src/app/pages/today-warning-admin/today-warning-admin.component.ts
  14. 3
      src/app/pages/today-warning/get-out-of-line-details/get-out-of-line-details.component.ts
  15. 7
      src/app/pages/today-warning/today-warning.component.ts
  16. 2
      src/app/system-management/navigation/navigation.component.html
  17. 1
      src/app/system-management/navigation/navigation.component.ts
  18. 4
      src/app/system-management/organization/change-or/change-or.component.html
  19. 5
      src/app/system-management/organization/change-or/change-or.component.scss
  20. 55
      src/app/system-management/organization/change-or/change-or.component.ts
  21. 5
      src/app/system-management/organization/organization.component.html
  22. 45
      src/app/system-management/organization/organization.component.ts
  23. 2
      src/app/system-management/system-management.module.ts
  24. 12
      src/app/system-management/user/edituser/edituser.component.ts

4
proxy.config.json

@ -1,6 +1,6 @@
{
"/api": {
"target": "http://121.36.37.70:8906/",
"target": "https://znaq.sinochemoilmarketing.com/",
"测试1": "http://121.36.37.70:8906/",
"测试2": "https://znaq.sinochemoilmarketing.com/",
"测试3": "https://gas.anxincloud.cn/",
@ -9,7 +9,7 @@
"changeOrigin": true
},
"/signalr": {
"target": "http://121.36.37.70:8906/",
"target": "https://znaq.sinochemoilmarketing.com/",
"secure": false,
"ws": true,
"logLevel": "debug"

49
src/app/pages/home-page-comprehensive/home-page-comprehensive.component.html

@ -44,7 +44,7 @@
<nz-spin *ngIf="isSpin" nzSimple class="nzspin"></nz-spin>
</div>
<div class="leftitem ranking">
<span class="itemname">近30天事件排名</span>
<span class="itemname">油站近30天事件排名</span>
<div class="box eventbox">
<div class="eventboxitem" *ngFor="let item of HomeAggregatioData.violationNameAgg;let key = index">
<div class="eventname" [title]="item.eventSystemName">
@ -134,14 +134,15 @@
</div>
<div class="content_box">
<div class="leftitem leftitemlimit">
<div class="eventechartpieAll" id="eventechartpieAll">
<div class="eventechartpieAll" id="eventechartpieAll_YK">
</div>
<nz-spin *ngIf="isSpin" nzSimple class="nzspin"></nz-spin>
<nz-spin *ngIf="isSpin_YK" nzSimple class="nzspin"></nz-spin>
</div>
<div class="leftitem ranking">
<span class="itemname">近30天事件排名</span>
<span class="itemname">油库近30天事件排名</span>
<div class="box eventbox">
<div class="eventboxitem" *ngFor="let item of HomeAggregatioData.violationNameAgg;let key = index">
<div class="eventboxitem"
*ngFor="let item of HomeAggregatioData_YK.violationNameAgg;let key = index">
<div class="eventname" [title]="item.eventSystemName">
<div class="block" [ngClass]="{'yellow': key < 3,'blue': key > 2}">
<ng-container *ngIf="key != 9; else elseTemplate">
@ -156,7 +157,7 @@
<div class="progressbox">
<div class="progress">
<div class="colorbar"
[ngStyle]="width(item.count,HomeAggregatioData.violationNameAgg[0].count)"
[ngStyle]="width(item.count,HomeAggregatioData_YK.violationNameAgg[0].count)"
[ngClass]="{'yellow': key < 3,'blue': key > 2}">
</div>
</div>
@ -167,12 +168,12 @@
</div>
</div>
<nz-spin *ngIf="isSpin" nzSimple class="nzspin"></nz-spin>
<nz-spin *ngIf="isSpin_YK" nzSimple class="nzspin"></nz-spin>
</div>
<div class="leftitem ranking" style="margin-left: 50px;">
<span class="itemname">近30天油排名</span>
<span class="itemname">近30天油排名</span>
<div class="box eventbox">
<div class="eventboxitem" *ngFor="let item of HomeAggregatioData.stationAgg;let key = index">
<div class="eventboxitem" *ngFor="let item of HomeAggregatioData_YK.stationAgg;let key = index">
<div class="eventname" [title]="item.companyName + item.stationName">
<div class="block" [ngClass]="{'yellow': key < 3,'blue': key > 2}">
<ng-container *ngIf="key != 9; else elseTemplate">
@ -187,7 +188,7 @@
<div class="progressbox">
<div class="progress">
<div class="colorbar"
[ngStyle]="width(item.count,HomeAggregatioData.stationAgg[0].count)"
[ngStyle]="width(item.count,HomeAggregatioData_YK.stationAgg[0].count)"
[ngClass]="{'yellow': key < 3,'blue': key > 2}">
</div>
</div>
@ -198,28 +199,28 @@
</div>
</div>
<nz-spin *ngIf="isSpin" nzSimple class="nzspin"></nz-spin>
<nz-spin *ngIf="isSpin_YK" nzSimple class="nzspin"></nz-spin>
</div>
<div class="rightitem">
<div class="numlistbox">
<img src="../../../assets/images/stationNum.png" alt="">
<div class="content">
<span class="lightspan lightspan1">{{HomeAggregatioData.dev.stationCount}}</span>
<span>接入油(个)</span>
<span class="lightspan lightspan1">{{HomeAggregatioData_YK.dev.stationCount}}</span>
<span>接入油(个)</span>
</div>
</div>
<div class="numlistbox">
<img src="../../../assets/images/modelNum.png" alt="">
<div class="content">
<span class="lightspan lightspan2">{{HomeAggregatioData.dev.violationCount}}</span>
<span class="lightspan lightspan2">{{HomeAggregatioData_YK.dev.violationCount}}</span>
<span>预警分析模型(个)</span>
</div>
</div>
<div class="numlistbox">
<img src="../../../assets/images/cameraNum.png" alt="">
<div class="content">
<span class="lightspan lightspan3">{{HomeAggregatioData.dev.cameraCount}}</span>
<span class="lightspan lightspan3">{{HomeAggregatioData_YK.dev.cameraCount}}</span>
<span>摄像头(个)</span>
</div>
</div>
@ -252,15 +253,15 @@
<div class="bottomitemcontent bottomitemcontent2">
<div class="bottomitemchartboxspecial">
<span class="bartitle">油库近30天预警事件统计</span>
<div class="eventechartpie" id="eventechartpie"></div>
<div class="eventechartline" id="eventechartline"></div>
<div class="eventechartpie" id="eventechartpie_YK"></div>
<div class="eventechartline" id="eventechartline_YK"></div>
<div class="angle-border left-top-border"></div>
<div class="angle-border right-top-border"></div>
<div class="angle-border left-bottom-border"></div>
<div class="angle-border right-bottom-border"></div>
<nz-spin *ngIf="isSpinOfEventWarning" nzSimple class="nzspin"></nz-spin>
<nz-spin *ngIf="isSpinOfEventWarning_YK" nzSimple class="nzspin"></nz-spin>
</div>
</div>
</div>
</div>
<div class="bottomitem">
<div class="title">
@ -297,27 +298,27 @@
<div class="bottomitemcontent bottomitemcontent4">
<div class="bottomitemchartboxspecial">
<span class="bartitle">油库近30天发油预警走势</span>
<div class="eventechartpie" id="oilechartpie"></div>
<div style="height: 80%;" class="eventechartline" id="oilechartline"></div>
<div class="eventechartpie" id="oilechartpie_YK"></div>
<div style="height: 80%;" class="eventechartline" id="oilechartline_YK"></div>
<div class="angle-border left-top-border"></div>
<div class="angle-border right-top-border"></div>
<div class="angle-border left-bottom-border"></div>
<div class="angle-border right-bottom-border"></div>
<nz-spin *ngIf="isSpinOfOilDischarge" nzSimple class="nzspin"></nz-spin>
<nz-spin *ngIf="isSpinOfOilDischarge_YK" nzSimple class="nzspin"></nz-spin>
<div class="oilNum">
<div class="oilNumItem">
<div class="pointbox">
<div class="point"></div>
<span>累计发油总车次</span>
</div>
{{HomeAggregatioData.ouViolationType.ouTotalCount}}
{{HomeAggregatioData_YK.ouViolationType.ouTotalCount}}
</div>
<div class="oilNumItem">
<div class="pointbox">
<div class="point"></div>
<span>累计发油预警车次</span>
</div>
{{HomeAggregatioData.ouViolationType.ouNotCorrectCount}}
{{HomeAggregatioData_YK.ouViolationType.ouNotCorrectCount}}
</div>
</div>
</div>

938
src/app/pages/home-page-comprehensive/home-page-comprehensive.component.ts

File diff suppressed because it is too large Load Diff

10
src/app/pages/home-page/home-page.component.html

@ -46,7 +46,7 @@
</div>
<img class="bucket" src="../../../assets/images/bucket.png" alt="">
<img class="circle" src="../../../assets/images/circle.png" alt=""> -->
<div class="eventechartpieAll" id="eventechartpieAll">
<div class="eventechartpieAll" id="eventechartpieAll_YZ">
</div>
@ -233,11 +233,11 @@
<div class="bottomitemcontent bottomitemcontent1">
<div class="bottomitemchartboxspecial">
<span class="bartitle">近30天预警事件统计</span>
<div class="eventechartpie" id="eventechartpie">
<div class="eventechartpie" id="eventechartpie_YZ">
</div>
<div class="eventechartline" id="eventechartline">
<div class="eventechartline" id="eventechartline_YZ">
</div>
<div class="angle-border left-top-border"></div>
@ -255,10 +255,10 @@
<div class="bottomitemcontent bottomitemcontent1">
<div class="bottomitemchartboxspecial">
<span class="bartitle">近30天卸油预警走势</span>
<div class="eventechartpie" id="oilechartpie">
<div class="eventechartpie" id="oilechartpie_YZ">
</div>
<div style="height: 80%;" class="eventechartline" id="oilechartline">
<div style="height: 80%;" class="eventechartline" id="oilechartline_YZ">
</div>
<div class="angle-border left-top-border"></div>

10
src/app/pages/home-page/home-page.component.ts

@ -533,14 +533,14 @@ export class HomePageComponent implements OnInit {
// 饼图
this.warningechartpieAll = echarts.init(
document.getElementById("eventechartpieAll"),
document.getElementById("eventechartpieAll_YZ"),
null,
{ devicePixelRatio: 2 }
);
// this.equipmentechart = echarts.init(document.getElementById('equipmentechart'));
// 预警饼图
this.warningechartpie = echarts.init(
document.getElementById("eventechartpie"),
document.getElementById("eventechartpie_YZ"),
null,
{ devicePixelRatio: 2 }
);
@ -556,12 +556,12 @@ export class HomePageComponent implements OnInit {
});
// 预警线图
this.warningechartbar = echarts.init(
document.getElementById("eventechartline")
document.getElementById("eventechartline_YZ")
);
// 卸油饼图
this.oilchartpie = echarts.init(
document.getElementById("oilechartpie"),
document.getElementById("oilechartpie_YZ"),
null,
{ devicePixelRatio: 2 }
);
@ -576,7 +576,7 @@ export class HomePageComponent implements OnInit {
this.get30daysViolate(false, arr);
});
// 卸油线图
this.oilchartbar = echarts.init(document.getElementById("oilechartline"));
this.oilchartbar = echarts.init(document.getElementById("oilechartline_YZ"));
window.onresize = () => {
setTimeout(() => {

18
src/app/pages/home/home.component.html

@ -3,13 +3,25 @@
<div class="boxleft">
<img *ngIf="isProd" src="../../../assets/images/logo2.png" alt="">
</div>
<div class="libox" *ngIf="!isGasStationNav">
<div class="libox" *ngIf="!isGasStationNav && isComprehensive">
<li class="router-link-active">
AI视频预警统计
</li>
</div>
<div class="libox" *ngIf="!isGasStationNav && !isComprehensive">
<li *ngFor="let item of menuList1" (click)="routerChange(item)"
[ngClass]="{'router-link-active': item.name == selectedItem}">
{{item.name}}
</li>
</div>
<div class="libox" *ngIf="isGasStationNav">
<div class="libox" *ngIf="isGasStationNav && isComprehensive">
<li class="router-link-active">
AI视频预警统计
</li>
</div>
<div class="libox" *ngIf="isGasStationNav && !isComprehensive">
<ng-container *ngIf="isGasStationBack; else elseTemplate">
<li [routerLink]="['/plan/petrolStation']" routerLinkActive="router-link-active">
数字油站
@ -63,7 +75,7 @@
<img src="../../../assets/images/head.png" alt="">
</a>
<nz-dropdown-menu #menu="nzDropdownMenu">
<ul nz-menu nzSelectable>
<ul nz-menu nzSelectable *ngIf="isZT ==='false'">
<li *ngIf="isGasStation" nz-menu-item (click)="navChange('/oliStationInfo')">基本信息</li>
<li *ngIf="isGasStation" nz-menu-item (click)="navChange('/equipmentInfo')">器材信息</li>
<li nz-menu-item (click)="changePassword()">修改密码</li>

6
src/app/pages/home/home.component.ts

@ -102,6 +102,7 @@ export class HomeComponent implements OnInit {
selectedItem;
isZT = sessionStorage.getItem("isZT") || "false";
isComprehensive = false;
routerChange(item) {
if (
JSON.parse(sessionStorage.getItem("isGasStation")) &&
@ -131,6 +132,11 @@ export class HomeComponent implements OnInit {
{ name: "证照管理", url: "/audit" },
];
}
//油站人员进入油站
if (this.router.url.indexOf("comprehensive") != -1) {
//控制返回按钮显示
this.isComprehensive = true;
}
this.isProd = this.patternService.isProd;
this.initSelectedItem(this.router);

7
src/app/pages/records/criminal-records-admin/criminal-records-admin.component.ts

@ -662,6 +662,13 @@ export class CriminalRecordsAdminComponent implements OnInit {
params: params,
})
.subscribe((data: any) => {
data.result.items = data.result.items.filter((item) => {
return (
item.violation.violationType != "证照资质" ||
(item.violation.violationType == "证照资质" &&
item.gasStation.companyName.includes("延长"))
);
});
this.list = this.list.concat(data.result.items);
this.list = [...this.list];
this.totalCount = data.result.totalCount;

1140
src/app/pages/records/criminal-records/criminal-records.component.ts

File diff suppressed because it is too large Load Diff

121
src/app/pages/singlelogin/singlelogin.component.html

@ -1,121 +0,0 @@
<!-- <nz-modal nzWidth="1300px" [(nzVisible)]="isVisible" nzMaskClosable="false" nzTitle="请绑定用户"
(nzOnCancel)="handleCancel()" (nzOnOk)="handleOk()" :nzFooter=" " nzClosable="false" nzKeyboard="false">
<ng-container *nzModalContent>
<div class="userBox">
<div class="orbox">
<div class="topbox2">
<div class="lefttop">
组织机构
</div>
<div class="righttop">
<nz-input-group nzPrefixIcon="search">
<input type="text" nz-input placeholder="请输入机构名称" [(ngModel)]="searchValue" />
</nz-input-group>
</div>
</div>
<div class="treeTitle">
<span>组织机构</span>
<label nz-checkbox [(ngModel)]="IsContainsChildren"
(ngModelChange)="getAllOrganization()">包含子节点</label>
</div>
<div class="treebox">
<nz-tree [nzSearchValue]="searchValue" #nzTreeComponent [nzData]="nodes"
[nzExpandedKeys]="defaultExpandedKeys" [nzSelectedKeys]='nzSelectedKeys'
(nzClick)="nzClick($event)" [nzExpandedIcon]="multiExpandedIconTpl" [nzHideUnMatched]="true"
[nzTreeTemplate]="nzTreeTemplate">
</nz-tree>
<ng-template #nzTreeTemplate let-node let-origin="origin">
<div class="nodebox">
<span class="name">{{ node.title }}</span>
<span class="name">({{node.origin.products? node.origin.products.usersCount : 0}})</span>
</div>
</ng-template>
<ng-template #multiExpandedIconTpl let-node let-origin="origin">
<ng-container *ngIf="node.children.length == 0; else elseTemplate">
</ng-container>
<ng-template #elseTemplate>
<i nz-icon [nzType]="node.isExpanded ? 'caret-down' : 'caret-right'"
class="ant-tree-switcher-line-icon"></i>
</ng-template>
</ng-template>
</div>
</div>
<div class="box">
<div class="topbox">
<div class="lefttop">
<span>用户列表</span>
<span><i nz-icon nzType="search"></i> {{usersNum}}名用户</span>
</div>
<div class="righttop">
<form nz-form [formGroup]="validateForm" (ngSubmit)="submitForm()">
<nz-form-item>
<nz-form-control>
<nz-input-group nzPrefixIcon="search">
<input type="text" nz-input placeholder="请输入用户名" formControlName="search" />
</nz-input-group>
</nz-form-control>
<button style="display: none;" type="submit"></button>
</nz-form-item>
</form>
</div>
</div>
<div class="tablebox" #tablebox>
<nz-table #basicTable [nzLoading]="loading" [nzData]="usersLIst" [nzShowPagination]='false'
[nzPageSize]='16'>
<thead>
<tr>
<th></th>
<th>账号</th>
<th>姓名</th>
<th>角色/预警接收级别</th>
<th [width]="'13%'">所属机构</th>
<th [width]="'8%'">用户状态</th>
<th [width]="'8%'">备注</th>
<th [width]="'10%'">操作</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let data of basicTable.data">
<td><img src="../../../assets/images/user.png" alt=""></td>
<td>{{ data.userName }}</td>
<td>{{ data.name }}</td>
<td nzBreakWord>
<span style="margin-right: 8px;"
*ngFor="let item of data.roleDisplayNames">{{item}}</span>
</td>
<td>
{{data.organizationName}}
</td>
<td>
<ng-container *ngIf="data.isActive; else elseTemplate">
<span class="greenColor2">已启用</span>
</ng-container>
<ng-template #elseTemplate>
<span class="redColor">已停用</span>
</ng-template>
</td>
<td>
{{data.note}}
</td>
<td class="operation">
<span class="blue">绑定</span>
</td>
</tr>
</tbody>
</nz-table>
</div>
<div class="pagination">
<nz-pagination [nzHideOnSinglePage]="false" [nzPageIndex]="1" [nzTotal]="usersNum" [nzPageSize]="16"
[nzShowTotal]="totalTemplate" nzShowQuickJumper (nzPageIndexChange)="pageChange($event)">
</nz-pagination>
<ng-template #totalTemplate let-total> 16条/页,共{{usersNum}}条 </ng-template>
</div>
</div>
</div>
</ng-container>
</nz-modal> -->

234
src/app/pages/singlelogin/singlelogin.component.scss

@ -1,234 +0,0 @@
.userBox {
width: 100%;
height: 100%;
min-height: 600px;
background: #ffffff;
box-sizing: border-box;
padding: 20px;
overflow: hidden;
display: flex;
position: relative;
.treebox {
display: flex;
flex: 1;
overflow: auto;
flex-direction: column;
box-sizing: border-box;
padding: 10px 0;
}
.check {
width: 100%;
float: right;
}
.topbox2 {
width: 100%;
height: 36px;
display: flex;
align-items: center;
margin-top: 20px;
.lefttop {
height: 36px;
line-height: 36px;
color: #000;
margin-right: 10px;
font-size: 15px;
}
.righttop {
flex: 1;
height: 36px;
display: flex;
nz-input-group {
height: 36px;
}
}
}
.orbox {
width: 260px;
min-width: 250px;
overflow-y: auto;
margin-right: 10px;
display: flex;
flex-direction: column;
}
.treeTitle {
width: 100%;
height: 55px;
line-height: 55px;
margin-top: 12px;
display: flex;
justify-content: space-between;
color: #000d21;
box-sizing: border-box;
padding: 0 10px;
background: rgba(145, 204, 255, 0.2);
border: 1px solid rgba(145, 204, 255, 0.2);
span {
font-size: 14px;
}
div {
flex: 1;
width: 100px;
margin-left: 55px;
}
}
.nodebox {
display: flex;
justify-content: space-between;
}
tbody {
tr {
td:nth-child(1) {
text-align: right;
}
}
.operation {
i {
cursor: pointer;
margin-right: 8px;
}
}
}
}
.box {
flex: 1;
// overflow: auto;
padding-top: 20px;
overflow-y: auto;
display: flex;
flex-direction: column;
height: 100%;
}
.topbox {
width: 100%;
height: 36px;
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 12px;
.lefttop {
span:nth-child(1) {
color: #000d21;
margin-right: 16px;
}
span:nth-child(2) {
color: rgba(36, 36, 36, 0.24);
}
}
.righttop {
display: flex;
button {
margin-left: 16px;
}
nz-input-group {
height: 32px;
}
}
}
.tablebox {
flex: 1;
overflow-y: auto;
overflow: auto;
}
.pagination {
margin: 15px 0;
display: flex;
align-items: center;
justify-content: center;
}
.ortype {
width: 36px;
height: 20px;
background: #2399ff;
opacity: 1;
border-radius: 2px;
font-size: 12px;
margin-right: 8px;
color: #fff;
text-align: center;
}
.resetPasswordContent {
z-index: 999;
width: 380px;
height: 138px;
position: absolute;
left: 30%;
top: 30%;
display: flex;
flex-direction: column;
justify-content: center;
box-sizing: border-box;
padding-left: 40px;
color: #000;
border-radius: 5px;
border-radius: 2px;
box-shadow: 0 3px 6px -4px rgb(0 0 0 / 12%), 0 6px 16px 0 rgb(0 0 0 / 8%),
0 9px 28px 8px rgb(0 0 0 / 5%);
background: #fff;
.titlebox {
display: flex;
align-items: center;
position: relative;
span {
font-size: 18px;
font-weight: 600;
}
i {
font-size: 26px;
margin-right: 6px;
}
.close {
position: absolute;
right: 2px;
top: -22px;
font-size: 16px;
cursor: pointer;
}
.move {
position: absolute;
left: -32px;
top: -22px;
cursor: move;
}
}
.message {
margin-top: 20px;
i {
cursor: pointer;
}
i:hover {
color: #18bb18;
}
}
}

73
src/app/pages/singlelogin/singlelogin.component.ts

@ -25,11 +25,6 @@ export class SingleloginComponent implements OnInit {
async ngOnInit(): Promise<void> {
console.log("查询参数", this.route.snapshot.queryParams.page);
this.pageType = this.route.snapshot.queryParams.page;
// let obj = {
// SAG_USER_TOKEN:
// "hrtwsc5737z6LYr67e2e0PvinLXvo0Pk8ffAp8qxOLXt9CtSLGg61cZv9IDjKybQ%3D%3D",
// };
// this.setCookie(obj);
let token = this.getCookie("SAG_USER_TOKEN");
if (!token) {
@ -128,48 +123,48 @@ export class SingleloginComponent implements OnInit {
});
}
//确认中化是否绑定了我们的用户
// getSinochemUsers(Keyword) {
// return new Promise<void>((resolve, reject) => {
// this.http
// .get("/api/services/app/User/GetSinochemUsers", {
// params: {
// Keyword: Keyword,
// },
// })
// .subscribe(
// (data: any) => {
// console.log("中化用户信息", data);
// resolve(data);
// },
// (err) => {
// reject();
// }
// );
// });
// }
downloadAsTxt(obj) {
// 将对象转换为 JSON 字符串
const jsonString = JSON.stringify(obj, null, 2);
// 创建 Blob 对象
const blob = new Blob([jsonString], { type: "text/plain" });
// 创建下载链接
const link = document.createElement("a");
link.href = URL.createObjectURL(blob);
link.download = "错误参数.txt"; // 文件名为 data.txt
link.click(); // 触发下载
// 释放 URL 对象
URL.revokeObjectURL(link.href);
}
//中化用户登录获得自己的token信息
SinochemLogin() {
return new Promise<void>((resolve, reject) => {
this.CurrentUserInfo.data.userId = this.CurrentUserInfo.data.id;
delete this.CurrentUserInfo.data.id;
delete this.CurrentUserInfo.data.permissions;
let body = {
user: this.CurrentUserInfo.data,
org: this.AuthOrganInfos.data[0],
sinochemOrgs: this.AuthOrganInfos.data,
userDetail: JSON.stringify(this.CurrentUserInfo.data),
};
this.http.post("/api/TokenAuth/SinochemLogin", body).subscribe(
(data: any) => {
sessionStorage.setItem("isZT", "true");
if (this.pageType == "ai") {
this.enterPage(data);
} else if (this.pageType == "comprehensive") {
this.enterComprehensive(data);
} else {
this.enterPageSystem(data);
}
resolve();
},
(err) => {
this.downloadAsTxt(body);
alert(err?.error?.error?.message || "SinochemLogin接口请求失败");
reject();
}
@ -266,7 +261,7 @@ export class SingleloginComponent implements OnInit {
"userdataOfgasstation",
JSON.stringify(data.result.user)
);
sessionStorage.setItem("isZT", "true");
if (data.result.user.menus.length == 0) {
alert("当前用户未分配菜单");
return;
@ -298,6 +293,30 @@ export class SingleloginComponent implements OnInit {
}
);
}
enterComprehensive(tokenData) {
sessionStorage.setItem("token", tokenData.result.accessToken);
sessionStorage.setItem(
"encryptedAccessToken",
tokenData.result.encryptedAccessToken
);
this.http
.get("/api/services/app/Session/GetCurrentLoginInformations")
.subscribe(
async (data: any) => {
sessionStorage.setItem("userdata", JSON.stringify(data.result.user));
sessionStorage.setItem(
"userdataOfgasstation",
JSON.stringify(data.result.user)
);
//跳转页面
sessionStorage.setItem("isGasStation", "false");
this.router.navigate(["/comprehensive"]);
},
(err) => {
alert("获取用户信息错误");
}
);
}
menu1 = [
{ name: "首页", url: "/homepage" },

7
src/app/pages/today-warning-admin/today-warning-admin.component.ts

@ -287,6 +287,13 @@ export class TodayWarningAdminComponent implements OnInit {
params: params,
})
.subscribe((data: any) => {
data.result.items = data.result.items.filter((item) => {
return (
item.violation.violationType != "证照资质" ||
(item.violation.violationType == "证照资质" &&
item.gasStation.companyName.includes("延长"))
);
});
this.list = data.result.items;
this.totalCount = data.result.totalCount;
console.log("预警列表", this.list);

3
src/app/pages/today-warning/get-out-of-line-details/get-out-of-line-details.component.ts

@ -74,6 +74,7 @@ export class GetOutOfLineDetailsComponent implements OnInit {
{ id: 22, name: "山西高速工装", color: "red" },
];
userName; //登录账号的用户名
name; //登录账号的真实名
isShowAxOtherRegion; //控制哪些用户可以看到ax全部
isCarStop = false;
@ -83,6 +84,7 @@ export class GetOutOfLineDetailsComponent implements OnInit {
console.log("传进来的信息", this.data);
// 安信框选
this.userName = JSON.parse(sessionStorage.getItem("userdata")).userName;
this.name = JSON.parse(sessionStorage.getItem("userdata")).name;
if (this.userName === "admin" || this.userName === "superadmin") {
this.isShowAxOtherRegion = true;
} else {
@ -468,6 +470,7 @@ export class GetOutOfLineDetailsComponent implements OnInit {
this.message.create("success", "处置成功!");
this.data.handleTime = new Date();
this.data.handleStateStr = "已处置";
this.data.handleUserName = this.name;
this.data.handleRecord = this.content;
});
}

7
src/app/pages/today-warning/today-warning.component.ts

@ -230,6 +230,13 @@ export class TodayWarningComponent implements OnInit {
params: params,
})
.subscribe((data: any) => {
data.result.items = data.result.items.filter((item) => {
return (
item.violation.violationType != "证照资质" ||
(item.violation.violationType == "证照资质" &&
item.gasStation.companyName.includes("延长"))
);
});
this.list = data.result.items;
this.totalCount = data.result.totalCount;
console.log("预警列表", this.list);

2
src/app/system-management/navigation/navigation.component.html

@ -25,7 +25,7 @@
<nz-layout>
<nz-header>
<span>Hey,欢迎登录加油站智能安全管理系统</span>
<a nz-dropdown [nzDropdownMenu]="menu" [nzTrigger]="'click'" [nzBackdrop]='false'>
<a nz-dropdown [nzDropdownMenu]="menu" [nzTrigger]="'click'" [nzBackdrop]='false' *ngIf="isZT ==='false'">
<i nz-icon nzType="setting"></i>
</a>
<nz-dropdown-menu #menu="nzDropdownMenu">

1
src/app/system-management/navigation/navigation.component.ts

@ -9,6 +9,7 @@ import { PatternService } from "src/app/service/pattern.service";
})
export class NavigationComponent implements OnInit {
constructor(private router: Router, private patternService: PatternService) {}
isZT = sessionStorage.getItem("isZT") || "false";
userMenu = [];
menu = [];
tap = [];

4
src/app/system-management/organization/change-or/change-or.component.html

@ -0,0 +1,4 @@
<div class="box">
<nz-tree #nzTreeComponent [nzSelectedKeys]="defaultSelectedKeys" [nzData]="nodes"
[nzExpandedKeys]="defaultExpandedKeys"></nz-tree>
</div>

5
src/app/system-management/organization/change-or/change-or.component.scss

@ -0,0 +1,5 @@
.box {
max-height: 500px;
overflow-y: auto;
}

55
src/app/system-management/organization/change-or/change-or.component.ts

@ -0,0 +1,55 @@
import { Component, Input, OnInit, ViewChild } from "@angular/core";
import { NzModalRef } from "ng-zorro-antd/modal";
import { FormBuilder, FormGroup, Validators } from "@angular/forms";
import { HttpClient } from "@angular/common/http";
import { TreeService } from "src/app/service/tree.service";
import { NzTreeComponent } from "ng-zorro-antd/tree";
@Component({
selector: "app-change-or",
templateUrl: "./change-or.component.html",
styleUrls: ["./change-or.component.scss"],
})
export class ChangeOrComponent implements OnInit {
@Input() data?: any;
@ViewChild("nzTreeComponent", { static: false })
nzTreeComponent!: NzTreeComponent;
constructor(
private modal: NzModalRef,
private fb: FormBuilder,
private http: HttpClient,
private toTree: TreeService
) {}
defaultExpandedKeys = [];
defaultSelectedKeys = [];
ngOnInit(): void {
this.getAllOrganization();
// this.nzTreeComponent.getCheckedNodeList()
}
allOrList: any;
nodes: any;
getAllOrganization() {
let params = {
IsContainsChildren: "true",
};
this.http
.get("/api/services/app/Organization/GetAll", {
params: params,
})
.subscribe((data: any) => {
console.log(data);
data.result.items.forEach((element) => {
element.key = element.id;
element.title = element.displayName;
});
this.allOrList = data.result.items.filter((v) => !v.isGasStation);
this.nodes = [...this.toTree.toTree(this.allOrList)];
});
}
destroyModal(): void {
this.modal.destroy({ data: "this the result data" });
}
}

5
src/app/system-management/organization/organization.component.html

@ -21,8 +21,8 @@
<span>操作</span>
</div>
<nz-tree [nzHideUnMatched]='true' [nzSearchValue]="searchValue" #nzTreeComponent [nzData]="nodes"
[nzExpandAll]="nzExpandAll" [nzExpandedKeys]="defaultExpandedKeys" [nzTreeTemplate]="nzTreeTemplate"
nzBlockNode [nzExpandedIcon]="multiExpandedIconTpl">
[nzExpandAll]="nzExpandAll" [nzExpandedKeys]="defaultExpandedKeys" [nzTreeTemplate]="nzTreeTemplate" nzBlockNode
[nzExpandedIcon]="multiExpandedIconTpl">
</nz-tree>
<ng-template #nzTreeTemplate let-node let-origin="origin">
<div class="nodebox">
@ -34,6 +34,7 @@
<span class="operation" *ngIf="level === 1 && isAdmin">
<span (click)="addOr(node)" *ngIf="!node.origin.isGasStation">新增</span>
<span (click)="waring(node)" *ngIf="node.origin.isGasStation">配置预警事件</span>
<span class="blue" (click)="changeOr(node)">修改所属机构</span>
<span (click)="editOr(node)">编辑</span>
<span [ngClass]="{'grey':node.origin.children && node.origin.children.length != 0}"
(click)="deleteOr(node)">删除</span>

45
src/app/system-management/organization/organization.component.ts

@ -22,6 +22,7 @@ import { NzFormatBeforeDropEvent } from "ng-zorro-antd/tree";
import { Observable, of } from "rxjs";
import { delay } from "rxjs/operators";
import { WarningEventsComponent } from "./warning-events/warning-events.component";
import { ChangeOrComponent } from "./change-or/change-or.component";
@Component({
selector: "app-organization",
templateUrl: "./organization.component.html",
@ -429,4 +430,48 @@ export class OrganizationComponent implements OnInit {
return of(true);
}
};
changeOr(node) {
const modal = this.modal.create({
nzTitle: "修改所属组织机构",
nzContent: ChangeOrComponent,
nzViewContainerRef: this.viewContainerRef,
nzWidth: 500,
nzComponentParams: {
data: this.allOrList,
},
nzOnOk: async () => {
let selectedNode =
instance.nzTreeComponent.getSelectedNodeList()[0].key;
if (selectedNode) {
await new Promise((resolve) => {
let body = {
id: node.origin.id,
parentId: selectedNode,
displayName: node.origin.displayName,
isGasStation: node.origin.isGasStation,
isSkipAudit: node.origin.isSkipAudit,
level: node.origin.level,
};
this.http
.put(`/api/services/app/Organization/Update`, body)
.subscribe((data) => {
resolve(data);
this.message.create("success", "修改成功!");
this.nzTreeComponent.getExpandedNodeList().forEach((item) => {
this.defaultExpandedKeys.push(item.key);
});
this.getAllOrganization();
return true;
});
});
} else {
this.message.create("warning", "请选择机构!");
return false;
}
},
});
const instance = modal.getContentComponent();
}
}

2
src/app/system-management/system-management.module.ts

@ -55,6 +55,7 @@ import { UserBindingComponent } from "./user-binding/user-binding.component";
import { BindingComponent } from "./user-binding/binding/binding.component";
import { OrBindingComponent } from './or-binding/or-binding.component';
import { OrBindingModelComponent } from './or-binding/or-binding-model/or-binding-model.component';
import { ChangeOrComponent } from './organization/change-or/change-or.component';
@NgModule({
declarations: [
OrganizationComponent,
@ -90,6 +91,7 @@ import { OrBindingModelComponent } from './or-binding/or-binding-model/or-bindin
BindingComponent,
OrBindingComponent,
OrBindingModelComponent,
ChangeOrComponent,
],
imports: [
CommonModule,

12
src/app/system-management/user/edituser/edituser.component.ts

@ -150,6 +150,8 @@ export class EdituserComponent implements OnInit {
isLoading = false;
//确定
async ok() {
// console.log(this.validateForm);
// return;
this.isLoading = true;
if (this.validateForm.valid) {
return await new Promise((resolve) => {
@ -170,12 +172,12 @@ export class EdituserComponent implements OnInit {
];
let body = {
id: this.data.id,
userName: this.validateForm.value.account,
name: this.validateForm.value.name,
organizationUnitId: this.validateForm.value.organization,
userName: this.validateForm.controls.account.value,
name: this.validateForm.controls.name.value,
organizationUnitId: this.validateForm.controls.organization.value,
roleNames: roleNames,
phoneNumber: this.validateForm.value.phonenum,
note: this.validateForm.value.note,
phoneNumber: this.validateForm.controls.phonenum.value,
note: this.validateForm.controls.note.value,
isActive: true,
};
this.http.put(this.editUrl, body).subscribe(

Loading…
Cancel
Save