10 changed files with 531 additions and 268 deletions
@ -1,74 +1,153 @@ |
|||||
<ng-container *ngIf="fullPage else layoutTpl"> |
<ng-container *ngIf="fullPage; else layoutTpl"> |
||||
<router-outlet></router-outlet> |
<router-outlet></router-outlet> |
||||
</ng-container> |
</ng-container> |
||||
|
|
||||
<ng-template #layoutTpl> |
<ng-template #layoutTpl> |
||||
<nz-layout class="app-layout"> |
<nz-layout class="app-layout"> |
||||
<nz-header class="app-header"> |
<nz-header class="app-header"> |
||||
<div class="flex items-center justify-between h-full"> |
<div class="flex items-center justify-between h-full"> |
||||
<div></div> |
<div></div> |
||||
<div class="profile"> |
<div class="profile"> |
||||
<button |
<button |
||||
nz-button |
nz-button |
||||
nzType="text" |
nzType="text" |
||||
nz-dropdown |
nz-dropdown |
||||
[nzDropdownMenu]="menu"> |
[nzDropdownMenu]="menu" |
||||
{{account.name}} |
> |
||||
</button> |
{{ account.name }} |
||||
<nz-dropdown-menu #menu="nzDropdownMenu"> |
</button> |
||||
<ul nz-menu nzSelectable> |
<nz-dropdown-menu #menu="nzDropdownMenu"> |
||||
<li nz-menu-item (click)="logout()"> |
<ul |
||||
退出登录 |
nz-menu |
||||
</li> |
nzSelectable |
||||
</ul> |
> |
||||
</nz-dropdown-menu> |
<li |
||||
</div> |
nz-menu-item |
||||
</div> |
(click)="logout()" |
||||
</nz-header> |
> |
||||
<nz-layout class="app-layout-main"> |
退出登录 |
||||
<nz-sider nzWidth="220px" nzTheme="dark" class="sider-menu"> |
</li> |
||||
<div class="logo flex items-center py-4"> |
</ul> |
||||
<img class="block h-[40px] " src="../assets/images/jl-logo.png" /> |
</nz-dropdown-menu> |
||||
<span class="text-base text-white font-bold"> |
</div> |
||||
{{appName}}后台 |
</div> |
||||
</span> |
</nz-header> |
||||
</div> |
<nz-layout class="app-layout-main"> |
||||
<ul nz-menu nzMode="inline" nzTheme="dark"> |
<nz-sider |
||||
<li nz-menu-item class="k-icon" [routerLink]="['/','food']" nzMatchRouter> |
nzWidth="220px" |
||||
<span nz-icon nzType="k-icon:carrot" nzTheme="outline"></span> |
nzTheme="dark" |
||||
<span>食材管理</span> |
class="sider-menu" |
||||
</li> |
> |
||||
<li nz-menu-item class="k-icon" [routerLink]="['/','dish']" nzMatchRouter> |
<div class="logo flex items-center py-4"> |
||||
<span nz-icon nzType="k-icon:food" nzTheme="outline"></span> |
<img |
||||
<span>菜品管理</span> |
class="block h-[40px]" |
||||
</li> |
src="../assets/images/jl-logo.png" |
||||
|
/> |
||||
|
<span class="text-base text-white font-bold"> {{ appName }}后台 </span> |
||||
|
</div> |
||||
|
<ul |
||||
|
nz-menu |
||||
|
nzMode="inline" |
||||
|
nzTheme="dark" |
||||
|
> |
||||
|
<li |
||||
|
nz-menu-item |
||||
|
class="k-icon" |
||||
|
[routerLink]="['/', 'food']" |
||||
|
nzMatchRouter |
||||
|
> |
||||
|
<span |
||||
|
nz-icon |
||||
|
nzType="k-icon:carrot" |
||||
|
nzTheme="outline" |
||||
|
></span> |
||||
|
<span>食材管理</span> |
||||
|
</li> |
||||
|
<li |
||||
|
nz-menu-item |
||||
|
class="k-icon" |
||||
|
[routerLink]="['/', 'dish']" |
||||
|
nzMatchRouter |
||||
|
> |
||||
|
<span |
||||
|
nz-icon |
||||
|
nzType="k-icon:food" |
||||
|
nzTheme="outline" |
||||
|
></span> |
||||
|
<span>菜品管理</span> |
||||
|
</li> |
||||
|
|
||||
|
<li |
||||
<li nz-submenu nzTitle="食谱管理" nzIcon="book" [nzOpen]="currentUrl.includes('/ingredient/')"> |
nz-submenu |
||||
<ul> |
nzTitle="食谱管理" |
||||
<li nz-menu-item nzMatchRouter [routerLink]="['/','ingredient','item']">食谱库</li> |
nzIcon="book" |
||||
<!-- <li nz-menu-item nzMatchRouter [routerLink]="['/','ingredient','review']">食谱审核</li> --> |
[nzOpen]="currentUrl.includes('/ingredient/')" |
||||
<li nz-menu-item nzMatchRouter [routerLink]="['/','ingredient','release']">食谱发布计划</li> |
> |
||||
</ul> |
<ul> |
||||
</li> |
<li |
||||
<li nz-menu-item nz-icon="profile" nzMatchRouter [routerLink]="['/','standard']"> |
nz-menu-item |
||||
<span nz-icon nzType="profile" nzTheme="outline"></span> |
nzMatchRouter |
||||
<span>人群营养标准管理</span> |
[routerLink]="['/', 'ingredient', 'item']" |
||||
</li> |
> |
||||
<li nz-menu-item nzMatchRouter [routerLink]="['/','organization']"> |
食谱库 |
||||
<span nz-icon nzType="usergroup-add" nzTheme="outline"></span> |
</li> |
||||
<span>单位管理</span> |
<!-- <li nz-menu-item nzMatchRouter [routerLink]="['/','ingredient','review']">食谱审核</li> --> |
||||
</li> |
<li |
||||
<li nz-submenu nzTitle="系统设置" nzIcon="setting" [nzOpen]="currentUrl.includes('/system/')"> |
nz-menu-item |
||||
<ul> |
nzMatchRouter |
||||
<li nz-menu-item nzMatchRouter [routerLink]="['/','system','user']">用户管理</li> |
[routerLink]="['/', 'ingredient', 'release']" |
||||
</ul> |
> |
||||
</li> |
食谱发布计划 |
||||
</ul> |
</li> |
||||
</nz-sider> |
</ul> |
||||
<nz-layout class="inner-layout overflow-hidden"> |
</li> |
||||
<router-outlet></router-outlet> |
<li |
||||
</nz-layout> |
nz-menu-item |
||||
</nz-layout> |
nz-icon="profile" |
||||
</nz-layout> |
nzMatchRouter |
||||
</ng-template> |
[routerLink]="['/', 'standard']" |
||||
|
> |
||||
|
<span |
||||
|
nz-icon |
||||
|
nzType="profile" |
||||
|
nzTheme="outline" |
||||
|
></span> |
||||
|
<span>人群营养标准管理</span> |
||||
|
</li> |
||||
|
<li |
||||
|
nz-menu-item |
||||
|
nzMatchRouter |
||||
|
[routerLink]="['/', 'organization']" |
||||
|
> |
||||
|
<span |
||||
|
nz-icon |
||||
|
nzType="usergroup-add" |
||||
|
nzTheme="outline" |
||||
|
></span> |
||||
|
<span>单位管理</span> |
||||
|
</li> |
||||
|
<li |
||||
|
nz-submenu |
||||
|
nzTitle="系统设置" |
||||
|
nzIcon="setting" |
||||
|
[nzOpen]="currentUrl.includes('/system/')" |
||||
|
> |
||||
|
<ul> |
||||
|
<li |
||||
|
nz-menu-item |
||||
|
nzMatchRouter |
||||
|
[routerLink]="['/', 'system', 'user']" |
||||
|
> |
||||
|
用户管理 |
||||
|
</li> |
||||
|
</ul> |
||||
|
</li> |
||||
|
</ul> |
||||
|
</nz-sider> |
||||
|
<nz-layout class="inner-layout overflow-hidden"> |
||||
|
<router-outlet></router-outlet> |
||||
|
<lib-copyright></lib-copyright> |
||||
|
</nz-layout> |
||||
|
</nz-layout> |
||||
|
</nz-layout> |
||||
|
</ng-template> |
||||
|
@ -1,63 +1,95 @@ |
|||||
<section class="h-full flex items-center justify-center"> |
<section class="h-full flex items-center justify-center flex-col"> |
||||
<div class="login"> |
<div class="login"> |
||||
<!-- <div> |
<!-- <div> |
||||
<h1 class="text-center my-[25px]"> |
<h1 class="text-center my-[25px]"> |
||||
<img class="logo" [src]="'/assets/images/jl-logo.png'" /> |
<img class="logo" [src]="'/assets/images/jl-logo.png'" /> |
||||
|
|
||||
</h1> |
</h1> |
||||
</div> --> |
</div> --> |
||||
<div class="card shadow-2xl"> |
<div class="card shadow-2xl"> |
||||
<div class="img"></div> |
<div class="img"></div> |
||||
<div class="form py-5 px-10 flex-1"> |
<div class="form py-5 px-10 flex-1"> |
||||
<div class="text-left "> |
<div class="text-left"> |
||||
<h2 class="mt-4 text-3xl font-bold">{{appName}}后台</h2> |
<h2 class="mt-4 text-3xl font-bold">{{ appName }}后台</h2> |
||||
<h3 class="mt-10 text-xl">登录</h3> |
<h3 class="mt-10 text-xl">登录</h3> |
||||
|
|
||||
<form nz-form [formGroup]="loginForm" class="mt-10"> |
<form |
||||
<nz-form-item> |
nz-form |
||||
<nz-form-control [nzErrorTip]="formErrorTipsTpl"> |
[formGroup]="loginForm" |
||||
<nz-input-group [nzPrefix]="prefixTemplateUser" nzSize="large"> |
class="mt-10" |
||||
<input nz-input nzSize="large" placeholder="账户" formControlName="uid" /> |
> |
||||
</nz-input-group> |
<nz-form-item> |
||||
<ng-template #prefixTemplateUser> |
<nz-form-control [nzErrorTip]="formErrorTipsTpl"> |
||||
<span nz-icon nzType="user"></span> |
<nz-input-group |
||||
<nz-divider nzType="vertical"></nz-divider> |
[nzPrefix]="prefixTemplateUser" |
||||
</ng-template> |
nzSize="large" |
||||
</nz-form-control> |
> |
||||
</nz-form-item> |
<input |
||||
<nz-form-item> |
nz-input |
||||
<nz-form-control [nzErrorTip]="formErrorTipsTpl"> |
nzSize="large" |
||||
<nz-input-group [nzPrefix]="prefixTemplatePassword" nzSize="large"> |
placeholder="账户" |
||||
<input nz-input type="password" placeholder="密码" formControlName="pwd" /> |
formControlName="uid" |
||||
</nz-input-group> |
/> |
||||
<ng-template #prefixTemplatePassword> |
</nz-input-group> |
||||
<span nz-icon nzType="lock"></span> |
<ng-template #prefixTemplateUser> |
||||
<nz-divider nzType="vertical"></nz-divider> |
<span |
||||
</ng-template> |
nz-icon |
||||
</nz-form-control> |
nzType="user" |
||||
</nz-form-item> |
></span> |
||||
<nz-form-item> |
<nz-divider nzType="vertical"></nz-divider> |
||||
<nz-form-control> |
</ng-template> |
||||
<button nz-button |
</nz-form-control> |
||||
nzType="primary" |
</nz-form-item> |
||||
nzBlock |
<nz-form-item> |
||||
class="btn" |
<nz-form-control [nzErrorTip]="formErrorTipsTpl"> |
||||
nzSize="large" |
<nz-input-group |
||||
(click)="onLogin()" |
[nzPrefix]="prefixTemplatePassword" |
||||
[nzLoading]="loading"> |
nzSize="large" |
||||
登录 |
> |
||||
</button> |
<input |
||||
</nz-form-control> |
nz-input |
||||
</nz-form-item> |
type="password" |
||||
</form> |
placeholder="密码" |
||||
</div> |
formControlName="pwd" |
||||
</div> |
/> |
||||
</div> |
</nz-input-group> |
||||
</div> |
<ng-template #prefixTemplatePassword> |
||||
|
<span |
||||
|
nz-icon |
||||
|
nzType="lock" |
||||
|
></span> |
||||
|
<nz-divider nzType="vertical"></nz-divider> |
||||
|
</ng-template> |
||||
|
</nz-form-control> |
||||
|
</nz-form-item> |
||||
|
<nz-form-item> |
||||
|
<nz-form-control> |
||||
|
<button |
||||
|
nz-button |
||||
|
nzType="primary" |
||||
|
nzBlock |
||||
|
class="btn" |
||||
|
nzSize="large" |
||||
|
(click)="onLogin()" |
||||
|
[nzLoading]="loading" |
||||
|
> |
||||
|
登录 |
||||
|
</button> |
||||
|
</nz-form-control> |
||||
|
</nz-form-item> |
||||
|
</form> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<lib-copyright class="mt-10"></lib-copyright> |
||||
</section> |
</section> |
||||
|
|
||||
<ng-template #formErrorTipsTpl let-control> |
<ng-template |
||||
<div class="text-left"> |
#formErrorTipsTpl |
||||
<form-error-tips [control]="control"></form-error-tips> |
let-control |
||||
</div> |
> |
||||
</ng-template> |
<div class="text-left"> |
||||
|
<form-error-tips [control]="control"></form-error-tips> |
||||
|
</div> |
||||
|
</ng-template> |
||||
|
@ -0,0 +1,10 @@ |
|||||
|
<div class="flex items-center justify-center pb-2"> |
||||
|
<a |
||||
|
href="https://beian.miit.gov.cn/" |
||||
|
target="_blank" |
||||
|
class="text-black text-opacity-70" |
||||
|
> |
||||
|
蜀ICP备2023038072号 |
||||
|
</a> |
||||
|
<span class="text-black text-opacity-70 ml-4"> ©{{ year }} 成都积络科技有限公司</span> |
||||
|
</div> |
@ -0,0 +1,10 @@ |
|||||
|
import { Component } from "@angular/core"; |
||||
|
|
||||
|
@Component({ |
||||
|
selector: "lib-copyright", |
||||
|
templateUrl: "./copyright.component.html", |
||||
|
styleUrls: ["./copyright.component.less"], |
||||
|
}) |
||||
|
export class CopyrightComponent { |
||||
|
year = new Date().getFullYear(); |
||||
|
} |
@ -1,93 +1,179 @@ |
|||||
<ng-container *ngIf="fullPage else layoutTpl"> |
<ng-container *ngIf="fullPage; else layoutTpl"> |
||||
<router-outlet></router-outlet> |
<router-outlet></router-outlet> |
||||
</ng-container> |
</ng-container> |
||||
|
|
||||
<ng-template #layoutTpl> |
<ng-template #layoutTpl> |
||||
<nz-layout class="app-layout"> |
<nz-layout class="app-layout"> |
||||
<nz-header class="app-header"> |
<nz-header class="app-header"> |
||||
<div class="flex items-center justify-between h-full"> |
<div class="flex items-center justify-between h-full"> |
||||
<div class="logo flex items-center h-full"> |
<div class="logo flex items-center h-full"> |
||||
<img class="block h-[40px] mr-1" src="../assets/images/jl-logo.png" /> |
<img |
||||
<span class="text-lg text-white font-bold"> |
class="block h-[40px] mr-1" |
||||
{{appName}} |
src="../assets/images/jl-logo.png" |
||||
</span> |
/> |
||||
</div> |
<span class="text-lg text-white font-bold"> |
||||
<div class="profile"> |
{{ appName }} |
||||
<button |
</span> |
||||
nz-button |
</div> |
||||
nzType="text" |
<div class="profile"> |
||||
nz-dropdown |
<button |
||||
[nzDropdownMenu]="menu" |
nz-button |
||||
class="text-white hover:text-white focus:text-white"> |
nzType="text" |
||||
{{account.name}} |
nz-dropdown |
||||
</button> |
[nzDropdownMenu]="menu" |
||||
<nz-dropdown-menu #menu="nzDropdownMenu"> |
class="text-white hover:text-white focus:text-white" |
||||
<ul nz-menu nzSelectable> |
> |
||||
<li nz-menu-item (click)="logout()"> |
{{ account.name }} |
||||
退出登录 |
</button> |
||||
</li> |
<nz-dropdown-menu #menu="nzDropdownMenu"> |
||||
</ul> |
<ul |
||||
</nz-dropdown-menu> |
nz-menu |
||||
</div> |
nzSelectable |
||||
</div> |
> |
||||
</nz-header> |
<li |
||||
<nz-layout class="app-layout-main"> |
nz-menu-item |
||||
<nz-sider nzWidth="200px" class="sider-menu" nzTheme="light"> |
(click)="logout()" |
||||
|
> |
||||
<ul nz-menu nzMode="inline"> |
退出登录 |
||||
<li nz-menu-item class="k-icon" [routerLink]="['/','dashboard']" nzMatchRouter |
</li> |
||||
*ngxPermissionsOnly="['18']"> |
</ul> |
||||
<span nz-icon nzType="question-circle" nzTheme="outline"></span> |
</nz-dropdown-menu> |
||||
<span>使用流程</span> |
</div> |
||||
</li> |
</div> |
||||
<li nz-menu-item class="k-icon" (click)="openDataVis()" nzMatchRouter |
</nz-header> |
||||
*ngxPermissionsOnly="['19','20']"> |
<nz-layout class="app-layout-main"> |
||||
<span nz-icon nzType="fund" nzTheme="outline"></span> |
<nz-sider |
||||
<span>大屏显示</span> |
nzWidth="200px" |
||||
</li> |
class="sider-menu" |
||||
<!-- <li nz-menu-item [routerLink]="['/','meal-setting']" nzMatchRouter |
nzTheme="light" |
||||
|
> |
||||
|
<ul |
||||
|
nz-menu |
||||
|
nzMode="inline" |
||||
|
> |
||||
|
<li |
||||
|
nz-menu-item |
||||
|
class="k-icon" |
||||
|
[routerLink]="['/', 'dashboard']" |
||||
|
nzMatchRouter |
||||
|
*ngxPermissionsOnly="['18']" |
||||
|
> |
||||
|
<span |
||||
|
nz-icon |
||||
|
nzType="question-circle" |
||||
|
nzTheme="outline" |
||||
|
></span> |
||||
|
<span>使用流程</span> |
||||
|
</li> |
||||
|
<li |
||||
|
nz-menu-item |
||||
|
class="k-icon" |
||||
|
(click)="openDataVis()" |
||||
|
nzMatchRouter |
||||
|
*ngxPermissionsOnly="['19', '20']" |
||||
|
> |
||||
|
<span |
||||
|
nz-icon |
||||
|
nzType="fund" |
||||
|
nzTheme="outline" |
||||
|
></span> |
||||
|
<span>大屏显示</span> |
||||
|
</li> |
||||
|
<!-- <li nz-menu-item [routerLink]="['/','meal-setting']" nzMatchRouter |
||||
*ngxPermissionsOnly="['21','22']"> |
*ngxPermissionsOnly="['21','22']"> |
||||
<span nz-icon nzType="setting" nzTheme="outline"></span> |
<span nz-icon nzType="setting" nzTheme="outline"></span> |
||||
<span>配餐设置</span> |
<span>配餐设置</span> |
||||
</li> --> |
</li> --> |
||||
<li nz-menu-item class="k-icon" [routerLink]="['/','food']" nzMatchRouter |
<li |
||||
*ngxPermissionsOnly="['23','24']"> |
nz-menu-item |
||||
<span nz-icon nzType="k-icon:carrot" nzTheme="outline"></span> |
class="k-icon" |
||||
<span>食材管理</span> |
[routerLink]="['/', 'food']" |
||||
</li> |
nzMatchRouter |
||||
<li nz-menu-item class="k-icon" [routerLink]="['/','dish']" nzMatchRouter |
*ngxPermissionsOnly="['23', '24']" |
||||
*ngxPermissionsOnly="['25','26']"> |
> |
||||
<span nz-icon nzType="k-icon:food" nzTheme="outline"></span> |
<span |
||||
<span>菜品管理</span> |
nz-icon |
||||
</li> |
nzType="k-icon:carrot" |
||||
|
nzTheme="outline" |
||||
|
></span> |
||||
|
<span>食材管理</span> |
||||
|
</li> |
||||
|
<li |
||||
|
nz-menu-item |
||||
|
class="k-icon" |
||||
|
[routerLink]="['/', 'dish']" |
||||
|
nzMatchRouter |
||||
|
*ngxPermissionsOnly="['25', '26']" |
||||
|
> |
||||
|
<span |
||||
|
nz-icon |
||||
|
nzType="k-icon:food" |
||||
|
nzTheme="outline" |
||||
|
></span> |
||||
|
<span>菜品管理</span> |
||||
|
</li> |
||||
|
|
||||
<li nz-submenu nzTitle="食谱管理" nzIcon="book" [nzOpen]="currentUrl.includes('/ingredient/')" |
<li |
||||
*ngxPermissionsOnly="['27','28','29','30','31']"> |
nz-submenu |
||||
<ul> |
nzTitle="食谱管理" |
||||
<li nz-menu-item nzMatchRouter *ngxPermissionsOnly="['27','28','29']" |
nzIcon="book" |
||||
[routerLink]="['/','ingredient','item']">食谱库</li> |
[nzOpen]="currentUrl.includes('/ingredient/')" |
||||
<li nz-menu-item nzMatchRouter *ngxPermissionsOnly="['30','31']" |
*ngxPermissionsOnly="['27', '28', '29', '30', '31']" |
||||
[routerLink]="['/','ingredient','release']">食谱发布计划</li> |
> |
||||
</ul> |
<ul> |
||||
</li> |
<li |
||||
|
nz-menu-item |
||||
|
nzMatchRouter |
||||
|
*ngxPermissionsOnly="['27', '28', '29']" |
||||
|
[routerLink]="['/', 'ingredient', 'item']" |
||||
|
> |
||||
|
食谱库 |
||||
|
</li> |
||||
|
<li |
||||
|
nz-menu-item |
||||
|
nzMatchRouter |
||||
|
*ngxPermissionsOnly="['30', '31']" |
||||
|
[routerLink]="['/', 'ingredient', 'release']" |
||||
|
> |
||||
|
食谱发布计划 |
||||
|
</li> |
||||
|
</ul> |
||||
|
</li> |
||||
|
|
||||
<li nz-submenu nzTitle="基础信息设置" nzIcon="user" [nzOpen]="currentUrl.includes('/system/')" |
<li |
||||
*ngxPermissionsOnly="['33','34','35','36','37']"> |
nz-submenu |
||||
<ul> |
nzTitle="基础信息设置" |
||||
<li nz-menu-item nzMatchRouter [routerLink]="['/','system','org']" |
nzIcon="user" |
||||
*ngxPermissionsOnly="['33','34',]">单位信息设置</li> |
[nzOpen]="currentUrl.includes('/system/')" |
||||
</ul> |
*ngxPermissionsOnly="['33', '34', '35', '36', '37']" |
||||
<ul> |
> |
||||
<li nz-menu-item nzMatchRouter [routerLink]="['/','system','user']" |
<ul> |
||||
*ngxPermissionsOnly="['35','36','37']">用户管理</li> |
<li |
||||
</ul> |
nz-menu-item |
||||
</li> |
nzMatchRouter |
||||
</ul> |
[routerLink]="['/', 'system', 'org']" |
||||
</nz-sider> |
*ngxPermissionsOnly="['33', '34']" |
||||
<nz-layout class="inner-layout overflow-hidden"> |
> |
||||
<router-outlet></router-outlet> |
单位信息设置 |
||||
</nz-layout> |
</li> |
||||
</nz-layout> |
</ul> |
||||
</nz-layout> |
<ul> |
||||
</ng-template> |
<li |
||||
|
nz-menu-item |
||||
|
nzMatchRouter |
||||
|
[routerLink]="['/', 'system', 'user']" |
||||
|
*ngxPermissionsOnly="['35', '36', '37']" |
||||
|
> |
||||
|
用户管理 |
||||
|
</li> |
||||
|
</ul> |
||||
|
</li> |
||||
|
</ul> |
||||
|
</nz-sider> |
||||
|
<nz-layout class="inner-layout overflow-hidden"> |
||||
|
<router-outlet></router-outlet> |
||||
|
<lib-copyright></lib-copyright> |
||||
|
</nz-layout> |
||||
|
</nz-layout> |
||||
|
</nz-layout> |
||||
|
</ng-template> |
||||
|
@ -1,65 +1,99 @@ |
|||||
<section class="h-full "> |
<section class="h-full relative"> |
||||
<div class="login"> |
<div class="login"> |
||||
<!-- <div> |
<!-- <div> |
||||
<h1 class="text-center my-[25px]"> |
<h1 class="text-center my-[25px]"> |
||||
<img class="logo" [src]="'/assets/images/jl-logo.png'" /> |
<img class="logo" [src]="'/assets/images/jl-logo.png'" /> |
||||
|
|
||||
</h1> |
</h1> |
||||
</div> --> |
</div> --> |
||||
<div class="card "> |
<div class="card"> |
||||
<div class="img flex items-center justify-center"> |
<div class="img flex items-center justify-center"> |
||||
<img src="assets/images/jl-logo.png" /> |
<img src="assets/images/jl-logo.png" /> |
||||
</div> |
</div> |
||||
<div class="form py-5 px-10 flex-1"> |
<div class="form py-5 px-10 flex-1"> |
||||
<div class="form-inner"> |
<div class="form-inner"> |
||||
<h2 class="mt-4 text-3xl font-bold">{{appName}}</h2> |
<h2 class="mt-4 text-3xl font-bold">{{ appName }}</h2> |
||||
<h3 class="mt-10 text-xl">登录</h3> |
<h3 class="mt-10 text-xl">登录</h3> |
||||
|
|
||||
<form nz-form [formGroup]="loginForm" class="mt-10"> |
<form |
||||
<nz-form-item> |
nz-form |
||||
<nz-form-control [nzErrorTip]="formErrorTipsTpl"> |
[formGroup]="loginForm" |
||||
<nz-input-group [nzPrefix]="prefixTemplateUser" nzSize="large"> |
class="mt-10" |
||||
<input nz-input nzSize="large" placeholder="账户" formControlName="uid" /> |
> |
||||
</nz-input-group> |
<nz-form-item> |
||||
<ng-template #prefixTemplateUser> |
<nz-form-control [nzErrorTip]="formErrorTipsTpl"> |
||||
<span nz-icon nzType="user"></span> |
<nz-input-group |
||||
<nz-divider nzType="vertical"></nz-divider> |
[nzPrefix]="prefixTemplateUser" |
||||
</ng-template> |
nzSize="large" |
||||
</nz-form-control> |
> |
||||
</nz-form-item> |
<input |
||||
<nz-form-item> |
nz-input |
||||
<nz-form-control [nzErrorTip]="formErrorTipsTpl"> |
nzSize="large" |
||||
<nz-input-group [nzPrefix]="prefixTemplatePassword" nzSize="large"> |
placeholder="账户" |
||||
<input nz-input type="password" placeholder="密码" formControlName="pwd" /> |
formControlName="uid" |
||||
</nz-input-group> |
/> |
||||
<ng-template #prefixTemplatePassword> |
</nz-input-group> |
||||
<span nz-icon nzType="lock"></span> |
<ng-template #prefixTemplateUser> |
||||
<nz-divider nzType="vertical"></nz-divider> |
<span |
||||
</ng-template> |
nz-icon |
||||
</nz-form-control> |
nzType="user" |
||||
</nz-form-item> |
></span> |
||||
<nz-form-item> |
<nz-divider nzType="vertical"></nz-divider> |
||||
<nz-form-control> |
</ng-template> |
||||
<button nz-button |
</nz-form-control> |
||||
nzType="primary" |
</nz-form-item> |
||||
nzBlock |
<nz-form-item> |
||||
class="btn" |
<nz-form-control [nzErrorTip]="formErrorTipsTpl"> |
||||
nzSize="large" |
<nz-input-group |
||||
(click)="onLogin()" |
[nzPrefix]="prefixTemplatePassword" |
||||
[nzLoading]="loading"> |
nzSize="large" |
||||
登录 |
> |
||||
</button> |
<input |
||||
</nz-form-control> |
nz-input |
||||
</nz-form-item> |
type="password" |
||||
</form> |
placeholder="密码" |
||||
</div> |
formControlName="pwd" |
||||
</div> |
/> |
||||
</div> |
</nz-input-group> |
||||
</div> |
<ng-template #prefixTemplatePassword> |
||||
|
<span |
||||
|
nz-icon |
||||
|
nzType="lock" |
||||
|
></span> |
||||
|
<nz-divider nzType="vertical"></nz-divider> |
||||
|
</ng-template> |
||||
|
</nz-form-control> |
||||
|
</nz-form-item> |
||||
|
<nz-form-item> |
||||
|
<nz-form-control> |
||||
|
<button |
||||
|
nz-button |
||||
|
nzType="primary" |
||||
|
nzBlock |
||||
|
class="btn" |
||||
|
nzSize="large" |
||||
|
(click)="onLogin()" |
||||
|
[nzLoading]="loading" |
||||
|
> |
||||
|
登录 |
||||
|
</button> |
||||
|
</nz-form-control> |
||||
|
</nz-form-item> |
||||
|
</form> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="copyright"> |
||||
|
<lib-copyright></lib-copyright> |
||||
|
</div> |
||||
</section> |
</section> |
||||
|
|
||||
<ng-template #formErrorTipsTpl let-control> |
<ng-template |
||||
<div class="text-left"> |
#formErrorTipsTpl |
||||
<form-error-tips [control]="control"></form-error-tips> |
let-control |
||||
</div> |
> |
||||
</ng-template> |
<div class="text-left"> |
||||
|
<form-error-tips [control]="control"></form-error-tips> |
||||
|
</div> |
||||
|
</ng-template> |
||||
|
Loading…
Reference in new issue