Merge branch 'develop' into devTee

This commit is contained in:
STW_TTTY\stwtt 2024-05-20 17:22:52 +07:00
commit a64690d455
10 changed files with 226 additions and 98 deletions

View file

@ -3,6 +3,7 @@ import { ref, reactive, watch, onMounted } from "vue";
import { useQuasar } from "quasar";
import http from "@/plugins/http";
import config from "@/app.config";
import { useRouter } from "vue-router";
/** importType*/
import type { PersonalImformation } from "@/components/information/interface/response/Information";
@ -14,6 +15,7 @@ import { useCounterMixin } from "@/stores/mixin";
/** use*/
const mixin = useCounterMixin();
const router = useRouter();
const $q = useQuasar();
const retireDate = ref<Date>();
const { showLoader, hideLoader, messageError, date2Thai } = mixin;
@ -164,7 +166,7 @@ function loaderFunction() {
}
function redirecToRegistry() {
window.open(`/registry-new/${props.id}`, "_blank");
router.push(`/registry-new/${props.id}`);
modal.value = false;
}
@ -395,7 +397,10 @@ async function fetchProfile(id: string) {
label="ระดับ"
/>
</div>
<div class="col-xs-6 col-md-6" v-if="props.type !== 'employee'">
<div
class="col-xs-6 col-md-6"
v-if="props.type !== 'employee'"
>
<q-input
borderless
readonly
@ -403,7 +408,10 @@ async function fetchProfile(id: string) {
label="ตำแหน่งทางการบริหาร"
/>
</div>
<div class="col-xs-6 col-md-6" v-if="props.type !== 'employee'">
<div
class="col-xs-6 col-md-6"
v-if="props.type !== 'employee'"
>
<q-input
borderless
readonly

View file

@ -4,8 +4,8 @@ interface DataOption {
disable?: boolean;
}
interface DataOption1 {
id: string | null;
name: string | null;
id: string;
name: string;
disable?: boolean;
}
interface DataOptionInsignia {
@ -196,28 +196,27 @@ interface Assign {
updatedAt: Date;
}
interface OrderResult {
fiscalYear: string
orderBy: string
orderById: string
orderByOrganization: string
orderDate: Date
orderId: string
orderName: string
orderNo: string
orderStatusName: string
orderStatusValue: string
orderTypeName: string
orderTypeValue: string
signatoryBy: string
signatoryPosition: string
fiscalYear: string;
orderBy: string;
orderById: string;
orderByOrganization: string;
orderDate: Date;
orderId: string;
orderName: string;
orderNo: string;
orderStatusName: string;
orderStatusValue: string;
orderTypeName: string;
orderTypeValue: string;
signatoryBy: string;
signatoryPosition: string;
}
interface history {
citizenId: string,
fullName: string,
id: string
posNo: string,
position: string
citizenId: string;
fullName: string;
id: string;
posNo: string;
position: string;
}
interface ColumnData {
name: string;
@ -240,16 +239,16 @@ interface DataOptionInsigniaType {
name: string;
}
interface OrederResult {
category?: string
commandCode: string
createdAt?: Date
createdFullName?: string
createdUserId?: string
id?: string
lastUpdateFullName?: string
lastUpdateUserId?: string
lastUpdatedAt?: string
name?: string
category?: string;
commandCode: string;
createdAt?: Date;
createdFullName?: string;
createdUserId?: string;
id?: string;
lastUpdateFullName?: string;
lastUpdateUserId?: string;
lastUpdatedAt?: string;
name?: string;
}
export type {
DataOption,
@ -273,7 +272,7 @@ export type {
history,
ColumnData,
DataOptionInsigniaType,
OrederResult
OrederResult,
};
export { AddressDataDefualt, FamilyDataDefualt };

View file

@ -238,7 +238,9 @@ function downloadFile(fileName: string) {
});
}
onMounted(() => {
fetchListFile();
if (props.rootId) {
fetchListFile();
}
});
</script>

View file

@ -355,9 +355,11 @@ function onClickDownload(data: DataOption) {
const modalDialogInfoCriteria = ref<boolean>(false);
onMounted(() => {
fetchDataQuota(store.groupId);
fetchDataPeriod(store.groupId);
splitterModel.value = store.roundMainCode === "APR" ? 13 : 16;
if (props.rootId) {
fetchDataQuota(store.groupId);
fetchDataPeriod(store.groupId);
splitterModel.value = store.roundMainCode === "APR" ? 13 : 16;
}
});
const isRetire = ref<boolean | string>(false);

View file

@ -253,7 +253,9 @@ function sendAndRecommend(title: string, typeOrder: string) {
}
onMounted(() => {
getListFile();
if (props.rootId) {
getListFile();
}
});
</script>

View file

@ -356,9 +356,12 @@ function onClickDownload(data: DataOption) {
const modalDialogInfoCriteria = ref<boolean>(false);
onMounted(() => {
fetchDataQuota(store.groupId);
fetchDataPeriod(store.groupId);
splitterModel.value = store.roundMainCode === "APR" ? 13 : 16;
console.log(props.rootId);
if (props.rootId) {
fetchDataQuota(store.groupId);
fetchDataPeriod(store.groupId);
splitterModel.value = store.roundMainCode === "APR" ? 13 : 16;
}
});
const isRetire = ref<boolean>(false);

View file

@ -0,0 +1,41 @@
interface ResYear {
id: number;
name: number;
}
interface ResType {
category: string;
commandCode: string;
createdAt: string;
createdFullName: string;
createdUserId: string;
id: string;
lastUpdateFullName: string;
lastUpdateUserId: string;
lastUpdatedAt: null | string | Date;
name: string;
}
interface ResListOrder {
caseFault: string;
faultLevel: string;
fiscalYear: string;
fullName: string;
orderBy: string;
orderById: string;
orderByOrganization: string;
orderDate: string;
orderId: string;
orderName: string;
orderNo: string;
orderStatusName: string;
orderStatusValue: string;
orderTypeName: string;
orderTypeValue: string;
refRaw: string;
result: string;
signatoryBy: string;
signatoryPosition: string;
}
export type { ResYear, ResType, ResListOrder };

View file

@ -5,13 +5,22 @@ import { useQuasar, type QTableProps } from "quasar";
import http from "@/plugins/http";
import config from "@/app.config";
import type { DataOption1 } from "@/modules/10_order/interface/index/Main";
/** import type*/
import type {
DataOption,
DataOption1,
} from "@/modules/10_order/interface/index/Main";
import type {
ResYear,
ResType,
ResListOrder,
} from "@/modules/13_salary/interface/response/Command";
/** import Store*/
import { useOrderStore } from "@/modules/11_discipline/store/OrderStore";
import { useCounterMixin } from "@/stores/mixin";
const rows = ref<any>([]);
/** use */
const $q = useQuasar(); // noti quasar
const mixin = useCounterMixin();
const stroe = useOrderStore();
@ -132,28 +141,20 @@ const visibleColumns = ref<string[]>([
"orderStatusName",
]);
onMounted(async () => {
await fiscalYearFilter();
await OrderTypeFilter();
await fetchOrderlist();
await OrderStatusFilter();
});
/** funtion fetch รายการออกคำสั่งเลื่อนเงินเดือน/ค่าจ้าง */
async function fetchOrderlist() {
showLoader();
await http
.get(config.API.listOrder())
.then((res: any) => {
.then((res) => {
const data = res.data.result;
const typeid = OrderTypeOption.value.map((e) => e.id);
const filterListOrder = data.filter((e: any) =>
const typeid = OrderTypeOption.value.map((e: DataOption1) => e.id);
const filterListOrder = data.filter((e: ResListOrder) =>
typeid.includes(e.orderTypeValue)
);
stroe.fetchOrder(filterListOrder);
})
.catch((e: any) => {
.catch((e) => {
messageError($q, e);
})
.finally(async () => {
@ -168,29 +169,33 @@ const clickAdd = () => {
//
const fiscalyear = ref<number | null>(0);
const fiscalyearOP = ref<any>([{ id: 0, name: "ทั้งหมด" }]);
const fiscalyearFilter1 = ref<any>([]);
const fiscalyearOP = ref<DataOption[]>([{ id: 0, name: "ทั้งหมด" }]);
const fiscalyearFilter1 = ref<DataOption[]>([]);
const fiscalYearFilter = async () => {
await http.get(config.API.yearOptionsOrder()).then((res) => {
const response = res.data.result;
fiscalyearOP.value = [{ id: 0, name: "ทั้งหมด" }];
response.map((r: any) => {
fiscalyearOP.value.push({ id: r.id, name: r.name.toString() });
});
fiscalyearFilter1.value = [{ id: 0, name: "ทั้งหมด" }];
response.map((r: any) => {
fiscalyearFilter1.value.push({
id: r.id,
name: r.name.toString(),
await http
.get(config.API.yearOptionsOrder())
.then((res) => {
const response = res.data.result;
fiscalyearOP.value = [{ id: 0, name: "ทั้งหมด" }];
response.map((r: ResYear) => {
fiscalyearOP.value.push({ id: r.id, name: r.name.toString() });
});
fiscalyearFilter1.value = [{ id: 0, name: "ทั้งหมด" }];
response.map((r: ResYear) => {
fiscalyearFilter1.value.push({
id: r.id,
name: r.name.toString(),
});
});
})
.catch((err) => {
messageError($q, err);
});
});
};
//
const OrderType = ref<string>("");
const OrderTypeFilter1 = ref<any>([]);
const OrderTypeFilter1 = ref<DataOption1[]>([]);
const OrderTypeOption = ref<DataOption1[]>([{ id: "", name: "ทั้งหมด" }]);
//
@ -205,20 +210,18 @@ const addedOrderStatusValues: string[] = [];
//
const filterKeyword = ref<string>("");
const filterRef = ref<any>(null);
function resetFilter() {
filterKeyword.value = "";
filterRef.value.focus();
}
/** function fetch ข้อมูลประเภทคำสั่ง*/
async function OrderTypeFilter() {
await http
.get(config.API.typeOrder())
.then((res) => {
console.log(res);
const response = res.data.result;
const filterRes = response.filter((e: any) =>
const filterRes = response.filter((e: ResType) =>
commandCodes.value.includes(e.commandCode)
);
@ -238,6 +241,7 @@ async function searchFilterTable() {
stroe.filterListOrder(OrderType.value, OrderStatus.value, fiscalyear.value);
}
/** fucnction หาสถานะทั่งหมด*/
async function OrderStatusFilter() {
for (let data of stroe.mainData) {
const OrderStatusValue = data.orderStatusName;
@ -265,26 +269,26 @@ async function OrderStatusFilter() {
* @param update function จาก quasar
* @param refData type กำหนด ของ input นๆ
*/
function filterSelector(val: any, update: Function, refData: string) {
function filterSelector(val: string, update: Function, refData: string) {
switch (refData) {
case "fiscalyearOP":
update(() => {
fiscalyearOP.value = fiscalyearFilter1.value.filter(
(v: any) => v.name.indexOf(val) > -1
(v: DataOption) => v.name.indexOf(val) > -1
);
});
break;
case "OrderTypeOption":
update(() => {
OrderTypeOption.value = OrderTypeFilter1.value.filter(
(v: any) => v.name.indexOf(val) > -1
(v: DataOption1) => v.name.indexOf(val) > -1
);
});
break;
case "OrderStatusOption":
update(() => {
OrderStatusOption.value = OrderStatusFilter1.value.filter(
(v: any) => v.name.indexOf(val) > -1
(v: DataOption1) => v.name.indexOf(val) > -1
);
});
break;
@ -293,6 +297,11 @@ function filterSelector(val: any, update: Function, refData: string) {
}
}
/**
* function redirect To Page Detail
* @param id รายการตำส
* @param status สถานะคำส
*/
function redirectToPage(id: string, status: string) {
let step = 1;
switch (status) {
@ -311,6 +320,13 @@ function redirectToPage(id: string, status: string) {
}
router.push(`/salary/command/detail/${id}?step=${step}`);
}
onMounted(async () => {
await fiscalYearFilter();
await OrderTypeFilter();
await fetchOrderlist();
await OrderStatusFilter();
});
</script>
<template>
@ -339,7 +355,7 @@ function redirectToPage(id: string, status: string) {
:outlined="true"
:hide-dropdown-icon="false"
@update:model-value="searchFilterTable"
@filter="(inputValue:any,
@filter="(inputValue:string,
doneFn:Function) => filterSelector(inputValue, doneFn,'fiscalyearOP'
) "
>
@ -422,7 +438,7 @@ function redirectToPage(id: string, status: string) {
:outlined="true"
:hide-dropdown-icon="false"
@update:model-value="searchFilterTable"
@filter="(inputValue:any,
@filter="(inputValue:string,
doneFn:Function) => filterSelector(inputValue, doneFn,'OrderTypeOption'
) "
>
@ -453,7 +469,7 @@ function redirectToPage(id: string, status: string) {
:outlined="true"
:hide-dropdown-icon="false"
@update:model-value="searchFilterTable"
@filter="(inputValue:any,
@filter="(inputValue:string,
doneFn:Function) => filterSelector(inputValue, doneFn,'OrderStatusOption'
) "
>

View file

@ -34,9 +34,11 @@ const year = ref<number>(new Date().getFullYear());
const roundFilter = ref<any>();
const roundOptions = ref<DataOptionShort[]>([]);
const agencyFilter = ref<string>("");
const agencyOptions = ref<DataOption[]>();
const agencyOptions = ref<DataOption[]>([]);
const agencyOptionsMain = ref<DataOption[]>([]);
const snapFilter = ref<string>("");
const snapOptions = ref<DataOption[]>();
const snapOptions = ref<DataOption[]>([]);
const periodLatest = ref<DataPeriodLatest>();
const isLoad = ref<boolean>(false);
@ -153,7 +155,7 @@ async function getAgency(id: string) {
.get(config.API.activeOrganizationRootById(id))
.then(async (res) => {
const data = res.data.result;
agencyOptions.value = await [
agencyOptionsMain.value = await [
{
id: "ALL",
name: "ทั้งหมด",
@ -164,7 +166,7 @@ async function getAgency(id: string) {
name: x.orgRootName,
}))
);
// agencyFilter.value = store.rootId;
agencyOptions.value = agencyOptionsMain.value;
})
.catch((err) => {
messageError($q, err);
@ -210,7 +212,7 @@ async function getAgencyPosition(id: string) {
* @param snap id รอบ
*/
function fetchSalalyPeriod(rootId: string, periodId: string, snap: string) {
if (rootId !== "ALL") {
if (rootId) {
showLoader();
isLoad.value = false;
const body = {
@ -314,6 +316,20 @@ function getQuota() {
fetchSalalyPeriod(agencyFilter.value, roundFilter.value.id, snapFilter.value);
}
function filterSelector(val: any, update: Function, refData: string) {
switch (refData) {
case "agencyFilter":
update(() => {
agencyOptions.value = agencyOptionsMain.value.filter(
(v: DataOption) => v.name.indexOf(val) > -1
);
});
default:
break;
}
}
onMounted(() => {
getRound();
});
@ -419,7 +435,18 @@ onMounted(() => {
bg-color="white"
@update:model-value="onChangeAgency"
:disable="!isDisable"
/>
use-input
@filter="(inputValue:string,
doneFn:Function) => filterSelector(inputValue, doneFn,'agencyFilter'
) "
>
<template v-if="agencyFilter !== 'ALL'" v-slot:append>
<q-icon
name="cancel"
@click.stop.prevent="agencyFilter = 'ALL'"
class="cursor-pointer"
/> </template
></q-select>
</div>
<q-card flat bordered>

View file

@ -34,9 +34,10 @@ const year = ref<number>(new Date().getFullYear());
const roundFilter = ref<any>();
const roundOptions = ref<DataOptionShort[]>([]);
const agencyFilter = ref<string>("");
const agencyOptions = ref<DataOption[]>();
const agencyOptionsMain = ref<DataOption[]>([]);
const agencyOptions = ref<DataOption[]>([]);
const snapFilter = ref<string>("");
const snapOptions = ref<DataOption[]>();
const snapOptions = ref<DataOption[]>([]);
const periodLatest = ref<DataPeriodLatest>();
const isLoad = ref<boolean>(false);
@ -154,7 +155,7 @@ async function getAgency(id: string) {
.get(config.API.activeOrganizationRootById(id))
.then(async (res) => {
const data = res.data.result;
agencyOptions.value = await [
agencyOptionsMain.value = await [
{
id: "ALL",
name: "ทั้งหมด",
@ -165,6 +166,7 @@ async function getAgency(id: string) {
name: x.orgRootName,
}))
);
agencyOptions.value = agencyOptionsMain.value;
})
.catch((err) => {
messageError($q, err);
@ -210,7 +212,7 @@ async function getAgencyPosition(id: string) {
* @param snap id รอบ
*/
function fetchSalalyPeriod(rootId: string, periodId: string, snap: string) {
if (rootId !== "ALL") {
if (rootId) {
showLoader();
isLoad.value = false;
const body = {
@ -335,6 +337,21 @@ function getQuota() {
})
.finally(() => {});
}
function filterSelector(val: any, update: Function, refData: string) {
switch (refData) {
case "agencyFilter":
update(() => {
agencyOptions.value = agencyOptionsMain.value.filter(
(v: DataOption) => v.name.indexOf(val) > -1
);
});
default:
break;
}
}
onMounted(() => {
getRound();
});
@ -439,7 +456,18 @@ onMounted(() => {
bg-color="white"
@update:model-value="onChangeAgency"
:disable="!isDisable"
/>
use-input
@filter="(inputValue:string,
doneFn:Function) => filterSelector(inputValue, doneFn,'agencyFilter'
) "
>
<template v-if="agencyFilter !== 'ALL'" v-slot:append>
<q-icon
name="cancel"
@click.stop.prevent="agencyFilter = 'ALL'"
class="cursor-pointer"
/> </template
></q-select>
</div>
<q-card flat bordered>