고객센터 리스트 수정

This commit is contained in:
Park Byung Eun 2022-07-26 08:39:58 +00:00
parent 5ad7b6ed80
commit d3c6f99041
2 changed files with 98 additions and 161 deletions

View File

@ -13,30 +13,23 @@
<div class="text-4xl font-extrabold tracking-tight">고객센터</div> <div class="text-4xl font-extrabold tracking-tight">고객센터</div>
<!-- Actions --> <!-- Actions -->
<div class="flex shrink-0 items-center mt-6 sm:mt-0 sm:ml-4"> <div class="flex shrink-0 items-center mt-6 sm:mt-0 sm:ml-4">
<!-- Memo --> <!-- Search -->
<!-- <mat-form-field>
<ng-container *ngIf="customers$ | async as customers">
<ng-container
*ngFor="let customer of customers; trackBy: __trackByFn"
>
<div
class="inventory-grid grid items-center gap-4 py-3 px-6 md:px-8 border-b"
>
<fieldset>
총 파트너수:{{ customer.totalPartnerCount }} 총 보유머니:{{
customer.totalHoldingMoney
}}
총 콤프:{{ customer.totalComp }} 총 합계:{{
customer.total
}}
</fieldset>
</div>
</ng-container>
</ng-container>
</mat-form-field> -->
<button mat-icon-button (click)="__onClickSearch()">
<mat-icon [svgIcon]="'heroicons_outline:search'"></mat-icon>
</button>
</div>
</div>
<!-- Search -->
<div
*ngIf="__isSearchOpened"
class="relative flex flex-col sm:flex-row flex-0 sm:items-center sm:justify-between py-4 px-6 md:px-8 border-b"
>
<!-- Actions -->
<div fxLayout="row wrap" class="items-center mt-6 sm:mt-0 sm:ml-0">
<!-- SelectBox --> <!-- SelectBox -->
<!-- <mat-form-field> <mat-form-field fxFlex class="bet-mat-form-field-wrapper-mb-0 mr-2">
<mat-select placeholder="리스트수"> <mat-select placeholder="리스트수">
<mat-option value="40">40</mat-option> <mat-option value="40">40</mat-option>
<mat-option value="60">60</mat-option> <mat-option value="60">60</mat-option>
@ -44,7 +37,7 @@
<mat-option value="100">100</mat-option> <mat-option value="100">100</mat-option>
</mat-select> </mat-select>
</mat-form-field> </mat-form-field>
<mat-form-field> <mat-form-field fxFlex class="bet-mat-form-field-wrapper-mb-0 mr-2">
<mat-select placeholder="레벨"> <mat-select placeholder="레벨">
<mat-option value="level1">LV.1</mat-option> <mat-option value="level1">LV.1</mat-option>
<mat-option value="level2">LV.2</mat-option> <mat-option value="level2">LV.2</mat-option>
@ -52,7 +45,7 @@
<mat-option value="level4">LV.4</mat-option> <mat-option value="level4">LV.4</mat-option>
</mat-select> </mat-select>
</mat-form-field> </mat-form-field>
<mat-form-field> <mat-form-field fxFlex class="bet-mat-form-field-wrapper-mb-0 mr-2">
<mat-select placeholder="상태"> <mat-select placeholder="상태">
<mat-option value="">정상</mat-option> <mat-option value="">정상</mat-option>
<mat-option value="">대기</mat-option> <mat-option value="">대기</mat-option>
@ -62,85 +55,16 @@
<mat-option value="">정지</mat-option> <mat-option value="">정지</mat-option>
</mat-select> </mat-select>
</mat-form-field> </mat-form-field>
<mat-form-field> <!-- Search button -->
<mat-select placeholder="제한">
<mat-option value="">카지노제한</mat-option>
<mat-option value="">슬롯제한</mat-option>
</mat-select>
</mat-form-field>
<mat-form-field>
<mat-select placeholder="입금">
<mat-option value="">계좌입금</mat-option>
</mat-select>
</mat-form-field> -->
<mat-form-field>
<mat-select placeholder="아이디">
<mat-option value="">아이디</mat-option>
<mat-option value="">작성자</mat-option>
<mat-option value="">글제목</mat-option>
<mat-option value="">글내용</mat-option>
<mat-option value="">사이트명</mat-option>
<mat-option value="">답변내용</mat-option>
</mat-select>
</mat-form-field>
<!-- <mat-form-field>
<mat-select placeholder="입금">
<mat-option value="">계좌입금</mat-option>
</mat-select>
</mat-form-field>
<mat-form-field>
<mat-select placeholder="아이디">
<mat-option value="">아이디</mat-option>
<mat-option value="">닉네임</mat-option>
<mat-option value="">이름</mat-option>
<mat-option value="">사이트</mat-option>
<mat-option value="">파트너수동지급</mat-option>
</mat-select>
</mat-form-field>
<mat-form-field>
<mat-select placeholder="가입일 정렬">
<mat-option value="">가입일 정렬</mat-option>
<mat-option value="">아이디 정렬</mat-option>
<mat-option value="">닉네임 정렬</mat-option>
<mat-option value="">캐쉬 정렬</mat-option>
<mat-option value="">콤프 정렬</mat-option>
<mat-option value="">쿠폰 정렬</mat-option>
<mat-option value="">입금 정렬</mat-option>
<mat-option value="">출금 정렬</mat-option>
<mat-option value="">차익 정렬</mat-option>
</mat-select>
</mat-form-field>
<mat-form-field>
<mat-select placeholder="내림차순">
<mat-option value="">내림차순</mat-option>
<mat-option value="">오름차순</mat-option>
</mat-select>
</mat-form-field> -->
<!-- Search -->
<mat-form-field
class="fuse-mat-dense fuse-mat-no-subscript fuse-mat-rounded min-w-64"
>
<mat-icon
class="icon-size-5"
matPrefix
[svgIcon]="'heroicons_solid:search'"
></mat-icon>
<input
matInput
[formControl]="searchInputControl"
[autocomplete]="'off'"
[placeholder]="'Search'"
/>
</mat-form-field>
<!-- Add user button -->
<button <button
class="ml-4" fxFlex
mat-flat-button mat-flat-button
style="position: fixed; margin-top: 4px"
[color]="'primary'" [color]="'primary'"
(click)="__createProduct()" (click)="__createProduct()"
> >
<!-- <mat-icon [svgIcon]="'heroicons_outline:plus'"></mat-icon> --> <mat-icon [svgIcon]="'heroicons_outline:search'"></mat-icon>
<span class="ml-2 mr-1">검색하기</span> <span class="ml-2 mr-1">Search</span>
</button> </button>
</div> </div>
</div> </div>
@ -152,29 +76,42 @@
class="flex flex-col flex-auto sm:mb-18 overflow-hidden sm:overflow-y-auto" class="flex flex-col flex-auto sm:mb-18 overflow-hidden sm:overflow-y-auto"
> >
<ng-container *ngIf="customers$ | async as customers"> <ng-container *ngIf="customers$ | async as customers">
<ng-container *ngIf="customers.length > 0; else noCustomer"> <ng-container *ngIf="customers.length > 0; else noUser">
<div class="grid"> <div class="grid">
<!-- Header --> <!-- Header -->
<div <div
class="inventory-grid z-10 sticky top-0 grid gap-4 py-4 px-6 md:px-8 shadow text-md font-semibold text-secondary bg-gray-50 dark:bg-black dark:bg-opacity-5" class="inventory-grid z-10 sticky top-0 grid gap-4 py-4 px-6 md:px-8 shadow text-md font-semibold text-secondary bg-gray-50 dark:bg-black dark:bg-opacity-5"
matSort
matSortDisableClear
> >
<div class="hidden sm:block">선택</div> <div class="hidden lg:block">
<div class="hidden sm:block">일련번호</div> <mat-checkbox></mat-checkbox>
<div class="hidden sm:block">제목</div> </div>
<div class="hidden sm:block">작성자</div> <div class="hidden lg:block">번호</div>
<div class="hidden sm:block">등급</div> <div class="hidden lg:block">
<div class="hidden sm:block">메모</div> 제목
<div class="hidden sm:block">최근충전</div> <hr style="margin: 7px 0px" />
<div class="hidden sm:block">최근로그인</div> 작성일
<div class="hidden sm:block">상위</div> <hr style="margin: 7px 0px" />
<div class="hidden sm:block">사이트</div> 조회수
<div class="hidden sm:block">조회수</div> </div>
<div class="hidden sm:block">작성일</div>
<div class="hidden sm:block">답변</div> <div class="hidden lg:block">
<div class="hidden sm:block">상태</div> 작성자
<div class="hidden sm:block">로그인</div> <hr style="margin: 7px 0px" />
등급
<hr style="margin: 7px 0px" />
상위
</div>
<div class="hidden md:block">메모</div>
<div class="hidden md:block">최근충전</div>
<div class="hidden md:block">최근로그인</div>
<div class="hidden md:block">사이트</div>
<div class="hidden lg:block">
답변
<hr style="margin: 7px 0px" />
상태
<hr style="margin: 7px 0px" />
로그인
</div>
</div> </div>
<!-- Rows --> <!-- Rows -->
<ng-container *ngIf="customers$ | async as customers"> <ng-container *ngIf="customers$ | async as customers">
@ -194,25 +131,27 @@
<!-- 제목 --> <!-- 제목 -->
<div class="hidden sm:block truncate"> <div class="hidden sm:block truncate">
{{ customer.title }} {{ customer.title }}
<hr style="margin: 7px 0px" />
<!-- 작성일 -->
{{ customer.writeDate }}
<!-- 조회수 -->
<hr style="margin: 7px 0px" />
{{ customer.views }}
</div> </div>
<!-- 작성자 (닉네임)--> <!-- 작성자 (닉네임)-->
<!-- id --> <!-- id -->
<ng-container *ngIf="users$ | async as users">
<ng-container
*ngFor="let user of users; trackBy: __trackByFn"
>
<div
class="hidden sm:block truncate"
(click)="viewUserDetail(user.id!)"
>
{{ customer.signinId }}({{ customer.nickname }})
</div>
</ng-container>
</ng-container>
<!-- 등급 -->
<div class="hidden sm:block truncate"> <div class="hidden sm:block truncate">
LV.{{ customer.level }} {{ customer.signinId }}
<hr style="margin: 7px 0px" />
<!-- 등급 -->
{{ customer.level }}
<!-- 상위 -->
<hr style="margin: 7px 0px" />
{{ customer.highRank }}
</div> </div>
<!-- 메모 --> <!-- 메모 -->
<div class="hidden sm:block truncate"> <div class="hidden sm:block truncate">
{{ customer.memo }} {{ customer.memo }}
@ -225,44 +164,29 @@
<div class="hidden sm:block truncate"> <div class="hidden sm:block truncate">
{{ customer.finalSigninDate }} {{ customer.finalSigninDate }}
</div> </div>
<!-- 상위 -->
<div class="hidden sm:block truncate">
{{ customer.highRank }}
</div>
<!-- 사이트 --> <!-- 사이트 -->
<div class="hidden sm:block truncate"> <div class="hidden sm:block truncate">
{{ customer.site }} {{ customer.site }}
</div> </div>
<!-- 조회수 -->
<div class="hidden sm:block truncate">
{{ customer.views }}
</div>
<!-- 작성일 -->
<div class="hidden sm:block truncate">
{{ customer.writeDate }}
</div>
<!-- 답변 -->
<div class="hidden sm:block truncate"> <div class="hidden sm:block truncate">
<!-- 답변 -->
{{ customer.answer }} {{ customer.answer }}
</div> <hr style="margin: 7px 0px" />
<!-- 상태 --> <!-- 상태 -->
<div class="hidden sm:block truncate">
{{ customer.state }} {{ customer.state }}
</div> <hr style="margin: 7px 0px" />
<!-- 로그인 --> <!-- 로그인 -->
<div class="hidden sm:block truncate">
<button mat-flat-button [color]="'primary'"> <button mat-flat-button [color]="'primary'">
중복로그인 중복로그인
</button> </button>
</div> </div>
<!-- management -->
</div> </div>
</ng-container> </ng-container>
</ng-container> </ng-container>
<div class="hidden sm:block truncate">
<button mat-flat-button [color]="'primary'">
디비에서 완전삭제
</button>
</div>
</div> </div>
<mat-paginator <mat-paginator
@ -277,11 +201,11 @@
</ng-container> </ng-container>
</ng-container> </ng-container>
<ng-template #noCustomer> <ng-template #noUser>
<div <div
class="p-8 sm:p-16 border-t text-4xl font-semibold tracking-tight text-center" class="p-8 sm:p-16 border-t text-4xl font-semibold tracking-tight text-center"
> >
There are no customers! There are no data!
</div> </div>
</ng-template> </ng-template>
</div> </div>

