diff --git a/frontend/src/components/calc/tab/index.vue b/frontend/src/components/calc/tab/index.vue index 11fb93b9..52393709 100644 --- a/frontend/src/components/calc/tab/index.vue +++ b/frontend/src/components/calc/tab/index.vue @@ -6,6 +6,14 @@ export default defineComponent({ name: 'CalcTab', props: { ...selectionProps, + value: { + type: [String, Number], + default: '', + }, + disabled: { + type: Boolean, + default: false, + }, }, setup(props, { slots }) { return () => { diff --git a/frontend/src/components/calc/tabs/index.vue b/frontend/src/components/calc/tabs/index.vue index db807be5..610a40d0 100644 --- a/frontend/src/components/calc/tabs/index.vue +++ b/frontend/src/components/calc/tabs/index.vue @@ -131,6 +131,11 @@ export default defineComponent({ height: 22px; // color: #ffb400; } + + &.disabled{ + filter: grayscale(100%); + cursor: not-allowed; + } } } diff --git a/frontend/src/pages/Character/Skill/components/SkillDetail/index.tsx b/frontend/src/pages/Character/Skill/components/SkillDetail/index.tsx index 5c6fb254..6257e16a 100644 --- a/frontend/src/pages/Character/Skill/components/SkillDetail/index.tsx +++ b/frontend/src/pages/Character/Skill/components/SkillDetail/index.tsx @@ -1,6 +1,8 @@ import { asyncComputed } from '@vueuse/core' import api from '@/api' import './style.scss' +import CalcTabs from '@/components/calc/tabs/index.vue' +import CalcTab from '@/components/calc/tab/index.vue' export default defineComponent({ name: 'SkillDetail', @@ -24,6 +26,8 @@ export default defineComponent({ return res }) + const curTab = ref(0) + const basic = computed(() => !skillInfo.value ? [] @@ -79,38 +83,87 @@ export default defineComponent({ return details || [] }) + const renderSkillDetail = () => ( + <> +
基本信息
+
+ {basic.value.map( + (item) => + !!item.value && ( +
+ {item.label} + {item.value} +
+ ), + )} +
+
技能描述
+
+
+ {desc.value?.map((item) => ( + {item} + ))} +
+
+
技能属性
+
+
+ {detail.value?.map((item) => ( +
+ ))} +
+
+ + ) + + const renderSkillVp = () => ( + <> +
+
+ {skillInfo.value?.evolution?.map((item) => ( + <> +
+
{item.name}
+
技能描述
+
+
+ {item.descDetail} +
+
+
+ + ))} +
+
+ + ) + + onMounted(() => { + watchEffect(() => { + skillInfo.value?.evolution?.length == 0 && (curTab.value = 0) + }) + }) + return () => ( <>
{skillInfo.value?.name}
-
基本信息
-
- {basic.value.map( - (item) => - !!item.value && ( -
- {item.label} - {item.value} -
- ), - )} -
-
技能描述
-
-
- {desc.value?.map((item) => ( - {item} - ))} -
-
-
技能属性
-
-
- {detail.value?.map((item) => ( -
- ))} -
+
+ + + 原技能描述 + + + 技能进化描述 + +
+ {curTab.value === 0 && renderSkillDetail()} + {curTab.value === 1 && renderSkillVp()}
) diff --git a/frontend/src/pages/Character/Skill/components/SkillDetail/style.scss b/frontend/src/pages/Character/Skill/components/SkillDetail/style.scss index 5ad5d202..a4e01e5e 100644 --- a/frontend/src/pages/Character/Skill/components/SkillDetail/style.scss +++ b/frontend/src/pages/Character/Skill/components/SkillDetail/style.scss @@ -32,6 +32,39 @@ } } +.skill_vp_title { + border-width: 1px; + border-style: solid; + border-image-source: linear-gradient(90deg, #691b86 0%, #2e302e 100%); + border-image-slice: 1; + display: flex; + align-items: center; + justify-content: center; + position: relative; + height: 18px; + z-index: 5; + transform-style: preserve-3d; + color: #9443BE; + &::before { + width: 100%; + position: absolute; + content: ''; + height: 50%; + bottom: 0; + background: linear-gradient(90deg, #3a0f47 0%, #121212 100%); + transform: translateZ(-1px); + } + + &::after { + width: 100%; + position: absolute; + content: ''; + height: 50%; + top: 0; + background: linear-gradient(90deg, #1e0b24 0%, #171717 100%); + transform: translateZ(-1px); + } +} .title{ border: 1px solid #3e4040; diff --git a/frontend/src/pages/Character/Skill/index.vue b/frontend/src/pages/Character/Skill/index.vue index f9774b87..525bbb47 100644 --- a/frontend/src/pages/Character/Skill/index.vue +++ b/frontend/src/pages/Character/Skill/index.vue @@ -52,7 +52,7 @@
-
+
{ const skill = infoStore.skills.find(skill => skill.uuid === curSkillId.value)