NoChildren.vue 3.5 KB
<template>
  <!-- 分类导航 -->
  <div class="mb-6">
    <div class="flex items-center mb-2">
      <h4 class="text-gray text-lg m-0">
        <i
          :id="`term-${childData.id}`"
          class="iconfont text-lg mr-2"
          :class="[`icon-${childData.icon}`]"
        ></i>
        {{ childData.label }}
      </h4>
      <div class="flex-auto"></div>
      <a
        class="hidden md:block text-xs ml-2 text-[#282a2d] hover:text-[#5961f9]"
        :href="`/category/${childData.alias}`"
        >查看更多 &gt;&gt;</a
      >
      <a
        class="md:hidden text-xs ml-2 text-[#282a2d] hover:text-[#5961f9]"
        :href="`/category/${childData.alias}`"
        >&gt;&gt;</a
      >
    </div>
  </div>
  <!-- 分类内容 -->
  <div
    class="grid grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5 md:gap-6 gap-4"
  >
    <div
      v-for="(item, index) in childData.appVos"
      :key="index"
      class="bg-white rounded-xl shadow-md overflow-hidden hover:shadow-lg transition-shadow duration-300"
    >
      <el-popconfirm
        v-if="item.isPopup == '1'"
        class="box-item"
        :title="item.popupContent"
        placement="top-start"
        icon-color="#5961f9"
        width="280"
        :icon="Promotion"
        confirm-button-text="确认前往"
        cancel-button-text="取消"
        @confirm="onConfirm(item.id)"
      >
        <template #reference>
          <a
            :href="'/details/' + item.id"
            target="_blank"
            @click.stop="onNuxtLink"
          >
            <div class="group p-3">
              <div class="flex items-start space-x-4">
                <img
                  :src="'http://aitoolht.crgx.net' + item.image"
                  :alt="item.title"
                  class="w-10 h-10 md:w-14 md:h-14 object-cover rounded-lg"
                />
                <div>
                  <h3
                    class="font-bold md:text-base text-sm line-clamp-1 text-gray-800 transition group-hover:text-[#5961f9]"
                  >
                    {{ item.title }}
                  </h3>
                  <p
                    class="text-gray-600 text-xs mt-1 md:line-clamp-2 line-clamp-1"
                  >
                    {{ item.description }}
                  </p>
                </div>
              </div>
            </div>
          </a>
        </template>
      </el-popconfirm>
      <a v-else :href="'/details/' + item.id" target="_blank">
        <div class="group p-3">
          <div class="flex items-start space-x-4">
            <img
              :src="'http://aitoolht.crgx.net' + item.image"
              :alt="item.title"
              class="w-10 h-10 md:w-14 md:h-14 object-cover rounded-lg"
            />
            <div>
              <h3
                class="font-bold md:text-base text-sm line-clamp-1 text-gray-800 transition group-hover:text-[#5961f9]"
              >
                {{ item.title }}
              </h3>
              <p
                class="text-gray-600 text-xs mt-1 md:line-clamp-2 line-clamp-1"
              >
                {{ item.description }}
              </p>
            </div>
          </div>
        </div>
      </a>
    </div>
  </div>
</template>

<script setup lang="ts">
import { Promotion } from "@element-plus/icons-vue";
defineProps<{
  childData: any;
}>();

// 阻止默认行为
function onNuxtLink(event: any) {
  event.preventDefault();
}
// 点击确认跳转
function onConfirm(id: number) {
  window.open(`/details/${id}`);
}
</script>