Compare commits
7 Commits
Author | SHA1 | Date |
---|---|---|
|
bb19da8a65 | 3 years ago |
|
76e442edc2 | 3 years ago |
|
b602f048c6 | 3 years ago |
|
357ed14f63 | 3 years ago |
|
5f93c984a0 | 3 years ago |
|
ac770d9667 | 3 years ago |
|
f911eb6dec | 3 years ago |
157 changed files with 23725 additions and 33664 deletions
@ -1,10 +1,7 @@ |
|||||||
{ |
{ |
||||||
"/api": { |
"/api": { |
||||||
"target": "http://121.36.37.70:8201/", |
"target": "http://121.36.37.70:8205", |
||||||
"生产": "http://10.81.73.39:8000/", |
"secure": false, |
||||||
"测试": "http://121.36.37.70:8201/", |
"changeOrigin": true |
||||||
"生产2": "http://183.194.244.232:8088/", |
} |
||||||
"secure": false, |
|
||||||
"changeOrigin": true |
|
||||||
} |
|
||||||
} |
} |
@ -1,69 +1,61 @@ |
|||||||
import { BrowserModule } from "@angular/platform-browser"; |
import { BrowserModule } from '@angular/platform-browser'; |
||||||
import { NgModule } from "@angular/core"; |
import { NgModule } from '@angular/core'; |
||||||
import { AppRoutingModule } from "./app-routing.module"; |
import { AppRoutingModule } from './app-routing.module'; |
||||||
import { AppComponent } from "./app.component"; |
import { AppComponent } from './app.component'; |
||||||
import { BrowserAnimationsModule } from "@angular/platform-browser/animations"; |
import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; |
||||||
import { MatButtonModule } from "@angular/material/button"; |
import { MatButtonModule } from '@angular/material/button'; |
||||||
import { MatCheckboxModule } from "@angular/material/checkbox"; |
import { MatCheckboxModule } from '@angular/material/checkbox'; |
||||||
import { MatIconModule } from "@angular/material/icon"; |
import { MatIconModule } from '@angular/material/icon'; |
||||||
import { MatSidenavModule } from "@angular/material/sidenav"; |
import { MatSidenavModule } from '@angular/material/sidenav'; |
||||||
import { NavigationModule } from "./navigation/navigation.module"; |
import { NavigationModule } from './navigation/navigation.module'; |
||||||
import { HomeComponent } from "./home/home.component"; |
import { HomeComponent } from './home/home.component'; |
||||||
import { TabbarComponent } from "./tabbar/tabbar.component"; |
import { TabbarComponent } from './tabbar/tabbar.component'; |
||||||
import { PagesModule } from "./pages/pages.module"; |
import { PagesModule } from './pages/pages.module'; |
||||||
import { FormsModule } from "@angular/forms"; |
import { FormsModule } from '@angular/forms'; |
||||||
import { UiModule } from "./ui/ui.module"; |
import { UiModule } from './ui/ui.module'; |
||||||
import { HttpClientModule } from "@angular/common/http"; |
import { HttpClientModule } from '@angular/common/http'; |
||||||
import { httpInterceptorProviders } from "./http-interceptors/index"; |
import { httpInterceptorProviders } from './http-interceptors/index' |
||||||
import { CacheTokenService } from "./http-interceptors/cache-token.service"; |
import { CacheTokenService } from './http-interceptors/cache-token.service' |
||||||
import { TreeService } from "./http-interceptors/tree.service"; |
import { TreeService } from './http-interceptors/tree.service'; |
||||||
import { MTokenK1Component } from "./m-token-k1/m-token-k1.component"; //K1秘钥
|
import { MTokenK1Component } from './m-token-k1/m-token-k1.component' //K1秘钥
|
||||||
import { CountdownModule } from "ngx-countdown"; //倒计时插件
|
import { CountdownModule } from 'ngx-countdown'; //倒计时插件
|
||||||
import { GISManagementModule } from "./gis-management/gis-management.module"; |
import { GISManagementModule } from './gis-management/gis-management.module'; |
||||||
import { DataCollectionModule } from "./data-collection/data-collection.module"; |
import { DataCollectionModule } from './data-collection/data-collection.module'; |
||||||
import { MatProgressSpinnerModule } from "@angular/material/progress-spinner"; |
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; |
||||||
import { TestComponent } from "./test/test.component"; |
import { TestComponent } from './test/test.component'; |
||||||
import { ExternalLinksPlanComponent } from "./external-links-plan/external-links-plan.component"; |
import { ExternalLinksPlanComponent } from './external-links-plan/external-links-plan.component'; |
||||||
import { SearchDownList } from "../modules/map/declare/component/SearchDownListPlugins/SearchDownList"; |
import { SearchDownList } from '../modules/map/declare/component/SearchDownListPlugins/SearchDownList'; |
||||||
import { ExportExcelComponent } from "./export-excel/export-excel.component"; |
import { ExportExcelComponent } from './export-excel/export-excel.component'; |
||||||
import { registerLocaleData } from "@angular/common"; |
|
||||||
import zh from "@angular/common/locales/zh"; |
|
||||||
import { KeyUnitModule } from "./key-unit/key-unit.module"; |
|
||||||
import { MatTabsModule } from "@angular/material/tabs"; |
|
||||||
import { PlanManagementModule } from "./plan-management/plan-management.module"; |
|
||||||
registerLocaleData(zh); |
|
||||||
@NgModule({ |
@NgModule({ |
||||||
declarations: [ |
declarations: [ |
||||||
AppComponent, |
AppComponent, |
||||||
HomeComponent, |
HomeComponent, |
||||||
MTokenK1Component, |
MTokenK1Component, |
||||||
TestComponent, |
TestComponent, |
||||||
ExternalLinksPlanComponent, |
ExternalLinksPlanComponent, |
||||||
SearchDownList, |
SearchDownList, |
||||||
ExportExcelComponent, |
ExportExcelComponent |
||||||
], |
], |
||||||
imports: [ |
imports: [ |
||||||
BrowserModule, |
BrowserModule, |
||||||
AppRoutingModule, |
AppRoutingModule, |
||||||
BrowserAnimationsModule, |
BrowserAnimationsModule, |
||||||
MatButtonModule, |
MatButtonModule, |
||||||
MatCheckboxModule, |
MatCheckboxModule, |
||||||
MatSidenavModule, |
MatSidenavModule, |
||||||
NavigationModule, |
NavigationModule, |
||||||
MatIconModule, |
MatIconModule, |
||||||
PagesModule, |
PagesModule, |
||||||
FormsModule, |
FormsModule, |
||||||
HttpClientModule, |
HttpClientModule, |
||||||
CountdownModule, |
CountdownModule, |
||||||
GISManagementModule, |
GISManagementModule, |
||||||
DataCollectionModule, |
DataCollectionModule, |
||||||
MatProgressSpinnerModule, |
MatProgressSpinnerModule, |
||||||
UiModule, |
UiModule |
||||||
KeyUnitModule, |
], |
||||||
MatTabsModule, |
providers: [httpInterceptorProviders, CacheTokenService, TreeService], |
||||||
PlanManagementModule, |
bootstrap: [AppComponent] |
||||||
], |
|
||||||
providers: [httpInterceptorProviders, CacheTokenService, TreeService], |
|
||||||
bootstrap: [AppComponent], |
|
||||||
}) |
}) |
||||||
export class AppModule {} |
export class AppModule { } |
||||||
|
@ -1,70 +1,31 @@ |
|||||||
import { HttpClient } from "@angular/common/http"; |
import { Injectable } from '@angular/core'; |
||||||
import { Injectable } from "@angular/core"; |
import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router'; |
||||||
import { |
|
||||||
CanActivate, |
|
||||||
ActivatedRouteSnapshot, |
|
||||||
RouterStateSnapshot, |
|
||||||
Router, |
|
||||||
} from "@angular/router"; |
|
||||||
|
|
||||||
@Injectable({ |
@Injectable({ |
||||||
providedIn: "root", |
providedIn: 'root' |
||||||
}) |
}) |
||||||
export class AuthGuard implements CanActivate { |
export class AuthGuard implements CanActivate { |
||||||
constructor(private http: HttpClient, private router: Router) {} |
|
||||||
|
|
||||||
// 路由守卫
|
constructor(private router: Router) { |
||||||
async canActivate( |
|
||||||
next: ActivatedRouteSnapshot, |
|
||||||
state: RouterStateSnapshot |
|
||||||
): Promise<boolean> { |
|
||||||
console.log("next", next); |
|
||||||
console.log("state", state); |
|
||||||
|
|
||||||
if ( |
|
||||||
next.queryParams.singleSignOn && |
|
||||||
next.queryParams.singleSignOn === "true" |
|
||||||
) { |
|
||||||
//执行自动登录逻辑
|
|
||||||
await this.onSubmit(); |
|
||||||
} |
} |
||||||
return this.checkLogin(); |
|
||||||
} |
|
||||||
|
|
||||||
checkLogin(): boolean { |
// 路由守卫
|
||||||
// 判断本地有没有token
|
canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { |
||||||
const token = sessionStorage.getItem("token"); |
|
||||||
|
|
||||||
// 如果有token,允许访问
|
return this.checkLogin(); |
||||||
if (token) { |
|
||||||
return true; |
|
||||||
} |
} |
||||||
|
|
||||||
//如果没有token,跳转登录页
|
checkLogin(): boolean { |
||||||
this.router.navigate(["/login"]); |
|
||||||
return false; |
|
||||||
} |
|
||||||
|
|
||||||
onSubmit() { |
// 判断本地有没有token
|
||||||
return new Promise<void>((resolve, reject) => { |
const token = sessionStorage.getItem('token'); |
||||||
this.http |
|
||||||
.post("/api/Account/SignIn", { |
// 如果有token,允许访问
|
||||||
name: "superadmin", |
if (token) { return true; } |
||||||
password: "SHya119!@", |
|
||||||
}) |
//如果没有token,跳转登录页
|
||||||
.subscribe( |
this.router.navigate(['/login']); |
||||||
(data: any) => { |
return false; |
||||||
sessionStorage.setItem("level", data.level); |
} |
||||||
sessionStorage.setItem("token", data.token); |
|
||||||
sessionStorage.setItem("refreshToken", data.refreshToken); |
|
||||||
sessionStorage.setItem("isDefaultPassword", data.isDefaultPassword); //是否需要修改默认密码
|
|
||||||
sessionStorage.setItem("singleSignOn", "true"); //是否需要修改默认密码
|
|
||||||
resolve(); |
|
||||||
}, |
|
||||||
(err) => { |
|
||||||
reject(); |
|
||||||
} |
|
||||||
); |
|
||||||
}); |
|
||||||
} |
|
||||||
} |
} |
||||||
|
@ -1,73 +1,11 @@ |
|||||||
<mat-tab-group *ngIf="planId" selectedIndex="10" style="height: 99%;"> |
<!-- 株洲项目:传入预案id显示相应预案 --> |
||||||
<mat-tab label="1.基本信息"> |
<div *ngIf="showType == 0"> |
||||||
<ng-template matTabContent> |
<iframe id="inneriframe" [src]='iframeSrc' frameborder="0" style="width: 100%;height: 100%;"></iframe> |
||||||
<app-basicinfo-look></app-basicinfo-look> |
</div> |
||||||
</ng-template> |
<div *ngIf="showType == 1" id="viewer"></div> |
||||||
</mat-tab> |
<div *ngIf="showType == 2"> |
||||||
<mat-tab label="2.四周毗邻"> |
<iframe id="inneriframe2" [src]='threedUrl' frameborder="0" style="width: 100%;height: 100%;"></iframe> |
||||||
<ng-template matTabContent> |
</div> |
||||||
<app-allaround></app-allaround> |
<div *ngIf="showType == 3"> |
||||||
</ng-template> |
<app-collection-tools></app-collection-tools> |
||||||
</mat-tab> |
|
||||||
<mat-tab label="3.消防设施"> |
|
||||||
<ng-template matTabContent> |
|
||||||
<app-fire-fighting-device-look></app-fire-fighting-device-look> |
|
||||||
</ng-template> |
|
||||||
</mat-tab> |
|
||||||
<mat-tab label="4.重点部位"> |
|
||||||
<ng-template matTabContent> |
|
||||||
<app-key-site-look></app-key-site-look> |
|
||||||
</ng-template> |
|
||||||
</mat-tab> |
|
||||||
<mat-tab label="5.功能分区"> |
|
||||||
<ng-template matTabContent> |
|
||||||
<app-function-division-look></app-function-division-look> |
|
||||||
</ng-template> |
|
||||||
</mat-tab> |
|
||||||
<mat-tab label="6.行车路线"> |
|
||||||
<ng-template matTabContent> |
|
||||||
<app-router-gis></app-router-gis> |
|
||||||
</ng-template> |
|
||||||
</mat-tab> |
|
||||||
<mat-tab label="7.周边水源及力量"> |
|
||||||
<ng-template matTabContent> |
|
||||||
<app-water-road></app-water-road> |
|
||||||
</ng-template> |
|
||||||
</mat-tab> |
|
||||||
<mat-tab label="8.实景图"> |
|
||||||
<ng-template matTabContent> |
|
||||||
<app-realistic-picture-look></app-realistic-picture-look> |
|
||||||
</ng-template> |
|
||||||
</mat-tab> |
|
||||||
<mat-tab label="9.上传CAD"> |
|
||||||
<ng-template matTabContent> |
|
||||||
<app-uploading-cad-look></app-uploading-cad-look> |
|
||||||
</ng-template> |
|
||||||
</mat-tab> |
|
||||||
<mat-tab label="10.特别警示"> |
|
||||||
<ng-template matTabContent> |
|
||||||
<app-special-warning></app-special-warning> |
|
||||||
</ng-template> |
|
||||||
</mat-tab> |
|
||||||
<mat-tab label="11.作战部署"> |
|
||||||
<ng-template matTabContent> |
|
||||||
<div *ngIf="showType == 0"> |
|
||||||
<iframe id="inneriframe" [src]='iframeSrc' frameborder="0" style="width: 100%;height: 100%;"></iframe> |
|
||||||
</div> |
|
||||||
<div *ngIf="showType == 1" id="viewer"></div> |
|
||||||
<div *ngIf="showType == 3"> |
|
||||||
<app-collection-tools></app-collection-tools> |
|
||||||
</div> |
|
||||||
|
|
||||||
<!-- 在线编制预案 --> |
|
||||||
<div *ngIf="showType == 2"> |
|
||||||
<app-create-plan-online-five></app-create-plan-online-five> |
|
||||||
</div> |
|
||||||
</ng-template> |
|
||||||
</mat-tab> |
|
||||||
|
|
||||||
</mat-tab-group> |
|
||||||
|
|
||||||
<div *ngIf="unitId"> |
|
||||||
<app-basicinfo-look></app-basicinfo-look> |
|
||||||
</div> |
</div> |
File diff suppressed because it is too large
Load Diff
@ -1,154 +1,121 @@ |
|||||||
import { NgModule } from "@angular/core"; |
import { NgModule } from '@angular/core'; |
||||||
import { CommonModule } from "@angular/common"; |
import { CommonModule } from '@angular/common'; |
||||||
import { |
import { DownloadFile, GisLabelingComponent, LookPlanDialog, ShareUrlDialog } from './gis-labeling/gis-labeling.component'; |
||||||
DownloadFile, |
import {A11yModule} from '@angular/cdk/a11y'; |
||||||
GisLabelingComponent, |
import {DragDropModule} from '@angular/cdk/drag-drop'; |
||||||
LookPlanDialog, |
import {PortalModule} from '@angular/cdk/portal'; |
||||||
ShareUrlDialog, |
import {ScrollingModule} from '@angular/cdk/scrolling'; |
||||||
} from "./gis-labeling/gis-labeling.component"; |
import {CdkStepperModule} from '@angular/cdk/stepper'; |
||||||
import { A11yModule } from "@angular/cdk/a11y"; |
import {CdkTableModule} from '@angular/cdk/table'; |
||||||
import { DragDropModule } from "@angular/cdk/drag-drop"; |
import {CdkTreeModule} from '@angular/cdk/tree'; |
||||||
import { PortalModule } from "@angular/cdk/portal"; |
import {MatAutocompleteModule} from '@angular/material/autocomplete'; |
||||||
import { ScrollingModule } from "@angular/cdk/scrolling"; |
import {MatBadgeModule} from '@angular/material/badge'; |
||||||
import { CdkStepperModule } from "@angular/cdk/stepper"; |
import {MatBottomSheetModule} from '@angular/material/bottom-sheet'; |
||||||
import { CdkTableModule } from "@angular/cdk/table"; |
import {MatButtonModule} from '@angular/material/button'; |
||||||
import { CdkTreeModule } from "@angular/cdk/tree"; |
import {MatButtonToggleModule} from '@angular/material/button-toggle'; |
||||||
import { MatAutocompleteModule } from "@angular/material/autocomplete"; |
import {MatCardModule} from '@angular/material/card'; |
||||||
import { MatBadgeModule } from "@angular/material/badge"; |
import {MatCheckboxModule} from '@angular/material/checkbox'; |
||||||
import { MatBottomSheetModule } from "@angular/material/bottom-sheet"; |
import {MatChipsModule} from '@angular/material/chips'; |
||||||
import { MatButtonModule } from "@angular/material/button"; |
import {MatStepperModule} from '@angular/material/stepper'; |
||||||
import { MatButtonToggleModule } from "@angular/material/button-toggle"; |
import {MatDatepickerModule} from '@angular/material/datepicker'; |
||||||
import { MatCardModule } from "@angular/material/card"; |
import {MatDialogModule} from '@angular/material/dialog'; |
||||||
import { MatCheckboxModule } from "@angular/material/checkbox"; |
import {MatDividerModule} from '@angular/material/divider'; |
||||||
import { MatChipsModule } from "@angular/material/chips"; |
import {MatExpansionModule} from '@angular/material/expansion'; |
||||||
import { MatStepperModule } from "@angular/material/stepper"; |
import {MatGridListModule} from '@angular/material/grid-list'; |
||||||
import { MatDatepickerModule } from "@angular/material/datepicker"; |
import {MatIconModule} from '@angular/material/icon'; |
||||||
import { MatDialogModule } from "@angular/material/dialog"; |
import {MatInputModule} from '@angular/material/input'; |
||||||
import { MatDividerModule } from "@angular/material/divider"; |
import {MatListModule} from '@angular/material/list'; |
||||||
import { MatExpansionModule } from "@angular/material/expansion"; |
import {MatMenuModule} from '@angular/material/menu'; |
||||||
import { MatGridListModule } from "@angular/material/grid-list"; |
import {MatNativeDateModule, MatRippleModule, MatOption} from '@angular/material/core'; |
||||||
import { MatIconModule } from "@angular/material/icon"; |
import {MatPaginatorModule} from '@angular/material/paginator'; |
||||||
import { MatInputModule } from "@angular/material/input"; |
import {MatProgressBarModule} from '@angular/material/progress-bar'; |
||||||
import { MatListModule } from "@angular/material/list"; |
import {MatProgressSpinnerModule} from '@angular/material/progress-spinner'; |
||||||
import { MatMenuModule } from "@angular/material/menu"; |
import {MatRadioModule} from '@angular/material/radio'; |
||||||
import { |
import {MatSelectModule} from '@angular/material/select'; |
||||||
MatNativeDateModule, |
import {MatSidenavModule} from '@angular/material/sidenav'; |
||||||
MatRippleModule, |
import {MatSliderModule} from '@angular/material/slider'; |
||||||
MatOption, |
import {MatSlideToggleModule} from '@angular/material/slide-toggle'; |
||||||
} from "@angular/material/core"; |
import {MatSnackBarModule} from '@angular/material/snack-bar'; |
||||||
import { MatPaginatorModule } from "@angular/material/paginator"; |
import {MatSortModule} from '@angular/material/sort'; |
||||||
import { MatProgressBarModule } from "@angular/material/progress-bar"; |
import {MatTableModule} from '@angular/material/table'; |
||||||
import { MatProgressSpinnerModule } from "@angular/material/progress-spinner"; |
import {MatTabsModule} from '@angular/material/tabs'; |
||||||
import { MatRadioModule } from "@angular/material/radio"; |
import {MatToolbarModule} from '@angular/material/toolbar'; |
||||||
import { MatSelectModule } from "@angular/material/select"; |
import {MatTooltipModule} from '@angular/material/tooltip'; |
||||||
import { MatSidenavModule } from "@angular/material/sidenav"; |
import {MatTreeModule} from '@angular/material/tree'; |
||||||
import { MatSliderModule } from "@angular/material/slider"; |
import { FormsModule, ReactiveFormsModule } from '@angular/forms'; |
||||||
import { MatSlideToggleModule } from "@angular/material/slide-toggle"; |
import { GisRoutingModule } from './gis-management-routing.module'; |
||||||
import { MatSnackBarModule } from "@angular/material/snack-bar"; |
import { LeftWorkingComponent } from './left-working/left-working.component'; |
||||||
import { MatSortModule } from "@angular/material/sort"; |
import { BasicInfoComponent } from './basic-info/basic-info.component'; |
||||||
import { MatTableModule } from "@angular/material/table"; |
import { FunctionPartitionComponent } from './function-partition/function-partition.component'; |
||||||
import { MatTabsModule } from "@angular/material/tabs"; |
import { FireFacilitiesComponent } from './fire-facilities/fire-facilities.component'; |
||||||
import { MatToolbarModule } from "@angular/material/toolbar"; |
import {ImagesData2}from './fire-facilities/imagesdata.component' |
||||||
import { MatTooltipModule } from "@angular/material/tooltip"; |
import {AllaroundComponent} from './allaround/allaround.component' |
||||||
import { MatTreeModule } from "@angular/material/tree"; |
import {ImgDetails}from './allaround/imgdetails.component'; |
||||||
import { FormsModule, ReactiveFormsModule } from "@angular/forms"; |
import {KeySiteLookComponent} from './key-site-look/key-site.component' |
||||||
import { GisRoutingModule } from "./gis-management-routing.module"; |
import {KeySiteImgs2}from './key-site-look/keysiteimgs.component' |
||||||
import { LeftWorkingComponent } from "./left-working/left-working.component"; |
import {RealisticPictureLookComponent} from './realistic-picture-look/realistic-picture.component' |
||||||
import { BasicInfoComponent } from "./basic-info/basic-info.component"; |
import {previewImg3} from './realistic-picture-look/realistic-picture.component' |
||||||
import { FunctionPartitionComponent } from "./function-partition/function-partition.component"; |
import { OpenPlanToolDialog, PlanListComponent } from './plan-list/plan-list.component'; |
||||||
import { FireFacilitiesComponent } from "./fire-facilities/fire-facilities.component"; |
import { PlanManagementModule } from '../plan-management/plan-management.module'; |
||||||
import { ImagesData2 } from "./fire-facilities/imagesdata.component"; |
import { UiModule } from '../ui/ui.module'; |
||||||
import { AllaroundComponent } from "./allaround/allaround.component"; |
import { CadDrawComponent } from './cad-draw/cad-draw.component'; |
||||||
import { ImgDetails } from "./allaround/imgdetails.component"; |
import {previewBigImg2} from './fire-facilities/imagesdata.component' |
||||||
import { KeySiteLookComponent } from "./key-site-look/key-site.component"; |
|
||||||
import { KeySiteImgs2 } from "./key-site-look/keysiteimgs.component"; |
|
||||||
import { RealisticPictureLookComponent } from "./realistic-picture-look/realistic-picture.component"; |
|
||||||
import { previewImg3 } from "./realistic-picture-look/realistic-picture.component"; |
|
||||||
import { |
|
||||||
OpenPlanToolDialog, |
|
||||||
PlanListComponent, |
|
||||||
} from "./plan-list/plan-list.component"; |
|
||||||
import { PlanManagementModule } from "../plan-management/plan-management.module"; |
|
||||||
import { UiModule } from "../ui/ui.module"; |
|
||||||
import { CadDrawComponent } from "./cad-draw/cad-draw.component"; |
|
||||||
import { previewBigImg2 } from "./fire-facilities/imagesdata.component"; |
|
||||||
import { NzAutocompleteModule } from "ng-zorro-antd/auto-complete"; |
|
||||||
|
|
||||||
@NgModule({ |
@NgModule({ |
||||||
declarations: [ |
declarations: [GisLabelingComponent, LeftWorkingComponent, FunctionPartitionComponent, RealisticPictureLookComponent,previewImg3,previewBigImg2, |
||||||
GisLabelingComponent, |
FireFacilitiesComponent,ImagesData2,AllaroundComponent,ImgDetails,KeySiteLookComponent,KeySiteImgs2,BasicInfoComponent,FunctionPartitionComponent,ShareUrlDialog, PlanListComponent,LookPlanDialog,DownloadFile,OpenPlanToolDialog, CadDrawComponent], |
||||||
LeftWorkingComponent, |
|
||||||
FunctionPartitionComponent, |
imports: [ |
||||||
RealisticPictureLookComponent, |
CommonModule, |
||||||
previewImg3, |
CommonModule, |
||||||
previewBigImg2, |
GisRoutingModule, |
||||||
FireFacilitiesComponent, |
A11yModule, |
||||||
ImagesData2, |
CdkStepperModule, |
||||||
AllaroundComponent, |
CdkTableModule, |
||||||
ImgDetails, |
CdkTreeModule, |
||||||
KeySiteLookComponent, |
DragDropModule, |
||||||
KeySiteImgs2, |
MatAutocompleteModule, |
||||||
BasicInfoComponent, |
MatBadgeModule, |
||||||
FunctionPartitionComponent, |
MatBottomSheetModule, |
||||||
ShareUrlDialog, |
MatButtonModule, |
||||||
PlanListComponent, |
MatButtonToggleModule, |
||||||
LookPlanDialog, |
MatCardModule, |
||||||
DownloadFile, |
MatCheckboxModule, |
||||||
OpenPlanToolDialog, |
MatChipsModule, |
||||||
CadDrawComponent, |
MatStepperModule, |
||||||
], |
MatDatepickerModule, |
||||||
|
MatDialogModule, |
||||||
|
MatDividerModule, |
||||||
|
MatExpansionModule, |
||||||
|
MatGridListModule, |
||||||
|
MatIconModule, |
||||||
|
MatInputModule, |
||||||
|
MatListModule, |
||||||
|
MatMenuModule, |
||||||
|
MatNativeDateModule, |
||||||
|
MatPaginatorModule, |
||||||
|
MatProgressBarModule, |
||||||
|
MatProgressSpinnerModule, |
||||||
|
MatRadioModule, |
||||||
|
MatRippleModule, |
||||||
|
MatSelectModule, |
||||||
|
MatSidenavModule, |
||||||
|
MatSliderModule, |
||||||
|
MatSlideToggleModule, |
||||||
|
MatSnackBarModule, |
||||||
|
MatSortModule, |
||||||
|
MatTableModule, |
||||||
|
MatTabsModule, |
||||||
|
MatToolbarModule, |
||||||
|
MatTooltipModule, |
||||||
|
MatTreeModule, |
||||||
|
PortalModule, |
||||||
|
ScrollingModule, |
||||||
|
FormsModule, |
||||||
|
ReactiveFormsModule, |
||||||
|
PlanManagementModule, |
||||||
|
UiModule |
||||||
|
] |
||||||
|
|
||||||
imports: [ |
|
||||||
CommonModule, |
|
||||||
CommonModule, |
|
||||||
GisRoutingModule, |
|
||||||
A11yModule, |
|
||||||
CdkStepperModule, |
|
||||||
CdkTableModule, |
|
||||||
CdkTreeModule, |
|
||||||
DragDropModule, |
|
||||||
MatAutocompleteModule, |
|
||||||
MatBadgeModule, |
|
||||||
MatBottomSheetModule, |
|
||||||
MatButtonModule, |
|
||||||
MatButtonToggleModule, |
|
||||||
MatCardModule, |
|
||||||
MatCheckboxModule, |
|
||||||
MatChipsModule, |
|
||||||
MatStepperModule, |
|
||||||
MatDatepickerModule, |
|
||||||
MatDialogModule, |
|
||||||
MatDividerModule, |
|
||||||
MatExpansionModule, |
|
||||||
MatGridListModule, |
|
||||||
MatIconModule, |
|
||||||
MatInputModule, |
|
||||||
MatListModule, |
|
||||||
MatMenuModule, |
|
||||||
MatNativeDateModule, |
|
||||||
MatPaginatorModule, |
|
||||||
MatProgressBarModule, |
|
||||||
MatProgressSpinnerModule, |
|
||||||
MatRadioModule, |
|
||||||
MatRippleModule, |
|
||||||
MatSelectModule, |
|
||||||
MatSidenavModule, |
|
||||||
MatSliderModule, |
|
||||||
MatSlideToggleModule, |
|
||||||
MatSnackBarModule, |
|
||||||
MatSortModule, |
|
||||||
MatTableModule, |
|
||||||
MatTabsModule, |
|
||||||
MatToolbarModule, |
|
||||||
MatTooltipModule, |
|
||||||
MatTreeModule, |
|
||||||
PortalModule, |
|
||||||
ScrollingModule, |
|
||||||
FormsModule, |
|
||||||
ReactiveFormsModule, |
|
||||||
PlanManagementModule, |
|
||||||
UiModule, |
|
||||||
NzAutocompleteModule, |
|
||||||
], |
|
||||||
}) |
}) |
||||||
export class GISManagementModule {} |
export class GISManagementModule { } |
||||||
|
@ -1,34 +1,40 @@ |
|||||||
import { Injectable } from "@angular/core"; |
import { Injectable } from '@angular/core'; |
||||||
import { HttpClient } from "@angular/common/http"; |
import { HttpClient } from '@angular/common/http' |
||||||
|
|
||||||
@Injectable({ |
@Injectable({ |
||||||
providedIn: "root", |
providedIn: 'root' |
||||||
}) |
}) |
||||||
|
|
||||||
export class CacheTokenService { |
export class CacheTokenService { |
||||||
constructor(private http: HttpClient) {} |
|
||||||
|
constructor(private http:HttpClient) { } |
||||||
public timer; |
public timer; |
||||||
|
|
||||||
//刷新token令牌定时器
|
//刷新token令牌定时器
|
||||||
startUp = (): void => { |
startUp = ():void=>{ |
||||||
window.clearInterval(this.timer); //清一遍定时器
|
window.clearInterval(this.timer) //清一遍定时器
|
||||||
this.timer = window.setInterval(() => { |
this.timer = window.setInterval(()=>{ |
||||||
var token = sessionStorage.getItem("token"); |
var token = sessionStorage.getItem("token"); |
||||||
var refreshToken = sessionStorage.getItem("refreshToken"); |
var refreshToken = sessionStorage.getItem("refreshToken"); |
||||||
this.http |
this.http.post('/api/Account/RefreshToken', { |
||||||
.post("/api/Account/RefreshToken", { |
token: token, |
||||||
token: token, |
refreshToken: refreshToken |
||||||
refreshToken: refreshToken, |
}).subscribe((data:any) => { |
||||||
}) |
sessionStorage.setItem("level",data.level); |
||||||
.subscribe((data: any) => { |
sessionStorage.setItem("token",data.token); |
||||||
sessionStorage.setItem("level", data.level); |
sessionStorage.setItem("refreshToken",data.refreshToken); |
||||||
sessionStorage.setItem("token", data.token); |
}) |
||||||
sessionStorage.setItem("refreshToken", data.refreshToken); |
},18*60*1000) |
||||||
}); |
|
||||||
}, 5 * 60 * 1000); |
} |
||||||
}; |
|
||||||
|
|
||||||
|
|
||||||
//删除定时器
|
//删除定时器
|
||||||
delete = (): void => { |
delete = ():void=> { |
||||||
window.clearInterval(this.timer); |
window.clearInterval(this.timer) |
||||||
}; |
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} |
} |
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,119 +0,0 @@ |
|||||||
<h2 mat-dialog-title>演练记录</h2> |
|
||||||
<div class="box"> |
|
||||||
<div class="contentItem"> |
|
||||||
<div class="title"> |
|
||||||
单位信息 |
|
||||||
</div> |
|
||||||
<div class="content"> |
|
||||||
<div class="textbox"> |
|
||||||
<span class="name">单位名称:</span> |
|
||||||
<span>{{data.unitInfo.name}}</span> |
|
||||||
</div> |
|
||||||
<div class="textbox"> |
|
||||||
<span class="name">单位地址:</span> |
|
||||||
<span>{{data.unitInfo.address}}</span> |
|
||||||
</div> |
|
||||||
<div class="textbox"> |
|
||||||
<span class="name">联系人:</span> |
|
||||||
<span>{{data.unitInfo.contacts}}</span> |
|
||||||
</div> |
|
||||||
<div class="textbox"> |
|
||||||
<span class="name">联系电话:</span> |
|
||||||
<span>{{data.unitInfo.phone}}</span> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
<div class="contentItem"> |
|
||||||
<div class="title"> |
|
||||||
调研人员 |
|
||||||
</div> |
|
||||||
<div class="content peoplecontent"> |
|
||||||
<div> |
|
||||||
<span class="name">带队人员:</span> |
|
||||||
<input [disabled]="!isEditMode" name="teamLeader" [(ngModel)]="teamLeader" nz-input |
|
||||||
placeholder="带队人员" /> |
|
||||||
</div> |
|
||||||
<div> |
|
||||||
<span class="name">熟悉时间:</span> |
|
||||||
<nz-range-picker [disabled]="!isEditMode" [nzShowTime]="{ nzFormat: 'HH:mm' }" |
|
||||||
nzFormat="yyyy-MM-dd HH:mm" [nzPlaceHolder]="['开始时间', '结束时间']" name="time" |
|
||||||
[(ngModel)]="time"></nz-range-picker> |
|
||||||
</div> |
|
||||||
<div> |
|
||||||
<span class="name">调研照片:</span> |
|
||||||
<div class="uploadbox"> |
|
||||||
<input *ngIf="isEditMode" type="file" (change)="upload($event,'调研')"> |
|
||||||
<button *ngIf="isEditMode" nz-button nzType="default">上传照片</button> |
|
||||||
<ul class="imgbox"> |
|
||||||
<li *ngFor="let item of surveyPhoto;let key = index"><img [src]="item" alt="" |
|
||||||
(click)="viewImg(item)"> |
|
||||||
<span *ngIf="isEditMode" class="close material-icons" (click)="deleteImg(surveyPhoto,key)"> |
|
||||||
cancel |
|
||||||
</span> |
|
||||||
</li> |
|
||||||
</ul> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
<div class="contentItem"> |
|
||||||
<div class="title"> |
|
||||||
熟悉内容 |
|
||||||
</div> |
|
||||||
<div class="content photocontent"> |
|
||||||
<div> |
|
||||||
<span class="name">水源照片:</span> |
|
||||||
<div class="uploadbox"> |
|
||||||
<input *ngIf="isEditMode" type="file" (change)="upload($event,'水源')"> |
|
||||||
<button *ngIf="isEditMode" nz-button nzType="default">上传照片</button> |
|
||||||
<ul class="imgbox"> |
|
||||||
<li *ngFor="let item of waterPhoto;let key = index"><img [src]="item" alt="" |
|
||||||
(click)="viewImg(item)"> |
|
||||||
<span *ngIf="isEditMode" class="close material-icons" (click)="deleteImg(waterPhoto,key)"> |
|
||||||
cancel |
|
||||||
</span> |
|
||||||
</li> |
|
||||||
</ul> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
<div> |
|
||||||
<span class="name">疏散通道:</span> |
|
||||||
<div class="uploadbox"> |
|
||||||
<input *ngIf="isEditMode" type="file" (change)="upload($event,'疏散通道')"> |
|
||||||
<button *ngIf="isEditMode" nz-button nzType="default">上传照片</button> |
|
||||||
<ul class="imgbox"> |
|
||||||
<li *ngFor="let item of routePhoto;let key = index"><img [src]="item" alt="" |
|
||||||
(click)="viewImg(item)"> |
|
||||||
<span *ngIf="isEditMode" class="close material-icons" (click)="deleteImg(routePhoto,key)"> |
|
||||||
cancel |
|
||||||
</span> |
|
||||||
</li> |
|
||||||
</ul> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
<div> |
|
||||||
<span class="name">消控室:</span> |
|
||||||
<div class="uploadbox"> |
|
||||||
<input *ngIf="isEditMode" type="file" (change)="upload($event,'消控室')"> |
|
||||||
<button *ngIf="isEditMode" nz-button nzType="default">上传照片</button> |
|
||||||
<ul class="imgbox"> |
|
||||||
<li *ngFor="let item of fireControlPhoto;let key = index"><img [src]="item" alt="" |
|
||||||
(click)="viewImg(item)"> |
|
||||||
<span *ngIf="isEditMode" class="close material-icons" |
|
||||||
(click)="deleteImg(fireControlPhoto,key)"> |
|
||||||
cancel |
|
||||||
</span> |
|
||||||
</li> |
|
||||||
</ul> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
<div class="mask" *ngIf="isLoading"> |
|
||||||
<mat-spinner [diameter]="30"></mat-spinner> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
<mat-dialog-actions align="end"> |
|
||||||
<button mat-button mat-dialog-close [disabled]="isLoading || isLoadingSave">取消</button> |
|
||||||
<button mat-button cdkFocusInitial (click)="save()" [disabled]="isLoading || isLoadingSave">确定</button> |
|
||||||
</mat-dialog-actions> |
|
@ -1,120 +0,0 @@ |
|||||||
.box { |
|
||||||
width: 100%; |
|
||||||
position: relative; |
|
||||||
|
|
||||||
.contentItem { |
|
||||||
display: flex; |
|
||||||
margin: 6px 0; |
|
||||||
border-bottom: 1px dashed rgb(180, 178, 178); |
|
||||||
|
|
||||||
.title { |
|
||||||
width: 75px; |
|
||||||
color: #1890ff; |
|
||||||
display: flex; |
|
||||||
align-items: center; |
|
||||||
} |
|
||||||
|
|
||||||
.content { |
|
||||||
flex: 1; |
|
||||||
display: flex; |
|
||||||
flex-wrap: wrap; |
|
||||||
|
|
||||||
div { |
|
||||||
margin-bottom: 3px; |
|
||||||
|
|
||||||
.name { |
|
||||||
display: inline-block; |
|
||||||
width: 70px; |
|
||||||
margin-right: 3px; |
|
||||||
text-align: right; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
.peoplecontent, |
|
||||||
.photocontent { |
|
||||||
flex-direction: column; |
|
||||||
|
|
||||||
div { |
|
||||||
display: flex; |
|
||||||
align-items: center; |
|
||||||
|
|
||||||
input, |
|
||||||
nz-range-picker { |
|
||||||
flex: 1; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
.textbox { |
|
||||||
height: 32px; |
|
||||||
line-height: 32px; |
|
||||||
width: 50%; |
|
||||||
white-space: nowrap; |
|
||||||
overflow: hidden; |
|
||||||
text-overflow: ellipsis; |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
.uploadbox { |
|
||||||
position: relative; |
|
||||||
display: flex; |
|
||||||
align-items: center; |
|
||||||
|
|
||||||
input { |
|
||||||
width: 88px; |
|
||||||
height: 32px; |
|
||||||
position: absolute; |
|
||||||
left: 0; |
|
||||||
top: 0; |
|
||||||
opacity: 0; |
|
||||||
z-index: 2; |
|
||||||
cursor: pointer; |
|
||||||
} |
|
||||||
|
|
||||||
button { |
|
||||||
z-index: 1; |
|
||||||
cursor: pointer; |
|
||||||
} |
|
||||||
|
|
||||||
.imgbox { |
|
||||||
height: 100%; |
|
||||||
display: flex; |
|
||||||
align-items: center; |
|
||||||
|
|
||||||
li { |
|
||||||
display: flex; |
|
||||||
align-items: center; |
|
||||||
position: relative; |
|
||||||
} |
|
||||||
|
|
||||||
img { |
|
||||||
width: 50px; |
|
||||||
height: 50px; |
|
||||||
margin: 0 5px; |
|
||||||
cursor: pointer; |
|
||||||
} |
|
||||||
.close{ |
|
||||||
position: absolute; |
|
||||||
right: 0; |
|
||||||
top: 0; |
|
||||||
font-size: 15px; |
|
||||||
cursor: pointer; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
.mask { |
|
||||||
position: absolute; |
|
||||||
width: 100%; |
|
||||||
height: 100%; |
|
||||||
left: 0; |
|
||||||
top: 0; |
|
||||||
background: rgba(0, 0, 0, 0.2); |
|
||||||
display: flex; |
|
||||||
justify-content: center; |
|
||||||
align-items: center; |
|
||||||
z-index: 3; |
|
||||||
} |
|
||||||
} |
|
@ -1,25 +0,0 @@ |
|||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing'; |
|
||||||
|
|
||||||
import { UploadDrillComponent } from './upload-drill.component'; |
|
||||||
|
|
||||||
describe('UploadDrillComponent', () => { |
|
||||||
let component: UploadDrillComponent; |
|
||||||
let fixture: ComponentFixture<UploadDrillComponent>; |
|
||||||
|
|
||||||
beforeEach(async(() => { |
|
||||||
TestBed.configureTestingModule({ |
|
||||||
declarations: [ UploadDrillComponent ] |
|
||||||
}) |
|
||||||
.compileComponents(); |
|
||||||
})); |
|
||||||
|
|
||||||
beforeEach(() => { |
|
||||||
fixture = TestBed.createComponent(UploadDrillComponent); |
|
||||||
component = fixture.componentInstance; |
|
||||||
fixture.detectChanges(); |
|
||||||
}); |
|
||||||
|
|
||||||
it('should create', () => { |
|
||||||
expect(component).toBeTruthy(); |
|
||||||
}); |
|
||||||
}); |
|
@ -1,203 +0,0 @@ |
|||||||
import { HttpClient } from "@angular/common/http"; |
|
||||||
import { Component, OnInit, Inject } from "@angular/core"; |
|
||||||
import { MatDialogRef, MAT_DIALOG_DATA } from "@angular/material/dialog"; |
|
||||||
import { ObjectsService } from "@src/app/services/objects.service"; |
|
||||||
import { DatePipe } from "@angular/common"; |
|
||||||
import { MatSnackBar } from "@angular/material/snack-bar"; |
|
||||||
import Viewer from "viewerjs"; |
|
||||||
@Component({ |
|
||||||
selector: "app-upload-drill", |
|
||||||
templateUrl: "./upload-drill.component.html", |
|
||||||
styleUrls: ["./upload-drill.component.scss"], |
|
||||||
providers: [DatePipe], |
|
||||||
}) |
|
||||||
export class UploadDrillComponent implements OnInit { |
|
||||||
constructor( |
|
||||||
public dialogRef: MatDialogRef<UploadDrillComponent>, |
|
||||||
@Inject(MAT_DIALOG_DATA) public data: any, |
|
||||||
private objectsSer: ObjectsService, |
|
||||||
private http: HttpClient, |
|
||||||
private datePipe: DatePipe, |
|
||||||
public snackBar: MatSnackBar |
|
||||||
) {} |
|
||||||
|
|
||||||
isEditMode = true; |
|
||||||
|
|
||||||
ngOnInit(): void { |
|
||||||
console.log(this.data); |
|
||||||
this.isEditMode = this.data.isEditMode; |
|
||||||
this.getData(); |
|
||||||
} |
|
||||||
|
|
||||||
isHttpPost; |
|
||||||
getData() { |
|
||||||
this.http |
|
||||||
.get("/api/DrillRecords", { |
|
||||||
params: { |
|
||||||
CompanyId: this.data.unitInfo.id, |
|
||||||
}, |
|
||||||
}) |
|
||||||
.subscribe((data: any) => { |
|
||||||
console.log("演练记录数据", data); |
|
||||||
if (data.totalCount === 0) { |
|
||||||
this.isHttpPost = true; |
|
||||||
} else { |
|
||||||
this.isHttpPost = false; |
|
||||||
let item = data.items[0]; |
|
||||||
this.drillId = item.id; |
|
||||||
this.teamLeader = item.teamLeader; |
|
||||||
this.time = [item.startTime, item.endTime]; |
|
||||||
this.surveyPhoto = JSON.parse(item.images); |
|
||||||
this.waterPhoto = JSON.parse(item.waterSource); |
|
||||||
this.routePhoto = JSON.parse(item.escapeRoute); |
|
||||||
this.fireControlPhoto = JSON.parse(item.fireControlRoom); |
|
||||||
} |
|
||||||
}); |
|
||||||
} |
|
||||||
|
|
||||||
surveyPhoto = [ |
|
||||||
// "../../../../assets/images/yiyuan.png",
|
|
||||||
// "../../../../assets/images/homeHeader.png",
|
|
||||||
// "../../../../assets/images/add.png",
|
|
||||||
]; //调研人员照片
|
|
||||||
waterPhoto = []; //水源照片
|
|
||||||
routePhoto = []; //疏散照片
|
|
||||||
fireControlPhoto = []; //消控室照片
|
|
||||||
|
|
||||||
//设置文件路径并上传
|
|
||||||
postFilePath; |
|
||||||
isLoading = false; |
|
||||||
async upload(e, type) { |
|
||||||
this.isLoading = true; |
|
||||||
let file = e.target.files[0] || null; //获取上传的文件
|
|
||||||
let fileSize = file.size || null; //上传文件的总大小
|
|
||||||
let shardSize = 5 * 1024 * 1024; //5MB 超过5MB要分块上传
|
|
||||||
this.postFilePath = "演练记录/" + this.data.unitInfo.id; |
|
||||||
if (fileSize >= shardSize) { |
|
||||||
await this.postFileByMul(file, type); |
|
||||||
} else { |
|
||||||
await this.postFile(file, type); |
|
||||||
} |
|
||||||
this.isLoading = false; |
|
||||||
} |
|
||||||
|
|
||||||
//直接上传
|
|
||||||
async postFile(file: File, type) { |
|
||||||
await new Promise((resolve, reject) => { |
|
||||||
this.objectsSer.postFile(this.postFilePath, file).subscribe((data) => { |
|
||||||
let dataObj = data as any; |
|
||||||
let filePath: string = ObjectsService.baseUrl + dataObj.objectName; |
|
||||||
this.setFileUrl(type, filePath); |
|
||||||
resolve("success"); |
|
||||||
}); |
|
||||||
}); |
|
||||||
} |
|
||||||
//分块上传
|
|
||||||
async postFileByMul(file: File, type) { |
|
||||||
await new Promise((resolve, reject) => { |
|
||||||
this.objectsSer |
|
||||||
.postFile_MultipartUpload(this.postFilePath, file) |
|
||||||
.then((value) => { |
|
||||||
console.log("分块上传成功", value); |
|
||||||
let dataObj = value as any; |
|
||||||
this.setFileUrl(type, dataObj.filePath + dataObj.fileName); |
|
||||||
resolve("success"); |
|
||||||
}); |
|
||||||
}); |
|
||||||
} |
|
||||||
|
|
||||||
setFileUrl(type, filePath) { |
|
||||||
switch (type) { |
|
||||||
case "调研": |
|
||||||
this.surveyPhoto.push(filePath); |
|
||||||
break; |
|
||||||
case "水源": |
|
||||||
this.waterPhoto.push(filePath); |
|
||||||
break; |
|
||||||
case "疏散通道": |
|
||||||
this.routePhoto.push(filePath); |
|
||||||
break; |
|
||||||
case "消控室": |
|
||||||
this.fireControlPhoto.push(filePath); |
|
||||||
break; |
|
||||||
} |
|
||||||
} |
|
||||||
deleteImg(arr, key) { |
|
||||||
if (confirm("确认删除此照片吗")) { |
|
||||||
arr.splice(key, 1); |
|
||||||
} |
|
||||||
} |
|
||||||
teamLeader; |
|
||||||
time; |
|
||||||
drillId; |
|
||||||
isLoadingSave = false; |
|
||||||
save() { |
|
||||||
if (!this.isEditMode) { |
|
||||||
this.dialogRef.close(); |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
if (!this.teamLeader || !this.time) { |
|
||||||
this.snackBar.open("请输入带队人员和熟悉时间", "确定", { |
|
||||||
verticalPosition: "top", |
|
||||||
duration: 3000, |
|
||||||
}); |
|
||||||
return; |
|
||||||
} |
|
||||||
this.isLoadingSave = true; |
|
||||||
let body: any = { |
|
||||||
companyId: this.data.unitInfo.id, |
|
||||||
teamLeader: this.teamLeader, |
|
||||||
startTime: this.datePipe.transform(this.time[0], "yyyy-MM-ddTHH:mm:ss"), |
|
||||||
endTime: this.datePipe.transform(this.time[1], "yyyy-MM-ddTHH:mm:ss"), |
|
||||||
images: JSON.stringify(this.surveyPhoto), |
|
||||||
waterSource: JSON.stringify(this.waterPhoto), |
|
||||||
escapeRoute: JSON.stringify(this.routePhoto), |
|
||||||
fireControlRoom: JSON.stringify(this.fireControlPhoto), |
|
||||||
}; |
|
||||||
if (this.isHttpPost) { |
|
||||||
this.http.post("/api/DrillRecords", body).subscribe((data: any) => { |
|
||||||
this.drillId = data.id; |
|
||||||
this.isHttpPost = false; |
|
||||||
this.isLoadingSave = false; |
|
||||||
this.snackBar.open("保存成功", "确定", { |
|
||||||
verticalPosition: "top", |
|
||||||
duration: 3000, |
|
||||||
}); |
|
||||||
this.dialogRef.close(); |
|
||||||
}); |
|
||||||
} else { |
|
||||||
body.id = this.drillId; |
|
||||||
this.http |
|
||||||
.put(`/api/DrillRecords/${this.drillId}`, body) |
|
||||||
.subscribe((data: any) => { |
|
||||||
this.isLoadingSave = false; |
|
||||||
this.snackBar.open("保存成功", "确定", { |
|
||||||
verticalPosition: "top", |
|
||||||
duration: 3000, |
|
||||||
}); |
|
||||||
this.dialogRef.close(); |
|
||||||
}); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
//查看图片
|
|
||||||
viewImg(url) { |
|
||||||
let dom = document.getElementById(`viewerjs`); |
|
||||||
let pObjs = dom.childNodes; |
|
||||||
let node = document.createElement("img"); |
|
||||||
node.style.display = "none"; |
|
||||||
node.src = url; |
|
||||||
node.id = "img"; |
|
||||||
dom.appendChild(node); |
|
||||||
setTimeout(() => { |
|
||||||
let viewer = new Viewer(document.getElementById(`viewerjs`), { |
|
||||||
hidden: () => { |
|
||||||
dom.removeChild(pObjs[0]); |
|
||||||
viewer.destroy(); |
|
||||||
}, |
|
||||||
}); |
|
||||||
node.click(); |
|
||||||
}, 0); |
|
||||||
} |
|
||||||
} |
|
@ -1,391 +1,435 @@ |
|||||||
import { Component, OnInit, Inject, ViewChild } from "@angular/core"; |
import { Component, OnInit, Inject, ViewChild } from '@angular/core'; |
||||||
import { HttpClient } from "@angular/common/http"; |
import { HttpClient } from '@angular/common/http'; |
||||||
import { |
import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; |
||||||
MatDialog, |
import { FileUploader } from 'ng2-file-upload'; |
||||||
MatDialogRef, |
import { MatPaginator } from '@angular/material/paginator'; |
||||||
MAT_DIALOG_DATA, |
import { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar'; |
||||||
} from "@angular/material/dialog"; |
import Swiper from 'swiper'; |
||||||
import { MatPaginator } from "@angular/material/paginator"; |
import { Router,ActivatedRoute } from '@angular/router' |
||||||
import { MatSnackBar, MatSnackBarConfig } from "@angular/material/snack-bar"; |
|
||||||
import Swiper from "swiper"; |
|
||||||
import { Router, ActivatedRoute } from "@angular/router"; |
|
||||||
|
|
||||||
@Component({ |
@Component({ |
||||||
selector: "app-realistic-picture-look", |
selector: 'app-realistic-picture-look', |
||||||
templateUrl: "./realistic-picture.component.html", |
templateUrl: './realistic-picture.component.html', |
||||||
styleUrls: ["./realistic-picture.component.scss"], |
styleUrls: ['./realistic-picture.component.scss'] |
||||||
}) |
}) |
||||||
export class RealisticPictureLookComponent implements OnInit { |
export class RealisticPictureLookComponent implements OnInit { |
||||||
constructor( |
uploader:FileUploader = new FileUploader({ //初始化上传文件
|
||||||
private router: Router, |
url: `/api/Objects/PlanPlatform/${this.route.snapshot.queryParams.id}/RealImgs`,
|
||||||
private route: ActivatedRoute, |
method: "POST",
|
||||||
private http: HttpClient, |
itemAlias: "uploadedfile", |
||||||
public dialog: MatDialog, |
autoUpload: false, |
||||||
public snackBar: MatSnackBar |
removeAfterUpload:true, |
||||||
) {} |
});
|
||||||
|
|
||||||
|
constructor(private router:Router,private route:ActivatedRoute,private http:HttpClient,public dialog: MatDialog,public snackBar: MatSnackBar) { } |
||||||
|
|
||||||
ngOnInit(): void { |
ngOnInit(): void { |
||||||
let companyId = this.route.snapshot.queryParams.id; |
let companyId = this.route.snapshot.queryParams.id |
||||||
this.http |
this.http.get('/api/RealityImageGroups',{params:{ |
||||||
.get("/api/RealityImageGroups", { |
companyId : companyId |
||||||
params: { |
}}).subscribe((data:any)=>{ |
||||||
companyId: companyId, |
this.allRealPicture = data |
||||||
}, |
this.allRealPicture.unshift({ |
||||||
|
companyId:sessionStorage.getItem('companyId'), |
||||||
|
id:'重点部位', |
||||||
|
name: "重点部位", |
||||||
|
realityImages:null |
||||||
}) |
}) |
||||||
.subscribe((data: any) => { |
this.selectReal = data[0] |
||||||
this.allRealPicture = data; |
this.getAllRealPicture() |
||||||
this.allRealPicture.unshift( |
}) |
||||||
{ |
|
||||||
companyId: sessionStorage.getItem("companyId"), |
|
||||||
id: "重点部位", |
|
||||||
name: "重点部位", |
|
||||||
realityImages: null, |
|
||||||
}, |
|
||||||
{ |
|
||||||
companyId: sessionStorage.getItem("companyId"), |
|
||||||
id: "安全出口", |
|
||||||
name: "安全出口", |
|
||||||
realityImages: null, |
|
||||||
} |
|
||||||
); |
|
||||||
this.selectReal = data[0]; |
|
||||||
this.getAllRealPicture(); |
|
||||||
}); |
|
||||||
} |
} |
||||||
|
|
||||||
companyId: any; //单位编号
|
companyId:any; //单位编号
|
||||||
allRealPicture: any = []; //所有实景图文件
|
allRealPicture:any=[]; //所有实景图文件
|
||||||
selectReal: any; //选中的实景图文件
|
selectReal:any; //选中的实景图文件
|
||||||
selectRealIndex: number = 0; //选中的实景图文件下标
|
selectRealIndex:number=0; //选中的实景图文件下标
|
||||||
allImages: any = []; //实景图文件对应所有的实景图
|
allImages:any=[]; //实景图文件对应所有的实景图
|
||||||
isDownload: boolean = false; //是否批量下载
|
isDownload:boolean = false; //是否批量下载
|
||||||
downloadList: any = []; //选中需要下载的图片
|
downloadList:any = []; //选中需要下载的图片
|
||||||
|
|
||||||
//分页
|
//分页
|
||||||
@ViewChild(MatPaginator, { static: true }) |
@ViewChild(MatPaginator, {static: true})
|
||||||
paginator: MatPaginator; |
paginator: MatPaginator; |
||||||
length: any; //共多少条数据
|
length:any; //共多少条数据
|
||||||
pageSize: any = "12"; //每页条数
|
pageSize:any = '12'; //每页条数
|
||||||
pageSizeOptions: number[] = [12]; //设置每页条数
|
pageSizeOptions: number[] = [12] //设置每页条数
|
||||||
PageNumber: any; //第几页
|
PageNumber:any; //第几页
|
||||||
|
|
||||||
//分页切换
|
//分页切换
|
||||||
chagePage(e) { |
chagePage (e) { |
||||||
this.PageNumber = e.pageIndex + 1; |
this.PageNumber = e.pageIndex+1 |
||||||
this.getAllRealPicture(); |
this.getAllRealPicture() |
||||||
} |
} |
||||||
|
|
||||||
//获取所有实景图分组
|
//获取所有实景图分组
|
||||||
getAllGrouping() { |
getAllGrouping () { |
||||||
let companyId = this.route.snapshot.queryParams.id; |
let companyId = this.route.snapshot.queryParams.id |
||||||
this.http |
this.http.get('/api/RealityImageGroups',{params:{ |
||||||
.get("/api/RealityImageGroups", { |
companyId : companyId
|
||||||
params: { |
}}).subscribe((data:any)=>{ |
||||||
companyId: companyId, |
this.allRealPicture = data |
||||||
}, |
this.selectReal = data[this.selectRealIndex] |
||||||
}) |
}) |
||||||
.subscribe((data: any) => { |
|
||||||
this.allRealPicture = data; |
|
||||||
this.allRealPicture.unshift( |
|
||||||
{ |
|
||||||
companyId: sessionStorage.getItem("companyId"), |
|
||||||
id: "重点部位", |
|
||||||
name: "重点部位", |
|
||||||
realityImages: null, |
|
||||||
}, |
|
||||||
{ |
|
||||||
companyId: sessionStorage.getItem("companyId"), |
|
||||||
id: "安全出口", |
|
||||||
name: "安全出口", |
|
||||||
realityImages: null, |
|
||||||
} |
|
||||||
); |
|
||||||
console.log("文件夹列表", this.allRealPicture); |
|
||||||
this.selectReal = data[this.selectRealIndex]; |
|
||||||
}); |
|
||||||
} |
} |
||||||
|
|
||||||
//获取实景图分组对应实景图
|
//获取实景图分组对应实景图
|
||||||
getAllRealPicture() { |
getAllRealPicture () { |
||||||
if (this.selectReal) { |
if (this.selectReal) { |
||||||
if (this.selectReal.id == "安全出口") { |
let data |
||||||
let params = { |
if(this.selectReal.id == '重点部位'){ |
||||||
companyId: this.selectReal.companyId, |
data = { |
||||||
|
groupId: this.selectReal.id, |
||||||
|
companyId : this.selectReal.companyId, |
||||||
|
PageNumber: this.PageNumber || 1, |
||||||
|
pageSize: this.pageSize, |
||||||
|
} |
||||||
|
}else{ |
||||||
|
data = { |
||||||
|
groupId: this.selectReal.id, |
||||||
PageNumber: this.PageNumber || 1, |
PageNumber: this.PageNumber || 1, |
||||||
pageSize: this.pageSize, |
pageSize: this.pageSize, |
||||||
}; |
|
||||||
this.http |
|
||||||
.get("/api/CompanySafetyExits/GetCompanySafetyExitImages", { |
|
||||||
params: params, |
|
||||||
}) |
|
||||||
.subscribe((data: any) => { |
|
||||||
// console.log('当前单位安全出口', data)
|
|
||||||
this.allImages = data.items; |
|
||||||
this.length = data.totalCount; |
|
||||||
this.pageSize = this.pageSize; |
|
||||||
this.downloadList = []; |
|
||||||
this.allImages.forEach((element) => { |
|
||||||
//每张图片设置选中状态为false
|
|
||||||
element.newImageUrl = `${element.imageUrl}?x-oss-process=image/resize,m_fill,h_170,w_299`; //处理图片URL地址
|
|
||||||
element.nameStart = element.name; |
|
||||||
element.checked = false; //图片是否选中布尔值
|
|
||||||
}); |
|
||||||
}); |
|
||||||
} else { |
|
||||||
let data; |
|
||||||
if (this.selectReal.id == "重点部位") { |
|
||||||
data = { |
|
||||||
groupId: this.selectReal.id, |
|
||||||
companyId: this.selectReal.companyId, |
|
||||||
PageNumber: this.PageNumber || 1, |
|
||||||
pageSize: this.pageSize, |
|
||||||
}; |
|
||||||
} else { |
|
||||||
data = { |
|
||||||
groupId: this.selectReal.id, |
|
||||||
PageNumber: this.PageNumber || 1, |
|
||||||
pageSize: this.pageSize, |
|
||||||
}; |
|
||||||
} |
} |
||||||
this.http |
|
||||||
.get("/api/RealityImages", { params: data }) |
|
||||||
.subscribe((data: any) => { |
|
||||||
this.allImages = data.items; |
|
||||||
this.length = data.totalCount; |
|
||||||
this.pageSize = data.pageSize; |
|
||||||
this.downloadList = []; |
|
||||||
this.allImages.forEach((element) => { |
|
||||||
//每张图片设置选中状态为false
|
|
||||||
if (this.selectReal.id == "重点部位") { |
|
||||||
element.newImageUrl = `${element.imageUrl}?x-oss-process=image/resize,m_fill,h_170,w_299`; |
|
||||||
element.nameStart = element.name; |
|
||||||
} else { |
|
||||||
element.newImageUrl = `/api/Objects/PlanPlatform/${element.imageUrl}?x-oss-process=image/resize,m_fill,h_170,w_299`; //处理图片URL地址
|
|
||||||
element.nameStart = element.name.substring( |
|
||||||
0, |
|
||||||
element.name.lastIndexOf(".") |
|
||||||
); //图片名称前缀
|
|
||||||
} |
|
||||||
element.checked = false; //图片是否选中布尔值
|
|
||||||
element.nameEnd = element.name.substring( |
|
||||||
element.name.lastIndexOf("."), |
|
||||||
element.name.length |
|
||||||
); //图片名称后缀
|
|
||||||
}); |
|
||||||
}); |
|
||||||
} |
} |
||||||
|
this.http.get('/api/RealityImages',{params:data}).subscribe((data:any)=>{ |
||||||
|
this.allImages = data.items
|
||||||
|
this.length = data.totalCount |
||||||
|
this.pageSize = data.pageSize |
||||||
|
this.downloadList = [] |
||||||
|
this.allImages.forEach(element => { //每张图片设置选中状态为false
|
||||||
|
if(this.selectReal.id == '重点部位'){ |
||||||
|
element.newImageUrl = `${element.imageUrl}?x-oss-process=image/resize,m_fill,h_170,w_299` |
||||||
|
element.nameStart = element.name |
||||||
|
}else{ |
||||||
|
element.newImageUrl = `/api/Objects/PlanPlatform/${element.imageUrl}?x-oss-process=image/resize,m_fill,h_170,w_299` //处理图片URL地址
|
||||||
|
element.nameStart = element.name.substring(0,element.name.lastIndexOf(".")); //图片名称前缀
|
||||||
|
} |
||||||
|
element.checked = false //图片是否选中布尔值
|
||||||
|
element.nameEnd = element.name.substring(element.name.lastIndexOf("."),element.name.length); //图片名称后缀
|
||||||
|
}); |
||||||
|
|
||||||
|
}) |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
//切换左侧实景图文件
|
//切换左侧实景图文件
|
||||||
changeReal(e, index) { |
changeReal (e,index) { |
||||||
if (this.selectRealIndex != index) { |
if (this.selectRealIndex != index) { |
||||||
this.selectReal = e; |
this.selectReal = e |
||||||
this.selectRealIndex = index; |
this.selectRealIndex = index |
||||||
this.isDownload = false; |
this.isDownload = false |
||||||
this.downloadList = []; |
this.downloadList = [] |
||||||
this.getAllRealPicture(); |
this.getAllRealPicture() |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
//选择批量下载
|
//选择批量下载
|
||||||
download() { |
download () { |
||||||
this.isDownload = !this.isDownload; |
this.isDownload = !this.isDownload |
||||||
if (!this.isDownload) { |
if (!this.isDownload) { //取消批量下载时数组清空
|
||||||
//取消批量下载时数组清空
|
this.allImages.forEach(element => {element.checked = false}); |
||||||
this.allImages.forEach((element) => { |
this.downloadList = [] |
||||||
element.checked = false; |
|
||||||
}); |
|
||||||
this.downloadList = []; |
|
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
// 预览图片---批量选择图片
|
// 预览图片---批量选择图片
|
||||||
operation(e, index) { |
operation (e,index) { |
||||||
if (this.isDownload) { |
if (this.isDownload) { //批量选择图片
|
||||||
//批量选择图片
|
e.checked = !e.checked |
||||||
e.checked = !e.checked; |
if (e.checked==true) {this.downloadList.push(e)}
|
||||||
if (e.checked == true) { |
else {this.downloadList.splice(this.downloadList.findIndex(item => item.id === e.id), 1)} |
||||||
this.downloadList.push(e); |
} else { //预览图片
|
||||||
} else { |
|
||||||
this.downloadList.splice( |
|
||||||
this.downloadList.findIndex((item) => item.id === e.id), |
|
||||||
1 |
|
||||||
); |
|
||||||
} |
|
||||||
} else { |
|
||||||
//预览图片
|
|
||||||
let data = { |
let data = { |
||||||
selectReal: this.selectReal, |
selectReal:this.selectReal, |
||||||
allImages: this.allImages, |
allImages:this.allImages, |
||||||
imgIndex: index, |
imgIndex: index} |
||||||
}; |
let dialogRef = this.dialog.open(previewImg3, |
||||||
let dialogRef = this.dialog.open(previewImg3, { data }); |
{data}); |
||||||
dialogRef.afterClosed().subscribe();
|
dialogRef.afterClosed().subscribe();
|
||||||
} |
} |
||||||
|
|
||||||
} |
} |
||||||
|
|
||||||
//新建实景图文件
|
//新建实景图文件
|
||||||
addReal() {} |
addReal () { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
//编辑实景图文件
|
//编辑实景图文件
|
||||||
editReal() {} |
editReal () { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
//删除实景图文件
|
//删除实景图文件
|
||||||
delete() { |
delete () { |
||||||
let companyId = this.route.snapshot.queryParams.id; |
let companyId = this.route.snapshot.queryParams.id |
||||||
if (this.selectReal) { |
if (this.selectReal) { |
||||||
let isDelete = confirm("您确定要删除吗"); |
let isDelete = confirm('您确定要删除吗') |
||||||
if (isDelete) { |
if (isDelete) { |
||||||
this.http |
this.http.delete(`/api/RealityImageGroups/${this.selectReal.id}`).subscribe(data=>{ |
||||||
.delete(`/api/RealityImageGroups/${this.selectReal.id}`) |
this.http.get('/api/RealityImageGroups',{params:{ |
||||||
.subscribe((data) => { |
companyId : companyId |
||||||
this.http |
}}).subscribe((data:any)=>{ |
||||||
.get("/api/RealityImageGroups", { |
this.allRealPicture = data |
||||||
params: { |
this.selectReal = data[this.selectRealIndex] |
||||||
companyId: companyId, |
this.allImages = [] |
||||||
}, |
this.getAllRealPicture() |
||||||
}) |
}) |
||||||
.subscribe((data: any) => { |
}) |
||||||
this.allRealPicture = data; |
|
||||||
this.selectReal = data[this.selectRealIndex]; |
|
||||||
this.allImages = []; |
|
||||||
this.getAllRealPicture(); |
|
||||||
}); |
|
||||||
}); |
|
||||||
} |
} |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//实景图修改
|
//实景图修改
|
||||||
preservationImg(e) { |
preservationImg (e) { |
||||||
let data = { |
let data = { |
||||||
id: e.id, |
id:e.id, |
||||||
name: e.nameStart + e.nameEnd, |
name:e.nameStart+e.nameEnd, |
||||||
imageUrl: e.imageUrl, |
imageUrl:e.imageUrl, |
||||||
realityImageGroupId: e.realityImageGroupId, |
realityImageGroupId:e.realityImageGroupId |
||||||
}; |
} |
||||||
this.http.put(`/api/RealityImages/${e.id}`, data).subscribe((data) => { |
this.http.put(`/api/RealityImages/${e.id}`,data).subscribe(data=>{ |
||||||
this.getAllRealPicture(); |
this.getAllRealPicture() |
||||||
const config = new MatSnackBarConfig(); |
const config = new MatSnackBarConfig(); |
||||||
config.verticalPosition = "top"; |
config.verticalPosition = 'top'; |
||||||
config.duration = 3000; |
config.duration = 3000 |
||||||
this.snackBar.open("图片修改成功", "确定", config); |
this.snackBar.open('图片修改成功','确定',config); |
||||||
}); |
}) |
||||||
} |
} |
||||||
|
|
||||||
//实景图删除
|
//实景图删除
|
||||||
deleteImg(e) { |
deleteImg (e) { |
||||||
let isDelete = confirm("您确定要删除吗"); |
let isDelete = confirm('您确定要删除吗') |
||||||
if (isDelete) { |
if (isDelete) { |
||||||
this.http.delete(`/api/RealityImages/${e.id}`).subscribe((data) => { |
this.http.delete(`/api/RealityImages/${e.id}`).subscribe(data=>{ |
||||||
this.getAllRealPicture(); |
this.getAllRealPicture() |
||||||
const config = new MatSnackBarConfig(); |
const config = new MatSnackBarConfig(); |
||||||
config.verticalPosition = "top"; |
config.verticalPosition = 'top'; |
||||||
config.duration = 3000; |
config.duration = 3000 |
||||||
this.snackBar.open("图片删除成功", "确定", config); |
this.snackBar.open('图片删除成功','确定',config); |
||||||
}); |
}) |
||||||
this.http |
this.http.delete(`/api/Objects/PlanPlatform/${e.imageUrl}`).subscribe(data=>{}) |
||||||
.delete(`/api/Objects/PlanPlatform/${e.imageUrl}`) |
|
||||||
.subscribe((data) => {}); |
|
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
isLoading: boolean = false; //loading加载
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
isLoading:boolean = false; //loading加载
|
||||||
|
//上传文件↓
|
||||||
|
file:any; //上传的文件
|
||||||
|
objectName:any; //上传对象名
|
||||||
|
uploadId:any; //上传分块上传事件编号
|
||||||
|
|
||||||
|
//change选择文件
|
||||||
|
uploadFile (e) { |
||||||
|
if (this.selectReal) { |
||||||
|
this.file = e.target.files[0] || null //上传的文件
|
||||||
|
let URL = window.URL.createObjectURL(this.file) |
||||||
|
var img = new Image() |
||||||
|
img.src = URL |
||||||
|
let that = this |
||||||
|
img.onload = function () { |
||||||
|
if(img.width>=4096 || img.height>=5000 ){
|
||||||
|
const config = new MatSnackBarConfig(); |
||||||
|
config.verticalPosition = 'top'; |
||||||
|
config.duration = 3000 |
||||||
|
that.snackBar.open('请选择分辨率小于4096*5000的图片','确定',config); |
||||||
|
that.uploader.clearQueue(); //清空input控件文件
|
||||||
|
(<HTMLInputElement>document.getElementById('uploadFile')).value = null //清空input框缓存
|
||||||
|
}else{ that.startUploading() } |
||||||
|
} //onload
|
||||||
|
} else { |
||||||
|
const config = new MatSnackBarConfig(); |
||||||
|
config.verticalPosition = 'top'; |
||||||
|
config.duration = 3000 |
||||||
|
this.snackBar.open('请选择或创建实景图文件夹','确定',config); |
||||||
|
this.uploader.clearQueue(); //清空input控件文件
|
||||||
|
(<HTMLInputElement>document.getElementById('uploadFile')).value = null //清空input框缓存
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
//上传文件
|
||||||
|
startUploading () { |
||||||
|
let file = this.file || null //获取上传的文件
|
||||||
|
let fileSize = file.size || null //上传文件的总大小
|
||||||
|
let shardSize = 5 * 1024 * 1024 //5MB一个分片
|
||||||
|
let maxdSize = 20 * 1024 * 1024 //限制20MB
|
||||||
|
|
||||||
|
if (file && fileSize<=shardSize) { //上传文件<=5MB时
|
||||||
|
this.uploader.queue[0].upload();//开始上传
|
||||||
|
this.uploader.queue[0].onSuccess = (response, status, headers) => {
|
||||||
|
if (status == 201) { // 上传文件成功,上传文件后获取服务器返回的数据
|
||||||
|
let tempRes = JSON.parse(response); |
||||||
|
this.objectName = tempRes.objectName |
||||||
|
this.addRealImg() |
||||||
|
}else { // 上传文件后获取服务器返回的数据错误
|
||||||
|
let tempRes = JSON.parse(response);
|
||||||
|
}}; |
||||||
|
} else if (file && fileSize>shardSize && fileSize<maxdSize) { //上传文件>5MB时,分块上传 |
||||||
|
let data = {filename: file.name} |
||||||
|
this.isLoading = true |
||||||
|
this.http.post(`/api/NewMultipartUpload/PlanPlatform/${this.companyId}/RealImgs`,{},{params:data}).subscribe((data:any)=>{ //初始化分段上传
|
||||||
|
this.objectName = data.objectName |
||||||
|
this.uploadId = data.uploadId |
||||||
|
this.subsectionUploading() |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
PartNumberETag:any=[]; //每次返回需要保存的信息
|
||||||
|
//开始分段上传
|
||||||
|
async subsectionUploading () { |
||||||
|
let file = this.file || null //获取上传的文件
|
||||||
|
let fileSize = file.size || null //上传文件的总大小
|
||||||
|
let shardSize = 5 * 1024 * 1024 //5MB一个分片
|
||||||
|
let allSlice = Math.ceil(fileSize / shardSize) //总文件/5MB===共分多少段
|
||||||
|
|
||||||
|
for (let i = 0;i < allSlice;i++) { //循环分段上传
|
||||||
|
let start = i * shardSize //切割文件开始位置
|
||||||
|
let end = Math.min(fileSize, start + shardSize); //切割文件结束位置
|
||||||
|
let formData = new FormData() |
||||||
|
formData.append("file",file.slice(start, end)) |
||||||
|
|
||||||
|
//同步写法实现异步调用
|
||||||
|
let result = await new Promise((resolve, reject) => { |
||||||
|
// await 需要后面返回一个 promise 对象
|
||||||
|
this.http.post(`/api/MultipartUpload/PlanPlatform/${this.objectName}?uploadId=${this.uploadId}&partNumber=${i+1}`,formData).subscribe((data:any)=>{ |
||||||
|
let msg = { |
||||||
|
"partNumber":data.partNumber || null, |
||||||
|
"eTag": data.eTag || null} |
||||||
|
resolve(msg) // 调用 promise 内置方法处理成功
|
||||||
|
}) |
||||||
|
}); |
||||||
|
this.PartNumberETag.push(result) |
||||||
|
if (this.PartNumberETag.length === allSlice) {this.endUploading()} |
||||||
|
}//for循环
|
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
//完成分块上传
|
||||||
|
endUploading () { |
||||||
|
let data = this.PartNumberETag |
||||||
|
let paramsData = {uploadId:this.uploadId} |
||||||
|
this.http.post(`/api/CompleteMultipartUpload/PlanPlatform/${this.objectName}`,data,{params:paramsData}).subscribe(data=>{ |
||||||
|
this.addRealImg() //上传完成后,发送请求创建实景图
|
||||||
|
this.isLoading = false |
||||||
|
this.uploader.clearQueue(); //清空input控件文件
|
||||||
|
this.PartNumberETag =[] //清空保存返回的信息
|
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
//上传图片成功后获取url地址发送请求创建实景图
|
||||||
|
addRealImg () { |
||||||
|
let data = { |
||||||
|
name: this.file.name, |
||||||
|
imageUrl:this.objectName, |
||||||
|
realityImageGroupId: this.selectReal.id, |
||||||
|
} |
||||||
|
this.http.post('/api/RealityImages',data).subscribe(data=>{ |
||||||
|
(<HTMLInputElement>document.getElementById('uploadFile')).value = null //清空input框缓存
|
||||||
|
this.getAllRealPicture() |
||||||
|
const config = new MatSnackBarConfig(); |
||||||
|
config.verticalPosition = 'top'; |
||||||
|
config.duration = 3000 |
||||||
|
this.snackBar.open('图片上传成功','确定',config); |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//批量下载↓
|
//批量下载↓
|
||||||
//开始下载
|
//开始下载
|
||||||
async batchDownload() { |
async batchDownload () { |
||||||
if (this.downloadList.length) { |
if (this.downloadList.length) { //开始批量循环下载
|
||||||
//开始批量循环下载
|
this.isLoading = true |
||||||
this.isLoading = true; |
for (let i=0;i<this.downloadList.length;i++) { |
||||||
for (let i = 0; i < this.downloadList.length; i++) { |
let result = await new Promise ((result,reject)=>{ |
||||||
let result = await new Promise((result, reject) => { |
this.http.get(`/api/Objects/PlanPlatform/${this.downloadList[i].imageUrl}`,{responseType: 'blob'},).subscribe(data=>{
|
||||||
this.http |
let url = window.URL.createObjectURL(new Blob([data])); //createObjectURL创建一个下载Blob的url地址
|
||||||
.get(`/api/Objects/PlanPlatform/${this.downloadList[i].imageUrl}`, { |
let link = document.createElement("a"); |
||||||
responseType: "blob", |
link.style.display = "none"; |
||||||
}) |
link.href = url; |
||||||
.subscribe((data) => { |
link.setAttribute("download", this.downloadList[i].name); |
||||||
let url = window.URL.createObjectURL(new Blob([data])); //createObjectURL创建一个下载Blob的url地址
|
document.body.appendChild(link); |
||||||
let link = document.createElement("a"); |
link.click(); |
||||||
link.style.display = "none"; |
result('success')}) |
||||||
link.href = url; |
}) |
||||||
link.setAttribute("download", this.downloadList[i].name); |
if(i == this.downloadList.length-1) { //判断是否下载完毕
|
||||||
document.body.appendChild(link); |
this.isLoading = false |
||||||
link.click(); |
this.isDownload = false |
||||||
result("success"); |
this.allImages.forEach(element => {element.checked = false}); |
||||||
}); |
this.downloadList = []} |
||||||
}); |
|
||||||
if (i == this.downloadList.length - 1) { |
|
||||||
//判断是否下载完毕
|
|
||||||
this.isLoading = false; |
|
||||||
this.isDownload = false; |
|
||||||
this.allImages.forEach((element) => { |
|
||||||
element.checked = false; |
|
||||||
}); |
|
||||||
this.downloadList = []; |
|
||||||
} |
|
||||||
} //for循环
|
} //for循环
|
||||||
} else { |
} else { |
||||||
const config = new MatSnackBarConfig(); |
const config = new MatSnackBarConfig(); |
||||||
config.verticalPosition = "top"; |
config.verticalPosition = 'top'; |
||||||
config.duration = 3000; |
config.duration = 3000 |
||||||
this.snackBar.open("请选择图片", "确定", config); |
this.snackBar.open('请选择图片','确定',config);} |
||||||
} |
|
||||||
} |
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} |
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//预览图片组件
|
//预览图片组件
|
||||||
@Component({ |
@Component({ |
||||||
selector: "app-previewImg", |
selector: 'app-previewImg', |
||||||
templateUrl: "./previewImg.html", |
templateUrl: './previewImg.html', |
||||||
styleUrls: ["./realistic-picture.component.scss"], |
styleUrls: ['./realistic-picture.component.scss'] |
||||||
}) |
}) |
||||||
export class previewImg3 { |
export class previewImg3 { |
||||||
constructor( |
|
||||||
private http: HttpClient, |
constructor(private http:HttpClient,public dialog: MatDialog,public dialogRef: MatDialogRef<previewImg3>, |
||||||
public dialog: MatDialog, |
@Inject(MAT_DIALOG_DATA) public data) { } |
||||||
public dialogRef: MatDialogRef<previewImg3>, |
testSwiper: Swiper; |
||||||
@Inject(MAT_DIALOG_DATA) public data |
|
||||||
) {} |
|
||||||
testSwiper: Swiper; |
|
||||||
|
|
||||||
ngOnInit(): void { |
ngOnInit(): void { |
||||||
this.allImages = this.data.allImages; |
this.allImages = this.data.allImages |
||||||
this.allImages.forEach((element) => { |
this.allImages.forEach(element => { |
||||||
if ( |
if( this.data.selectReal.id == '重点部位'){ |
||||||
this.data.selectReal.id == "重点部位" || |
element.previewImageUrl = `${element.imageUrl}` //处理图片URL地址
|
||||||
this.data.selectReal.id == "安全出口" |
}else{ |
||||||
) { |
element.previewImageUrl = `/api/Objects/PlanPlatform/${element.imageUrl}?x-oss-process=image/auto-orient,1` //处理图片URL地址
|
||||||
element.previewImageUrl = `${element.imageUrl}`; //处理图片URL地址
|
|
||||||
} else { |
|
||||||
element.previewImageUrl = `/api/Objects/PlanPlatform/${element.imageUrl}?x-oss-process=image/auto-orient,1`; //处理图片URL地址
|
|
||||||
} |
} |
||||||
}); |
}); |
||||||
} |
} |
||||||
|
|
||||||
ngAfterViewInit() { |
ngAfterViewInit() { |
||||||
this.testSwiper = new Swiper(".swiper-container", { |
this.testSwiper = new Swiper('.swiper-container', { |
||||||
lazy: true, |
lazy: true, |
||||||
initialSlide: this.data.imgIndex, |
initialSlide: this.data.imgIndex, |
||||||
direction: "horizontal", |
direction: 'horizontal', |
||||||
loop: false, |
loop: false, |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 如果需要前进后退按钮
|
// 如果需要前进后退按钮
|
||||||
navigation: { |
navigation: { |
||||||
nextEl: ".swiper-button-next", |
nextEl: '.swiper-button-next', |
||||||
prevEl: ".swiper-button-prev", |
prevEl: '.swiper-button-prev', |
||||||
}, |
} |
||||||
}); |
}); |
||||||
} |
} |
||||||
|
|
||||||
allImages: any; //展示所有的图片
|
allImages:any; //展示所有的图片
|
||||||
rotationAngle: number = 0; //旋转角度
|
rotationAngle:number=0; //旋转角度
|
||||||
|
|
||||||
//旋转图片
|
//旋转图片
|
||||||
rotate() { |
rotate () { |
||||||
this.rotationAngle = this.rotationAngle + 90; |
this.rotationAngle = this.rotationAngle+90 |
||||||
if (this.rotationAngle === 360) { |
if (this.rotationAngle === 360) {this.rotationAngle = 0} |
||||||
this.rotationAngle = 0; |
|
||||||
} |
|
||||||
} |
} |
||||||
|
|
||||||
} |
} |
||||||
|
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,13 @@ |
|||||||
|
|
||||||
<p style="text-align: center;">更新公告</p> |
<p style="text-align: center;">更新公告</p> |
||||||
<p>更新内容如下:</p> |
<p>更新内容如下:</p> |
||||||
<p>1.单位管理模块现在支持按照重点单位和一般单位进行查询。</p> |
<p>1.增加V级文本预案模板导入功能;</p> |
||||||
<p>2.在单位管理模块的列表中,我们将“关注/取消”改为了“重点单位/一般单位”,并且重点单位名称前面有红星标记,一般单位前面无标记,以便更好地区分。</p> |
<p>2.已上传至预案编制管理平台的Ⅴ级文本预案,增加【转在线导入】功能;</p> |
||||||
<p>3.在预案管理模块中,我们去掉了预案列表中的编制级别,并且增加了按照重点单位和一般单位进行查询的功能。在预案列表中的单位名称前面增加了一列显示栏,区分重点单位和一般单位。</p> |
<p>3.增加V级文本预案自定义在线编制功能;</p> |
||||||
<p>4.预案列表页面中,预案的名称支持手动修改,同时转在线导入文档转成功后名称去掉 “转在线编制”。 </p> |
<p>为了预案导入功能正常使用,且提高文本预案识别导入的成功率,需要注意以下几点:</p> |
||||||
<p>5.点击系统右上角的“?”下载重点单位设置说明,以便更好地了解如何设置重点单位。 </p> |
<p>1.【转在线导入】功能,仅支持以Ⅴ级文本预案模板做预案的文档,其他文档不支持【转在线导入】功能。</p> |
||||||
|
<p>2.Ⅴ级文本预案模板可以随意修改内容,但整体框架不得做任何修改,不允许随意删除、合并、增加单元格,否则影响预案识别导入的内容。</p> |
||||||
|
<p>3.文档导入成功后,可在线编辑,也可以自行添加新的功能模块。</p> |
||||||
|
<p>4.V级预案模板导入时仅支持微软Office保存并且格式为.docx的文档,其余格式无法导入。</p> |
||||||
|
<p>5.V级预案模板文档以及V级预案使用说明、视频可点击右上角帮助进行下载、查看。其中Ⅴ级文本预案模板文件夹内放置九大类型预案模板、V级预案转在线导入文件夹内包含使用说明及视频、V级预案自定义文件夹内包含使用说明及视频、V级在线编制文件夹内包含使用说明及视频。</p> |
||||||
|
|
||||||
|
@ -1,95 +1,83 @@ |
|||||||
import { Pipe, PipeTransform } from "@angular/core"; |
import { Pipe, PipeTransform } from '@angular/core'; |
||||||
import { |
import { isno, PlanTypeEnum, AuditStatusEnum, PlanLevelEnum } from '../interface' |
||||||
isno, |
@Pipe({ name: 'isno' }) |
||||||
PlanTypeEnum, |
|
||||||
AuditStatusEnum, |
|
||||||
PlanLevelEnum, |
|
||||||
PlanAuditStatusEnum, |
|
||||||
} from "../interface"; |
|
||||||
@Pipe({ name: "isno" }) |
|
||||||
export class IsnoPipe implements PipeTransform { |
export class IsnoPipe implements PipeTransform { |
||||||
transform(value: boolean): string { |
transform(value: boolean): string { |
||||||
if (value) { |
if (value) { |
||||||
var x = 0; |
var x = 0 |
||||||
} else { |
} else { |
||||||
x = 1; |
x = 1 |
||||||
|
} |
||||||
|
return isno[x] |
||||||
} |
} |
||||||
return isno[x]; |
|
||||||
} |
|
||||||
} |
} |
||||||
@Pipe({ name: "plantype" }) |
@Pipe({ name: 'plantype' }) |
||||||
export class PlanType implements PipeTransform { |
export class PlanType implements PipeTransform { |
||||||
transform(value: number): string { |
transform(value: number): string { |
||||||
return PlanTypeEnum[value]; |
return PlanTypeEnum[value] |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
@Pipe({ name: "auditsatus" }) |
@Pipe({ name: 'auditsatus' }) |
||||||
export class AuditSatus implements PipeTransform { |
export class AuditSatus implements PipeTransform { |
||||||
transform(value: number): string { |
transform(value: number): string { |
||||||
return AuditStatusEnum[value]; |
return AuditStatusEnum[value] |
||||||
} |
} |
||||||
} |
} |
||||||
@Pipe({ name: "planlevel" }) |
@Pipe({ name: 'planlevel' }) |
||||||
export class PlanLevel implements PipeTransform { |
export class PlanLevel implements PipeTransform { |
||||||
transform(value: number): string { |
transform(value: number): string { |
||||||
return PlanLevelEnum[value]; |
return PlanLevelEnum[value] |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
@Pipe({ name: "state" }) |
@Pipe({ name: 'state' }) |
||||||
export class state implements PipeTransform { |
export class state implements PipeTransform { |
||||||
transform(value: number): string { |
transform(value: number): string { |
||||||
if (value == 3) { |
if (value == 3) { |
||||||
return "维护中"; |
return '维护中' |
||||||
} else if (value == 4) { |
} else if (value == 4) { |
||||||
return "维护通过审核"; |
return '维护通过审核' |
||||||
} else if (value == 5) { |
} else if (value == 5) { |
||||||
return "维护驳回审核"; |
return '维护驳回审核' |
||||||
} else { |
} else { |
||||||
return "未维护"; |
return '未维护' |
||||||
|
} |
||||||
} |
} |
||||||
} |
|
||||||
} |
} |
||||||
|
|
||||||
@Pipe({ name: "auditState" }) |
@Pipe({ name: 'differentContentTitle' }) |
||||||
export class auditState implements PipeTransform { |
|
||||||
transform(value: number): string { |
|
||||||
return PlanAuditStatusEnum[value]; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
@Pipe({ name: "differentContentTitle" }) |
|
||||||
export class differentContentTitle implements PipeTransform { |
export class differentContentTitle implements PipeTransform { |
||||||
transform(value: string): string { |
transform(value: string): string { |
||||||
if (typeof value == "boolean" && value) { |
if (typeof (value) == 'boolean' && value) { |
||||||
return "是"; |
return '是' |
||||||
} else if (typeof value == "boolean" && !value) { |
} else if (typeof (value) == 'boolean' && !value) { |
||||||
return "否"; |
return '否' |
||||||
} else if (JSON.stringify(value) == "{}") { |
} else if (JSON.stringify(value) == "{}") { |
||||||
return "空"; |
return '空' |
||||||
} else if (!value) { |
} else if (!value) { |
||||||
return "空"; |
return '空' |
||||||
} else { |
} else { |
||||||
return value; |
return value |
||||||
|
} |
||||||
|
|
||||||
} |
} |
||||||
} |
|
||||||
} |
} |
||||||
@Pipe({ name: "yuan" }) |
@Pipe({ name: 'yuan' }) |
||||||
export class yuan implements PipeTransform { |
export class yuan implements PipeTransform { |
||||||
transform(value: string): string { |
transform(value: string): string { |
||||||
if (value == "LevelOne") { |
if (value == 'LevelOne') { |
||||||
return "一级预案"; |
return '一级预案' |
||||||
} else if (value == "LevelTwo") { |
} else if (value == 'LevelTwo') { |
||||||
return "二级预案"; |
return '二级预案' |
||||||
} else if (value == "LevelThree") { |
} else if (value == 'LevelThree') { |
||||||
return "三级预案"; |
return '三级预案' |
||||||
} else if (value == "LevelFour") { |
}else if (value == 'LevelFour') { |
||||||
return "四级预案"; |
return '四级预案' |
||||||
} else if (value == "LevelFive") { |
}else if (value == 'LevelFive') { |
||||||
return "五级预案"; |
return '五级预案' |
||||||
} else if (value == "PlanText") { |
}else if (value == 'PlanText') { |
||||||
return "文本预案"; |
return '文本预案' |
||||||
|
} |
||||||
} |
} |
||||||
} |
|
||||||
} |
} |
||||||
|
@ -1,232 +1,240 @@ |
|||||||
|
<!-- |
||||||
|
* @Descripttion: |
||||||
|
* @version: |
||||||
|
* @Author: sueRimn |
||||||
|
* @Date: 2020-12-25 10:19:31 |
||||||
|
* @LastEditors: sueRimn |
||||||
|
* @LastEditTime: 2021-08-16 15:49:49 |
||||||
|
--> |
||||||
<div class="box"> |
<div class="box"> |
||||||
<div class="boxleft"> |
<div class="boxleft"> |
||||||
<div class="lefthead"> |
<div class="lefthead"> |
||||||
<form (ngSubmit)="onSubmit(form.value)" #form="ngForm"> |
<form (ngSubmit)="onSubmit(form.value)" #form="ngForm"> |
||||||
<div class="headdiv"> |
<div class="headdiv"> |
||||||
<span>操作类型:</span> |
<span>操作类型:</span> |
||||||
<input type="radio" name="level" value="" [(ngModel)]="level"><span>全部</span> |
<input type="radio" name="level" value="" [(ngModel)]="level"><span>全部</span> |
||||||
<input type="radio" name="level" value="1" [(ngModel)]="level"><span>更新</span> |
<input type="radio" name="level" value="1" [(ngModel)]="level"><span>更新</span> |
||||||
<input type="radio" name="level" value="0" [(ngModel)]="level"><span>新增</span> |
<input type="radio" name="level" value="0" [(ngModel)]="level"><span>新增</span> |
||||||
<input type="radio" name="level" value="2" [(ngModel)]="level"><span>删除</span> |
<input type="radio" name="level" value="2" [(ngModel)]="level"><span>删除</span> |
||||||
<div class="count"> |
<div class="count"> |
||||||
<span>共计:{{count}}条</span> |
<span >共计:{{count}}条</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="headdivtwo"> |
||||||
|
<span>审核状态:</span> |
||||||
|
<input type="radio" name="passstate" [(ngModel)]="verifyState" value=""><span>全部</span> |
||||||
|
<input type="radio" name="passstate" [(ngModel)]="verifyState" value="1"><span>初审通过</span> |
||||||
|
<input type="radio" name="passstate" [(ngModel)]="verifyState" value="2"><span>初审驳回</span> |
||||||
|
<input type="radio" name="passstate" [(ngModel)]="verifyState" value="4"><span>终审通过</span> |
||||||
|
<input type="radio" name="passstate" [(ngModel)]="verifyState" value="5"><span>终审驳回</span> |
||||||
|
</div> |
||||||
|
<div class="headthree"> |
||||||
|
<span>类型:</span> |
||||||
|
<mat-form-field> |
||||||
|
<mat-select placeholder='请选择单位类型' name="unittype" [(ngModel)]="projectlevel"> |
||||||
|
<!-- <mat-option value="1">Ⅰ级预案</mat-option> |
||||||
|
<mat-option value="2">Ⅱ级预案</mat-option> --> |
||||||
|
<mat-option value="3">Ⅲ级预案</mat-option> |
||||||
|
<mat-option value="4">Ⅳ级预案</mat-option> |
||||||
|
<mat-option value="5">Ⅴ级预案</mat-option> |
||||||
|
<!-- <mat-option value="6">应急预案(国家级)</mat-option> |
||||||
|
<mat-option value="7">应急预案(市级)</mat-option> --> |
||||||
|
<mat-option value="8">类型预案</mat-option> |
||||||
|
<mat-option value="11">重点单位</mat-option> |
||||||
|
<!-- <mat-option value="12">消防水源</mat-option> |
||||||
|
<mat-option value="13">消防力量</mat-option> |
||||||
|
<mat-option value="14">联动力量</mat-option> --> |
||||||
|
</mat-select> |
||||||
|
</mat-form-field> |
||||||
|
<span>状态:</span> |
||||||
|
<mat-form-field> |
||||||
|
<mat-select name="IsNewData" placeholder='请选择状态' [(ngModel)]="IsNewData" [multiple]="true"> |
||||||
|
<mat-option value=true>新增</mat-option> |
||||||
|
<mat-option value=false>维护更新</mat-option> |
||||||
|
</mat-select> |
||||||
|
</mat-form-field> |
||||||
|
<span>编制级别:</span> |
||||||
|
<mat-form-field> |
||||||
|
<mat-select name="preparelevel" placeholder='请选择编制级别' [(ngModel)]="PlanLevel"> |
||||||
|
<mat-option *ngFor="let item of preparelevels" [value]="item.value">{{item.name}}</mat-option> |
||||||
|
</mat-select> |
||||||
|
</mat-form-field> |
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
<div class="headfour"> |
||||||
|
<span>时间:</span> |
||||||
|
<mat-form-field class="example-full-width" style="margin-bottom: 0;"> |
||||||
|
<input type="date" matInput name="companyName" autocomplete="off" [(ngModel)]="addtime"> |
||||||
|
</mat-form-field> |
||||||
|
<mat-icon *ngIf="!pcshow" aria-hidden="false" style="position: relative;right: 120px;top: 5px;" id="padshow">arrow forward</mat-icon> |
||||||
|
<span style="margin-left: 15px;" id="pcshow" *ngIf="pcshow">🠊</span> |
||||||
|
<mat-form-field class="example-full-width" style="margin-left: 10px;margin-bottom: 0;"> |
||||||
|
<input type="date" matInput name="companyName" autocomplete="off" [(ngModel)]="endtime"> |
||||||
|
</mat-form-field> |
||||||
|
<span style="margin-left: 10px;" >预案类型:</span> |
||||||
|
<mat-form-field> |
||||||
|
<mat-select placeholder='请选择预案类型' name="unittype" [(ngModel)]="plantypes" [multiple]="true"> |
||||||
|
<mat-option value="1">二维预案</mat-option> |
||||||
|
<mat-option value="2">三维预案</mat-option> |
||||||
|
<mat-option value="4">其他预案</mat-option> |
||||||
|
<mat-option value="16">文本预案</mat-option> |
||||||
|
</mat-select> |
||||||
|
</mat-form-field> |
||||||
|
<button mat-raised-button color="primary" type="submit" >查询</button> |
||||||
|
<button mat-raised-button color="primary" (click)='record()'><img src="../../../assets/images/refresh.png" > 重置</button> |
||||||
|
</div> |
||||||
|
</form> |
||||||
|
|
||||||
|
<!-- <div class="tablediv"> |
||||||
|
<table cellspacing="0" cellpadding="0"> |
||||||
|
<thead> |
||||||
|
<th style="width: 15%;">类型</th> |
||||||
|
<th style="width: 15%;">操作</th> |
||||||
|
<th style="width: 15%;">所属组织</th> |
||||||
|
<th style="width: 15%;">审核状态</th> |
||||||
|
<th style="width: 15%;">提交人</th> |
||||||
|
<th style="width: 25%;">提交时间</th> |
||||||
|
</thead> |
||||||
|
<tbody> |
||||||
|
<tr *ngFor="let item of tableDate"> |
||||||
|
<td>{{item.level}}</td> |
||||||
|
<td [ngClass]="{'green': item.option == '更新','red':item.option == '删除','blue':item.option == '新增'}">{{item.option}}</td> |
||||||
|
<td>{{item.orgication}}</td> |
||||||
|
<td [ngClass]="{'green': item.unitstate == '已通过','red':item.unitstate == '已拒绝'}">{{item.unitstate}}</td> |
||||||
|
<td>{{item.addname}}</td> |
||||||
|
<td>{{item.addtime}}</td> |
||||||
|
</tr> |
||||||
|
</tbody> |
||||||
|
</table> |
||||||
|
</div> --> |
||||||
|
<div class="tablediv"> |
||||||
|
<table cellspacing="0" cellpadding="0" style="margin-top: 10px;"> |
||||||
|
<thead> |
||||||
|
<th style="width: 10%;">状态</th> |
||||||
|
<th style="width: 10%;">类型</th> |
||||||
|
<th style="width: 10%;">预案类型</th> |
||||||
|
<th style="width: 10%;">名称</th> |
||||||
|
<th style="width: 5%;">操作</th> |
||||||
|
<th style="width: 20%;">所属组织</th> |
||||||
|
<th style="width: 10%;">审核状态</th> |
||||||
|
<th style="width: 10%;">提交人</th> |
||||||
|
<th style="width: 15%;">提交时间</th> |
||||||
|
</thead> |
||||||
|
</table> |
||||||
|
<div class="tbodycss" id="tbodydiv" > |
||||||
|
<table cellspacing="0" cellpadding="0" id="table" > |
||||||
|
<tr [ngClass]="{'selectedTr': item.id == id}" *ngFor="let item of tableDate;let key = index" (click)='tableClick($event,item)'> |
||||||
|
<td style="width: 10%;" [ngClass]="{'green': item.itemMaintenanceState == '0','yellow':item.itemMaintenanceState != '0'}">{{item.itemMaintenanceState=='0'?'新增':'维护'}}</td> |
||||||
|
<td style="width: 10%;"> |
||||||
|
<!-- <input type="radio" name="yuan" value={{item.id}} [(ngModel)]="checked" (click)='radioClick(item)'> --> |
||||||
|
{{item.contentType=='1'?'Ⅰ级预案':item.contentType=='2'?'Ⅱ级预案':item.contentType=='3'?'Ⅲ级预案':item.contentType=='4'?'Ⅳ级预案':item.contentType=='5'? |
||||||
|
'Ⅴ级预案':item.contentType=='6'?'应急预案(国家级)':item.contentType=='7'?'应急预案(市级)':item.contentType=='8'?'类型预案':item.contentType=='11'?'重点单位':item.contentType=='12'?'水源':item.contentType=='13'?'消防力量':item.contentType=='14'?'联动力量':'未知'}}</td> |
||||||
|
<td style="width: 10%;"> |
||||||
|
{{item.planType=='1'?'二维预案':item.planType=='2'?'三维预案':item.planType=='4'?'其它预案':item.planType=='16'?'文本预案':''}} |
||||||
|
</td> |
||||||
|
<td style="width: 10%;">{{item.title}}</td> |
||||||
|
<td style="width: 5%;" [ngClass]="{'green': item.operation == '0','red':item.operation == '2','yellow':item.operation == '1'}">{{item.operation=='0'?'新增':item.operation=='1'?'更新':'删除'}}</td> |
||||||
|
<td style="width: 20%;">{{item.organizationName}}</td> |
||||||
|
<td style="width: 10%;" [ngClass]="{'green': item.verifyState == '1'||item.verifyState == '4','red':item.verifyState == '2'||item.verifyState == '5'}">{{item.verifyState=='0'?'待初审':item.verifyState=='1'? |
||||||
|
'初审通过':item.verifyState=='2'?'初审驳回':item.verifyState=='3'?'待终审':item.verifyState=='4'?'终审通过':'终审驳回'}}</td> |
||||||
|
<td style="width: 10%;">{{item.creatorName}}</td> |
||||||
|
<td style="width: 15%;">{{item.createTime|date:'yyyy-MM-dd'}}</td> |
||||||
|
</tr> |
||||||
|
</table> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
<div class="headdivtwo"> |
|
||||||
<span>审核状态:</span> |
|
||||||
<input type="radio" name="passstate" [(ngModel)]="verifyState" value=""><span>全部</span> |
|
||||||
<input type="radio" name="passstate" [(ngModel)]="verifyState" value="1"><span>初审通过</span> |
|
||||||
<input type="radio" name="passstate" [(ngModel)]="verifyState" value="2"><span>初审驳回</span> |
|
||||||
<input type="radio" name="passstate" [(ngModel)]="verifyState" value="4"><span>终审通过</span> |
|
||||||
<input type="radio" name="passstate" [(ngModel)]="verifyState" value="5"><span>终审驳回</span> |
|
||||||
</div> |
|
||||||
<div class="headthree"> |
|
||||||
<span>类型:</span> |
|
||||||
<mat-form-field> |
|
||||||
<mat-select placeholder='请选择单位类型' name="unittype" [(ngModel)]="projectlevel"> |
|
||||||
<mat-option value="1">Ⅰ级预案</mat-option> |
|
||||||
<mat-option value="2">Ⅱ级预案</mat-option> |
|
||||||
<mat-option value="3">Ⅲ级预案</mat-option> |
|
||||||
<mat-option value="4">Ⅳ级预案</mat-option> |
|
||||||
<mat-option value="5">Ⅴ级预案</mat-option> |
|
||||||
<mat-option value="6">应急预案(国家级)</mat-option> |
|
||||||
<mat-option value="7">应急预案(市级)</mat-option> |
|
||||||
<mat-option value="8">类型预案</mat-option> |
|
||||||
<mat-option value="11">重点单位</mat-option> |
|
||||||
<mat-option value="12">消防水源</mat-option> |
|
||||||
<mat-option value="13">消防力量</mat-option> |
|
||||||
<mat-option value="14">联动力量</mat-option> |
|
||||||
</mat-select> |
|
||||||
</mat-form-field> |
|
||||||
<span>状态:</span> |
|
||||||
<mat-form-field> |
|
||||||
<mat-select name="IsNewData" placeholder='请选择状态' [(ngModel)]="IsNewData" [multiple]="true"> |
|
||||||
<mat-option value=true>新增</mat-option> |
|
||||||
<mat-option value=false>维护更新</mat-option> |
|
||||||
</mat-select> |
|
||||||
</mat-form-field> |
|
||||||
<span>编制级别:</span> |
|
||||||
<mat-form-field> |
|
||||||
<mat-select name="preparelevel" placeholder='请选择编制级别' [(ngModel)]="PlanLevel"> |
|
||||||
<mat-option *ngFor="let item of preparelevels" [value]="item.value">{{item.name}}</mat-option> |
|
||||||
</mat-select> |
|
||||||
</mat-form-field> |
|
||||||
|
|
||||||
|
</div> |
||||||
|
<div class="boxright"> |
||||||
|
<div class="company" *ngIf="showtype == 3"> |
||||||
|
<mat-tab-group *ngIf="showtype == 3" style="flex: 1;overflow-y: auto;margin-top: 10px;" [selectedIndex]="selected.value" (selectedIndexChange)="selected.setValue($event)"> |
||||||
|
<mat-tab label="基本信息"> |
||||||
|
<ng-template matTabContent> |
||||||
|
<app-basic-info></app-basic-info> |
||||||
|
</ng-template> |
||||||
|
</mat-tab> |
||||||
|
<mat-tab label="平面图"> |
||||||
|
<ng-template matTabContent> |
||||||
|
<app-plan-list [planType]="'all'"></app-plan-list> |
||||||
|
</ng-template> |
||||||
|
</mat-tab> |
||||||
|
<mat-tab label="四周毗邻"> |
||||||
|
<ng-template matTabContent> |
||||||
|
<app-allaround></app-allaround> |
||||||
|
</ng-template> |
||||||
|
</mat-tab> |
||||||
|
<mat-tab label="消防设施"> |
||||||
|
<ng-template matTabContent> |
||||||
|
<app-fire-facilities></app-fire-facilities> |
||||||
|
</ng-template> |
||||||
|
</mat-tab> |
||||||
|
<mat-tab label="重点部位"> |
||||||
|
<ng-template matTabContent> |
||||||
|
<app-key-site-look></app-key-site-look> |
||||||
|
</ng-template> |
||||||
|
</mat-tab> |
||||||
|
<mat-tab label="功能分区"> |
||||||
|
<ng-template matTabContent> |
||||||
|
<app-function-partition></app-function-partition> |
||||||
|
</ng-template> |
||||||
|
</mat-tab> |
||||||
|
<mat-tab label="实景图"> |
||||||
|
<ng-template matTabContent> |
||||||
|
<app-realistic-picture-look></app-realistic-picture-look> |
||||||
|
</ng-template> |
||||||
|
</mat-tab> |
||||||
|
<mat-tab label="CAD"> |
||||||
|
<ng-template matTabContent> |
||||||
|
<app-cad-draw></app-cad-draw> |
||||||
|
</ng-template> |
||||||
|
</mat-tab> |
||||||
|
</mat-tab-group> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="word" *ngIf="showtype==0"> |
||||||
|
<div class="shadow" *ngIf="!iftrue"> |
||||||
|
<mat-spinner></mat-spinner> |
||||||
|
</div> |
||||||
|
<button mat-raised-button color="primary" style="float: right;margin-top: 10px;margin-right: 15px;" *ngIf="showtype == 0||bianzhi" (click)='lookNew()'>查看详情</button> |
||||||
|
<iframe [src]='iframeSrc' (load)='ifranmeLoad()' id="myiframe"></iframe> |
||||||
</div> |
</div> |
||||||
<div class="headfour"> |
<div id="viewer" *ngIf="showtype==1"></div> |
||||||
<span>时间:</span> |
<div class="twoD" *ngIf="showtype==2"> |
||||||
<mat-form-field class="example-full-width" style="margin-bottom: 0;"> |
<div class="planBox"> |
||||||
<input type="date" matInput name="companyName" autocomplete="off" [(ngModel)]="addtime"> |
<span>单位名称: </span> |
||||||
</mat-form-field> |
<span>{{compantData.name?compantData.name : '暂无数据'}}</span> |
||||||
<mat-icon *ngIf="!pcshow" aria-hidden="false" style="position: relative;right: 120px;top: 5px;" |
</div> |
||||||
id="padshow">arrow forward</mat-icon> |
<div class="planBox"> |
||||||
<span style="margin-left: 15px;" id="pcshow" *ngIf="pcshow">🠊</span> |
<span>消防救援站: </span> |
||||||
<mat-form-field class="example-full-width" style="margin-left: 10px;margin-bottom: 0;"> |
<span>{{organizationName}}</span> |
||||||
<input type="date" matInput name="companyName" autocomplete="off" [(ngModel)]="endtime"> |
</div> |
||||||
</mat-form-field> |
<div class="planBox"> |
||||||
<span style="margin-left: 10px;">预案类型:</span> |
<span>单位类型: </span> |
||||||
<mat-form-field> |
<span>{{compantData.buildingTypes.length?compantData.buildingTypes[0].name : '暂无数据'}}</span> |
||||||
<mat-select placeholder='请选择预案类型' name="unittype" [(ngModel)]="plantypes" [multiple]="true"> |
</div> |
||||||
<mat-option value="1">二维预案</mat-option> |
<div class="planBox"> |
||||||
<mat-option value="2">三维预案</mat-option> |
<span>单位地址: </span> |
||||||
<mat-option value="4">其他预案</mat-option> |
<span>{{compantData.address?compantData.address : '暂无数据'}}</span> |
||||||
<mat-option value="16">文本预案</mat-option> |
</div> |
||||||
</mat-select> |
<div class="planBox"> |
||||||
</mat-form-field> |
<span style="color: #2196F3;cursor:pointer;" (click)='oopen3Dshow()'>查看详情</span> |
||||||
|
</div> |
||||||
</div> |
</div> |
||||||
<div class="btnbox"> |
<!-- 水源审核 --> |
||||||
<button mat-raised-button color="primary" type="submit">查询</button> |
<div class="waterAudit" *ngIf="showtype == 12"> |
||||||
<button mat-raised-button color="primary" type="button" (click)='record()'>重置</button> |
<app-water-audit [waterData]="waterData"></app-water-audit> |
||||||
</div> |
</div> |
||||||
</form> |
<!-- 消防力量审核 --> |
||||||
<div class="tablediv"> |
<div class="fireForceAudit" *ngIf="showtype == 13"> |
||||||
<table class="header" cellspacing="0" cellpadding="0" style="margin-top: 10px;"> |
<app-fireforce-audit [FireForceDetailInfo]="fireForceDetailInfo" [level]="postlevel"></app-fireforce-audit> |
||||||
<thead> |
</div> |
||||||
<th style="width: 10%;">状态</th> |
<!-- 联动力量审核 --> |
||||||
<th style="width: 10%;">类型</th> |
<div class="LinkageForcesAudit" *ngIf="showtype == 14"> |
||||||
<th style="width: 10%;">预案类型</th> |
<app-linkageforces-audit [LinkageForceDetailInfo]="LinkageForceDetailInfo"></app-linkageforces-audit> |
||||||
<th style="width: 10%;">名称</th> |
|
||||||
<th style="width: 5%;">操作</th> |
|
||||||
<th style="width: 20%;">所属组织</th> |
|
||||||
<th style="width: 10%;">审核状态</th> |
|
||||||
<th style="width: 10%;">提交人</th> |
|
||||||
<th style="width: 15%;">提交时间</th> |
|
||||||
</thead> |
|
||||||
</table> |
|
||||||
<div class="tbodycss" id="tbodydiv"> |
|
||||||
<table cellspacing="0" cellpadding="0" id="table"> |
|
||||||
<tr [ngClass]="{'selectedTr': item.id == id}" *ngFor="let item of tableDate;let key = index" |
|
||||||
(click)='tableClick($event,item)'> |
|
||||||
<td style="width: 10%;" |
|
||||||
[ngClass]="{'green': item.itemMaintenanceState == '0','yellow':item.itemMaintenanceState != '0'}"> |
|
||||||
{{item.itemMaintenanceState=='0'?'新增':'维护'}}</td> |
|
||||||
<td style="width: 10%;"> |
|
||||||
<!-- <input type="radio" name="yuan" value={{item.id}} [(ngModel)]="checked" (click)='radioClick(item)'> --> |
|
||||||
{{item.contentType=='1'?'Ⅰ级预案':item.contentType=='2'?'Ⅱ级预案':item.contentType=='3'?'Ⅲ级预案':item.contentType=='4'?'Ⅳ级预案':item.contentType=='5'? |
|
||||||
'Ⅴ级预案':item.contentType=='6'?'应急预案(国家级)':item.contentType=='7'?'应急预案(市级)':item.contentType=='8'?'类型预案':(item.contentType=='11' |
|
||||||
&&item.itemObj&& |
|
||||||
item.itemObj?.isFollowed)?'重点单位':(item.contentType=='11' |
|
||||||
&&item.itemObj&& |
|
||||||
!item.itemObj?.isFollowed)?'一般单位':(item.contentType=='11' |
|
||||||
&&!item.itemObj)?'已删除':item.contentType=='12'?'水源':item.contentType=='13'?'消防力量':item.contentType=='14'?'联动力量':'未知'}} |
|
||||||
</td> |
|
||||||
<td style="width: 10%;"> |
|
||||||
{{item.planType=='1'?'二维预案':item.planType=='2'?'三维预案':item.planType=='4'?'其它预案':item.planType=='16'?'文本预案':''}} |
|
||||||
</td> |
|
||||||
<td style="width: 10%;">{{item.title}}</td> |
|
||||||
<td style="width: 5%;" |
|
||||||
[ngClass]="{'green': item.operation == '0','red':item.operation == '2','yellow':item.operation == '1'}"> |
|
||||||
{{item.operation=='0'?'新增':item.operation=='1'?'更新':'删除'}}</td> |
|
||||||
<td style="width: 20%;">{{item.organizationName}}</td> |
|
||||||
<td style="width: 10%;" |
|
||||||
[ngClass]="{'green': item.verifyState == '1'||item.verifyState == '4','red':item.verifyState == '2'||item.verifyState == '5'}"> |
|
||||||
{{item.verifyState=='0'?'待初审':item.verifyState=='1'? |
|
||||||
'初审通过':item.verifyState=='2'?'初审驳回':item.verifyState=='3'?'待终审':item.verifyState=='4'?'终审通过':'终审驳回'}} |
|
||||||
</td> |
|
||||||
<td style="width: 10%;">{{item.creatorName}}</td> |
|
||||||
<td style="width: 15%;">{{item.createTime|date:'yyyy-MM-dd'}}</td> |
|
||||||
</tr> |
|
||||||
</table> |
|
||||||
<mat-paginator [length]="count" [pageIndex]="PageNumber - 1" [pageSize]="10" (page)="chagePage($event)"> |
|
||||||
</mat-paginator> |
|
||||||
</div> |
</div> |
||||||
|
|
||||||
|
|
||||||
</div> |
|
||||||
</div> |
|
||||||
<div class="mask" *ngIf="isTableData"> |
|
||||||
<mat-spinner [diameter]="30"></mat-spinner> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
<div class="boxright"> |
|
||||||
<div class="company" *ngIf="showtype == 3"> |
|
||||||
<mat-tab-group *ngIf="showtype == 3" style="flex: 1;overflow-y: auto;margin-top: 10px;" |
|
||||||
[selectedIndex]="selected.value" (selectedIndexChange)="selected.setValue($event)"> |
|
||||||
<mat-tab label="基本信息"> |
|
||||||
<ng-template matTabContent> |
|
||||||
<app-basic-info></app-basic-info> |
|
||||||
</ng-template> |
|
||||||
</mat-tab> |
|
||||||
<mat-tab label="平面图"> |
|
||||||
<ng-template matTabContent> |
|
||||||
<app-plan-list [planType]="'all'"></app-plan-list> |
|
||||||
</ng-template> |
|
||||||
</mat-tab> |
|
||||||
<mat-tab label="四周毗邻"> |
|
||||||
<ng-template matTabContent> |
|
||||||
<app-allaround></app-allaround> |
|
||||||
</ng-template> |
|
||||||
</mat-tab> |
|
||||||
<mat-tab label="消防设施"> |
|
||||||
<ng-template matTabContent> |
|
||||||
<app-fire-facilities></app-fire-facilities> |
|
||||||
</ng-template> |
|
||||||
</mat-tab> |
|
||||||
<mat-tab label="重点部位"> |
|
||||||
<ng-template matTabContent> |
|
||||||
<app-key-site-look></app-key-site-look> |
|
||||||
</ng-template> |
|
||||||
</mat-tab> |
|
||||||
<mat-tab label="功能分区"> |
|
||||||
<ng-template matTabContent> |
|
||||||
<app-function-partition></app-function-partition> |
|
||||||
</ng-template> |
|
||||||
</mat-tab> |
|
||||||
<mat-tab label="实景图"> |
|
||||||
<ng-template matTabContent> |
|
||||||
<app-realistic-picture-look></app-realistic-picture-look> |
|
||||||
</ng-template> |
|
||||||
</mat-tab> |
|
||||||
<mat-tab label="CAD"> |
|
||||||
<ng-template matTabContent> |
|
||||||
<app-cad-draw></app-cad-draw> |
|
||||||
</ng-template> |
|
||||||
</mat-tab> |
|
||||||
</mat-tab-group> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="word" *ngIf="showtype==0"> |
|
||||||
<div class="shadow" *ngIf="!iftrue"> |
|
||||||
<mat-spinner [diameter]="30"></mat-spinner> |
|
||||||
</div> |
|
||||||
<button mat-raised-button color="primary" style="float: right;margin-top: 10px;margin-right: 15px;" |
|
||||||
*ngIf="showtype == 0||bianzhi" (click)='lookNew()'>查看详情</button> |
|
||||||
<iframe [src]='iframeSrc' (load)='ifranmeLoad()' id="myiframe"></iframe> |
|
||||||
</div> |
|
||||||
<div id="viewer" *ngIf="showtype==1"></div> |
|
||||||
<div class="twoD" *ngIf="showtype==2"> |
|
||||||
<div class="planBox"> |
|
||||||
<span>单位名称: </span> |
|
||||||
<span>{{compantData.name?compantData.name : '暂无数据'}}</span> |
|
||||||
</div> |
|
||||||
<div class="planBox"> |
|
||||||
<span>消防救援站: </span> |
|
||||||
<span>{{organizationName}}</span> |
|
||||||
</div> |
|
||||||
<div class="planBox"> |
|
||||||
<span>单位类型: </span> |
|
||||||
<span>{{compantData.buildingTypes.length?compantData.buildingTypes[0].name : '暂无数据'}}</span> |
|
||||||
</div> |
|
||||||
<div class="planBox"> |
|
||||||
<span>单位地址: </span> |
|
||||||
<span>{{compantData.address?compantData.address : '暂无数据'}}</span> |
|
||||||
</div> |
|
||||||
<div class="planBox"> |
|
||||||
<span style="color: #2196F3;cursor:pointer;" (click)='oopen3Dshow()'>查看详情</span> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
<!-- 水源审核 --> |
|
||||||
<div class="waterAudit" *ngIf="showtype == 12"> |
|
||||||
<app-water-audit [waterData]="waterData"></app-water-audit> |
|
||||||
</div> |
|
||||||
<!-- 消防力量审核 --> |
|
||||||
<div class="fireForceAudit" *ngIf="showtype == 13"> |
|
||||||
<app-fireforce-audit [FireForceDetailInfo]="fireForceDetailInfo" [level]="postlevel"></app-fireforce-audit> |
|
||||||
</div> |
|
||||||
<!-- 联动力量审核 --> |
|
||||||
<div class="LinkageForcesAudit" *ngIf="showtype == 14"> |
|
||||||
<app-linkageforces-audit [LinkageForceDetailInfo]="LinkageForceDetailInfo"></app-linkageforces-audit> |
|
||||||
</div> |
</div> |
||||||
</div> |
|
||||||
</div> |
</div> |
@ -1,438 +1,334 @@ |
|||||||
.box { |
.box{ |
||||||
height: 100%; |
|
||||||
width: 100%; |
|
||||||
display: flex; |
|
||||||
|
|
||||||
.boxleft { |
|
||||||
height: 100%; |
height: 100%; |
||||||
width: 45%; |
width: 100%; |
||||||
overflow-y: auto; |
|
||||||
background-color: #FFFFFF; |
|
||||||
display: flex; |
display: flex; |
||||||
flex-direction: column; |
.boxleft{ |
||||||
position: relative; |
height: 100%; |
||||||
|
width: 45%; |
||||||
.lefthead { |
overflow-y: auto; |
||||||
height: 100%; |
background-color: #FFFFFF; |
||||||
display: flex; |
|
||||||
flex-direction: column; |
|
||||||
|
|
||||||
.headdiv { |
|
||||||
@media screen and (min-device-width:1400px) { |
|
||||||
margin: 30px 0 0 28px; |
|
||||||
} |
|
||||||
|
|
||||||
@media screen and (max-device-width:1200px) { |
|
||||||
margin-top: 10px; |
|
||||||
} |
|
||||||
|
|
||||||
@media screen and (max-device-width:1400px) and (min-device-width:1200px) { |
|
||||||
margin: 20px 0 0 15px; |
|
||||||
} |
|
||||||
|
|
||||||
height: 40px; |
|
||||||
display: flex; |
display: flex; |
||||||
align-items: center; |
flex-direction: column; |
||||||
flex-direction: row; |
.lefthead{ |
||||||
|
display: flex; |
||||||
span { |
flex-direction: column; |
||||||
@media screen and (min-device-width:1400px) { |
.headdiv{ |
||||||
font-size: 16px; |
@media screen and (min-device-width:1400px){ |
||||||
} |
margin: 30px 0 0 28px; |
||||||
|
} |
||||||
@media screen and (max-device-width:1200px) { |
@media screen and (max-device-width:1200px){ |
||||||
font-size: 13px; |
margin-top: 10px; |
||||||
} |
} |
||||||
|
@media screen and (max-device-width:1400px) and (min-device-width:1200px){ |
||||||
@media screen and (max-device-width:1400px) and (min-device-width:1200px) { |
margin: 20px 0 0 15px; |
||||||
font-size: 16px; |
} |
||||||
} |
height: 40px; |
||||||
|
display: flex; |
||||||
margin-left: 3px; |
flex-direction: row; |
||||||
} |
span{ |
||||||
|
@media screen and (min-device-width:1400px){ |
||||||
input { |
font-size: 16px; |
||||||
@media screen and (min-device-width:1400px) { |
} |
||||||
margin-left: 40px; |
@media screen and (max-device-width:1200px){ |
||||||
|
font-size: 13px; |
||||||
} |
} |
||||||
|
@media screen and (max-device-width:1400px) and (min-device-width:1200px){ |
||||||
@media screen and (max-device-width:1200px) { |
font-size: 16px; |
||||||
margin-left: 12px; |
} |
||||||
} |
margin-left: 3px; |
||||||
|
} |
||||||
@media screen and (max-device-width:1400px) and (min-device-width:1200px) { |
input{ |
||||||
margin-left: 12px; |
@media screen and (min-device-width:1400px){ |
||||||
|
margin-left: 50px; |
||||||
} |
top: 6px; |
||||||
|
} |
||||||
position: relative; |
@media screen and (max-device-width:1200px){ |
||||||
|
margin-left: 12px; |
||||||
} |
top: 3px; |
||||||
|
} |
||||||
.count { |
@media screen and (max-device-width:1400px) and (min-device-width:1200px){ |
||||||
@media screen and (min-device-width:1400px) { |
margin-left: 12px; |
||||||
margin-left: 110px; |
top: 6px; |
||||||
} |
} |
||||||
|
position: relative; |
||||||
@media screen and (max-device-width:1200px) { |
|
||||||
margin-left: 20px; |
} |
||||||
position: relative; |
.count{ |
||||||
bottom: 4px; |
@media screen and (min-device-width:1400px){ |
||||||
} |
margin-left: 110px; |
||||||
|
} |
||||||
@media screen and (max-device-width:1400px) and (min-device-width:1200px) { |
@media screen and (max-device-width:1200px){ |
||||||
margin-left: 20px; |
margin-left: 20px; |
||||||
} |
position: relative; |
||||||
} |
bottom: 4px; |
||||||
} |
} |
||||||
|
@media screen and (max-device-width:1400px) and (min-device-width:1200px){ |
||||||
.headdivtwo { |
margin-left: 20px; |
||||||
@media screen and (min-device-width:1400px) { |
} |
||||||
margin: 0 0 0 28px; |
} |
||||||
} |
} |
||||||
|
.headdivtwo{ |
||||||
@media screen and (max-device-width:1200px) { |
@media screen and (min-device-width:1400px){ |
||||||
margin-left: 0; |
margin: 0 0 0 28px; |
||||||
|
} |
||||||
|
@media screen and (max-device-width:1200px){ |
||||||
|
margin-left: 0; |
||||||
|
} |
||||||
|
@media screen and (max-device-width:1400px) and (min-device-width:1200px){ |
||||||
|
margin: 0 0 0 15px; |
||||||
|
} |
||||||
|
//height: 40px; |
||||||
|
display: flex; |
||||||
|
flex-direction: row; |
||||||
|
span{ |
||||||
|
@media screen and (min-device-width:1200px){ |
||||||
|
font-size: 16px; |
||||||
|
} |
||||||
|
@media screen and (max-device-width:1200px){ |
||||||
|
font-size: 13px; |
||||||
|
} |
||||||
|
|
||||||
|
margin-left: 3px; |
||||||
|
} |
||||||
|
input{ |
||||||
|
@media screen and (min-device-width:1400px){ |
||||||
|
margin-left: 50px; |
||||||
|
top: 5px; |
||||||
|
} |
||||||
|
@media screen and (max-device-width:1200px){ |
||||||
|
margin-left: 0; |
||||||
|
top: 3px; |
||||||
|
} |
||||||
|
@media screen and (max-device-width:1400px) and (min-device-width:1200px){ |
||||||
|
margin-left: 0; |
||||||
|
top: 5px; |
||||||
|
} |
||||||
|
position: relative; |
||||||
|
|
||||||
|
|
||||||
|
left: 2px; |
||||||
|
} |
||||||
|
.count{ |
||||||
|
@media screen and (min-device-width:1400px){ |
||||||
|
margin-left: 110px; |
||||||
|
} |
||||||
|
@media screen and (max-device-width:1400px){ |
||||||
|
margin-left: 20px; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
.headthree{ |
||||||
|
|
||||||
|
height: 45px; |
||||||
|
@media screen and (min-device-width:1400px){ |
||||||
|
margin-left: 30px; |
||||||
|
} |
||||||
|
@media screen and (max-device-width:1200px){ |
||||||
|
font-size: 13px; |
||||||
|
mat-form-field{ |
||||||
|
width: 50px; |
||||||
|
} |
||||||
|
} |
||||||
|
@media screen and (max-device-width:1400px) and (min-device-width:1200px){ |
||||||
|
margin-left: 15px; |
||||||
|
mat-form-field{ |
||||||
|
width: 50px; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
.headfour{ |
||||||
|
|
||||||
|
@media screen and (max-device-width:1200px){ |
||||||
|
font-size: 13px; |
||||||
|
mat-form-field{ |
||||||
|
width: 80px; |
||||||
|
} |
||||||
|
} |
||||||
|
@media screen and (max-device-width:1400px) and (min-device-width:1200px){ |
||||||
|
margin-left: 15px; |
||||||
|
mat-form-field{ |
||||||
|
width: 80px; |
||||||
|
} |
||||||
|
} |
||||||
|
@media screen and (min-device-width:1400px){ |
||||||
|
margin-left: 30px; |
||||||
|
} |
||||||
|
span{ |
||||||
|
@media screen and (min-device-width:1400px){ |
||||||
|
//margin-left: 30px; |
||||||
|
} |
||||||
|
} |
||||||
|
button{ |
||||||
|
@media screen and (min-device-width:1400px){ |
||||||
|
margin-left: 40px; |
||||||
|
font-size: 16px; |
||||||
|
width: 80px; |
||||||
|
height: 36px; |
||||||
|
} |
||||||
|
@media screen and (max-device-width:1200px){ |
||||||
|
margin-left: 80px; |
||||||
|
} |
||||||
|
@media screen and (max-device-width:1400px) and (min-device-width:1200px){ |
||||||
|
margin-left: 80px; |
||||||
|
} |
||||||
|
} |
||||||
|
img{ |
||||||
|
@media screen and (max-device-width:1400px) and (min-device-width:1200px){ |
||||||
|
height: 14px; |
||||||
|
width: 14px; |
||||||
|
} |
||||||
|
@media screen and (min-device-width:1400px){ |
||||||
|
height: 14px; |
||||||
|
width: 14px; |
||||||
|
} |
||||||
|
@media screen and (max-device-width:1200px){ |
||||||
|
height: 12px; |
||||||
|
width: 12px; |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
} |
} |
||||||
|
|
||||||
@media screen and (max-device-width:1400px) and (min-device-width:1200px) { |
.tablediv{ |
||||||
margin: 0 0 0 15px; |
width: 100%; |
||||||
|
height: 100%; |
||||||
|
padding-bottom: 20px; |
||||||
|
|
||||||
|
.tbodycss{ |
||||||
|
//overflow-y: auto; |
||||||
|
@media screen and (min-device-width:1400px){ |
||||||
|
overflow-y: auto; |
||||||
|
} |
||||||
|
height:550px; |
||||||
|
width: 100%; |
||||||
|
.selectedTr{ |
||||||
|
background-color: #b3d3ee; |
||||||
|
} |
||||||
|
} |
||||||
|
table{ |
||||||
|
//margin: 20px 20px; |
||||||
|
margin-left: 10px; |
||||||
|
margin-right: 10px; |
||||||
|
width: 97.5%; |
||||||
|
//border: 1px solid #2196F3; |
||||||
|
thead{ |
||||||
|
height:48px; |
||||||
|
color: #FFFFFF; |
||||||
|
background-color: #2196F3; |
||||||
|
//font-size: 16px; |
||||||
|
th{ |
||||||
|
font-weight:10; |
||||||
|
@media screen and (min-device-width:1200px){ |
||||||
|
font-size: 16px; |
||||||
|
} |
||||||
|
@media screen and (max-device-width:1200px){ |
||||||
|
font-size: 13px; |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
tr:nth-child(odd){ |
||||||
|
background: #FAFAFA; |
||||||
|
} |
||||||
|
} |
||||||
} |
} |
||||||
|
} |
||||||
//height: 40px; |
.boxright{ |
||||||
|
height: 100%; |
||||||
|
width: 53%; |
||||||
|
flex: 1; |
||||||
|
background-color: #FFFFFF; |
||||||
|
margin-left: 10px; |
||||||
display: flex; |
display: flex; |
||||||
flex-direction: row; |
flex-direction: column; |
||||||
align-items: center; |
@media screen and (max-device-width:1300px){ |
||||||
|
overflow-y: auto; |
||||||
span { |
|
||||||
@media screen and (min-device-width:1200px) { |
|
||||||
font-size: 16px; |
|
||||||
} |
|
||||||
|
|
||||||
@media screen and (max-device-width:1200px) { |
|
||||||
font-size: 13px; |
|
||||||
} |
|
||||||
|
|
||||||
margin-left: 3px; |
|
||||||
} |
|
||||||
|
|
||||||
input { |
|
||||||
@media screen and (min-device-width:1400px) { |
|
||||||
margin-left: 40px; |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
@media screen and (max-device-width:1200px) { |
|
||||||
margin-left: 0; |
|
||||||
} |
|
||||||
|
|
||||||
@media screen and (max-device-width:1400px) and (min-device-width:1200px) { |
|
||||||
margin-left: 0; |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
position: relative; |
|
||||||
|
|
||||||
|
|
||||||
left: 2px; |
|
||||||
} |
|
||||||
|
|
||||||
.count { |
|
||||||
@media screen and (min-device-width:1400px) { |
|
||||||
margin-left: 110px; |
|
||||||
} |
|
||||||
|
|
||||||
@media screen and (max-device-width:1400px) { |
|
||||||
margin-left: 20px; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
.headthree { |
|
||||||
|
|
||||||
height: 45px; |
|
||||||
|
|
||||||
@media screen and (min-device-width:1400px) { |
|
||||||
margin-left: 30px; |
|
||||||
} |
|
||||||
|
|
||||||
@media screen and (max-device-width:1200px) { |
|
||||||
font-size: 13px; |
|
||||||
|
|
||||||
mat-form-field { |
|
||||||
width: 50px; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
@media screen and (max-device-width:1400px) and (min-device-width:1200px) { |
|
||||||
margin-left: 15px; |
|
||||||
|
|
||||||
mat-form-field { |
|
||||||
width: 50px; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
.headfour { |
|
||||||
|
|
||||||
@media screen and (max-device-width:1200px) { |
|
||||||
font-size: 13px; |
|
||||||
|
|
||||||
mat-form-field { |
|
||||||
width: 80px; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
@media screen and (max-device-width:1400px) and (min-device-width:1200px) { |
|
||||||
margin-left: 15px; |
|
||||||
|
|
||||||
mat-form-field { |
|
||||||
width: 80px; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
@media screen and (min-device-width:1400px) { |
|
||||||
margin-left: 30px; |
|
||||||
} |
|
||||||
|
|
||||||
span { |
|
||||||
@media screen and (min-device-width:1400px) { |
|
||||||
//margin-left: 30px; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
button { |
|
||||||
@media screen and (min-device-width:1400px) { |
|
||||||
margin-left: 40px; |
|
||||||
font-size: 13px; |
|
||||||
width: 65px; |
|
||||||
height: 34px; |
|
||||||
} |
|
||||||
|
|
||||||
@media screen and (max-device-width:1200px) { |
|
||||||
margin-left: 80px; |
|
||||||
} |
|
||||||
|
|
||||||
@media screen and (max-device-width:1400px) and (min-device-width:1200px) { |
|
||||||
margin-left: 80px; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
img { |
|
||||||
@media screen and (max-device-width:1400px) and (min-device-width:1200px) { |
|
||||||
height: 14px; |
|
||||||
width: 14px; |
|
||||||
} |
|
||||||
|
|
||||||
@media screen and (min-device-width:1400px) { |
|
||||||
height: 14px; |
|
||||||
width: 14px; |
|
||||||
} |
|
||||||
|
|
||||||
@media screen and (max-device-width:1200px) { |
|
||||||
height: 12px; |
|
||||||
width: 12px; |
|
||||||
} |
|
||||||
|
|
||||||
} |
} |
||||||
} |
.company{ |
||||||
|
@media screen and (min-device-width:1300px){ |
||||||
.btnbox { |
overflow-y: auto; |
||||||
display: flex; |
} |
||||||
justify-content: center; |
flex: 1; |
||||||
align-items: center; |
//overflow-y: auto; |
||||||
|
margin-top: 10px; |
||||||
button { |
|
||||||
margin: 0 6px; |
|
||||||
} |
} |
||||||
} |
.word{ |
||||||
} |
width: 100%; |
||||||
|
height: 100%; |
||||||
.tablediv { |
.shadow{ |
||||||
width: 100%; |
height: 95%; |
||||||
flex: 1; |
width: 97%; |
||||||
display: flex; |
margin: 10px 10px 10px 10px; |
||||||
flex-direction: column; |
/* position:absolute; |
||||||
overflow: hidden; |
left:0; |
||||||
|
top:0; */ |
||||||
.header { |
z-index:998; |
||||||
margin-left: 10px; |
background-color:#FFFFFF; |
||||||
margin-right: 10px; |
opacity:0.6; |
||||||
width: 97.5%; |
mat-spinner{ |
||||||
|
position: relative; |
||||||
thead { |
top: 40%; |
||||||
height: 48px; |
left: 40%; |
||||||
color: #FFFFFF; |
} |
||||||
background-color: #2196F3; |
|
||||||
|
|
||||||
th { |
|
||||||
font-weight: 10; |
|
||||||
|
|
||||||
@media screen and (min-device-width:1200px) { |
|
||||||
font-size: 16px; |
|
||||||
} |
} |
||||||
|
iframe{ |
||||||
@media screen and (max-device-width:1200px) { |
height: 94%; |
||||||
font-size: 13px; |
width: 97%; |
||||||
|
margin: 10px 10px 10px 10px; |
||||||
|
overflow-y: auto; |
||||||
|
border: medium none; |
||||||
} |
} |
||||||
|
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
tr:nth-child(odd) { |
|
||||||
background: #FAFAFA; |
|
||||||
} |
} |
||||||
} |
#viewer{ |
||||||
|
margin: 30px 10px 10px 10px; |
||||||
.tbodycss { |
width: 97%; |
||||||
flex: 1; |
height: 94%; |
||||||
width: 100%; |
|
||||||
overflow-y: auto; |
|
||||||
|
|
||||||
.selectedTr { |
|
||||||
background-color: #b3d3ee; |
|
||||||
} |
} |
||||||
} |
.waterAudit,.fireForceAudit,.LinkageForcesAudit{ |
||||||
} |
flex: 1; |
||||||
|
width: 100%; |
||||||
.mask { |
height: 100%; |
||||||
position: absolute; |
box-sizing: border-box; |
||||||
width: 100%; |
|
||||||
height: 100%; |
|
||||||
background: rgba(0, 0, 0, 0.2); |
|
||||||
display: flex; |
|
||||||
justify-content: center; |
|
||||||
align-items: center; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
.boxright { |
|
||||||
height: 100%; |
|
||||||
width: 53%; |
|
||||||
flex: 1; |
|
||||||
background-color: #FFFFFF; |
|
||||||
margin-left: 10px; |
|
||||||
display: flex; |
|
||||||
flex-direction: column; |
|
||||||
|
|
||||||
@media screen and (max-device-width:1300px) { |
|
||||||
overflow-y: auto; |
|
||||||
} |
|
||||||
|
|
||||||
.company { |
|
||||||
@media screen and (min-device-width:1300px) { |
|
||||||
overflow-y: auto; |
|
||||||
} |
|
||||||
|
|
||||||
flex: 1; |
|
||||||
//overflow-y: auto; |
|
||||||
margin-top: 10px; |
|
||||||
} |
|
||||||
|
|
||||||
.word { |
|
||||||
width: 100%; |
|
||||||
height: 100%; |
|
||||||
|
|
||||||
.shadow { |
|
||||||
height: 95%; |
|
||||||
width: 97%; |
|
||||||
margin: 10px 10px 10px 10px; |
|
||||||
/* position:absolute; |
|
||||||
left:0; |
|
||||||
top:0; */ |
|
||||||
z-index: 998; |
|
||||||
background-color: #FFFFFF; |
|
||||||
opacity: 0.6; |
|
||||||
|
|
||||||
mat-spinner { |
|
||||||
position: relative; |
|
||||||
top: 40%; |
|
||||||
left: 40%; |
|
||||||
} |
} |
||||||
} |
|
||||||
|
|
||||||
iframe { |
|
||||||
height: 94%; |
|
||||||
width: 97%; |
|
||||||
margin: 10px 10px 10px 10px; |
|
||||||
overflow-y: auto; |
|
||||||
border: medium none; |
|
||||||
} |
|
||||||
} |
} |
||||||
|
} |
||||||
#viewer { |
th,td{ |
||||||
margin: 30px 10px 10px 10px; |
height:48px; |
||||||
width: 97%; |
@media screen and (min-device-width:1200px){ |
||||||
height: 94%; |
font-size: 16px; |
||||||
} |
} |
||||||
|
@media screen and (max-device-width:1200px){ |
||||||
.waterAudit, |
font-size: 13px; |
||||||
.fireForceAudit, |
|
||||||
.LinkageForcesAudit { |
|
||||||
flex: 1; |
|
||||||
width: 100%; |
|
||||||
height: 100%; |
|
||||||
box-sizing: border-box; |
|
||||||
} |
} |
||||||
} |
text-align: center; |
||||||
} |
|
||||||
|
|
||||||
th, |
|
||||||
td { |
|
||||||
height: 48px; |
|
||||||
|
|
||||||
@media screen and (min-device-width:1200px) { |
|
||||||
font-size: 16px; |
|
||||||
} |
|
||||||
|
|
||||||
@media screen and (max-device-width:1200px) { |
|
||||||
font-size: 13px; |
|
||||||
} |
|
||||||
|
|
||||||
text-align: center; |
|
||||||
} |
|
||||||
|
|
||||||
.green { |
|
||||||
color: #00C756; |
|
||||||
} |
|
||||||
|
|
||||||
.red { |
|
||||||
color: #FF4D4D; |
|
||||||
} |
|
||||||
|
|
||||||
.yellow { |
|
||||||
color: #FFC94B; |
|
||||||
} |
} |
||||||
|
.green{color: #00C756;} |
||||||
|
.red{color: #FF4D4D;} |
||||||
|
.yellow{color: #FFC94B;} |
||||||
.twoD { |
.twoD { |
||||||
width: 100%; |
width: 100%; |
||||||
box-sizing: border-box; |
box-sizing: border-box; |
||||||
display: flex; |
display: flex; |
||||||
flex-direction: column; |
flex-direction: column; |
||||||
align-items: left; |
align-items: left; |
||||||
|
.planBox { |
||||||
.planBox { |
margin: 30px 30px; |
||||||
margin: 30px 30px; |
color: black; |
||||||
color: black; |
:first-child {margin-right: 10px;} |
||||||
|
|
||||||
:first-child { |
|
||||||
margin-right: 10px; |
|
||||||
} |
} |
||||||
} |
} |
||||||
} |
|
||||||
|
|
||||||
//滚动条样式 |
//滚动条样式 |
||||||
::-webkit-scrollbar { |
::-webkit-scrollbar{ |
||||||
margin-right: 3px; |
margin-right: 3px; |
||||||
width: 6px; |
width: 6px; |
||||||
background-color: white; |
background-color: white; |
||||||
} |
} |
||||||
|
::-webkit-scrollbar-thumb{ |
||||||
::-webkit-scrollbar-thumb { |
background-color: #2196F3; |
||||||
background-color: #2196F3; |
} |
||||||
} |
.mat-form-field-infix{ |
||||||
|
width: 100px; |
||||||
.mat-form-field-infix { |
|
||||||
width: 100px; |
|
||||||
} |
} |
@ -1,376 +1,340 @@ |
|||||||
import { Component, OnInit, Inject } from "@angular/core"; |
/* |
||||||
import { FormControl } from "@angular/forms"; |
* @Descripttion:
|
||||||
import { MatSnackBar, MatSnackBarConfig } from "@angular/material/snack-bar"; |
* @version:
|
||||||
import { |
* @Author: sueRimn |
||||||
MatDialog, |
* @Date: 2020-12-25 10:19:31 |
||||||
MatDialogRef, |
* @LastEditors: sueRimn |
||||||
MAT_DIALOG_DATA, |
* @LastEditTime: 2021-08-16 15:29:41 |
||||||
} from "@angular/material/dialog"; |
*/ |
||||||
import { HttpClient } from "@angular/common/http"; |
import { Component, OnInit, Inject } from '@angular/core'; |
||||||
import { DomSanitizer } from "@angular/platform-browser"; |
import { FormControl } from '@angular/forms'; |
||||||
import { Viewer } from "photo-sphere-viewer"; |
import { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar'; |
||||||
declare var CryptoJS; |
import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; |
||||||
|
import { HttpClient } from '@angular/common/http' |
||||||
|
import { DomSanitizer } from '@angular/platform-browser'; |
||||||
|
import { Viewer } from 'photo-sphere-viewer'; |
||||||
|
declare var CryptoJS |
||||||
|
|
||||||
@Component({ |
@Component({ |
||||||
selector: "app-plan-record", |
selector: 'app-plan-record', |
||||||
templateUrl: "./plan-record.component.html", |
templateUrl: './plan-record.component.html', |
||||||
styleUrls: ["./plan-record.component.scss"], |
styleUrls: ['./plan-record.component.scss'] |
||||||
}) |
}) |
||||||
export class PlanRecordComponent implements OnInit { |
export class PlanRecordComponent implements OnInit { |
||||||
constructor( |
|
||||||
private http: HttpClient, |
|
||||||
public snackBar: MatSnackBar, |
|
||||||
private sanitizer: DomSanitizer, |
|
||||||
public dialog: MatDialog |
|
||||||
) {} |
|
||||||
|
|
||||||
pcshow; |
constructor(private http: HttpClient, public snackBar: MatSnackBar, private sanitizer: DomSanitizer, public dialog: MatDialog) { } |
||||||
|
|
||||||
|
pcshow |
||||||
ngOnInit(): void { |
ngOnInit(): void { |
||||||
if (window.matchMedia("(max-width: 1300px)").matches) { |
if (window.matchMedia("(max-width: 1300px)").matches) { |
||||||
this.pcshow = false; |
this.pcshow = false |
||||||
} else { |
} else { |
||||||
this.pcshow = true; |
this.pcshow = true |
||||||
} |
} |
||||||
let level = sessionStorage.getItem("level"); |
let level = sessionStorage.getItem("level"); |
||||||
if (level == "0") { |
if (level == "0") {//如果是总队
|
||||||
//如果是总队
|
|
||||||
this.preparelevels = [ |
this.preparelevels = [ |
||||||
{ name: "总队", value: "0" }, |
{ name: "总队", value: "0" }, |
||||||
{ name: "支队", value: "1" }, |
{ name: "支队", value: "1" }, |
||||||
{ name: "大队", value: "2" }, |
{ name: "大队", value: "2" }, |
||||||
{ name: "中队", value: "3" }, |
{ name: "中队", value: "3" } |
||||||
]; |
] |
||||||
|
|
||||||
} |
} |
||||||
if (level == "1") { |
if (level == "1") {//如果是支队
|
||||||
//如果是支队
|
|
||||||
this.preparelevels = [ |
this.preparelevels = [ |
||||||
{ name: "支队", value: "1" }, |
{ name: "支队", value: "1" }, |
||||||
{ name: "大队", value: "2" }, |
{ name: "大队", value: "2" }, |
||||||
{ name: "中队", value: "3" }, |
{ name: "中队", value: "3" } |
||||||
]; |
] |
||||||
|
|
||||||
} |
} |
||||||
if (level == "2") { |
if (level == "2") {//如果是大队
|
||||||
//如果是大队
|
|
||||||
this.preparelevels = [ |
this.preparelevels = [ |
||||||
{ name: "大队", value: "2" }, |
{ name: "大队", value: "2" }, |
||||||
{ name: "中队", value: "3" }, |
{ name: "中队", value: "3" } |
||||||
]; |
] |
||||||
|
|
||||||
} |
} |
||||||
if (level == "3") { |
if (level == "3") {//如果是中队
|
||||||
//如果是中队
|
this.preparelevels = [ |
||||||
this.preparelevels = [{ name: "中队", value: "3" }]; |
{ name: "中队", value: "3" } |
||||||
|
] |
||||||
|
|
||||||
} |
} |
||||||
this.iframeSrc = this.sanitizer.bypassSecurityTrustResourceUrl(this.src); |
this.iframeSrc = this.sanitizer.bypassSecurityTrustResourceUrl(this.src); |
||||||
this.getAlltabledate(); |
this.getAlltabledate() |
||||||
} |
} |
||||||
|
|
||||||
wordShow = true; |
wordShow = true |
||||||
iframeSrc; |
iframeSrc |
||||||
src = ""; |
src = '' |
||||||
selected = new FormControl(0); //选项卡 实例
|
selected = new FormControl(0); //选项卡 实例
|
||||||
preparelevels: any; |
preparelevels: any |
||||||
level = ""; //类型
|
level = ''//类型
|
||||||
verifyState = ""; //审核状态
|
verifyState = ''//审核状态
|
||||||
projectlevel; //组织机构
|
projectlevel//组织机构
|
||||||
PlanLevel; //编制级别
|
PlanLevel//编制级别
|
||||||
addtime; //时间
|
addtime//时间
|
||||||
endtime; //结束时间
|
endtime//结束时间
|
||||||
count; //一共多少条
|
count//一共多少条
|
||||||
tableDate; |
tableDate |
||||||
showPvt = false; //全景图是否显示
|
showPvt = false//全景图是否显示
|
||||||
shenheTable = []; //选中要审核的对象
|
shenheTable = []//选中要审核的对象
|
||||||
chuorzhong; //判断初审还是终审
|
chuorzhong//判断初审还是终审
|
||||||
radioid; //选中的id
|
radioid//选中的id
|
||||||
showtype = -1; //0:word,1:全景图,2:二维三维,3:重点单位
|
showtype = -1//0:word,1:全景图,2:二维三维,3:重点单位
|
||||||
compantData = { name: "", buildingTypes: [], address: "" }; |
compantData = { name: '', buildingTypes: [], address: '' } |
||||||
organizationName; |
organizationName |
||||||
planData; |
planData |
||||||
id; |
id |
||||||
itemid; |
itemid |
||||||
companyId; |
companyId |
||||||
fetchUrl; |
fetchUrl |
||||||
companyName; |
companyName |
||||||
plantypes; |
plantypes |
||||||
IsNewData = [true, false]; |
IsNewData=[true,false] |
||||||
|
|
||||||
//获取表格数据
|
//获取表格数据
|
||||||
PageNumber = 1; |
|
||||||
isTableData = false; |
|
||||||
getAlltabledate() { |
getAlltabledate() { |
||||||
this.isTableData = true; |
|
||||||
let paramsdata: any = { |
let paramsdata: any = { |
||||||
Operation: this.level || [], |
Operation: this.level || [], |
||||||
ContentType: Number(this.projectlevel) || [], |
ContentType: Number(this.projectlevel) || [], |
||||||
Level: this.PlanLevel || [], |
Level: this.PlanLevel || [], |
||||||
verifyState: this.verifyState || [1, 2, 4, 5], |
verifyState: this.verifyState || [1, 2, 4, 5], |
||||||
QueryStartTime: this.addtime || "", |
QueryStartTime: this.addtime || '', |
||||||
QueryEndTime: this.endtime || "", |
QueryEndTime: this.endtime || '', |
||||||
PlanType: this.plantypes || [], |
PlanType:this.plantypes||[], |
||||||
IsNewData: this.IsNewData, |
IsNewData:this.IsNewData |
||||||
PageNumber: this.PageNumber, |
} |
||||||
PageSize: 10, |
this.http.get("/api/ContentVerifies", { params: paramsdata }).subscribe((data: any) => { |
||||||
PageType: 2, |
//console.log(data)
|
||||||
}; |
this.tableDate = data.items |
||||||
this.http |
this.count = data.totalCount |
||||||
.get("/api/ContentVerifies", { params: paramsdata }) |
}) |
||||||
.subscribe((data: any) => { |
|
||||||
//console.log(data)
|
|
||||||
this.isTableData = false; |
|
||||||
this.tableDate = data.items; |
|
||||||
this.count = data.totalCount; |
|
||||||
}); |
|
||||||
} |
} |
||||||
//提交查询
|
//提交查询
|
||||||
onSubmit(value) { |
onSubmit(value) { |
||||||
this.PageNumber = 1; |
//console.log(value)
|
||||||
this.getAlltabledate(); |
this.getAlltabledate() |
||||||
} |
} |
||||||
//刷新
|
//刷新
|
||||||
record() { |
record() { |
||||||
this.verifyState = ""; |
this.verifyState = '' |
||||||
this.level = ""; |
this.level = '' |
||||||
this.projectlevel = ""; |
this.projectlevel = '' |
||||||
this.IsNewData = [true, false]; |
this.addtime = '' |
||||||
this.addtime = ""; |
this.endtime = '' |
||||||
this.endtime = ""; |
let level = sessionStorage.getItem("level"); |
||||||
this.PlanLevel = ""; |
this.PlanLevel = '' |
||||||
this.plantypes = []; |
this.plantypes=[] |
||||||
this.PageNumber = 1; //分页事件触发刷新
|
this.getAlltabledate() |
||||||
this.getAlltabledate(); |
|
||||||
} |
|
||||||
|
|
||||||
//分页事件
|
|
||||||
chagePage(e) { |
|
||||||
console.log("分页事件", e); |
|
||||||
this.PageNumber = e.pageIndex + 1; |
|
||||||
this.getAlltabledate(); |
|
||||||
} |
} |
||||||
//表格点击事件
|
//表格点击事件
|
||||||
viewer; //全景图对象
|
viewer//全景图对象
|
||||||
waterData: any; //需要传递给子组件的水源信息
|
waterData: any//需要传递给子组件的水源信息
|
||||||
LinkageForceDetailInfo: any; //需要传递给子组件的联动力量信息
|
LinkageForceDetailInfo: any//需要传递给子组件的联动力量信息
|
||||||
fireForceDetailInfo: any; //需要传递给子组件的消防力量信息
|
fireForceDetailInfo: any//需要传递给子组件的消防力量信息
|
||||||
postlevel: any; |
postlevel: any |
||||||
bianzhi = false; |
bianzhi = false |
||||||
tableClick(e, item) { |
tableClick(e, item) { |
||||||
this.showtype = -1; |
this.showtype = -1 |
||||||
//e.target.parentElement.bgColor='#2196F3'
|
//e.target.parentElement.bgColor='#2196F3'
|
||||||
// console.log(item)
|
// console.log(item)
|
||||||
this.organizationName = ""; |
this.organizationName = '' |
||||||
this.itemid = item.itemId; |
this.itemid = item.itemId |
||||||
this.id = item.id; |
this.id = item.id |
||||||
this.fetchUrl = ""; |
this.fetchUrl = '' |
||||||
this.viewer = {}; |
this.viewer = {} |
||||||
if (item.contentType == 11) { |
if (item.contentType == 11) { |
||||||
this.bianzhi = false; |
this.bianzhi = false |
||||||
window.setTimeout(() => { |
window.setTimeout(() => { |
||||||
this.showtype = 3; |
this.showtype = 3 |
||||||
sessionStorage.setItem("companyId", item.itemId); |
sessionStorage.setItem('companyId', item.itemId) |
||||||
}, 0); |
}, 0) |
||||||
} else if (item.contentType == 12) { |
} else if (item.contentType == 12) { |
||||||
this.bianzhi = false; |
this.bianzhi = false |
||||||
//水源
|
//水源
|
||||||
this.http.get(`/api/WaterSources/${item.itemId}`).subscribe((data) => { |
this.http.get(`/api/WaterSources/${item.itemId}`).subscribe((data) => { |
||||||
this.waterData = data; |
this.waterData = data |
||||||
this.showtype = 12; |
this.showtype = 12 |
||||||
}); |
}) |
||||||
} else if (item.contentType == 13) { |
} else if (item.contentType == 13) { |
||||||
this.bianzhi = false; |
this.bianzhi = false |
||||||
//消防力量
|
//消防力量
|
||||||
this.http |
this.http.get(`/api/CustomFireForce/${item.itemId}`).subscribe((data: any) => { |
||||||
.get(`/api/CustomFireForce/${item.itemId}`) |
if (data.forceType != 0) {//如果是其他消防力量
|
||||||
.subscribe((data: any) => { |
this.postlevel = 4 |
||||||
if (data.forceType != 0) { |
} else { |
||||||
//如果是其他消防力量
|
this.postlevel = data.level |
||||||
this.postlevel = 4; |
} |
||||||
} else { |
// console.log('xxx',data)
|
||||||
this.postlevel = data.level; |
data.fireForceDetailInfo.location ? null : data.fireForceDetailInfo.location = { x: null, y: null } |
||||||
} |
this.fireForceDetailInfo = data.fireForceDetailInfo |
||||||
// console.log('xxx',data)
|
this.showtype = 13 |
||||||
data.fireForceDetailInfo.location |
}) |
||||||
? null |
|
||||||
: (data.fireForceDetailInfo.location = { x: null, y: null }); |
|
||||||
this.fireForceDetailInfo = data.fireForceDetailInfo; |
|
||||||
this.showtype = 13; |
|
||||||
}); |
|
||||||
} else if (item.contentType == 14) { |
} else if (item.contentType == 14) { |
||||||
this.bianzhi = false; |
this.bianzhi = false |
||||||
//联动力量
|
//联动力量
|
||||||
this.http |
this.http.get(`/api/LinkageForces/${item.itemId}`).subscribe((data: any) => { |
||||||
.get(`/api/LinkageForces/${item.itemId}`) |
|
||||||
.subscribe((data: any) => { |
data.location ? null : data.location = { x: null, y: null } |
||||||
data.location ? null : (data.location = { x: null, y: null }); |
this.LinkageForceDetailInfo = data |
||||||
this.LinkageForceDetailInfo = data; |
this.showtype = 14 |
||||||
this.showtype = 14; |
}) |
||||||
}); |
|
||||||
} else { |
} else { |
||||||
this.http |
this.http.get(`/api/PlanComponents/${item.itemId}`).subscribe((data: any) => { |
||||||
.get(`/api/PlanComponents/${item.itemId}`) |
this.companyId = data.companyId |
||||||
.subscribe((data: any) => { |
this.companyName = data.companyName |
||||||
this.companyId = data.companyId; |
//this.bianzhi = false
|
||||||
this.companyName = data.companyName; |
|
||||||
//this.bianzhi = false
|
|
||||||
if (data.planType != 2 && data.planType != 1) { |
if (data.planType != 2 && data.planType != 1) { |
||||||
if (data.planMode == 2) { |
if (data.planMode == 2) { |
||||||
this.showtype = 0; |
this.showtype = 0 |
||||||
this.bianzhi = true; |
this.bianzhi = true |
||||||
this.src = `/CreatePlanOnlineFive?navIsOpen=false&companyId=${data.companyId}&planName=${data.name}&unitName=${data.companyName}&planCategory=${data.planCategory}&planId=${data.id}&unitTypeId=${data.company.buildingTypes[0].id}&orName=${data.company.organizationName}&orId=${data.company.organizationId}&pattern=false`; |
this.src = `/CreatePlanOnlineFive?navIsOpen=false&companyId=${data.companyId}&planName=${data.name}&unitName=${data.companyName}&planCategory=${data.planCategory}&planId=${data.id}&unitTypeId=${data.company.buildingTypes[0].id}&orName=${data.company.organizationName}&orId=${data.company.organizationId}&pattern=false` |
||||||
this.iframeSrc = this.sanitizer.bypassSecurityTrustResourceUrl( |
this.iframeSrc = this.sanitizer.bypassSecurityTrustResourceUrl(this.src); |
||||||
this.src |
|
||||||
); |
|
||||||
//this.src=`/keyUnit/viewunitinfoplan?id=${data.companyId}&orName=${data.company.organizationId}&orId=${data.company.organizationName}`
|
//this.src=`/keyUnit/viewunitinfoplan?id=${data.companyId}&orName=${data.company.organizationId}&orId=${data.company.organizationName}`
|
||||||
} else { |
} else{ |
||||||
this.bianzhi = false; |
this.bianzhi = false |
||||||
this.fetchUrl = data.attachmentUrls[0]; |
this.fetchUrl = data.attachmentUrls[0] |
||||||
var index = this.fetchUrl.indexOf("/"); |
var index = this.fetchUrl.indexOf("\/") |
||||||
if (this.fetchUrl.substr(0, index) == "psw") { |
if (this.fetchUrl.substr(0, index) == 'psw') { |
||||||
this.showtype = 1; |
this.showtype = 1 |
||||||
var obj = document.getElementById("viewer"); |
var obj = document.getElementById('viewer') |
||||||
if (obj != null) { |
if (obj != null) { |
||||||
obj.innerHTML = ""; |
obj.innerHTML = '' |
||||||
} |
|
||||||
window.setTimeout(() => { |
|
||||||
this.viewer = new Viewer({ |
|
||||||
container: document.querySelector("#viewer"), |
|
||||||
panorama: "/api/Objects/PlanPlatform/" + this.fetchUrl, |
|
||||||
}); |
|
||||||
}); |
|
||||||
} else { |
|
||||||
this.lookWord(); |
|
||||||
} |
} |
||||||
|
window.setTimeout(() => { |
||||||
|
this.viewer = new Viewer({ |
||||||
|
container: document.querySelector('#viewer'), |
||||||
|
panorama: '/api/Objects/PlanPlatform/' + this.fetchUrl, |
||||||
|
|
||||||
|
}); |
||||||
|
}) |
||||||
|
|
||||||
|
} else { |
||||||
|
this.lookWord() |
||||||
|
} |
||||||
} |
} |
||||||
|
|
||||||
} else { |
} else { |
||||||
this.organizationName = item.organizationName; |
this.organizationName = item.organizationName |
||||||
this.planData = data; |
this.planData = data |
||||||
this.handleData(); |
this.handleData() |
||||||
return; |
return |
||||||
|
|
||||||
//this.src=`/planAudit/planpass?id=${data.companyId}&companyName=${data.companyName}&auditPlanId=${data.id}&auditStatus=${data.auditStatus}&planType=1`
|
//this.src=`/planAudit/planpass?id=${data.companyId}&companyName=${data.companyName}&auditPlanId=${data.id}&auditStatus=${data.auditStatus}&planType=1`
|
||||||
//this.iframeSrc=this.sanitizer.bypassSecurityTrustResourceUrl(this.src);
|
//this.iframeSrc=this.sanitizer.bypassSecurityTrustResourceUrl(this.src);
|
||||||
//window.open(`/planAudit/planpass?id=${data.companyId}&companyName=${data.companyName}&auditPlanId=${data.id}&auditStatus=${data.auditStatus}&planType=1`)
|
//window.open(`/planAudit/planpass?id=${data.companyId}&companyName=${data.companyName}&auditPlanId=${data.id}&auditStatus=${data.auditStatus}&planType=1`)
|
||||||
} |
} |
||||||
}); |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}) |
||||||
} |
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (e.checked) { |
if (e.checked) { |
||||||
this.shenheTable.push(item); |
this.shenheTable.push(item) |
||||||
} else { |
} |
||||||
|
else { |
||||||
for (var i = 0; i < this.shenheTable.length; i++) { |
for (var i = 0; i < this.shenheTable.length; i++) { |
||||||
if (this.shenheTable[i].id == item.id) { |
if (this.shenheTable[i].id == item.id) { |
||||||
this.shenheTable.splice(i, 1); |
this.shenheTable.splice(i, 1) |
||||||
} |
} |
||||||
} |
} |
||||||
} |
} |
||||||
this.radioid = item.itemId; |
this.radioid = item.itemId |
||||||
/* this.chuorzhong=item.verifyState |
/* this.chuorzhong=item.verifyState |
||||||
this.radioid=item.itemId */ |
this.radioid=item.itemId */ |
||||||
} |
} |
||||||
|
|
||||||
//毕升
|
//毕升
|
||||||
lookWord() { |
lookWord() { |
||||||
this.showtype = 0; |
this.showtype = 0 |
||||||
let suffix = this.fetchUrl |
let suffix = this.fetchUrl.split('.')[this.fetchUrl.split('.').length - 1].toLowerCase() |
||||||
.split(".") |
if (suffix == 'docx' || suffix == 'doc') { |
||||||
[this.fetchUrl.split(".").length - 1].toLowerCase(); |
let arr = this.fetchUrl.split('.') |
||||||
if (suffix == "docx" || suffix == "doc") { |
arr[arr.length - 1] = 'pdf' |
||||||
let arr = this.fetchUrl.split("."); |
this.src = `/api/Objects/PlanPlatform/` + arr.join('.') |
||||||
arr[arr.length - 1] = "pdf"; |
} else if (suffix == 'pdf') { |
||||||
this.src = `/api/Objects/PlanPlatform/` + arr.join("."); |
this.src = `/api/Objects/PlanPlatform/` + this.fetchUrl |
||||||
} else if (suffix == "pdf") { |
|
||||||
this.src = `/api/Objects/PlanPlatform/` + this.fetchUrl; |
|
||||||
} |
} |
||||||
this.iframeSrc = this.sanitizer.bypassSecurityTrustResourceUrl(this.src); |
this.iframeSrc = this.sanitizer.bypassSecurityTrustResourceUrl(this.src); |
||||||
} |
} |
||||||
//查看按钮跳转
|
//查看按钮跳转
|
||||||
lookNew() { |
lookNew() { |
||||||
window.open(this.src); |
window.open(this.src) |
||||||
} |
} |
||||||
|
|
||||||
//查看二维三维预案
|
//查看二维三维预案
|
||||||
thirdPartyURL; |
thirdPartyURL |
||||||
planType; |
planType |
||||||
twoOrthree; |
twoOrthree |
||||||
handleData() { |
handleData() { |
||||||
console.log(this.planData); |
this.compantData = { name: '', buildingTypes: [], address: '' } |
||||||
this.compantData = { name: "", buildingTypes: [], address: "" }; |
this.planType = this.planData.planMode |
||||||
this.planType = this.planData.planMode; |
let data = this.planData |
||||||
let data = this.planData; |
|
||||||
if (data.planType == 1) { |
if (data.planType == 1) { |
||||||
this.twoOrthree = 2; |
this.twoOrthree = 2 |
||||||
} else if (data.planType == 2) { |
} else if (data.planType == 2) { |
||||||
this.twoOrthree = 3; |
this.twoOrthree = 3 |
||||||
} |
} |
||||||
if (this.planData.planMode == 0) { |
if (this.planData.planMode == 0) { //预案planMode=0时, 查看word
|
||||||
//预案planMode=0时, 查看word
|
|
||||||
//this.lookWord()
|
//this.lookWord()
|
||||||
} else if (this.planData.planMode == 1 || this.planData.planMode == 2) { |
} else if (this.planData.planMode == 1) { //预案planMode=1时, 解析文档
|
||||||
//预案planMode=2时, 跳查看页面组件
|
|
||||||
this.showtype = 2; |
} else if (this.planData.planMode == 2) { //预案planMode=2时, 跳查看页面组件
|
||||||
|
this.showtype = 2 |
||||||
this.http.get(`/api/Plans/${data.companyId}`).subscribe((data: any) => { |
this.http.get(`/api/Plans/${data.companyId}`).subscribe((data: any) => { |
||||||
data && data.company ? (this.compantData = data.company) : null; |
data && data.company ? this.compantData = data.company : null |
||||||
}); |
}) |
||||||
sessionStorage.setItem( |
sessionStorage.setItem("buildingTypeId", this.compantData.buildingTypes.length ? this.compantData.buildingTypes[0].id : undefined); |
||||||
"buildingTypeId", |
|
||||||
this.compantData.buildingTypes.length |
|
||||||
? this.compantData.buildingTypes[0].id |
|
||||||
: undefined |
|
||||||
); |
|
||||||
sessionStorage.setItem("companyId", this.companyId); |
sessionStorage.setItem("companyId", this.companyId); |
||||||
sessionStorage.setItem("planId", this.itemid); |
sessionStorage.setItem("planId", this.itemid); |
||||||
sessionStorage.setItem("editable", "0"); |
sessionStorage.setItem("editable", '0'); |
||||||
sessionStorage.setItem("planName", data.name); |
sessionStorage.setItem("planName", data.name) |
||||||
let companyId = sessionStorage.getItem("companyId"); |
let companyId = sessionStorage.getItem("companyId") |
||||||
this.thirdPartyURL = this.sanitizer.bypassSecurityTrustResourceUrl( |
this.thirdPartyURL = this.sanitizer.bypassSecurityTrustResourceUrl(`/keyUnit/viewunitinfoplans?id=${companyId}`); |
||||||
`/keyUnit/viewunitinfoplans?id=${companyId}` |
|
||||||
); |
|
||||||
//window.open(`/keyUnit/viewunitinfoplan?id=${companyId}`)
|
//window.open(`/keyUnit/viewunitinfoplan?id=${companyId}`)
|
||||||
} else if (this.planData.planMode == 3) { |
} else if (this.planData.planMode == 3) { //预案planMode=3时, 第三方网址'
|
||||||
//预案planMode=3时, 第三方网址'
|
this.showtype = 2 |
||||||
this.showtype = 2; |
|
||||||
this.http.get(`/api/Plans/${data.companyId}`).subscribe((data: any) => { |
this.http.get(`/api/Plans/${data.companyId}`).subscribe((data: any) => { |
||||||
data && data.company ? (this.compantData = data.company) : null; |
data && data.company ? this.compantData = data.company : null |
||||||
}); |
}) |
||||||
//this.dialog.open(show3D,{width:'1350px',height:'700px',data:{url:data.url}}); //打开图片弹窗
|
//this.dialog.open(show3D,{width:'1350px',height:'700px',data:{url:data.url}}); //打开图片弹窗
|
||||||
this.thirdPartyURL = this.sanitizer.bypassSecurityTrustResourceUrl( |
this.thirdPartyURL = this.sanitizer.bypassSecurityTrustResourceUrl(data.url) |
||||||
data.url |
|
||||||
); |
|
||||||
} |
} |
||||||
|
|
||||||
} |
} |
||||||
|
|
||||||
//打开三维预案弹窗
|
//打开三维预案弹窗
|
||||||
oopen3Dshow() { |
oopen3Dshow() { |
||||||
this.dialog.open(recordshow3D, { |
this.dialog.open(recordshow3D, { width: '1650px', height: '850px', data: { url: this.thirdPartyURL, twoOrthree: this.twoOrthree } }); |
||||||
width: "1650px", |
|
||||||
height: "850px", |
|
||||||
data: { url: this.thirdPartyURL, twoOrthree: this.twoOrthree }, |
|
||||||
}); |
|
||||||
} |
} |
||||||
//判断iframe是否加载完成
|
//判断iframe是否加载完成
|
||||||
iftrue = true; |
iftrue=true |
||||||
ifranmeLoad() { |
ifranmeLoad(){ |
||||||
var iframe = document.getElementById("myiframe"); |
var iframe = document.getElementById("myiframe"); |
||||||
iframe.onload = function () {}; |
iframe.onload = function(){
|
||||||
this.iftrue = !this.iftrue; |
} |
||||||
|
this.iftrue=!this.iftrue |
||||||
} |
} |
||||||
|
|
||||||
} |
} |
||||||
|
|
||||||
@Component({ |
@Component({ |
||||||
selector: "app-wait-examineer-show3D", |
selector: 'app-wait-examineer-show3D', |
||||||
templateUrl: "./show3D.html", |
templateUrl: './show3D.html', |
||||||
styleUrls: ["./plan-record.component.scss"], |
styleUrls: ['./plan-record.component.scss'] |
||||||
}) |
}) |
||||||
export class recordshow3D { |
export class recordshow3D { |
||||||
constructor( |
constructor(private sanitizer: DomSanitizer, public dialogRef: MatDialogRef<recordshow3D>, @Inject(MAT_DIALOG_DATA) public data, public dialog: MatDialog) { } |
||||||
private sanitizer: DomSanitizer, |
|
||||||
public dialogRef: MatDialogRef<recordshow3D>, |
|
||||||
@Inject(MAT_DIALOG_DATA) public data, |
|
||||||
public dialog: MatDialog |
|
||||||
) {} |
|
||||||
ngOnInit(): void { |
ngOnInit(): void { |
||||||
// console.log(this.data)
|
// console.log(this.data)
|
||||||
this.threedUrl = this.sanitizer.bypassSecurityTrustResourceUrl( |
this.threedUrl = this.sanitizer.bypassSecurityTrustResourceUrl(this.data.url.changingThisBreaksApplicationSecurity) |
||||||
this.data.url.changingThisBreaksApplicationSecurity |
|
||||||
); |
|
||||||
} |
} |
||||||
threedUrl; |
threedUrl |
||||||
} |
} |
||||||
|
@ -1,555 +1,438 @@ |
|||||||
.box { |
.box { |
||||||
height: 100%; |
|
||||||
width: 100%; |
|
||||||
display: flex; |
|
||||||
|
|
||||||
img { |
|
||||||
cursor: pointer; |
|
||||||
} |
|
||||||
|
|
||||||
.boxleft { |
|
||||||
height: 100%; |
height: 100%; |
||||||
width: 45%; |
width: 100%; |
||||||
background-color: #ffffff; |
|
||||||
display: flex; |
display: flex; |
||||||
flex-direction: column; |
img{ |
||||||
overflow: hidden; |
cursor: pointer; |
||||||
position: relative; |
} |
||||||
|
.boxleft { |
||||||
.lefthead { |
height: 100%; |
||||||
display: flex; |
width: 45%; |
||||||
flex-direction: column; |
background-color: #ffffff; |
||||||
align-items: center; |
|
||||||
form{ |
|
||||||
width: 100%; |
|
||||||
} |
|
||||||
.headdiv { |
|
||||||
@media screen and (min-device-width: 1400px) { |
|
||||||
margin: 0 0 0 28px; |
|
||||||
} |
|
||||||
|
|
||||||
@media screen and (max-device-width: 1400px) and (min-device-width: 1200px) { |
|
||||||
margin-left: 15px; |
|
||||||
} |
|
||||||
|
|
||||||
@media screen and (max-device-width: 1200px) { |
|
||||||
margin-left: 5px; |
|
||||||
} |
|
||||||
|
|
||||||
height: 40px; |
|
||||||
display: flex; |
display: flex; |
||||||
flex-direction: row; |
flex-direction: column; |
||||||
align-items: center; |
//overflow: auto; |
||||||
|
.lefthead { |
||||||
.radio { |
height: 30%; |
||||||
height: 10px; |
display: flex; |
||||||
} |
flex-direction: column; |
||||||
|
.headdiv { |
||||||
span { |
@media screen and (min-device-width: 1400px) { |
||||||
@media screen and (min-device-width: 1400px) { |
margin: 0 0 0 28px; |
||||||
font-size: 16px; |
} |
||||||
} |
@media screen and (max-device-width: 1400px) and (min-device-width: 1200px) { |
||||||
|
margin-left: 15px; |
||||||
@media screen and (max-device-width: 1400px) and (min-device-width: 1200px) { |
} |
||||||
font-size: 16px; |
@media screen and (max-device-width: 1200px) { |
||||||
} |
margin-left: 5px; |
||||||
|
} |
||||||
@media screen and (max-device-width: 1200px) { |
height: 40px; |
||||||
font-size: 14px; |
display: flex; |
||||||
} |
flex-direction: row; |
||||||
|
.radio { |
||||||
margin-left: 3px; |
height: 10px; |
||||||
|
} |
||||||
|
span { |
||||||
|
@media screen and (min-device-width: 1400px) { |
||||||
|
font-size: 16px; |
||||||
|
} |
||||||
|
@media screen and (max-device-width: 1400px) and (min-device-width: 1200px) { |
||||||
|
font-size: 16px; |
||||||
|
} |
||||||
|
@media screen and (max-device-width: 1200px) { |
||||||
|
font-size: 14px; |
||||||
|
} |
||||||
|
margin-left: 3px; |
||||||
|
} |
||||||
|
input { |
||||||
|
position: relative; |
||||||
|
@media screen and (min-device-width: 1400px) { |
||||||
|
margin-left: 50px; |
||||||
|
top: 6px; |
||||||
|
} |
||||||
|
@media screen and (max-device-width: 1200px) { |
||||||
|
margin-left: 8px; |
||||||
|
top: 4px; |
||||||
|
} |
||||||
|
@media screen and (max-device-width: 1400px) and (min-device-width: 1200px) { |
||||||
|
margin-left: 8px; |
||||||
|
top: 6px; |
||||||
|
} |
||||||
|
} |
||||||
|
.count { |
||||||
|
@media screen and (min-device-width: 1400px) { |
||||||
|
margin-left: 110px; |
||||||
|
} |
||||||
|
@media screen and (max-device-width: 1200px) { |
||||||
|
margin-left: 20px; |
||||||
|
position: relative; |
||||||
|
bottom: 3px; |
||||||
|
} |
||||||
|
@media screen and (max-device-width: 1400px) and (min-device-width: 1200px) { |
||||||
|
margin-left: 20px; |
||||||
|
/* position: relative; |
||||||
|
bottom: 3px; */ |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
.headthree { |
||||||
|
display: flex; |
||||||
|
flex-direction: column; |
||||||
|
.bzjb{ |
||||||
|
@media screen and (min-device-width: 1400px){ |
||||||
|
margin-left: 100px; |
||||||
|
} |
||||||
|
} |
||||||
|
.find{ |
||||||
|
@media screen and (min-device-width: 1400px){ |
||||||
|
margin-left: 200px; |
||||||
|
} |
||||||
|
} |
||||||
|
@media screen and (min-device-width: 1400px) { |
||||||
|
margin-left: 30px; |
||||||
|
} |
||||||
|
@media screen and (max-device-width: 1200px) { |
||||||
|
margin-left: 7px; |
||||||
|
font-size: 14px; |
||||||
|
mat-form-field { |
||||||
|
width: 120px; |
||||||
|
} |
||||||
|
} |
||||||
|
@media screen and (max-device-width: 1400px) and (min-device-width: 1200px) { |
||||||
|
margin-left: 15px; |
||||||
|
//font-size: 14px; |
||||||
|
mat-form-field { |
||||||
|
width: 140px; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
button { |
||||||
|
@media screen and (min-device-width: 1400px) { |
||||||
|
margin-left: 30px; |
||||||
|
font-size: 16px; |
||||||
|
width: 80px; |
||||||
|
height: 36px; |
||||||
|
} |
||||||
|
@media screen and (max-device-width: 1400px) { |
||||||
|
margin-left: 20px; |
||||||
|
font-size: 14px; |
||||||
|
} |
||||||
|
} |
||||||
|
img { |
||||||
|
@media screen and (min-device-width: 1400px) { |
||||||
|
height: 14px; |
||||||
|
width: 14px; |
||||||
|
} |
||||||
|
@media screen and (max-device-width: 1400px) { |
||||||
|
height: 12px; |
||||||
|
width: 12px; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
} |
} |
||||||
|
.tablediv { |
||||||
input { |
width: 100%; |
||||||
position: relative; |
height: 62%; |
||||||
|
.tbodycss { |
||||||
@media screen and (min-device-width: 1400px) { |
overflow-y: auto; |
||||||
margin-left: 40px; |
|
||||||
|
height: 100%; |
||||||
} |
width: 100%; |
||||||
|
.selectedTr { |
||||||
@media screen and (max-device-width: 1200px) { |
background-color: #b3d3ee; |
||||||
margin-left: 8px; |
} |
||||||
|
td { |
||||||
} |
font-weight: 10; |
||||||
|
@media screen and (min-device-width: 1200px) { |
||||||
@media screen and (max-device-width: 1400px) and (min-device-width: 1200px) { |
font-size: 16px; |
||||||
margin-left: 8px; |
} |
||||||
|
@media screen and (max-device-width: 1200px) { |
||||||
} |
font-size: 14px; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
table { |
||||||
|
margin-left: 10px; |
||||||
|
margin-right: 10px; |
||||||
|
width: 97.5%; |
||||||
|
//margin-bottom: 10px; |
||||||
|
thead { |
||||||
|
height: 48px; |
||||||
|
color: #ffffff; |
||||||
|
background-color: #2196f3; |
||||||
|
//font-size: 10px; |
||||||
|
th { |
||||||
|
font-weight: 10; |
||||||
|
@media screen and (min-device-width: 1200px) { |
||||||
|
font-size: 16px; |
||||||
|
} |
||||||
|
@media screen and (max-device-width: 1200px) { |
||||||
|
font-size: 14px; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
tr:nth-child(odd) { |
||||||
|
background: #fafafa; |
||||||
|
} |
||||||
|
} |
||||||
} |
} |
||||||
|
} |
||||||
.count { |
.boxright { |
||||||
@media screen and (min-device-width: 1400px) { |
height: 100%; |
||||||
margin-left: 110px; |
width: 53%; |
||||||
} |
@media screen and (max-device-width: 1400px) { |
||||||
|
overflow-y: auto; |
||||||
@media screen and (max-device-width: 1200px) { |
|
||||||
margin-left: 20px; |
|
||||||
position: relative; |
|
||||||
bottom: 3px; |
|
||||||
} |
|
||||||
|
|
||||||
@media screen and (max-device-width: 1400px) and (min-device-width: 1200px) { |
|
||||||
margin-left: 20px; |
|
||||||
/* position: relative; |
|
||||||
bottom: 3px; */ |
|
||||||
} |
|
||||||
} |
} |
||||||
} |
|
||||||
|
|
||||||
.headthree { |
flex: 1; |
||||||
|
background-color: #ffffff; |
||||||
|
margin-left: 10px; |
||||||
display: flex; |
display: flex; |
||||||
flex-direction: column; |
flex-direction: column; |
||||||
|
.company { |
||||||
.bzjb { |
//margin-left: 20px; |
||||||
@media screen and (min-device-width: 1400px) { |
@media screen and (min-device-width: 1400px) { |
||||||
margin-left: 100px; |
overflow-y: auto; |
||||||
} |
} |
||||||
} |
flex: 1; |
||||||
|
//overflow-y: auto; |
||||||
.find { |
margin-top: 10px; |
||||||
@media screen and (min-device-width: 1400px) { |
|
||||||
margin-left: 80px; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
@media screen and (min-device-width: 1400px) { |
|
||||||
margin-left: 30px; |
|
||||||
} |
|
||||||
|
|
||||||
@media screen and (max-device-width: 1200px) { |
|
||||||
margin-left: 7px; |
|
||||||
font-size: 14px; |
|
||||||
|
|
||||||
mat-form-field { |
|
||||||
width: 120px; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
@media screen and (max-device-width: 1400px) and (min-device-width: 1200px) { |
|
||||||
margin-left: 15px; |
|
||||||
|
|
||||||
//font-size: 14px; |
|
||||||
mat-form-field { |
|
||||||
width: 140px; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
button { |
|
||||||
@media screen and (min-device-width: 1400px) { |
|
||||||
margin-left: 40px; |
|
||||||
font-size: 13px; |
|
||||||
width: 65px; |
|
||||||
height: 34px; |
|
||||||
} |
|
||||||
|
|
||||||
@media screen and (max-device-width: 1400px) { |
|
||||||
margin-left: 20px; |
|
||||||
font-size: 14px; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
img { |
|
||||||
@media screen and (min-device-width: 1400px) { |
|
||||||
height: 14px; |
|
||||||
width: 14px; |
|
||||||
} |
|
||||||
|
|
||||||
@media screen and (max-device-width: 1400px) { |
|
||||||
height: 12px; |
|
||||||
width: 12px; |
|
||||||
} |
|
||||||
} |
} |
||||||
} |
.righthead { |
||||||
.btnbox{ |
width: 100%; |
||||||
display: flex; |
display: flex; |
||||||
justify-content: center; |
height: 50px; |
||||||
align-items: center; |
align-items: center; |
||||||
button{ |
flex-direction: row-reverse; |
||||||
margin: 0 6px; |
button { |
||||||
|
margin-left: 10px; |
||||||
|
font-size: 16px; |
||||||
|
} |
||||||
|
.rightheadone { |
||||||
|
width: 40%; |
||||||
|
margin-right: 7%; |
||||||
|
} |
||||||
|
.rightheadtwo { |
||||||
|
width: 60%; |
||||||
|
margin-right: 2%; |
||||||
|
} |
||||||
} |
} |
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
.tablediv { |
|
||||||
width: 100%; |
|
||||||
flex: 1; |
|
||||||
overflow: hidden; |
|
||||||
display: flex; |
|
||||||
flex-direction: column; |
|
||||||
|
|
||||||
.theader { |
.word { |
||||||
margin-left: 10px; |
width: 100%; |
||||||
margin-right: 10px; |
height: 100%; |
||||||
width: 97.5%; |
.shadow{ |
||||||
|
height: 95%; |
||||||
thead { |
width: 97%; |
||||||
height: 48px; |
margin: 10px 10px 10px 10px; |
||||||
color: #ffffff; |
/* position:absolute; |
||||||
background-color: #2196f3; |
left:0; |
||||||
|
top:0; */ |
||||||
th { |
z-index:998; |
||||||
font-weight: 10; |
background-color:#FFFFFF; |
||||||
|
opacity:0.6; |
||||||
@media screen and (min-device-width: 1200px) { |
mat-spinner{ |
||||||
font-size: 16px; |
position: relative; |
||||||
|
top: 40%; |
||||||
|
left: 40%; |
||||||
|
} |
||||||
} |
} |
||||||
|
iframe { |
||||||
@media screen and (max-device-width: 1200px) { |
height: 95%; |
||||||
font-size: 14px; |
width: 97%; |
||||||
|
margin: 10px 10px 10px 10px; |
||||||
|
overflow-y: auto; |
||||||
|
border: medium none; |
||||||
} |
} |
||||||
} |
|
||||||
} |
} |
||||||
|
#viewer { |
||||||
tr:nth-child(odd) { |
margin: 10px 10px 10px 10px; |
||||||
background: #fafafa; |
width: 97%; |
||||||
|
height: 93%; |
||||||
} |
} |
||||||
} |
.waterAudit, |
||||||
|
.fireForceAudit, |
||||||
.tbodycss { |
.LinkageForcesAudit { |
||||||
|
flex: 1; |
||||||
flex: 1; |
width: 100%; |
||||||
width: 100%; |
height: 100%; |
||||||
overflow-y: auto; |
box-sizing: border-box; |
||||||
box-sizing: border-box; |
|
||||||
padding-left: 15px; |
|
||||||
|
|
||||||
.selectedTr { |
|
||||||
background-color: #b3d3ee; |
|
||||||
} |
} |
||||||
|
.emptyContent { |
||||||
td { |
width: 100%; |
||||||
font-weight: 10; |
text-align: center; |
||||||
|
|
||||||
@media screen and (min-device-width: 1200px) { |
|
||||||
font-size: 16px; |
|
||||||
} |
|
||||||
|
|
||||||
@media screen and (max-device-width: 1200px) { |
|
||||||
font-size: 14px; |
|
||||||
} |
|
||||||
} |
} |
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
.mask { |
|
||||||
position: absolute; |
|
||||||
width: 100%; |
|
||||||
height: 100%; |
|
||||||
background: rgba(0, 0, 0, 0.2); |
|
||||||
display: flex; |
|
||||||
justify-content: center; |
|
||||||
align-items: center; |
|
||||||
} |
} |
||||||
} |
|
||||||
|
|
||||||
.boxright { |
|
||||||
height: 100%; |
|
||||||
width: 53%; |
|
||||||
|
|
||||||
@media screen and (max-device-width: 1400px) { |
|
||||||
overflow-y: auto; |
|
||||||
} |
|
||||||
|
|
||||||
flex: 1; |
|
||||||
background-color: #ffffff; |
|
||||||
margin-left: 10px; |
|
||||||
display: flex; |
|
||||||
flex-direction: column; |
|
||||||
|
|
||||||
.company { |
|
||||||
|
|
||||||
//margin-left: 20px; |
|
||||||
@media screen and (min-device-width: 1400px) { |
|
||||||
overflow-y: auto; |
|
||||||
} |
|
||||||
|
|
||||||
flex: 1; |
|
||||||
//overflow-y: auto; |
|
||||||
margin-top: 10px; |
|
||||||
} |
|
||||||
|
|
||||||
.righthead { |
|
||||||
width: 100%; |
|
||||||
display: flex; |
|
||||||
height: 50px; |
|
||||||
align-items: center; |
|
||||||
flex-direction: row-reverse; |
|
||||||
|
|
||||||
button { |
|
||||||
margin-left: 10px; |
|
||||||
font-size: 16px; |
|
||||||
} |
|
||||||
|
|
||||||
.rightheadone { |
|
||||||
width: 40%; |
|
||||||
margin-right: 7%; |
|
||||||
} |
|
||||||
|
|
||||||
.rightheadtwo { |
|
||||||
width: 60%; |
|
||||||
margin-right: 2%; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
.word { |
|
||||||
width: 100%; |
|
||||||
height: 100%; |
|
||||||
|
|
||||||
.shadow { |
|
||||||
height: 95%; |
|
||||||
width: 97%; |
|
||||||
margin: 10px 10px 10px 10px; |
|
||||||
/* position:absolute; |
|
||||||
left:0; |
|
||||||
top:0; */ |
|
||||||
z-index: 998; |
|
||||||
background-color: #FFFFFF; |
|
||||||
opacity: 0.6; |
|
||||||
|
|
||||||
mat-spinner { |
|
||||||
position: relative; |
|
||||||
top: 40%; |
|
||||||
left: 40%; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
iframe { |
|
||||||
height: 95%; |
|
||||||
width: 97%; |
|
||||||
margin: 10px 10px 10px 10px; |
|
||||||
overflow-y: auto; |
|
||||||
border: medium none; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
#viewer { |
|
||||||
margin: 10px 10px 10px 10px; |
|
||||||
width: 97%; |
|
||||||
height: 93%; |
|
||||||
} |
|
||||||
|
|
||||||
.waterAudit, |
|
||||||
.fireForceAudit, |
|
||||||
.LinkageForcesAudit { |
|
||||||
flex: 1; |
|
||||||
width: 100%; |
|
||||||
height: 100%; |
|
||||||
box-sizing: border-box; |
|
||||||
} |
|
||||||
|
|
||||||
.emptyContent { |
|
||||||
width: 100%; |
|
||||||
text-align: center; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
} |
||||||
|
|
||||||
th, |
th, |
||||||
td { |
td { |
||||||
height: 43px; |
height: 43px; |
||||||
|
@media screen and (min-device-width: 1400px) { |
||||||
@media screen and (min-device-width: 1400px) { |
font-size: 16px; |
||||||
font-size: 16px; |
} |
||||||
} |
@media screen and (max-device-width: 1400px) { |
||||||
|
font-size: 14px; |
||||||
@media screen and (max-device-width: 1400px) { |
} |
||||||
font-size: 14px; |
text-align: center; |
||||||
} |
//white-space: nowrap; |
||||||
|
|
||||||
text-align: center; |
|
||||||
//white-space: nowrap; |
|
||||||
} |
} |
||||||
|
|
||||||
.green { |
.green { |
||||||
color: #00c756; |
color: #00c756; |
||||||
} |
} |
||||||
|
|
||||||
.red { |
.red { |
||||||
color: #ff4d4d; |
color: #ff4d4d; |
||||||
} |
} |
||||||
|
|
||||||
.yellow { |
.yellow { |
||||||
color: #FFC94B; |
color: #FFC94B; |
||||||
} |
} |
||||||
|
|
||||||
.accordingin { |
.accordingin { |
||||||
margin: 5px; |
margin: 5px; |
||||||
|
.panelhead { |
||||||
.panelhead { |
background-color: #e8f4fe; |
||||||
background-color: #e8f4fe; |
|
||||||
color: #2196f3; |
|
||||||
font-size: 16px; |
|
||||||
|
|
||||||
span { |
|
||||||
margin-left: 10px; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
table { |
|
||||||
margin: 5px 0; |
|
||||||
width: 100%; |
|
||||||
|
|
||||||
th { |
|
||||||
background-color: #fafafa; |
|
||||||
width: 30%; |
|
||||||
font-size: 16px; |
|
||||||
text-align: right; |
|
||||||
} |
|
||||||
|
|
||||||
td { |
|
||||||
text-align: left; |
|
||||||
font-size: 16px; |
|
||||||
margin-left: 3px; |
|
||||||
|
|
||||||
.spantext { |
|
||||||
margin-left: 7px; |
|
||||||
} |
|
||||||
|
|
||||||
.buleColor { |
|
||||||
color: #2196f3; |
color: #2196f3; |
||||||
} |
font-size: 16px; |
||||||
|
span { |
||||||
|
margin-left: 10px; |
||||||
|
} |
||||||
} |
} |
||||||
} |
table { |
||||||
|
margin: 5px 0; |
||||||
.addFiles { |
width: 100%; |
||||||
tr { |
th { |
||||||
td { |
background-color: #fafafa; |
||||||
img { |
width: 30%; |
||||||
width: 150px; |
font-size: 16px; |
||||||
height: 105px; |
text-align: right; |
||||||
margin-right: 6px; |
} |
||||||
|
td { |
||||||
|
text-align: left; |
||||||
|
font-size: 16px; |
||||||
|
margin-left: 3px; |
||||||
|
.spantext{ |
||||||
|
margin-left: 7px; |
||||||
|
} |
||||||
|
.buleColor{ |
||||||
|
color: #2196f3; |
||||||
|
} |
||||||
} |
} |
||||||
} |
|
||||||
} |
} |
||||||
} |
.addFiles{ |
||||||
|
tr{ |
||||||
.onebuilding { |
td{ |
||||||
display: flex; |
img{ |
||||||
margin: 5px 0; |
width: 150px; |
||||||
width: 100%; |
height: 105px; |
||||||
|
margin-right: 6px; |
||||||
.accordingleft { |
} |
||||||
background-color: #fafafa; |
} |
||||||
width: 30%; |
} |
||||||
height: 120px; |
|
||||||
font-size: 16px; |
|
||||||
text-align: right; |
|
||||||
} |
} |
||||||
|
.onebuilding { |
||||||
.accordingright { |
display: flex; |
||||||
margin: 7px; |
margin: 5px 0; |
||||||
height: 100px; |
width: 100%; |
||||||
font-size: 16px; |
.accordingleft { |
||||||
|
background-color: #fafafa; |
||||||
img { |
width: 30%; |
||||||
margin-left: 10px; |
height: 120px; |
||||||
//height: 80px; |
font-size: 16px; |
||||||
} |
text-align: right; |
||||||
|
} |
||||||
span { |
.accordingright { |
||||||
margin-left: 10px; |
margin: 7px; |
||||||
position: relative; |
height: 100px; |
||||||
bottom: 90px; |
font-size: 16px; |
||||||
} |
img { |
||||||
|
margin-left: 10px; |
||||||
|
//height: 80px; |
||||||
|
} |
||||||
|
span { |
||||||
|
margin-left: 10px; |
||||||
|
position: relative; |
||||||
|
bottom: 90px; |
||||||
|
} |
||||||
|
} |
||||||
} |
} |
||||||
} |
|
||||||
} |
} |
||||||
|
|
||||||
.echarts { |
.echarts { |
||||||
width: 480px; |
width: 480px; |
||||||
height: 304px; |
height: 304px; |
||||||
display: flex; |
display: flex; |
||||||
background-color: #000000; |
background-color: #000000; |
||||||
opacity: 0.7; |
opacity: 0.7; |
||||||
position: absolute; |
position: absolute; |
||||||
top: 13%; |
top: 13%; |
||||||
left: 55%; |
left: 55%; |
||||||
z-index: 100; |
z-index: 100; |
||||||
|
.bar { |
||||||
.bar { |
height: 100%; |
||||||
height: 100%; |
width: 40%; |
||||||
width: 40%; |
opacity: 1; |
||||||
opacity: 1; |
//margin: 40px 30px; |
||||||
//margin: 40px 30px; |
} |
||||||
} |
.zhu { |
||||||
|
margin-bottom: 100px; |
||||||
.zhu { |
margin-right: 20px; |
||||||
margin-bottom: 100px; |
height: 95%; |
||||||
margin-right: 20px; |
width: 60%; |
||||||
height: 95%; |
opacity: 1; |
||||||
width: 60%; |
} |
||||||
opacity: 1; |
|
||||||
} |
|
||||||
} |
} |
||||||
|
|
||||||
.twoD { |
.twoD { |
||||||
width: 100%; |
width: 100%; |
||||||
box-sizing: border-box; |
box-sizing: border-box; |
||||||
display: flex; |
display: flex; |
||||||
flex-direction: column; |
flex-direction: column; |
||||||
align-items: left; |
align-items: left; |
||||||
|
.planBox { |
||||||
.planBox { |
margin: 30px 30px; |
||||||
margin: 30px 30px; |
color: black; |
||||||
color: black; |
:first-child { |
||||||
|
margin-right: 10px; |
||||||
:first-child { |
} |
||||||
margin-right: 10px; |
|
||||||
} |
} |
||||||
} |
|
||||||
} |
} |
||||||
|
|
||||||
//滚动条样式 |
//滚动条样式 |
||||||
::-webkit-scrollbar { |
::-webkit-scrollbar { |
||||||
width: 6px; |
width: 6px; |
||||||
background-color: white; |
background-color: white; |
||||||
} |
} |
||||||
|
|
||||||
::-webkit-scrollbar-thumb { |
::-webkit-scrollbar-thumb { |
||||||
background-color: #2196f3; |
background-color: #2196f3; |
||||||
} |
} |
||||||
|
|
||||||
.remarkbox { |
.remarkbox { |
||||||
width: 100%; |
|
||||||
height: 100%; |
|
||||||
display: flex; |
|
||||||
flex-direction: column; |
|
||||||
|
|
||||||
.remarkhead { |
|
||||||
width: 100%; |
width: 100%; |
||||||
|
height: 100%; |
||||||
span { |
display: flex; |
||||||
font-size: 20px; |
flex-direction: column; |
||||||
text-align: center; |
.remarkhead { |
||||||
width: 80px; |
width: 100%; |
||||||
margin-left: 40%; |
span { |
||||||
|
font-size: 20px; |
||||||
|
text-align: center; |
||||||
|
width: 80px; |
||||||
|
margin-left: 40%; |
||||||
|
} |
||||||
} |
} |
||||||
} |
.remarktext { |
||||||
|
width: 100%; |
||||||
.remarktext { |
margin-top: 20px; |
||||||
width: 100%; |
textarea { |
||||||
margin-top: 20px; |
width: 420px; |
||||||
|
height: 110px; |
||||||
textarea { |
outline: none; |
||||||
width: 420px; |
} |
||||||
height: 110px; |
|
||||||
outline: none; |
|
||||||
} |
} |
||||||
} |
.remarkbottom { |
||||||
|
width: 100%; |
||||||
.remarkbottom { |
margin-top: 22px; |
||||||
width: 100%; |
button { |
||||||
margin-top: 22px; |
width: 100px; |
||||||
|
height: 36px; |
||||||
button { |
font-size: 17px; |
||||||
width: 100px; |
} |
||||||
height: 36px; |
|
||||||
font-size: 17px; |
|
||||||
} |
} |
||||||
} |
|
||||||
} |
} |
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,58 +0,0 @@ |
|||||||
<!-- <p>演练记录</p> --> |
|
||||||
<div class="box"> |
|
||||||
<div class="header"> |
|
||||||
<form class="queryBox" (ngSubmit)="onSubmit()"> |
|
||||||
<div class="queryField"> |
|
||||||
<span style="width: 108px;">预案名称:</span> |
|
||||||
<input name="name" nz-input placeholder="请输入预案名称" [(ngModel)]="name" /> |
|
||||||
</div> |
|
||||||
<div class="queryField" style="margin-right: 35px;"> |
|
||||||
<span>组织机构:</span> |
|
||||||
<nz-tree-select [nzDropdownClassName]="'maxHeightTreeSelect'" style="width: 250px" |
|
||||||
[nzExpandedKeys]="expandKeys" [nzNodes]="nodes" nzShowSearch nzPlaceHolder="请选择组织机构" name="orId" |
|
||||||
[(ngModel)]="orId"> |
|
||||||
</nz-tree-select> |
|
||||||
</div> |
|
||||||
<div class="queryField"> |
|
||||||
<span>熟悉时间:</span> |
|
||||||
<nz-range-picker name="time" [(ngModel)]="time"></nz-range-picker> |
|
||||||
</div> |
|
||||||
<div class="queryField btnbox"> |
|
||||||
<button nz-button nzType="primary">查询</button> |
|
||||||
<button nz-button type="button" nzType="default" (click)="reset()">重置</button> |
|
||||||
</div> |
|
||||||
</form> |
|
||||||
</div> |
|
||||||
<div class="tablebox"> |
|
||||||
<table mat-table [dataSource]="tabledataSource" class="mat-elevation-z8"> |
|
||||||
<ng-container matColumnDef="name"> |
|
||||||
<th mat-header-cell *matHeaderCellDef>演练对象</th> |
|
||||||
<td mat-cell *matCellDef="let element">{{element.company.name}}</td> |
|
||||||
</ng-container> |
|
||||||
<ng-container matColumnDef="or"> |
|
||||||
<th mat-header-cell *matHeaderCellDef>组织机构</th> |
|
||||||
<td mat-cell *matCellDef="let element">{{element.company.organizationName}}</td> |
|
||||||
</ng-container> |
|
||||||
<ng-container matColumnDef="people"> |
|
||||||
<th mat-header-cell *matHeaderCellDef>带队人员</th> |
|
||||||
<td mat-cell *matCellDef="let element">{{element.teamLeader}}</td> |
|
||||||
</ng-container> |
|
||||||
<ng-container matColumnDef="time"> |
|
||||||
<th mat-header-cell *matHeaderCellDef>演练时间</th> |
|
||||||
<td mat-cell *matCellDef="let element">{{element.startTime | date:'yyyy-MM-dd HH:mm'}} - |
|
||||||
{{element.endTime | date:'yyyy-MM-dd HH:mm'}}</td> |
|
||||||
</ng-container> |
|
||||||
<ng-container matColumnDef="operate"> |
|
||||||
<th mat-header-cell *matHeaderCellDef style="width: 200px;">操作</th> |
|
||||||
<td mat-cell *matCellDef="let element" class="operate"> |
|
||||||
<span (click)="look(element)">查看</span> |
|
||||||
<span (click)="delete(element)">删除</span> |
|
||||||
</td> |
|
||||||
</ng-container> |
|
||||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr> |
|
||||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr> |
|
||||||
</table> |
|
||||||
<mat-paginator [length]="length" [pageSize]="pageSize" (page)="chagePage($event)"> |
|
||||||
</mat-paginator> |
|
||||||
</div> |
|
||||||
</div> |
|
@ -1,59 +0,0 @@ |
|||||||
.box { |
|
||||||
height: 100%; |
|
||||||
overflow: auto; |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
.header { |
|
||||||
width: 100%; |
|
||||||
box-sizing: border-box; |
|
||||||
padding: 20px 30px 8px 30px; |
|
||||||
|
|
||||||
.queryBox { |
|
||||||
display: flex; |
|
||||||
flex-wrap: wrap; |
|
||||||
align-items: center; |
|
||||||
|
|
||||||
.queryField { |
|
||||||
display: flex; |
|
||||||
align-items: center; |
|
||||||
margin-right: 20px; |
|
||||||
|
|
||||||
span { |
|
||||||
display: inline-block; |
|
||||||
width: 80px; |
|
||||||
} |
|
||||||
} |
|
||||||
.btnbox{ |
|
||||||
button{ |
|
||||||
margin-right: 12px; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
.tablebox { |
|
||||||
table { |
|
||||||
width: 100%; |
|
||||||
margin-top: 15px; |
|
||||||
} |
|
||||||
|
|
||||||
mat-paginator { |
|
||||||
width: 100%; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
.mat-header-cell, |
|
||||||
.mat-cell { |
|
||||||
text-align: center; |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
.operate { |
|
||||||
span { |
|
||||||
color: #40a9ff; |
|
||||||
cursor: pointer; |
|
||||||
margin: 0 3px; |
|
||||||
} |
|
||||||
} |
|
@ -1,25 +0,0 @@ |
|||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing'; |
|
||||||
|
|
||||||
import { DrillRecordComponent } from './drill-record.component'; |
|
||||||
|
|
||||||
describe('DrillRecordComponent', () => { |
|
||||||
let component: DrillRecordComponent; |
|
||||||
let fixture: ComponentFixture<DrillRecordComponent>; |
|
||||||
|
|
||||||
beforeEach(async(() => { |
|
||||||
TestBed.configureTestingModule({ |
|
||||||
declarations: [ DrillRecordComponent ] |
|
||||||
}) |
|
||||||
.compileComponents(); |
|
||||||
})); |
|
||||||
|
|
||||||
beforeEach(() => { |
|
||||||
fixture = TestBed.createComponent(DrillRecordComponent); |
|
||||||
component = fixture.componentInstance; |
|
||||||
fixture.detectChanges(); |
|
||||||
}); |
|
||||||
|
|
||||||
it('should create', () => { |
|
||||||
expect(component).toBeTruthy(); |
|
||||||
}); |
|
||||||
}); |
|
@ -1,141 +0,0 @@ |
|||||||
import { Component, OnInit, ViewChild, Inject } from "@angular/core"; |
|
||||||
import { HttpClient } from "@angular/common/http"; |
|
||||||
import { MatPaginator } from "@angular/material/paginator"; |
|
||||||
import { Router, ActivatedRoute } from "@angular/router"; |
|
||||||
import { PageEvent } from "@angular/material/paginator"; |
|
||||||
import { MatDialog } from "@angular/material/dialog"; |
|
||||||
import { MatSnackBar } from "@angular/material/snack-bar"; |
|
||||||
import { TreeService } from "../../http-interceptors/tree.service"; |
|
||||||
import { DatePipe } from "@angular/common"; |
|
||||||
import { UploadDrillComponent } from "@src/app/key-unit/key-unit-management/upload-drill/upload-drill.component"; |
|
||||||
@Component({ |
|
||||||
selector: "app-drill-record", |
|
||||||
templateUrl: "./drill-record.component.html", |
|
||||||
styleUrls: ["./drill-record.component.scss"], |
|
||||||
providers: [DatePipe], |
|
||||||
}) |
|
||||||
export class DrillRecordComponent implements OnInit { |
|
||||||
constructor( |
|
||||||
private http: HttpClient, |
|
||||||
public dialog: MatDialog, |
|
||||||
public snackBar: MatSnackBar, |
|
||||||
private datePipe: DatePipe |
|
||||||
) {} |
|
||||||
|
|
||||||
//分页
|
|
||||||
@ViewChild(MatPaginator, { static: true }) |
|
||||||
pageEvent: PageEvent; |
|
||||||
paginator: MatPaginator; |
|
||||||
displayedColumns: string[] = ["name", "or", "people", "time", "operate"]; |
|
||||||
tabledataSource: any; //表格数据
|
|
||||||
|
|
||||||
ngOnInit(): void { |
|
||||||
this.getOrganizations(); |
|
||||||
} |
|
||||||
|
|
||||||
//获得所有组织机构
|
|
||||||
allorganizations: any; //所有组织机构
|
|
||||||
getOrganizations() { |
|
||||||
this.http.get("/api/Organizations").subscribe((data: any) => { |
|
||||||
this.allorganizations = data; |
|
||||||
this.getpresentOrganization(); |
|
||||||
}); |
|
||||||
} |
|
||||||
|
|
||||||
//得到当前单位所在组织机构的tree型数据
|
|
||||||
expandKeys = []; |
|
||||||
nodes = []; |
|
||||||
organizationId; |
|
||||||
getpresentOrganization() { |
|
||||||
this.allorganizations.forEach((item) => { |
|
||||||
item.key = item.id; |
|
||||||
item.title = item.name; |
|
||||||
item.children = []; |
|
||||||
this.allorganizations.forEach((element) => { |
|
||||||
if (element.parentId == item.id) { |
|
||||||
item.children.push(element); |
|
||||||
} |
|
||||||
if (item.children.length === 0) { |
|
||||||
item.isLeaf = true; |
|
||||||
} else { |
|
||||||
item.isLeaf = false; |
|
||||||
} |
|
||||||
}); |
|
||||||
}); |
|
||||||
this.http.get("/api/Account/Profiles").subscribe((data: any) => { |
|
||||||
this.allorganizations.forEach((item) => { |
|
||||||
if (item.name == data.organizationName) { |
|
||||||
this.expandKeys = [item.id]; |
|
||||||
this.organizationId = item.id; |
|
||||||
this.orId = item.id; |
|
||||||
this.nodes = [...[item]]; |
|
||||||
this.getTabledataSource(); |
|
||||||
} |
|
||||||
}); |
|
||||||
}); |
|
||||||
} |
|
||||||
|
|
||||||
length: any; //共多少条数据
|
|
||||||
pageSize: any = 10; //每页条数
|
|
||||||
PageNumber: any = 1; //第几页
|
|
||||||
getTabledataSource() { |
|
||||||
let params = { |
|
||||||
OrganizationId: this.orId, |
|
||||||
CompanyName: this.name || "", |
|
||||||
StartTime: this.time |
|
||||||
? this.datePipe.transform(this.time[0], "yyyy-MM-ddT00:00:00") |
|
||||||
: "2020-01-01T00:00:00", |
|
||||||
EndTime: this.time |
|
||||||
? this.datePipe.transform(this.time[1], "yyyy-MM-ddT23:59:59") |
|
||||||
: "2030-01-01T00:00:00", |
|
||||||
PageNumber: this.PageNumber, |
|
||||||
PageSize: this.pageSize, |
|
||||||
}; |
|
||||||
this.http |
|
||||||
.get("/api/DrillRecords", { params: params }) |
|
||||||
.subscribe((data: any) => { |
|
||||||
this.tabledataSource = data.items; |
|
||||||
this.length = data.totalCount; |
|
||||||
}); |
|
||||||
} |
|
||||||
|
|
||||||
//分页事件
|
|
||||||
chagePage(e) { |
|
||||||
this.PageNumber = e.pageIndex + 1; |
|
||||||
this.getTabledataSource(); |
|
||||||
} |
|
||||||
|
|
||||||
name; |
|
||||||
orId; |
|
||||||
time; |
|
||||||
//查询
|
|
||||||
onSubmit() { |
|
||||||
this.PageNumber = 1; |
|
||||||
this.pageEvent.pageIndex = 0; |
|
||||||
this.getTabledataSource(); |
|
||||||
} |
|
||||||
|
|
||||||
//重置
|
|
||||||
reset() { |
|
||||||
this.name = ""; |
|
||||||
this.orId = this.organizationId; |
|
||||||
this.time = null; |
|
||||||
this.onSubmit(); |
|
||||||
} |
|
||||||
look(element) { |
|
||||||
this.dialog.open(UploadDrillComponent, { |
|
||||||
width: "700px", |
|
||||||
data: { unitInfo: element.company, isEditMode: false }, |
|
||||||
}); |
|
||||||
} |
|
||||||
delete(element) { |
|
||||||
if (confirm("确认删除此记录吗")) { |
|
||||||
this.http |
|
||||||
.delete(`/api/DrillRecords/${element.id}`) |
|
||||||
.subscribe((data: any) => { |
|
||||||
alert("删除成功"); |
|
||||||
this.getTabledataSource(); |
|
||||||
}); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
@ -1,18 +0,0 @@ |
|||||||
<form (ngSubmit)="onSubmit(form.value)" #form="ngForm" class="example-container"> |
|
||||||
<div class="topbox" style="text-align: center;"> |
|
||||||
<span mat-dialog-title>修改预案级别</span> |
|
||||||
</div> |
|
||||||
<div class="mainbox"> |
|
||||||
<mat-form-field> |
|
||||||
<mat-select placeholder='请选择预案级别' [(ngModel)]="planCategory" name="integritySort"> |
|
||||||
<mat-option [value]='3'>Ⅲ级预案</mat-option> |
|
||||||
<mat-option [value]='4'>Ⅳ级预案</mat-option> |
|
||||||
<mat-option [value]='5'>Ⅴ级预案</mat-option> |
|
||||||
</mat-select> |
|
||||||
</mat-form-field> |
|
||||||
</div> |
|
||||||
<div class="btn" style="margin-top:10px;"> |
|
||||||
<button mat-raised-button color="primary" style="margin-right: 12px;">确定</button> |
|
||||||
<button type="button" mat-button (click)="onNoClick()" mat-raised-button>取消</button> |
|
||||||
</div> |
|
||||||
</form> |
|
@ -1,25 +0,0 @@ |
|||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing'; |
|
||||||
|
|
||||||
import { EditPlanCategoryComponent } from './edit-plan-category.component'; |
|
||||||
|
|
||||||
describe('EditPlanCategoryComponent', () => { |
|
||||||
let component: EditPlanCategoryComponent; |
|
||||||
let fixture: ComponentFixture<EditPlanCategoryComponent>; |
|
||||||
|
|
||||||
beforeEach(async(() => { |
|
||||||
TestBed.configureTestingModule({ |
|
||||||
declarations: [ EditPlanCategoryComponent ] |
|
||||||
}) |
|
||||||
.compileComponents(); |
|
||||||
})); |
|
||||||
|
|
||||||
beforeEach(() => { |
|
||||||
fixture = TestBed.createComponent(EditPlanCategoryComponent); |
|
||||||
component = fixture.componentInstance; |
|
||||||
fixture.detectChanges(); |
|
||||||
}); |
|
||||||
|
|
||||||
it('should create', () => { |
|
||||||
expect(component).toBeTruthy(); |
|
||||||
}); |
|
||||||
}); |
|
@ -1,37 +0,0 @@ |
|||||||
import { HttpClient } from "@angular/common/http"; |
|
||||||
import { Component, OnInit, Inject } from "@angular/core"; |
|
||||||
import { MatDialogRef, MAT_DIALOG_DATA } from "@angular/material/dialog"; |
|
||||||
import { MatSnackBar } from "@angular/material/snack-bar"; |
|
||||||
|
|
||||||
@Component({ |
|
||||||
selector: "app-edit-plan-category", |
|
||||||
templateUrl: "./edit-plan-category.component.html", |
|
||||||
styleUrls: ["./edit-plan-category.component.scss"], |
|
||||||
}) |
|
||||||
export class EditPlanCategoryComponent implements OnInit { |
|
||||||
constructor( |
|
||||||
private http: HttpClient, |
|
||||||
public dialogRef: MatDialogRef<EditPlanCategoryComponent>, |
|
||||||
@Inject(MAT_DIALOG_DATA) public data, |
|
||||||
public snackBar: MatSnackBar |
|
||||||
) {} |
|
||||||
planCategory; |
|
||||||
ngOnInit(): void { |
|
||||||
this.planCategory = this.data.planCategory; |
|
||||||
} |
|
||||||
|
|
||||||
onNoClick(): void { |
|
||||||
this.dialogRef.close(); |
|
||||||
} |
|
||||||
|
|
||||||
onSubmit(value) { |
|
||||||
let body = { |
|
||||||
planCategory: this.planCategory, |
|
||||||
}; |
|
||||||
this.http |
|
||||||
.put(`/api/PlanComponents/${this.data.id}`, body) |
|
||||||
.subscribe((data) => { |
|
||||||
this.dialogRef.close("success"); |
|
||||||
}); |
|
||||||
} |
|
||||||
} |
|
File diff suppressed because it is too large
Load Diff
@ -1,29 +0,0 @@ |
|||||||
<h2 mat-dialog-title>六熟悉</h2> |
|
||||||
<div class="box"> |
|
||||||
<div class="contentItem"> |
|
||||||
<div class="content"> |
|
||||||
<div class="textbox"> |
|
||||||
<span class="name">熟悉对象:</span> |
|
||||||
<span>{{data.unitdata.unitname}}</span> |
|
||||||
</div> |
|
||||||
<div> |
|
||||||
<span class="name">人员数量:</span> |
|
||||||
<input type="number" [disabled]="!isEditMode" name="memberCount" [(ngModel)]="memberCount" nz-input |
|
||||||
placeholder="人员数量" /> |
|
||||||
</div> |
|
||||||
<div> |
|
||||||
<span class="name">熟悉时间:</span> |
|
||||||
<nz-range-picker [disabled]="!isEditMode" [nzShowTime]="{ nzFormat: 'HH:mm' }" |
|
||||||
nzFormat="yyyy-MM-dd HH:mm" [nzPlaceHolder]="['开始时间', '结束时间']" name="time" |
|
||||||
[(ngModel)]="time"></nz-range-picker> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
<div class="mask" *ngIf="isLoading"> |
|
||||||
<mat-spinner [diameter]="30"></mat-spinner> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
<mat-dialog-actions align="end"> |
|
||||||
<button mat-button mat-dialog-close [disabled]="isLoading || isLoadingSave">取消</button> |
|
||||||
<button mat-button cdkFocusInitial (click)="save()" [disabled]="isLoading || isLoadingSave">确定</button> |
|
||||||
</mat-dialog-actions> |
|
@ -1,118 +0,0 @@ |
|||||||
.box { |
|
||||||
width: 100%; |
|
||||||
position: relative; |
|
||||||
|
|
||||||
.contentItem { |
|
||||||
display: flex; |
|
||||||
margin: 6px 0; |
|
||||||
// border-bottom: 1px dashed rgb(180, 178, 178); |
|
||||||
|
|
||||||
.title { |
|
||||||
width: 75px; |
|
||||||
color: #1890ff; |
|
||||||
display: flex; |
|
||||||
align-items: center; |
|
||||||
} |
|
||||||
|
|
||||||
.content { |
|
||||||
flex: 1; |
|
||||||
display: flex; |
|
||||||
flex-wrap: wrap; |
|
||||||
flex-direction: column; |
|
||||||
|
|
||||||
div { |
|
||||||
display: flex; |
|
||||||
align-items: center; |
|
||||||
|
|
||||||
input, |
|
||||||
nz-range-picker { |
|
||||||
flex: 1; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
div { |
|
||||||
margin-bottom: 8px; |
|
||||||
|
|
||||||
.name { |
|
||||||
display: inline-block; |
|
||||||
width: 70px; |
|
||||||
margin-right: 3px; |
|
||||||
text-align: right; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
.textbox { |
|
||||||
height: 32px; |
|
||||||
line-height: 32px; |
|
||||||
width: 100%; |
|
||||||
white-space: nowrap; |
|
||||||
overflow: hidden; |
|
||||||
text-overflow: ellipsis; |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
.uploadbox { |
|
||||||
position: relative; |
|
||||||
display: flex; |
|
||||||
align-items: center; |
|
||||||
|
|
||||||
input { |
|
||||||
width: 88px; |
|
||||||
height: 32px; |
|
||||||
position: absolute; |
|
||||||
left: 0; |
|
||||||
top: 0; |
|
||||||
opacity: 0; |
|
||||||
z-index: 2; |
|
||||||
cursor: pointer; |
|
||||||
} |
|
||||||
|
|
||||||
button { |
|
||||||
z-index: 1; |
|
||||||
cursor: pointer; |
|
||||||
} |
|
||||||
|
|
||||||
.imgbox { |
|
||||||
height: 100%; |
|
||||||
display: flex; |
|
||||||
align-items: center; |
|
||||||
|
|
||||||
li { |
|
||||||
display: flex; |
|
||||||
align-items: center; |
|
||||||
position: relative; |
|
||||||
} |
|
||||||
|
|
||||||
img { |
|
||||||
width: 50px; |
|
||||||
height: 50px; |
|
||||||
margin: 0 5px; |
|
||||||
cursor: pointer; |
|
||||||
} |
|
||||||
|
|
||||||
.close { |
|
||||||
position: absolute; |
|
||||||
right: 0; |
|
||||||
top: 0; |
|
||||||
font-size: 15px; |
|
||||||
cursor: pointer; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
.mask { |
|
||||||
position: absolute; |
|
||||||
width: 100%; |
|
||||||
height: 100%; |
|
||||||
left: 0; |
|
||||||
top: 0; |
|
||||||
background: rgba(0, 0, 0, 0.2); |
|
||||||
display: flex; |
|
||||||
justify-content: center; |
|
||||||
align-items: center; |
|
||||||
z-index: 3; |
|
||||||
} |
|
||||||
} |
|
@ -1,25 +0,0 @@ |
|||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing'; |
|
||||||
|
|
||||||
import { SixFamiliarizeComponent } from './six-familiarize.component'; |
|
||||||
|
|
||||||
describe('SixFamiliarizeComponent', () => { |
|
||||||
let component: SixFamiliarizeComponent; |
|
||||||
let fixture: ComponentFixture<SixFamiliarizeComponent>; |
|
||||||
|
|
||||||
beforeEach(async(() => { |
|
||||||
TestBed.configureTestingModule({ |
|
||||||
declarations: [ SixFamiliarizeComponent ] |
|
||||||
}) |
|
||||||
.compileComponents(); |
|
||||||
})); |
|
||||||
|
|
||||||
beforeEach(() => { |
|
||||||
fixture = TestBed.createComponent(SixFamiliarizeComponent); |
|
||||||
component = fixture.componentInstance; |
|
||||||
fixture.detectChanges(); |
|
||||||
}); |
|
||||||
|
|
||||||
it('should create', () => { |
|
||||||
expect(component).toBeTruthy(); |
|
||||||
}); |
|
||||||
}); |
|
@ -1,110 +0,0 @@ |
|||||||
import { HttpClient } from "@angular/common/http"; |
|
||||||
import { Component, OnInit, Inject } from "@angular/core"; |
|
||||||
import { MatDialogRef, MAT_DIALOG_DATA } from "@angular/material/dialog"; |
|
||||||
import { ObjectsService } from "@src/app/services/objects.service"; |
|
||||||
import { DatePipe } from "@angular/common"; |
|
||||||
import { MatSnackBar } from "@angular/material/snack-bar"; |
|
||||||
import Viewer from "viewerjs"; |
|
||||||
|
|
||||||
@Component({ |
|
||||||
selector: "app-six-familiarize", |
|
||||||
templateUrl: "./six-familiarize.component.html", |
|
||||||
styleUrls: ["./six-familiarize.component.scss"], |
|
||||||
providers: [DatePipe], |
|
||||||
}) |
|
||||||
export class SixFamiliarizeComponent implements OnInit { |
|
||||||
constructor( |
|
||||||
public dialogRef: MatDialogRef<SixFamiliarizeComponent>, |
|
||||||
@Inject(MAT_DIALOG_DATA) public data: any, |
|
||||||
private objectsSer: ObjectsService, |
|
||||||
private http: HttpClient, |
|
||||||
private datePipe: DatePipe, |
|
||||||
public snackBar: MatSnackBar |
|
||||||
) {} |
|
||||||
|
|
||||||
isEditMode = true; |
|
||||||
|
|
||||||
ngOnInit(): void { |
|
||||||
console.log('传递的数据',this.data); |
|
||||||
this.isEditMode = this.data.isEditMode; |
|
||||||
this.getData(); |
|
||||||
} |
|
||||||
|
|
||||||
isHttpPost; |
|
||||||
getData() { |
|
||||||
this.http |
|
||||||
.get("/api/SixFamiliars", { |
|
||||||
params: { |
|
||||||
PlanComponentId: this.data.id, |
|
||||||
}, |
|
||||||
}) |
|
||||||
.subscribe((data: any) => { |
|
||||||
console.log("六熟悉记录数据", data); |
|
||||||
if (data.totalCount === 0) { |
|
||||||
this.isHttpPost = true; |
|
||||||
} else { |
|
||||||
this.isHttpPost = false; |
|
||||||
let item = data.items[0]; |
|
||||||
this.familiarizeId = item.id; |
|
||||||
this.memberCount = item.memberCount; |
|
||||||
this.time = [item.startTime, item.endTime]; |
|
||||||
} |
|
||||||
}); |
|
||||||
} |
|
||||||
|
|
||||||
isLoading = false; |
|
||||||
|
|
||||||
memberCount; |
|
||||||
time; |
|
||||||
familiarizeId; |
|
||||||
isLoadingSave = false; |
|
||||||
save() { |
|
||||||
if (!this.isEditMode) { |
|
||||||
this.dialogRef.close(); |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
if (!this.memberCount || !this.time) { |
|
||||||
this.snackBar.open("请输入人员数量和熟悉时间", "确定", { |
|
||||||
verticalPosition: "top", |
|
||||||
duration: 3000, |
|
||||||
}); |
|
||||||
return; |
|
||||||
} |
|
||||||
this.isLoadingSave = true; |
|
||||||
let body: any = { |
|
||||||
planComponentId: this.data.planData.id, |
|
||||||
memberCount: Number(this.memberCount), |
|
||||||
startTime: this.datePipe.transform(this.time[0], "yyyy-MM-ddTHH:mm:ss"), |
|
||||||
endTime: this.datePipe.transform(this.time[1], "yyyy-MM-ddTHH:mm:ss"), |
|
||||||
}; |
|
||||||
if (this.isHttpPost) { |
|
||||||
this.http.post("/api/SixFamiliars", body).subscribe((data: any) => { |
|
||||||
this.familiarizeId = data.id; |
|
||||||
this.isHttpPost = false; |
|
||||||
this.isLoadingSave = false; |
|
||||||
this.snackBar.open("保存成功", "确定", { |
|
||||||
verticalPosition: "top", |
|
||||||
duration: 3000, |
|
||||||
}); |
|
||||||
this.dialogRef.close(); |
|
||||||
}); |
|
||||||
} else { |
|
||||||
body.id = this.familiarizeId; |
|
||||||
this.http.put(`/api/SixFamiliars/${this.familiarizeId}`, body).subscribe( |
|
||||||
(data: any) => { |
|
||||||
this.isLoadingSave = false; |
|
||||||
this.snackBar.open("保存成功", "确定", { |
|
||||||
verticalPosition: "top", |
|
||||||
duration: 3000, |
|
||||||
}); |
|
||||||
this.dialogRef.close(); |
|
||||||
}, |
|
||||||
(err) => { |
|
||||||
this.isLoadingSave = false; |
|
||||||
} |
|
||||||
); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,201 +1,190 @@ |
|||||||
<div style="height: 100%;overflow-y: auto;"> |
<div style="height: 100%;overflow-y: auto;"> |
||||||
<div class="header"> |
<div class="header" > |
||||||
<form (ngSubmit)="onSubmit(form.value)" #form="ngForm"> |
<form (ngSubmit)="onSubmit(form.value)" #form="ngForm"> |
||||||
<div class="queryBox"> |
<div class="queryBox"> |
||||||
|
|
||||||
<div class="queryField"> |
<div class="queryField"> |
||||||
<label style="margin-right: 10px;">预案名称:</label> |
<label style="margin-right: 10px;">预案名称:</label> |
||||||
<mat-form-field class="example-full-width"> |
<mat-form-field class="example-full-width"> |
||||||
<input matInput placeholder="请输入预案名称" name="companyName" autocomplete="off" [(ngModel)]="unitname"> |
<input matInput placeholder="请输入预案名称" name="companyName" autocomplete="off" [(ngModel)]="unitname"> |
||||||
</mat-form-field> |
</mat-form-field> |
||||||
</div> |
</div> |
||||||
<div class="queryField"> |
<div class="queryField" > |
||||||
<label style="margin-right: 10px;">编制级别:</label> |
<label style="margin-right: 10px;">编制级别:</label> |
||||||
<mat-form-field> |
<mat-form-field> |
||||||
<mat-select name="preparelevel" placeholder='请选择编制级别' [(ngModel)]="projectlevel"> |
<mat-select name="preparelevel" placeholder='请选择编制级别' [(ngModel)]="projectlevel"> |
||||||
<!-- <mat-option value="1">总队</mat-option> |
<!-- <mat-option value="1">总队</mat-option> |
||||||
<mat-option value="2">支队</mat-option> |
<mat-option value="2">支队</mat-option> |
||||||
<mat-option value="4">大队</mat-option> |
<mat-option value="4">大队</mat-option> |
||||||
<mat-option value="8">中队</mat-option> --> |
<mat-option value="8">中队</mat-option> --> |
||||||
<mat-option *ngFor="let item of preparelevels" [value]="item.value">{{item.name}}</mat-option> |
<mat-option *ngFor="let item of preparelevels" [value]="item.value">{{item.name}}</mat-option> |
||||||
</mat-select> |
</mat-select> |
||||||
</mat-form-field> |
</mat-form-field> |
||||||
<mat-checkbox style="margin-left: 6px;" [(ngModel)]="plcheck" name="plcheck">包含下级</mat-checkbox> |
<mat-checkbox style="margin-left: 6px;" [(ngModel)]="plcheck" name="plcheck">包含下级</mat-checkbox> |
||||||
<span *ngIf="padMore" style="margin-left: 20px; color: #0080FF;" (click)='padInfo()'>更多筛选条件<img |
<span *ngIf="padMore" style="margin-left: 20px; color: #0080FF;" (click)='padInfo()'>更多筛选条件<img [src]='imgsrcopen'style="width: 10px;height: 6px;margin:0 0 3px 2px;"> </span> |
||||||
[src]='imgsrcopen' style="width: 10px;height: 6px;margin:0 0 3px 2px;"> </span> |
<span *ngIf="padput" style="margin-left: 10px; color: #0080FF;" (click)='padInfo()'>收起<img [src]='imgsrcdown'style="width: 10px;height: 6px;margin:0 0 3px 2px;"> </span> |
||||||
<span *ngIf="padput" style="margin-left: 10px; color: #0080FF;" (click)='padInfo()'>收起<img [src]='imgsrcdown' |
</div> |
||||||
style="width: 10px;height: 6px;margin:0 0 3px 2px;"> </span> |
|
||||||
</div> |
|
||||||
|
|
||||||
|
|
||||||
<div class="queryField" *ngIf="!pcfind"> |
<div class="queryField" *ngIf="!pcfind"> |
||||||
<button mat-raised-button color="primary">查询</button> |
<button mat-raised-button color="primary">查询</button> |
||||||
<button mat-raised-button style="margin-left: 25px;" type="button" (click)="reset()">重置</button> |
<button mat-raised-button style="margin-left: 25px;" type="button" (click)="reset()">重置</button> |
||||||
</div> |
</div> |
||||||
<div class="queryField" *ngIf="!padMore"> |
<div class="queryField" *ngIf="!padMore"> |
||||||
<label style="margin-right: 10px;">预案级别:</label> |
<label style="margin-right: 10px;">预案级别:</label> |
||||||
<mat-form-field> |
<mat-form-field> |
||||||
<mat-select placeholder='请选择预案级别' name="level" [(ngModel)]="level"> |
<mat-select placeholder='请选择预案级别' name="level" [(ngModel)]="level"> |
||||||
<mat-option value="6">国家级</mat-option> |
<mat-option value="6">国家级</mat-option> |
||||||
<mat-option value="7">市级</mat-option> |
<mat-option value="7">市级</mat-option> |
||||||
</mat-select> |
</mat-select> |
||||||
</mat-form-field> |
</mat-form-field> |
||||||
|
|
||||||
|
</div> |
||||||
|
<div class="queryField" *ngIf="!padMore"> |
||||||
|
<label style="margin-right: 10px;">添加人:</label> |
||||||
|
<mat-form-field class="example-full-width"> |
||||||
|
<input matInput placeholder="请输入添加人" name="addname" autocomplete="off" [(ngModel)]="addname"> |
||||||
|
</mat-form-field> |
||||||
|
<span *ngIf="pcMore" style="margin-left: 15px; color: #0080FF; cursor: pointer;" (click)='pcInfo()'>更多筛选条件<img [src]='imgsrcopen'style="width: 10px;height: 6px;margin:0 0 3px 2px;"> </span> |
||||||
|
<span *ngIf="pcput" style="margin-left: 10px; color: #0080FF; cursor: pointer;" (click)='pcInfo()'>收起<img [src]='imgsrcdown'style="width: 10px;height: 6px;margin:0 0 3px 2px;"> </span> |
||||||
|
</div> |
||||||
|
<div class="queryField" *ngIf="pcfind" > |
||||||
|
<button mat-raised-button color="primary">查询</button> |
||||||
|
<button mat-raised-button style="margin-left: 25px;" type="button" (click)="reset()">重置</button> |
||||||
</div> |
</div> |
||||||
<div class="queryField" *ngIf="!padMore"> |
<div class="queryField" *ngIf="!padMore&&!pcMore"> |
||||||
<label style="margin-right: 10px;">添加人:</label> |
<label style="margin-right: 10px;">添加时间:</label> |
||||||
<mat-form-field class="example-full-width"> |
<mat-form-field class="example-full-width"> |
||||||
<input matInput placeholder="请输入添加人" name="addname" autocomplete="off" [(ngModel)]="addname"> |
<input type="date" matInput name="addtime" autocomplete="off" [(ngModel)]="addtime"> |
||||||
</mat-form-field> |
</mat-form-field> |
||||||
<span *ngIf="pcMore" style="margin-left: 15px; color: #0080FF; cursor: pointer;" (click)='pcInfo()'>更多筛选条件<img |
<!-- <mat-icon aria-hidden="false" style="position: relative;right: 120px;top: 5px;">arrow forward</mat-icon> --> |
||||||
[src]='imgsrcopen' style="width: 10px;height: 6px;margin:0 0 3px 2px;"> </span> |
<mat-icon *ngIf="padjt" aria-hidden="false" style="position: relative;right: 120px;top: 5px;" id="padshow">arrow forward</mat-icon> |
||||||
<span *ngIf="pcput" style="margin-left: 10px; color: #0080FF; cursor: pointer;" (click)='pcInfo()'>收起<img |
<span style="margin-left: 15px;" id="pcshow" *ngIf="!padMore&&!padjt">🠊</span> |
||||||
[src]='imgsrcdown' style="width: 10px;height: 6px;margin:0 0 3px 2px;"> </span> |
<mat-form-field class="example-full-width" style="margin-left: 10px;"> |
||||||
</div> |
<input type="date" matInput name="endtime" autocomplete="off" [(ngModel)]="endtime"> |
||||||
<div class="queryField" *ngIf="pcfind"> |
</mat-form-field> |
||||||
<button mat-raised-button color="primary">查询</button> |
|
||||||
<button mat-raised-button style="margin-left: 25px;" type="button" (click)="reset()">重置</button> |
|
||||||
</div> |
|
||||||
<div class="queryField" *ngIf="!padMore&&!pcMore"> |
|
||||||
<label style="margin-right: 10px;">添加时间:</label> |
|
||||||
<mat-form-field class="example-full-width"> |
|
||||||
<input type="date" matInput name="addtime" autocomplete="off" [(ngModel)]="addtime"> |
|
||||||
</mat-form-field> |
|
||||||
<!-- <mat-icon aria-hidden="false" style="position: relative;right: 120px;top: 5px;">arrow forward</mat-icon> --> |
|
||||||
<mat-icon *ngIf="padjt" aria-hidden="false" style="position: relative;right: 120px;top: 5px;" |
|
||||||
id="padshow">arrow forward</mat-icon> |
|
||||||
<span style="margin-left: 15px;" id="pcshow" *ngIf="!padMore&&!padjt">🠊</span> |
|
||||||
<mat-form-field class="example-full-width" style="margin-left: 10px;"> |
|
||||||
<input type="date" matInput name="endtime" autocomplete="off" [(ngModel)]="endtime"> |
|
||||||
</mat-form-field> |
|
||||||
|
|
||||||
</div> |
</div> |
||||||
|
|
||||||
|
|
||||||
<div class="queryField" *ngIf="!padMore&&!pcMore"> |
<div class="queryField" *ngIf="!padMore&&!pcMore"> |
||||||
<label style="margin-right: 10px;">预案类型:</label> |
<label style="margin-right: 10px;">预案类型:</label> |
||||||
<mat-form-field> |
<mat-form-field> |
||||||
<input matInput placeholder="请输入预案类型" name="reservePlanType" autocomplete="off" [(ngModel)]="typePlan"> |
<input matInput placeholder="请输入预案类型" name="reservePlanType" autocomplete="off" [(ngModel)]="typePlan"> |
||||||
</mat-form-field> |
</mat-form-field> |
||||||
</div> |
</div> |
||||||
<div class="queryField" *ngIf="!padMore&&!pcMore"> |
<div class="queryField" *ngIf="!padMore&&!pcMore"> |
||||||
<label style="margin-right: 10px;">审核状态:</label> |
<label style="margin-right: 10px;">审核状态:</label> |
||||||
<mat-form-field> |
<mat-form-field> |
||||||
<mat-select name="toExamine" placeholder='请选择审核状态' [(ngModel)]="unitstate"> |
<mat-select name="toExamine" placeholder='请选择审核状态' [(ngModel)]="unitstate"> |
||||||
<mat-option value="8">未提交审核</mat-option> |
<mat-option value="8">未提交审核</mat-option> |
||||||
<mat-option value="1">审核中</mat-option> |
<mat-option value="1">审核中</mat-option> |
||||||
<mat-option value="2">审核通过</mat-option> |
<mat-option value="2">审核通过</mat-option> |
||||||
<mat-option value="4">审核退回</mat-option> |
<mat-option value="4">审核退回</mat-option> |
||||||
</mat-select> |
</mat-select> |
||||||
</mat-form-field> |
</mat-form-field> |
||||||
</div> |
</div> |
||||||
<div class="queryField" *ngIf="!padMore&&!pcMore"> |
<div class="queryField" *ngIf="!padMore&&!pcMore"> |
||||||
<input type="radio" style="height: 16px;width: 16px;position: relative;top: 2px;" name="whgx" [value]='true' |
<input type="radio" style="height: 16px;width: 16px;position: relative;top: 2px;" name="whgx" [value]='true' [(ngModel)]="IsNewData"> |
||||||
[(ngModel)]="IsNewData"> |
<label style="margin-right: 10px;margin-left: 2px;">新增</label> |
||||||
<label style="margin-right: 10px;margin-left: 2px;">新增</label> |
<input type="radio" style="height: 16px;width: 16px;position: relative;top: 2px;" name="whgx" [value]='false' [(ngModel)]="IsNewData"> |
||||||
<input type="radio" style="height: 16px;width: 16px;position: relative;top: 2px;" name="whgx" [value]='false' |
<label style="margin-right: 10px;margin-left: 2px;">维护更新</label> |
||||||
[(ngModel)]="IsNewData"> |
</div> |
||||||
<label style="margin-right: 10px;margin-left: 2px;">维护更新</label> |
|
||||||
</div> |
|
||||||
|
|
||||||
</div> |
</div> |
||||||
<!-- <div class="butclass" style="width: 100%;text-align: center;"> |
<!-- <div class="butclass" style="width: 100%;text-align: center;"> |
||||||
<button mat-raised-button color="primary" type="submit">查询</button> |
<button mat-raised-button color="primary" type="submit">查询</button> |
||||||
<button mat-raised-button style="margin-left: 25px;" type="button" (click)="reset()">重置</button> |
<button mat-raised-button style="margin-left: 25px;" type="button" (click)="reset()">重置</button> |
||||||
</div> --> |
</div> --> |
||||||
</form> |
</form> |
||||||
</div> |
|
||||||
<!-- <mat-divider></mat-divider> --> |
|
||||||
<div class="newadd"> |
|
||||||
<div> |
|
||||||
<button *ngIf="levels=='0'" mat-raised-button color="primary" (click)='addunit()'><img style="margin-bottom: 3px;" |
|
||||||
src="../../../assets/images/newadd.png"> 新增</button> |
|
||||||
<!-- <button mat-raised-button color="primary" (click)='word("table","ceshi.doc")'></button> --> |
|
||||||
</div> |
</div> |
||||||
|
<!-- <mat-divider></mat-divider> --> |
||||||
|
<div class="newadd"> |
||||||
|
<div> |
||||||
|
<button *ngIf="levels=='0'" mat-raised-button color="primary" (click)='addunit()'><img style="margin-bottom: 3px;" src="../../../assets/images/newadd.png"> 新增</button> |
||||||
|
<!-- <button mat-raised-button color="primary" (click)='word("table","ceshi.doc")'></button> --> |
||||||
|
</div> |
||||||
|
|
||||||
<div class="progressBox" style="margin-left: 100px;" *ngIf="downloadisLoading"> |
<div class="progressBox" style="margin-left: 100px;" *ngIf="downloadisLoading"> |
||||||
|
|
||||||
<!-- <button mat-raised-button style="margin-right: 5px;" (click)="cancelDowload()">取消下载</button> --> |
<!-- <button mat-raised-button style="margin-right: 5px;" (click)="cancelDowload()">取消下载</button> --> |
||||||
<span title="{{downloadFileName}}" style="font-size: 12px;" class="filename">{{downloadFileName}}</span> |
<span title="{{downloadFileName}}" style="font-size: 12px;" class="filename">{{downloadFileName}}</span> |
||||||
<span style="font-size: 12px;position: absolute;margin-left: 8px;">下载中...</span> |
<span style="font-size: 12px;position: absolute;margin-left: 8px;">下载中...</span> |
||||||
<mat-progress-bar mode="determinate" [value]="downloadProgress" class="progress"></mat-progress-bar> |
<mat-progress-bar mode="determinate" [value]="downloadProgress" class="progress"></mat-progress-bar> |
||||||
|
</div> |
||||||
</div> |
</div> |
||||||
</div> |
<div class="body"> |
||||||
<div class="body"> |
<div class="tablebox" id="table"> |
||||||
<div class="tablebox" id="table"> |
<table mat-table [dataSource]="tabledataSource" class="mat-elevation-z8"> |
||||||
<table mat-table [dataSource]="tabledataSource" class="mat-elevation-z8"> |
<ng-container matColumnDef="state"> |
||||||
<ng-container matColumnDef="state"> |
<th mat-header-cell *matHeaderCellDef style="width: 8%;">预案状态</th> |
||||||
<th mat-header-cell *matHeaderCellDef style="width: 8%;">预案状态</th> |
<td mat-cell *matCellDef="let element"> |
||||||
<td mat-cell *matCellDef="let element"> |
<span class="add" *ngIf="element.isNewData">新增</span> |
||||||
<span class="add" *ngIf="element.isNewData">新增</span> |
<span class="weihu" *ngIf="!element.isNewData">维护更新</span> |
||||||
<span class="weihu" *ngIf="!element.isNewData">维护更新</span> |
</td> |
||||||
</td> |
</ng-container> |
||||||
</ng-container> |
<ng-container matColumnDef="unitname"> |
||||||
<ng-container matColumnDef="unitname"> |
<th mat-header-cell *matHeaderCellDef style="width: 8%;">预案名称</th> |
||||||
<th mat-header-cell *matHeaderCellDef style="width: 8%;">预案名称</th> |
<td mat-cell *matCellDef="let element">{{element.name}}</td> |
||||||
<td mat-cell *matCellDef="let element">{{element.name}}</td> |
</ng-container> |
||||||
</ng-container> |
<ng-container matColumnDef="level"> |
||||||
<ng-container matColumnDef="level"> |
<th mat-header-cell *matHeaderCellDef style="width: 8%;">预案级别</th> |
||||||
<th mat-header-cell *matHeaderCellDef style="width: 8%;">预案级别</th> |
<td mat-cell *matCellDef="let element">{{element.planCategory=='6'?'国家级':'市级'}}</td> |
||||||
<td mat-cell *matCellDef="let element">{{element.planCategory=='6'?'国家级':'市级'}}</td> |
</ng-container> |
||||||
</ng-container> |
<ng-container matColumnDef="addname"> |
||||||
<ng-container matColumnDef="addname"> |
<th mat-header-cell *matHeaderCellDef style="width: 8%;">添加人</th> |
||||||
<th mat-header-cell *matHeaderCellDef style="width: 8%;">添加人</th> |
<td mat-cell *matCellDef="let element">{{element.creatorName}}</td> |
||||||
<td mat-cell *matCellDef="let element">{{element.creatorName}}</td> |
</ng-container> |
||||||
</ng-container> |
|
||||||
|
|
||||||
<ng-container matColumnDef="addtime"> |
<ng-container matColumnDef="addtime"> |
||||||
<th mat-header-cell *matHeaderCellDef style="width: 8%;">添加时间</th> |
<th mat-header-cell *matHeaderCellDef style="width: 8%;">添加时间</th> |
||||||
<td mat-cell *matCellDef="let element">{{element.creationTime|date:'yyyy-MM-dd'}}</td> |
<td mat-cell *matCellDef="let element">{{element.creationTime|date:'yyyy-MM-dd'}}</td> |
||||||
</ng-container> |
</ng-container> |
||||||
<ng-container matColumnDef="plantype"> |
<ng-container matColumnDef="plantype"> |
||||||
<th mat-header-cell *matHeaderCellDef style="width: 8%;">预案类型</th> |
<th mat-header-cell *matHeaderCellDef style="width: 8%;">预案类型</th> |
||||||
<td mat-cell *matCellDef="let element">{{element.disasterType}}</td> |
<td mat-cell *matCellDef="let element">{{element.disasterType}}</td> |
||||||
</ng-container> |
</ng-container> |
||||||
<ng-container matColumnDef="passstate"> |
<ng-container matColumnDef="passstate"> |
||||||
<th mat-header-cell *matHeaderCellDef style="width: 8%;">新增审核</th> |
<th mat-header-cell *matHeaderCellDef style="width: 8%;">新增审核</th> |
||||||
<td mat-cell *matCellDef="let element"> |
<td mat-cell *matCellDef="let element"> |
||||||
{{element.newVerifyState}} |
{{element.newVerifyState}} |
||||||
<!-- {{element.auditStatus=='8'?'未提交审核':element.auditStatus=='1'?'审核中':element.auditStatus=='2'?'审核通过':element.auditStatus=='4'? |
<!-- {{element.auditStatus=='8'?'未提交审核':element.auditStatus=='1'?'审核中':element.auditStatus=='2'?'审核通过':element.auditStatus=='4'? |
||||||
'审核退回':element.auditStatus=='16'?'初审通过':'初审驳回'}} --> |
'审核退回':element.auditStatus=='16'?'初审通过':'初审驳回'}} --> |
||||||
</td> |
</td> |
||||||
</ng-container> |
</ng-container> |
||||||
<ng-container matColumnDef="isopen"> |
<ng-container matColumnDef="isopen"> |
||||||
<th mat-header-cell *matHeaderCellDef style="width: 8%;">是否公开</th> |
<th mat-header-cell *matHeaderCellDef style="width: 8%;">是否公开</th> |
||||||
<td mat-cell *matCellDef="let element">{{element.openRange}}</td> |
<td mat-cell *matCellDef="let element">{{element.openRange}}</td> |
||||||
</ng-container> |
</ng-container> |
||||||
<ng-container matColumnDef="projectlevel"> |
<ng-container matColumnDef="projectlevel"> |
||||||
<th mat-header-cell *matHeaderCellDef style="width: 8%;">编制级别</th> |
<th mat-header-cell *matHeaderCellDef style="width: 8%;">编制级别</th> |
||||||
<td mat-cell *matCellDef="let element"> |
<td mat-cell *matCellDef="let element">{{element.planLevel=='1'?'总队':element.planLevel=='2'?'支队':element.planLevel=='4'?'大队':'中队'}}</td> |
||||||
{{element.planLevel=='1'?'总队':element.planLevel=='2'?'支队':element.planLevel=='4'?'大队':'中队'}}</td> |
</ng-container> |
||||||
</ng-container> |
<ng-container matColumnDef="weihustate"> |
||||||
<ng-container matColumnDef="auditstate"> |
<th mat-header-cell *matHeaderCellDef style="width: 8%;">维护审核</th> |
||||||
<th mat-header-cell *matHeaderCellDef style="width: 8%;">审核状态</th> |
<td mat-cell *matCellDef="let element">{{element.maintenanceVerifyState}}</td> |
||||||
<td mat-cell *matCellDef="let element"> |
</ng-container> |
||||||
{{element.auditStatus | auditState}} |
<ng-container matColumnDef="operation"> |
||||||
</td> |
<th mat-header-cell *matHeaderCellDef style="width: 20%;">操作</th> |
||||||
</ng-container> |
<td mat-cell *matCellDef="let element" style="white-space: nowrap;cursor: pointer;"> |
||||||
<ng-container matColumnDef="operation"> |
<span style="color: blue;" (click)='openPlan(element)'>查看预案</span> |
||||||
<th mat-header-cell *matHeaderCellDef style="width: 20%;">操作</th> |
<span style="color: blue;margin-left: 4px;" (click)="submitAudit(element)" *ngIf="(element.isNewData && element.newVerifyState=='未提交审核')||(!element.isNewData&&(element.maintenanceVerifyState=='审核通过'||element.maintenanceVerifyState=='未提交审核'))">提交审核</span> |
||||||
<td mat-cell *matCellDef="let element" style="white-space: nowrap;cursor: pointer;"> |
<span style="color: blue;margin-left: 4px;" (click)="cancelAudit(element)" *ngIf="element.auditStatus == 1||element.auditStatus == 16">撤销审核</span> |
||||||
<span style="color: blue;" (click)='openPlan(element)'>查看预案</span> |
<span style="color: blue;margin-left: 4px;" (click)="auditResult(element)">审批结果</span> |
||||||
<span style="color: blue;margin-left: 4px;" (click)="submitAudit(element)" |
<span style="color: blue;margin-left: 4px;" (click)='readFile(element)'>下载</span> |
||||||
*ngIf="(element.isNewData && element.newVerifyState=='未提交审核')||(!element.isNewData&&(element.maintenanceVerifyState=='审核通过'||element.maintenanceVerifyState=='未提交审核'))">提交审核</span> |
<span style="color: red;margin-left: 4px" (click)='deletePlan(element.id)' *ngIf="element.auditStatus == 8"> 删除</span> |
||||||
<span style="color: blue;margin-left: 4px;" (click)="cancelAudit(element)" |
</td> |
||||||
*ngIf="element.auditStatus == 1||element.auditStatus == 16">撤销审核</span> |
</ng-container> |
||||||
<span style="color: blue;margin-left: 4px;" (click)="auditResult(element)">审批结果</span> |
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr> |
||||||
<span style="color: blue;margin-left: 4px;" (click)='readFile(element)'>下载</span> |
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr> |
||||||
<span style="color: red;margin-left: 4px" (click)='deletePlan(element.id)'> 删除</span> |
</table> |
||||||
</td> |
<mat-paginator pageEvent [length]="length" |
||||||
</ng-container> |
[pageSize]="pageSize" |
||||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr> |
[pageSizeOptions]="pageSizeOptions" |
||||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr> |
(page)="changePage($event)"> |
||||||
</table> |
|
||||||
<mat-paginator pageEvent [length]="length" [pageSize]="pageSize" [pageSizeOptions]="pageSizeOptions" |
|
||||||
(page)="changePage($event)"> |
|
||||||
|
|
||||||
</mat-paginator> |
</mat-paginator> |
||||||
|
|
||||||
|
</div> |
||||||
</div> |
</div> |
||||||
</div> |
|
||||||
</div> |
</div> |
File diff suppressed because it is too large
Load Diff
@ -1,10 +0,0 @@ |
|||||||
<h3 mat-dialog-title>选择要公开的消防救援站</h3> |
|
||||||
<div class="box"> |
|
||||||
<nz-tree #nzTreeComponent [nzData]="nodes" nzCheckable nzCheckStrictly [nzCheckedKeys]="defaultCheckedKeys" |
|
||||||
[nzExpandedKeys]="defaultExpandedKeys"> |
|
||||||
</nz-tree> |
|
||||||
</div> |
|
||||||
<mat-dialog-actions align="end"> |
|
||||||
<button mat-button mat-dialog-close [disabled]="isLoading">取消</button> |
|
||||||
<button mat-button cdkFocusInitial (click)="save()" [disabled]="isLoading">确定</button> |
|
||||||
</mat-dialog-actions> |
|
@ -1,4 +0,0 @@ |
|||||||
.box{ |
|
||||||
max-height: 400px; |
|
||||||
overflow-y: auto; |
|
||||||
} |
|
@ -1,25 +0,0 @@ |
|||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing'; |
|
||||||
|
|
||||||
import { OpenOrComponent } from './open-or.component'; |
|
||||||
|
|
||||||
describe('OpenOrComponent', () => { |
|
||||||
let component: OpenOrComponent; |
|
||||||
let fixture: ComponentFixture<OpenOrComponent>; |
|
||||||
|
|
||||||
beforeEach(async(() => { |
|
||||||
TestBed.configureTestingModule({ |
|
||||||
declarations: [ OpenOrComponent ] |
|
||||||
}) |
|
||||||
.compileComponents(); |
|
||||||
})); |
|
||||||
|
|
||||||
beforeEach(() => { |
|
||||||
fixture = TestBed.createComponent(OpenOrComponent); |
|
||||||
component = fixture.componentInstance; |
|
||||||
fixture.detectChanges(); |
|
||||||
}); |
|
||||||
|
|
||||||
it('should create', () => { |
|
||||||
expect(component).toBeTruthy(); |
|
||||||
}); |
|
||||||
}); |
|
@ -1,126 +0,0 @@ |
|||||||
import { HttpClient } from "@angular/common/http"; |
|
||||||
import { |
|
||||||
Component, |
|
||||||
OnInit, |
|
||||||
AfterViewInit, |
|
||||||
ViewChild, |
|
||||||
Inject, |
|
||||||
} from "@angular/core"; |
|
||||||
import { MatSnackBar } from "@angular/material/snack-bar"; |
|
||||||
import { MatDialogRef, MAT_DIALOG_DATA } from "@angular/material/dialog"; |
|
||||||
import { |
|
||||||
NzFormatEmitEvent, |
|
||||||
NzTreeComponent, |
|
||||||
NzTreeNodeOptions, |
|
||||||
} from "ng-zorro-antd/tree"; |
|
||||||
|
|
||||||
@Component({ |
|
||||||
selector: "app-open-or", |
|
||||||
templateUrl: "./open-or.component.html", |
|
||||||
styleUrls: ["./open-or.component.scss"], |
|
||||||
}) |
|
||||||
export class OpenOrComponent implements OnInit { |
|
||||||
constructor( |
|
||||||
private http: HttpClient, |
|
||||||
public snackBar: MatSnackBar, |
|
||||||
@Inject(MAT_DIALOG_DATA) public data: any, |
|
||||||
public dialogRef: MatDialogRef<OpenOrComponent> |
|
||||||
) {} |
|
||||||
@ViewChild("nzTreeComponent", { static: false }) |
|
||||||
nzTreeComponent!: NzTreeComponent; |
|
||||||
defaultCheckedKeys = []; |
|
||||||
defaultExpandedKeys = []; |
|
||||||
isLoading = false; |
|
||||||
nodes: NzTreeNodeOptions[] = []; |
|
||||||
ngOnInit(): void { |
|
||||||
this.getOrganizations(); |
|
||||||
} |
|
||||||
|
|
||||||
//获得所有组织机构
|
|
||||||
allorganizations = []; |
|
||||||
getOrganizations() { |
|
||||||
this.http.get("/api/Organizations").subscribe((data: any) => { |
|
||||||
this.allorganizations = data; |
|
||||||
this.getpresentOrganization(); |
|
||||||
}); |
|
||||||
} |
|
||||||
//得到当前单位所在组织机构的tree型数据
|
|
||||||
organizationName; |
|
||||||
getpresentOrganization() { |
|
||||||
let orData = JSON.parse(JSON.stringify(this.allorganizations)); |
|
||||||
orData.forEach((item) => { |
|
||||||
item.children = []; |
|
||||||
orData.forEach((element) => { |
|
||||||
if (element.parentId == item.id) { |
|
||||||
item.children.push(element); |
|
||||||
} |
|
||||||
}); |
|
||||||
}); |
|
||||||
orData.forEach((item) => { |
|
||||||
item.title = item.name; |
|
||||||
item.key = item.id; |
|
||||||
item.selectable = false; |
|
||||||
if (item.children.length === 0) { |
|
||||||
item.isLeaf = true; |
|
||||||
} |
|
||||||
}); |
|
||||||
this.http.get("/api/Account/Profiles").subscribe((data: any) => { |
|
||||||
this.organizationName = data.organizationName; |
|
||||||
if (this.organizationName) { |
|
||||||
orData.forEach((item) => { |
|
||||||
if (item.name == this.organizationName) { |
|
||||||
function lookForAllId(data = [], arr = []) { |
|
||||||
for (let item of data) { |
|
||||||
arr.push(item.id); |
|
||||||
if (item.children && item.children.length) |
|
||||||
lookForAllId(item.children, arr); |
|
||||||
} |
|
||||||
return arr; |
|
||||||
} |
|
||||||
|
|
||||||
function lookForNode(data, id, node = []) { |
|
||||||
for (let item of data) { |
|
||||||
if (item.id === id) { |
|
||||||
node.push(item); |
|
||||||
} else { |
|
||||||
if (item.children && item.children.length) { |
|
||||||
lookForNode(item.children, id, node); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
return node; |
|
||||||
} |
|
||||||
if (this.data.plan.publicOrganizationIds.length === 0) { |
|
||||||
this.defaultCheckedKeys = [...lookForAllId([item])]; |
|
||||||
} else { |
|
||||||
this.defaultCheckedKeys = this.data.plan.publicOrganizationIds; |
|
||||||
} |
|
||||||
|
|
||||||
this.nodes = [...[item]]; |
|
||||||
} |
|
||||||
}); |
|
||||||
} |
|
||||||
}); |
|
||||||
} |
|
||||||
save() { |
|
||||||
let ids = |
|
||||||
this.nzTreeComponent.getCheckedNodeList().map((item) => { |
|
||||||
return item.key; |
|
||||||
}) || []; |
|
||||||
if (ids.length === 0) { |
|
||||||
this.snackBar.open("至少选择一个队站公开", "确定", { |
|
||||||
verticalPosition: "top", |
|
||||||
duration: 3000, |
|
||||||
}); |
|
||||||
} |
|
||||||
this.http |
|
||||||
.put(`/api/PlanAudits/${this.data.plan.id}/Public`, ids) |
|
||||||
.subscribe((data) => { |
|
||||||
this.snackBar.open("预案已公开", "确定", { |
|
||||||
verticalPosition: "top", |
|
||||||
duration: 3000, |
|
||||||
}); |
|
||||||
this.dialogRef.close("公开成功"); |
|
||||||
}); |
|
||||||
} |
|
||||||
} |
|
@ -1,35 +0,0 @@ |
|||||||
<h2 mat-dialog-title>新增预案推演</h2> |
|
||||||
<div class="box"> |
|
||||||
<div class="contentItem"> |
|
||||||
<div class="content"> |
|
||||||
<div> |
|
||||||
<span class="name">预案名称:</span> |
|
||||||
<input name="planname" [(ngModel)]="planname" nz-input placeholder="请输入预案名称" /> |
|
||||||
</div> |
|
||||||
<div> |
|
||||||
<span class="name">单位名称:</span> |
|
||||||
<nz-select nzShowSearch nzServerSearch (nzOnSearch)="search($event)" [(ngModel)]="unitid" |
|
||||||
(nzScrollToBottom)="loadMore()" nzPlaceHolder="请选择单位" nzAllowClear |
|
||||||
[nzDropdownRender]="renderTemplate"> |
|
||||||
<nz-option *ngFor="let o of optionList" [nzValue]="o.id" [nzLabel]="o.name"></nz-option> |
|
||||||
</nz-select> |
|
||||||
<ng-template #renderTemplate> |
|
||||||
<nz-spin *ngIf="isLoading"></nz-spin> |
|
||||||
</ng-template> |
|
||||||
</div> |
|
||||||
<div> |
|
||||||
<span class="name">创建机构:</span> |
|
||||||
<nz-tree-select [nzDropdownClassName]="'maxHeightTreeSelect'" [nzNodes]="nodes" nzShowSearch |
|
||||||
nzPlaceHolder="请选择创建人" [(ngModel)]="orid"> |
|
||||||
</nz-tree-select> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
<!-- <div class="mask" *ngIf="isLoading"> |
|
||||||
<mat-spinner [diameter]="30"></mat-spinner> |
|
||||||
</div> --> |
|
||||||
</div> |
|
||||||
<mat-dialog-actions align="end"> |
|
||||||
<button mat-button mat-dialog-close [disabled]="isLoading">取消</button> |
|
||||||
<button mat-button cdkFocusInitial (click)="save()" [disabled]="isLoading">确定</button> |
|
||||||
</mat-dialog-actions> |
|
@ -1,122 +0,0 @@ |
|||||||
.box { |
|
||||||
width: 100%; |
|
||||||
position: relative; |
|
||||||
|
|
||||||
.contentItem { |
|
||||||
display: flex; |
|
||||||
margin: 6px 0; |
|
||||||
// border-bottom: 1px dashed rgb(180, 178, 178); |
|
||||||
|
|
||||||
.title { |
|
||||||
width: 75px; |
|
||||||
color: #1890ff; |
|
||||||
display: flex; |
|
||||||
align-items: center; |
|
||||||
} |
|
||||||
|
|
||||||
.content { |
|
||||||
flex: 1; |
|
||||||
display: flex; |
|
||||||
flex-wrap: wrap; |
|
||||||
flex-direction: column; |
|
||||||
|
|
||||||
div { |
|
||||||
display: flex; |
|
||||||
align-items: center; |
|
||||||
|
|
||||||
input { |
|
||||||
flex: 1; |
|
||||||
} |
|
||||||
|
|
||||||
nz-select, |
|
||||||
nz-tree-select { |
|
||||||
width: 72.5%; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
div { |
|
||||||
margin-bottom: 8px; |
|
||||||
|
|
||||||
.name { |
|
||||||
display: inline-block; |
|
||||||
width: 70px; |
|
||||||
margin-right: 3px; |
|
||||||
text-align: right; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
.textbox { |
|
||||||
height: 32px; |
|
||||||
line-height: 32px; |
|
||||||
width: 50%; |
|
||||||
white-space: nowrap; |
|
||||||
overflow: hidden; |
|
||||||
text-overflow: ellipsis; |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
.uploadbox { |
|
||||||
position: relative; |
|
||||||
display: flex; |
|
||||||
align-items: center; |
|
||||||
|
|
||||||
input { |
|
||||||
width: 88px; |
|
||||||
height: 32px; |
|
||||||
position: absolute; |
|
||||||
left: 0; |
|
||||||
top: 0; |
|
||||||
opacity: 0; |
|
||||||
z-index: 2; |
|
||||||
cursor: pointer; |
|
||||||
} |
|
||||||
|
|
||||||
button { |
|
||||||
z-index: 1; |
|
||||||
cursor: pointer; |
|
||||||
} |
|
||||||
|
|
||||||
.imgbox { |
|
||||||
height: 100%; |
|
||||||
display: flex; |
|
||||||
align-items: center; |
|
||||||
|
|
||||||
li { |
|
||||||
display: flex; |
|
||||||
align-items: center; |
|
||||||
position: relative; |
|
||||||
} |
|
||||||
|
|
||||||
img { |
|
||||||
width: 50px; |
|
||||||
height: 50px; |
|
||||||
margin: 0 5px; |
|
||||||
cursor: pointer; |
|
||||||
} |
|
||||||
|
|
||||||
.close { |
|
||||||
position: absolute; |
|
||||||
right: 0; |
|
||||||
top: 0; |
|
||||||
font-size: 15px; |
|
||||||
cursor: pointer; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
.mask { |
|
||||||
position: absolute; |
|
||||||
width: 100%; |
|
||||||
height: 100%; |
|
||||||
left: 0; |
|
||||||
top: 0; |
|
||||||
background: rgba(0, 0, 0, 0.2); |
|
||||||
display: flex; |
|
||||||
justify-content: center; |
|
||||||
align-items: center; |
|
||||||
z-index: 3; |
|
||||||
} |
|
||||||
} |
|
@ -1,25 +0,0 @@ |
|||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing'; |
|
||||||
|
|
||||||
import { AddPlanComponent } from './add-plan.component'; |
|
||||||
|
|
||||||
describe('AddPlanComponent', () => { |
|
||||||
let component: AddPlanComponent; |
|
||||||
let fixture: ComponentFixture<AddPlanComponent>; |
|
||||||
|
|
||||||
beforeEach(async(() => { |
|
||||||
TestBed.configureTestingModule({ |
|
||||||
declarations: [ AddPlanComponent ] |
|
||||||
}) |
|
||||||
.compileComponents(); |
|
||||||
})); |
|
||||||
|
|
||||||
beforeEach(() => { |
|
||||||
fixture = TestBed.createComponent(AddPlanComponent); |
|
||||||
component = fixture.componentInstance; |
|
||||||
fixture.detectChanges(); |
|
||||||
}); |
|
||||||
|
|
||||||
it('should create', () => { |
|
||||||
expect(component).toBeTruthy(); |
|
||||||
}); |
|
||||||
}); |
|
@ -1,103 +0,0 @@ |
|||||||
import { HttpClient } from "@angular/common/http"; |
|
||||||
import { Component, OnInit, Inject } from "@angular/core"; |
|
||||||
import { MatDialogRef, MAT_DIALOG_DATA } from "@angular/material/dialog"; |
|
||||||
import { DatePipe } from "@angular/common"; |
|
||||||
import { MatSnackBar } from "@angular/material/snack-bar"; |
|
||||||
import { Observable } from "rxjs"; |
|
||||||
import { map } from "rxjs/operators"; |
|
||||||
@Component({ |
|
||||||
selector: "app-add-plan", |
|
||||||
templateUrl: "./add-plan.component.html", |
|
||||||
styleUrls: ["./add-plan.component.scss"], |
|
||||||
providers: [DatePipe], |
|
||||||
}) |
|
||||||
export class AddPlanComponent implements OnInit { |
|
||||||
constructor( |
|
||||||
public dialogRef: MatDialogRef<AddPlanComponent>, |
|
||||||
@Inject(MAT_DIALOG_DATA) public data: any, |
|
||||||
private http: HttpClient, |
|
||||||
public snackBar: MatSnackBar |
|
||||||
) {} |
|
||||||
|
|
||||||
ngOnInit(): void { |
|
||||||
console.log("传递的数据", this.data); |
|
||||||
this.nodes = this.data; |
|
||||||
this.getCompanies(); |
|
||||||
} |
|
||||||
|
|
||||||
isLoading = false; |
|
||||||
|
|
||||||
planname; |
|
||||||
unitid; |
|
||||||
orid; |
|
||||||
optionList: string[] = []; |
|
||||||
PageNumber = 1; |
|
||||||
PageSize = 10; |
|
||||||
IntegrityScoreMin = 0; |
|
||||||
IntegrityScoreMax = 1; |
|
||||||
loadMore(): void { |
|
||||||
console.log("需要加载下一页了"); |
|
||||||
this.PageNumber += 1; |
|
||||||
this.getCompanies(); |
|
||||||
} |
|
||||||
|
|
||||||
getCompanies(name?: string) { |
|
||||||
this.isLoading = true; |
|
||||||
let params: any = { |
|
||||||
Name: name || "", |
|
||||||
PageNumber: this.PageNumber, |
|
||||||
PageSize: this.PageSize, |
|
||||||
IntegrityScoreMin: this.IntegrityScoreMin, |
|
||||||
IntegrityScoreMax: this.IntegrityScoreMax, |
|
||||||
}; |
|
||||||
this.http |
|
||||||
.get("/api/Companies", { params: params }) |
|
||||||
.subscribe((data: any) => { |
|
||||||
console.log("单位列表", data.items); |
|
||||||
this.isLoading = false; |
|
||||||
this.optionList = [...this.optionList, ...data.items]; |
|
||||||
}); |
|
||||||
} |
|
||||||
|
|
||||||
Name; |
|
||||||
search($event) { |
|
||||||
console.log($event); |
|
||||||
this.Name = $event; |
|
||||||
this.PageNumber = 1; |
|
||||||
this.optionList = []; |
|
||||||
this.getCompanies($event); |
|
||||||
} |
|
||||||
|
|
||||||
nodes; |
|
||||||
|
|
||||||
save() { |
|
||||||
console.log(1, this.planname); |
|
||||||
console.log(2, this.unitid); |
|
||||||
console.log(3, this.orid); |
|
||||||
// return;
|
|
||||||
if (!this.planname || !this.unitid) { |
|
||||||
this.snackBar.open("请输入完整", "确定", { |
|
||||||
verticalPosition: "top", |
|
||||||
duration: 3000, |
|
||||||
}); |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
let body: any = { |
|
||||||
name: this.planname, |
|
||||||
planCategory: 9, //temp
|
|
||||||
planMode: 2, |
|
||||||
planType: 1, |
|
||||||
exCreatorId: this.orid ? this.orid : "", |
|
||||||
}; |
|
||||||
this.http |
|
||||||
.post(`/api/PlanComponents2D?companyId=${this.unitid}`, body) |
|
||||||
.subscribe((data: any) => { |
|
||||||
this.snackBar.open("创建成功", "确定", { |
|
||||||
verticalPosition: "top", |
|
||||||
duration: 3000, |
|
||||||
}); |
|
||||||
this.dialogRef.close(data); |
|
||||||
}); |
|
||||||
} |
|
||||||
} |
|
@ -1,62 +0,0 @@ |
|||||||
<!-- <p>六熟悉记录</p> --> |
|
||||||
<div class="box"> |
|
||||||
<div class="header"> |
|
||||||
<form class="queryBox" (ngSubmit)="onSubmit()"> |
|
||||||
<div class="queryField"> |
|
||||||
<span style="width: 108px;">预案名称:</span> |
|
||||||
<input name="name" nz-input placeholder="请输入预案名称" [(ngModel)]="name" /> |
|
||||||
</div> |
|
||||||
<div class="queryField"> |
|
||||||
<span style="width: 108px;">单位名称:</span> |
|
||||||
<input name="companyname" nz-input placeholder="请输入单位名称" [(ngModel)]="companyname" /> |
|
||||||
</div> |
|
||||||
<div class="queryField" style="margin-right: 35px;"> |
|
||||||
<span style="width: 153px;">创建人(消防救援站):</span> |
|
||||||
<nz-tree-select [nzDropdownClassName]="'maxHeightTreeSelect'" style="width: 250px" |
|
||||||
[nzExpandedKeys]="expandKeys" [nzNodes]="nodes" nzShowSearch nzPlaceHolder="请选择组织机构" name="orId" |
|
||||||
[(ngModel)]="orId"> |
|
||||||
</nz-tree-select> |
|
||||||
</div> |
|
||||||
<!-- <div class="queryField"> |
|
||||||
<span>熟悉时间:</span> |
|
||||||
<nz-range-picker name="time" [(ngModel)]="time"></nz-range-picker> |
|
||||||
</div> --> |
|
||||||
<div class="queryField btnbox"> |
|
||||||
<button nz-button nzType="primary">查询</button> |
|
||||||
<button nz-button type="button" nzType="default" (click)="reset()">重置</button> |
|
||||||
</div> |
|
||||||
</form> |
|
||||||
</div> |
|
||||||
<div class="tablebox"> |
|
||||||
<button nz-button nzType="primary" class="add" (click)="add()">新增</button> |
|
||||||
<table mat-table [dataSource]="tabledataSource" class="mat-elevation-z8"> |
|
||||||
<ng-container matColumnDef="planname"> |
|
||||||
<th mat-header-cell *matHeaderCellDef>预案名称</th> |
|
||||||
<td mat-cell *matCellDef="let element">{{element.name}}</td> |
|
||||||
</ng-container> |
|
||||||
<ng-container matColumnDef="name"> |
|
||||||
<th mat-header-cell *matHeaderCellDef>单位名称</th> |
|
||||||
<td mat-cell *matCellDef="let element">{{element.companyName}}</td> |
|
||||||
</ng-container> |
|
||||||
<ng-container matColumnDef="people"> |
|
||||||
<th mat-header-cell *matHeaderCellDef>创建人</th> |
|
||||||
<td mat-cell *matCellDef="let element">{{element.committerOrganizationName}}</td> |
|
||||||
</ng-container> |
|
||||||
<ng-container matColumnDef="time"> |
|
||||||
<th mat-header-cell *matHeaderCellDef>创建时间</th> |
|
||||||
<td mat-cell *matCellDef="let element">{{element.creationTime | date:'yyyy-MM-dd HH:mm'}}</td> |
|
||||||
</ng-container> |
|
||||||
<ng-container matColumnDef="operate"> |
|
||||||
<th mat-header-cell *matHeaderCellDef style="width: 200px;">操作</th> |
|
||||||
<td mat-cell *matCellDef="let element" class="operate"> |
|
||||||
<span (click)="look(element)">查看</span> |
|
||||||
<span (click)="delete(element)">删除</span> |
|
||||||
</td> |
|
||||||
</ng-container> |
|
||||||
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr> |
|
||||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr> |
|
||||||
</table> |
|
||||||
<mat-paginator [length]="length" [pageSize]="pageSize" (page)="chagePage($event)"> |
|
||||||
</mat-paginator> |
|
||||||
</div> |
|
||||||
</div> |
|
@ -1,63 +0,0 @@ |
|||||||
.box { |
|
||||||
height: 100%; |
|
||||||
overflow: auto; |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
.header { |
|
||||||
width: 100%; |
|
||||||
box-sizing: border-box; |
|
||||||
padding: 20px 30px 8px 30px; |
|
||||||
|
|
||||||
.queryBox { |
|
||||||
display: flex; |
|
||||||
flex-wrap: wrap; |
|
||||||
align-items: center; |
|
||||||
|
|
||||||
.queryField { |
|
||||||
display: flex; |
|
||||||
align-items: center; |
|
||||||
margin-right: 20px; |
|
||||||
|
|
||||||
span { |
|
||||||
display: inline-block; |
|
||||||
width: 80px; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
.btnbox { |
|
||||||
button { |
|
||||||
margin-right: 12px; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
.tablebox { |
|
||||||
.add{ |
|
||||||
margin-left: 30px; |
|
||||||
} |
|
||||||
table { |
|
||||||
width: 100%; |
|
||||||
margin-top: 15px; |
|
||||||
} |
|
||||||
|
|
||||||
mat-paginator { |
|
||||||
width: 100%; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
.mat-header-cell, |
|
||||||
.mat-cell { |
|
||||||
text-align: center; |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
.operate { |
|
||||||
span { |
|
||||||
color: #40a9ff; |
|
||||||
cursor: pointer; |
|
||||||
margin: 0 3px; |
|
||||||
} |
|
||||||
} |
|
@ -1,25 +0,0 @@ |
|||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing'; |
|
||||||
|
|
||||||
import { PlanDeductionComponent } from './plan-deduction.component'; |
|
||||||
|
|
||||||
describe('PlanDeductionComponent', () => { |
|
||||||
let component: PlanDeductionComponent; |
|
||||||
let fixture: ComponentFixture<PlanDeductionComponent>; |
|
||||||
|
|
||||||
beforeEach(async(() => { |
|
||||||
TestBed.configureTestingModule({ |
|
||||||
declarations: [ PlanDeductionComponent ] |
|
||||||
}) |
|
||||||
.compileComponents(); |
|
||||||
})); |
|
||||||
|
|
||||||
beforeEach(() => { |
|
||||||
fixture = TestBed.createComponent(PlanDeductionComponent); |
|
||||||
component = fixture.componentInstance; |
|
||||||
fixture.detectChanges(); |
|
||||||
}); |
|
||||||
|
|
||||||
it('should create', () => { |
|
||||||
expect(component).toBeTruthy(); |
|
||||||
}); |
|
||||||
}); |
|
@ -1,180 +0,0 @@ |
|||||||
import { Component, OnInit, ViewChild } from "@angular/core"; |
|
||||||
import { HttpClient } from "@angular/common/http"; |
|
||||||
import { MatPaginator } from "@angular/material/paginator"; |
|
||||||
import { PageEvent } from "@angular/material/paginator"; |
|
||||||
import { MatDialog } from "@angular/material/dialog"; |
|
||||||
import { MatSnackBar } from "@angular/material/snack-bar"; |
|
||||||
import { DatePipe } from "@angular/common"; |
|
||||||
import { AddPlanComponent } from "./add-plan/add-plan.component"; |
|
||||||
|
|
||||||
@Component({ |
|
||||||
selector: "app-plan-deduction", |
|
||||||
templateUrl: "./plan-deduction.component.html", |
|
||||||
styleUrls: ["./plan-deduction.component.scss"], |
|
||||||
providers: [DatePipe], |
|
||||||
}) |
|
||||||
export class PlanDeductionComponent implements OnInit { |
|
||||||
constructor( |
|
||||||
private http: HttpClient, |
|
||||||
public dialog: MatDialog, |
|
||||||
public snackBar: MatSnackBar, |
|
||||||
private datePipe: DatePipe |
|
||||||
) {} |
|
||||||
|
|
||||||
//分页
|
|
||||||
@ViewChild(MatPaginator, { static: true }) |
|
||||||
pageEvent: PageEvent; |
|
||||||
paginator: MatPaginator; |
|
||||||
displayedColumns: string[] = [ |
|
||||||
"planname", |
|
||||||
"name", |
|
||||||
"people", |
|
||||||
"time", |
|
||||||
"operate", |
|
||||||
]; |
|
||||||
tabledataSource: any; //表格数据
|
|
||||||
|
|
||||||
ngOnInit(): void { |
|
||||||
this.getOrganizations(); |
|
||||||
} |
|
||||||
|
|
||||||
//获得所有组织机构
|
|
||||||
allorganizations: any; //所有组织机构
|
|
||||||
getOrganizations() { |
|
||||||
this.http.get("/api/Organizations").subscribe((data: any) => { |
|
||||||
this.allorganizations = data; |
|
||||||
this.getpresentOrganization(); |
|
||||||
}); |
|
||||||
} |
|
||||||
|
|
||||||
//得到当前单位所在组织机构的tree型数据
|
|
||||||
expandKeys = []; |
|
||||||
nodes = []; |
|
||||||
organizationId; |
|
||||||
getpresentOrganization() { |
|
||||||
this.allorganizations.forEach((item) => { |
|
||||||
item.key = item.id; |
|
||||||
item.title = item.name; |
|
||||||
item.children = []; |
|
||||||
this.allorganizations.forEach((element) => { |
|
||||||
if (element.parentId == item.id) { |
|
||||||
item.children.push(element); |
|
||||||
} |
|
||||||
if (item.children.length === 0) { |
|
||||||
item.isLeaf = true; |
|
||||||
} else { |
|
||||||
item.isLeaf = false; |
|
||||||
} |
|
||||||
}); |
|
||||||
}); |
|
||||||
this.http.get("/api/Account/Profiles").subscribe((data: any) => { |
|
||||||
this.allorganizations.forEach((item) => { |
|
||||||
if (item.name == data.organizationName) { |
|
||||||
this.expandKeys = [item.id]; |
|
||||||
this.organizationId = item.id; |
|
||||||
// this.orId = item.id;
|
|
||||||
this.nodes = [...[item]]; |
|
||||||
this.getTabledataSource(); |
|
||||||
} |
|
||||||
}); |
|
||||||
}); |
|
||||||
} |
|
||||||
|
|
||||||
length: any; //共多少条数据
|
|
||||||
pageSize: any = 10; //每页条数
|
|
||||||
PageNumber: any = 1; //第几页
|
|
||||||
getTabledataSource() { |
|
||||||
let params: any = { |
|
||||||
Name: this.name || "", |
|
||||||
CompanyName: this.companyname || "", |
|
||||||
CommitterOrganizationId: this.orId || "", |
|
||||||
PlanCategory: 9, |
|
||||||
PageNumber: this.PageNumber, |
|
||||||
PageSize: this.pageSize, |
|
||||||
}; |
|
||||||
this.http |
|
||||||
.get("/api/PlanComponents/GetAll", { params: params }) |
|
||||||
.subscribe((data: any) => { |
|
||||||
console.log("预案数据", data); |
|
||||||
this.tabledataSource = data.items; |
|
||||||
this.length = data.totalCount; |
|
||||||
}); |
|
||||||
} |
|
||||||
|
|
||||||
//分页事件
|
|
||||||
chagePage(e) { |
|
||||||
this.PageNumber = e.pageIndex + 1; |
|
||||||
this.getTabledataSource(); |
|
||||||
} |
|
||||||
|
|
||||||
name; |
|
||||||
companyname; |
|
||||||
orId; |
|
||||||
time; |
|
||||||
//查询
|
|
||||||
onSubmit() { |
|
||||||
this.PageNumber = 1; |
|
||||||
this.pageEvent.pageIndex = 0; |
|
||||||
this.getTabledataSource(); |
|
||||||
} |
|
||||||
|
|
||||||
//重置
|
|
||||||
reset() { |
|
||||||
this.name = ""; |
|
||||||
this.companyname = ""; |
|
||||||
this.orId = ""; |
|
||||||
this.onSubmit(); |
|
||||||
} |
|
||||||
|
|
||||||
add() { |
|
||||||
const dialogRef = this.dialog.open(AddPlanComponent, { |
|
||||||
width: "400px", |
|
||||||
data: this.nodes, |
|
||||||
}); |
|
||||||
dialogRef.afterClosed().subscribe((data) => { |
|
||||||
if (data) { |
|
||||||
console.log("创建成功", data); |
|
||||||
this.onSubmit(); |
|
||||||
sessionStorage.setItem("planId", data.id); |
|
||||||
sessionStorage.setItem("companyId", data.plan.companyId); |
|
||||||
sessionStorage.setItem( |
|
||||||
"buildingTypeId", |
|
||||||
data.plan.company.buildingTypes[0].id |
|
||||||
); |
|
||||||
sessionStorage.setItem("editable", "1"); |
|
||||||
let orId = data.plan.company.organizationId; |
|
||||||
let orName = data.plan.company.organizationName; |
|
||||||
window.open( |
|
||||||
`/keyUnit/editunitinfo?id=${data.plan.company.id}&orName=${orName}&orId=${orId}` |
|
||||||
); |
|
||||||
} |
|
||||||
}); |
|
||||||
} |
|
||||||
|
|
||||||
look(element) { |
|
||||||
console.log(element); |
|
||||||
sessionStorage.setItem("planId", element.id); |
|
||||||
sessionStorage.setItem("companyId", element.companyId); |
|
||||||
sessionStorage.setItem( |
|
||||||
"buildingTypeId", |
|
||||||
element.company.buildingTypes[0].id |
|
||||||
); |
|
||||||
sessionStorage.setItem("editable", "1"); |
|
||||||
let orId = element.company.organizationId; |
|
||||||
let orName = element.company.organizationName; |
|
||||||
window.open( |
|
||||||
`/keyUnit/editunitinfo?id=${element.companyId}&orName=${orName}&orId=${orId}` |
|
||||||
); |
|
||||||
} |
|
||||||
|
|
||||||
delete(element) { |
|
||||||
if (confirm("确认删除此预案吗")) { |
|
||||||
this.http |
|
||||||
.delete(`/api/PlanComponents2D/${element.id}`) |
|
||||||
.subscribe((data: any) => { |
|
||||||
alert("删除成功"); |
|
||||||
this.getTabledataSource(); |
|
||||||
}); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue