daikins/.svn/pristine/d9/d92c1e81b3799b4419288e37588...

291 lines
7.8 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!-- 外部情报 > 情报详情 -->
<script setup lang="ts">
import AppBlock from "@/components/AppBlock.vue";
import AppNewsBox from "@/components/AppNewsBox.vue";
import Layout from "./components/Layout.vue";
import DetailNews from "./DetailNews.vue";
import {
getArticleDetail,
getArticlePage,
getManagerDetail,
} from "@/api/daikin/base";
import { message } from "@/utils/message";
const { push } = useRouter();
const route = useRoute();
const SideNews = [
{ key: "IntelligenceOutside", name: "社外情报" },
{ key: "IntelligenceWithin", name: "社内情报" },
];
const state = ref<any>({});
async function getData() {
const { id, flag } = route.params;
console.log(typeof(flag))
if (!id) return;
if (flag==='true') {
// 驳回&撤回
const { data } = await getManagerDetail(id as string);
data.tagColor = data.tag === "紧急" ? "#e60e0e" : "#2cba06";
data.content = unescapeHTML(data.content);
state.value = data;
} else {
const { data } = await getArticleDetail(id as string);
data.tagColor = data.tag === "紧急" ? "#e60e0e" : "#2cba06";
data.content = unescapeHTML(data.content);
state.value = data;
}
}
function unescapeHTML(html: string) {
const doc = new DOMParser().parseFromString(html, "text/html");
return doc.documentElement.textContent;
}
async function getDatas(id: string) {
if (!id) return;
const { data } = await getArticleDetail(id as string);
data.content = unescapeHTML(data.content);
state.value = data;
}
async function toDetail2(n: { id: any }) {
console.log(route, route.path, n.id);
if (n.id === 0) return;
if (n.isSelect === 1) {
getDatas(n.id);
} else {
message.info("您没有权限查看!");
}
}
getData();
getPageList(1);
getPageLists(1);
const neiScoll = ref<HTMLElement | null>(null);
const waiScoll = ref<HTMLElement | null>(null);
onMounted(() => {
neiScoll.value?.addEventListener("scroll", handleNeiScoll);
waiScoll.value?.addEventListener("scroll", handlewaiScoll);
});
const listData = ref<any[]>([]);
let neiLength: number;
let neiPum = 1;
async function getPageList(page) {
const pasr = {
pageNum: page,
pageSize: 6,
type: 2,
position: "recommend",
};
const { rows, total } = await getArticlePage(pasr);
neiLength = total / 6;
listData.value.push(...rows);
console.log(listData.value);
}
const listDatas = ref<any[]>([]);
let waiLength: number;
let waiPum = 1;
async function getPageLists(page) {
const pasr = {
pageNum: page,
pageSize: 6,
type: 1,
position: "recommend",
};
const { rows, total } = await getArticlePage(pasr);
waiLength = total / 6;
listDatas.value.push(...rows);
}
const handleNeiScoll = () => {
const container = neiScoll.value;
if (container) {
const isAtBottom =
container.scrollHeight - container.scrollTop === container.clientHeight;
if (isAtBottom) {
if (neiPum < neiLength) {
++neiPum;
getPageList(neiPum);
}
}
}
};
const handlewaiScoll = () => {
const container = waiScoll.value;
if (container) {
const isAtBottom =
container.scrollHeight - container.scrollTop === container.clientHeight;
if (isAtBottom) {
if (waiPum < waiLength) {
++waiPum;
getPageList(waiPum);
}
}
}
};
</script>
<template>
<Layout>
<div class="page-wrap h-834px">
<div class="page-main">
<AppBlock class="h-full">
<div class="overflow-y-auto h-full">
<div class="px46px py40px">
<DetailNews
:title="state.title"
:content="state.content"
:publishTime="state.publishTime"
:tag="state.tag"
:tagColor="state.tagColor"
:source="state.source"
/>
</div>
</div>
</AppBlock>
</div>
<div class="page-side">
<AppBlock class="h-400px">
<div class="box h-full">
<div
class="box-title flex items-center"
@click="push({ name: 'IntelligenceWithin' })"
>
<span class="flex-1">社内情报</span>
<span></span>
</div>
<div ref="neiScoll" class="box-content overflow-y-auto px22px">
<div class="py13px line" v-for="i in listData" :key="i">
<!-- <AppNewsBox @click="toDetail2(i)"
class="!lh-2em"
:labelText="i.tag"
labelColor="#2cba06"
:text="i.title"
:date="i.publishTime"
size="h20px"
/> -->
<div class="flex" @click="toDetail2(i)">
<img
v-if="i.tag === 'New'"
src="../../../assets/images/NEW3.gif"
class="h20px"
/>
<img
v-if="i.tag === '紧急'"
src="../../../assets/images/jj.gif"
class="h20px"
/>
<div class="ml5px leading-4.5 max-w300px overflow-ellipsis">
{{ i.title }}
</div>
</div>
<div class="text-#808696 text-right">{{ i.publishTime }}</div>
</div>
</div>
</div>
</AppBlock>
</div>
<div class="page-side">
<AppBlock class="h-400px">
<div class="box h-full">
<div
class="box-title flex items-center"
@click="push({ name: 'IntelligenceOutside' })"
>
<span class="flex-1">社外情报</span>
<span></span>
</div>
<div ref="waiScoll" class="box-content overflow-y-auto px22px">
<div class="py13px line" v-for="i in listDatas" :key="i">
<!-- <AppNewsBox @click="toDetail2(i)"
class="!lh-2em"
:labelText="i.tag"
labelColor="#2cba06"
:text="i.title"
:date="i.publishTime"
size="h20px"
/> -->
<div class="flex" @click="toDetail2(i)">
<img
v-if="i.tag === 'New'"
src="../../../assets/images/NEW3.gif"
class="h20px"
/>
<img
v-if="i.tag === '紧急'"
src="../../../assets/images/jj.gif"
class="h20px"
/>
<div class="ml5px leading-4.5 max-w300px overflow-ellipsis">
{{ i.title }}
</div>
</div>
<div class="text-#808696 text-right mt8px">
{{ i.publishTime }}
</div>
</div>
</div>
</div>
</AppBlock>
</div>
</div>
</Layout>
</template>
<style scoped lang="less">
.overflow-ellipsis {
white-space: nowrap; /* 防止换行 */
overflow: hidden; /* 隐藏溢出部分 */
text-overflow: ellipsis; /* 显示省略号 */
}
.page-wrap {
display: grid;
grid-template-columns: 1fr 314px;
grid-template-rows: repeat(2, 1fr);
grid-column-gap: 30px;
grid-row-gap: 30px;
.page-main {
height: 830px;
grid-area: 1 / 1 / 3 / 2;
width: 100%;
}
.page-side {
height: 100%;
grid-area: 1 / 2 / 2 / 3;
&:last-of-type {
height: 300px;
grid-area: 2 / 2 / 3 / 3;
}
}
}
.box {
--title-h: 58px;
border: 0;
.box-title {
height: var(--title-h);
color: #fff;
background-color: #537deb;
font-size: 18px;
font-weight: 600;
padding: 0 24px;
cursor: pointer;
}
.box-content {
height: 100%;
max-height: calc(100% - var(--title-h));
}
}
.line {
border-bottom: 1px solid #eef3fb;
}
</style>