no message

This commit is contained in:
STW_TTTY\stwtt 2024-05-02 16:16:25 +07:00
parent 11b8ab689a
commit 8e24bcfa84
4 changed files with 358 additions and 82 deletions

View file

@ -24,7 +24,7 @@ const props = defineProps({
type: Object,
require: true,
},
onSubmit:Function
onSubmit: Function,
});
const $q = useQuasar();
const mixin = useCounterMixin();
@ -45,6 +45,7 @@ const posType = defineModel<any>("posType", { required: true });
const posLevel = defineModel<any>("posLevel", { required: true });
const position = defineModel<any>("position", { required: true });
const orgRevisionId = ref<string>("");
const filter = ref<string>("");
const isAll = ref<boolean>(false);
const isBlank = ref<boolean>(false);
@ -431,9 +432,36 @@ watch(
}
);
function onSubmit() {
dialogConfirm($q, () => {
console.log('not save')
});
const dataPosMaster = posMasterMain.value?.find(
(e: any) => e.id === positionId.value
);
console.log(dataPosMaster)
if (selectedPos.value.length === 0) {
dialogMessageNotify($q, "กรุณาเลือกตำแหน่ง");
} else {
dialogConfirm($q, async () => {
const body = {
personalId: props?.dataRows?.id,
node: dataPosMaster.node,
nodeId: dataPosMaster.nodeId,
orgRevisionId: formActive.activeId,
positionId: selectedPos.value[0].id,
posMasterNo: dataPosMaster.posMasterNo, //()
positionName: selectedPos.value[0].positionName, //
positionField: selectedPos.value[0].positionField, //
posTypeId: selectedPos.value[0].posTypeId, //
posTypeName: selectedPos.value[0].posTypeName, //
posLevelId: selectedPos.value[0].posLevelId, //
posLevelName: selectedPos.value[0].posLevelName, //
reportingDate: datePos.value,
posmasterId: dataPosMaster.id,
typeCommand: type.value,
};
props.onSubmit?.(body);
});
}
}
</script>
<template>

View file

@ -19,6 +19,8 @@ import { defaultInformation } from "@/modules/04_registry/components/profileType
import http from "@/plugins/http";
import config from "@/app.config";
import PopupPersonal from "@/components/Dialogs/PopupPersonalNew.vue";
const modalPersonal = ref<boolean>(false);
const $q = useQuasar();
const route = useRoute();
@ -206,8 +208,8 @@ const getData = async () => {
rows.value = list;
profileId.value = data.profileId;
avatar.value = data.avatar ?? "";
title.value.fullname = `${data.prefix}${data.firstname ?? "-"} ${
data.lastname ?? "-"
title.value.fullname = `${data.prefix ?? ""}${data.firstName ?? ""} ${
data.lastName ?? ""
}`;
title.value.organizationPositionOld = data.organizationPositionOld ?? "-";
title.value.positionLevelOld = data.positionLevelOld ?? "-";
@ -464,6 +466,11 @@ const getClass = (val: boolean) => {
"full-width cursor-pointer": !val,
};
};
function onclickViewinfo() {
modalPersonal.value = true;
}
onMounted(async () => {
await fetchPerson();
await getData();
@ -490,6 +497,15 @@ onMounted(async () => {
{{ title.fullname }}
</div>
<q-space />
<q-btn
outline
color="blue"
dense
icon-right="mdi-open-in-new"
class="q-px-sm"
label="ดูข้อมูลทะเบียนประวัติ"
@click="onclickViewinfo()"
/>
</div>
<div class="col-12"><q-separator /></div>
<div class="row col-12 q-pa-md">
@ -661,7 +677,6 @@ onMounted(async () => {
hide-bottom-space
:outlined="edit"
dense
:readonly="!edit"
:borderless="!edit"
:model-value="
@ -887,9 +902,7 @@ onMounted(async () => {
/>
</div>
<div class="col-xs-12">
<div class="text-weight-bold">
ตำแหนงและหนวยงานเด
</div>
<div class="text-weight-bold">ตำแหนงและหนวยงานเด</div>
</div>
<div class="col-xs-12">
<q-input
@ -994,7 +1007,11 @@ onMounted(async () => {
</div>
</div>
</q-form>
<q-card v-if="rows.length > 0" bordered class="row col-12 text-dark q-mt-sm">
<q-card
v-if="rows.length > 0"
bordered
class="row col-12 text-dark q-mt-sm"
>
<div class="bg-grey-1 q-pa-sm col-12 row items-center text-primary">
<div class="q-pl-sm text-weight-bold text-dark">เอกสารเพมเต</div>
</div>
@ -1035,6 +1052,13 @@ onMounted(async () => {
</div>
</q-card>
</q-card>
<PopupPersonal
:modal="modalPersonal"
:id="personId"
@update:modal="updatemodalPersonal"
/>
</template>
<style lang="scss" scope>

View file

@ -18,6 +18,8 @@ import type {
ResponseRow,
} from "@/modules/05_placement/interface/response/Receive";
import DialogOrgSelect from "@/components/Dialogs/DialogOrgSelect.vue";
const dataRows = ref<any[]>([]);
const $q = useQuasar();
const router = useRouter();
@ -37,6 +39,11 @@ const filters = ref<ResponseRow[]>([]);
const rows = ref<ResponseRow[]>([]);
const mixin = useCounterMixin(); //
const transferStore = useTransferDataStore();
const posType = ref<string>("");
const posLevel = ref<string>("");
const position = ref<string>("");
const type = ref<string | null>(null);
const { statusText } = transferStore;
const {
showLoader,
@ -71,9 +78,9 @@ const visibleColumns = ref<string[]>([
"citizenId",
"fullname",
"organizationName",
"birthday",
"dateText",
"statusText",
"dateOfBirth",
"createdAt",
"status",
]);
//
const columns = ref<QTableProps["columns"]>([
@ -91,7 +98,7 @@ const columns = ref<QTableProps["columns"]>([
align: "left",
label: "เลขประจำตัวประชาชน",
sortable: true,
field: "fullname",
field: "citizenId",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
sort: (a: string, b: string) =>
@ -120,22 +127,22 @@ const columns = ref<QTableProps["columns"]>([
a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
{
name: "birthday",
name: "dateOfBirth",
align: "left",
label: "วัน/เดือน/ปี เกิด",
sortable: true,
field: "birthday",
field: "dateOfBirth",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
sort: (a: string, b: string) =>
a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
{
name: "dateText",
name: "createdAt",
align: "left",
label: "วันที่ดำเนินการ",
sortable: true,
field: "dateText",
field: "createdAt",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
sort: (a: string, b: string) =>
@ -143,11 +150,11 @@ const columns = ref<QTableProps["columns"]>([
sortOrder: "da",
},
{
name: "statusText",
name: "status",
align: "left",
label: "สถานะ",
sortable: true,
field: "statusText",
field: "status",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
sort: (a: string, b: string) =>
@ -186,48 +193,48 @@ const fecthlistRecevice = async () => {
const response = res.data.result;
listRecevice.value = response;
let list: ResponseRow[] = [];
response.map((e: ResponseData) => {
list.push({
personalId: e.id ?? "",
citizenId: e.citizenId ?? "-",
fullname: e.prefix + e.firstname + " " + e.lastname,
organizationName:
e.organizationName +
" " +
e.organizationShortName +
" " +
e.positionNumber +
" " +
e.positionPath,
orgName: e.organizationName,
organizationShortName: e.organizationShortName,
positionNumber: e.positionNumber,
positionPath: e.positionPath,
positionLevelId: e.positionLevelId,
positionTypeId: e.positionTypeId,
positionId: e.positionId,
birthday:
e.dateOfBirth == null
? "-"
: date2Thai(e.dateOfBirth) &&
e.dateOfBirth.toString() === "0001-01-01T00:00:00"
? "-"
: date2Thai(e.dateOfBirth),
status: e.status,
statusText: statusText(e.status ?? ""),
createdAt: e.createdAt !== null ? new Date(e.createdAt) : null,
dateText: e.createdAt !== null ? date2Thai(e.createdAt) : "-",
educationOld: e.educationOld ?? "",
organizationPositionOld: e.organizationPositionOld ?? "",
positionTypeOld: e.positionTypeOld,
positionLevelOld: e.positionLevelOld,
positionNumberOld: e.positionNumberOld,
amountOld: e.amountOld,
});
});
rows.value = list;
filters.value = list;
// response.map((e: ResponseData) => {
// list.push({
// personalId: e.id ?? "",
// citizenId: e.citizenId ?? "-",
// fullname: e.prefix + e.firstname + " " + e.lastname,
// organizationName:
// e.organizationName +
// " " +
// e.organizationShortName +
// " " +
// e.positionNumber +
// " " +
// e.positionPath,
// orgName: e.organizationName,
// organizationShortName: e.organizationShortName,
// positionNumber: e.positionNumber,
// positionPath: e.positionPath,
// positionLevelId: e.positionLevelId,
// positionTypeId: e.positionTypeId,
// positionId: e.positionId,
// birthday:
// e.dateOfBirth == null
// ? "-"
// : date2Thai(e.dateOfBirth) &&
// e.dateOfBirth.toString() === "0001-01-01T00:00:00"
// ? "-"
// : date2Thai(e.dateOfBirth),
// status: e.status,
// statusText: statusText(e.status ?? ""),
// createdAt: e.createdAt !== null ? new Date(e.createdAt) : null,
// dateText: e.createdAt !== null ? date2Thai(e.createdAt) : "-",
// educationOld: e.educationOld ?? "",
// organizationPositionOld: e.organizationPositionOld ?? "",
// positionTypeOld: e.positionTypeOld,
// positionLevelOld: e.positionLevelOld,
// positionNumberOld: e.positionNumberOld,
// amountOld: e.amountOld,
// });
// });
rows.value = response;
filters.value = response;
})
.catch((e) => {
messageError($q, e);
@ -258,11 +265,18 @@ const clickCloseUpload = () => {
files.value = null;
};
//
const openModalTree = (id: string,data:any) => {
const openModalTree = (id: string, data: any) => {
personalId.value = id;
personal.value = listRecevice.value.filter((e: ResponseData) => e.id === id);
dataRows.value = data;
modalTree.value = true;
dataRows.value = data
type.value = null;
dataRows.value = data;
posType.value = data.posTypeId;
posLevel.value = data.posLevelId;
position.value = data.positionName;
};
//
const openUpload = (id: string) => {
@ -303,9 +317,39 @@ const nextPage = (id: string) => {
});
};
function onSave(data:any) {
console.log('not save',data)
const dataAppoint = {
recruitDate: data.reportingDate,
posNoId: data.posNoId,
positionId: data.positionId,
positionLevelId: data.posLevelId,
positionTypeId: data.posTypeId,
// positionLineId: data.positionLineId,
// positionPathSideId: data.positionPathSideId,
};
showLoader();
http
.put(config.API.receivePosition(personalId.value), dataAppoint)
.then((res) => {
modalTree.value = false
success($q, "บันทึกสำเร็จ");
})
.catch((e) => {
messageError($q, e);
})
.finally(async () => {
fecthlistRecevice()
hideLoader();
});
}
onMounted(() => {
fecthlistRecevice();
});
</script>
<template>
<div class="toptitle text-dark col-12 row items-center">รายการรบโอน</div>
@ -383,6 +427,174 @@ onMounted(() => {
</template>
<template v-slot:body="props">
<q-tr :props="props" class="cursor-pointer">
<q-td v-for="col in props.cols" :key="col.name" :props="props" @click="nextPage(props.row.id)">
<div v-if="col.name == 'no'">
{{ props.rowIndex + 1 }}
</div>
<div v-else-if="col.name == 'fullname'">
{{
props.row.firstName
? `${props.row.prefix ?? ""}${
props.row.firstName ?? ""
} ${props.row.lastName ?? ""}`
: "-"
}}
</div>
<div v-else-if="col.name == 'dateOfBirth'">
{{
props.row.dateOfBirth
? date2Thai(props.row.dateOfBirth)
: "-"
}}
</div>
<div v-else-if="col.name == 'createdAt'">
{{
props.row.createdAt ? date2Thai(props.row.createdAt) : "-"
}}
</div>
<div v-else-if="col.name == 'organizationName'">
<div
v-if="
props.row.orgName
"
>
<div class="col-4">
<div class="text-weight-medium">
{{ props.row.root !== null ? props.row.root : "-" }}
{{
props.row.rootShortName !== null
? `(${props.row.rootShortName})`
: ""
}}
</div>
<div class="text-weight-light">
{{
props.row.nodeName !== null ? props.row.nodeName : ""
}}
{{
props.row.nodeShortName !== null
? `(${props.row.nodeShortName}${props.row.posMasterNo})`
: ""
}}
</div>
</div>
</div>
<div v-else>
<div class="col-4">
<div class="text-weight-medium">-</div>
</div>
</div>
</div>
<div v-else-if="col.name == 'status'">
{{ props.row.status ? statusText(props.row.status) : "-" }}
</div>
<div v-else>
{{ col.value ? col.value : "-" }}
</div>
</q-td>
<q-td auto-width>
<q-btn
icon="mdi-dots-vertical"
size="12px"
color="grey-7"
flat
round
dense
>
<q-menu
transition-show="jump-down"
transition-hide="jump-up"
>
<q-list dense style="min-width: 100px">
<q-item
clickable
v-close-popup
@click="
openModalTree(props.row.id, props.row)
"
>
<q-item-section
style="min-width: 0px"
avatar
class="q-py-sm"
>
<q-icon
:color="
props.row.status == 'REPORT' ||
props.row.status == 'DONE'
? 'grey'
: 'primary'
"
size="xs"
name="mdi-bookmark-outline"
/>
</q-item-section>
<q-item-section
>เลอกหนวยงานทบโอน</q-item-section
>
</q-item>
<q-item
clickable
v-close-popup
@click="openUpload(props.row.id)"
:disable="
props.row.status == 'REPORT' ||
props.row.status == 'DONE'
"
>
<q-item-section
style="min-width: 0px"
avatar
class="q-py-sm"
>
<q-icon
size="xs"
name="attach_file"
:color="
props.row.status == 'REPORT' ||
props.row.status == 'DONE'
? 'grey'
: 'blue'
"
/>
</q-item-section>
<q-item-section>ปโหลดเอกสาร</q-item-section>
</q-item>
<q-item
clickable
v-close-popup
@click="openDelete(props.row.id)"
:disable="
props.row.status == 'REPORT' ||
props.row.status == 'DONE'
"
>
<q-item-section
style="min-width: 0px"
avatar
class="q-py-sm"
>
<q-tooltip>ลบขอม</q-tooltip>
<q-icon
:color="
props.row.status == 'REPORT' ||
props.row.status == 'DONE'
? 'grey'
: 'red'
"
size="xs"
name="mdi-delete"
/>
</q-item-section>
<q-item-section>ลบ</q-item-section>
</q-item>
</q-list>
</q-menu>
</q-btn>
</q-td>
</q-tr>
<!-- <q-tr :props="props" class="cursor-pointer">
<q-td
key="no"
:props="props"
@ -484,7 +696,9 @@ onMounted(() => {
<q-item
clickable
v-close-popup
@click="openModalTree(props.row.personalId,props.row)"
@click="
openModalTree(props.row.personalId, props.row)
"
:disable="
props.row.status == 'REPORT' ||
props.row.status == 'DONE'
@ -569,7 +783,7 @@ onMounted(() => {
</q-menu>
</q-btn>
</q-td>
</q-tr>
</q-tr> -->
</template>
</d-table>
</div>
@ -627,13 +841,23 @@ onMounted(() => {
</q-card>
</q-dialog>
<DialogOrgTree
<!-- <DialogOrgTree
v-model:modal="modalTree"
:close="closeModalTree"
:personal="personal"
:personalId="personalId"
:dataRows="dataRows"
/> -->
<DialogOrgSelect
:title="`เลือกหน่วยงานที่รับโอน`"
v-model:modal="modalTree"
v-model:type="type"
:posType="posType"
:posLevel="posLevel"
:position="position"
:dataRows="dataRows"
:onSubmit="onSave"
/>
</template>
<style scoped lang="scss"></style>

View file

@ -165,16 +165,16 @@ function filterByPersonIdNull(obj: any) {
}
// position
const fetchplacementPosition = async () => {
await http
.get(config.API.receiveDataPosition())
.then((res: any) => {
placementPosition.value = res.data.result;
})
.catch((e: any) => {
messageError($q, e);
});
};
// const fetchplacementPosition = async () => {
// await http
// .get(config.API.receiveDataPosition())
// .then((res: any) => {
// placementPosition.value = res.data.result;
// })
// .catch((e: any) => {
// messageError($q, e);
// });
// };
const myFilterMethod = (node: any, filter: string) => {
const filt = filter;
@ -236,7 +236,7 @@ const saveAppoint = async () => {
await closeAndClear();
await fetchPublishFile();
await loadTreeData();
await fetchplacementPosition();
// await fetchplacementPosition();
hideLoader();
});
}
@ -426,6 +426,7 @@ const dataActive = ref<DataActive>();
const isPublic = ref<boolean>(false);
const orgPublishDate = ref<Date | null>(null);
/** function เรียกข้อมูลโครงสร้าง แบบปัจุบันและ แบบร่าง*/
async function fetchOrganizationActive() {
showLoader();
await http
@ -500,13 +501,12 @@ function updateSelected(data: DataTree) {
}
async function fetchDataTable(id: string, level: number = 0) {
console.log(props.dataRows);
showLoader();
const body = {
node: level,
nodeId: id,
position: props?.dataRows?.positionPath,
typeCommand: "MOVE",
typeCommand: null,
posLevel: props.dataRows?.positionLevelId,
posType: props.dataRows?.positionTypeId,
isAll: isAll.value,
@ -636,7 +636,7 @@ watch(
onMounted(async () => {
await fetchPublishFile();
await loadTreeData();
await fetchplacementPosition();
// await fetchplacementPosition();
});
</script>