3달간 수정 사항
This commit is contained in:
@@ -11,7 +11,7 @@ import Badge from "@/components/ui/badge/Badge";
|
||||
|
||||
import React, { Key } from "react";
|
||||
import { useEffect, useState } from 'react';
|
||||
import api, { convertDateTime2, convertDateTime3, postFileDownload, useAuthStore } from '@/lib/_AG';
|
||||
import api, { addDaysYMD, convertDateTime2, convertDateTime3, postFileDownload, todayYMD, useAuthStore } from '@/lib/_AG';
|
||||
|
||||
import { useModal } from "@/hooks/useModal";
|
||||
import AddModifyAccountModal, { AccountModalProps } from './AddModifyAccountModal';
|
||||
@@ -19,10 +19,12 @@ import { useMultiState } from "@/hooks/useMultiState";
|
||||
|
||||
import CtTree, { CtTreeNode, expandAndSelectTreeNode, getAllNodeKeys, findParentKeys, findNodeByKey, addNodeByKey, deleteNodeByKey } from "@/components/CtTree";
|
||||
import { reqBizGroupTree2 } from "@/app/(admin)/biz-group/BizGroupContent";
|
||||
import Select from "@/components/form/Select2";
|
||||
import PageCountSelector from "@/components/PageCountSelector";
|
||||
|
||||
|
||||
const SEARCH_LABEL_WIDTH = 24;
|
||||
const COUNT_PER_PAGE = 10;
|
||||
const SEARCH_LABEL_WIDTH_PX = 80;
|
||||
//const COUNT_PER_PAGE = 10;
|
||||
const PAGE_NUM_COUNT = 5;
|
||||
|
||||
|
||||
@@ -33,6 +35,8 @@ export default function Account() {
|
||||
const [ tableOffset, setTableOffset ] = useState<number>(0);
|
||||
const [ tableTotalCount, setTableTotalCount ] = useState<number>(0);
|
||||
|
||||
const [ COUNT_PER_PAGE, setCOUNT_PER_PAGE ] = useState<number>(20);
|
||||
|
||||
const [ treeData, setTreeData ] = useState<CtTreeNode[]>([]);
|
||||
const [ selectedTreeKeys, setSelectedTreeKeys ] = useState<Key[]>([]);
|
||||
const [ expandedTreeKeys, setExpandedTreeKeys ] = useState<Key[]>([]);
|
||||
@@ -45,12 +49,14 @@ export default function Account() {
|
||||
const [ user_id, setUserId ] = useState<string>("");
|
||||
const [ email, setEmail ] = useState<string>("");
|
||||
const [ nick_name, setNickName ] = useState<string>("");
|
||||
const [ date_start, setDateStart ] = useState<string>("");
|
||||
const [ date_end, setDateEnd ] = useState<string>("");
|
||||
const [ date_start, setDateStart ] = useState<string>();
|
||||
const [ date_end, setDateEnd ] = useState<string>();
|
||||
|
||||
// modal
|
||||
const { isOpen, openModal, closeModal } = useModal();
|
||||
const modalData = useMultiState<AccountModalProps>({biz_group_name: "", isModify: false, gid: "", biz_group_id: "", user_id: "", user_pw: "", nick_name: "", email: "", state: "1"});
|
||||
const modalData = useMultiState<AccountModalProps>({ biz_group_name: "", isModify: false,
|
||||
gid: "", biz_group_id: "", user_id: "", user_pw: "", name: "", phone: "", email: "", state: "1",
|
||||
perm_group: true, perm_uid1: true, perm_cancel: true, perm_account: true });
|
||||
|
||||
//function part
|
||||
//
|
||||
@@ -84,6 +90,13 @@ export default function Account() {
|
||||
setTableData([]);
|
||||
return;
|
||||
}
|
||||
|
||||
resp.data.result.list.forEach((item: any) => {
|
||||
item.perm_group = (item.permission & 0x2) === 0x2;
|
||||
item.perm_uid1 = (item.permission & 0x4) === 0x4;
|
||||
item.perm_cancel = (item.permission & 0x8) === 0x8;
|
||||
});
|
||||
|
||||
setTableTotalCount(resp.data.result.totalCount);
|
||||
setTableData(resp.data.result.list);
|
||||
}
|
||||
@@ -117,17 +130,17 @@ export default function Account() {
|
||||
// event processing part
|
||||
//
|
||||
const handleClickGroupSearch = () => {
|
||||
if (tokenPayload?.permission == 1) {
|
||||
if (tokenPayload?.permission == 0xffffffff) {
|
||||
if (name == "" && biz_reg_num == "") {
|
||||
alert("그룹명(사업자명) 또는 사업자등록번호를 입력하셔야 합니다.");
|
||||
alert("그룹(사업자)명 또는 사업자등록번호를 입력하셔야 합니다.");
|
||||
return;
|
||||
}
|
||||
if (name != "" && name.length < 3) {
|
||||
alert("그룹명(사업자명)은 세글자 이상 입력해야 합니다.");
|
||||
if (name != "" && name.length < 2) {
|
||||
alert("그룹(사업자)명은 두글자 이상 입력해야 합니다.");
|
||||
return;
|
||||
}
|
||||
if (biz_reg_num != "" && biz_reg_num.length < 3) {
|
||||
alert("사업자등록번호는 세글자 이상 입력해야 합니다.");
|
||||
if (biz_reg_num != "" && biz_reg_num.length < 2) {
|
||||
alert("사업자등록번호는 두글자 이상 입력해야 합니다.");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -157,7 +170,7 @@ export default function Account() {
|
||||
|
||||
const node = findNodeByKey(treeData, selectedTreeKeys[0]);
|
||||
modalData.setAll({biz_group_name: node.name, biz_reg_num: node.biz_reg_num,
|
||||
isModify: false, gid: "", user_id: "", user_pw: "", nick_name: "", email: "", state: "1", biz_group_id: node.key});
|
||||
isModify: false, gid: "", user_id: "", user_pw: "", name: "", phone: "", email: "", state: "1", biz_group_id: node.key});
|
||||
openModal();
|
||||
};
|
||||
|
||||
@@ -210,18 +223,25 @@ export default function Account() {
|
||||
title: "등록일",
|
||||
key: "reg_time" ,
|
||||
renderItem: (item:any) => convertDateTime3(item.reg_time),
|
||||
viewMobile: true,
|
||||
},
|
||||
{
|
||||
title: "그룹",
|
||||
key: "biz_group_name",
|
||||
viewMobile: true,
|
||||
},
|
||||
{
|
||||
title: "아이디",
|
||||
key: "user_id",
|
||||
viewMobile: true,
|
||||
},
|
||||
{
|
||||
title: "닉네임",
|
||||
key: "nick_name",
|
||||
title: "이름",
|
||||
key: "name",
|
||||
},
|
||||
{
|
||||
title: "휴대폰번호",
|
||||
key: "phone",
|
||||
},
|
||||
{
|
||||
title: "이메일",
|
||||
@@ -270,11 +290,11 @@ export default function Account() {
|
||||
<div className="flex-1 space-y-6">
|
||||
{/*<div className="hidden sm:block h-[86px]"></div>*/}
|
||||
<div className="grid grid-cols-1 gap-3 sm:grid-cols-2">
|
||||
<WithLabel label="그룹명(사업자명)" label_width={SEARCH_LABEL_WIDTH}>
|
||||
<Input type="text" placeholder="조회할 그룹명(사업자명) 입력하세요." value={name} onChange={(e) => setName(e.target.value)}
|
||||
<WithLabel label="그룹(사업자)명" label_width={SEARCH_LABEL_WIDTH_PX}>
|
||||
<Input type="text" placeholder="조회할 그룹(사업자)명 입력하세요." value={name} onChange={(e) => setName(e.target.value)}
|
||||
onKeyDown={(e) => {if (e.key === "Enter") handleClickGroupSearch()}} />
|
||||
</WithLabel>
|
||||
<WithLabel label="사업자번호" label_width={SEARCH_LABEL_WIDTH}>
|
||||
<WithLabel label="사업자번호" label_width={SEARCH_LABEL_WIDTH_PX}>
|
||||
<Input type="text" placeholder="조회할 사업자번호를 입력하세요." value={biz_reg_num} onChange={(e) => setBizRegNum(e.target.value)}
|
||||
onKeyDown={(e) => {if (e.key === "Enter") handleClickGroupSearch()}} />
|
||||
</WithLabel>
|
||||
@@ -304,28 +324,30 @@ export default function Account() {
|
||||
|
||||
<div className="space-y-3">
|
||||
<div className="grid grid-cols-1 gap-3 sm:grid-cols-3">
|
||||
<WithLabel label="아이디" label_width={SEARCH_LABEL_WIDTH}>
|
||||
<WithLabel label="아이디" label_width={SEARCH_LABEL_WIDTH_PX}>
|
||||
<Input type="text" placeholder="조회할 아이디를 입력하세요." value={user_id} onChange={(e) => setUserId(e.target.value)} />
|
||||
</WithLabel>
|
||||
<WithLabel label="이메일" label_width={SEARCH_LABEL_WIDTH}>
|
||||
<WithLabel label="이메일" label_width={SEARCH_LABEL_WIDTH_PX}>
|
||||
<Input type="email" placeholder="조회할 이메일을 입력하세요." value={email} onChange={(e) => setEmail(e.target.value)} />
|
||||
</WithLabel>
|
||||
<WithLabel label="닉네임" label_width={SEARCH_LABEL_WIDTH}>
|
||||
<WithLabel label="닉네임" label_width={SEARCH_LABEL_WIDTH_PX}>
|
||||
<Input type="text" placeholder="조회할 닉네임을 입력하세요." value={nick_name} onChange={(e) => setNickName(e.target.value)} />
|
||||
</WithLabel>
|
||||
</div>
|
||||
<div className="space-y-2 grid grid-cols-1 gap-3 sm:grid-cols-2">
|
||||
<WithLabel label="등록일" label_width={SEARCH_LABEL_WIDTH}>
|
||||
<div className="grid grid-cols-1 gap-3 sm:grid-cols-2">
|
||||
<WithLabel label="등록일" label_width={50}>
|
||||
<div className="grid grid-cols-2 gap-3 sm:grid-cols-2">
|
||||
<DatePicker
|
||||
id="date_start-picker"
|
||||
placeholder="조회 시작일"
|
||||
onChange={(dates, currentDateString) => { setDateStart(currentDateString); }}
|
||||
defaultDate={date_start}
|
||||
/>
|
||||
<DatePicker
|
||||
id="date_end-picker"
|
||||
placeholder="조회 종료일"
|
||||
onChange={(dates, currentDateString) => { setDateEnd(currentDateString); }}
|
||||
defaultDate={date_end}
|
||||
/>
|
||||
</div>
|
||||
</WithLabel>
|
||||
@@ -336,6 +358,10 @@ export default function Account() {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="flex items-center justify-end gap-5">
|
||||
<PageCountSelector defaultValue={COUNT_PER_PAGE.toString()} onChange={(e) => setCOUNT_PER_PAGE(parseInt(e.target.value))} />
|
||||
</div>
|
||||
|
||||
<CtTable1 columns={columns} bodyData={tableData}
|
||||
offset={tableOffset} totalCount={tableTotalCount} countPerPage={COUNT_PER_PAGE} pageNumCount={PAGE_NUM_COUNT}
|
||||
onClickPageChange={handlePageChange} />
|
||||
|
||||
Reference in New Issue
Block a user