Просмотр исходного кода

Merge branch 'develop' of http://112.33.111.155:3000/yuhy/auseft.platform.datav

# Conflicts:
#	src/app/routes/data-v/navigation/navigation.component.ts
#	src/app/routes/data-v/routes.ts
#	src/app/routes/data-v/s1/s1.component.html
#	src/app/routes/data-v/s1/s1.component.ts
#	src/app/routes/data-v/workstation/workstation.component.ts
#	yarn.lock
master
ocean2 1 год назад
Родитель
Сommit
c783fce68e
29 измененных файлов: 12876 добавлений и 90 удалений
  1. Двоичные данные
      assets/fbx/bb.fbx
  2. +78
    -0
      dist/himp.platform.angular/3rdpartylicenses.txt
  3. Двоичные данные
      dist/himp.platform.angular/browser/assets/fbx/bb.fbx
  4. +1
    -1
      dist/himp.platform.angular/browser/chunk-2D265ORJ.js
  5. +1
    -1
      dist/himp.platform.angular/browser/chunk-2TNVIQ4O.js
  6. +1
    -1
      dist/himp.platform.angular/browser/chunk-4FFPI7ZP.js
  7. +0
    -1
      dist/himp.platform.angular/browser/chunk-7KRKUWJJ.js
  8. +0
    -39
      dist/himp.platform.angular/browser/chunk-CTDZNHTN.js
  9. +1
    -0
      dist/himp.platform.angular/browser/chunk-FD5ZSWKQ.js
  10. +1
    -1
      dist/himp.platform.angular/browser/chunk-GNH673QO.js
  11. +1
    -1
      dist/himp.platform.angular/browser/chunk-HCPW2OGS.js
  12. +1
    -1
      dist/himp.platform.angular/browser/chunk-MUTNAUEH.js
  13. +1
    -1
      dist/himp.platform.angular/browser/chunk-OOUNO2UZ.js
  14. +12543
    -0
      dist/himp.platform.angular/browser/chunk-R3OIOWDW.js
  15. +9
    -9
      dist/himp.platform.angular/browser/chunk-VDRVUQCF.js
  16. +2
    -2
      dist/himp.platform.angular/browser/index.html
  17. +2
    -2
      dist/himp.platform.angular/browser/main-3JB53C7N.js
  18. +3
    -0
      package.json
  19. +3
    -1
      src/app/routes/data-v/routes.ts
  20. +32
    -21
      src/app/routes/data-v/s1/s1.component.html
  21. +2
    -0
      src/app/routes/data-v/s1/s1.component.ts
  22. +6
    -0
      src/app/routes/data-v/t1/t1.component.html
  23. +121
    -0
      src/app/routes/data-v/t1/t1.component.ts
  24. +3
    -2
      src/app/routes/data-v/workstation/workstation.component.ts
  25. +0
    -2
      src/app/routes/passport/login/login.component.html
  26. +8
    -3
      src/app/routes/passport/login/login.component.less
  27. Двоичные данные
      src/assets/fbx/bb.fbx
  28. +3
    -1
      tsconfig.json
  29. +53
    -0
      yarn.lock

Двоичные данные
assets/fbx/bb.fbx Просмотреть файл


+ 78
- 0
dist/himp.platform.angular/3rdpartylicenses.txt Просмотреть файл

@@ -62,6 +62,58 @@ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

--------------------------------------------------------------------------------
Package: three
License: "MIT"

The MIT License

Copyright © 2010-2016 three.js authors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

--------------------------------------------------------------------------------
Package: three-orbitcontrols-ts
License: "MIT"

MIT License

Copyright (c) 2017 Nicolas Panel

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

