Browse Source

[新增]算法配置管理页面

beijing
邵佳豪 2 years ago
parent
commit
94bbf1bd09
  1. 2
      proxy.config.json
  2. 8
      src/app/pages/plan-admin/plan-admin.component.html
  3. 17
      src/app/pages/plan-admin/plan-admin.component.ts
  4. 31
      src/app/service/tree.service.ts
  5. 58
      src/app/system-management/algorithm-config/algorithm-config.component.html
  6. 99
      src/app/system-management/algorithm-config/algorithm-config.component.scss
  7. 155
      src/app/system-management/algorithm-config/algorithm-config.component.ts
  8. 2
      src/app/system-management/navigation/navigation.component.html
  9. 4
      src/app/system-management/navigation/navigation.component.scss
  10. 5
      src/app/system-management/navigation/navigation.component.ts
  11. 42
      src/app/system-management/system-management-routing.module.ts
  12. 2
      src/app/system-management/system-management.module.ts
  13. BIN
      src/assets/images/icon/off.png
  14. BIN
      src/assets/images/icon/on.png
  15. 24
      src/theme.less

2
proxy.config.json

@ -1,6 +1,6 @@
{
"/api": {
"target": "https://znaq.sinochemoilmarketing.com/",
"target": "http://121.36.37.70:8906/",
"测试1": "http://121.36.37.70:8906/",
"测试2": "https://znaq.sinochemoilmarketing.com/",
"测试3": "https://gas.anxincloud.cn/",

8
src/app/pages/plan-admin/plan-admin.component.html

@ -34,8 +34,6 @@
<div class="content">
<div class="contentitem">
<span class="grey" [ngClass]="{'selectedItem': selectedTab == 0}">油站管理</span>
<!-- <span class="grey" (click)="selectTab(1)" [ngClass]="{'selectedItem': selectedTab == 1}">经营类证照</span>
<span class="grey" (click)="selectTab(2)" [ngClass]="{'selectedItem': selectedTab == 2}">资产类证照</span> -->
</div>
</div>
</div>
@ -43,11 +41,5 @@
<div class="tabbox" *ngIf="selectedTab == 0">
<app-oil-station-list style="width: 100%;height: 100%;" #child></app-oil-station-list>
</div>
<!-- <div class="tabbox" *ngIf="selectedTab == 1">
<app-update-license-list style="width: 100%;height: 100%;" #child2></app-update-license-list>
</div>
<div class="tabbox" *ngIf="selectedTab == 2">
<app-file-license-list style="width: 100%;height: 100%;" #child3></app-file-license-list>
</div> -->
</div>
</div>

17
src/app/pages/plan-admin/plan-admin.component.ts

@ -80,23 +80,6 @@ export class PlanAdminComponent implements OnInit {
})
this.organization = data.result.items
this.getStationsNum(data.result.items)
// data.result.items.forEach(element => {
// if (element.id == OrganizationUnitId) {
// element.parentId = null
// }
// });
// for (let index = 0; index < data.result.items.length; index++) {
// const element = data.result.items[index];
// element.key = element.id
// element.title = element.displayName
// }
// this.orSpin = false
// this.nodes = [...this.toTree.toTree(data.result.items)]
// this.nzExpandedKeys = [OrganizationUnitId]
// this.nzSelectedKeys = [OrganizationUnitId]
// sessionStorage.setItem('planAdminOrid', OrganizationUnitId)
// this.oilStationListComponent.onChildMethod()
})
}

31
src/app/service/tree.service.ts

