* feat: i18n * feat: request list * refactor: hide stat transition on app.scss * feat: request list i18n * feat: request list => constants and main page * feat: add store * feat: add fetch data * feat: add utilities fn * feat: add store function / types * refactor: request list type * refactor: request list constants * refactor: quotation card => add customData and badge color props * feat: avatar group components * feat: request list group * refactor: request list => remove tab, add table data * feat: send search query * feat: add parameter * refactor: remove unused function * fix: rename component lits to list * feat: show stats from api * chore: cleanup * refactor: make it type safe * refactor: accept rotate flow id as parameter * feat: use page size component * feat: add component, data display & expansion product * feat: i18n * refactor: constants and request list table * refactor: type code, createdAt, updatedAt * refactor: utils function changThemeMode * feat: request list => view page * refactor: use type instead of infer from value * fix: function getEmployeeName att type * refactor: fetch work list * refactor: loop work list * feat: add i18n duty * feat: add form issue component * feat: add form issue section * fix: store error * refactor: edit by value * refactor: accept basic info from outside instead * feat: add status filter support on fetch * refactor: remove delete button * refactor: wording * feat/fix: request list i18n & constant * feat: document type * feat/refactor: request list => document expansion * refactor: doc expansion use FormGroupHead * refactor: fetch data based on id from route param * refactor: text area disable * feat: properties expansion display (mocking) * refactor: add document at product relation * refactor: edit get value product * feat: get workflow step to show on top * refactor: add type * refactor: add get attachment * refactor: add view attachment * refactor: edit file name * refactor: define props get hide icon * refactor: edit align row * refactor: by value table document * refactor: by value row table * feat: add independent ocr dialog * chore: clean up * refactor: accept more props and small adjustment * fix: error withDefault call * feat: accept default metadata when open * fix: typo * feat: add override hook when finish ocr * feat: reset state on open * feat: detect reader result is actually string * fix: variable name conflict * feat: properties to input component * feat: properties input in properties expansion * feat: properties expansion data (temporary) * refactor: add i18n status work * refactor: edit type work status and add step status * refactor: add edit status work * refactor: edit step work * refactor: properties data type * refactor: filter selected product & specific properties * feat: add emit event * refactor: change variable name for better understanding * refactor: hide step that no properties * refactor: work status type to validate * feat: work status color * refactor: key for filename * refactor: close expansion when change step * refactor: responsive meta data * refactor: product expansion responsive * fix: dark mode step text color * fix: document expansion table no data label * refactor: main page body bordered and overflow hidden * refactor: use utils function instead * refactor: add process * refactor: by value name * refactor: add upload file * refactor: upload file * refactor: by value * fix: option worker type * refactor: fetchRequestAttachment after edit * fix: metadata display * refactor: add class full-height * refactor: edit type * refactor: fetch file * refactor: by value visa * refactor: request list attributes type * fix: properties to input props (placeholder, readonly, disable) * feat: request list properties function * fix: error when no workflow * docs: update comment to fix indent * refactor: step type (attributes) * refactor: add attributes payload on editStatusRequestWork function * feat/refactor: functional form expansion/filter worklist * refactor: set attributes properties after submit * refactor: add request work ready status * feat: request list => form employee component * feat/refactor: form expansion select user/layout * fix: properties readonly --------- Co-authored-by: puriphatt <puriphat@frappet.com> Co-authored-by: Thanaphon Frappet <thanaphon@frappet.com>
335 lines
6 KiB
TypeScript
335 lines
6 KiB
TypeScript
import { QTableProps } from 'quasar';
|
|
|
|
export const dialogCreateCustomerItem = [
|
|
{
|
|
icon: 'mdi:office-building',
|
|
text: 'customer.employerLegalEntity',
|
|
iconColor: '--purple-10',
|
|
color: 'var(--purple-8-hsl)',
|
|
},
|
|
{
|
|
icon: 'heroicons:user-solid',
|
|
text: 'customer.employerNaturalPerson',
|
|
iconColor: '--green-11',
|
|
color: 'var(--green-9-hsl)',
|
|
},
|
|
];
|
|
|
|
export const formMenuIcon = <
|
|
{ icon: string; color: string; bgColor: string }[]
|
|
>[
|
|
{
|
|
icon: 'mdi-office-building-outline',
|
|
color: 'hsl(var(--info-bg))',
|
|
bgColor: 'var(--surface-1)',
|
|
},
|
|
{
|
|
icon: 'mdi-briefcase-outline',
|
|
color: 'hsl(var(--info-bg))',
|
|
bgColor: 'var(--surface-1)',
|
|
},
|
|
];
|
|
|
|
export const countryCode = [
|
|
{
|
|
label: 'thai',
|
|
value: 'th',
|
|
},
|
|
{
|
|
label: 'myanmar',
|
|
value: 'mm',
|
|
},
|
|
{
|
|
label: 'laos',
|
|
value: 'lo',
|
|
},
|
|
{
|
|
label: 'cambodian',
|
|
value: 'kh',
|
|
},
|
|
{
|
|
label: 'vietnam',
|
|
value: 'vn',
|
|
},
|
|
{
|
|
label: 'philippines',
|
|
value: 'ph',
|
|
},
|
|
{
|
|
label: 'china',
|
|
value: 'cn',
|
|
},
|
|
];
|
|
|
|
export const uploadFileListCustomer: {
|
|
label: string;
|
|
value: string;
|
|
group: string;
|
|
_meta?: Record<string, any>;
|
|
}[] = [
|
|
{
|
|
label: 'customer.typeFile.citizenId',
|
|
value: 'citizen',
|
|
group: 'citizen',
|
|
},
|
|
{
|
|
label: 'customer.typeFile.registrationBook',
|
|
value: 'attachment',
|
|
group: 'houseRegistration',
|
|
},
|
|
|
|
{
|
|
label: 'customer.typeFile.houseMap',
|
|
value: 'attachment',
|
|
group: 'vatRegistration',
|
|
},
|
|
|
|
{
|
|
label: 'customer.typeFile.businessRegistration',
|
|
group: 'commercialRegistration',
|
|
value: 'attachment',
|
|
},
|
|
|
|
{
|
|
label: 'customer.typeFile.dbdCertificate',
|
|
group: 'powerOfAttorney',
|
|
value: 'attachment',
|
|
},
|
|
|
|
{
|
|
label: 'customer.typeFile.vatRegistrationCertificate',
|
|
group: 'vatRegistrationCertificate',
|
|
value: 'attachment',
|
|
},
|
|
|
|
{
|
|
label: 'customer.typeFile.powerOfAttorney',
|
|
group: 'powerOfAttorney',
|
|
value: 'attachment',
|
|
},
|
|
|
|
{
|
|
label: 'customer.typeFile.others',
|
|
group: 'others',
|
|
value: 'attachment',
|
|
},
|
|
];
|
|
|
|
export const uploadFileListEmployee: {
|
|
label: string;
|
|
group: string;
|
|
value: string;
|
|
_meta?: Record<string, any>;
|
|
}[] = [
|
|
{
|
|
label: 'customerEmployee.fileType.passport',
|
|
value: 'passport',
|
|
group: 'passport',
|
|
},
|
|
{
|
|
label: 'customerEmployee.fileType.visa',
|
|
value: 'visa',
|
|
group: 'visa',
|
|
_meta: {
|
|
number: '',
|
|
type: '',
|
|
entryCount: 0,
|
|
issueCountry: '',
|
|
issuePlace: '',
|
|
issueDate: new Date(),
|
|
expireDate: new Date(),
|
|
mrz: '',
|
|
remark: '',
|
|
},
|
|
},
|
|
{
|
|
label: 'customerEmployee.fileType.tm6',
|
|
value: 'attachment',
|
|
group: 'tm6',
|
|
},
|
|
{
|
|
label: 'customerEmployee.fileType.workPermit',
|
|
value: 'attachment',
|
|
group: 'workPermit',
|
|
},
|
|
{
|
|
label: 'customerEmployee.fileType.noticeJobEmployment',
|
|
value: 'attachment',
|
|
group: 'noticeJobEmployment',
|
|
},
|
|
{
|
|
label: 'customerEmployee.fileType.noticeJobEntry',
|
|
value: 'attachment',
|
|
group: 'noticeJobEntry',
|
|
},
|
|
{
|
|
label: 'customerEmployee.fileType.historyJob',
|
|
value: 'attachment',
|
|
group: 'historyJob',
|
|
},
|
|
{
|
|
label: 'customerEmployee.fileType.acceptJob',
|
|
value: 'attachment',
|
|
group: 'acceptJob',
|
|
},
|
|
{
|
|
label: 'customerEmployee.fileType.receipt',
|
|
value: 'attachment',
|
|
group: 'receipt',
|
|
},
|
|
{
|
|
label: 'customerEmployee.fileType.other',
|
|
value: 'attachment',
|
|
group: 'other',
|
|
},
|
|
];
|
|
|
|
export const columnsAttachment = [
|
|
{
|
|
name: 'orderNumber',
|
|
align: 'center',
|
|
label: 'general.orderNumber',
|
|
field: 'branchNo',
|
|
},
|
|
{
|
|
name: 'createdAt',
|
|
align: 'left',
|
|
label: 'general.uploadDate',
|
|
field: 'attachmentName',
|
|
},
|
|
|
|
{
|
|
name: 'ัexpireDate',
|
|
align: 'left',
|
|
label: 'general.expirationDate',
|
|
field: 'attachmentName',
|
|
},
|
|
|
|
{
|
|
name: 'action',
|
|
label: '',
|
|
field: 'action',
|
|
},
|
|
] satisfies QTableProps['columns'];
|
|
|
|
export const columnsEmployee = [
|
|
{
|
|
name: 'orderNumber',
|
|
align: 'center',
|
|
label: 'general.orderNumber',
|
|
field: 'branchNo',
|
|
},
|
|
|
|
{
|
|
name: 'firstName',
|
|
align: 'left',
|
|
label: 'general.name',
|
|
field: 'firstName',
|
|
},
|
|
|
|
{
|
|
name: 'general.age',
|
|
align: 'center',
|
|
label: 'general.age',
|
|
field: 'dateOfBirth',
|
|
},
|
|
|
|
{
|
|
name: 'formDialogInputNationality',
|
|
align: 'left',
|
|
label: 'general.nationality',
|
|
field: 'nationality',
|
|
},
|
|
|
|
{
|
|
name: 'formDialogInputPassportNo',
|
|
align: 'left',
|
|
label: 'customerEmployee.form.passportNo',
|
|
field: 'passportNumber',
|
|
},
|
|
|
|
{
|
|
name: 'passportExpiryDate',
|
|
align: 'left',
|
|
label: 'customerEmployee.form.passportExpireDate',
|
|
field: 'passportExpiryDate',
|
|
},
|
|
|
|
{
|
|
name: 'visaExpireDate',
|
|
align: 'left',
|
|
label: 'customerEmployee.form.visaExpireDate',
|
|
field: 'visaExpireDate',
|
|
},
|
|
|
|
{
|
|
name: 'beDue',
|
|
align: 'left',
|
|
label: 'general.beDue',
|
|
field: 'beDue',
|
|
},
|
|
|
|
{
|
|
name: 'branchLabel',
|
|
align: 'center',
|
|
label: 'customerEmployee.branch',
|
|
field: 'customerBranch',
|
|
},
|
|
|
|
{
|
|
name: 'action',
|
|
label: '',
|
|
field: 'action',
|
|
},
|
|
] satisfies QTableProps['columns'];
|
|
|
|
export const columnsCustomer = [
|
|
{
|
|
name: 'orderNumber',
|
|
align: 'center',
|
|
label: 'customer.table.orderNumber',
|
|
field: 'branchNo',
|
|
},
|
|
|
|
{
|
|
name: 'titleName',
|
|
align: 'left',
|
|
label: 'customer.table.titleName',
|
|
field: 'titleName',
|
|
},
|
|
|
|
{
|
|
name: 'businessTypePure',
|
|
align: 'center',
|
|
label: 'customer.table.businessTypePure',
|
|
field: 'businessTypePure',
|
|
},
|
|
|
|
{
|
|
name: 'jobPosition',
|
|
align: 'left',
|
|
label: 'customer.table.jobPosition',
|
|
field: 'jobPosition',
|
|
},
|
|
|
|
{
|
|
name: 'address',
|
|
align: 'center',
|
|
label: 'customer.table.address',
|
|
field: 'address',
|
|
},
|
|
|
|
{
|
|
name: 'contactName',
|
|
align: 'center',
|
|
label: 'customer.table.contactName',
|
|
field: 'contactName',
|
|
},
|
|
|
|
{
|
|
name: 'officeTel',
|
|
align: 'left',
|
|
label: 'customer.table.tel',
|
|
field: 'officeTel',
|
|
},
|
|
] satisfies QTableProps['columns'];
|