| @@ -9,9 +9,20 @@ | |||
| margin-bottom: 0.5rem; | |||
| .card-content-title { | |||
| display: flex; | |||
| margin-bottom: 0.5rem; | |||
| font-size: 18px; | |||
| font-weight: 600; | |||
| color: #74FAFB; | |||
| .card-content-l { | |||
| align-self: flex-start; | |||
| flex: 1; | |||
| /* 占据剩余空间 */ | |||
| } | |||
| .card-content-r { | |||
| align-self: flex-end; | |||
| } | |||
| } | |||
| } | |||
| @@ -1,5 +1,8 @@ | |||
| // parent.component.ts | |||
| import { CommonModule } from '@angular/common'; | |||
| import { Component, Input } from '@angular/core'; | |||
| import { SHARED_IMPORTS } from '@shared'; | |||
| import { NzIconModule } from 'ng-zorro-antd/icon'; | |||
| @Component({ | |||
| selector: 'data-v-card', | |||
| @@ -7,12 +10,22 @@ import { Component, Input } from '@angular/core'; | |||
| template: ` | |||
| <div class="card-content"> | |||
| <!-- <img src="assets/dashboard/dashboard_card_bg.jpg" style="width: 100%;" /> --> | |||
| <div class="card-content-title">{{ title }}</div> | |||
| <div class="card-content-title"> | |||
| <div class="card-content-l">{{ title }}</div> | |||
| <div *ngIf="showSetting" class="card-content-r"> | |||
| <span nz-icon nzType="setting" nzTheme="outline"></span> | |||
| </div> | |||
| </div> | |||
| <ng-content></ng-content> | |||
| </div> | |||
| `, | |||
| styleUrls: ['./card.component.less'] | |||
| styleUrls: ['./card.component.less'], | |||
| imports: [NzIconModule, CommonModule, ...SHARED_IMPORTS], | |||
| }) | |||
| export class DataVCardComponent { | |||
| @Input() showSetting = false; | |||
| @Input() title: string = ''; | |||
| } | |||
| @@ -28,11 +28,18 @@ export class DataVNavigationComponent implements OnInit { | |||
| menuList: any = [ | |||
| { | |||
| code: '01', | |||
| text: '我的工作站' | |||
| text: '我的工作站', | |||
| url: '/' | |||
| }, | |||
| { | |||
| code: '02', | |||
| text: '化验总览' | |||
| text: '化验总览', | |||
| url: '/data-v/s1' | |||
| }, | |||
| { | |||
| code: '03', | |||
| text: '3D', | |||
| url: '/data-v/threejs' | |||
| }, | |||
| { | |||
| text: '...' | |||
| @@ -54,12 +61,16 @@ export class DataVNavigationComponent implements OnInit { | |||
| // 新的 navigate 方法 | |||
| navigate(menu: any) { | |||
| if (menu.code == '01') { | |||
| // 你可能想根据菜单项来确定导航的路径 | |||
| this.router.navigateByUrl('/'); // 将'/data-v/s1'替换为正确的路径 | |||
| } else if (menu.code == '02') { | |||
| // 你可能想根据菜单项来确定导航的路径 | |||
| this.router.navigateByUrl('/data-v/s1'); // 将'/data-v/s1'替换为正确的路径 | |||
| if (menu.url) { | |||
| this.router.navigateByUrl(menu.url); | |||
| } | |||
| // if (menu.code == '01') { | |||
| // // 你可能想根据菜单项来确定导航的路径 | |||
| // this.router.navigateByUrl('/'); // 将'/data-v/s1'替换为正确的路径 | |||
| // } else if (menu.code == '02') { | |||
| // // 你可能想根据菜单项来确定导航的路径 | |||
| // this.router.navigateByUrl('/data-v/s1'); // 将'/data-v/s1'替换为正确的路径 | |||
| // } | |||
| } | |||
| } | |||
| @@ -4,10 +4,12 @@ import { DataVUserComponent } from './user/user.component'; | |||
| import { DataVDateComponent } from './date/date.component'; | |||
| import { DataVWorkstationComponent } from './workstation/workstation.component'; | |||
| import { DataVS1Component } from './s1/s1.component'; | |||
| import { DataVThreejsComponent } from './threejs/threejs.component'; | |||
| export const routes: Routes = [ | |||
| { | |||
| path: 's1', | |||
| component: DataVS1Component | |||
| } | |||
| ]; | |||
| , | |||
| { path: 'threejs', component: DataVThreejsComponent }]; | |||
| @@ -31,14 +31,15 @@ | |||
| <data-v-card title="" style="margin-top: 1rem;"> | |||
| <!-- <div class="progress-display">完成样品数量/时长 16/8</div> --> | |||
| <div class="progress-container"> | |||
| <span class="status-text" style="width: 8rem;">化验效率:</span> | |||
| <nz-progress [nzPercent]="64" style="width: 100%; "></nz-progress> | |||
| <span class="status-text">化验效率:</span> | |||
| <nz-progress [nzPercent]="64" [nzStrokeColor]="'#74FAFB'" style="width: 100%; "></nz-progress> | |||
| <span class="status-ext-text">(16/25)</span> | |||
| </div> | |||
| <!-- <div class="progress-display">完成样品数量/时长 16/8</div> --> | |||
| <div class="progress-container"> | |||
| <span class="status-text" style="width: 8rem;">完 成 率 :</span> | |||
| <nz-progress [nzPercent]="60" style="width: 100%;"></nz-progress> | |||
| <div class="progress-container mt-sm"> | |||
| <span class="status-text">完 成 率 :</span> | |||
| <nz-progress [nzPercent]="60" [nzStrokeColor]="'#74FAFB'" style="width: 100%;"></nz-progress> | |||
| <span class="status-ext-text">(12/20)</span> | |||
| </div> | |||
| </data-v-card> | |||
| </div> | |||
| @@ -79,7 +80,7 @@ | |||
| </div> | |||
| <div nz-col nzSpan="8"> | |||
| <data-v-card title="化验结果"> | |||
| <data-v-card title="化验结果" [showSetting]="true"> | |||
| <div class="centered-element"> | |||
| <div id="d1" style="width: 26rem; height: 11rem;"> | |||
| </div> | |||
| @@ -88,21 +89,6 @@ | |||
| <div id="d2" style="width: 26rem; height: 11rem; margin-top: 0.4rem;"> | |||
| </div> | |||
| </div> | |||
| <!-- <div class="centered-element"> | |||
| <div id="d3" style="width: 26rem; height: 12rem; margin-top: 1rem;"></div> | |||
| </div> --> | |||
| <!-- <div class="statistic-item-container"> | |||
| <label nz-checkbox [ngModel]="'true'" class="white-color-theme">全水</label> | |||
| <label nz-checkbox [ngModel]="'true'" class="white-color-theme">热值</label> | |||
| <label nz-checkbox [ngModel]="'true'" class="white-color-theme">全硫</label> | |||
| <label nz-checkbox [ngModel]="'false'" class="white-color-theme">内水</label> | |||
| <label nz-checkbox [ngModel]="'false'" class="white-color-theme">灰分</label> | |||
| <label nz-checkbox [ngModel]="'false'" class="white-color-theme">挥发分</label> | |||
| <label nz-checkbox [ngModel]="'false'" class="white-color-theme">碳</label> | |||
| <label nz-checkbox [ngModel]="'false'" class="white-color-theme">氢</label> | |||
| <label nz-checkbox [ngModel]="'false'" class="white-color-theme">氮</label> | |||
| </div> --> | |||
| <div nz-row style="justify-content: center;align-items: center;margin-top: 0.4rem;"> | |||
| <div nz-col nzSpan="12"> | |||
| @@ -48,17 +48,26 @@ | |||
| } | |||
| } | |||
| .status-text { | |||
| margin-left: 6px; | |||
| /* 调整文字与圆形之间的间距 */ | |||
| font-size: 16px; | |||
| font-weight: 600; | |||
| color: #74FAFB; | |||
| } | |||
| .progress-container { | |||
| display: flex; | |||
| color: white; | |||
| .status-text { | |||
| width: 8rem; | |||
| margin-left: 6px; | |||
| /* 调整文字与圆形之间的间距 */ | |||
| font-size: 16px; | |||
| font-weight: 600; | |||
| color: #74FAFB; | |||
| } | |||
| .status-ext-text { | |||
| margin-top: 3px; | |||
| /* 将文本转换为行内块元素 */ | |||
| font-size: 12px; | |||
| } | |||
| } | |||
| .progress-display { | |||
| @@ -74,8 +83,4 @@ | |||
| .white-color-theme { | |||
| color: #74FAFB; | |||
| } | |||
| .ant-progress-text { | |||
| color: red; | |||
| } | |||
| @@ -367,7 +367,7 @@ export class DataVS1Component implements OnInit { | |||
| trigger: 'axis' | |||
| }, | |||
| legend: { | |||
| data: ['超差样数量', '不合格样数量'] | |||
| data: ['测量值', '上限值', '下限值',] | |||
| }, | |||
| grid: { | |||
| left: '3%', | |||
| @@ -398,31 +398,45 @@ export class DataVS1Component implements OnInit { | |||
| } | |||
| ], | |||
| series: [ | |||
| // { | |||
| // name: '超差样数量', | |||
| // type: 'line', | |||
| // data: [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3], | |||
| // markPoint: { | |||
| // data: [ | |||
| // { type: 'max', name: 'Max' }, | |||
| // { type: 'min', name: 'Min' } | |||
| // ] | |||
| // } | |||
| // }, | |||
| { | |||
| name: '超差样数量', | |||
| name: '测量值', | |||
| type: 'line', | |||
| data: [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3], | |||
| markPoint: { | |||
| data: [ | |||
| { type: 'max', name: 'Max' }, | |||
| { type: 'min', name: 'Min' } | |||
| ] | |||
| } | |||
| }, | |||
| { | |||
| name: '不合格样数量', | |||
| type: 'bar', | |||
| data: [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3], | |||
| data: [100, 155, 139, 199, 220, 160, 120, 182.2, 150, 155, 160, 180], | |||
| markPoint: { | |||
| data: [ | |||
| { name: 'Max', value: 182.2, xAxis: 7, yAxis: 183 }, | |||
| { name: 'Min', value: 2.3, xAxis: 11, yAxis: 3 } | |||
| { name: 'Max', value: 220, xAxis: 4, yAxis: 220 }, | |||
| { name: 'Min', value: 100, xAxis: 0, yAxis: 100 } | |||
| ] | |||
| }, | |||
| markLine: { | |||
| data: [{ type: 'average', name: 'Avg' }] | |||
| } | |||
| } | |||
| }, | |||
| { | |||
| name: '上限值', | |||
| symbolSize: 5, | |||
| data: [200, 255, 239, 299, 200, 260, 220, 282.2, 250, 255, 260, 210 | |||
| ], | |||
| type: 'scatter' | |||
| }, | |||
| { | |||
| name: '下限值', | |||
| symbolSize: 5, | |||
| data: [50, 55, 39, 99, 120, 60, 20, 82.2, 50, 55, 60, 80 | |||
| ], | |||
| type: 'scatter' | |||
| }, | |||
| ] | |||
| }; | |||
| @@ -432,6 +446,12 @@ export class DataVS1Component implements OnInit { | |||
| text: '热值', | |||
| subtext: '(kg/kg)' | |||
| }, | |||
| grid: { | |||
| left: '3%', | |||
| right: '3%', | |||
| bottom: '3%', | |||
| containLabel: true | |||
| }, | |||
| tooltip: { | |||
| trigger: 'axis' | |||
| }, | |||
| @@ -0,0 +1 @@ | |||
| <iframe src="http://112.33.111.160:8083/" width="100%" height="650px" style="border: 0;"></iframe> | |||
| @@ -0,0 +1,19 @@ | |||
| import { Component, OnInit, ViewChild, inject } from '@angular/core'; | |||
| import { STColumn, STComponent } from '@delon/abc/st'; | |||
| import { SFSchema } from '@delon/form'; | |||
| import { ModalHelper, _HttpClient } from '@delon/theme'; | |||
| import { SHARED_IMPORTS } from '@shared'; | |||
| @Component({ | |||
| selector: 'app-data-v-threejs', | |||
| standalone: true, | |||
| imports: [...SHARED_IMPORTS], | |||
| templateUrl: './threejs.component.html', | |||
| styleUrls: ['./threejs.component.less'] | |||
| }) | |||
| export class DataVThreejsComponent implements OnInit { | |||
| private readonly http = inject(_HttpClient); | |||
| private readonly modal = inject(ModalHelper); | |||
| ngOnInit(): void { } | |||
| } | |||
| @@ -24,6 +24,7 @@ | |||
| } | |||
| .ag-theme-datav { | |||
| // &:extend(.ag-theme-material); | |||
| --ag-border-color: #74FAFB; | |||
| --ag-foreground-color: #74FAFB; | |||
| --ag-background-color: #0A1632; | |||
| @@ -48,6 +48,56 @@ export class DataVWorkstationComponent implements OnInit, AfterViewInit { | |||
| bjmc: "报警5", bjms: "报警描述5", bjsj: "2024-1-5", gzyy: "-", clff: "-", tzsj: "2024-1-2", zycd: "一般", tzmc: '系统提示', | |||
| tznr: '账户登录', fj: "-" | |||
| }, | |||
| { | |||
| rwmc: "任务1", rwms: "任务描述1", kssj: "2024-1-1", jhwcsj: "2024-1-2", sfcq: '否', dqzt: "正常", dqjd: "节点1", sjwcsj: "2024-1-2", | |||
| bjmc: "报警1", bjms: "报警描述1", bjsj: "2024-1-1", gzyy: "-", clff: "-", tzsj: "2024-1-2", zycd: "一般", tzmc: '系统提示', | |||
| tznr: '账户登录', fj: "-" | |||
| }, | |||
| { | |||
| rwmc: "任务2", rwms: "任务描述2", kssj: "2024-1-2", jhwcsj: "2024-1-3", sfcq: '否', dqzt: "正常", dqjd: "节点2", sjwcsj: "2024-1-2", | |||
| bjmc: "报警2", bjms: "报警描述2", bjsj: "2024-1-2", gzyy: "-", clff: "-", tzsj: "2024-1-2", zycd: "一般", tzmc: '系统提示', | |||
| tznr: '账户登录', fj: "-" | |||
| }, | |||
| { | |||
| rwmc: "任务3", rwms: "任务描述3", kssj: "2024-1-3", jhwcsj: "2024-1-4", sfcq: '否', dqzt: "正常", dqjd: "节点3", sjwcsj: "2024-1-2", | |||
| bjmc: "报警3", bjms: "报警描述3", bjsj: "2024-1-3", gzyy: "-", clff: "-", tzsj: "2024-1-2", zycd: "一般", tzmc: '系统提示', | |||
| tznr: '账户登录', fj: "-" | |||
| }, | |||
| { | |||
| rwmc: "任务4", rwms: "任务描述4", kssj: "2024-1-4", jhwcsj: "2024-1-5", sfcq: '否', dqzt: "正常", dqjd: "节点4", sjwcsj: "2024-1-2", | |||
| bjmc: "报警4", bjms: "报警描述4", bjsj: "2024-1-4", gzyy: "-", clff: "-", tzsj: "2024-1-2", zycd: "一般", tzmc: '系统提示', | |||
| tznr: '账户登录', fj: "-" | |||
| }, | |||
| { | |||
| rwmc: "任务5", rwms: "任务描述5", kssj: "2024-1-5", jhwcsj: "2024-1-6", sfcq: '否', dqzt: "正常", dqjd: "节点5", sjwcsj: "2024-1-2", | |||
| bjmc: "报警5", bjms: "报警描述5", bjsj: "2024-1-5", gzyy: "-", clff: "-", tzsj: "2024-1-2", zycd: "一般", tzmc: '系统提示', | |||
| tznr: '账户登录', fj: "-" | |||
| }, | |||
| { | |||
| rwmc: "任务1", rwms: "任务描述1", kssj: "2024-1-1", jhwcsj: "2024-1-2", sfcq: '否', dqzt: "正常", dqjd: "节点1", sjwcsj: "2024-1-2", | |||
| bjmc: "报警1", bjms: "报警描述1", bjsj: "2024-1-1", gzyy: "-", clff: "-", tzsj: "2024-1-2", zycd: "一般", tzmc: '系统提示', | |||
| tznr: '账户登录', fj: "-" | |||
| }, | |||
| { | |||
| rwmc: "任务2", rwms: "任务描述2", kssj: "2024-1-2", jhwcsj: "2024-1-3", sfcq: '否', dqzt: "正常", dqjd: "节点2", sjwcsj: "2024-1-2", | |||
| bjmc: "报警2", bjms: "报警描述2", bjsj: "2024-1-2", gzyy: "-", clff: "-", tzsj: "2024-1-2", zycd: "一般", tzmc: '系统提示', | |||
| tznr: '账户登录', fj: "-" | |||
| }, | |||
| { | |||
| rwmc: "任务3", rwms: "任务描述3", kssj: "2024-1-3", jhwcsj: "2024-1-4", sfcq: '否', dqzt: "正常", dqjd: "节点3", sjwcsj: "2024-1-2", | |||
| bjmc: "报警3", bjms: "报警描述3", bjsj: "2024-1-3", gzyy: "-", clff: "-", tzsj: "2024-1-2", zycd: "一般", tzmc: '系统提示', | |||
| tznr: '账户登录', fj: "-" | |||
| }, | |||
| { | |||
| rwmc: "任务4", rwms: "任务描述4", kssj: "2024-1-4", jhwcsj: "2024-1-5", sfcq: '否', dqzt: "正常", dqjd: "节点4", sjwcsj: "2024-1-2", | |||
| bjmc: "报警4", bjms: "报警描述4", bjsj: "2024-1-4", gzyy: "-", clff: "-", tzsj: "2024-1-2", zycd: "一般", tzmc: '系统提示', | |||
| tznr: '账户登录', fj: "-" | |||
| }, | |||
| { | |||
| rwmc: "任务5", rwms: "任务描述5", kssj: "2024-1-5", jhwcsj: "2024-1-6", sfcq: '否', dqzt: "正常", dqjd: "节点5", sjwcsj: "2024-1-2", | |||
| bjmc: "报警5", bjms: "报警描述5", bjsj: "2024-1-5", gzyy: "-", clff: "-", tzsj: "2024-1-2", zycd: "一般", tzmc: '系统提示', | |||
| tznr: '账户登录', fj: "-" | |||
| }, | |||
| ]; | |||
| colDefs1: ColDef[] = [ | |||
| @@ -7,36 +7,38 @@ | |||
| @import './styles/theme'; | |||
| @import 'ag-grid-community/styles/ag-grid.css'; | |||
| @import 'ag-grid-community/styles/ag-theme-material.css'; | |||
| @import 'ag-grid-community/styles/ag-theme-quartz.css'; | |||
| .dis-flex { | |||
| display: flex; | |||
| flex: 1; | |||
| } | |||
| .mt10 { | |||
| margin-top: 1rem; | |||
| } | |||
| .mr15 { | |||
| margin-right: 1.5rem; | |||
| } | |||
| .w200 { | |||
| width: 20rem; | |||
| } | |||
| .w260 { | |||
| width: 26rem; | |||
| } | |||
| .w320 { | |||
| width: 32rem; | |||
| } | |||
| .w400 { | |||
| width: 40rem; | |||
| } | |||
| .w480 { | |||
| width: 48rem; | |||
| } | |||
| display: flex; | |||
| flex: 1; | |||
| } | |||
| .mt10 { | |||
| margin-top: 1rem; | |||
| } | |||
| .mr15 { | |||
| margin-right: 1.5rem; | |||
| } | |||
| .w200 { | |||
| width: 20rem; | |||
| } | |||
| .w260 { | |||
| width: 26rem; | |||
| } | |||
| .w320 { | |||
| width: 32rem; | |||
| } | |||
| .w400 { | |||
| width: 40rem; | |||
| } | |||
| .w480 { | |||
| width: 48rem; | |||
| } | |||
| @@ -2,7 +2,7 @@ | |||
| // - `default` Default theme | |||
| // - `dark` Import the official dark less style file | |||
| // - `compact` Import the official compact less style file | |||
| @import '@delon/theme/theme-default.less'; | |||
| @import '@delon/theme/theme-dark.less'; | |||
| // ==========The following is the custom theme variable area========== | |||
| // The theme paraments can be generated at https://ng-alain.github.io/ng-alain/ | |||