Files
Kg.SeaTime/Web/src/pages/user/user.vue
2026-07-08 19:13:55 +08:00

231 lines
7.9 KiB
Vue

<template>
<div class="content">
<Abar :href='"/user/message/read?id=" + userData.userNo'>私聊</Abar>. <Abar
:href='"/user/gift/give?no=" + userData.userNo'>送礼物</Abar>. <Abar href="/user/interact/dou">逗一下</Abar><br />
<Abar href="/user/master/add">拜师</Abar>. <Abar :href='"/trade/user?no=" + userData.userNo'>交易</Abar>. <Abar
href="/bag/give">送道具</Abar><br>
<Abutton @click="FriendHandle">{{ isFriend ? "删除好友" : "加好友" }}</Abutton>
<span v-if="isEnemy == false">
.<Abutton @click="AddEnemy">加仇人</Abutton>
</span>
</div>
<div class="content"></div>
<div class="content">
ID:{{ userData.userNo }}({{ online == 1 ? '在线' : '离线' }})<br>
昵称:{{ userData.nick }}<br>
特权:<br>
徽章:<br>
社交: 暂无<br>
婚姻:<br>
结拜:暂无<br>
宠物:暂无<br>
坐骑:<br>
成就:<br>
个性签名:{{ userData.sign }}<br>
罪恶值:{{ accData.enemy }}<br>
师德:{{ accData.teach }}<br>
</div>
<div class="content">
{{ attrData.lev }}{{ userData.sex }}({{ onMap }})
</div>
<div>
<div class="content">
手持:
<span class="item" v-for="item in Hold">
<GameEqu :equ-data="item" :show-url="true" :show-lev="1"></GameEqu>
</span>
</div>
<div class="content">
副手:
<span class="item" v-for="item in Vice">
<GameEqu :equ-data="item" :show-url="true" :show-lev="1"></GameEqu>
</span>
</div>
<div class="content">
头戴:
<span class="item" v-for="item in Head">
<GameEqu :equ-data="item" :show-url="true" :show-lev="1"></GameEqu>
</span>
</div>
<div class="content">
身穿:
<span class="item" v-for="item in Wear">
<GameEqu :equ-data="item" :show-url="true" :show-lev="1"></GameEqu>
</span>
</div>
<div class="content">
腰带:
<span class="item" v-for="item in Waist">
<GameEqu :equ-data="item" :show-url="true" :show-lev="1"></GameEqu>
</span>
</div>
<div class="content">
脚穿:
<span class="item" v-for="item in Foot">
<GameEqu :equ-data="item" :show-url="true" :show-lev="1"></GameEqu>
</span>
</div>
<div class="content">
佩戴:
<span class="item" v-for="item in Ornaments">
<GameEqu :equ-data="item" :show-url="true" :show-lev="1"></GameEqu>
</span>
</div>
<div class="content">
时装:
<span class="item" v-for="item in Fashion">
<GameEqu :equ-data="item" :show-url="true" :show-lev="1"></GameEqu>
</span>
</div>
<div class="content">
羽翼:
<span class="item" v-for="item in Wing">
<GameEqu :equ-data="item" :show-url="true" :show-lev="1"></GameEqu>
</span>
</div>
<div class="content">
装饰:
<span class="item" v-for="item in Decorate">
<GameEqu :equ-data="item" :show-url="true" :show-lev="1"></GameEqu>
</span>
</div>
<div class="content" v-if="suit.length > 0">
<div class="item" v-for="item in suit">
套装:<Abar :href='"/prop/suit?no=" + item.suitCode'>{{ item.suitName }}</Abar>
</div>
</div>
</div>
<div class="content" v-if="team.state == 1">
队伍:<Abar :href='"/user/team/info?id=" + team.team.teamId'>{{ team.team.name }}</Abar>
</div>
<div class="content" v-if="isPk">
<Abutton @click="FightAtk">攻击</Abutton>
</div>
</template>
<script setup lang="ts">
definePageMeta({
layout: layout.default,
middleware: 'page-loading'
})
const userData = ref<any>({});
const attrData = ref<any>({});
const accData = ref<any>({});
const online = ref(0);
const onMap = ref('');
const isFriend = ref(false);
const isEnemy = ref(false);
const isPk = ref(false);
const team = ref<any>({});
/**装备定义 */
const equ = ref<Array<any>>([]);
const suit = ref<Array<any>>([]);
const Hold = ref<Array<any>>([]);
const Vice = ref<Array<any>>([]);
const Head = ref<Array<any>>([]);
const Wear = ref<Array<any>>([]);
const Waist = ref<Array<any>>([]);
const Foot = ref<Array<any>>([]);
const Ornaments = ref<Array<any>>([]);
const Fashion = ref<Array<any>>([]);
const Wing = ref<Array<any>>([]);
const Decorate = ref<Array<any>>([]);
onMounted(async () => {
try {
await BindData();
}
finally {
PageLoading.Close();
}
})
const BindData = async (): Promise<void> => {
let no = PageExtend.QueryString("no");
let result = await UserService.GetHomeInfo(no);
if (result.code == 0) {
userData.value = result.data.user;
attrData.value = result.data.attr;
accData.value = result.data.acc;
online.value = result.data.isOnline;
onMap.value = result.data.onMapName;
isFriend.value = result.data.isFriend;
isEnemy.value = result.data.isEnemy;
team.value = result.data.team;
isPk.value = result.data.isPk;
equ.value = result.data.equ;
suit.value = result.data.suit;
Hold.value = equ.value.filter(it => it.code == 'Hold');
Vice.value = equ.value.filter(it => it.code == 'Vice');
Head.value = equ.value.filter(it => it.code == 'Head');
Wear.value = equ.value.filter(it => it.code == 'Wear');
Waist.value = equ.value.filter(it => it.code == 'Waist');
Foot.value = equ.value.filter(it => it.code == 'Foot');
Ornaments.value = equ.value.filter(it => it.code == 'Ornaments');
Fashion.value = equ.value.filter(it => it.code == 'Fashion');
Wing.value = equ.value.filter(it => it.code == 'Wing');
Decorate.value = equ.value.filter(it => it.code == 'Decorate');
console.log(result);
}
else if (result.code == 101) {
return PageExtend.RedirectTo("/user");
}
else if (result.code == 102) {
MessageExtend.ShowDialogEvent("提示", "玩家不存在!", () => {
return PageExtend.RedirectTo("/user");
}, "确认");
}
else {
MessageExtend.ShowDialog("提示", result.msg);
}
};
const FriendHandle = async (): Promise<void> => {
MessageExtend.ShowConfirmDialogAsyc("好友操作", `您确定要${isFriend.value ? "删除" : "添加"}好友吗?`, async () => {
let no = PageExtend.QueryString("no");
let result = await RelationService.FriendHandle(no);
if (result.code == 0) {
await BindData();
MessageExtend.Notify(result.msg, "success");
}
else {
MessageExtend.Notify(result.msg, "danger");
}
return true;
});
}
const AddEnemy = async (): Promise<void> => {
MessageExtend.ShowConfirmDialogAsyc("关系操作", `您确定要添加Ta为仇人吗?(添加消耗300金元)`, async () => {
let no = PageExtend.QueryString("no");
let result = await RelationService.AddEnemy(no);
if (result.code == 0) {
await BindData();
MessageExtend.Notify(result.msg, "success");
}
else {
MessageExtend.Notify(result.msg, "danger");
}
return true;
});
}
const FightAtk = async () => {
let no = PageExtend.QueryString("no");
MessageExtend.LoadingToast("战斗初始化...");
let result = await FightService.FightPerson(no);
MessageExtend.LoadingClose();
if (result.code == 0) {
return PageExtend.Redirect("/fight?f=" + result.data);
}
else {
MessageExtend.ShowDialog("提示", result.msg);
}
}
</script>