Merge branch 'nice_dev' into develop

# Conflicts:
#	src/modules/05_placement/components/PersonalList/Table.vue
#	src/modules/06_retirement/router.ts
This commit is contained in:
DESKTOP-1R2VSQH\Lenovo ThinkPad E490 2023-07-24 15:27:45 +07:00
commit 4d369dbad7
13 changed files with 2752 additions and 66 deletions

View file

@ -105,10 +105,10 @@ const fetchplacementPosition = async () => {
const search = ref<string>("");
//reset Tree Filter
const filterRef = ref<any>(null);
const resetFilter = () => {
search.value = "";
filterRef.value.focus();
};
// const resetFilter = () => {
// search.value = "";
// filterRef.value.focus();
// };
const props = defineProps({
personalId: String,
@ -155,6 +155,8 @@ const validateData = async () => {
};
const saveAppoint = async () => {
console.log("save", dataForm);
myFormPosition.value.validate().then(async (result: boolean) => {
if (result) {
const dataAppoint = await {
@ -170,8 +172,7 @@ const saveAppoint = async () => {
// mouthSalaryAmount: dataForm.mouthSalaryAmount,
// positionSalaryAmount: dataForm.positionSalaryAmount,
};
// console.log("save appoint===>", dataAppoint);
console.log("save appoint===>", dataAppoint);
showLoader();
await http
.post(config.API.placementPass(), dataAppoint)
@ -184,7 +185,10 @@ const saveAppoint = async () => {
})
.finally(async () => {
await closeAndClear();
await resetFilter();
// await resetFilter();
await fetchPublishFile();
await loadTreeData();
await fetchplacementPosition();
hideLoader();
});
}
@ -273,8 +277,9 @@ const positionLevelOptions = ref<Object[]>([
]);
const selectedPosition = async (data: any) => {
console.log("selecteds", data);
if (data.name == null && selected.value != data.keyId) {
console.log("selecteds", data);
// console.log("selecteds", data);
editDataStatus.value = true;
selected.value = data.keyId;
@ -299,9 +304,9 @@ const selectedPosition = async (data: any) => {
// positionPathSide Options
let positionPathSideArr: any = [];
if (data.positionSideNameObj != null) {
if (data.positionSideNameObj && data.positionSideNameObj != null) {
data.positionSideNameObj.map((x: any) => {
positionLevelsArr.push({
positionPathSideArr.push({
label: x.Name,
value: x.Id,
});
@ -345,6 +350,7 @@ const selectedPosition = async (data: any) => {
positionLevelsArr.length > 1 || positionLevelsArr.length == 0
? ""
: positionLevelsArr[0].value;
dataForm.positionLevelId = data.positionLevelObj[0].Id;
}
} else if (selected.value == data.keyId) {
selected.value = "";
@ -355,6 +361,7 @@ const selectedPosition = async (data: any) => {
dataForm.positionPathSideId = "";
dataForm.positionTypeId = "";
}
console.log("dataForm", dataForm);
};
const checkPosition = (val: string) => {
@ -374,14 +381,14 @@ watch(props, () => {
console.log("personal", personal.value);
}
// console.log("draft===>", personal.value.draft);
if (personal.value && personal.value.draft === false) {
// const findData = dataRespone.value.find(findByPerson);
let findData: any = null;
console.log(dataRespone.value);
dataRespone.value.map((x: any) => {
findData = findByPerson(x);
console.log(findData);
if (findData != null) {
console.log("findData===>", findData);
selectedPosition(findData);
@ -403,9 +410,7 @@ function findByPerson(element: any): any {
element.positionTypeId === personal.value.positionTypeId &&
element.positionNumId === personal.value.posNoId &&
(element.positionLevelObj === null ||
element.positionLevelObj[0].Id === personal.value.positionLevelId) &&
(element.positionSideNameObj === null ||
element.positionSideNameObj[0].Id === personal.value.positionPathSideId)
element.positionLevelObj[0].Id === personal.value.positionLevelId)
) {
return element;
} else if (element.children) {

View file

@ -466,11 +466,26 @@ const clickClose = async () => {
modal.value = false;
}
};
const displayAdd = ref<boolean>(true);
onMounted(async () => {
if (keycloak.tokenParsed != null) {
roleAdmin.value = await keycloak.tokenParsed.role.includes("placement1");
console.log("roleAdmin===>", roleAdmin);
console.log("roleAdmin===>", roleAdmin.value);
if (roleAdmin.value === false) {
displayAdd.value = false;
visibleColumns.value = [
"position",
"fullName",
"examNumber",
"idCard",
"positionNumber",
"organizationName",
"reportingDate",
"bmaOfficer",
"statusName",
"positionCandidate",
];
}
}
await getTable();
});
@ -541,6 +556,7 @@ const paginationLabel = (start: number, end: number, total: number) => {
</script>
<template>
<q-form ref="myForm">
<<<<<<< HEAD
<Table :contain-status="containStatus" :rows="rows" :columns="columns" :filter="filter"
:visible-columns="visibleColumns" v-model:inputfilter="filter" v-model:inputvisible="visibleColumns"
v-model:editvisible="editvisible" v-model:containfilter="containStatus"
@ -561,6 +577,51 @@ const paginationLabel = (start: number, end: number, total: number) => {
<div class="text-weight-medium">{{ props.row.name }}</div>
<div class="text-weight-light">{{ props.row.idCard }}</div>
</div>
=======
<Table
:contain-status="containStatus"
:rows="rows"
:columns="columns"
:filter="filter"
:visible-columns="visibleColumns"
v-model:inputfilter="filter"
v-model:inputvisible="visibleColumns"
v-model:editvisible="editvisible"
v-model:containfilter="containStatus"
@update-modaladdlist="handleModalAddListUpdate"
:history="true"
:boss="true"
:saveNoDraft="true"
:role-admin="roleAdmin"
:displayAdd="displayAdd"
>
<template #columns="props">
<q-tr :props="props">
<q-td
v-for="col in props.cols"
:key="col.name"
:props="props"
@click="selectData(props.row.personalId)"
class="cursor-pointer"
>
<template v-if="col.name === 'position'">
{{ props.rowIndex + 1 }}
</template>
<template
v-else-if="col.name === 'fullName'"
class="table_ellipsis"
>
<div class="row col-12 text-no-wrap items-center">
<img
v-if="props.row.avatar == null"
src="@/assets/avatar_user.jpg"
class="col-4 img-info"
/>
<img v-else :src="props.row.avatar" class="col-4 img-info" />
<div class="col-4">
<div class="text-weight-medium">{{ props.row.name }}</div>
<div class="text-weight-light">{{ props.row.idCard }}</div>
>>>>>>> nice_dev
</div>
</template>
<template v-else-if="col.name === 'examNumber'">

View file

@ -19,7 +19,7 @@ const props = defineProps({
},
personalId: {
type: String,
default: ""
default: "",
},
validate: {
type: Function,
@ -27,8 +27,7 @@ const props = defineProps({
},
});
const rows = ref<any[]>([
]);
const rows = ref<any[]>([]);
//--------------------()------------------------------------//
// const graduationDate = new Date(graduationExample);
// rows.value[0].graduation = date2Thai(graduationDate, false, false);
@ -81,7 +80,6 @@ const myForm = ref<any>([]);
const personalForm = ref<any>([]);
const selection = ref<any>([]);
const $q = useQuasar();
function isRequired(val: any): boolean | string {
@ -166,21 +164,22 @@ const close = async () => {
rows.value = [];
};
const putpersonalForm = async () => {
await http
.put(
config.API.putProperty("0a846508-4932-40de-9a9e-5b519492217c"),
personalForm.value.isProperty
)
.then((res) => {
success($q, res.data.message);
})
.catch((e) => {
console.log(e);
})
.finally(() => {
props.close();
props.validate();
});
props.close();
// await http
// .put(
// config.API.putProperty("0a846508-4932-40de-9a9e-5b519492217c"),
// personalForm.value.isProperty
// )
// .then((res) => {
// success($q, res.data.message);
// })
// .catch((e) => {
// console.log(e);
// })
// .finally(() => {
// props.close();
// props.validate();
// });
};
</script>
<template>
@ -188,7 +187,10 @@ const putpersonalForm = async () => {
<q-card style="max-width: 100%; width: 80%">
<q-form ref="myForm">
<div class="row">
<DialogHeader :title="`รายละเอียดของ ${personalForm.fullName}`" @click="close" />
<DialogHeader
:title="`รายละเอียดของ ${personalForm.fullName}`"
@click="close"
/>
</div>
<q-separator />
@ -197,10 +199,13 @@ const putpersonalForm = async () => {
<q-card bordered class="card-panding">
<div class="row items-center q-pa-xs header-text">
อมลทวไป
<span v-if="personalForm.bmaOfficer != null" class="check-officer">
<q-icon name="mdi-check" />
{{ formBmaofficer(personalForm.bmaOfficer) }}
</span>
<span
v-if="personalForm.bmaOfficer != null"
class="check-officer"
>
<q-icon name="mdi-check" />
{{ formBmaofficer(personalForm.bmaOfficer) }}
</span>
</div>
<div class="row q-pa-xs">
<div class="col-3 header-sub-text">
@ -244,8 +249,18 @@ const putpersonalForm = async () => {
<div class="contanier-box-mini">
<q-card bordered class="card-panding">
<div class="row items-center q-pa-xs header-text">การศกษา</div>
<q-table ref="table" :rows="rows" :columns="columns" flat bordered class="custom-header-table"
virtual-scroll :virtual-scroll-sticky-size-start="48" dense hide-bottom>
<q-table
ref="table"
:rows="rows"
:columns="columns"
flat
bordered
class="custom-header-table"
virtual-scroll
:virtual-scroll-sticky-size-start="48"
dense
hide-bottom
>
</q-table>
</q-card>
</div>
@ -320,19 +335,24 @@ const putpersonalForm = async () => {
<div class="contanier-box-mini">
<q-card bordered class="card-panding">
<div class="col-12 row items-center q-pa-sm header-text">
การคดกรองคณสมบ
เอกสารเพมเต
</div>
<div v-for="(item, index) of personalForm.isProperty" :key="index" class="q-pa-sm">
<!-- <div v-for="(item, index) of personalForm.isProperty" :key="index" class="q-pa-sm">
<q-checkbox size="xs" v-model="item.value" :val="item.value" :label="item.name" keep-color color="teal"
:rules="[isRequired]" class="checkbox-group" />
<q-separator />
</div>
</div> -->
</q-card>
</div>
</div>
<q-separator />
<div>
<DialogFooter @click="ClickSave" :model="props.Modal" :editvisible="save" :validate="validateData" />
<DialogFooter
@click="ClickSave"
:model="props.Modal"
:editvisible="save"
:validate="validateData"
/>
</div>
</q-form>
</q-card>

View file

@ -10,7 +10,14 @@
@update:model-value="updateContain"
/>
<div>
<q-btn flat round color="primary" icon="mdi-account-arrow-right" @click="updateModaladdlist" />
<q-btn
flat
round
color="primary"
icon="mdi-account-arrow-right"
@click="updateModaladdlist"
v-if="displayAdd"
/>
</div>
<q-space />
<div class="items-center" style="display: flex">
@ -109,6 +116,7 @@ const props = defineProps({
editvisible: Boolean,
titleText: String,
modaladdlist: Boolean,
displayAdd: Boolean,
optionsFilter: {
type: Array,
defualt: [],