This commit is contained in:
Putoo
2026-07-10 16:39:52 +08:00
parent cfe6612a7a
commit 9de24634e3
31 changed files with 760 additions and 39 deletions

View File

@@ -27,6 +27,15 @@
<div class="item" v-if="fight.award != ''" v-html="AwardTips">
</div>
</div>
<div class="common" v-if="figArea == 'Task'">
<div class="content" v-if="needs.length > 0">
任务要求:<br>
<GamePropVerify :data="verifyData.needs" ></GamePropVerify>
</div>
<div class="content" v-if="verifyData.result">
<Abutton @click="retTask">我要传送</Abutton>
</div>
</div>
</div>
</template>
<script setup lang="ts">
@@ -42,6 +51,10 @@ const upBlood = ref(0);
const fight = ref<any>({});
const AwardTips = ref('');
const isCopy = ref(0);
const figArea = ref('');
const figAreaData = ref<any>({});
const verifyData = ref<any>({});
const needs = ref<Array<any>>([]);
let fightId = PageExtend.QueryString("f");
onMounted(async () => {
@@ -62,9 +75,15 @@ const BindData = async (): Promise<void> => {
upBlood.value = result.data.upBlood;
fight.value = result.data.fight;
isCopy.value = result.data.isCopy;
figArea.value = result.data.figArea;
if (fight.value.award != '') {
AwardTips.value = awardTipsStr(JSON.parse(fight.value.award))
}
if (figArea.value == 'Task') {
figAreaData.value = result.data.figResult;
verifyData.value = figAreaData.value.result;
needs.value = verifyData.value.needs;
}
}
else if (result.code == 100) {
PageExtend.RedirectTo("/fight?f=" + fightId);
@@ -107,5 +126,15 @@ const onHook = async () => {
MessageExtend.Notify(result.msg, "danger");
}
}
</script>
const retTask = async (btnData: any) => {
MessageExtend.LoadingToast("传送中...");
let result = await TaskService.ReturnTask(Number(figAreaData.value.itemId));
MessageExtend.LoadingClose();
if (result.code == 0) {
PageExtend.RedirectTo("/map");
}
else {
MessageExtend.Notify(result.msg, "danger");
}
}
</script>

View File

@@ -9,7 +9,7 @@
<div class="content">
{{ cityInfo.cityName }}·{{ mapInfo.mapName }}({{ mapInfo.x }},{{ mapInfo.y }})
<Abutton @click="Refresh">刷新</Abutton>
<Abar href="/task/">任务</Abar>
<Abar href="/task/">任务{{ taskCount > 0 ? "(" + taskCount + ")" : "" }}</Abar>
<Abar href="/user/message/">消息{{ messageCount > 0 ? "(" + messageCount + ")" : "" }}</Abar>
</div>
<div class="content" v-if="gameTips != ''" style="color: red;font-size: 16px;">
@@ -146,6 +146,7 @@ const broadcast = ref<Array<any>>([]);
const gameTips = ref('');
const isHook = ref(0);
const mapGoods = ref<Array<any>>([]);
const taskCount = ref(0);
// 城内地图显示
const showCity = ref(false);
@@ -181,6 +182,7 @@ const BindData = async (map: string): Promise<void> => {
gameTips.value = result.data.gameTips;
mapGoods.value = result.data.mapGoods;
isHook.value = result.data.isHook;
taskCount.value = result.data.taskCount;
// console.log(result)
}
else if (result.code == 103) {

View File

@@ -16,11 +16,16 @@
<div class="common" v-if="task.length > 0">
当前任务:<br>
<div class="item" v-for="item in task">
<img src="/images/site/tg.gif" v-if="item.state==0" />
<img src="/images/site/tr.gif" v-if="item.state==1" />
<img src="/images/site/tg.gif" v-if="item.state == 0" />
<img src="/images/site/tr.gif" v-if="item.state == 1" />
<Abar :href='"/task/info?task=" + item.itemId'>[{{ item.code }}]{{ item.name }}</Abar>
</div>
</div>
<div>
<div class="item" v-for="item in data.bus">
<Abar :href="item.url">{{ item.name }}</Abar>
</div>
</div>
</div>
</template>
<script setup lang="ts">
@@ -41,7 +46,6 @@ onMounted(async () => {
})
const BindData = async (): Promise<void> => {
let npc = PageExtend.QueryString("npc");
let result = await MapService.GetNpcInfo(Number(npc));

View File

@@ -1,3 +1,41 @@
<template>
</template>
<div class="content">
我的任务
</div>
<div class="content">
<div class="item" v-for="(item,index) in data" :key="index">
{{index+1}}.<Abar :href='"/task/look?id="+item.itemId'>[{{item.code}}]{{item.name}}</Abar>({{item.lev}})
</div>
<span v-if="data.length==0">
暂无任务.
</span>
</div>
</template>
<script setup lang="ts">
definePageMeta({
layout: layout.default,
middleware: 'page-loading'
})
const data = ref<Array<any>>({});
onMounted(async () => {
try {
await BindData();
}
finally {
PageLoading.Close();
}
})
const BindData = async (): Promise<void> => {
let result = await TaskService.GetUserTask();
if (result.code == 0) {
data.value = result.data;
}
else {
MessageExtend.ShowDialog("提示",result.msg);
}
};
</script>

View File

@@ -3,7 +3,7 @@
<strong>{{ npcData.npcName }}</strong>:{{ talkMsg }}
</div>
<div class="content" v-if="taskState == 100">
等待开放下一环任务!
恭喜,任务已全部完成!
</div>
<div v-else>
<div v-if="data.state != -1">

118
Web/src/pages/task/look.vue Normal file
View File

@@ -0,0 +1,118 @@
<template>
<div class="content">
[{{ data.code }}]{{ data.name }}({{ data.lev }})
</div>
<div class="content" v-if="taskState == 100">
当前任务已暂停,等待任务更新!
</div>
<div v-else>
<div class="content">
{{ talkMsg }}
</div>
<div v-if="data.state != -1">
<div class="content" v-if="needs.length > 0">
任务要求:<br>
<GameTaskPropVerify :data="verifyData.needs" @mapTo="mapTo"></GameTaskPropVerify>
</div>
<div class="content" v-if="verifyData.result">
<Abutton @click="retTask">我要传送</Abutton>(领路蝶:{{ retGoods }})
</div>
<div class="content" v-else>
<Abutton @click="restTask">重置任务</Abutton>
</div>
</div>
</div>
</template>
<script setup lang="ts">
definePageMeta({
layout: layout.default,
middleware: 'page-loading'
})
const data = ref<any>({});
const verifyData = ref<any>({});
const needs = ref<Array<any>>([]);
const talkMsg = ref('');
const taskState = ref(-1);
const toGoods = ref(0);
const retGoods = ref(0);
let taskId = PageExtend.QueryString("id");
let npcId = LocalStorageHelper.GetOnNpc();
onMounted(async () => {
try {
await BindData();
}
finally {
PageLoading.Close();
}
})
const BindData = async (): Promise<void> => {
let result = await TaskService.GetUserTaskInfo(Number(taskId));
if (result.code == 0) {
data.value = result.data.data;
talkMsg.value = result.data.talkMsg;
taskState.value = result.data.taskState;
toGoods.value = result.data.toGoods;
retGoods.value = result.data.retGoods;
verifyData.value = data.value.result;
needs.value = verifyData.value.needs;
taskId = data.value.itemId;
}
else {
PageExtend.RedirectTo("/task")
}
};
const ReturnTask = async () => {
MessageExtend.LoadingToast("提交任务中...");
let result = await TaskService.OverTask(Number(npcId), Number(data.value.itemId));
MessageExtend.LoadingClose();
if (result.code == 0) {
await BindData();
if (result.msg != '') {
MessageExtend.Notify(result.msg, "success");
}
}
else {
MessageExtend.Notify(result.msg, "danger");
}
}
const mapTo = async (btnData: any) => {
MessageExtend.LoadingToast("传送中...");
let result = await TaskService.NeedMapTo(Number(data.value.itemId), btnData.num);
MessageExtend.LoadingClose();
if (result.code == 0) {
PageExtend.RedirectTo("/map");
}
else {
MessageExtend.Notify(result.msg, "danger");
}
}
const retTask = async (btnData: any) => {
MessageExtend.LoadingToast("传送中...");
let result = await TaskService.ReturnTask(Number(data.value.itemId));
MessageExtend.LoadingClose();
if (result.code == 0) {
PageExtend.RedirectTo("/map");
}
else {
MessageExtend.Notify(result.msg, "danger");
}
}
const restTask = async (btnData: any) => {
MessageExtend.LoadingToast("任务重置中...");
let result = await TaskService.RestTask(Number(data.value.taskId));
MessageExtend.LoadingClose();
if (result.code == 0) {
MessageExtend.Notify("任务重置成功!","success");
}
else {
MessageExtend.Notify(result.msg, "danger");
}
}
</script>

View File

@@ -7,6 +7,30 @@ export class TaskService {
return await ApiService.Request("get", "/Map/Task/GetTaskByNpc", { npcId, taskId });
}
/**
* 获取个人任务
* GET /Map/Task/GetUserTask
*/
static async GetUserTask() {
return await ApiService.Request("get", "/Map/Task/GetUserTask");
}
/**
* 重置任务
* GET /Map/Task/RestTask
*/
static async RestTask(task: number) {
return await ApiService.Request("get", "/Map/Task/RestTask", { task });
}
/**
* 获取个人任务详情
* GET /Map/Task/GetUserTaskInfo
*/
static async GetUserTaskInfo(taskId: number) {
return await ApiService.Request("get", "/Map/Task/GetUserTaskInfo", { taskId });
}
/**
* 完成任务
* GET /Map/Task/OverTask