API อัตราเงินเดือน

This commit is contained in:
DESKTOP-1R2VSQH\Lenovo ThinkPad E490 2024-02-16 17:57:37 +07:00
parent bbb14c060f
commit 65341e199b
3 changed files with 79 additions and 31 deletions

View file

@ -371,8 +371,8 @@ async function downloadFile(url: string, type: string, fileName: string) {
<q-separator /> <q-separator />
<q-card-section class="q-pt-none"> <q-card-section class="q-pt-none">
<div class="row q-gutter-sm q-pa-md"> <div class="row col-12 q-gutter-sm q-pa-md">
<div class="row col-xs-12 col-md-9 q-col-gutter-sm"> <div class="row col-sm-12 col-md-9 q-col-gutter-sm">
<div class="col-xs-12 col-md-3"> <div class="col-xs-12 col-md-3">
<q-select <q-select
ref="salaryTypeRef" ref="salaryTypeRef"
@ -586,7 +586,8 @@ async function downloadFile(url: string, type: string, fileName: string) {
/> />
</div> </div>
</div> </div>
<div class="col-xs-12 col-md-3">
<div class="col-sm-12 col-md-3">
<q-card <q-card
bordered bordered
class="row col-12" class="row col-12"

View file

@ -23,6 +23,7 @@ const {
} = useCounterMixin(); } = useCounterMixin();
const salaryId = ref<string>(route.params.id.toString()); const salaryId = ref<string>(route.params.id.toString());
const salaryRateId = ref<string>("");
const modal = defineModel<boolean>("modal", { required: true }); const modal = defineModel<boolean>("modal", { required: true });
const props = defineProps({ const props = defineProps({
@ -34,6 +35,10 @@ const props = defineProps({
type: Object, type: Object,
defult: [], defult: [],
}, },
fetchData: {
type: Function,
defult: () => {},
},
}); });
const formData = reactive<any>({ const formData = reactive<any>({
@ -102,15 +107,40 @@ function createSalaryRate() {
dialogConfirm($q, async () => { dialogConfirm($q, async () => {
showLoader(); showLoader();
const body: any = { const body: any = {
salary: Number(formData.salary.replace(/,/g, "")), //* salary:
salaryHalf: Number(formData.salaryHalf.replace(/,/g, "")), //0.5 typeof formData.salary === "number"
salaryHalfSpecial: Number(formData.salaryHalfSpecial.replace(/,/g, "")), //0.5 () ? formData.salary
salaryFull: Number(formData.salaryFull.replace(/,/g, "")), //1 : Number(formData.salary.replace(/,/g, "")), //*
salaryFullSpecial: Number(formData.salaryFullSpecial.replace(/,/g, "")), //1 ()
salaryFullHalf: Number(formData.salaryFullHalf.replace(/,/g, "")), //1.formData5 salaryHalf:
salaryFullHalfSpecial: Number( typeof formData.salaryHalf === "number"
formData.salaryFullHalfSpecial.replace(/,/g, "") ? formData.salaryHalf
), //1.5 () : Number(formData.salaryHalf.replace(/,/g, "")), //0.5
salaryHalfSpecial:
typeof formData.salaryHalfSpecial === "number"
? formData.salaryHalfSpecial
: Number(formData.salaryHalfSpecial.replace(/,/g, "")), //0.5 ()
salaryFull:
typeof formData.salaryFull === "number"
? formData.salaryFull
: Number(formData.salaryFull.replace(/,/g, "")), //1
salaryFullSpecial:
typeof formData.salaryFullSpecial === "number"
? formData.salaryFullSpecial
: Number(formData.salaryFullSpecial.replace(/,/g, "")), //1 ()
salaryFullHalf:
typeof formData.salaryFullHalf === "number"
? formData.salaryFullHalf
: Number(formData.salaryFullHalf.replace(/,/g, "")), //1.formData5
salaryFullHalfSpecial:
typeof formData.salaryFullHalfSpecial === "number"
? formData.salaryFullHalfSpecial
: Number(formData.salaryFullHalfSpecial.replace(/,/g, "")), //1.5 ()
isNext: formData.isNext, //* isNext: formData.isNext, //*
}; };
if (props.typeAction === "add") { if (props.typeAction === "add") {
@ -120,10 +150,10 @@ function createSalaryRate() {
const url = const url =
props.typeAction === "add" props.typeAction === "add"
? config.API.salaryRateList ? config.API.salaryRateList
: config.API.salaryRateListByid(salaryId.value); : config.API.salaryRateListByid(formData.salaryId);
await http[props.typeAction === "add" ? "post" : "put"](url, body); await http[props.typeAction === "add" ? "post" : "put"](url, body);
success($q, "บันทีกข้อมูลสำเร็จ"); success($q, "บันทีกข้อมูลสำเร็จ");
// props.fetchData?.(); props.fetchData?.();
} catch (err) { } catch (err) {
messageError($q, err); messageError($q, err);
} finally { } finally {
@ -136,12 +166,10 @@ function createSalaryRate() {
watch( watch(
() => modal.value, () => modal.value,
() => { () => {
console.log(salaryId.value);
if (modal.value && props.typeAction === "edit") { if (modal.value && props.typeAction === "edit") {
if (props.data) { if (props.data) {
const data = props.data; const data = props.data;
formData.salaryId = data.id;
// formData.salaryId = data.id;
formData.salary = data.salary; formData.salary = data.salary;
formData.salaryHalf = data.salaryHalf; formData.salaryHalf = data.salaryHalf;
formData.salaryHalfSpecial = data.salaryHalfSpecial; formData.salaryHalfSpecial = data.salaryHalfSpecial;

View file

@ -107,7 +107,7 @@ const itemMenu = ref<ItemsMenu[]>([
/** queryString*/ /** queryString*/
const formQuery = reactive<FormQuerySalary>({ const formQuery = reactive<FormQuerySalary>({
page: 1, //* page: 1, //*
pageSize: 100, //* pageSize: 10, //*
keyword: "", //keyword keyword: "", //keyword
}); });
const totalRow = ref<number>(1); const totalRow = ref<number>(1);
@ -124,6 +124,7 @@ async function fetchListSalalyRate() {
) )
.then((res) => { .then((res) => {
console.log(res); console.log(res);
rows.value = res.data.result.data;
}) })
.catch((err) => { .catch((err) => {
// messageError($q, err); // messageError($q, err);
@ -175,8 +176,8 @@ async function fetchListSalalyRate() {
* @param newPagination อม Pagination ใหม * @param newPagination อม Pagination ใหม
*/ */
function updatePagination(newPagination: NewPagination) { function updatePagination(newPagination: NewPagination) {
// formQuery.page = 1; formQuery.page = 1;
// formQuery.pageSize = newPagination.rowsPerPage; formQuery.pageSize = newPagination.rowsPerPage;
} }
const typeAction = ref<string>(""); const typeAction = ref<string>("");
@ -189,9 +190,20 @@ function onClickSalaryRate(type: string, data: SalaryRate | null) {
} }
} }
function onClickDelete() { function onClickDelete(id: string) {
dialogRemove($q, () => { dialogRemove($q, async () => {
success($q, "ลบข้อมูลสำเร็จ"); await http
.delete(config.API.salaryRateListByid(id))
.then(() => {
success($q, "ลบข้อมูลสำเร็จ");
})
.catch((err) => {
messageError($q, err);
})
.finally(() => {
fetchListSalalyRate();
hideLoader();
});
}); });
} }
@ -275,29 +287,35 @@ watch([() => formQuery.page, () => formQuery.pageSize], async () => {
<div v-else-if="col.name === 'salaryHalf'"> <div v-else-if="col.name === 'salaryHalf'">
{{ {{
props.row.salaryHalfSpecial props.row.salaryHalfSpecial
? col.value + " " + `(${props.row.salaryHalfSpecial})` ? col.value.toLocaleString() +
: col.value " " +
`(${props.row.salaryHalfSpecial.toLocaleString()})`
: col.value.toLocaleString()
}} }}
</div> </div>
<div v-else-if="col.name === 'salaryFull'"> <div v-else-if="col.name === 'salaryFull'">
{{ {{
props.row.salaryFullSpecial props.row.salaryFullSpecial
? col.value + " " + `(${props.row.salaryFullSpecial})` ? col.value.toLocaleString() +
: col.value " " +
`(${props.row.salaryFullSpecial.toLocaleString()})`
: col.value.toLocaleString()
}} }}
</div> </div>
<div v-else-if="col.name === 'salaryFullHalf'"> <div v-else-if="col.name === 'salaryFullHalf'">
{{ {{
props.row.salaryFullHalfSpecial props.row.salaryFullHalfSpecial
? col.value + " " + `(${props.row.salaryFullHalfSpecial})` ? col.value.toLocaleString() +
: col.value " " +
`(${props.row.salaryFullHalfSpecial.toLocaleString()})`
: col.value.toLocaleString()
}} }}
</div> </div>
<div v-else> <div v-else>
{{ col.value ? col.value : "-" }} {{ col.value ? col.value.toLocaleString() : "-" }}
</div> </div>
</q-td> </q-td>
<q-td> <q-td>
@ -320,7 +338,7 @@ watch([() => formQuery.page, () => formQuery.pageSize], async () => {
item.type === 'edit' item.type === 'edit'
? onClickSalaryRate('edit', props.row) ? onClickSalaryRate('edit', props.row)
: item.type === 'delete' : item.type === 'delete'
? onClickDelete() ? onClickDelete(props.row.id)
: null : null
" "
> >
@ -361,6 +379,7 @@ watch([() => formQuery.page, () => formQuery.pageSize], async () => {
v-model:modal="modalDialogFormRate" v-model:modal="modalDialogFormRate"
:typeAction="typeAction" :typeAction="typeAction"
:data="dataRow" :data="dataRow"
:fetchData="fetchListSalalyRate"
/> />
</template> </template>