@ -1,35 +1,26 @@
import { Injectable } from '@angular/core';
import { Injectable } from "@angular/core";
@Injectable()
export class TreeService {
toTree(olddata) {
let newdata = []
let newdata = [];
function getparentNode(parentId) {
return olddata.find((item) => {
return item.id == parentId
})
return item.id == parentId;
});
}
olddata.forEach(item => {
olddata.forEach((item) => {
var parentNode = getparentNode(item.parentId);
if (parentNode) {
parentNode.isLeaf = false;
if (!parentNode.children) {
parentNode.children = []
parentNode.children = [];
}
// if (parentNode.children.length == 0) {
// item.isTop = true;
// } else {
// item.isTop = false;
// parentNode.children[parentNode.children.length -1].isBottom = false;
// }
// item.isBottom = true;
parentNode.children.push(item)
parentNode.children.push(item);
} else {
if(!item.parentId){//如果parentId为null
newdata.push(item)
if (!item.parentId) {
//如果parentId为null
newdata.push(item);
}
}
});

58
src/app/system-management/algorithm-config/algorithm-config.component.html

@ -0,0 +1,58 @@
<div class="box" id="algorithmConfig">
<div class="orbox">
<div class="topbox">
<span class="name">组织机构</span>
<nz-input-group nzPrefixIcon="search">
<input type="text" nz-input placeholder="请输入机构名称" [(ngModel)]="searchValue" />
</nz-input-group>
</div>
<div class="treebox">
<nz-tree [nzSearchValue]="searchValue" #nzTreeComponent [nzData]="nodes" [nzExpandAll]="nzExpandAll"
[nzExpandedKeys]="nzExpandedKeys" [nzSelectedKeys]='nzSelectedKeys' (nzClick)="nzClick($event)"
[nzHideUnMatched]="true">
</nz-tree>
</div>
</div>
<div class="contentbox">
<div>
</div>
<div class="tableBox">
<nz-table #basicTable [nzData]="listOfData" [nzShowPagination]='false' [nzPageSize]='999'
[nzLoading]="isLoading">
<thead>
<tr>
<th *ngFor="let item of thList">{{item}}</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let item of basicTable.data;let key = idnex">
<td>{{item.stationName || '/'}}</td>
<td>{{item.locationName || '/'}}</td>
<td>{{item.companyName || '/'}}</td>
<td *ngFor="let i of item.stationViolations" class="dataItem">
<div class="hover">
<div class="on" (click)="change(i,false)">
<img src="../../../assets/images/icon/on.png" alt="">
</div>
<div class="off" (click)="change(i,true)">
<img src="../../../assets/images/icon/off.png" alt="">
</div>
</div>
<div class="item">
<ng-container *ngIf="i.disabled; else elseTemplate">
<img src="../../../assets/images/icon/off.png" alt="">
</ng-container>
<ng-template #elseTemplate>
<img src="../../../assets/images/icon/on.png" alt="">
</ng-template>
</div>
</td>
</tr>
</tbody>
</nz-table>
</div>
</div>
</div>

99
src/app/system-management/algorithm-config/algorithm-config.component.scss

@ -0,0 +1,99 @@
.box {
width: 100%;
height: 100%;
display: flex;
box-sizing: border-box;
}
.orbox {
width: 250px;
height: 100%;
overflow-y: auto;
display: flex;
flex-direction: column;
background: #fff;
}
.topbox {
width: 100%;
display: flex;
align-items: center;
box-sizing: border-box;
margin-top: 12px;
padding: 0px 12px;
span {
color: #000D21;
margin-right: 16px;
font-family: sybold;
}
nz-input-group {
flex: 1;
}
}
.treebox {
margin-top: 12px;
flex: 1;
overflow-y: auto;
box-sizing: border-box;
padding: 0 6px;
padding-bottom: 12px;
}
.contentbox {
flex: 1;
background: #fff;
margin-left: 16px;
overflow-y: auto;
box-sizing: border-box;
padding: 12px;
.tableBox {
.dataItem {
.hover,
.item {
height: 48px;
line-height: 48px;
}
.hover {
display: none;
}
cursor: pointer;
}
.dataItem:hover {
.hover {
display: block;
width: 72px;
height: 48px;
border-radius: 12px;
overflow: hidden;
div{
display: inline-block;
width: 50%;
}
.on {
background: #1e1e1e;
}
.off {
background: #434446;
}
}
.item {
display: none;
}
}
}
}

155
src/app/system-management/algorithm-config/algorithm-config.component.ts

@ -0,0 +1,155 @@
import { HttpClient } from "@angular/common/http";
import { Component, OnInit } from "@angular/core";
import { NzMessageService } from "ng-zorro-antd/message";
import { NzFormatEmitEvent } from "ng-zorro-antd/tree";
import { TreeService } from "src/app/service/tree.service";
@Component({
selector: "app-algorithm-config",
templateUrl: "./algorithm-config.component.html",
styleUrls: ["./algorithm-config.component.scss"],
})
export class AlgorithmConfigComponent implements OnInit {
constructor(
private http: HttpClient,
private toTree: TreeService,
private message: NzMessageService
) {}
OrganizationUnitId: string;
ngOnInit(): void {
this.OrganizationUnitId =
sessionStorage.getItem("isGasStation") == "true"
? JSON.parse(sessionStorage.getItem("userdataOfgasstation"))
.organization.id
: JSON.parse(sessionStorage.getItem("userdata")).organization.id;
this.getAllOrganization();
}
//获取所有组织机构
searchValue = "";
nzExpandAll = false;
totalCount: string;
organizationList; //组织机构列表
getAllOrganization() {
let params = {
OrganizationUnitId: this.OrganizationUnitId,
IsContainsChildren: "true",
};
this.http
.get("/api/services/app/Organization/GetAll", {
params: params,
})
.subscribe((data: any) => {
data.result.items = data.result.items.filter((item, i) => {
return !item.isGasStation;
});
this.organizationList = data.result.items;
this.getStationsNum(data.result.items);
});
}
//获得组织机构下有多少油站
stationsList;
nodes: any[] = [];
nzExpandedKeys = [];
nzSelectedKeys: any[] = [];
getStationsNum(e) {
this.http
.get(
"/api/services/app/GasStation/GetCountsByOrganizations?IsContainsChildren=true"
)
.subscribe((data: any) => {
this.stationsList = data.result;
const arrs = e.map((item) => {
const data = this.stationsList.find(
(i) => item.id == i.organizationId
);
return {
...item,
products: data ? data : false,
};
});
for (let index = 0; index < arrs.length; index++) {
arrs[index].isLeaf = true;
if (arrs[index].id == this.OrganizationUnitId) {
arrs[index].parentId = null;
}
arrs[index].title =
arrs[index].displayName +
" " +
`(${
arrs[index].products ? arrs[index].products.stationsCount : 0
})`;
arrs[index].key = arrs[index].id;
}
this.nodes = [...this.toTree.toTree(arrs)];
this.nzExpandedKeys = [this.OrganizationUnitId];
this.nzSelectedKeys = [this.OrganizationUnitId];
this.selectedOrId = this.OrganizationUnitId;
this.getStationViolationConfigList();
});
}
selectedOrId: any;
nzClick(event: NzFormatEmitEvent): void {
console.log(event.node.origin);
this.selectedOrId = event.node.origin.id;
this.getStationViolationConfigList();
}
SkipCount = 0;
MaxResultCount = 100;
isLoading = false;
listOfData: any[] = [];
thList = [];
getStationViolationConfigList() {
let params = {
OrganizationUnitId: this.selectedOrId,
IsContainsChildren: true,
SkipCount: this.SkipCount,
MaxResultCount: this.MaxResultCount,
};
this.isLoading = true;
this.http
.get("/api/services/app/Violation/GetStationViolationConfigList", {
params: params,
})
.subscribe({
next: (data: any) => {
this.isLoading = false;
this.listOfData = data.result;
if (this.listOfData && this.listOfData.length !== 0) {
let arr1 = ["油站名称", "区域名称", "公司名称"];
let arr2 = [];
this.listOfData[0].stationViolations.forEach((item) => {
arr2.push(item.violation.eventSystemName);
});
this.thList = arr1.concat(arr2);
}
console.log("台账列表", data.result);
},
error: (err) => {},
});
}
change(item, type) {
this.isLoading = true;
let body = {
stationId: item.stationId,
violationId: item.violation.id,
disabled: type,
};
this.http
.post("/api/services/app/Violation/UpdateStationViolation", body)
.subscribe((data) => {
this.isLoading = false;
this.message.create("success", "修改成功");
item.disabled = type
});
}
}

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

@ -1,6 +1,6 @@
<!-- <p>系统管理页面</p> -->
<nz-layout>
<nz-sider [nzWidth]='300'>
<nz-sider [nzWidth]='220'>
<div class="logo">
<img *ngIf="isProd" style="width: 154px;" src="../../../assets/images/logo2.png" alt="">
</div>

4
src/app/system-management/navigation/navigation.component.scss

@ -41,7 +41,7 @@ nz-sider {
.nav {
ul {
li {
width: 300px;
width: 220px;
height: 40px;
cursor: pointer;
display: flex;
@ -49,7 +49,7 @@ nz-sider {
justify-content: left;
margin-bottom: 16px;
box-sizing: border-box;
padding-left: 26%;
padding-left: 20%;
img {
margin-right: 8px;

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

@ -62,6 +62,11 @@ export class NavigationComponent implements OnInit {
url: "/system/menu",
img: "../../../assets/images/icon/license.png",
},
{
name: "算法配置管理",
url: "/system/algorithm",
img: "../../../assets/images/icon/license.png",
},
];
name;

42
src/app/system-management/system-management-routing.module.ts

@ -1,28 +1,30 @@
import { Routes, RouterModule } from '@angular/router';
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from "@angular/router";
import { NgModule } from "@angular/core";
import { AuthGuard } from '../auth.guard'
import { RoleComponent } from './role/role.component';
import { OrganizationComponent } from './organization/organization.component';
import { UserComponent } from './user/user.component';
import { AnalysisOfTheHostComponent } from './analysis-of-the-host/analysis-of-the-host.component';
import { PushComponent } from './push/push.component';
import { UpdateOfLicenseComponent } from './update-of-license/update-of-license.component';
import { FileOfLicenseComponent } from './file-of-license/file-of-license.component';
import { MenuComponent } from './menu/menu.component'
import { AuthGuard } from "../auth.guard";
import { RoleComponent } from "./role/role.component";
import { OrganizationComponent } from "./organization/organization.component";
import { UserComponent } from "./user/user.component";
import { AnalysisOfTheHostComponent } from "./analysis-of-the-host/analysis-of-the-host.component";
import { PushComponent } from "./push/push.component";
import { UpdateOfLicenseComponent } from "./update-of-license/update-of-license.component";
import { FileOfLicenseComponent } from "./file-of-license/file-of-license.component";
import { MenuComponent } from "./menu/menu.component";
import { AlgorithmConfigComponent } from "./algorithm-config/algorithm-config.component";
const routes: Routes = [
{ path: 'organization', component: OrganizationComponent },
{ path: 'user', component: UserComponent },
{ path: 'role', component: RoleComponent },
{ path: 'host', component: AnalysisOfTheHostComponent },
{ path: 'push', component: PushComponent },
{ path: 'fileOfLicense', component: FileOfLicenseComponent },
{ path: 'updateOfLicense', component: UpdateOfLicenseComponent },
{ path: 'menu', component: MenuComponent }
{ path: "organization", component: OrganizationComponent },
{ path: "user", component: UserComponent },
{ path: "role", component: RoleComponent },
{ path: "host", component: AnalysisOfTheHostComponent },
{ path: "push", component: PushComponent },
{ path: "fileOfLicense", component: FileOfLicenseComponent },
{ path: "updateOfLicense", component: UpdateOfLicenseComponent },
{ path: "menu", component: MenuComponent },
{ path: "algorithm", component: AlgorithmConfigComponent },
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
exports: [RouterModule],
})
export class SystemRoutingModule {}

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

@ -50,6 +50,7 @@ import { NzSwitchModule } from "ng-zorro-antd/switch";
import { NzNotificationModule } from "ng-zorro-antd/notification";
import { DragDropModule } from "@angular/cdk/drag-drop";
import { NzToolTipModule } from "ng-zorro-antd/tooltip";
import { AlgorithmConfigComponent } from './algorithm-config/algorithm-config.component';
@NgModule({
declarations: [
OrganizationComponent,
@ -80,6 +81,7 @@ import { NzToolTipModule } from "ng-zorro-antd/tooltip";
EditmenuComponent,
MenusComponent,
WarningEventsComponent,
AlgorithmConfigComponent,
],
imports: [
CommonModule,

BIN
src/assets/images/icon/off.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
src/assets/images/icon/on.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

24
src/theme.less

@ -610,7 +610,31 @@
}
}
#algorithmConfig {
.ant-table-thead>tr>th {
background: rgba(145, 204, 255, 0.2);
font-family: sybold;
padding: 3px 0px;
text-align: center;
}
.ant-table-thead>tr>th:first-child {
padding: 3px 5px;
text-align: left;
}
.ant-table-tbody>tr>td {
padding: 12px 0px;
text-align: center;
width: 72px;
min-width: 72px;
}
.ant-table-tbody>tr>td:first-child {
padding: 12px 5px;
text-align: left;
}
}
//蓝色 表格 tree-通知时间

Loading…
Cancel
Save