Merge branch 'develop' into devTee

This commit is contained in:
STW_TTTY\stwtt 2024-08-08 17:15:20 +07:00
commit 37f0ecbc1e
6 changed files with 199 additions and 225 deletions

View file

@ -18,6 +18,7 @@ do
sed -i 's|VITE_REALM_KEYCLOAK|'${VITE_REALM_KEYCLOAK}'|g' $file sed -i 's|VITE_REALM_KEYCLOAK|'${VITE_REALM_KEYCLOAK}'|g' $file
sed -i 's|VITE_CLIENTID_KEYCLOAK|'${VITE_CLIENTID_KEYCLOAK}'|g' $file sed -i 's|VITE_CLIENTID_KEYCLOAK|'${VITE_CLIENTID_KEYCLOAK}'|g' $file
sed -i 's|VITE_CLIENTSECRET_KEYCLOAK|'${VITE_CLIENTSECRET_KEYCLOAK}'|g' $file sed -i 's|VITE_CLIENTSECRET_KEYCLOAK|'${VITE_CLIENTSECRET_KEYCLOAK}'|g' $file
sed -i 's|VITE_MANUAL_URL|'${VITE_MANUAL_URL}'|g' $file
done done

View file

@ -137,67 +137,52 @@ const API = {
...file, ...file,
}; };
const path = "https://bma-ehr-manual.frappet.synology.me"; const path =
import.meta.env.VITE_MANUAL_URL ??
"https://bma-ehr-manual.frappet.synology.me";
const generatePopupPath = (routeName: any) => { const generatePopupPath = (routeName: any) => {
if (routeName.includes("metadata")) { if (routeName.includes("metadata")) {
return `${path}/manual/chapter-2-admin-metadata`; return `${path}/manual/chapter-2-admin-metadata`;
} } else if (routeName.includes("registryNew")) {
// if (routeName.includes("KPI")) {
// return `${path}/manual/chapter-3-admin-evaluate`;
// }
if (routeName.includes("compete")) {
return `${path}/manual/chapter-9-admin-recruit`;
}
if (routeName.includes("registryNew")) {
return `${path}/manual/chapter-6-admin-registry`; return `${path}/manual/chapter-6-admin-registry`;
} } else if (routeName.includes("registry-employee")) {
if (routeName.includes("registry-employee")) {
return `${path}/manual/chapter-7-admin-registry-employee`; return `${path}/manual/chapter-7-admin-registry-employee`;
} } else if (routeName.includes("insignia")) {
if (routeName.includes("qualify")) {
return `${path}/manual/chapter-9-admin-recruit`;
}
if (routeName.includes("insignia")) {
return `${path}/manual/chapter-13-admin-insignia`; return `${path}/manual/chapter-13-admin-insignia`;
} } else if (routeName.includes("acting")) {
if (routeName.includes("acting")) { return `${path}/manual/chapter-4-admin-acting`;
return `${path}/manual/chapter-5-admin-acting`; } else if (routeName.includes("positionEmployee")) {
} return `${path}/manual/chapter-5-admin-position-employee`;
if (routeName.includes("positionEmployee")) { } else if (routeName.includes("resign")) {
return `${path}/manual/chapter-6-admin-position-employee`;
}
if (routeName.includes("resign")) {
return `${path}/manual/chapter-12-admin-retirement`; return `${path}/manual/chapter-12-admin-retirement`;
} } else if (routeName.includes("retirement")) {
if (routeName.includes("retirement")) {
return `${path}/manual/chapter-12-admin-retirement`; return `${path}/manual/chapter-12-admin-retirement`;
} } else if (routeName.includes("deceased")) {
if (routeName.includes("deceased")) {
return `${path}/manual/chapter-12-admin-retirement`; return `${path}/manual/chapter-12-admin-retirement`;
} } else if (routeName.includes("exit-Interview")) {
if (routeName.includes("exit-Interview")) {
return `${path}/manual/chapter-12-admin-retirement`; return `${path}/manual/chapter-12-admin-retirement`;
} } else if (routeName.includes("expulsion")) {
if (routeName.includes("expulsion")) {
return `${path}/manual/chapter-12-admin-retirement`; return `${path}/manual/chapter-12-admin-retirement`;
} } else if (routeName.includes("discharged")) {
if (routeName.includes("discharged")) {
return `${path}/manual/chapter-12-admin-retirement`; return `${path}/manual/chapter-12-admin-retirement`;
} } else if (routeName.includes("discipline")) {
if (routeName.includes("discipline")) {
return `${path}/manual/chapter-15-admin-discipline`; return `${path}/manual/chapter-15-admin-discipline`;
} } else if (routeName.includes("appeal")) {
if (routeName.includes("appeal")) {
return `${path}/manual/chapter-15-admin-discipline`; return `${path}/manual/chapter-15-admin-discipline`;
} } else if (routeName.includes("KPI")) {
if (routeName.includes("evaluate")) { return `${path}/manual/chapter-18-admin-perf-evaluation`;
return `${path}/manual/chapter-16-admin-KPI`; } else if (routeName.includes("salary")) {
}
if (routeName.includes("salary")) {
return `${path}/manual/chapter-17-admin-salary`; return `${path}/manual/chapter-17-admin-salary`;
} } else if (
if (routeName.includes("development")) { routeName.includes("qualify") ||
routeName.includes("recruiting") ||
routeName.includes("compete") ||
routeName.includes("disable") ||
routeName.includes("manage")
) {
return `${path}/manual/chapter-9-admin-recruit`;
} else if (routeName.includes("development")) {
return `${path}/manual/chapter-19-admin-development`; return `${path}/manual/chapter-19-admin-development`;
} else { } else {
return manualConfig[routeName as keyof typeof manualConfig]; return manualConfig[routeName as keyof typeof manualConfig];
@ -226,12 +211,7 @@ const manualConfig = {
order: `${path}/manual/chapter-8-admin-order`, order: `${path}/manual/chapter-8-admin-order`,
OrderDetail: `${path}/manual/chapter-8-admin-order`, OrderDetail: `${path}/manual/chapter-8-admin-order`,
OrderAdd: `${path}/manual/chapter-8-admin-order`, OrderAdd: `${path}/manual/chapter-8-admin-order`,
disableperiod: `${path}/manual/chapter-9-admin-recruit`,
manage: `${path}/manual/chapter-9-admin-recruit`,
editorweb: `${path}/manual/chapter-9-admin-recruit`, editorweb: `${path}/manual/chapter-9-admin-recruit`,
manageDetaill: `${path}/manual/chapter-9-admin-recruit`,
ExamForm: `${path}/manual/chapter-9-admin-recruit`,
Payment: `${path}/manual/chapter-9-admin-recruit`,
placement: `${path}/manual/chapter-10-admin-appointment`, placement: `${path}/manual/chapter-10-admin-appointment`,
transfer: `${path}/manual/chapter-10-admin-appointment`, transfer: `${path}/manual/chapter-10-admin-appointment`,
receive: `${path}/manual/chapter-10-admin-appointment`, receive: `${path}/manual/chapter-10-admin-appointment`,
@ -241,6 +221,8 @@ const manualConfig = {
"appoint-employee": `${path}/manual/chapter-10-admin-appointment`, "appoint-employee": `${path}/manual/chapter-10-admin-appointment`,
other: `${path}/manual/chapter-10-admin-appointment`, other: `${path}/manual/chapter-10-admin-appointment`,
probation: `${path}/manual/chapter-11-admin-probation`, probation: `${path}/manual/chapter-11-admin-probation`,
probationDetail: `${path}/manual/chapter-11-admin-probation`,
probationForm: `${path}/manual/chapter-11-admin-probation`,
retirement: `${path}/manual/chapter-12-admin-retirement`, retirement: `${path}/manual/chapter-12-admin-retirement`,
resign: `${path}/manual/chapter-12-admin-retirement`, resign: `${path}/manual/chapter-12-admin-retirement`,
ExitInterviewEditQuestion: `${path}/manual/chapter-12-admin-retirement`, ExitInterviewEditQuestion: `${path}/manual/chapter-12-admin-retirement`,
@ -256,11 +238,13 @@ const manualConfig = {
leaveRejectDetail: `${path}/manual/chapter-14-admin-leave`, leaveRejectDetail: `${path}/manual/chapter-14-admin-leave`,
leaveReport: `${path}/manual/chapter-14-admin-leave`, leaveReport: `${path}/manual/chapter-14-admin-leave`,
appealComplain: `${path}/manual/chapter-15-admin-discipline`, appealComplain: `${path}/manual/chapter-15-admin-discipline`,
KPIRound: `${path}/manual/chapter-18-admin-perf-evaluation`, // KPIRound: `${path}/manual/chapter-18-admin-perf-evaluation`,
"KPIList": `${path}/manual/chapter-18-admin-perf-evaluation`, // "KPIList": `${path}/manual/chapter-18-admin-perf-evaluation`,
KPIDetail: `${path}/manual/chapter-18-admin-perf-evaluation`, // KPIDetail: `${path}/manual/chapter-18-admin-perf-evaluation`,
KPIReport: `${path}/manual/chapter-18-admin-perf-evaluation`, // KPIReport: `${path}/manual/chapter-18-admin-perf-evaluation`,
KPIDetailnew: `${path}/manual/chapter-18-admin-perf-evaluation`, // KPIDetailnew: `${path}/manual/chapter-18-admin-perf-evaluation`,
evaluate: `${path}/manual/chapter-16-admin-KPI`,
evaluateDetail: `${path}/manual/chapter-16-admin-KPI`,
}; };
export default { export default {

View file

@ -258,8 +258,8 @@ onMounted(() => {
" "
flat flat
dense dense
color="secondary" color="grey-13"
icon="mdi-dots-horizontal-circle-outline" icon="mdi-dots-vertical"
round round
> >
<q-menu> <q-menu>

View file

@ -428,160 +428,11 @@ watch(
:active="nodeId == prop.node.orgTreeId" :active="nodeId == prop.node.orgTreeId"
@click.stop="updateSelected(prop.node)" @click.stop="updateSelected(prop.node)"
active-class="my-list-link text-primary text-weight-medium" active-class="my-list-link text-primary text-weight-medium"
class="row col-12 text-dark q-py-xs q-pl-sm rounded-borders my-list" class="row col-12 text-dark items-center q-py-xs q-pl-sm rounded-borders my-list"
> >
<q-item-section> <div>
<div> <div class="text-weight-medium">
<q-item-label lines="1" class="text-weight-medium" {{ prop.node.orgTreeName }}
>{{ prop.node.orgTreeName }}
<q-btn
v-if="store.typeOrganizational === 'draft'"
flat
dense
color="secondary"
icon="mdi-dots-horizontal-circle-outline"
round
dene
class="q-ml-xs"
>
<q-menu>
<q-list
dense
v-for="(item, index) in prop.node.orgLevel === 4
? listAdd.slice(1, 6)
: listAdd"
:key="index"
style="min-width: 100px"
>
<q-item
clickable
v-close-popup
@click="
item.type === 'EDIT'
? onClickEdit(prop.node)
: item.type === 'ADD'
? onClickAgency(
prop.node.orgLevel + 1,
prop.node
)
: item.type === 'DETAIL'
? onClickDetail(
prop.node.orgTreeId,
prop.node.orgLevel
)
: item.type === 'DEL'
? onClickDel(
prop.node.orgLevel,
prop.node.orgTreeId,
prop.node.orgRootId
)
: item.type === 'SORT'
? onClickSort(
prop.node.orgRootId,
prop.node.orgLevel
)
: item.type === 'HISTORY'
? onClickHistory(
prop.node.orgLevel,
prop.node.orgTreeId
)
: null
"
>
<q-item-section avatar style="min-width: 20px">
<div class="row items-center">
<q-icon
size="xs"
:color="item.color"
:name="item.icon"
/>
<div v-if="prop.node.orgLevel === 0">
<div
class="q-pl-md"
v-if="
item.type === 'EDIT' ||
item.type === 'DEL' ||
item.type === 'HISTORY' ||
item.type === 'SORT'
"
>
{{ item.label }}หนวยงาน
</div>
<div
v-else-if="item.type === 'ADD'"
class="q-pl-md"
>
{{ item.label }}วนราชการ
</div>
<div v-else class="q-pl-md">
{{ item.label }}
</div>
</div>
<div v-else>
<div
class="q-pl-md"
v-if="
item.type === 'ADD' ||
item.type === 'EDIT' ||
item.type === 'DEL' ||
item.type === 'HISTORY' ||
item.type === 'SORT'
"
>
{{ item.label }}วนราชการ
</div>
<div v-else class="q-pl-md">
{{ item.label }}
</div>
</div>
</div>
</q-item-section>
</q-item>
</q-list>
</q-menu>
</q-btn>
<q-btn
v-else
flat
dense
color="secondary"
icon="mdi-dots-horizontal-circle-outline"
round
class="q-pa-none q-ml-xs"
>
<q-menu>
<q-list
dense
v-for="(item, index) in listAdd.slice(5, 6)"
:key="index"
style="min-width: 100px"
>
<q-item
clickable
v-close-popup
@click="
onClickDetail(
prop.node.orgTreeId,
prop.node.orgLevel
)
"
>
<q-item-section avatar style="min-width: 20px">
<q-icon
size="17px"
:color="item.color"
:name="item.icon"
/>
</q-item-section>
<q-item-section>{{ item.label }}</q-item-section>
</q-item>
</q-list>
</q-menu>
</q-btn>
</q-item-label>
</div> </div>
<div class="text-weight-light text-grey-8"> <div class="text-weight-light text-grey-8">
{{ prop.node.orgCode == null ? null : prop.node.orgCode }} {{ prop.node.orgCode == null ? null : prop.node.orgCode }}
@ -591,7 +442,144 @@ watch(
: prop.node.orgTreeShortName : prop.node.orgTreeShortName
}} }}
</div> </div>
</q-item-section> </div>
<q-btn
v-if="store.typeOrganizational === 'draft'"
flat
dense
color="grey-13"
icon="mdi-dots-vertical"
round
class="q-ml-xs"
>
<q-menu>
<q-list
dense
v-for="(item, index) in prop.node.orgLevel === 4
? listAdd.slice(1, 6)
: listAdd"
:key="index"
style="min-width: 100px"
>
<q-item
clickable
v-close-popup
@click="
item.type === 'EDIT'
? onClickEdit(prop.node)
: item.type === 'ADD'
? onClickAgency(prop.node.orgLevel + 1, prop.node)
: item.type === 'DETAIL'
? onClickDetail(
prop.node.orgTreeId,
prop.node.orgLevel
)
: item.type === 'DEL'
? onClickDel(
prop.node.orgLevel,
prop.node.orgTreeId,
prop.node.orgRootId
)
: item.type === 'SORT'
? onClickSort(prop.node.orgRootId, prop.node.orgLevel)
: item.type === 'HISTORY'
? onClickHistory(
prop.node.orgLevel,
prop.node.orgTreeId
)
: null
"
>
<q-item-section avatar style="min-width: 20px">
<div class="row items-center">
<q-icon
size="xs"
:color="item.color"
:name="item.icon"
/>
<div v-if="prop.node.orgLevel === 0">
<div
class="q-pl-md"
v-if="
item.type === 'EDIT' ||
item.type === 'DEL' ||
item.type === 'HISTORY' ||
item.type === 'SORT'
"
>
{{ item.label }}หนวยงาน
</div>
<div
v-else-if="item.type === 'ADD'"
class="q-pl-md"
>
{{ item.label }}วนราชการ
</div>
<div v-else class="q-pl-md">
{{ item.label }}
</div>
</div>
<div v-else>
<div
class="q-pl-md"
v-if="
item.type === 'ADD' ||
item.type === 'EDIT' ||
item.type === 'DEL' ||
item.type === 'HISTORY' ||
item.type === 'SORT'
"
>
{{ item.label }}วนราชการ
</div>
<div v-else class="q-pl-md">
{{ item.label }}
</div>
</div>
</div>
</q-item-section>
</q-item>
</q-list>
</q-menu>
</q-btn>
<q-btn
v-else
flat
dense
color="grey-13"
icon="mdi-dots-vertical"
round
>
<q-menu>
<q-list
dense
v-for="(item, index) in listAdd.slice(5, 6)"
:key="index"
style="min-width: 100px"
>
<q-item
clickable
v-close-popup
@click="
onClickDetail(prop.node.orgTreeId, prop.node.orgLevel)
"
>
<q-item-section avatar style="min-width: 20px">
<q-icon
size="xs"
:color="item.color"
:name="item.icon"
/>
</q-item-section>
<q-item-section>{{ item.label }}</q-item-section>
</q-item>
</q-list>
</q-menu>
</q-btn>
</q-item> </q-item>
</template> </template>
</q-tree> </q-tree>

View file

@ -429,7 +429,7 @@ function appointEmployeePost() {
await http await http
.post(config.API.appointEmployee(), formData) .post(config.API.appointEmployee(), formData)
.then(async () => { .then(async () => {
await router.push("/appoint-employee"); await router.push("/placement/appoint-employee");
await success($q, "ดำเนินการสำเร็จ"); await success($q, "ดำเนินการสำเร็จ");
}) })
.catch((e) => { .catch((e) => {

View file

@ -13,18 +13,7 @@ import type {
export const useMenuDataStore = defineStore("menuUse", () => { export const useMenuDataStore = defineStore("menuUse", () => {
/****************** เมนู **************************/ /****************** เมนู **************************/
/** รายการเมนู*/ /** รายการเมนู*/
const menuList = ref<ListMenu[]>([ const menuList = ref<ListMenu[]>([]);
{
id: "dashboard",
order: 0,
icon: "mdi-home-variant-outline",
sysName: "หน้าแรก",
sysDescription: "หน้าแรก",
path: "dashboard",
parentId: null,
children: [],
},
]);
/** ข้อมูล Level3*/ /** ข้อมูล Level3*/
const childLevelTree = ref<ChildLevelTree>({ const childLevelTree = ref<ChildLevelTree>({
@ -117,7 +106,19 @@ export const useMenuDataStore = defineStore("menuUse", () => {
*/ */
function fetchListMenu(data: ListMenu[]) { function fetchListMenu(data: ListMenu[]) {
if (data) { if (data) {
menuList.value.push(...data); menuList.value = [
{
id: "dashboard",
order: 0,
icon: "mdi-home-variant-outline",
sysName: "หน้าแรก",
sysDescription: "หน้าแรก",
path: "dashboard",
parentId: null,
children: [],
},
...data,
];
} }
} }