feat: update importNationality to support multiple selections and adjust related logic

This commit is contained in:
puriphatt 2025-04-24 17:58:48 +07:00
parent 5c12bcbab7
commit dfc17e9623
4 changed files with 18 additions and 13 deletions

View file

@ -29,7 +29,7 @@ const discountCondition = defineModel<string | null | undefined>(
const sourceNationality = defineModel<string | null | undefined>( const sourceNationality = defineModel<string | null | undefined>(
'sourceNationality', 'sourceNationality',
); );
const importNationality = defineModel<string | null | undefined>( const importNationality = defineModel<string[] | null | undefined>(
'importNationality', 'importNationality',
); );
const trainingPlace = defineModel<string | null | undefined>('trainingPlace'); const trainingPlace = defineModel<string | null | undefined>('trainingPlace');
@ -179,18 +179,19 @@ function deleteFile(name: string) {
(v) => (typeof v === 'string' ? (sourceNationality = v) : '') (v) => (typeof v === 'string' ? (sourceNationality = v) : '')
" "
/> />
<SelectInput <SelectInput
:model-value="readonly ? importNationality || '-' : importNationality" v-model="importNationality"
id="input-import-nationality" id="input-import-nationality"
for="input-import-nationality" for="input-import-nationality"
:option="optionStore.globalOption.nationality" :option="optionStore.globalOption.nationality"
class="col-md-3 col-6" class="col-md-3 col-6"
:readonly :readonly
multiple
:hideSelected="false"
clearable clearable
fillInput
:label="$t('personnel.form.importNationality')" :label="$t('personnel.form.importNationality')"
@update:model-value="
(v) => (typeof v === 'string' ? (importNationality = v) : '')
"
/> />
<SelectInput <SelectInput

View file

@ -106,7 +106,7 @@ watch(
:rules :rules
@clear=" @clear="
() => { () => {
model = ''; multiple ? (model = []) : (model = '');
} }
" "
> >

View file

@ -99,7 +99,7 @@ const userFileList = ref<{ name: string; url: string }[]>([]);
const typeStats = ref<UserTypeStats>(); const typeStats = ref<UserTypeStats>();
const userStats = ref<BranchUserStats[]>(); const userStats = ref<BranchUserStats[]>();
const searchDate = ref<Date[]>([]); const searchDate = ref<[]>([]);
const urlProfile = ref<string>(); const urlProfile = ref<string>();
const profileFileImg = ref<File | null>(null); const profileFileImg = ref<File | null>(null);
@ -126,7 +126,7 @@ const defaultFormData = {
streetEN: '', streetEN: '',
street: '', street: '',
trainingPlace: null, trainingPlace: null,
importNationality: null, importNationality: [],
sourceNationality: null, sourceNationality: null,
licenseExpireDate: null, licenseExpireDate: null,
licenseIssueDate: null, licenseIssueDate: null,
@ -178,7 +178,7 @@ const formData = ref<UserCreate>({
streetEN: '', streetEN: '',
street: '', street: '',
trainingPlace: null, trainingPlace: null,
importNationality: null, importNationality: [],
sourceNationality: null, sourceNationality: null,
licenseExpireDate: null, licenseExpireDate: null,
licenseIssueDate: null, licenseIssueDate: null,
@ -555,6 +555,7 @@ async function triggerChangeStatus(id: string, status: string) {
async function assignFormData(idEdit: string) { async function assignFormData(idEdit: string) {
if (!userData.value) return; if (!userData.value) return;
const foundUser = userData.value.result.find((user) => user.id === idEdit); const foundUser = userData.value.result.find((user) => user.id === idEdit);
console.log(foundUser);
if (foundUser) { if (foundUser) {
currentUser.value = foundUser; currentUser.value = foundUser;
@ -576,7 +577,10 @@ async function assignFormData(idEdit: string) {
street: foundUser.street, street: foundUser.street,
streetEN: foundUser.streetEN, streetEN: foundUser.streetEN,
trainingPlace: foundUser.trainingPlace, trainingPlace: foundUser.trainingPlace,
importNationality: foundUser.importNationality, importNationality:
typeof foundUser.importNationality === 'string'
? [foundUser.importNationality]
: foundUser.importNationality,
sourceNationality: foundUser.sourceNationality, sourceNationality: foundUser.sourceNationality,
licenseNo: foundUser.licenseNo, licenseNo: foundUser.licenseNo,
discountCondition: foundUser.discountCondition, discountCondition: foundUser.discountCondition,
@ -750,7 +754,7 @@ watch(
formData.value.responsibleArea = null; formData.value.responsibleArea = null;
formData.value.discountCondition = null; formData.value.discountCondition = null;
formData.value.sourceNationality = null; formData.value.sourceNationality = null;
formData.value.importNationality = null; formData.value.importNationality = [];
formData.value.trainingPlace = null; formData.value.trainingPlace = null;
formData.value.checkpoint = null; formData.value.checkpoint = null;
formData.value.checkpointEN = null; formData.value.checkpointEN = null;

View file

@ -13,7 +13,7 @@ export type User = {
createdBy: string; createdBy: string;
status: Status; status: Status;
trainingPlace: string | null; trainingPlace: string | null;
importNationality: string | null; importNationality: [] | null;
sourceNationality: string | null; sourceNationality: string | null;
licenseExpireDate: Date | null; licenseExpireDate: Date | null;
licenseIssueDate: Date | null; licenseIssueDate: Date | null;
@ -82,7 +82,7 @@ export type UserCreate = {
streetEN: string; streetEN: string;
street: string; street: string;
trainingPlace?: string | null; trainingPlace?: string | null;
importNationality?: string | null; importNationality?: string[] | null;
sourceNationality?: string | null; sourceNationality?: string | null;
licenseExpireDate?: Date | null; licenseExpireDate?: Date | null;
licenseIssueDate?: Date | null; licenseIssueDate?: Date | null;