Files
Kg.SeaTime/Web/src/pages/map/runing.vue
2026-06-04 18:25:31 +08:00

117 lines
3.0 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>
<div class="content">
<Abutton @click="Runing">航行</Abutton>.<Abutton @click="AutoRuning">{{ runState == 0 ? "自动航行" : "取消自动" }}
</Abutton>.
<Abutton @click="StopRun">取消</Abutton><br>
航线{{ data.onCity }} {{ data.toCity }}<br>
航距{{ position }}/{{ distance - position }}/{{ distance }}海里<br>
你可以:
<span v-if="isShip == 1">
<Abutton>钓鱼</Abutton>
</span>
<br>
安全{{ GameTool.GetSeaMapSafetyName(safety) }}<br>
</div>
<div class="content">
您看到<br>
<div class="common">
<span v-for="item in business">
<Abar :href='"/map/business?id="+item.busId'>{{ item.busName }}</Abar>
</span>
</div>
</div>
</template>
<script setup lang="ts">
definePageMeta({
layout: layout.default,
middleware: 'page-loading'
})
const data = ref<any>({});
const distance = ref(0);
const position = ref(0);
const isShip = ref(0);
const safety = ref(0);
const runState = ref(0);
const business = ref<Array<any>>([]);
onMounted(async () => {
try {
await BindData();
}
finally {
PageLoading.Close();
}
})
const BindData = async (): Promise<void> => {
let result = await MapService.GetUserRun();
if (result.code == 0) {
data.value = result.data;
distance.value = result.data.distance;
position.value = result.data.position;
isShip.value = result.data.isShip;
safety.value = result.data.safety;
business.value = result.data.business;
if (runState.value == 1) {
setTimeout(async () => {
await Runing();
}, 1000);
}
}
else if (result.code == 100) {
PageExtend.RedirectTo("/map");
}
else {
MessageExtend.ShowDialogEvent("提示", result.msg, () => {
PageExtend.Redirect("/map");
});
}
};
let runLock = false;
const Runing = async () => {
if (runLock) {
return;
}
runLock = true;
let result = await MapService.UserMapRuning();
if (result.code == 0) {
if (result.msg != '') {
MessageExtend.ShowToast(result.msg);
}
await BindData();
}
else if (result.code == 100) {
PageExtend.RedirectTo("/map");
}
else {
MessageExtend.ShowDialog("提示", result.msg);
}
runLock = false;
}
const StopRun = async () => {
MessageExtend.ShowConfirmDialogAsyc("航海操作", `您确定要取消航行吗?`, async () => {
let result = await MapService.StopUserRun();
if (result.code == 0) {
PageExtend.RedirectTo("/map");
}
else {
MessageExtend.Notify(result.msg, "danger");
}
return true;
});
}
const AutoRuning = async () => {
if (runState.value == 0) {
runState.value = 1;
await Runing()
}
else {
runState.value = 0;
}
}
</script>