--------------------------------------------------------------------------------
Package: tslib
License: "0BSD"
@@ -338,6 +390,32 @@ The following files embed [d3.js](https://github.com/d3/d3) BSD 3-Clause:
`/src/util/number.ts`
See `/licenses/LICENSE-d3` for details of the license.

--------------------------------------------------------------------------------
Package: three
License: "MIT"

The MIT License

Copyright © 2010-2024 three.js authors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

--------------------------------------------------------------------------------
Package: mqtt-browser
License: "MIT"


Двоичные данные
dist/himp.platform.angular/browser/assets/fbx/bb.fbx Просмотреть файл


dist/himp.platform.angular/browser/chunk-2D265ORJ.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


dist/himp.platform.angular/browser/chunk-SZALJX3W.js → dist/himp.platform.angular/browser/chunk-2TNVIQ4O.js Просмотреть файл

@@ -1 +1 @@
import{D as u,E as n,F as i,G as s,H as a,I as o,J as c,K as m,L as v}from"./chunk-XXGLJ63T.js";var C=class{static num(r){return u(r.value)?null:{num:!0}}static int(r){return n(r.value)?null:{int:!0}}static decimal(r){return i(r.value)?null:{decimal:!0}}static idCard(r){return s(r.value)?null:{idCard:!0}}static mobile(r){return a(r.value)?null:{mobile:!0}}static url(r){return o(r.value)?null:{url:!0}}static ip(r){return c(r.value)?null:{ip:!0}}static color(r){return m(r.value)?null:{color:!0}}static chinese(r){return v(r.value)?null:{chinese:!0}}};function p(e,r){return l=>{let d=l.get(e),t=l.get(r);return t.errors&&!t.errors.matchControl||(d.value!==t.value?t.setErrors({matchControl:!0}):t.setErrors(null)),null}}export{C as a,p as b};
import{D as u,E as n,F as i,G as s,H as a,I as o,J as c,K as m,L as v}from"./chunk-OOUNO2UZ.js";var C=class{static num(r){return u(r.value)?null:{num:!0}}static int(r){return n(r.value)?null:{int:!0}}static decimal(r){return i(r.value)?null:{decimal:!0}}static idCard(r){return s(r.value)?null:{idCard:!0}}static mobile(r){return a(r.value)?null:{mobile:!0}}static url(r){return o(r.value)?null:{url:!0}}static ip(r){return c(r.value)?null:{ip:!0}}static color(r){return m(r.value)?null:{color:!0}}static chinese(r){return v(r.value)?null:{chinese:!0}}};function p(e,r){return l=>{let d=l.get(e),t=l.get(r);return t.errors&&!t.errors.matchControl||(d.value!==t.value?t.setErrors({matchControl:!0}):t.setErrors(null)),null}}export{C as a,p as b};

dist/himp.platform.angular/browser/chunk-ZRW2SW2G.js → dist/himp.platform.angular/browser/chunk-4FFPI7ZP.js Просмотреть файл

@@ -1 +1 @@
import{F as b,H as C,Hc as m,Uc as u,X as p,Zb as v,a as y,fa as l,ha as g,ia as A,ja as c,k as d,m as w,n as S,oc as T,rc as x,xa as I,y as O}from"./chunk-TV7RDLL7.js";var U={store_key:"_token",token_invalid_redirect:!0,token_exp_offset:10,token_send_key:"token",token_send_template:"${token}",token_send_place:"header",login_url:"/login",refreshTime:3e3,refreshOffset:6e3};function E(e){return e.merge("auth",U)}function j(){return new h}var h=class{get(t){return JSON.parse(localStorage.getItem(t)||"{}")||{}}set(t,i){return localStorage.setItem(t,JSON.stringify(i)),!0}remove(t){localStorage.removeItem(t)}},D=new g("AUTH_STORE_TOKEN",{providedIn:"root",factory:j});function L(){return new F(c(u))}var F=(()=>{let t=class t{constructor(n){this.store=c(D),this.refresh$=new w,this.change$=new S(null),this._referrer={},this._options=E(n)}get refresh(){return this.builderRefresh(),this.refresh$.pipe(p())}get login_url(){return this._options.login_url}get referrer(){return this._referrer}get options(){return this._options}set(n){let r=this.store.set(this._options.store_key,n);return this.change$.next(n),r}get(n){let r=this.store.get(this._options.store_key);return n?Object.assign(new n,r):r}clear(n={onlyToken:!1}){let r=null;n.onlyToken===!0?(r=this.get(),r.token="",this.set(r)):this.store.remove(this._options.store_key),this.change$.next(r)}change(){return this.change$.pipe(p())}builderRefresh(){let{refreshTime:n,refreshOffset:r}=this._options;this.cleanRefresh(),this.interval$=b(n).pipe(O(()=>{let o=this.get(),s=o.expired||o.exp||0;if(s<=0)return null;let a=new Date().valueOf()+r;return s<=a?o:null}),C(o=>o!=null)).subscribe(o=>this.refresh$.next(o))}cleanRefresh(){this.interval$&&!this.interval$.closed&&this.interval$.unsubscribe()}ngOnDestroy(){this.cleanRefresh()}};t.\u0275fac=function(r){return new(r||t)(A(u))},t.\u0275prov=l({token:t,factory:t.\u0275fac});let e=t;return e})(),f=new g("DA_SERVICE_TOKEN",{providedIn:"root",factory:L}),_="_delonAuthSocialType",k="_delonAuthSocialCallbackByHref",te=(()=>{let t=class t{constructor(){this.tokenService=c(f),this.doc=c(v),this.router=c(m),this._win=null}login(n,r="/",o={}){if(o=y({type:"window",windowFeatures:"location=yes,height=570,width=520,scrollbars=yes,status=yes"},o),localStorage.setItem(_,o.type),localStorage.setItem(k,r),o.type==="href"){this.doc.location.href=n;return}return this._win=window.open(n,"_blank",o.windowFeatures),this._winTime=setInterval(()=>{if(this._win&&this._win.closed){this.ngOnDestroy();let s=this.tokenService.get();s&&!s.token&&(s=null),s&&this.tokenService.set(s),this.observer.next(s),this.observer.complete()}},100),new d(s=>{this.observer=s})}callback(n){if(!n&&this.router.url.indexOf("?")===-1)throw new Error("url muse contain a ?");let r={token:""};if(typeof n=="string"){let a=n.split("?")[1].split("#")[0];r=this.router.parseUrl(`./?${a}`).queryParams}else r=n;if(!r||!r.token)throw new Error("invalide token data");this.tokenService.set(r);let o=localStorage.getItem(k)||"/";localStorage.removeItem(k);let s=localStorage.getItem(_);return localStorage.removeItem(_),s==="window"?window.close():this.router.navigateByUrl(o),r}ngOnDestroy(){clearInterval(this._winTime),this._winTime=null}};t.\u0275fac=function(r){return new(r||t)},t.\u0275prov=l({token:t,factory:t.\u0275fac});let e=t;return e})();function N(e){return e!=null&&typeof e.token=="string"&&e.token.length>0}function R(e,t){let i=c(m),n=c(f),r=c(v);n.referrer.url=t||i.url,e.token_invalid_redirect===!0&&setTimeout(()=>{/^https?:\/\//g.test(e.login_url)?r.location.href=e.login_url:i.navigate([e.login_url])})}var J=new T(()=>!1);function H(e,t){if(e.context.get(J))return!0;if(Array.isArray(t.ignores)){for(let i of t.ignores)if(i.test(e.url))return!0}return!1}function P(e,t){return R(t),new d(i=>{let n="",r=new x({url:e.url,headers:e.headers,status:401,statusText:n});i.error(r)})}var $=(()=>{let t=class t{constructor(){this.srv=c(f)}process(n){let r=N(this.srv.get());return r||R(this.srv.options,n),r}};t.\u0275fac=function(r){return new(r||t)},t.\u0275prov=l({token:t,factory:t.\u0275fac,providedIn:"root"});let e=t;return e})(),re=(e,t)=>c($).process(t.url),ne=(e,t)=>c($).process(t.url);function B(e,t,i){let{token_send_template:n,token_send_key:r}=i,o=n.replace(/\$\{([\w]+)\}/g,(s,a)=>t[a]);switch(i.token_send_place){case"header":let s={};s[r]=o,e=e.clone({setHeaders:s});break;case"body":let a=e.body||{};a[r]=o,e=e.clone({body:a});break;case"url":e=e.clone({params:e.params.append(r,o)});break}return e}var oe=(e,t)=>{let i=E(c(u));if(H(e,i))return t(e);let n=c(f).get();return N(n)?t(B(e,n,i)):P(e,i)};var M=function(e){return e[e.Store=0]="Store",e}(M||{});function K(e,t){return{\u0275kind:e,\u0275providers:t}}function se(e){return I([(e??W()).\u0275providers])}function W(){return K(M.Store,[{provide:D,useClass:h}])}export{f as a,te as b,J as c,re as d,ne as e,oe as f,se as g};
import{$b as v,A as O,H as b,J as C,Jc as m,Wc as u,Z as p,a as y,ha as l,ja as g,ka as A,la as c,m as d,o as w,p as S,qc as T,tc as x,za as I}from"./chunk-VDRVUQCF.js";var U={store_key:"_token",token_invalid_redirect:!0,token_exp_offset:10,token_send_key:"token",token_send_template:"${token}",token_send_place:"header",login_url:"/login",refreshTime:3e3,refreshOffset:6e3};function E(e){return e.merge("auth",U)}function j(){return new h}var h=class{get(t){return JSON.parse(localStorage.getItem(t)||"{}")||{}}set(t,i){return localStorage.setItem(t,JSON.stringify(i)),!0}remove(t){localStorage.removeItem(t)}},D=new g("AUTH_STORE_TOKEN",{providedIn:"root",factory:j});function L(){return new F(c(u))}var F=(()=>{let t=class t{constructor(n){this.store=c(D),this.refresh$=new w,this.change$=new S(null),this._referrer={},this._options=E(n)}get refresh(){return this.builderRefresh(),this.refresh$.pipe(p())}get login_url(){return this._options.login_url}get referrer(){return this._referrer}get options(){return this._options}set(n){let r=this.store.set(this._options.store_key,n);return this.change$.next(n),r}get(n){let r=this.store.get(this._options.store_key);return n?Object.assign(new n,r):r}clear(n={onlyToken:!1}){let r=null;n.onlyToken===!0?(r=this.get(),r.token="",this.set(r)):this.store.remove(this._options.store_key),this.change$.next(r)}change(){return this.change$.pipe(p())}builderRefresh(){let{refreshTime:n,refreshOffset:r}=this._options;this.cleanRefresh(),this.interval$=b(n).pipe(O(()=>{let o=this.get(),s=o.expired||o.exp||0;if(s<=0)return null;let a=new Date().valueOf()+r;return s<=a?o:null}),C(o=>o!=null)).subscribe(o=>this.refresh$.next(o))}cleanRefresh(){this.interval$&&!this.interval$.closed&&this.interval$.unsubscribe()}ngOnDestroy(){this.cleanRefresh()}};t.\u0275fac=function(r){return new(r||t)(A(u))},t.\u0275prov=l({token:t,factory:t.\u0275fac});let e=t;return e})(),f=new g("DA_SERVICE_TOKEN",{providedIn:"root",factory:L}),_="_delonAuthSocialType",k="_delonAuthSocialCallbackByHref",te=(()=>{let t=class t{constructor(){this.tokenService=c(f),this.doc=c(v),this.router=c(m),this._win=null}login(n,r="/",o={}){if(o=y({type:"window",windowFeatures:"location=yes,height=570,width=520,scrollbars=yes,status=yes"},o),localStorage.setItem(_,o.type),localStorage.setItem(k,r),o.type==="href"){this.doc.location.href=n;return}return this._win=window.open(n,"_blank",o.windowFeatures),this._winTime=setInterval(()=>{if(this._win&&this._win.closed){this.ngOnDestroy();let s=this.tokenService.get();s&&!s.token&&(s=null),s&&this.tokenService.set(s),this.observer.next(s),this.observer.complete()}},100),new d(s=>{this.observer=s})}callback(n){if(!n&&this.router.url.indexOf("?")===-1)throw new Error("url muse contain a ?");let r={token:""};if(typeof n=="string"){let a=n.split("?")[1].split("#")[0];r=this.router.parseUrl(`./?${a}`).queryParams}else r=n;if(!r||!r.token)throw new Error("invalide token data");this.tokenService.set(r);let o=localStorage.getItem(k)||"/";localStorage.removeItem(k);let s=localStorage.getItem(_);return localStorage.removeItem(_),s==="window"?window.close():this.router.navigateByUrl(o),r}ngOnDestroy(){clearInterval(this._winTime),this._winTime=null}};t.\u0275fac=function(r){return new(r||t)},t.\u0275prov=l({token:t,factory:t.\u0275fac});let e=t;return e})();function N(e){return e!=null&&typeof e.token=="string"&&e.token.length>0}function R(e,t){let i=c(m),n=c(f),r=c(v);n.referrer.url=t||i.url,e.token_invalid_redirect===!0&&setTimeout(()=>{/^https?:\/\//g.test(e.login_url)?r.location.href=e.login_url:i.navigate([e.login_url])})}var J=new T(()=>!1);function H(e,t){if(e.context.get(J))return!0;if(Array.isArray(t.ignores)){for(let i of t.ignores)if(i.test(e.url))return!0}return!1}function P(e,t){return R(t),new d(i=>{let n="",r=new x({url:e.url,headers:e.headers,status:401,statusText:n});i.error(r)})}var $=(()=>{let t=class t{constructor(){this.srv=c(f)}process(n){let r=N(this.srv.get());return r||R(this.srv.options,n),r}};t.\u0275fac=function(r){return new(r||t)},t.\u0275prov=l({token:t,factory:t.\u0275fac,providedIn:"root"});let e=t;return e})(),re=(e,t)=>c($).process(t.url),ne=(e,t)=>c($).process(t.url);function B(e,t,i){let{token_send_template:n,token_send_key:r}=i,o=n.replace(/\$\{([\w]+)\}/g,(s,a)=>t[a]);switch(i.token_send_place){case"header":let s={};s[r]=o,e=e.clone({setHeaders:s});break;case"body":let a=e.body||{};a[r]=o,e=e.clone({body:a});break;case"url":e=e.clone({params:e.params.append(r,o)});break}return e}var oe=(e,t)=>{let i=E(c(u));if(H(e,i))return t(e);let n=c(f).get();return N(n)?t(B(e,n,i)):P(e,i)};var M=function(e){return e[e.Store=0]="Store",e}(M||{});function K(e,t){return{\u0275kind:e,\u0275providers:t}}function se(e){return I([(e??W()).\u0275providers])}function W(){return K(M.Store,[{provide:D,useClass:h}])}export{f as a,te as b,J as c,re as d,ne as e,oe as f,se as g};

+ 0
- 1
dist/himp.platform.angular/browser/chunk-7KRKUWJJ.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 0
- 39
dist/himp.platform.angular/browser/chunk-CTDZNHTN.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 1
- 0
dist/himp.platform.angular/browser/chunk-FD5ZSWKQ.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


dist/himp.platform.angular/browser/chunk-GNH673QO.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


dist/himp.platform.angular/browser/chunk-HCPW2OGS.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


dist/himp.platform.angular/browser/chunk-MUTNAUEH.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


dist/himp.platform.angular/browser/chunk-OOUNO2UZ.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 12543
- 0
dist/himp.platform.angular/browser/chunk-R3OIOWDW.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


dist/himp.platform.angular/browser/chunk-VDRVUQCF.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 2
- 2
dist/himp.platform.angular/browser/index.html Просмотреть файл

@@ -103,7 +103,7 @@
}
</style>
<style>html,body{width:100%;height:100%}*,*:before,*:after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}body{margin:0;color:#ffffffd9;font-size:14px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-variant:tabular-nums;line-height:1.5715;background-color:#000;font-feature-settings:"tnum"}label{touch-action:manipulation}html{--antd-wave-shadow-color: #13C2C2;--scroll-bar: 0}body{scrollbar-color:rgba(0,0,0,.3) #6e6e6e;scrollbar-width:thin}body::-webkit-scrollbar{width:6px;height:6px}body::-webkit-scrollbar-track{box-shadow:inset 0 0 6px #0000004d}body::-webkit-scrollbar-thumb{background-color:#6e6e6e;outline:1px solid #333}html{touch-action:manipulation;direction:ltr;height:100%}html,body,app-root{height:100%}body{color:#ffffffd9;background-color:#000}
</style><link rel="stylesheet" href="styles-JTMVGPO6.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles-JTMVGPO6.css"></noscript><link rel="modulepreload" href="chunk-4YNSMQCN.js"><link rel="modulepreload" href="chunk-T3OMXG5T.js"><link rel="modulepreload" href="chunk-XXGLJ63T.js"><link rel="modulepreload" href="chunk-ZRW2SW2G.js"><link rel="modulepreload" href="chunk-TV7RDLL7.js"></head>
</style><link rel="stylesheet" href="styles-JTMVGPO6.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles-JTMVGPO6.css"></noscript><link rel="modulepreload" href="chunk-2D265ORJ.js"><link rel="modulepreload" href="chunk-HCPW2OGS.js"><link rel="modulepreload" href="chunk-OOUNO2UZ.js"><link rel="modulepreload" href="chunk-4FFPI7ZP.js"><link rel="modulepreload" href="chunk-VDRVUQCF.js"></head>

<body>
<app-root></app-root>
@@ -113,6 +113,6 @@
●</label><label> ●</label></div>
</div>
</div>
<script src="polyfills-RX4V3J3S.js" type="module"></script><script src="scripts-XEF6VACQ.js" defer></script><script src="main-XJNA5CYE.js" type="module"></script></body>
<script src="polyfills-RX4V3J3S.js" type="module"></script><script src="scripts-XEF6VACQ.js" defer></script><script src="main-3JB53C7N.js" type="module"></script></body>

</html>

dist/himp.platform.angular/browser/main-3JB53C7N.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 3
- 0
package.json Просмотреть файл

@@ -42,6 +42,7 @@
"@microsoft/signalr": "^8.0.0",
"@microsoft/signalr-protocol-msgpack": "^8.0.0",
"@types/signalr": "^2.4.3",
"@types/three": "^0.162.0",
"ag-grid-angular": "^31.0.2",
"echarts": "^5.5.0",
"moment": "^2.30.1",
@@ -51,6 +52,8 @@
"ngx-mqtt": "^17.0.0",
"rxjs": "~7.8.0",
"screenfull": "^6.0.2",
"three": "^0.162.0",
"three-orbitcontrols-ts": "^0.1.2",
"tslib": "^2.3.0",
"zone.js": "~0.14.3"
},


+ 3
- 1
src/app/routes/data-v/routes.ts Просмотреть файл

@@ -7,6 +7,7 @@ import { DataVSecond1Component } from './second1/second1.component';
import { DataVThreejsComponent } from './threejs/threejs.component';
import { DataVUserComponent } from './user/user.component';
import { DataVWorkstationComponent } from './workstation/workstation.component';
import { DataVT1Component } from './t1/t1.component';

export const routes: Routes = [
{
@@ -19,5 +20,6 @@ export const routes: Routes = [
component: DataVSecond1Component,
data: { menu: null }
},
{ path: 'threejs/:id', component: DataVThreejsComponent }
{ path: 'threejs/:id', component: DataVThreejsComponent },
{ path: 't1/:id', component: DataVT1Component }
];

+ 32
- 21
src/app/routes/data-v/s1/s1.component.html Просмотреть файл

@@ -46,46 +46,57 @@
<div style="height: 34.6rem">
<img src="assets/dashboard/dashboard_ws_demo1.png" style="width: 100%" />

<div nz-row style="justify-content: center; align-items: center; margin-top: 0.5rem">
<div nz-col nzSpan="12" class="sys-status-title"> 机器人 </div>
<div nz-col nzSpan="12" class="sys-status-title"> 全硫仪 </div>
<div nz-col nzSpan="12" class="sys-status-title"> 全水分析仪 </div>
<div nz-col nzSpan="12" class="sys-status-title"> 挥发分仪 </div>
<div nz-col nzSpan="12" class="sys-status-title"> 量热仪 </div>
<div nz-col nzSpan="12" class="sys-status-title"> 谈情氮元素 </div>
<div nz-row style="justify-content: center;align-items: center;margin-top: 0.5rem;">
<div nz-col nzSpan="12" class="sys-status-title">
机器人
</div>
<div nz-col nzSpan="12" class="sys-status-title">
全硫仪
</div>
<div nz-col nzSpan="12" class="sys-status-title">
全水分析仪
</div>
<div nz-col nzSpan="12" class="sys-status-title">
挥发分仪
</div>
<div nz-col nzSpan="12" class="sys-status-title">
量热仪
</div>
<div nz-col nzSpan="12" class="sys-status-title">
碳氢氮元素
</div>
</div>
</div>
</data-v-card>
</div>

<div nz-col nzSpan="8">
<data-v-card
title="化验结果"
[showSetting]="true"
[optionsList]="chartConfig.optionsCheckList"
(onCheckedItemsChange)="handleCheckedItems($event)"
>
<data-v-card title="化验结果" [showSetting]="true" [optionsList]="chartConfig.optionsCheckList"
(onCheckedItemsChange)="handleCheckedItems($event)">
<div nz-row class="scrollable-container">
@for (item of chartConfig.optionsCheckList; track item) {
@for(item of chartConfig.optionsCheckList; track item) {
<div nz-col [nzSpan]="24 / chartConfig.rowNumber" *ngIf="item.checked" class="centered-element">
<!-- 添加上下外边距 -->
<app-chart-component
[options]="item.options"
<app-chart-component [options]="item.options"
[style]="{ margin: '20px ' + 20 / chartConfig.rowNumber + 'px', width: '100%', height: '16rem' }"
*ngIf="item.checked"
/>
*ngIf="item.checked" />
</div>
}
}
</div>
<div nz-row>
@for (item of chartConfig.optionBottomList; track item) {
@for(item of chartConfig.optionBottomList; track item) {
<div nz-col nzSpan="12">
<div class="centered-element" style="margin: 2px">
<app-chart-component [options]="item" style="width: 26rem; height: 11rem; margin-left: 0.4rem" />
</div>
</div>
}
}
</div>
</data-v-card>
</div>
</div>

<!-- <data-v-card>
<div class="sys-status-title">煤样超差率:超差样量/总样量 03/16</div>
<div class="sys-status-title">煤样合格率:合格样量/总样量 15/16</div>
</data-v-card> -->

+ 2
- 0
src/app/routes/data-v/s1/s1.component.ts Просмотреть файл

@@ -15,6 +15,8 @@ import { Subscription, finalize } from 'rxjs';
import { IMqttMessage, MqttService } from 'ngx-mqtt';
import { ChartComponentComponent } from './chart-component/chart-component.component';
import { NzListModule } from 'ng-zorro-antd/list';
import { TitleService } from '@delon/theme';

@Component({
selector: 'app-data-v-s1',
standalone: true,


+ 6
- 0
src/app/routes/data-v/t1/t1.component.html Просмотреть файл

@@ -0,0 +1,6 @@
<!-- <div #Three style="background-color: red;"></div> -->


<div style="display: flex; flex-direction: column; height: 100vh;">
<div #Three style="flex-grow: 1;"></div>
</div>

+ 121
- 0
src/app/routes/data-v/t1/t1.component.ts Просмотреть файл

@@ -0,0 +1,121 @@
import { Component, ElementRef, 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';
import * as THREE from 'three';
import { OrbitControls } from 'three-orbitcontrols-ts';
import { FBXLoader } from 'three/examples/jsm/loaders/FBXLoader';
import { TitleService } from '@delon/theme';

const clock = new THREE.Clock();
let mixer: { update: (arg0: number) => void };

@Component({
selector: 'app-data-v-t1',
standalone: true,
imports: [...SHARED_IMPORTS],
templateUrl: './t1.component.html'
})
export class DataVT1Component implements OnInit {
private readonly http = inject(_HttpClient);
private readonly modal = inject(ModalHelper);
private readonly titleService = inject(TitleService);

@ViewChild('Three', { static: true }) container!: ElementRef;
public scene!: THREE.Scene;
public camera!: THREE.PerspectiveCamera;
public renderer!: THREE.WebGLRenderer;
public cube!: THREE.Mesh;

ngOnInit(): void {
this.titleService.setTitle('重磅3D');
this.initThreeJs();
this.animate();
}

private initThreeJs(): void {
// 创建相机
this.camera = new THREE.PerspectiveCamera(40, window.innerWidth / window.innerHeight, 1, 20000);
this.camera.position.set(2200, 300, -3100);

//创建场景
this.scene = new THREE.Scene();
this.scene.background = new THREE.Color(0x040516);

const hemiLight = new THREE.HemisphereLight(0xffffff, 0x444444, 5);
hemiLight.position.set(0, 200, 0);
this.scene.add(hemiLight);

const dirLight = new THREE.DirectionalLight(0xffffff, 5);
dirLight.position.set(0, 200, 100);
dirLight.castShadow = true;
dirLight.shadow.camera.top = 180;
dirLight.shadow.camera.bottom = -100;
dirLight.shadow.camera.left = -120;
dirLight.shadow.camera.right = 120;
this.scene.add(dirLight);

const that = this;
const loader = new FBXLoader();
loader.load(
'assets/fbx/bb.fbx',
function (object) {
object.traverse(function (child) {
// if (child.isMesh) {
// child.castShadow = true;
// child.receiveShadow = true;
// }
});
that.scene.add(object);
},
xhr => {
// loading progress
},
err => {
console.error('An error happened', err);
}
);

this.renderer = new THREE.WebGLRenderer({ antialias: true });
this.renderer.setPixelRatio(window.devicePixelRatio);
this.renderer.setSize(window.innerWidth, window.innerHeight);
this.renderer.shadowMap.enabled = true;
this.container.nativeElement.appendChild(this.renderer.domElement);

const radius = 5; // 圆的半径
const segments = 32; // 圆的分段数
const geometry = new THREE.CircleGeometry(radius, segments);
const material = new THREE.MeshBasicMaterial({ color: 0xff0000 }); // 红色材质,你可以根据需要调整颜色
const circle = new THREE.Mesh(geometry, material);
circle.position.set(850, 100, -2000); // 设置圆的位置
this.scene.add(circle);

const controls = new OrbitControls(this.camera, this.renderer.domElement);
controls.target.set(850, 100, -2000);
controls.update();

//const axesHelper = new THREE.AxesHelper(1000);
//this.scene.add(axesHelper);

window.addEventListener('resize', this.onWindowResize);
}

public render(): void {
this.cube.rotation.x += 0.01;
this.cube.rotation.y += 0.01;
this.renderer.render(this.scene, this.camera);
}

onWindowResize() {
this.camera.aspect = window.innerWidth / window.innerHeight;
this.camera.updateProjectionMatrix();
this.renderer.setSize(window.innerWidth, window.innerHeight);
}
animate = () => {
requestAnimationFrame(this.animate);
const delta = clock.getDelta();
if (mixer) mixer.update(delta);
this.renderer.render(this.scene, this.camera);
};
}

+ 3
- 2
src/app/routes/data-v/workstation/workstation.component.ts Просмотреть файл

@@ -1,5 +1,5 @@
import { AfterViewInit, Component, ElementRef, OnInit, ViewChild, inject } from '@angular/core';
import { ModalHelper, _HttpClient } from '@delon/theme';
import { ModalHelper, TitleService, _HttpClient } from '@delon/theme';
import { SHARED_IMPORTS } from '@shared';
import { AgGridAngular } from 'ag-grid-angular';
import { ColDef, GridApi } from 'ag-grid-community';
@@ -32,6 +32,7 @@ export class DataVWorkstationComponent implements OnInit, AfterViewInit {
private readonly http = inject(_HttpClient);
private readonly modal = inject(ModalHelper);
private readonly elementRef = inject(ElementRef);
private readonly titleService = inject(TitleService);

@ViewChild('myGrid') grid!: AgGridAngular;
public defaultColDef: ColDef = {
@@ -129,7 +130,7 @@ export class DataVWorkstationComponent implements OnInit, AfterViewInit {
}

ngOnInit(): void {
console.log(`ngOnInit${this.rowData.length}`);
this.titleService.setTitle('我的工作站');

for (var i = 1; i < 30; i++) {
this.rowData.push({


+ 0
- 2
src/app/routes/passport/login/login.component.html Просмотреть файл

@@ -29,8 +29,6 @@
</div>
</div>



<ng-template #coverTemplate>
<img style="height: 100px;" alt="example" src="assets/bg2.jpg" />
</ng-template>


+ 8
- 3
src/app/routes/passport/login/login.component.less Просмотреть файл

@@ -91,15 +91,20 @@
color: #515151;
vertical-align: middle;
}
}

.color-515151 {
color: #515151;
}
.color-515151 {
color: #515151;
}
}

[data-theme='dark'] {
:host ::ng-deep {
display: block;
width: 538px;
margin: 0 auto;

.icon {
color: rgb(255 255 255 / 20%);



Двоичные данные
src/assets/fbx/bb.fbx Просмотреть файл


+ 3
- 1
tsconfig.json Просмотреть файл

@@ -36,7 +36,9 @@
],
"@_mock": [
"_mock/index"
]
],
"three": ["./node_modules/three/src/Three"],
"three/*": ["./node_modules/three/*"]
}
},
"angularCompilerOptions": {


+ 53
- 0
yarn.lock Просмотреть файл

@@ -2277,6 +2277,11 @@
"@tufjs/canonical-json" "2.0.0"
minimatch "^9.0.3"

"@tweenjs/tween.js@~23.1.1":
version "23.1.1"
resolved "https://registry.npmmirror.com/@tweenjs/tween.js/-/tween.js-23.1.1.tgz#0ae28ed9c635805557f78c2626464018d5f1b5e2"
integrity sha512-ZpboH7pCPPeyBWKf8c7TJswtCEQObFo3bOBYalm99NzZarATALYCo5OhbCa/n4RQyJyHfhkdx+hNrdL5ByFYDw==

"@types/body-parser@*":
version "1.19.5"
resolved "https://registry.npmmirror.com/@types/body-parser/-/body-parser-1.19.5.tgz"
@@ -2509,6 +2514,11 @@
dependencies:
"@types/node" "*"

"@types/stats.js@*":
version "0.17.3"
resolved "https://registry.npmmirror.com/@types/stats.js/-/stats.js-0.17.3.tgz#705446e12ce0fad618557dd88236f51148b7a935"
integrity sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ==

"@types/swagger-schema-official@2.0.22":
version "2.0.22"
resolved "https://registry.npmmirror.com/@types/swagger-schema-official/-/swagger-schema-official-2.0.22.tgz"
@@ -2519,6 +2529,22 @@
resolved "https://registry.npmmirror.com/@types/swagger-schema-official/-/swagger-schema-official-2.0.25.tgz"
integrity sha512-T92Xav+Gf/Ik1uPW581nA+JftmjWPgskw/WBf4TJzxRG/SJ+DfNnNE+WuZ4mrXuzflQMqMkm1LSYjzYW7MB1Cg==

"@types/three@^0.162.0":
version "0.162.0"
resolved "https://registry.npmmirror.com/@types/three/-/three-0.162.0.tgz#79d170c88f14b2eaee6b76af00fc4016a533e586"
integrity sha512-0j5yZcVukVIhrhSIC7+LmBPkkMoMuEJ1AfYBZfgNytdYqYREMuiyXWhYOMeZLBElTEAlJIZn7r2W3vqTIgjWlg==
dependencies:
"@tweenjs/tween.js" "~23.1.1"
"@types/stats.js" "*"
"@types/webxr" "*"
fflate "~0.6.10"
meshoptimizer "~0.18.1"

"@types/webxr@*":
version "0.5.14"
resolved "https://registry.npmmirror.com/@types/webxr/-/webxr-0.5.14.tgz#9a03121a4912ea113b31e5c9c17f164d4fff8a1f"
integrity sha512-UEMMm/Xn3DtEa+gpzUrOcDj+SJS1tk5YodjwOxcqStNhCfPcwgyC5Srg2ToVKyg2Fhq16Ffpb0UWUQHqoT9AMA==

"@types/ws@^8.5.5", "@types/ws@^8.5.9":
version "8.5.10"
resolved "https://registry.npmmirror.com/@types/ws/-/ws-8.5.10.tgz"
@@ -4948,6 +4974,11 @@ fetch-cookie@^2.0.3:
set-cookie-parser "^2.4.8"
tough-cookie "^4.0.0"

fflate@~0.6.10:
version "0.6.10"
resolved "https://registry.npmmirror.com/fflate/-/fflate-0.6.10.tgz#5f40f9659205936a2d18abf88b2e7781662b6d43"
integrity sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg==

figures@3.2.0:
version "3.2.0"
resolved "https://registry.npmmirror.com/figures/-/figures-3.2.0.tgz"
@@ -6769,6 +6800,11 @@ merge2@^1.3.0, merge2@^1.4.1:
resolved "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz"
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==

meshoptimizer@~0.18.1:
version "0.18.1"
resolved "https://registry.npmmirror.com/meshoptimizer/-/meshoptimizer-0.18.1.tgz#cdb90907f30a7b5b1190facd3b7ee6b7087797d8"
integrity sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==

methods@~1.1.2:
version "1.1.2"
resolved "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz"
@@ -9494,6 +9530,23 @@ text-table@0.2.0, text-table@^0.2.0:
resolved "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz"
integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==

three-orbitcontrols-ts@^0.1.2:
version "0.1.2"
resolved "https://registry.npmmirror.com/three-orbitcontrols-ts/-/three-orbitcontrols-ts-0.1.2.tgz#2040955904022ae19c2e9c52ffdff43168658abd"
integrity sha512-HG45dhJX4010lt/Ohk2d2K0kBaxCS6NLO3+wG9BDfMM5ddH7zMPuF3fhcn8vI4eqcSITtid0OoHEttHhjkIKEQ==
dependencies:
three "^0.83.0"

three@^0.162.0:
version "0.162.0"
resolved "https://registry.npmmirror.com/three/-/three-0.162.0.tgz"
integrity sha512-xfCYj4RnlozReCmUd+XQzj6/5OjDNHBy5nT6rVwrOKGENAvpXe2z1jL+DZYaMu4/9pNsjH/4Os/VvS9IrH7IOQ==

three@^0.83.0:
version "0.83.0"
resolved "https://registry.npmmirror.com/three/-/three-0.83.0.tgz#3b7f94790af3e021dac1f44a2617569ca2032b0b"
integrity sha512-x9TqsmvhHG/Lw16Zi9zbJ0ho+kP8SgIfsz8dJYZbeWaFWoVwdXKolQQAftkUlpuKDys1+6SZIBHoA2QdoZKByQ==

through@^2.3.4:
version "2.3.8"
resolved "https://registry.npmmirror.com/through/-/through-2.3.8.tgz"


Загрузка…
Отмена
Сохранить