thai-uxui

This commit is contained in:
phaichayon
2026-06-19 11:11:17 +07:00
parent c0cc880be2
commit 721653f692
47 changed files with 1135 additions and 538 deletions

View File

@@ -73,21 +73,21 @@ export function CustomerFormSheet({
const createMutation = useMutation({
...createCustomerMutation,
onSuccess: () => {
toast.success('Customer created successfully');
toast.success('สร้างลูกค้าสำเร็จ');
onOpenChange(false);
},
onError: (error) =>
toast.error(error instanceof Error ? error.message : 'Failed to create customer')
toast.error(error instanceof Error ? error.message : 'ไม่สามารถสร้างลูกค้าได้')
});
const updateMutation = useMutation({
...updateCustomerMutation,
onSuccess: () => {
toast.success('Customer updated successfully');
toast.success('อัปเดตลูกค้าสำเร็จ');
onOpenChange(false);
},
onError: (error) =>
toast.error(error instanceof Error ? error.message : 'Failed to update customer')
toast.error(error instanceof Error ? error.message : 'ไม่สามารถอัปเดตลูกค้าได้')
});
const form = useAppForm({
@@ -146,10 +146,8 @@ export function CustomerFormSheet({
<Sheet open={open} onOpenChange={onOpenChange}>
<SheetContent className='flex flex-col sm:max-w-3xl'>
<SheetHeader>
<SheetTitle>{isEdit ? 'Edit Customer' : 'New Customer'}</SheetTitle>
<SheetDescription>
Maintain the core account profile, ownership branch, and CRM classification here.
</SheetDescription>
<SheetTitle>{isEdit ? 'แก้ไขลูกค้า' : 'เพิ่มลูกค้า'}</SheetTitle>
<SheetDescription> CRM</SheetDescription>
</SheetHeader>
<div className='flex-1 overflow-auto'>
@@ -157,25 +155,25 @@ export function CustomerFormSheet({
<form.Form id='customer-form-sheet' className='grid gap-4 md:grid-cols-2'>
<FormTextField
name='name'
label='Customer Name'
label='ชื่อลูกค้า'
required
placeholder='ALLA Service Co., Ltd.'
/>
<FormTextField name='abbr' label='Abbreviation' placeholder='ALLA' />
<FormTextField name='taxId' label='Tax ID' placeholder='0105556...' />
<FormTextField name='phone' label='Phone' placeholder='02-000-0000' />
<FormTextField name='fax' label='Fax' placeholder='02-000-0001' />
<FormTextField name='abbr' label='ชื่อย่อ' placeholder='ALLA' />
<FormTextField name='taxId' label='เลขประจำตัวผู้เสียภาษี' placeholder='0105556...' />
<FormTextField name='phone' label='โทรศัพท์' placeholder='02-000-0000' />
<FormTextField name='fax' label='แฟกซ์' placeholder='02-000-0001' />
<FormTextField
name='email'
label='Email'
label='อีเมล'
type='email'
placeholder='sales@example.com'
/>
<FormTextField name='website' label='Website' placeholder='https://example.com' />
<FormTextField name='country' label='Country' placeholder='Thailand' />
<FormTextField name='website' label='เว็บไซต์' placeholder='https://example.com' />
<FormTextField name='country' label='ประเทศ' placeholder='Thailand' />
<FormSelectField
name='customerType'
label='Customer Type'
label='ประเภทลูกค้า'
required
options={referenceData.customerTypes.map((item) => ({
value: item.id,
@@ -184,7 +182,7 @@ export function CustomerFormSheet({
/>
<FormSelectField
name='customerStatus'
label='Customer Status'
label='สถานะลูกค้า'
required
options={referenceData.customerStatuses.map((item) => ({
value: item.id,
@@ -193,7 +191,7 @@ export function CustomerFormSheet({
/>
<FormSelectField
name='branchId'
label='Branch'
label='สาขา'
options={referenceData.branches.map((branch) => ({
value: branch.id,
label: branch.name
@@ -201,7 +199,7 @@ export function CustomerFormSheet({
/>
<FormSelectField
name='leadChannel'
label='Lead Channel'
label='ที่มาของลีด'
options={referenceData.leadChannels.map((item) => ({
value: item.id,
label: item.label
@@ -209,7 +207,7 @@ export function CustomerFormSheet({
/>
<FormSelectField
name='customerGroup'
label='Customer Group'
label='กลุ่มลูกค้า'
options={referenceData.customerGroups.map((item) => ({
value: item.id,
label: item.label
@@ -217,10 +215,10 @@ export function CustomerFormSheet({
/>
<FormSelectField
name='customerSubGroup'
label='Customer Sub Group'
label='กลุ่มย่อยลูกค้า'
disabled={!selectedCustomerGroup}
placeholder={
selectedCustomerGroup ? 'Select customer sub group' : 'Select customer group first'
selectedCustomerGroup ? 'เลือกกลุ่มย่อยลูกค้า' : 'เลือกกลุ่มลูกค้าก่อน'
}
options={filteredCustomerSubGroups.map((item) => ({
value: item.id,
@@ -228,24 +226,24 @@ export function CustomerFormSheet({
}))}
/>
<div className='md:col-span-2'>
<FormTextField name='address' label='Address' placeholder='123 Main Road' />
<FormTextField name='address' label='ที่อยู่' placeholder='123 Main Road' />
</div>
<FormTextField name='province' label='Province' placeholder='Bangkok' />
<FormTextField name='district' label='District' placeholder='Bang Kapi' />
<FormTextField name='subDistrict' label='Sub District' placeholder='Hua Mak' />
<FormTextField name='postalCode' label='Postal Code' placeholder='10240' />
<FormTextField name='province' label='จังหวัด' placeholder='Bangkok' />
<FormTextField name='district' label='เขต / อำเภอ' placeholder='Bang Kapi' />
<FormTextField name='subDistrict' label='แขวง / ตำบล' placeholder='Hua Mak' />
<FormTextField name='postalCode' label='รหัสไปรษณีย์' placeholder='10240' />
<div className='md:col-span-2'>
<FormTextareaField
name='notes'
label='Notes'
placeholder='Internal notes about this customer relationship'
label='หมายเหตุ'
placeholder='หมายเหตุภายในเกี่ยวกับความสัมพันธ์กับลูกค้ารายนี้'
/>
</div>
<div className='md:col-span-2'>
<FormSwitchField
name='isActive'
label='Active Record'
description='Inactive customers remain visible in history but should not be used for new work.'
label='ใช้งานอยู่'
description='ลูกค้าที่ปิดใช้งานยังคงอยู่ในประวัติ แต่ไม่ควรนำไปใช้กับงานใหม่'
/>
</div>
</form.Form>
@@ -254,11 +252,11 @@ export function CustomerFormSheet({
<SheetFooter>
<Button type='button' variant='outline' onClick={() => onOpenChange(false)}>
Cancel
</Button>
<Button type='submit' form='customer-form-sheet' isLoading={isPending}>
<Icons.check className='mr-2 h-4 w-4' />
{isEdit ? 'Update Customer' : 'Create Customer'}
{isEdit ? 'อัปเดตลูกค้า' : 'สร้างลูกค้า'}
</Button>
</SheetFooter>
</SheetContent>
@@ -276,7 +274,7 @@ export function CustomerFormSheetTrigger({
return (
<>
<Button onClick={() => setOpen(true)}>
<Icons.add className='mr-2 h-4 w-4' /> Add Customer
<Icons.add className='mr-2 h-4 w-4' />
</Button>
<CustomerFormSheet open={open} onOpenChange={setOpen} referenceData={referenceData} />
</>