From 700243601f1780acd7a40ec773d8e94d0d50f44f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A5=BF=E7=93=9C=C2=B0?= Date: Mon, 31 Mar 2025 10:33:16 +0800 Subject: [PATCH] dev --- backend/api/core/Auth.py | 17 +- backend/api/dp.py | 2 +- backend/api/routes/info.py | 6 +- backend/core/basic/character.py | 1 + backend/core/character/adventure.py | 245 ++++++++++++++++++ backend/dataFiles/adventure-info.json | 211 --------------- frontend/src/api/calc/index.ts | 3 +- frontend/src/api/calc/type.ts | 13 + frontend/src/api/common.ts | 27 +- frontend/src/api/info/type.ts | 4 +- frontend/src/pages/Character/Forge/index.vue | 50 ++-- frontend/src/pages/Character/Index.vue | 19 +- frontend/src/pages/Character/Result/Index.vue | 18 ++ .../Character/Result/components/Info.vue | 8 + .../Character/Result/components/Skill.vue | 26 ++ frontend/src/pages/Home/Index.vue | 2 +- frontend/src/pages/IndexView.vue | 7 +- frontend/src/stores/config.ts | 13 + 18 files changed, 396 insertions(+), 276 deletions(-) create mode 100644 backend/core/character/adventure.py delete mode 100644 backend/dataFiles/adventure-info.json create mode 100644 frontend/src/api/calc/type.ts create mode 100644 frontend/src/pages/Character/Result/Index.vue create mode 100644 frontend/src/pages/Character/Result/components/Info.vue create mode 100644 frontend/src/pages/Character/Result/components/Skill.vue diff --git a/backend/api/core/Auth.py b/backend/api/core/Auth.py index 5e5de247..a3d0f9de 100644 --- a/backend/api/core/Auth.py +++ b/backend/api/core/Auth.py @@ -3,16 +3,21 @@ import hmac import json import time from typing import Optional +from core.character.adventure import get_adv_info from core.basic.character import Character from fastapi import Header, Request from api.core.exception import ResponseException class AlterState: - def __init__(self, alter: str, token: str, charcater: Character, equVersion: str,time: int): - self.alter = alter + def __init__(self, value: str, token: str, charcater: Character, equVersion: str,time: int): + self.value = value + try: + self.alter = get_adv_info(value)["class"] + except Exception: + raise ResponseException('无效的职业') self.token = token - self.origin = alter.split('.')[-1] + self.origin = self.alter.split('.')[-1] self.character = charcater self.equVersion = equVersion self.time = time @@ -35,15 +40,15 @@ def dict2obj(dictObj): return d -def createToken(alter: str, equVersion: str, redis = None, expire=86400 / 24 * 2)->str: +def createToken(value: str, equVersion: str, redis = None, expire=86400 / 24 * 2)->str: ts_str = str(time.time() + expire) ts_byte = ts_str.encode('utf-8') - sha1_tshex_str = hmac.new(alter.encode('utf-8'), ts_byte, 'sha1').hexdigest() + sha1_tshex_str = hmac.new(value.encode('utf-8'), ts_byte, 'sha1').hexdigest() token = sha1_tshex_str token = base64.urlsafe_b64encode(token.encode('utf-8')).decode('utf-8') # character = createCharacter(alter) character = {} - redis.set(f'token:{token}', json.dumps(AlterState(alter, token, character, equVersion).to_dict()), int(expire)) + redis.set(f'token:{token}', json.dumps(AlterState(value, token, character, equVersion).to_dict()), int(expire)) return token diff --git a/backend/api/dp.py b/backend/api/dp.py index 182c0993..0f1e182c 100644 --- a/backend/api/dp.py +++ b/backend/api/dp.py @@ -20,7 +20,7 @@ def alterToken(alter_token: Optional[str] = Header(None)): decoded_bytes = base64.b64decode(alter_token) decoded_str = decoded_bytes.decode('utf-8') alter = json.loads(decoded_str) - # 时间判断 后面再加 + # 6小时过期 if (int(time.time() * 1000) - alter['time']) / (60 * 60 * 1000) > 6: raise ResponseException('登录过期或无效Token,请刷新后重试') return AlterState(alter['alter'], alter_token, {}, alter['equVersion'], alter['time']) diff --git a/backend/api/routes/info.py b/backend/api/routes/info.py index 2fb18f86..d64a101f 100644 --- a/backend/api/routes/info.py +++ b/backend/api/routes/info.py @@ -5,6 +5,7 @@ from fastapi import APIRouter,Request from api.core.Response import Return, response from api.core.Redis import get_redis_info from api.dp import RedisDep,AltersDep +from core.character.adventure import get_adv_list from core.basic.character import createCharacter router = APIRouter() @@ -14,10 +15,7 @@ register_gzip_request(router) @router.get('/adventure') async def get_adventure_info(request: Request,redis:RedisDep): - def get_adventure(): - with open('./dataFiles/adventure-info.json', encoding='utf-8') as fp: - return json.load(fp) - adventure_info = get_redis_info(redis, 'dcalc:adventure', get_adventure) + adventure_info = get_redis_info(redis, 'dcalc:adventure', get_adv_list) return response(data=adventure_info) diff --git a/backend/core/basic/character.py b/backend/core/basic/character.py index 8439dae5..5a3899be 100644 --- a/backend/core/basic/character.py +++ b/backend/core/basic/character.py @@ -201,6 +201,7 @@ class Character: self.ElementIncrease = 1.0 self.equs = {} self.JadeInfo = Jade() + self.equ_effect = [] pass # region 角色属性设置 diff --git a/backend/core/character/adventure.py b/backend/core/character/adventure.py new file mode 100644 index 00000000..2aa9824f --- /dev/null +++ b/backend/core/character/adventure.py @@ -0,0 +1,245 @@ +import base64 + +adv = [ + { + 'id': 0, + 'name': 'swordman_male', + 'title': '鬼剑士(男)', + 'children': [ + {'id': 0, 'name': 'weapon_master', 'title': '极诣·剑魂', 'open': False}, + {'id': 1, 'name': 'soul_bender', 'title': '极诣·鬼泣', 'open': False}, + {'id': 2, 'name': 'berserker', 'title': '极诣·狂战士', 'open': False}, + {'id': 3, 'name': 'asura', 'title': '极诣·阿修罗', 'open': False}, + {'id': 4, 'name': 'ghostblade', 'title': '极诣·剑影', 'open': False}, + ], + }, + { + 'id': 1, + 'name': 'swordman_female', + 'title': '鬼剑士(女)', + 'children': [ + {'id': 0, 'name': 'sword_master', 'title': '极诣·驭剑士', 'open': False}, + {'id': 1, 'name': 'dark_templar', 'title': '极诣·暗殿骑士', 'open': False}, + {'id': 2, 'name': 'demon_slayer', 'title': '极诣·契魔者', 'open': False}, + {'id': 3, 'name': 'vegabond', 'title': '极诣·流浪武士', 'open': False}, + {'id': 4, 'name': 'spectre', 'title': '极诣·刃影', 'open': False}, + ], + }, + { + 'id': 2, + 'name': 'fighter_male', + 'title': '格斗家(男)', + 'children': [ + {'id': 0, 'name': 'nenmaster_male', 'title': '归元·气功师', 'open': False}, + {'id': 1, 'name': 'striker_male', 'title': '归元·散打', 'open': False}, + {'id': 2, 'name': 'brawler_male', 'title': '归元·街霸', 'open': False}, + {'id': 3, 'name': 'grappler_male', 'title': '归元·柔道家', 'open': False}, + {'name': 'empty', 'title': '', 'comment': '首页'}, + ], + }, + { + 'id': 3, + 'name': 'fighter_female', + 'title': '格斗家(女)', + 'children': [ + {'id': 0, 'name': 'nenmaster_female', 'title': '归元·气功师', 'open': False}, + {'id': 1, 'name': 'striker_female', 'title': '归元·散打', 'open': False}, + {'id': 2, 'name': 'brawler_female', 'title': '归元·街霸', 'open': False}, + {'id': 3, 'name': 'grappler_female', 'title': '归元·柔道家', 'open': False}, + {'name': 'empty', 'title': '', 'comment': '设置'}, + ], + }, + { + 'id': 4, + 'name': 'gunner_male', + 'title': '神枪手(男)', + 'children': [ + {'id': 0, 'name': 'ranger_male', 'title': '重霄·漫游枪手', 'open': False}, + {'id': 1, 'name': 'launcher_male', 'title': '重霄·枪炮师', 'open': False}, + {'id': 2, 'name': 'mechanic_male', 'title': '重霄·机械师', 'open': False}, + {'id': 3, 'name': 'spitfire_male', 'title': '重霄·弹药专家', 'open': False}, + {'id': 4, 'name': 'assault', 'title': '重霄·合金战士', 'open': False}, + ], + }, + { + 'id': 5, + 'name': 'gunner_female', + 'title': '神枪手(女)', + 'children': [ + {'id': 0, 'name': 'ranger_female', 'title': '重霄·漫游枪手', 'open': False}, + {'id': 1, 'name': 'launcher_female', 'title': '重霄·枪炮师', 'open': False}, + {'id': 2, 'name': 'mechanic_female', 'title': '重霄·机械师', 'open': False}, + {'id': 3, 'name': 'spitfire_female', 'title': '重霄·弹药专家', 'open': True, 'class': 'GF.gunner_female.spitfire_female'}, + {'name': 'sponsor', 'url': 'https://bbs.colg.cn', 'title': ''}, + ], + }, + { + 'id': 6, + 'name': 'mage_male', + 'title': '魔法师(男)', + 'children': [ + {'id': 0, 'name': 'elemental_bomber', 'title': '知源·元素爆破师', 'open': False}, + {'id': 1, 'name': 'glacial_master', 'title': '知源·冰结师', 'open': False}, + {'id': 2, 'name': 'blood_mage', 'title': '知源·血法师', 'open': False}, + {'id': 3, 'name': 'swift_master', 'title': '知源·逐风者', 'open': False}, + {'id': 4, 'name': 'dimension_walker', 'title': '知源·次元行者', 'open': False}, + ], + }, + { + 'id': 7, + 'name': 'mage_female', + 'title': '魔法师(女)', + 'children': [ + {'id': 0, 'name': 'elementalist', 'title': '知源·元素师', 'open': False}, + {'id': 1, 'name': 'summoner', 'title': '知源·召唤师', 'open': False}, + {'id': 2, 'name': 'battle_mage', 'title': '知源·战斗法师', 'open': False}, + {'id': 3, 'name': 'witch', 'title': '知源·魔道学者', 'open': False}, + { + 'id': 4, + 'name': 'enchantress', + 'title': '知源·小魔女', + 'open': False, + 'options': [{'id': 0, 'name': 'default', 'title': '奶', 'class': 'enchantress'}, {'id': 1, 'name': 'default', 'title': '输出', 'class': 'enchantress_carry'}], + }, + ], + }, + { + 'id': 8, + 'name': 'priest_male', + 'title': '圣职者(男)', + 'children': [ + { + 'id': 0, + 'name': 'crusader_male', + 'title': '神启·圣骑士', + 'open': False, + 'options': [{'id': 0, 'name': 'default', 'title': '奶', 'class': 'crusader_male'}, {'id': 1, 'name': 'default', 'title': '审判', 'class': 'crusader_male_carry'}], + }, + {'id': 1, 'name': 'infighter', 'title': '神启·蓝拳圣使', 'open': False}, + {'id': 2, 'name': 'exorcist', 'title': '神启·驱魔师', 'open': False}, + {'id': 3, 'name': 'avenger', 'title': '神启·复仇者', 'open': False}, + {'id': 4, 'name': 'empty', 'title': ''}, + ], + }, + { + 'id': 9, + 'name': 'priest_female', + 'title': '圣职者(女)', + 'children': [ + { + 'id': 0, + 'name': 'crusader_female', + 'title': '神启·圣骑士', + 'open': False, + 'options': [{'id': 0, 'name': 'default', 'title': '奶', 'class': 'crusader_female'}, {'id': 1, 'name': 'default', 'title': '输出', 'class': 'crusader_female_carry'}], + }, + {'id': 1, 'name': 'inquistor', 'title': '神启·异端审判者', 'open': False}, + {'id': 2, 'name': 'sorceress', 'title': '神启·巫女', 'open': False}, + {'id': 3, 'name': 'mistress', 'title': '神启·诱魔者', 'open': False}, + {'id': 4, 'name': 'empty', 'title': ''}, + ], + }, + { + 'id': 10, + 'name': 'thief', + 'title': '暗夜使者', + 'children': [ + {'id': 0, 'name': 'rogue', 'title': '隐夜·刺客', 'open': False}, + {'id': 1, 'name': 'necro', 'title': '隐夜·死灵术士', 'open': False}, + {'id': 2, 'name': 'kunoichi', 'title': '隐夜·忍者', 'open': False}, + {'id': 3, 'name': 'shadow_dancer', 'title': '隐夜·影舞者', 'open': False}, + {'id': 4, 'name': 'empty', 'title': ''}, + ], + }, + { + 'id': 11, + 'name': 'knight', + 'title': '守护者', + 'children': [ + {'id': 0, 'name': 'elven_knight', 'title': '皓曦·精灵骑士', 'open': False}, + {'id': 1, 'name': 'chaos', 'title': '皓曦·混沌魔灵', 'open': False}, + {'id': 2, 'name': 'paladin', 'title': '皓曦·帕拉丁', 'open': False}, + {'id': 3, 'name': 'dragon_knight', 'title': '皓曦·龙骑士', 'open': False}, + {'id': 4, 'name': 'empty', 'title': ''}, + ], + }, + { + 'id': 12, + 'name': 'demonic_lancer', + 'title': '魔枪士', + 'children': [ + {'id': 0, 'name': 'vanguard', 'title': '千魂·征战者', 'open': False}, + {'id': 1, 'name': 'skirmisher', 'title': '千魂·决战者', 'open': False}, + {'id': 2, 'name': 'dragoon', 'title': '千魂·狩猎者', 'open': False}, + {'id': 3, 'name': 'impaler', 'title': '千魂·暗枪士', 'open': False}, + {'id': 4, 'name': 'empty', 'title': ''}, + ], + }, + { + 'id': 13, + 'name': 'gunblader', + 'title': '枪剑士', + 'children': [ + {'id': 0, 'name': 'hitman', 'title': '苍暮·暗刃', 'open': False}, + {'id': 1, 'name': 'agent', 'title': '苍暮·特工', 'open': False}, + {'id': 2, 'name': 'trouble_shooter', 'title': '苍暮·战线佣兵', 'open': False}, + {'id': 3, 'name': 'specialist', 'title': '苍暮·源能专家', 'open': False}, + {'id': 4, 'name': 'empty', 'title': ''}, + ], + }, + { + 'id': 14, + 'name': 'archer', + 'title': '弓箭手', + 'children': [ + {'id': 0, 'name': 'muse', 'title': '聆风·缪斯', 'open': False}, + {'id': 1, 'name': 'traveler', 'title': '聆风·旅人', 'open': False}, + {'id': 2, 'name': 'hunter', 'title': '聆风·猎人', 'open': False}, + {'id': 3, 'name': 'vigilante', 'title': '聆风·妖护使', 'open': False}, + {'id': 4, 'name': 'empty', 'title': ''}, + ], + }, + { + 'id': 15, + 'name': 'extra', + 'title': '外传', + 'children': [ + {'id': 0, 'name': 'creator', 'title': '知源·缔造者', 'open': False}, + {'id': 1, 'name': 'dark_knight', 'title': '极诣·黑暗武士', 'open': False}, + {'id': 2, 'name': 'empty', 'title': ''}, + {'id': 3, 'name': 'empty', 'title': ''}, + {'id': 4, 'name': 'empty', 'title': ''}, + ], + }, +] + + +def get_adv_list(): + for parent in adv: + parent_id = f'{parent["id"]:02}' + for child in parent['children']: + child_id = f'{child.get("id", 0):02}' + if 'options' in child: + for idx, option in enumerate(child['options']): + option['value'] = base64.b64encode(f'{parent_id}{child_id}{idx:02}'.encode()).decode() + option.pop('class', None) + else: + child['value'] = base64.b64encode(f'{parent_id}{child_id}00'.encode()).decode() + child.pop('class', None) + return adv + + +def get_adv_info(value): + value = base64.b64decode(value).decode() + parent_id, child_id, option_id = map(int, (value[:2], value[2:4], value[4:6])) + parent = next((p for p in adv if p['id'] == parent_id), None) + if not parent: + return None + child = next((c for c in parent['children'] if c.get('id', 0) == child_id), None) + if not child: + return None + if 'options' in child: + return next((o for o in child['options'] if o.get('id', 0) == option_id), None) + else: + return child if option_id == 0 else None +print(get_adv_info("MDUwMzAz")) diff --git a/backend/dataFiles/adventure-info.json b/backend/dataFiles/adventure-info.json deleted file mode 100644 index 775fc99e..00000000 --- a/backend/dataFiles/adventure-info.json +++ /dev/null @@ -1,211 +0,0 @@ -[ - { - "name": "swordman_male", - "title": "鬼剑士(男)", - "children": [ - { "title": "极诣·剑魂", "name": "weapon_master", "open": false }, - { "name": "soul_bender", "title": "极诣·鬼泣", "open": false }, - { "name": "berserker", "title": "极诣·狂战士", "open": false }, - { "name": "asura", "title": "极诣·阿修罗", "open": false }, - { "name": "ghostblade", "title": "极诣·剑影", "open": false } - ] - }, - { - "name": "swordman_female", - "title": "鬼剑士(女)", - "children": [ - { "name": "sword_master", "title": "极诣·驭剑士", "open": false }, - { "name": "dark_templar", "title": "极诣·暗殿骑士", "open": false }, - { "name": "demon_slayer", "title": "极诣·契魔者", "open": false }, - { "name": "vegabond", "title": "极诣·流浪武士", "open": false }, - { "name": "spectre", "title": "极诣·刃影", "open": false } - ] - }, - { - "name": "fighter_male", - "title": "格斗家(男)", - "children": [ - { "name": "nenmaster_male", "title": "归元·气功师", "open": false }, - { "name": "striker_male", "title": "归元·散打", "open": false }, - { "name": "brawler_male", "title": "归元·街霸", "open": false }, - { "name": "grappler_male", "title": "归元·柔道家", "open": false }, - { "name": "empty", "title": "", "comment": "首页" } - ] - }, - { - "name": "fighter_female", - "title": "格斗家(女)", - "children": [ - { "name": "nenmaster_female", "title": "归元·气功师", "open": false }, - { "name": "striker_female", "title": "归元·散打", "open": false }, - { "name": "brawler_female", "title": "归元·街霸", "open": false }, - { "name": "grappler_female", "title": "归元·柔道家", "open": false }, - { "name": "empty", "title": "", "comment": "设置" } - ] - }, - { - "name": "gunner_male", - "title": "神枪手(男)", - "children": [ - { "name": "ranger_male", "title": "重霄·漫游枪手", "open": false }, - { "name": "launcher_male", "title": "重霄·枪炮师", "open": false }, - { "name": "mechanic_male", "title": "重霄·机械师", "open": false }, - { "name": "spitfire_male", "title": "重霄·弹药专家", "open": false }, - { "name": "assault", "title": "重霄·合金战士", "open": false } - ] - }, - { - "name": "gunner_female", - "title": "神枪手(女)", - "children": [ - { "name": "ranger_female", "title": "重霄·漫游枪手", "open": false }, - { "name": "launcher_female", "title": "重霄·枪炮师", "open": false }, - { "name": "mechanic_female", "title": "重霄·机械师", "open": false }, - { "name": "spitfire_female", "title": "重霄·弹药专家", "open": true, "class": "GF.gunner_female.spitfire_female" }, - { - "name": "sponsor", - "url": "https://bbs.colg.cn", - "title": "", - "open": false - } - ] - }, - { - "name": "mage_male", - "title": "魔法师(男)", - "children": [ - { "name": "elemental_bomber", "title": "知源·元素爆破师", "open": false }, - { "name": "glacial_master", "title": "知源·冰结师", "open": false }, - { "name": "blood_mage", "title": "知源·血法师", "open": false }, - { "name": "swift_master", "title": "知源·逐风者", "open": false }, - { "name": "dimension_walker", "title": "知源·次元行者", "open": false } - ] - }, - { - "name": "mage_female", - "title": "魔法师(女)", - "children": [ - { "name": "elementalist", "title": "知源·元素师", "open": false }, - { "name": "summoner", "title": "知源·召唤师", "open": false }, - { "name": "battle_mage", "title": "知源·战斗法师", "open": false }, - { "name": "witch", "title": "知源·魔道学者", "open": false }, - { - "name": "enchantress", - "title": "知源·小魔女", - "open": false, - "options": [ - { "name": "default", "title": "奶", "class": "enchantress" }, - { "name": "default", "title": "输出", "class": "enchantress_carry" } - ] - } - ] - }, - { - "name": "priest_male", - "title": "圣职者(男)", - "children": [ - { - "name": "crusader_male", - "title": "神启·圣骑士", - "open": false, - "options": [ - { "name": "default", "title": "奶", "class": "crusader_male" }, - { "name": "default", "title": "审判", "class": "crusader_male_carry" } - ] - }, - { "name": "infighter", "title": "神启·蓝拳圣使", "open": false }, - { "name": "exorcist", "title": "神启·驱魔师", "open": false }, - { "name": "avenger", "title": "神启·复仇者", "open": false }, - { "name": "empty", "title": "" } - ] - }, - { - "name": "priest_female", - "title": "圣职者(女)", - "children": [ - { - "name": "crusader_female", - "title": "神启·圣骑士", - "open": false, - "options": [ - { "name": "default", "title": "奶", "class": "crusader_female" }, - { - "name": "default", - "title": "输出", - "class": "crusader_female_carry" - } - ] - }, - { "name": "inquistor", "title": "神启·异端审判者", "open": false }, - { "name": "sorceress", "title": "神启·巫女", "open": false }, - { "name": "mistress", "title": "神启·诱魔者", "open": false }, - { "name": "empty", "title": "" } - ] - }, - { - "name": "thief", - "title": "暗夜使者", - "children": [ - { "name": "rogue", "title": "隐夜·刺客", "open": false }, - { "name": "necro", "title": "隐夜·死灵术士", "open": false }, - { "name": "kunoichi", "title": "隐夜·忍者", "open": false }, - { "name": "shadow_dancer", "title": "隐夜·影舞者", "open": false }, - { "name": "empty", "title": "" } - ] - }, - { - "name": "knight", - "title": "守护者", - "children": [ - { "name": "elven_knight", "title": "皓曦·精灵骑士", "open": false }, - { "name": "chaos", "title": "皓曦·混沌魔灵", "open": false }, - { "name": "paladin", "title": "皓曦·帕拉丁", "open": false }, - { "name": "dragon_knight", "title": "皓曦·龙骑士", "open": false }, - { "name": "empty", "title": "" } - ] - }, - { - "name": "demonic_lancer", - "title": "魔枪士", - "children": [ - { "name": "vanguard", "title": "千魂·征战者", "open": false }, - { "name": "skirmisher", "title": "千魂·决战者", "open": false }, - { "name": "dragoon", "title": "千魂·狩猎者", "open": false }, - { "name": "impaler", "title": "千魂·暗枪士", "open": false }, - { "name": "empty", "title": "" } - ] - }, - { - "name": "gunblader", - "title": "枪剑士", - "children": [ - { "name": "hitman", "title": "苍暮·暗刃", "open": false }, - { "name": "agent", "title": "苍暮·特工", "open": false }, - { "name": "trouble_shooter", "title": "苍暮·战线佣兵", "open": false }, - { "name": "specialist", "title": "苍暮·源能专家", "open": false }, - { "name": "empty", "title": "" } - ] - }, - { - "name": "archer", - "title": "弓箭手", - "children": [ - { "name": "muse", "title": "聆风·缪斯", "open": false }, - { "name": "traveler", "title": "聆风·旅人", "open": false }, - { "name": "hunter", "title": "聆风·猎人", "open": false }, - { "name": "vigilante", "title": "聆风·妖护使", "open": false }, - { "name": "empty", "title": "" } - ] - }, - { - "name": "extra", - "title": "外传", - "children": [ - { "name": "creator", "title": "知源·缔造者", "open": false }, - { "name": "dark_knight", "title": "极诣·黑暗武士", "open": false }, - { "name": "empty", "title": "" }, - { "name": "empty", "title": "" }, - { "name": "empty", "title": "" } - ] - } -] diff --git a/frontend/src/api/calc/index.ts b/frontend/src/api/calc/index.ts index 2ceed6e3..5b4f8fe9 100644 --- a/frontend/src/api/calc/index.ts +++ b/frontend/src/api/calc/index.ts @@ -1,9 +1,10 @@ import type { IConfig } from '@/stores' import { defineRequest } from '../common' +import type { IResult } from './type' export default defineRequest((request) => { return { async calc(config: IConfig) { - const res = await request.post('/calc', config) + const res = await request.post('/calc', config) return res.data } } diff --git a/frontend/src/api/calc/type.ts b/frontend/src/api/calc/type.ts new file mode 100644 index 00000000..cbb7141a --- /dev/null +++ b/frontend/src/api/calc/type.ts @@ -0,0 +1,13 @@ +export interface IResult { + skills: IResultSkill[] +} + +export interface IResultSkill { + name: string + icon: string + lv: number + data: number + ratio: number + cd: number + damage: number +} diff --git a/frontend/src/api/common.ts b/frontend/src/api/common.ts index cbdd572e..0bb0fb79 100644 --- a/frontend/src/api/common.ts +++ b/frontend/src/api/common.ts @@ -3,6 +3,7 @@ import axios from 'axios' import { h } from 'vue' import { gzip, ungzip } from 'pako' import { useInfoStore } from '@/stores' +import { useDialog } from '@/components/hooks/dialog' // import { useAppStore, useConfigStore } from '@/store' // import { useDialog } from '@/components/hooks/dialog' @@ -80,19 +81,19 @@ export function defineRequest(fn: (ax: AxiosInstance) => T) { instance.interceptors.response.use( async (response: AxiosResponse) => { if (response.data.code === 500) { - // const { alert } = useDialog() - // await alert({ - // content: () => { - // return h( - // 'div', - // { - // class: 'justify-center text-hex-d4d6b6 text-center', - // style: 'white-space:pre-wrap;width:250px;margin:10px', - // }, - // `出现错误,可加群反馈:183439472\n${response.data.message}`, - // ) - // }, - // }) + const { alert } = useDialog() + await alert({ + content: () => { + return h( + 'div', + { + class: 'justify-center text-hex-d4d6b6 text-center', + style: 'white-space:pre-wrap;width:250px;margin:10px', + }, + `出现错误,可加群反馈:183439472\n${response.data.message}`, + ) + }, + }) } // 解密数据 if (typeof response.data.data == 'string') { diff --git a/frontend/src/api/info/type.ts b/frontend/src/api/info/type.ts index 18d2cc33..fd53222e 100644 --- a/frontend/src/api/info/type.ts +++ b/frontend/src/api/info/type.ts @@ -6,7 +6,7 @@ export interface IAdventureInfo { export interface IAlterOption { name: string title: string - class?: string + value?: string } export interface IAlterInfo { @@ -17,7 +17,7 @@ export interface IAlterInfo { options?: IAlterOption[] open?: boolean comment?: string - class?: string + value?: string } export interface ICharacterInfo { diff --git a/frontend/src/pages/Character/Forge/index.vue b/frontend/src/pages/Character/Forge/index.vue index 07d5544e..c2235773 100644 --- a/frontend/src/pages/Character/Forge/index.vue +++ b/frontend/src/pages/Character/Forge/index.vue @@ -1,39 +1,37 @@ diff --git a/frontend/src/pages/Character/Index.vue b/frontend/src/pages/Character/Index.vue index b3aa2c45..bdb7aeb1 100644 --- a/frontend/src/pages/Character/Index.vue +++ b/frontend/src/pages/Character/Index.vue @@ -8,7 +8,13 @@
- +
+ +
+ +
+ +
@@ -16,26 +22,19 @@ + + diff --git a/frontend/src/pages/Character/Result/components/Info.vue b/frontend/src/pages/Character/Result/components/Info.vue new file mode 100644 index 00000000..091b6206 --- /dev/null +++ b/frontend/src/pages/Character/Result/components/Info.vue @@ -0,0 +1,8 @@ + + + + + diff --git a/frontend/src/pages/Character/Result/components/Skill.vue b/frontend/src/pages/Character/Result/components/Skill.vue new file mode 100644 index 00000000..b5f17041 --- /dev/null +++ b/frontend/src/pages/Character/Result/components/Skill.vue @@ -0,0 +1,26 @@ + + + + + diff --git a/frontend/src/pages/Home/Index.vue b/frontend/src/pages/Home/Index.vue index e98607e6..e0ede938 100644 --- a/frontend/src/pages/Home/Index.vue +++ b/frontend/src/pages/Home/Index.vue @@ -36,7 +36,7 @@ export default defineComponent(async () => { return } else{ - return window.open("/character/" + (child.class || child.name),"_blank") + return window.open("/character/" + (child.value || child.name),"_blank") } } } diff --git a/frontend/src/pages/IndexView.vue b/frontend/src/pages/IndexView.vue index 6281455f..75bb96e1 100644 --- a/frontend/src/pages/IndexView.vue +++ b/frontend/src/pages/IndexView.vue @@ -3,7 +3,12 @@ + - + diff --git a/frontend/src/stores/config.ts b/frontend/src/stores/config.ts index dad6c0e0..19a848c4 100644 --- a/frontend/src/stores/config.ts +++ b/frontend/src/stores/config.ts @@ -102,10 +102,23 @@ export const useConfigStore = defineStore('configStore', () => { return await api.calc(config.value) } + + const result = useAsyncState( + () => { + return calc() + }, + { + skills:[] + }, + { resetOnExecute: false }, + ) + + return { config, loadConfig, saveConfig, calc, + result } })