218 lines
4.8 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<PageContainer title="愉快政">
<CurrentSite />
<div class="content">
<van-grid :gutter="10" :column-num="3" class="grid">
<van-grid-item
class="grid-item"
v-for="item in gridItems"
:key="item.text"
:to="item.to"
>
<template #icon>
<img :src="item.icon" class="grid-icon" />
</template>
<template #text>
<span class="grid-text">{{ item.text }}</span>
</template>
</van-grid-item>
</van-grid>
</div>
<van-popup
:show="YHZConfirmpopup"
position="center"
round
close-on-click-overlay
:style="{ height: '20%', width: '80%' }"
@close="onYHZConfirmClose"
class="confirmpopup"
>
<div class="confirmpopup__content">
<h3>请在服务站授权定位</h3>
</div>
<div class="btn-box">
<van-button class="btn" @click="onYHZConfirmClose">取消</van-button>
<van-button class="btn" type="primary" @click="getLocation"
>授权定位</van-button
>
</div>
</van-popup>
</PageContainer>
</template>
<script setup>
import "vant/es/toast/style";
import "vant/es/popup/style";
import { ref, onMounted } from "vue";
import { useRouter, useRoute } from "vue-router";
import { useYHZStore } from "../stores/yhzStore";
import { showToast } from "vant";
import { request } from "../../../shared/utils/request";
import PageContainer from "@/components/PageContainer.vue";
import CurrentSite from "@/components/CurrentSite.vue";
import group63Icon from "@/assets/images/组 63.png";
import group105Icon from "@/assets/images/组 105.png";
import group10501Icon from "@/assets/images/组 105(1).png";
import group104Icon from "@/assets/images/组 104.png";
import group106Icon from "@/assets/images/组 106.png";
const router = useRouter();
const yhzinfo = ref({});
const yhzStore = useYHZStore();
const route = useRoute();
const token = route.query.token;
const YHZConfirmpopup = ref(false);
// 配置项
const gridItems = [
{
icon: group63Icon,
text: "设备管理",
to: {
name: "EquipManage",
params: { data: encodeURIComponent(JSON.stringify(yhzinfo.value)) },
},
},
{
icon: group10501Icon,
text: "物资管理",
to: {
name: "MaterialManage",
params: { data: encodeURIComponent(JSON.stringify(yhzinfo.value)) },
},
},
{
icon: group104Icon,
text: "人员管理",
to: {
name: "StaffManage",
params: { data: encodeURIComponent(JSON.stringify(yhzinfo.value)) },
},
},
{
icon: group106Icon,
text: "冰雪灾害",
to: {
name: "IceEventManage",
params: { data: encodeURIComponent(JSON.stringify(yhzinfo.value)) },
},
},
{
icon: group106Icon,
text: "灾害管理",
to: {
name: "DisasterManagement",
},
},
{
icon: group105Icon,
text: "预警信息",
to: {
name: "WarningMessage",
},
},
{
icon: group106Icon,
text: '恢复重建',
to: {
name: 'Rebuild',
}
}
];
// 获取当前登录用于就职的养护站信息
const getYHZinfo = async () => {
try {
const res = await request({
url: `/snow-ops-platform/yhz/getStationByUser`,
method: "GET",
});
if (res.code === "00000") {
yhzinfo.value = res.data[0];
yhzStore.setYHZInfo(res.data[0]);
// 更新配置项中的params确保使用最新的yhzinfo
gridItems.forEach(item => {
if (item.to.params && item.to.params.data) {
item.to.params.data = encodeURIComponent(JSON.stringify(yhzinfo.value));
}
});
} else {
throw new Error(res.message);
}
} catch (error) {
showToast({
message: error.message,
type: "fail",
});
}
};
const onYHZConfirmClose = () => {
YHZConfirmpopup.value = false;
};
const getLocation = () => {
// 定位逻辑
YHZConfirmpopup.value = false;
};
onMounted(async () => {
if (token) {
localStorage.setItem("token", token);
router.replace({ path: route.path }).then(() => {
window.location.reload();
});
}
await getYHZinfo();
if (
yhzinfo.value.isManager &&
(yhzinfo.value.jd === "" || yhzinfo.value.wd === "")
) {
YHZConfirmpopup.value = true;
}
});
const goToUser = () => {
router.push("/user");
};
</script>
<style lang="scss" scoped>
.btn-box {
width: 100%;
display: flex;
gap: 16px;
padding: 16px;
}
.btn {
width: 50%;
}
.confirmpopup__content {
padding: 20px;
}
.grid-icon {
width: 48px;
height: 48px;
object-fit: contain;
}
.grid-text {
font-size: 14px;
color: #323233;
}
:deep(.grid-item) {
.grid-text {
margin-top: 16px;
font-weight: 400;
font-size: 16px;
color: #333333;
line-height: 16px;
}
}
</style>