import { css } from "@linaria/core";

import Image from "@/components/Image";
import { useArticle } from "@/modules";
import { ArrowRightOutlined } from "@ant-design/icons-vue";
import { Empty } from "ant-design-vue";
import dayjs from "dayjs";
import { defineComponent, onMounted, reactive } from "vue";
import { RouterLink, useRouter } from "vue-router";
export default defineComponent({
  setup() {
    const storeArt = useArticle();
    const router = useRouter();
    const categoryId = "6464b7398dcb7ddb98b57a60";
    const state = reactive({
      list: [],
    });

    onMounted(() => {
      getList();
    });

    const getList = async () => {
      const query = {
        page: 1,
        size: 4,
        query: JSON.stringify({ cid: categoryId }),
      };
      const res = await storeArt.getArticleList(query);
      const list = res.list || [];
      state.list = list;
    };
    const turnPage = (aid: string) => {
      router.push({
        name: "article",
        params: { id: categoryId },
        query: { aid },
      });
    };
    const renderTitle = (title?: string) => {
      if (title && title.length > 30) {
        return title.substring(0, 30) + "...";
      }
      return title;
    };
    return () => (
      <div class={[page, "home_lay_item_box"]}>
        <div class={"global_w"}>
          <div class={"home_lay_title white "}>
            科研创作<span>/</span>
            <span>Scientific Research</span>
          </div>
          {state.list.length > 0 ? (
            <div class={"tab_list"}>
              {state.list.map((e: ArticleItem) => {
                return (
                  <div class={"list_item"}>
                    <div
                      class={"item"}
                      onClick={() => {
                        turnPage(e._id);
                      }}
                    >
                      <div class={"list_img"}>
                        <Image src={e.cover} />
                      </div>
                      <div class={"info_box"}>
                        <div class={"item_tit"}>{renderTitle(e.title)}</div>
                        <div class={"item_desc"}>{e.summary + "..."}</div>
                        <div class={"item_date"}>
                          {dayjs(e.createTime).format("YYYY.MM.DD")}
                        </div>
                      </div>
                    </div>
                  </div>
                );
              })}
            </div>
          ) : (
            <div class={"ant-list-empty-text"}>
              <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} />
            </div>
          )}

          <div class={"list_more"}>
            <RouterLink to={`/detail/${categoryId}`}>
              查看更多
              <ArrowRightOutlined class={"arrow"} />
            </RouterLink>
          </div>
        </div>
      </div>
    );
  },
});
const page = css`
  position: relative;
  background: url("@/assets/bg_research.png") no-repeat center top/100% auto;
  .tab_list {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 24px;
    .list_item {
      width: 100%;
      background-color: #fff;
      overflow: hidden;
      position: relative;
      .item {
        position: relative;
        display: block;
        border-bottom: 2px solid rgba(159, 159, 159, 0.5);
        cursor: pointer;
        &::before {
          content: "";
          position: absolute;
          bottom: 0;
          right: 0;
          border-width: 6px;
          border-color: transparent rgba(159, 159, 159, 0.5)
            rgba(159, 159, 159, 0.5) transparent;
        }
        &::after {
          content: "";
          position: absolute;
          bottom: -2px;
          right: 0;
          width: 0;
          height: 2px;
          background-color: var(--vt-c-primary);
          transition: width 0.3s ease-in-out;
        }
        &:hover {
          &::before {
            border-color: transparent var(--vt-c-primary) var(--vt-c-primary)
              transparent;
          }
          &::after {
            width: 100%;
          }
          img {
            transform: scale(1.2);
          }
        }
      }
      .list_img {
        width: 100%;
        height: 390px;
        overflow: hidden;
      }
      img {
        width: 100%;
        height: 390px;
        object-fit: cover;
        transition: all 0.3s ease-in-out;
      }
      .info_box {
        padding: 20px 18px;
      }
      .item_tit {
        height: 56px;
        font-size: 20px;
        line-height: 28px;
        color: #333333;
        overflow: hidden;
      }
      .item_desc {
        margin-top: 20px;
        font-size: 16px;
        line-height: 24px;
        font-weight: 400;
        color: #666666;
        word-break: break-all;
      }
      .item_date {
        font-size: 14px;
        margin-top: 30px;
        font-weight: 300;
        color: #999999;
      }
    }
  }
  .list_more {
    margin-top: 35px;
    text-align: center;
    a {
      color: var(--vt-c-primary);
    }
    .arrow {
      margin-left: 8px;
      padding: 2px;
      border: 1px solid var(--vt-c-primary);
      font-size: 12px;
      border-radius: 50%;
    }
  }
`;