View File

@ -42,18 +42,22 @@ import { Router } from '@angular/router';
/* language=SCSS */ /* language=SCSS */
` `
.inventory-grid { .inventory-grid {
grid-template-columns: 60px auto 40px; /* CB 번호 제목 작성자 답변 */
grid-template-columns: 20px 40px auto 100px 100px;
@screen sm { @screen sm {
grid-template-columns: 60px 60px 60px 60px 60px 60px auto 60px; /* CB 번호 제목 작성자 최근충전 답변 */
grid-template-columns: 20px 40px auto 100px 100px;
} }
@screen md { @screen md {
grid-template-columns: 60px 60px 60px 60px 60px 60px auto 60px 60px; /* CB 번호 제목 작성자 최근충전 답변 */
grid-template-columns: 20px 40px auto 100px 100px;
} }
@screen lg { @screen lg {
grid-template-columns: 60px 70px 70px 70px 70px 100px 60px 60px auto 60px 60px 60px 60px; /* CB 번호 제목 작성자 메모 최근충전 최근로그인 사이트 답변 */
grid-template-columns: 20px 40px auto 100px 40px 140px 140px 140px 140px;
} }
} }
`, `,
@ -73,6 +77,7 @@ export class ListComponent implements OnInit, AfterViewInit, OnDestroy {
searchInputControl = new FormControl(); searchInputControl = new FormControl();
selectedCustomer?: Customer; selectedCustomer?: Customer;
pagination?: CustomerPagination; pagination?: CustomerPagination;
__isSearchOpened = false;
private _unsubscribeAll: Subject<any> = new Subject<any>(); private _unsubscribeAll: Subject<any> = new Subject<any>();
@ -166,7 +171,7 @@ export class ListComponent implements OnInit, AfterViewInit, OnDestroy {
// @ Public methods // @ Public methods
// ----------------------------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------------------------
viewUserDetail(id: string): void { viewUserDetail(id?: string): void {
let url: string = 'member/user/' + id; let url: string = 'member/user/' + id;
this.router.navigateByUrl(url); this.router.navigateByUrl(url);
} }
@ -174,6 +179,14 @@ export class ListComponent implements OnInit, AfterViewInit, OnDestroy {
// @ Private methods // @ Private methods
// ----------------------------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------------------------
/**
* toggle the search
* Used in 'bar'
*/
__onClickSearch(): void {
this.__isSearchOpened = !this.__isSearchOpened;
}
/** /**
* Create product * Create product
*/ */