♻️ defineModel

This commit is contained in:
目棃
2024-12-31 16:40:18 +08:00
parent 151f854fd3
commit f801363440
27 changed files with 1085 additions and 1151 deletions

View File

@@ -54,25 +54,19 @@
<script lang="ts" setup>
import TOverlay from "@comp/app/t-overlay.vue";
import VpOverlaySearch from "@comp/viewPost/vp-overlay-search.vue";
import { computed, ref } from "vue";
import { ref } from "vue";
import { AppAchievementSeriesData } from "@/data/index.js";
import TGLogger from "@/utils/TGLogger.js";
type ToAchiInfoProps = { modelValue: boolean; data: TGApp.Sqlite.Achievement.RenderAchi };
type ToAchiInfoEmits = {
(e: "update:modelValue", v: boolean): void;
(e: "select-series", v: number): void;
};
type ToAchiInfoProps = { data: TGApp.Sqlite.Achievement.RenderAchi };
type ToAchiInfoEmits = (e: "select-series", v: number) => void;
const props = defineProps<ToAchiInfoProps>();
const emits = defineEmits<ToAchiInfoEmits>();
const visible = defineModel<boolean>();
const showSearch = ref<boolean>(false);
const search = ref<string>();
const visible = computed<boolean>({
get: () => props.modelValue,
set: (v) => emits("update:modelValue", v),
});
async function searchDirect(word: string): Promise<void> {
await TGLogger.Info(`[ToAchiInfo][${props.data.id}][Search] 查询 ${word}`);

View File

@@ -38,14 +38,11 @@ import { AppAchievementSeriesData } from "@/data/index.js";
import { timestampToDate } from "@/utils/toolFunc.js";
type TuaAchiProps = { modelValue: TGApp.Sqlite.Achievement.RenderAchi };
type TuaAchiEmits = {
(e: "update:modelValue", data: TGApp.Sqlite.Achievement.RenderAchi): void;
(e: "update:update", data: boolean): void;
(e: "select-achi", data: TGApp.Sqlite.Achievement.RenderAchi): void;
};
type TuaAchiEmits = (e: "select-achi", data: TGApp.Sqlite.Achievement.RenderAchi) => void;
const props = defineProps<TuaAchiProps>();
const emits = defineEmits<TuaAchiEmits>();
const model = defineModel<TGApp.Sqlite.Achievement.RenderAchi>();
const data = ref<TGApp.Sqlite.Achievement.RenderAchi>(toRaw(props.modelValue));
watch(
@@ -69,7 +66,7 @@ async function setAchiStat(stat: boolean): Promise<void> {
if (!stat) {
data.value.isCompleted = false;
await TSUserAchi.updateAchi(data.value);
emits("update:modelValue", data.value);
model.value = data.value;
await event.emit("updateAchi", data.value.series);
showSnackbar.success(`已将成就 ${data.value.name}(${data.value.id}) 状态设为未完成`);
return;
@@ -80,7 +77,7 @@ async function setAchiStat(stat: boolean): Promise<void> {
return;
}
if (progress === undefined) progress = data.value.progress.toString();
if (isNaN(Number(progress)) || progress === "0") {
if (isNaN(Number(progress))) {
showSnackbar.warn("请输入有效数字!");
return;
}
@@ -90,7 +87,7 @@ async function setAchiStat(stat: boolean): Promise<void> {
await TSUserAchi.updateAchi(data.value);
await event.emit("updateAchi", data.value.series);
showSnackbar.success(`已将成就 ${data.value.name}(${data.value.id}) 状态设为已完成`);
emits("update:modelValue", data.value);
model.value = data.value;
}
</script>
<style lang="css" scoped>