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:
commit
4d369dbad7
13 changed files with 2752 additions and 66 deletions
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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'">
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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: [],
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue