Merge branch 'develop' into devTee

# Conflicts:
#	src/modules/11_discipline/components/2_InvestigateFacts/EditPage.vue
#	src/modules/11_discipline/components/PopupSendToNext.vue
This commit is contained in:
STW_TTTY\stwtt 2024-10-03 15:06:51 +07:00
commit fddb0f7dc4
19 changed files with 274 additions and 155 deletions

View file

@ -47,6 +47,15 @@ const columns = ref<QTableProps["columns"]>([
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "createdFullName",
align: "left",
label: "ผู้ยื่นขอ",
sortable: true,
field: "createdFullName",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "name",
align: "left",
@ -124,6 +133,7 @@ const columns = ref<QTableProps["columns"]>([
]);
const visibleColumns = ref<string[]>([
"createdAt",
"createdFullName",
"name",
"developmentProjects",
"developmentTarget",

View file

@ -17,8 +17,14 @@ import DialogHeader from "@/components/DialogHeader.vue";
const $q = useQuasar();
const store = useRequestEditStore();
const { dialogConfirm, showLoader, hideLoader, messageError, success } =
useCounterMixin();
const {
dialogConfirm,
showLoader,
hideLoader,
messageError,
success,
date2Thai,
} = useCounterMixin();
const modal = defineModel<boolean>("modal", { required: true }); //, popup
const requestId = defineModel<string>("requestId", { required: true }); // id
@ -40,6 +46,8 @@ const formData = reactive<FormDataIDP>({
developmentReport: "", //
status: "", //
reason: "", //
createdFullName: "", //
createdAt: null, //
});
//70 ()
@ -151,6 +159,8 @@ function fetchDataByid(id: string) {
formData.reasonDevelopment10 = data.reasonDevelopment10;
formData.status = data.status;
formData.reason = data.reason;
formData.createdFullName = data.createdFullName;
formData.createdAt = data.createdAt;
})
.catch((err) => {
messageError($q, err);
@ -213,6 +223,8 @@ function closeDialog() {
formData.developmentReport = "";
formData.status = "";
formData.reason = "";
formData.createdFullName = "";
formData.createdAt = null;
}
/**
@ -241,16 +253,22 @@ watch(modal, (val) => {
<q-dialog v-model="modal" persistent>
<q-card style="min-width: 65%">
<q-form greedy @submit.prevent @validation-success="onSubmit">
<DialogHeader tittle="ข้อมูลการพัฒนารายบุคคล" :close="closeDialog" />
<DialogHeader
:tittle="`${formData.createdFullName}
(ขอแกไขเม ${
formData.createdAt ? date2Thai(formData.createdAt, true, true) : ''
})`"
:close="closeDialog"
/>
<q-separator />
<!-- สถานะคำรอง -->
<q-card-section>
<q-card bordered class="col-12">
<div class="col-12 text-weight-medium bg-grey-1 q-py-xs q-px-md">
<!-- <div class="col-12 text-weight-medium bg-grey-1 q-py-xs q-px-md">
สถานะคำรอง
</div>
<q-separator />
<q-separator /> -->
<div class="row q-pa-md q-col-gutter-sm">
<!-- สถานะ -->
<div class="col-4">
@ -297,6 +315,8 @@ watch(modal, (val) => {
</div>
</div>
<q-separator />
<q-card-actions align="right">
<q-btn label="บันทึก" color="secondary" type="submit"
><q-tooltip>นท</q-tooltip></q-btn

View file

@ -77,6 +77,8 @@ interface FormDataIDP {
developmentReport: string;
status: string;
reason: string;
createdFullName?: string;
createdAt?: Date | null;
}
export type {

View file

@ -15,7 +15,6 @@ import type { ListCommand } from "@/modules/18_command/interface/index/Main";
import DialogHeader from "@/components/DialogHeader.vue";
import DialogCreateCommand from "@/modules/18_command/components/DialogCreateCommand.vue";
import { options } from "@fullcalendar/core/preact";
const $q = useQuasar();
const mixin = useCounterMixin();

View file

@ -27,7 +27,9 @@ interface TypeData {
interface OptionDataInsignia {
id: string;
name: string;
type: string;
type?: string;
insigniaType?: string;
label?: string;
}
interface InsigniaType {
label: string;
@ -96,6 +98,39 @@ interface DataAllocate {
year: number;
}
interface DataInsignia {
name: string;
shortName: string;
}
interface DataRecord {
id: string;
citizenId: string;
prefix: string;
position: string;
status: string;
dateReceive: string | Date | null;
name: string;
type: string;
employeeType: string | undefined;
profileType: string;
date: string | Date | null;
volumeNo: string;
section: string;
page: string;
number: string;
vatnumber: string;
datepay: string | Date | null;
typepay: string;
address: string;
dateReceiveInsignia: string;
dateReturnInsignia: string;
docReceiveInsignia: string;
docReturnInsignia: string;
orgReceiveInsignia: string;
orgReturnInsignia: string;
}
export type {
OptionData,
OptionDataYear,
@ -110,4 +145,6 @@ export type {
DataPerson,
DataDocuments,
DataAllocate,
DataRecord,
DataInsignia,
};

View file

@ -45,10 +45,58 @@ interface ResponseAllocate {
total: number;
}
interface ResponseInsigniaType {
createdAt: string;
id: string;
insigniaTypeId: string;
insigniaTypeName: string;
isActive: boolean;
lastUpdateFullName: string;
lastUpdatedAt: string;
name: string;
note: string;
shortName: string;
}
interface ResponseRecordLists {
address: string;
citizenId: string;
date: string | Date;
datePayment: string | Date;
dateReceive: string | Date;
dateReceiveInsignia: string;
dateReturnInsignia: string;
docReceiveInsignia: string;
docReturnInsignia: string;
fullName: string;
id: string;
issue: string;
no: string;
number: string;
orgReceiveInsignia: string;
orgReturnInsignia: string;
organizationOrganizationReceive: string;
organizationOrganizationSend: string;
page: string;
position: string;
prefix: string;
profileType: string;
requestInsignia: string;
requestInsigniaId: string;
requestInsigniaShortName: string;
salary: number;
section: string;
status: string;
typePayment: string;
volumeNo: string;
}
export type {
ResponseObject,
ResponsePeriod,
ResponseNoSend,
ResponseRound,
ResponseAllocate,
ResponseInsigniaType,
ResponseRecordLists,
};

View file

@ -2,7 +2,17 @@ import { defineStore } from "pinia";
import { ref } from "vue";
/** import Type*/
import type { OptionData } from "@/modules/07_insignia/interface/index/Main";
import type {
OptionData,
DataRecord,
DataInsignia,
OptionDataInsignia,
InsigniaType,
} from "@/modules/07_insignia/interface/index/Main";
import type {
ResponseInsigniaType,
ResponseRecordLists,
} from "@/modules/07_insignia/interface/response/Main";
/** import Stores */
import { useCounterMixin } from "@/stores/mixin";
@ -11,9 +21,9 @@ const { date2Thai } = mixin;
export const useResultDataStore = defineStore("insigniaResult", () => {
const insignia = ref<string>("");
const insigniaOp = ref<any[]>([{ name: "ทั้งหมด", id: "" }]);
const insigniaOp2 = ref<any[]>([]);
const insigniaType = ref<any>();
const insigniaOp = ref<OptionDataInsignia[]>([{ name: "ทั้งหมด", id: "" }]);
const insigniaOp2 = ref<OptionData[]>([]);
const insigniaType = ref<InsigniaType[]>([]);
const invoiceType = ref<string>("all");
const invoiceTypeop = ref<OptionData[]>([
{ name: "ทั้งหมด", id: "all" },
@ -26,20 +36,20 @@ export const useResultDataStore = defineStore("insigniaResult", () => {
{ name: "ข้าราชการ กทม.สามัญ", id: "officer" },
{ name: "ลูกจ้างประจำ", id: "employee" },
]);
const rows = ref<any[]>([]);
const listInsignia = ref<any>([]);
const type = ref<any[]>([]);
const rows = ref<DataRecord[]>([]);
const listInsignia = ref<DataRecord[]>([]);
const type = ref<DataInsignia[]>([]);
/**
* function
* @param data
*/
async function fetchDatainsignia(data: any) {
async function fetchDatainsignia(data: ResponseInsigniaType[]) {
insignia.value = "";
invoiceType.value = "all";
insigniaOp.value = [{ name: "ทั้งหมด", id: "" }];
insigniaOp2.value = [];
data.forEach((e: any) => {
data.forEach((e: ResponseInsigniaType) => {
insigniaOp.value.push({
name: `${e.name} (${e.shortName})`,
id: e.id,
@ -47,10 +57,10 @@ export const useResultDataStore = defineStore("insigniaResult", () => {
});
});
data.forEach((e: any) => {
data.forEach((e: ResponseInsigniaType) => {
insigniaOp2.value.push({ name: `${e.name} (${e.shortName})`, id: e.id });
});
data.forEach((e: any) => {
data.forEach((e: ResponseInsigniaType) => {
type.value.push({
name: e.name,
shortName: e.shortName,
@ -62,23 +72,28 @@ export const useResultDataStore = defineStore("insigniaResult", () => {
* function
* @param data
*/
async function fetchDatainsigniaType(data: any) {
insigniaType.value = data.map((e: any) => ({ name: e.id, label: e.name }));
async function fetchDatainsigniaType(data: ResponseInsigniaType[]) {
insigniaType.value = data.map((e: ResponseInsigniaType) => ({
name: e.id,
label: e.name,
}));
}
/**
* function /
* @param data
*/
async function fetchlistinsignia(data: any) {
async function fetchlistinsignia(data: ResponseRecordLists[]) {
console.log(data);
rows.value = [];
let alllist = await data.map((e: any) => ({
const alllist = await data.map((e: ResponseRecordLists) => ({
id: e.id,
citizenId: e.citizenId,
prefix: e.prefix,
position: e.position,
status: status(e.status),
dateReceive: date2Thai(e.dateReceive),
status: status(e.status) ?? "",
dateReceive: e.dateReceive ?? date2Thai(e.dateReceive),
name: e.fullName,
type: `${e.requestInsignia} (${
type.value.find((item) => item.name === e.requestInsignia)?.shortName ||
@ -88,13 +103,13 @@ export const useResultDataStore = defineStore("insigniaResult", () => {
e.profileType === "" ? "officer" : e.profileType
),
profileType: e.profileType === "" ? "officer" : e.profileType,
date: date2Thai(e.date),
date: e.date ?? date2Thai(e.date),
volumeNo: e.volumeNo,
section: e.section,
page: e.page,
number: e.no,
vatnumber: e.number,
datepay: date2Thai(e.datePayment),
datepay: e.datePayment ?? date2Thai(e.datePayment),
typepay: e.typePayment,
address: e.address,
dateReceiveInsignia: e.dateReceiveInsignia,
@ -104,6 +119,7 @@ export const useResultDataStore = defineStore("insigniaResult", () => {
orgReceiveInsignia: e.orgReceiveInsignia,
orgReturnInsignia: e.orgReturnInsignia,
}));
rows.value = alllist;
listInsignia.value = alllist;
searchData(invoiceType.value, employeeClass.value);
@ -129,7 +145,7 @@ export const useResultDataStore = defineStore("insigniaResult", () => {
rows.value = list;
} else if (invoice === "all" && employeeClass !== "all") {
let list = listInsignia.value.filter(
(e: any) => e.employeeType === profileType(employeeClass)
(e: DataRecord) => e.employeeType === profileType(employeeClass)
);
rows.value = list;
} else if (invoice === "all" && employeeClass == "all") {
@ -158,27 +174,29 @@ export const useResultDataStore = defineStore("insigniaResult", () => {
* function convert
* @param val
*/
const profileType = (val: string) => {
switch (val) {
function profileType(val: string) {
const newVal = val.toLocaleLowerCase();
switch (newVal) {
case "officer":
return "ข้าราชการ กทม.สามัญ";
case "employee":
return "ลูกจ้างประจำ";
}
};
}
/**
* function convert
* @param val
*/
const convertDatepay = (val: any) => {
function convertDatepay(val: string | null) {
switch (val) {
case null:
return "noDate";
default:
return "haveDate";
}
};
}
return {
rows,
insignia,
@ -195,7 +213,5 @@ export const useResultDataStore = defineStore("insigniaResult", () => {
profileType,
fetchlistinsignia,
searchData,
// selectInvoice,
// selectEmployeeClass,
};
});

View file

@ -229,7 +229,7 @@ const visibleColumns = ref<String[]>([
"dateReceive",
"date",
"employeeType",
"volumeNo",
" ",
"section",
"page",
"number",

View file

@ -13,7 +13,7 @@ import type {
FormData,
ArrayPerson,
ArrayFileList,
} from "@/modules/11_discipline/interface/request/Complaint";
} from "@/modules/11_discipline/interface/request/complaint";
import Form from "@/modules/11_discipline/components/1_Complaint/Form.vue";
import PopupSendToNext from "@/modules/11_discipline/components/PopupSendToNext.vue";
@ -163,16 +163,17 @@ const visibleColumns = ref<string[]>([
"organization",
]);
/** ดึงข้อมูล */
async function getData() {
showLoader();
await http
.get(
config.API.complaintbyGetId(id.value, mainStore.pathComplaints(route.name as string))
config.API.complaintbyGetId(
id.value,
mainStore.pathComplaints(route.name as string)
)
)
.then((res) => {
.then(async (res) => {
const dataList = res.data.result;
data.id = dataList.id;
data.respondentType = dataList.respondentType;
@ -194,8 +195,7 @@ async function getData() {
data.result = dataList.result;
data.disciplineComplaintDocs = dataList.disciplineComplaintDocs;
data.activeId = dataList.activeId;
mainStore.fetchDataRowsSend(dataList.persons);
await mainStore.fetchDataRowsSend(dataList.persons);
})
.catch((e) => {
messageError($q, e);
@ -214,8 +214,8 @@ async function onSubmit(data: any) {
http
.put(config.API.complaintbyId(id.value), data)
.then((res) => {
getData();
.then(async () => {
await getData();
success($q, "บันทึกข้อมูลสำเร็จ");
})
.catch((e) => {
@ -233,31 +233,28 @@ function sentInvestigate() {
} else {
dialogConfirm(
$q,
() => sentConfirmNoPerson(),
() => {
showLoader();
http
.put(config.API.complaintApprove(id.value), {
persons: [],
})
.then(() => {
router.push(`/discipline/complaints`);
})
.catch((e) => {
messageError($q, e);
})
.finally(() => {
hideLoader();
});
},
"ยืนยันส่งไปสืบสวน",
"ต้องการยืนยันยืนยันส่งไปสืบสวนใช่หรือไม่?"
);
}
}
/** ส่งไปสืบสวน */
function sentConfirmNoPerson() {
showLoader();
http
.put(config.API.complaintApprove(id.value), {
persons: [],
})
.then((res) => {
router.push(`/discipline/complaints`);
})
.catch((e) => {
messageError($q, e);
})
.finally(() => {
hideLoader();
});
}
/** ปิด dialog */
function closePopup() {
modalPopup.value = false;
@ -267,7 +264,21 @@ function closePopup() {
function endInvestigate() {
dialogConfirm(
$q,
() => confirmEndInvestigate(),
() => {
showLoader();
http
.get(config.API.complaintReject(id.value))
.then(async () => {
await getData();
success($q, "ยุติเรื่องสำเร็จ");
})
.catch((e) => {
messageError($q, e);
})
.finally(async () => {
hideLoader();
});
},
"ยืนยันยุติเรื่อง",
"ต้องการยืนยันยุติเรื่องใช่หรือไม่?"
);
@ -277,58 +288,38 @@ function endInvestigate() {
function cancelInvestigate() {
dialogConfirm(
$q,
() => confirmCancelInvestigate(),
() => {
showLoader();
http
.get(config.API.complaintResume(id.value))
.then(async () => {
await getData();
success($q, "ยกเลิกยุติเรื่องสำเร็จ");
})
.catch((e) => {
messageError($q, e);
})
.finally(() => {
hideLoader();
});
},
"ยืนยันยกเลิกการยุติเรื่อง",
"ต้องการยืนยันยกเลิกการยุติเรื่องใช่หรือไม่?"
);
}
/** ฟังชั่น ยุติเรื่อง*/
function confirmEndInvestigate() {
showLoader();
http
.get(config.API.complaintReject(id.value))
.then((res) => {
success($q, "ยุติเรื่องสำเร็จ");
})
.catch((e) => {
messageError($q, e);
})
.finally(async () => {
await getData();
});
}
/** ฟังชั่น ยกเลิกการยุติเรื่อง*/
function confirmCancelInvestigate() {
showLoader();
http
.get(config.API.complaintResume(id.value))
.then((res) => {
getData();
})
.catch((e) => {
messageError($q, e);
})
.finally(() => {
hideLoader();
success($q, "ยกเลิกยุติเรื่องสำเร็จ");
});
}
/**
* งขอม จาก component เเล update
* @param data person data
*/
function sendPersonToNext(data: ArrayPerson[]) {
const dataMapId = data.map((item: ArrayPerson) => item.id);
showLoader();
http
.put(config.API.complaintApprove(id.value), {
persons: dataMapId,
})
.then((res) => {
.then(() => {
router.push(`/discipline/complaints`);
})
.catch((e) => {
@ -340,8 +331,8 @@ function sendPersonToNext(data: ArrayPerson[]) {
}
/** เรียกใช้งาน ฟังชั่น ตอนเริ่มโหลดหน้า */
onMounted(() => {
getData();
onMounted(async () => {
await getData();
});
</script>

View file

@ -14,7 +14,7 @@ import type { DataOption } from "@/modules/11_discipline/interface/index/Main";
import type {
FormData,
ArrayFileList,
} from "@/modules/11_discipline/interface/request/Complaint";
} from "@/modules/11_discipline/interface/request/complaint";
import PopupPersonal from "@/components/Dialogs/PopupPersonalNew.vue";
import DialogAddPersonal from "@/components/Dialogs/AddPersonal.vue";
@ -133,8 +133,6 @@ function onSubmit() {
if (mainStore.rowsAdd) {
formData.persons = await mainStore.rowsAdd;
}
console.log("formData===>", formData);
await props.onSubmit(formData);
isSave.value = false;
});
@ -156,9 +154,9 @@ function confirmDelete(id: string) {
showLoader();
http
.delete(config.API.complaintFileDelete(formData.id, id))
.then((res) => {
.then(async (res) => {
await props.getData();
success($q, `ลบไฟล์สำเร็จ`);
props.getData();
})
.catch((e) => {
messageError($q, e);
@ -184,18 +182,19 @@ function upLoadFileDoc() {
showLoader();
http
.put(config.API.complaintFileUpload(formData.id), Data)
.then((res) => {
.then(async (res) => {
await props.getData();
countNum.value = 2;
formData.documentFile = null;
hideLoader();
success($q, "อัพโหลดไฟล์สำเร็จ");
props.getData();
})
.catch((e) => {
messageError($q, e);
hideLoader();
})
.finally(async () => {});
.finally(async () => {
hideLoader();
});
}
/**
@ -216,8 +215,8 @@ async function getActive() {
.get(config.API.activeOrganization)
.then(async (res) => {
const data = await res.data.result;
await getOc(data.activeId);
formData.activeId = data.activeId;
getOc(data.activeId);
})
.catch((err) => {
messageError($q, err);
@ -226,7 +225,7 @@ async function getActive() {
hideLoader();
});
} else {
getOc(formData.activeId);
await getOc(formData.activeId);
}
}
@ -382,9 +381,9 @@ watch(props.data, async () => {
/** โหลดข้อมูลเมื่อเข้าหน้านี้ */
onMounted(() => {
mainStore.rowsAdd = [];
getListChannel();
getActive();
getListChannel();
});
</script>

View file

@ -153,9 +153,9 @@ async function getDataComplaint() {
}
/** ดึงข้อมูลรายละเอียด */
function getData() {
async function getData() {
showLoader();
http
await http
.get(
config.API.investigateByGetId(
id.value,
@ -206,14 +206,12 @@ function getData() {
* @param id ระบ คคล
*/
async function onSubmit(data: any) {
// put
showLoader();
http
.put(config.API.investigateById(id.value), data)
.then(async (res) => {
.then(async () => {
await getData();
await success($q, "บันทึกข้อมูลสำเร็จ");
// router.push(`/discipline/complaints`);
})
.catch((e) => {
messageError($q, e);
@ -245,7 +243,7 @@ function sentConfirmNoPerson() {
.put(config.API.investigateApprove(id.value), {
persons: [],
})
.then((res) => {
.then(() => {
getData();
router.push(`/discipline/investigatefacts`);
})
@ -344,10 +342,11 @@ watch(
);
/** โหลดข้อมูลเมื่อเข้าหน้านี้ */
onMounted(() => {
getData();
onMounted(async () => {
if (store.tabMenu == "complaints") {
getDataComplaint();
await Promise.all([getData(), getDataComplaint()]);
} else {
getData();
}
});
</script>
@ -424,18 +423,19 @@ onMounted(() => {
</q-tab-panel>
</q-tab-panels>
</q-card>
<PopupSendToNext
:modal="modalPopup"
:close="closePopup"
title="ส่งไปสอบสวน"
:rows="mainStore.rowsSend.filter((item: ArrayPersonAdd)=> item.isSend == 'NEW')"
:columns="mainStore.columnsDirector"
:visible-columns="mainStore.visibleColumnsDirector"
@return-person="emitPerson"
/>
</div>
<PopupSendToNext
:modal="modalPopup"
:close="closePopup"
title="ส่งไปสอบสวน"
:rows="mainStore.rowsSend.filter((item: ArrayPersonAdd)=> item.isSend == 'NEW')"
:columns="mainStore.columnsDirector"
:visible-columns="mainStore.visibleColumnsDirector"
@return-person="emitPerson"
/>
</template>
<style scoped>
.q-tab-panel {
padding: 0;

View file

@ -11,7 +11,7 @@ import { useInvestigateDisStore } from "@/modules/11_discipline/store/Investigat
import { useInvestigateFactStore } from "@/modules/11_discipline/store/InvestigateFactStore";
import { useDisciplineMainStore } from "@/modules/11_discipline/store/Main";
import type { FormData } from "@/modules/11_discipline/interface/request/InvestigateFact";
import type { FormData } from "@/modules/11_discipline/interface/request/investigateFact";
import type { OptionData } from "@/modules/07_insignia/interface/index/Main";
import CalandarDialog from "@/modules/11_discipline/components/2_InvestigateFacts/CalandarDialog.vue";
@ -327,8 +327,8 @@ async function getActive() {
showLoader();
await http
.get(config.API.activeOrganization)
.then((res) => {
getOc(res.data.result.activeId);
.then(async (res) => {
await getOc(res.data.result.activeId);
})
.catch((err) => {
messageError($q, err);
@ -677,6 +677,7 @@ watch(props.data, async () => {
posTypeName: person.posTypeName,
posLevelId: person.posLevelId,
posLevelName: person.posLevelName,
citizenId: person.idcard,
}));
mainStore.rowsCheck = mainStore.rowsAdd.filter(
(item: any) => item.isDisciplinary === false && item.isSend === "NEW"
@ -1723,7 +1724,6 @@ onMounted(async () => {
</div>
<!-- พโหลดไฟล -->
<DialogDuty
:modal="modalEditDirector"
:close-popup="closeEditDirector"

View file

@ -15,7 +15,7 @@ import type {
FormData,
Director,
PersonsArray,
} from "@/modules/11_discipline/interface/request/disciplinary";
} from "@/modules/11_discipline/interface/request/Disciplinary";
import type {
DataOption,
FileLists,

View file

@ -61,7 +61,7 @@ const props = defineProps({
const modalCommand = ref<boolean>(false);
const emit = defineEmits(["returnPerson"]);
const selected = ref<any>([]);
const selected = ref<any[]>([]);
const inspectionResults = ref<string>("");
const filter = ref<string>("");
const initialPagination = ref<any>({

View file

@ -28,6 +28,7 @@ interface ArrayPerson {
interface ArrayPersonAdd {
personId: string; //id อ้างอิง profile
idcard: string; //เลขประจำตัวประชาชน
citizenId: string;
isSend: string; //สถานะการส่งคนไป
prefix: string; //คำนำหน้า
firstName: string; //ชื่อ

View file

@ -394,7 +394,7 @@ export const useDisciplineMainStore = defineStore("disciplineMainStore", () => {
* POPUP
* @param data
*/
function fetchData(data: ArrayPersonAdd[]) {
async function fetchData(data: ArrayPersonAdd[]) {
const dataList: any = data.map((item: any) => ({
id: item.id,
idcard: item.idcard,
@ -436,7 +436,7 @@ export const useDisciplineMainStore = defineStore("disciplineMainStore", () => {
* POPUP
* @param data
*/
function fetchDataRowsSend(data: ArrayPersonAdd[]) {
async function fetchDataRowsSend(data: ArrayPersonAdd[]) {
const dataList: any = data.map((item: any) => ({
id: item.id,
idcard: item.idcard,

View file

@ -144,6 +144,7 @@ function createCommand(isRedirect: boolean) {
commandTypeId: commandType.value,
persons: data,
};
showLoader();
await http
.post(config.API.command + `/person`, body)