diff --git a/h5/pages/posts/posts/src/list1.vue b/h5/pages/posts/posts/src/list1.vue index d25ce21..e54d46b 100644 --- a/h5/pages/posts/posts/src/list1.vue +++ b/h5/pages/posts/posts/src/list1.vue @@ -5,6 +5,9 @@ * date:2024年9月11日 19:24:50 */ import { + watch, + computed, + onMounted, ref } from 'vue' import { @@ -34,6 +37,54 @@ default: 1 } }); + const search_input = ref('') + const posts_list = ref([]) + const posts_list_show = computed(() => { + if (!!search_input.value) { + let list = [] + for (let i in posts_list.value) { + if (posts_list.value[i].title.includes(search_input.value)) { + list.push(posts_list.value[i]) + } + } + return list + } else { + return posts_list.value + } + }) + const htmlToText = (content) => { + return content + } + const getDetail = async (item, key) => { + const response = await $api('ArticleGetDetail', { + id: item.id + }) + $response(response, () => { + posts_list.value[key].content = htmlToText(response.data.info.content) + }) + } + + const contentShow = (info, key) => { + posts_list.value[key].open = !posts_list.value[key].open + if (posts_list.value[key].open && !posts_list.value[key].content) { + getDetail(info, key) + } + } + + watch( + () => $props.list, + () => { + posts_list.value = JSON.parse(JSON.stringify($props.list)).map((item) => { + return { + content: '', + ...item, + open: false + } + }) + }, { + immediate: true + } + )