mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2025-12-14 09:38:13 +08:00
✨ 完成选中标记&描述解析
This commit is contained in:
@@ -18,7 +18,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template #desc>
|
<template #desc>
|
||||||
<span>{{ props.modelValue.description }}</span>
|
<span v-html="parseDesc(props.modelValue.description)" />
|
||||||
</template>
|
</template>
|
||||||
</TucDetailDesc>
|
</TucDetailDesc>
|
||||||
</template>
|
</template>
|
||||||
@@ -32,6 +32,20 @@ interface TucDetailDescConstellationProps {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const props = defineProps<TucDetailDescConstellationProps>();
|
const props = defineProps<TucDetailDescConstellationProps>();
|
||||||
|
|
||||||
|
// 解析描述
|
||||||
|
function parseDesc (desc: string): string {
|
||||||
|
const reg = /<color=(.*?)>(.*?)<\/color>/g;
|
||||||
|
let match = reg.exec(desc);
|
||||||
|
while (match) {
|
||||||
|
const color = match[1];
|
||||||
|
const text = match[2];
|
||||||
|
desc = desc.replace(match[0], `<span style="color: ${color}">${text}</span>`);
|
||||||
|
match = reg.exec(desc);
|
||||||
|
}
|
||||||
|
desc = desc.replace(/\\n/g, "<br />");
|
||||||
|
return desc;
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="css" scoped>
|
<style lang="css" scoped>
|
||||||
.tuc-ddc-content {
|
.tuc-ddc-content {
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
padding: 10px;
|
padding: 10px;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
border: 2px solid var(--common-color-grey-2);
|
border: 2px solid var(--common-color-grey-2);
|
||||||
background: rgb(255 255 255 / 40%);
|
background: rgb(255 255 255 / 20%);
|
||||||
backdrop-filter: blur(20px);
|
backdrop-filter: blur(20px);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
.tuc-dd-divider {
|
.tuc-dd-divider {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 2px;
|
height: 2px;
|
||||||
background: var(--common-color-grey);
|
background: var(--common-color-grey-2);
|
||||||
margin: 5px 0;
|
margin: 5px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,15 +10,22 @@
|
|||||||
<div v-if="data" class="tuc-do-show">
|
<div v-if="data" class="tuc-do-show">
|
||||||
<!-- 左侧武器跟圣遗物 -->
|
<!-- 左侧武器跟圣遗物 -->
|
||||||
<div class="tuc-do-left">
|
<div class="tuc-do-left">
|
||||||
<div class="tuc-dol-item" @click="showDetail(data.weapon,'武器')">
|
<div
|
||||||
|
class="tuc-dol-item"
|
||||||
|
:style="{
|
||||||
|
border: selected.pos === 0 ? '2px solid var(--common-color-yellow)' : '',
|
||||||
|
}"
|
||||||
|
@click="showDetail(data.weapon,'武器',0)"
|
||||||
|
>
|
||||||
<TucDetailItemBox v-model="weaponBox" />
|
<TucDetailItemBox v-model="weaponBox" />
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="tuc-dol-item"
|
class="tuc-dol-item"
|
||||||
:style="{
|
:style="{
|
||||||
cursor: data.reliquary[1] ? 'pointer' : 'default',
|
cursor: data.reliquary[1] ? 'pointer' : 'default',
|
||||||
|
border: selected.pos === 1 ? '2px solid var(--common-color-yellow)' : '',
|
||||||
}"
|
}"
|
||||||
@click="showDetail(data.reliquary[1],'圣遗物')"
|
@click="showDetail(data.reliquary[1],'圣遗物',1)"
|
||||||
>
|
>
|
||||||
<TucDetailRelic v-model="data.reliquary[1]" pos="1" />
|
<TucDetailRelic v-model="data.reliquary[1]" pos="1" />
|
||||||
</div>
|
</div>
|
||||||
@@ -26,8 +33,9 @@
|
|||||||
class="tuc-dol-item"
|
class="tuc-dol-item"
|
||||||
:style="{
|
:style="{
|
||||||
cursor: data.reliquary[2] ? 'pointer' : 'default',
|
cursor: data.reliquary[2] ? 'pointer' : 'default',
|
||||||
|
border: selected.pos === 2 ? '2px solid var(--common-color-yellow)' : '',
|
||||||
}"
|
}"
|
||||||
@click="showDetail(data.reliquary[2],'圣遗物')"
|
@click="showDetail(data.reliquary[2],'圣遗物',2)"
|
||||||
>
|
>
|
||||||
<TucDetailRelic v-model="data.reliquary[2]" pos="2" />
|
<TucDetailRelic v-model="data.reliquary[2]" pos="2" />
|
||||||
</div>
|
</div>
|
||||||
@@ -35,8 +43,9 @@
|
|||||||
class="tuc-dol-item"
|
class="tuc-dol-item"
|
||||||
:style="{
|
:style="{
|
||||||
cursor: data.reliquary[3] ? 'pointer' : 'default',
|
cursor: data.reliquary[3] ? 'pointer' : 'default',
|
||||||
|
border: selected.pos === 3 ? '2px solid var(--common-color-yellow)' : '',
|
||||||
}"
|
}"
|
||||||
@click="showDetail(data.reliquary[3],'圣遗物')"
|
@click="showDetail(data.reliquary[3],'圣遗物',3)"
|
||||||
>
|
>
|
||||||
<TucDetailRelic v-model="data.reliquary[3]" pos="3" />
|
<TucDetailRelic v-model="data.reliquary[3]" pos="3" />
|
||||||
</div>
|
</div>
|
||||||
@@ -44,8 +53,9 @@
|
|||||||
class="tuc-dol-item"
|
class="tuc-dol-item"
|
||||||
:style="{
|
:style="{
|
||||||
cursor: data.reliquary[4] ? 'pointer' : 'default',
|
cursor: data.reliquary[4] ? 'pointer' : 'default',
|
||||||
|
border: selected.pos === 4 ? '2px solid var(--common-color-yellow)' : '',
|
||||||
}"
|
}"
|
||||||
@click="showDetail(data.reliquary[4],'圣遗物')"
|
@click="showDetail(data.reliquary[4],'圣遗物',4)"
|
||||||
>
|
>
|
||||||
<TucDetailRelic v-model="data.reliquary[4]" pos="4" />
|
<TucDetailRelic v-model="data.reliquary[4]" pos="4" />
|
||||||
</div>
|
</div>
|
||||||
@@ -53,8 +63,9 @@
|
|||||||
class="tuc-dol-item"
|
class="tuc-dol-item"
|
||||||
:style="{
|
:style="{
|
||||||
cursor: data.reliquary[5] ? 'pointer' : 'default',
|
cursor: data.reliquary[5] ? 'pointer' : 'default',
|
||||||
|
border: selected.pos === 5 ? '2px solid var(--common-color-yellow)' : '',
|
||||||
}"
|
}"
|
||||||
@click="showDetail(data.reliquary[5],'圣遗物')"
|
@click="showDetail(data.reliquary[5],'圣遗物',5)"
|
||||||
>
|
>
|
||||||
<TucDetailRelic v-model="data.reliquary[5]" pos="5" />
|
<TucDetailRelic v-model="data.reliquary[5]" pos="5" />
|
||||||
</div>
|
</div>
|
||||||
@@ -66,7 +77,10 @@
|
|||||||
v-for="item in data.constellation"
|
v-for="item in data.constellation"
|
||||||
class="tuc-dor-item"
|
class="tuc-dor-item"
|
||||||
:model-value="item"
|
:model-value="item"
|
||||||
@click="showDetail(item, '命座')"
|
:style="{
|
||||||
|
border: selected.pos === item.pos+5 ? '2px solid var(--common-color-yellow)' : '',
|
||||||
|
}"
|
||||||
|
@click="showDetail(item, '命座', item.pos+5)"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -98,6 +112,7 @@ interface ToUcDetailProps {
|
|||||||
|
|
||||||
interface ToUcDetailEmits {
|
interface ToUcDetailEmits {
|
||||||
(e: "update:modelValue", value: TGApp.Sqlite.Character.UserRole): void;
|
(e: "update:modelValue", value: TGApp.Sqlite.Character.UserRole): void;
|
||||||
|
|
||||||
(e: "cancel"): void;
|
(e: "cancel"): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -128,6 +143,7 @@ const selected = ref({
|
|||||||
| TGApp.Sqlite.Character.RoleWeapon
|
| TGApp.Sqlite.Character.RoleWeapon
|
||||||
| TGApp.Sqlite.Character.RoleReliquary,
|
| TGApp.Sqlite.Character.RoleReliquary,
|
||||||
type: "武器" || "命之座" || "圣遗物",
|
type: "武器" || "命之座" || "圣遗物",
|
||||||
|
pos: 0, // 用于标记选中的是哪个位置
|
||||||
});
|
});
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
@@ -142,6 +158,7 @@ onMounted(() => {
|
|||||||
selected.value = {
|
selected.value = {
|
||||||
data: data.value.weapon,
|
data: data.value.weapon,
|
||||||
type: "武器",
|
type: "武器",
|
||||||
|
pos: 0,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -164,11 +181,14 @@ function showDetail (
|
|||||||
TGApp.Sqlite.Character.RoleWeapon |
|
TGApp.Sqlite.Character.RoleWeapon |
|
||||||
TGApp.Sqlite.Character.RoleReliquary |
|
TGApp.Sqlite.Character.RoleReliquary |
|
||||||
false,
|
false,
|
||||||
type: string) {
|
type: string,
|
||||||
|
pos: number = 0,
|
||||||
|
) {
|
||||||
if (!item) return;
|
if (!item) return;
|
||||||
selected.value = {
|
selected.value = {
|
||||||
data: item,
|
data: item,
|
||||||
type,
|
type,
|
||||||
|
pos,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
@@ -219,7 +239,6 @@ function showDetail (
|
|||||||
width: 50%;
|
width: 50%;
|
||||||
height: 400px;
|
height: 400px;
|
||||||
position: relative;
|
position: relative;
|
||||||
//background: rgb(255 255 255 / 30%);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.tuc-do-right {
|
.tuc-do-right {
|
||||||
@@ -236,6 +255,7 @@ function showDetail (
|
|||||||
.tuc-dol-item {
|
.tuc-dol-item {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
border-radius: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 排列武器跟5个圣遗物 */
|
/* 排列武器跟5个圣遗物 */
|
||||||
|
|||||||
Reference in New Issue
Block a user