667 lines
26 KiB
HTML
667 lines
26 KiB
HTML
<div
|
|
class="flex flex-col w-full min-w-0 sm:absolute sm:inset-0 sm:overflow-hidden"
|
|
>
|
|
<mat-drawer-container class="flex-auto sm:h-full">
|
|
<!-- Drawer -->
|
|
<mat-drawer
|
|
class="sm:w-96 dark:bg-gray-900"
|
|
[autoFocus]="false"
|
|
[mode]="drawerMode"
|
|
[opened]="drawerOpened"
|
|
#drawer
|
|
>
|
|
<!-- Header -->
|
|
<div class="flex items-center justify-between m-8 mr-6 sm:my-10">
|
|
<!-- Title -->
|
|
<div class="text font-extrabold tracking-tight leading-none">
|
|
<div class="flex flex-col flex-auto order-2 md:order-1">
|
|
<div class="text font-semibold leading-tight">사용자</div>
|
|
|
|
<div class="mt-6">
|
|
<div class="flex flex-wrap items-center text-secondary my-1">
|
|
<span>카테고리</span>
|
|
<span class="mx-2">•</span>
|
|
<!-- <span class="whitespace-nowrap"
|
|
>on00, on01, on02</span
|
|
> -->
|
|
<mat-chip-list aria-label="Fish selection">
|
|
<mat-chip color="accent">on00</mat-chip>
|
|
<mat-chip color="accent">on01</mat-chip>
|
|
<mat-chip color="accent" selected>on02</mat-chip>
|
|
<mat-chip color="accent" selected>on03</mat-chip>
|
|
</mat-chip-list>
|
|
</div>
|
|
<div class="flex items-center text-secondary my-1">
|
|
<span>사이트명</span>
|
|
<span class="mx-2">•</span>
|
|
<span>test.com</span>
|
|
</div>
|
|
<div class="flex items-center text-secondary my-1">
|
|
<span>가입일자</span>
|
|
<span class="mx-2">•</span>
|
|
<span>{{
|
|
currentMember?.getCreatedAt() | date: "yyyy/MM/dd HH:mm"
|
|
}}</span>
|
|
</div>
|
|
<div class="flex items-center text-secondary my-1">
|
|
<span>하부회원수</span>
|
|
<span class="mx-2">•</span>
|
|
<span>0명</span>
|
|
</div>
|
|
<div class="flex items-center text-secondary my-1">
|
|
<span>총입금</span>
|
|
<span class="mx-2">•</span>
|
|
<span>2,000</span>
|
|
</div>
|
|
<div class="flex items-center text-secondary my-1">
|
|
<span>총출금</span>
|
|
<span class="mx-2">•</span>
|
|
<span>2,000</span>
|
|
</div>
|
|
<div class="flex items-center text-secondary my-1">
|
|
<span>총입금-총출금</span>
|
|
<span class="mx-2">•</span>
|
|
<span>2,000</span>
|
|
</div>
|
|
<div class="flex items-center text-secondary my-1">
|
|
<span>최근30일 배팅금액</span>
|
|
<span class="mx-2">•</span>
|
|
<span>200,000</span>
|
|
</div>
|
|
<div class="flex items-center text-secondary my-1">
|
|
<span>당첨금액</span>
|
|
<span class="mx-2">•</span>
|
|
<span>200,000</span>
|
|
</div>
|
|
<div class="flex items-center text-secondary my-1">
|
|
<span>수수료</span>
|
|
<span class="mx-2">•</span>
|
|
<span>0</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- Close button -->
|
|
<div class="lg:hidden">
|
|
<button mat-icon-button (click)="drawer.close()">
|
|
<mat-icon [svgIcon]="'heroicons_outline:x'"></mat-icon>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<!-- Panel links -->
|
|
<div class="flex flex-col divide-y border-t border-b">
|
|
<ng-container *ngFor="let panel of panels; trackBy: trackByFn">
|
|
<div
|
|
class="flex px-8 py-5 cursor-pointer"
|
|
[ngClass]="{
|
|
'hover:bg-gray-100 dark:hover:bg-hover':
|
|
!selectedPanel || selectedPanel !== panel.id,
|
|
'bg-primary-50 dark:bg-hover':
|
|
selectedPanel && selectedPanel === panel.id
|
|
}"
|
|
(click)="goToPanel(panel.id)"
|
|
>
|
|
<mat-icon
|
|
[ngClass]="{
|
|
'text-hint': !selectedPanel || selectedPanel !== panel.id,
|
|
'text-primary dark:text-primary-500':
|
|
selectedPanel && selectedPanel === panel.id
|
|
}"
|
|
[svgIcon]="panel.icon"
|
|
></mat-icon>
|
|
<div class="ml-3">
|
|
<div
|
|
class="font-medium leading-6"
|
|
[ngClass]="{
|
|
'text-primary dark:text-primary-500':
|
|
selectedPanel && selectedPanel === panel.id
|
|
}"
|
|
>
|
|
{{ panel.title }}
|
|
</div>
|
|
<div class="mt-0.5 text-secondary">
|
|
{{ panel.description }}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</ng-container>
|
|
</div>
|
|
</mat-drawer>
|
|
|
|
<!-- Drawer content -->
|
|
<mat-drawer-content class="flex flex-col">
|
|
<!-- Main -->
|
|
<div class="flex-auto px-6 pt-9 pb-12 md:p-8 md:pb-12 lg:p-12">
|
|
<!-- Panel header -->
|
|
<div class="flex items-center">
|
|
<!-- Drawer toggle -->
|
|
<button
|
|
class="lg:hidden -ml-2"
|
|
mat-icon-button
|
|
(click)="drawer.toggle()"
|
|
>
|
|
<mat-icon [svgIcon]="'heroicons_outline:menu'"></mat-icon>
|
|
</button>
|
|
|
|
<!-- Panel title -->
|
|
<div
|
|
class="ml-2 lg:ml-0 text-3xl font-bold tracking-tight leading-none"
|
|
>
|
|
{{ getPanelInfo(selectedPanel).title }}
|
|
</div>
|
|
<fuse-alert
|
|
class="ml-8 pl-8"
|
|
*ngIf="changePasswordResultShowAlert"
|
|
[appearance]="'outline'"
|
|
[showIcon]="false"
|
|
[type]="alertConfig.type"
|
|
[@shake]="alertConfig.type === 'error'"
|
|
>
|
|
{{ alertConfig.message }}
|
|
</fuse-alert>
|
|
</div>
|
|
|
|
<!-- Load settings panel -->
|
|
<div class="mt-8">
|
|
<ng-container [ngSwitch]="selectedPanel">
|
|
<!-- Account -->
|
|
<ng-container *ngSwitchCase="'accountInfo'">
|
|
<form
|
|
class="flex flex-col w-full"
|
|
[formGroup]="memberDefaultForm"
|
|
>
|
|
<div class="flex">
|
|
<mat-form-field class="w-1/3 pr-2">
|
|
<mat-label>아이디</mat-label>
|
|
<input
|
|
id="username"
|
|
matInput
|
|
[formControlName]="'username'"
|
|
/>
|
|
</mat-form-field>
|
|
<mat-form-field class="w-1/3 pr-2">
|
|
<mat-label>닉네임</mat-label>
|
|
<input
|
|
id="nickname"
|
|
matInput
|
|
[formControlName]="'nickname'"
|
|
/>
|
|
</mat-form-field>
|
|
<mat-form-field class="w-1/3 pr-2">
|
|
<mat-label>핸드폰</mat-label>
|
|
<input
|
|
id="mobilePhoneNumber"
|
|
matInput
|
|
[formControlName]="'mobilePhoneNumber'"
|
|
/>
|
|
</mat-form-field>
|
|
</div>
|
|
<div class="flex">
|
|
<mat-form-field class="w-1/3 pr-2">
|
|
<mat-label>비밀번호</mat-label>
|
|
<input
|
|
id="signinPw"
|
|
matInput
|
|
[formControlName]="'signinPw'"
|
|
/>
|
|
</mat-form-field>
|
|
<mat-form-field class="w-1/3 pr-2">
|
|
<mat-label>비밀번호 확인</mat-label>
|
|
<input
|
|
id="signinPwConfirm"
|
|
matInput
|
|
[formControlName]="'signinPwConfirm'"
|
|
/>
|
|
</mat-form-field>
|
|
<div class="w-1/3 pr-2 mt-8">
|
|
<button
|
|
mat-flat-button
|
|
[color]="'primary'"
|
|
(click)="__changePassword()"
|
|
>
|
|
비밀번호 수정
|
|
</button>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="flex">
|
|
<mat-form-field class="w-1/3 pr-2">
|
|
<mat-label>레벨</mat-label>
|
|
<mat-select
|
|
[formControlName]="'levelName'"
|
|
placeholder="레벨 선택"
|
|
>
|
|
<mat-option
|
|
*ngFor="let level of memberLevels"
|
|
[value]="level.getName()"
|
|
>
|
|
{{ level.getName() }}
|
|
</mat-option>
|
|
<!-- <mat-option [value]="'0'"> 국민은행 </mat-option> -->
|
|
</mat-select>
|
|
</mat-form-field>
|
|
<mat-form-field class="w-1/3 pr-2">
|
|
<mat-label>상태</mat-label>
|
|
<mat-select
|
|
id="state"
|
|
[formControlName]="'state'"
|
|
(selectionChange)="onSelectionChangeLanguage($event)"
|
|
>
|
|
<ng-container *ngFor="let info of memberStateOptions">
|
|
<mat-option [value]="info.value">
|
|
{{ info.label }}
|
|
</mat-option>
|
|
</ng-container>
|
|
</mat-select>
|
|
</mat-form-field>
|
|
<mat-form-field class="w-1/3 pr-2">
|
|
<mat-label>환전금지</mat-label>
|
|
<mat-select [formControlName]="'isExcahngeMoney'">
|
|
<!-- <ng-container *ngFor="let vendor of vendors"> -->
|
|
<mat-option value="vendor.id"> vendor option </mat-option>
|
|
<!-- </ng-container> -->
|
|
</mat-select>
|
|
</mat-form-field>
|
|
</div>
|
|
|
|
<div class="flex">
|
|
<mat-form-field class="w-1/3 pr-2">
|
|
<mat-label>보유머니</mat-label>
|
|
<input
|
|
id="ownCash"
|
|
matInput
|
|
[formControlName]="'ownCash'"
|
|
/>
|
|
</mat-form-field>
|
|
<mat-form-field class="w-1/3 pr-2">
|
|
<mat-label>콤프</mat-label>
|
|
<input
|
|
id="ownComp"
|
|
type="text"
|
|
matInput
|
|
[formControlName]="'comp'"
|
|
/>
|
|
</mat-form-field>
|
|
<mat-form-field class="w-1/3 pr-2">
|
|
<mat-label>쿠폰</mat-label>
|
|
<input
|
|
id="ownCoupon"
|
|
type="text"
|
|
matInput
|
|
[formControlName]="'coupon'"
|
|
/>
|
|
</mat-form-field>
|
|
</div>
|
|
<div class="flex">
|
|
<mat-form-field class="w-1/3 pr-2">
|
|
<mat-label>추천인</mat-label>
|
|
<input
|
|
type="text"
|
|
matInput
|
|
[formControlName]="'recommender'"
|
|
/>
|
|
</mat-form-field>
|
|
|
|
<mat-form-field class="w-1/3 pr-2">
|
|
<mat-label>사이트변경</mat-label>
|
|
|
|
<mat-select
|
|
[formControlName]="'siteUrl'"
|
|
placeholder="사이트 선택"
|
|
>
|
|
<mat-option
|
|
*ngFor="let site of sites"
|
|
[value]="site.getUrl()"
|
|
>
|
|
{{ site.getUrl() }}
|
|
</mat-option>
|
|
</mat-select>
|
|
<!-- <mat-error *ngIf="composeForm.get('siteId')?.hasError('required')">
|
|
사이트명은 필수 입력입니다.
|
|
</mat-error> -->
|
|
</mat-form-field>
|
|
|
|
<mat-form-field class="w-1/3 pr-2">
|
|
<mat-label>추천횟수</mat-label>
|
|
<input
|
|
type="text"
|
|
matInput
|
|
[formControlName]="'recommendCount'"
|
|
/>
|
|
</mat-form-field>
|
|
</div>
|
|
<div class="flex flex-col flex-auto w-full p-8 text-center">
|
|
<mat-form-field class="">
|
|
<mat-label>게임중머니</mat-label>
|
|
<input
|
|
type="text"
|
|
matInput
|
|
[formControlName]="'hodingGameMoney'"
|
|
/>
|
|
</mat-form-field>
|
|
</div>
|
|
<!-- Email & Phone -->
|
|
<div class="flex items-center w-full border-t divide-x">
|
|
<button class="-ml-4" mat-button [color]="'warn'">
|
|
게임머니회수
|
|
</button>
|
|
<button mat-flat-button [color]="'primary'">
|
|
게임머니확인
|
|
</button>
|
|
</div>
|
|
|
|
<ng-container *ngTemplateOutlet="commonButton"></ng-container>
|
|
</form>
|
|
</ng-container>
|
|
<ng-container *ngSwitchCase="'bankInfo'">
|
|
<form class="flex flex-col w-full" [formGroup]="memberBankForm">
|
|
<div class="flex">
|
|
<mat-form-field class="w-1/3 pr-2">
|
|
<mat-label>환전 비밀번호</mat-label>
|
|
<input
|
|
id="exchangePw"
|
|
matInput
|
|
[formControlName]="'exchangePw'"
|
|
/>
|
|
</mat-form-field>
|
|
<mat-form-field class="w-1/3 pr-2">
|
|
<mat-label>환전 비밀번호 확인</mat-label>
|
|
<input
|
|
id="exchangePwConfirm"
|
|
matInput
|
|
[formControlName]="'exchangePwConfirm'"
|
|
/>
|
|
</mat-form-field>
|
|
<div class="w-1/3 pr-2 mt-8">
|
|
<button
|
|
mat-flat-button
|
|
[color]="'primary'"
|
|
(click)="__changeExcahngePassword()"
|
|
>
|
|
비밀번호 수정
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="flex">
|
|
<mat-form-field class="w-1/3 pr-2">
|
|
<mat-label>은행명</mat-label>
|
|
|
|
<mat-select
|
|
[formControlName]="'bankName'"
|
|
placeholder="은행 선택"
|
|
>
|
|
<mat-option
|
|
*ngFor="let bank of banks"
|
|
[value]="bank.getName()"
|
|
>
|
|
{{ bank.getName() }}
|
|
</mat-option>
|
|
<!-- <mat-option [value]="'0'"> 국민은행 </mat-option> -->
|
|
</mat-select>
|
|
<!-- <mat-error
|
|
*ngIf="
|
|
composeForm.get('bankId')?.hasError('required')
|
|
"
|
|
>
|
|
은행명은 필수 입력입니다.
|
|
</mat-error> -->
|
|
</mat-form-field>
|
|
<mat-form-field class="w-1/3 pr-2">
|
|
<mat-label>계좌번호</mat-label>
|
|
<input
|
|
type="text"
|
|
matInput
|
|
[formControlName]="'accountNumber'"
|
|
/>
|
|
</mat-form-field>
|
|
<mat-form-field class="w-1/3 pr-2">
|
|
<mat-label>예금주</mat-label>
|
|
<input
|
|
id="accountHolder"
|
|
type="text"
|
|
matInput
|
|
[formControlName]="'accountHolder'"
|
|
/>
|
|
</mat-form-field>
|
|
</div>
|
|
|
|
<mat-form-field class="w-full fuse-mat-textarea">
|
|
<mat-label>메모</mat-label>
|
|
<textarea
|
|
matInput
|
|
name="memo"
|
|
[formControlName]="'description'"
|
|
row="5"
|
|
></textarea>
|
|
</mat-form-field>
|
|
<ng-container *ngTemplateOutlet="commonButton"></ng-container>
|
|
</form>
|
|
</ng-container>
|
|
<!-- Security -->
|
|
<ng-container *ngSwitchCase="'settleInfo'">
|
|
<form class="flex flex-col w-full" [formGroup]="memberSettleForm">
|
|
<div class="flex">
|
|
<mat-form-field class="w-1/3 pr-2">
|
|
<mat-label>바카라 요율</mat-label>
|
|
<input
|
|
type="text"
|
|
matInput
|
|
[formControlName]="'bacaraRate'"
|
|
style="width: 40%"
|
|
/>
|
|
<div class="mt-1 text-md text-hint">
|
|
%(최소 0 ~ 최대 0.2)
|
|
</div>
|
|
</mat-form-field>
|
|
<mat-form-field class="w-1/3 pr-2">
|
|
<mat-label>룰렛 요율</mat-label>
|
|
<input
|
|
type="text"
|
|
matInput
|
|
[formControlName]="'rulletRate'"
|
|
style="width: 40%"
|
|
/>
|
|
<div class="mt-1 text-md text-hint">
|
|
%(최소 0 ~ 최대 0.2)
|
|
</div>
|
|
</mat-form-field>
|
|
<mat-form-field class="w-1/3 pr-2">
|
|
<mat-label>드래곤타이거 요율</mat-label>
|
|
<input
|
|
type="text"
|
|
matInput
|
|
[formControlName]="'dragonRate'"
|
|
style="width: 40%"
|
|
/>
|
|
<div class="mt-1 text-md text-hint">
|
|
%(최소 0 ~ 최대 0.2)
|
|
</div>
|
|
</mat-form-field>
|
|
</div>
|
|
|
|
<div class="flex">
|
|
<mat-form-field class="w-1/3 pr-2">
|
|
<mat-label>기타 게임 요율</mat-label>
|
|
<input
|
|
type="text"
|
|
matInput
|
|
[formControlName]="'etcRate'"
|
|
style="width: 40%"
|
|
/>
|
|
<div class="mt-1 text-md text-hint">
|
|
%(최소 0 ~ 최대 0.2)
|
|
</div>
|
|
</mat-form-field>
|
|
<mat-form-field class="w-1/3 pr-2">
|
|
<mat-label>슬롯게임요율</mat-label>
|
|
<input
|
|
type="text"
|
|
matInput
|
|
[formControlName]="'slotRate'"
|
|
style="width: 40%"
|
|
/>
|
|
<div class="mt-1 text-md text-hint">
|
|
%(최소 0 ~ 최대 0.2)
|
|
</div>
|
|
</mat-form-field>
|
|
<mat-form-field class="w-1/3 pr-2">
|
|
<mat-label>카지노 루징요율</mat-label>
|
|
<input
|
|
type="text"
|
|
matInput
|
|
[formControlName]="'casinoRusingRate'"
|
|
style="width: 40%"
|
|
/>
|
|
<div class="mt-1 text-md text-hint">
|
|
%(최소 0 ~ 최대 0.2)
|
|
</div>
|
|
</mat-form-field>
|
|
</div>
|
|
<div class="flex">
|
|
<mat-form-field class="w-1/3 pr-2">
|
|
<mat-label>슬롯게임 루징요율</mat-label>
|
|
<input
|
|
type="text"
|
|
matInput
|
|
[formControlName]="'slotRusingRate'"
|
|
style="width: 40%"
|
|
/>
|
|
<div class="mt-1 text-md text-hint">
|
|
%(최소 0 ~ 최대 0.2)
|
|
</div>
|
|
</mat-form-field>
|
|
<span class="w-1/3 pr-2">
|
|
<mat-slide-toggle [color]="'primary'">
|
|
첫충콤프
|
|
</mat-slide-toggle>
|
|
</span>
|
|
<span class="w-1/3 pr-2">
|
|
<mat-slide-toggle [color]="'primary'">
|
|
매충콤프
|
|
</mat-slide-toggle>
|
|
</span>
|
|
</div>
|
|
<div class="flex">
|
|
<span class="font-semibold mb-2">파트너수동지급</span>
|
|
<mat-radio-group
|
|
class="flex flex-col w-1/3 pr-2"
|
|
[color]="'primary'"
|
|
[value]="'just-good'"
|
|
>
|
|
<mat-radio-button class="mb-2" [value]="'everything'">
|
|
하부파트너전체
|
|
</mat-radio-button>
|
|
<mat-radio-button class="mb-2" [value]="'just-good'">
|
|
직속파트너만
|
|
</mat-radio-button>
|
|
<mat-radio-button [value]="'no-push'">
|
|
사용안함
|
|
</mat-radio-button>
|
|
</mat-radio-group>
|
|
</div>
|
|
</form>
|
|
<ng-container *ngTemplateOutlet="commonButton"></ng-container>
|
|
</ng-container>
|
|
<!-- Plan & Billing -->
|
|
<ng-container *ngSwitchCase="'gameInfo'">
|
|
<form
|
|
class="flex flex-col w-full"
|
|
[formGroup]="memberGameSettingForm"
|
|
>
|
|
<div class="flex">
|
|
<span class="w-1/3 pr-2">
|
|
<mat-slide-toggle [color]="'primary'">
|
|
파워볼베팅
|
|
</mat-slide-toggle>
|
|
</span>
|
|
<span class="w-1/3 pr-2">
|
|
<mat-slide-toggle [color]="'primary'">
|
|
카지노 베팅
|
|
</mat-slide-toggle>
|
|
</span>
|
|
<span class="w-1/3 pr-2">
|
|
<mat-slide-toggle [color]="'primary'">
|
|
슬롯베팅
|
|
</mat-slide-toggle>
|
|
</span>
|
|
</div>
|
|
<div class="flex">
|
|
<span class="w-1/3 pr-2">
|
|
<mat-label>등급: </mat-label>
|
|
<mat-label>유저</mat-label>
|
|
</span>
|
|
<span class="w-1/3 pr-2">
|
|
<mat-label>정산종류: </mat-label>
|
|
<mat-label>롤링</mat-label>
|
|
</span>
|
|
<span class="w-1/3 pr-2">
|
|
<mat-label>금일 입금/ 출금액: </mat-label>
|
|
<mat-label>0원(이전일: 0원)</mat-label>
|
|
<mat-label>/ 0원(이전일: 0원)</mat-label>
|
|
</span>
|
|
</div>
|
|
</form>
|
|
<ng-container *ngTemplateOutlet="commonButton"></ng-container>
|
|
</ng-container>
|
|
<!-- Notifications -->
|
|
<ng-container *ngSwitchCase="'historyInfo'">
|
|
<div class="flex flex-col flex-auto min-w-0">
|
|
<div class="flex-auto border-t -mt-px pt-4 sm:pt-6">
|
|
<div class="w-full max-w-screen-xl mx-auto">
|
|
<div
|
|
class="grid grid-cols-1 sm:grid-cols-6 gap-6 w-full min-w-0"
|
|
>
|
|
<!-- Budget distribution -->
|
|
<div
|
|
class="sm:col-span-6 flex flex-col flex-auto p-6 bg-card shadow rounded-2xl overflow-hidden"
|
|
>
|
|
<mat-tab-group [animationDuration]="'0ms'">
|
|
<mat-tab label="충전내역" class="bg-gray-200">
|
|
<ng-template matTabContent>
|
|
<deposit-history></deposit-history>
|
|
</ng-template>
|
|
</mat-tab>
|
|
|
|
<mat-tab label="환전내역">
|
|
<ng-template matTabContent>
|
|
<withdraw-history></withdraw-history>
|
|
</ng-template>
|
|
</mat-tab>
|
|
<mat-tab label="웹로그인정보">
|
|
<ng-template matTabContent>
|
|
<web-sign-in-history></web-sign-in-history>
|
|
</ng-template>
|
|
</mat-tab>
|
|
<mat-tab label="파트너로그인정보">
|
|
<ng-template matTabContent>
|
|
<partner-sign-in-history></partner-sign-in-history>
|
|
</ng-template>
|
|
</mat-tab>
|
|
</mat-tab-group>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</ng-container>
|
|
</ng-container>
|
|
</div>
|
|
</div>
|
|
</mat-drawer-content>
|
|
</mat-drawer-container>
|
|
</div>
|
|
|
|
<ng-template #commonButton>
|
|
<div class="flex items-center w-full border-t divide-x">
|
|
<button
|
|
class="-ml-4"
|
|
mat-flat-button
|
|
[color]="'primary'"
|
|
(click)="__modifyMember()"
|
|
>
|
|
수정
|
|
</button>
|
|
<button class="-ml-4" mat-flat-button [color]="'primary'">목록으로</button>
|
|
</div>
|
|
</ng-template>
|