Merge branch 'nice_dev' into develop

This commit is contained in:
DESKTOP-1R2VSQH\Lenovo ThinkPad E490 2024-02-01 16:01:52 +07:00
commit e945bb6da5
5 changed files with 118 additions and 36 deletions

View file

@ -19,6 +19,7 @@ import type {
OptionExecutive,
DataPosition,
} from "@/modules/02_organizationalNew/interface/response/organizational";
import type { FilterMaster } from "@/modules/02_organizationalNew/interface/request/organizational";
import http from "@/plugins/http";
import config from "@/app.config";
@ -28,8 +29,11 @@ const props = defineProps({
orgLevel: Number,
treeId: String,
actionType: String,
rowId: String,
fetchDataTable: Function,
});
const reqMaster = defineModel<FilterMaster>("reqMaster", { required: true });
const isReadonly = ref<boolean>(false); //
const isDisValidate = ref<boolean>(false);
@ -216,7 +220,11 @@ async function fetchPosition(id: string) {
await http
.get(config.API.orgPosPositionById(id))
.then((res) => {
console.log(res);
const data = res.data.result;
formData.prefixNo = data.posMasterNoPrefix;
formData.positionNo = data.posMasterNo;
formData.suffixNo = data.posMasterNoSuffix;
rows.value = data.positions;
})
.catch((err) => {
messageError($q, err);
@ -346,18 +354,42 @@ function onSubmit() {
positions: positionsData,
};
showLoader();
await http
.post(config.API.orgPosMaster, body)
.then((res) => {
success($q, "เพิ่มข้อมูลสำเร็จ");
})
.catch((err) => {
messageError($q, err);
})
.finally(() => {
props.close?.();
hideLoader();
});
props.actionType === "ADD"
? await http
.post(config.API.orgPosMaster, body)
.then(() => {
success($q, "เพิ่มข้อมูลสำเร็จ");
props.fetchDataTable?.(
reqMaster.value.id,
reqMaster.value.type,
false
);
})
.catch((err) => {
messageError($q, err);
})
.finally(() => {
props.close?.();
hideLoader();
})
: props.rowId &&
(await http
.put(config.API.orgPosMasterById(props.rowId), body)
.then(() => {
success($q, "แก้ไขข้อมูลสำเร็จ");
props.fetchDataTable?.(
reqMaster.value.id,
reqMaster.value.type,
false
);
})
.catch((err) => {
messageError($q, err);
})
.finally(() => {
props.close?.();
hideLoader();
}));
});
}
/** ฟังชั่น บันทึก */
@ -411,7 +443,6 @@ async function searchInput() {
`?keyword=${search.value}&type=${type.value}`
)
.then((res) => {
console.log(res);
rowsPositionSelect.value = res.data.result;
})
.catch((err) => {
@ -462,7 +493,7 @@ watch(
rows.value = [];
clearFormPositionSelect();
} else {
// props.treeId && fetchPosition(props.treeId);
props.rowId && fetchPosition(props.rowId);
}
}
}
@ -487,7 +518,7 @@ function deletePos(id: string) {
showLoader();
http
.delete(config.API.orgPosPositionById(id))
.then((res) => {
.then(() => {
success($q, "ลบข้อมูลสำเร็จ");
})
.catch((err) => {

View file

@ -203,6 +203,7 @@ watch(
v-model:reqMaster="reqMaster"
v-model:totalPage="totalPage"
v-model:posMaster="posMaster"
:fetchDataTable="fetchDataTable"
:filterKeyword="filterKeyword"
/>

View file

@ -1,5 +1,8 @@
<script setup lang="ts">
import { ref, watch } from "vue";
import { ref } from "vue";
import { useQuasar } from "quasar";
import config from "@/app.config";
import http from "@/plugins/http";
/** importType*/
import type { QTableProps } from "quasar";
@ -14,11 +17,22 @@ import type { PosMaster2 } from "@/modules/02_organizationalNew/interface/respon
import DialogFormPosotion from "@/modules/02_organizationalNew/components/DialogFormPosition.vue";
import DialogPositionDetail from "@/modules/02_organizationalNew/components/PositionDetail.vue";
import DialogSort from "@/modules/02_organizationalNew/components/DialogSortPosition.vue";
/** importStore*/
import { useOrganizational } from "@/modules/02_organizationalNew/store/organizational";
import { useCounterMixin } from "@/stores/mixin";
const { showLoader, hideLoader, messageError, success, dialogRemove } =
useCounterMixin();
const $q = useQuasar();
const props = defineProps({
filterKeyword: { type: Function, require: true, default: () => {} },
fetchDataTable: {
type: Function,
require: true,
default: () => {},
},
});
const dataSort = ref<Array<any>>([]);
@ -35,18 +49,24 @@ const stroe = useOrganizational();
const filter = ref<string>("");
const actionType = ref<string>("");
const listMenu = ref<ListMenu[]>([
{
label: "ดูรายละเอียด",
icon: "mdi-eye",
type: "VIEWDETIAL",
color: "primary",
},
{
label: "แก้ไข",
icon: "edit",
type: "EDIT",
color: "primary",
},
{
label: "ลบ",
icon: "delete",
type: "DEL",
color: "red",
},
{
label: "ดูรายละเอียด",
icon: "mdi-eye",
type: "VIEWDETIAL",
color: "blue",
},
]);
const document = ref<any>([
{
@ -194,7 +214,9 @@ const columnsExpand = ref<QTableProps["columns"]>([
]);
const dialogPosition = ref<boolean>(false);
function onClickPosition(type: string) {
const rowId = ref<string>("");
function onClickPosition(type: string, id: string) {
rowId.value = id;
actionType.value = type;
dialogPosition.value = !dialogPosition.value;
}
@ -204,6 +226,24 @@ function onClickViewDetail() {
dialogDetail.value = !dialogDetail.value;
}
function onClickDelete(id: string) {
dialogRemove($q, async () => {
showLoader();
await http
.delete(config.API.orgPosMasterById(id))
.then(() => {
success($q, "ลบข้อมูลสำเร็จ");
props.fetchDataTable?.(reqMaster.value.id, reqMaster.value.type, false);
})
.catch((err) => {
messageError($q, err);
})
.finally(() => {
hideLoader();
});
});
}
function onClickSort() {
modalSort.value = true;
}
@ -223,7 +263,7 @@ function updatePagination(newPagination: NewPagination) {
dense
color="primary"
icon="add"
@click="onClickPosition('ADD')"
@click="onClickPosition('ADD', '')"
>
<q-tooltip>เพมตำแหน</q-tooltip>
</q-btn>
@ -352,7 +392,9 @@ function updatePagination(newPagination: NewPagination) {
item.type === 'VIEWDETIAL'
? onClickViewDetail()
: item.type === 'EDIT'
? onClickPosition('EDIT')
? onClickPosition('EDIT', props.row.id)
: item.type === 'DEL'
? onClickDelete(props.row.id)
: null
"
>
@ -466,11 +508,14 @@ function updatePagination(newPagination: NewPagination) {
:orgLevel="orgLevel"
:treeId="treeId"
:actionType="actionType"
:rowId="rowId"
v-model:reqMaster="reqMaster"
:fetchDataTable="props.fetchDataTable"
/>
<!-- รายละเอยดตำแหน -->
<DialogPositionDetail v-model:position-detail="dialogDetail" />
<DialogSort v-model:sort-position="modalSort"/>
<DialogSort v-model:sort-position="modalSort" />
</template>
<style lang="scss" scoped>