main
wwl 2024-04-22 16:57:15 +08:00
parent 15dd70be73
commit 6537b15aca
8 changed files with 800 additions and 713 deletions

View File

@ -1,21 +1,27 @@
<script setup lang="ts"> <script setup lang="ts">
import { isNotOneWeekAgo } from '@/utils'
const props = defineProps({ const props = defineProps({
date: String, date: String,
text: String, text: String,
top:String, top: String,
labelText: String, labelText: String,
labelColor: String, labelColor: String,
size:String, size: String,
isRead:Number isRead: Number,
publishTime: String
}) })
</script> </script>
<template> <template>
<div class="date-wrapper" :data-date="date"> <div class="date-wrapper" :data-date="date">
<!-- <img v-if="labelText === 'New'" src="../assets/images/NEW3.gif" :class="size || []" /> -->
<img v-if="labelText ==='New'" src="../assets/images/NEW3.gif" :class="size||[]"/> <img
<img v-if="labelText ===''" src="../assets/images/jj.gif" :class="size||[]"/> v-if="isNotOneWeekAgo(publishTime) && labelText !== '紧急'"
<span :style="isRead===2?'color:#0058E5;font-weight:800':''">{{ text }}</span> src="../assets/images/NEW3.gif"
:class="size || []"
/>
<img v-if="labelText === ''" src="../assets/images/jj.gif" :class="size || []" />
<span :style="isRead === 2 ? 'color:#0058E5;font-weight:800' : ''">{{ text }}</span>
<!-- <span class="invisible">{{ date }}</span> --> <!-- <span class="invisible">{{ date }}</span> -->
</div> </div>
</template> </template>

View File

@ -6,11 +6,11 @@ import DetailNews from './DetailNews.vue'
import DetailNew from './DetailNew.vue' import DetailNew from './DetailNew.vue'
import DetailNew1 from './DetailNew1.vue' import DetailNew1 from './DetailNew1.vue'
import { import {
getArticleDetail, getArticleDetail,
faqDetail, faqDetail,
demandDetail, demandDetail,
trendsDetail, trendsDetail,
externalList externalList
} from '@/api/daikin/base' } from '@/api/daikin/base'
import HomeHead from '@/views/home/components/HomeHead.vue' import HomeHead from '@/views/home/components/HomeHead.vue'
import { useDate } from '@/views/home/hooks/useDate' import { useDate } from '@/views/home/hooks/useDate'
@ -18,79 +18,79 @@ const { push } = useRouter()
const route = useRoute() const route = useRoute()
const { day, week } = useDate() const { day, week } = useDate()
const SideNews = [ const SideNews = [
{ key: 'IntelligenceOutside', name: '社外情报' }, { key: 'IntelligenceOutside', name: '社外情报' },
{ key: 'IntelligenceWithin', name: '社内情报' } { key: 'IntelligenceWithin', name: '社内情报' }
] ]
const types = ref() const types = ref()
const state = ref<any>({}) const state = ref<any>({})
async function getData() { async function getData() {
const { id, type } = route.params const { id, type } = route.params
if (!id || !type) return if (!id || !type) return
types.value = type types.value = type
// console.log(types.value) // console.log(types.value)
if (type == 1) { if (type == 1) {
const { data } = await faqDetail({ id }) const { data } = await faqDetail({ id })
state.value = data state.value = data
} else if (type == 2) { } else if (type == 2) {
const { data } = await demandDetail({ id }) const { data } = await demandDetail({ id })
state.value = data state.value = data
} else { } else {
const { data } = await trendsDetail({ id }) const { data } = await trendsDetail({ id })
data.tagColor = data.tag === '紧急' ? '#e60e0e' : '#2cba06' data.tagColor = data.tag === '紧急' ? '#e60e0e' : '#2cba06'
data.content = unescapeHTML(data.content) data.content = unescapeHTML(data.content)
state.value = data state.value = data
} }
} }
function unescapeHTML(html: string) { function unescapeHTML(html: string) {
const doc = new DOMParser().parseFromString(html, 'text/html') const doc = new DOMParser().parseFromString(html, 'text/html')
return doc.documentElement.textContent return doc.documentElement.textContent
} }
getData() getData()
const goBack = () => { const goBack = () => {
history.back() history.back()
} }
</script> </script>
<template> <template>
<div class="page"> <div class="page">
<HomeHead class="top"> <HomeHead class="top">
<!-- <template #content> <!-- <template #content>
<HomeHeadSearch /> <HomeHeadSearch />
</template> --> </template> -->
</HomeHead> </HomeHead>
<div class="back" @click="goBack"></div> <div class="back" @click="goBack"></div>
<div class="h-full flex ml30px"> <div class="h-full flex ml30px">
<div class="font-600 flex items-end mt30px"> <div class="font-600 flex items-end mt30px">
<div class="text-36px">详情</div> <div class="text-36px">详情</div>
<div class="text-18px ml40px mr25px">{{ day }}</div> <div class="text-18px ml40px mr25px">{{ day }}</div>
<div class="text-18px">{{ week }}</div> <div class="text-18px">{{ week }}</div>
</div> </div>
</div> </div>
<div class="page-wrap h-834px mt60px" style="grid-template-columns: 1fr"> <div class="page-wrap h-834px mt60px" style="grid-template-columns: 1fr">
<div class="page-main" style="padding: 0 30px"> <div class="page-main" style="padding: 0 30px">
<AppBlock class="h-full"> <AppBlock class="h-full">
<div class="overflow-y-auto h-full"> <div class="overflow-y-auto h-full">
<div class="px46px py40px"> <div class="px46px py40px">
<DetailNews <DetailNews
v-if="types == 3" v-if="types == 3"
:title="state.title" :title="state.title"
:content="state.content" :content="state.content"
:publishTime="state.publishTime" :publishTime="state.publishTime"
:tag="state.tag" :tag="state.tag"
:tagColor="state.tagColor" :tagColor="state.tagColor"
:source="state.source" :source="state.source"
:chatVOList="state.chatVOList" :chatVOList="state.chatVOList"
/> />
<DetailNew v-if="types == 2" :dataList="state" /> <DetailNew v-if="types == 2" :dataList="state" />
<DetailNew1 v-if="types == 1" :dataList="state"></DetailNew1> <DetailNew1 v-if="types == 1" :dataList="state"></DetailNew1>
</div> </div>
</div> </div>
</AppBlock> </AppBlock>
</div> </div>
<!-- <div class="page-side" v-for="item in SideNews" :key="item.key"> <!-- <div class="page-side" v-for="item in SideNews" :key="item.key">
<AppBlock class="h-400px"> <AppBlock class="h-400px">
<div class="box h-full"> <div class="box h-full">
<div class="box-title flex items-center" @click="push({ name: item.key })"> <div class="box-title flex items-center" @click="push({ name: item.key })">
@ -111,87 +111,87 @@ const goBack = () => {
</div> </div>
</AppBlock> </AppBlock>
</div>--> </div>-->
</div> </div>
</div> </div>
</template> </template>
<style scoped lang="less"> <style scoped lang="less">
.back { .back {
position: absolute; position: absolute;
top: 25px; top: 25px;
left: 25px; left: 25px;
color: #fff; color: #fff;
// z-index: 500; // z-index: 500;
font-size: 25px; font-size: 25px;
font-weight: bold; font-weight: bold;
text-align: center; text-align: center;
justify-content: center; justify-content: center;
} }
.top { .top {
right: 30px; right: 30px;
top: 0px; top: 0px;
} }
.page { .page {
width: 100%; width: 100%;
// height: 100px; // height: 100px;
font-family: 'PingFang SC'; font-family: 'PingFang SC';
user-select: none; user-select: none;
background-image: url('@/assets/images/bg.jpg'); background-image: url('@/assets/images/bg.jpg');
background-color: #000; background-color: #000;
background-position: 0 0; background-position: 0 0;
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: cover; background-size: cover;
color: #fff; color: #fff;
line-height: 1; line-height: 1;
.page-wrap { .page-wrap {
display: grid; display: grid;
grid-template-columns: 1fr 314px; grid-template-columns: 1fr 314px;
grid-template-rows: repeat(2, 1fr); grid-template-rows: repeat(2, 1fr);
grid-column-gap: 30px; grid-column-gap: 30px;
grid-row-gap: 30px; grid-row-gap: 30px;
.page-main { .page-main {
height: 830px; height: 830px;
grid-area: 1 / 1 / 3 / 2; grid-area: 1 / 1 / 3 / 2;
} }
.page-side { .page-side {
height: 100%; height: 100%;
grid-area: 1 / 2 / 2 / 3; grid-area: 1 / 2 / 2 / 3;
&:last-of-type { &:last-of-type {
height: 300px; height: 300px;
grid-area: 2 / 2 / 3 / 3; grid-area: 2 / 2 / 3 / 3;
} }
} }
} }
} }
.main { .main {
background-image: url('@/assets/images/bg-rs-main.svg'); background-image: url('@/assets/images/bg-rs-main.svg');
background-position: 0 0; background-position: 0 0;
background-repeat: repeat-x; background-repeat: repeat-x;
background-size: auto; background-size: auto;
} }
.box { .box {
--title-h: 58px; --title-h: 58px;
border: 0; border: 0;
.box-title { .box-title {
height: var(--title-h); height: var(--title-h);
color: #fff; color: #fff;
background-color: #537deb; background-color: #537deb;
font-size: 18px; font-size: 18px;
font-weight: 600; font-weight: 600;
padding: 0 24px; padding: 0 24px;
cursor: pointer; cursor: pointer;
} }
.box-content { .box-content {
height: 100%; height: 100%;
max-height: calc(100% - var(--title-h)); max-height: calc(100% - var(--title-h));
} }
} }
.line { .line {
border-bottom: 1px solid #eef3fb; border-bottom: 1px solid #eef3fb;
} }
</style> </style>

View File

@ -107,21 +107,21 @@ const codePath: any = {
const toDetail2 = (n: any) => { const toDetail2 = (n: any) => {
console.log(n) console.log(n)
if (n.id === 0) return if (n.id === 0) return
if (n.isSelect === 1) { // if (n.isSelect === 1) {
if (n.moduleCode === 'App_Database') { if (n.moduleCode === 'App_Database') {
return push('/DataBase?id=' + n.cateId) return push('/DataBase?id=' + n.cateId)
}
if (n.moduleCode === 'App_Article') {
return push('/Home/intelligence/')
}
const { moduleCode, id, cateId } = n
const { modulePath, path } = codePath[moduleCode]
push(modulePath)
// push(`/intelligence/${n.type == 2 ? 'within' : 'outside'}/` + n.id)
} else {
message.info('您没有权限查看!')
} }
if (n.moduleCode === 'App_Article') {
return push('/Home/intelligence/')
}
const { moduleCode, id, cateId } = n
const { modulePath, path } = codePath[moduleCode]
push(modulePath)
// push(`/intelligence/${n.type == 2 ? 'within' : 'outside'}/` + n.id)
// } else {
// message.info('!')
// }
} }
const downloads = (data: any = {}) => { const downloads = (data: any = {}) => {

View File

@ -6,6 +6,7 @@ import Layout from './components/Layout.vue'
import DetailNews from './DetailNews.vue' import DetailNews from './DetailNews.vue'
import { getArticleDetail, getArticlePage, getManagerDetail, report } from '@/api/daikin/base' import { getArticleDetail, getArticlePage, getManagerDetail, report } from '@/api/daikin/base'
import { message } from '@/utils/message' import { message } from '@/utils/message'
import { isNotOneWeekAgo } from '@/utils'
const { push } = useRouter() const { push } = useRouter()
const route = useRoute() const route = useRoute()
@ -161,7 +162,12 @@ const handlewaiScoll = () => {
size="h20px" size="h20px"
/> --> /> -->
<div class="flex" @click="toDetail2(i)"> <div class="flex" @click="toDetail2(i)">
<img v-if="i.tag === 'New'" src="../../../assets/images/NEW3.gif" class="h20px" /> <!-- <img v-if="i.tag === 'New'" src="../../../assets/images/NEW3.gif" class="h20px" /> -->
<img
v-if="i.tag !== '紧急' && isNotOneWeekAgo(i.publishTime)"
src="../../../assets/images/NEW3.gif"
class="h20px"
/>
<img v-if="i.tag === ''" src="../../../assets/images/jj.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"> <div class="ml5px leading-4.5 max-w300px overflow-ellipsis">
{{ i.title }} {{ i.title }}
@ -192,7 +198,12 @@ const handlewaiScoll = () => {
/> --> /> -->
<div class="flex" @click="toDetail2(i)"> <div class="flex" @click="toDetail2(i)">
<img v-if="i.tag === 'New'" src="../../../assets/images/NEW3.gif" class="h20px" /> <!-- <img v-if="i.tag === 'New'" src="../../../assets/images/NEW3.gif" class="h20px" /> -->
<img
v-if="i.tag !== '紧急' && isNotOneWeekAgo(i.publishTime)"
src="../../../assets/images/NEW3.gif"
class="h20px"
/>
<img v-if="i.tag === ''" src="../../../assets/images/jj.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"> <div class="ml5px leading-4.5 max-w300px overflow-ellipsis">
{{ i.title }} {{ i.title }}

View File

@ -8,14 +8,20 @@ const props = defineProps({
tag: String, tag: String,
tagColor: String, tagColor: String,
source: String, source: String,
publishTime: String, publishTime: String
}) })
</script> </script>
<template> <template>
<div class="news-wrapper"> <div class="news-wrapper">
<h1 class="title" v-if="title"> <h1 class="title" v-if="title">
<AppNewsBox :labelText="tag" :labelColor="tagColor" :text="title" :size="tag==='New'?'h20px':'h30px'" class="text-35px"/> <AppNewsBox
:labelText="tag"
:labelColor="tagColor"
:text="title"
:size="tag === 'New' ? 'h20px' : 'h30px'"
class="text-35px"
/>
</h1> </h1>
<h2 class="sub-title"> <h2 class="sub-title">
<span v-if="source">{{ source }} </span> <span v-if="source">{{ source }} </span>
@ -49,9 +55,10 @@ const props = defineProps({
// max-width: 500px; // max-width: 500px;
border-radius: 6px; border-radius: 6px;
margin-bottom: 24px; margin-bottom: 24px;
max-width: 1060px;
} }
:deep(p) { :deep(p) {
text-indent: 2em; // text-indent: 2em;
} }
} }
</style> </style>

View File

@ -100,6 +100,7 @@ report({ moduleCode: 'App_Article' })
labelColor="#2cba06" labelColor="#2cba06"
:size="item.tag === 'New' ? 'h20px' : 'h30px'" :size="item.tag === 'New' ? 'h20px' : 'h30px'"
:text="item.title" :text="item.title"
:publishTime="item.publishTime"
:date="item.publishTime" :date="item.publishTime"
/> />
</div> </div>

View File

@ -8,6 +8,7 @@ import 'swiper/css/pagination'
import AppAlert from '@/components/AppAlert.vue' import AppAlert from '@/components/AppAlert.vue'
import { pageType } from '@/stores/modules/pages' import { pageType } from '@/stores/modules/pages'
import { message } from '@/utils/message' import { message } from '@/utils/message'
import { isNotOneWeekAgo } from '@/utils'
const store = pageType() const store = pageType()
import type { PropType } from 'vue' import type { PropType } from 'vue'
@ -16,150 +17,130 @@ const { push } = useRouter()
const routet = useRoute() const routet = useRoute()
const props = defineProps({ const props = defineProps({
route: String, route: String,
routets: String, routets: String,
swipImgs: { swipImgs: {
type: Array as PropType<any[]>, type: Array as PropType<any[]>,
default: () => [] default: () => []
}, },
items: { items: {
type: Array as PropType<any[]>, type: Array as PropType<any[]>,
default: () => [] default: () => []
} }
}) })
let indexs = 3 let indexs = 3
const modules = [Autoplay, Pagination, Navigation, A11y] const modules = [Autoplay, Pagination, Navigation, A11y]
const swipeActiveIndex = ref(0) const swipeActiveIndex = ref(0)
function handleIndex(x: any) { function handleIndex(x: any) {
swipeActiveIndex.value = x.realIndex swipeActiveIndex.value = x.realIndex
} }
const swipeRef = ref<any>(null) const swipeRef = ref<any>(null)
const slideTo = async (index: any) => { const slideTo = async (index: any) => {
const swiper = unref(swipeRef) const swiper = unref(swipeRef)
if (!swiper) return if (!swiper) return
swiper.slideTo(index, 0) swiper.slideTo(index, 0)
swipeActiveIndex.value = index swipeActiveIndex.value = index
} }
const setSwiperRef = (swiper: any) => { const setSwiperRef = (swiper: any) => {
swipeRef.value = swiper swipeRef.value = swiper
} }
const toDest = (id: any) => { const toDest = (id: any) => {
store.page.types = id store.page.types = id
sessionStorage.setItem('types', id) sessionStorage.setItem('types', id)
// console.log(routet,routet.path) // console.log(routet,routet.path)
push({ name: props.route }) push({ name: props.route })
} }
const toDetail2 = (n) => { const toDetail2 = (n) => {
// console.log(n) // console.log(n)
if (n.id === 0) return if (n.id === 0) return
if (n.isSelect === 1) { if (n.isSelect === 1) {
push(`${routet.path.replace('/Home', '')}/${props.routets}/${n.id}`) push(`${routet.path.replace('/Home', '')}/${props.routets}/${n.id}`)
} else { } else {
message.error('没有访问权限') message.error('没有访问权限')
} }
} }
</script> </script>
<template> <template>
<section <section v-if="swipImgs?.length" class="w640px h280px mt18px relative min-h280px">
v-if="swipImgs?.length" <Swiper
class="w640px h280px mt18px relative min-h280px" @slideChangeTransitionEnd="handleIndex"
> @swiper="setSwiperRef"
<Swiper class="w-full h-full"
@slideChangeTransitionEnd="handleIndex" :slidesPerView="1"
@swiper="setSwiperRef" :spaceBetween="30"
class="w-full h-full" :loop="false"
:slidesPerView="1" :centeredSlides="true"
:spaceBetween="30" :autoplay="{ delay: 10000, disableOnInteraction: false }"
:loop="false" :navigation="false"
:centeredSlides="true" :modules="modules"
:autoplay="{ delay: 10000, disableOnInteraction: false }" :route="routet"
:navigation="false" >
:modules="modules" <template v-for="(item, index) in swipImgs" :key="index">
:route="routet" <SwiperSlide>
> <img :src="item.bannerImg" alt="" @click="toDetail2(item)" class="w100%" />
<template v-for="(item, index) in swipImgs" :key="index"> <div
<SwiperSlide> class="absolute w-full bg-#062910/60 h52px left-0 bottom-0 z-9 text-#fff flex px18px items-center"
<img >
:src="item.bannerImg" <div
alt="" class="text-ellipsis text-22px font-600 max-w480px"
@click="toDetail2(item)" @click="toDetail2(item)"
class="w100%" :title="item.title"
/> >
<div {{ item.title }}
class="absolute w-full bg-#062910/60 h52px left-0 bottom-0 z-9 text-#fff flex px18px items-center" </div>
> </div>
<div </SwiperSlide>
class="text-ellipsis text-22px font-600 max-w480px" <div
@click="toDetail2(item)" class="absolute w-full h52px left-0 bottom-0 z-10 flex px18px items-center justify-end"
:title="item.title" >
> <div class="dots shrink-0 cursor-pointer">
{{ item.title }} <span
</div> :class="`dot ${swipeActiveIndex === idx && 'active'}`"
</div> v-for="(item, idx) in swipImgs"
</SwiperSlide> :key="item"
<div @click="slideTo(idx)"
class="absolute w-full h52px left-0 bottom-0 z-10 flex px18px items-center justify-end" ></span>
> </div>
<div class="dots shrink-0 cursor-pointer"> </div>
<span </template>
:class="`dot ${swipeActiveIndex === idx && 'active'}`" </Swiper>
v-for="(item, idx) in swipImgs" </section>
:key="item" <section class="max-h-500px overflow-y-auto -webkit-scrollbar">
@click="slideTo(idx)" <div class="flex mt19px items min-h-140px" v-for="item in items" :key="item">
></span> <div
</div> class="w100px h100px rd-20px flex-shrink flex flex-col justify-center items-center text-#fff"
</div> :style="{ backgroundColor: item.color }"
</template> >
</Swiper> <img :src="item.icon" />
</section> <span class="mt14px">{{ item.name }}</span>
<section class="max-h-500px overflow-y-auto -webkit-scrollbar"> </div>
<div <div class="flex flex-col flex-1 ml16px min-h-120px">
class="flex mt19px items min-h-140px" <template v-if="item.list.length > 0">
v-for="item in items" <AppAlert class="flex cursor-pointer" cate="1">
:key="item" <span
> v-if="item.list[0].isTop === 'Y'"
<div class="flex-1 w0 truncate font-500"
class="w100px h100px rd-20px flex-shrink flex flex-col justify-center items-center text-#fff" @click="toDetail2(item.list[0])"
:style="{ backgroundColor: item.color }" :title="item.list[0].source"
> >{{ item.list[0].title }}</span
<img :src="item.icon" /> >
<span class="mt14px">{{ item.name }}</span> <span class="flex-1 w0 truncate font-500" v-if="item.list[0].isTop === 'N'"></span>
</div> <img
<div class="flex flex-col flex-1 ml16px min-h-120px"> v-if="item.list[0].isTop === 'Y'"
<template v-if="item.list.length > 0"> src="../../../assets/images/jj.gif"
<AppAlert class="flex cursor-pointer" cate="1"> class="h27px mr5px mt3px"
<span />
v-if="item.list[0].isTop === 'Y'" <div class="flex h40px lh-40px text-#fff text-18px">
class="flex-1 w0 truncate font-500" <div class="pr40px cursor-pointer more text-14px" @click="toDest(item.key)"></div>
@click="toDetail2(item.list[0])" </div>
:title="item.list[0].source" </AppAlert>
>{{ item.list[0].title }}</span <div class="" v-for="(n, idx) in item.news" :key="n.title">
> <!-- <div v-if="idx ==0">
<span
class="flex-1 w0 truncate font-500"
v-if="item.list[0].isTop === 'N'"
></span>
<img
v-if="item.list[0].isTop === 'Y'"
src="../../../assets/images/jj.gif"
class="h27px mr5px mt3px"
/>
<div class="flex h40px lh-40px text-#fff text-18px">
<div
class="pr40px cursor-pointer more text-14px"
@click="toDest(item.key)"
>
更多
</div>
</div>
</AppAlert>
<div class="" v-for="(n, idx) in item.news" :key="n.title">
<!-- <div v-if="idx ==0">
<div v-if="n.isTop === 'Y'?indexs=3:indexs=2" class="mt7px cursor-pointer flex items-center" :data-date="n.publishTime" @click="toDetail2(n)"> <div v-if="n.isTop === 'Y'?indexs=3:indexs=2" class="mt7px cursor-pointer flex items-center" :data-date="n.publishTime" @click="toDetail2(n)">
<span v-if="n.isTop !== 'Y'" class="truncate flex-1 w0 text-#142142 hover:underline mt4px" :style="n.isRead===2?'color:#0058E5;font-weight':''" :title="n.source">{{ n.title }}</span> <span v-if="n.isTop !== 'Y'" class="truncate flex-1 w0 text-#142142 hover:underline mt4px" :style="n.isRead===2?'color:#0058E5;font-weight':''" :title="n.source">{{ n.title }}</span>
<span class="mt4.5px"> <span class="mt4.5px">
@ -170,48 +151,38 @@ const toDetail2 = (n) => {
</div> </div>
<div v-else> --> <div v-else> -->
<div <div
v-if="idx < 3" v-if="idx < 3"
class="mt8px cursor-pointer flex items-center h25px" class="mt8px cursor-pointer flex items-center h25px"
:data-date="n.publishTime" :data-date="n.publishTime"
@click="toDetail2(n)" @click="toDetail2(n)"
> >
<span <span
class="truncate flex-1 w0 text-#142142 hover:underline mt4px" class="truncate flex-1 w0 text-#142142 hover:underline mt4px"
:style="n.isRead === 2 ? 'color:#0058E5;font-weight' : ''" :style="n.isRead === 2 ? 'color:#0058E5;font-weight' : ''"
:title="n.source" :title="n.source"
>{{ n.title }}</span >{{ n.title }}</span
> >
<span class="mt4.5px"> <span class="mt4.5px">
<img <!-- <img v-if="n.tag === 'New'" src="./images/NEW3.gif" class="h20px" /> -->
v-if="n.tag === 'New'" <img v-if="isNotOneWeekAgo(n.publishTime)" src="./images/NEW3.gif" class="h20px" />
src="./images/NEW3.gif" </span>
class="h20px" <span class="shrink-0 ml18px text-#808696 mt4px">{{ n.publishTime }}</span>
/> </div>
</span> <!-- </div> -->
<span class="shrink-0 ml18px text-#808696 mt4px">{{ </div>
n.publishTime </template>
}}</span> <template v-else>
</div> <AppAlert class="flex cursor-pointer" cate="1">
<!-- </div> --> <span class="flex-1 w0 truncate font-500"></span>
</div> <div class="flex h40px lh-40px text-#fff text-18px">
</template> <div class="pr40px cursor-pointer more text-14px" @click="toDest(item.key)"></div>
<template v-else> </div>
<AppAlert class="flex cursor-pointer" cate="1"> </AppAlert>
<span class="flex-1 w0 truncate font-500"></span> </template>
<div class="flex h40px lh-40px text-#fff text-18px"> </div>
<div </div>
class="pr40px cursor-pointer more text-14px" </section>
@click="toDest(item.key)"
>
更多
</div>
</div>
</AppAlert>
</template>
</div>
</div>
</section>
</template> </template>
<style scoped lang="less"> <style scoped lang="less">
@ -219,59 +190,59 @@ const toDetail2 = (n) => {
// width: 1px; // width: 1px;
// } // }
.text-ellipsis { .text-ellipsis {
white-space: nowrap; /* 防止文本换行 */ white-space: nowrap; /* 防止文本换行 */
overflow: hidden; /* 隐藏溢出部分 */ overflow: hidden; /* 隐藏溢出部分 */
text-overflow: ellipsis; /* 显示省略号 */ text-overflow: ellipsis; /* 显示省略号 */
/* 其他样式,如字体大小、字体粗细等 */ /* 其他样式,如字体大小、字体粗细等 */
} }
.title { .title {
background: linear-gradient(0deg, #466ccd, #5c87f5); background: linear-gradient(0deg, #466ccd, #5c87f5);
border-radius: 10px; border-radius: 10px;
opacity: 0.52; opacity: 0.52;
} }
.more { .more {
position: relative; position: relative;
&::after { &::after {
content: ''; content: '';
width: 20px; width: 20px;
height: 20px; height: 20px;
position: absolute; position: absolute;
right: 15px; right: 15px;
top: 10px; top: 10px;
background-image: url('./images/younniu.png'); background-image: url('./images/younniu.png');
background-size: contain; background-size: contain;
} }
} }
.dots { .dots {
.dot { .dot {
display: inline-block; display: inline-block;
width: 13px; width: 13px;
height: 9px; height: 9px;
background-color: rgba(255, 255, 255, 0.3); background-color: rgba(255, 255, 255, 0.3);
border-radius: 0; border-radius: 0;
margin-left: 8px; margin-left: 8px;
&.active { &.active {
background-color: #fff; background-color: #fff;
} }
} }
} }
.items { .items {
.bg-red { .bg-red {
background-color: #e60e0e; background-color: #e60e0e;
} }
.bg-green { .bg-green {
background-color: #2cba06; background-color: #2cba06;
} }
.items-content { .items-content {
margin-top: 12px; margin-top: 12px;
display: -webkit-box; display: -webkit-box;
-webkit-box-orient: vertical; -webkit-box-orient: vertical;
-webkit-line-clamp: 2; -webkit-line-clamp: 2;
line-height: 1.7; line-height: 1.7;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
} }
</style> </style>

View File

@ -6,76 +6,88 @@ import HomeHeadSearch from '@/views/home/components/HomeHeadSearch.vue'
import UserPage from './UserPages.vue' import UserPage from './UserPages.vue'
import { useDate } from '@/views/home/hooks/useDate' import { useDate } from '@/views/home/hooks/useDate'
import { getArticleDetail, review } from '@/api/daikin/base' import { getArticleDetail, review } from '@/api/daikin/base'
import { NModal, NCard, NForm, NButton, NFormItem, NInput, NRadio, NSelect, NSpace, NRadioGroup, useMessage, treeDark } from 'naive-ui' import {
NModal,
NCard,
NForm,
NButton,
NFormItem,
NInput,
NRadio,
NSelect,
NSpace,
NRadioGroup,
useMessage,
treeDark
} from 'naive-ui'
import { getImg } from '../images' import { getImg } from '../images'
import { useUserStore } from '@/stores/modules/user' import { useUserStore } from '@/stores/modules/user'
import {noticeld} from '@/stores/modules/noticeId' import { noticeld } from '@/stores/modules/noticeId'
import { Plus } from '@element-plus/icons-vue' import { Plus } from '@element-plus/icons-vue'
import type { UploadProps, UploadUserFile } from 'element-plus' import type { UploadProps, UploadUserFile } from 'element-plus'
const stores = noticeld() const stores = noticeld()
const store = useUserStore() const store = useUserStore()
const state = ref<any>({}) const state = ref<any>({})
async function getData() { async function getData() {
const { id } = route.params const { id } = route.params
if (!id) return if (!id) return
const { data} = await getArticleDetail(id as string) const { data } = await getArticleDetail(id as string)
state.value = data state.value = data
dataList.value = data.userList dataList.value = data.userList
formValue.value = Object.assign(data,{ formValue.value = Object.assign(data, {
type:data.type+'', type: data.type + '',
cate:data.cate+'', cate: data.cate + ''
}) })
editorContent.value =data.content? unescapeHTML(data.content):'' editorContent.value = data.content ? unescapeHTML(data.content) : ''
cate.value = data.cate cate.value = data.cate
console.log(data.type) console.log(data.type)
} }
const message = useMessage() const message = useMessage()
const { day, week } = useDate() const { day, week } = useDate()
const { push } = useRouter() const { push } = useRouter()
const route = useRoute() const route = useRoute()
let cate = ref(1); let cate = ref(1)
let formValue: any = ref({ let formValue: any = ref({
type: 1, type: 1,
status:1, status: 1,
cate: '', cate: '',
title: '', title: '',
tag: '', tag: '',
source: '', source: '',
content: '', content: '',
isTop:'N', isTop: 'N',
bannerImg:'', bannerImg: ''
}) })
let rules = { let rules = {
cate: { cate: {
required: false, required: false,
message: '请选择类型', message: '请选择类型',
trigger: 'blur' trigger: 'blur'
}, },
title: { title: {
required: false, required: false,
message: '请输入标题', message: '请输入标题',
trigger: 'blur' trigger: 'blur'
}, },
tag: { tag: {
required: true, required: true,
message: '请输入标题', message: '请输入标题',
trigger: 'blur' trigger: 'blur'
}, },
source: { source: {
required: true, required: true,
message: '请输入标题', message: '请输入标题',
trigger: 'blur' trigger: 'blur'
}, },
content: { content: {
required: false, required: false,
message: '请输入内容', message: '请输入内容',
trigger: 'blur' trigger: 'blur'
} }
} }
// let options = [{ // let options = [{
// label: '', // label: '',
@ -86,192 +98,201 @@ let rules = {
// value: 'New' // value: 'New'
// },] // },]
function change(i: any) { function change(i: any) {
cate.value = i cate.value = i
formValue.cate = cate.value formValue.cate = cate.value
// console.log( formValue.cate) // console.log( formValue.cate)
} }
function unescapeHTML(html: string) { function unescapeHTML(html: string) {
const doc = new DOMParser().parseFromString(html, 'text/html'); const doc = new DOMParser().parseFromString(html, 'text/html')
return doc.documentElement.textContent; return doc.documentElement.textContent
} }
function escapeHTML(html: string): string { function escapeHTML(html: string): string {
const tempElement = document.createElement('div'); const tempElement = document.createElement('div')
tempElement.textContent = html; tempElement.textContent = html
return tempElement.innerHTML; return tempElement.innerHTML
} }
// //
const handleChild2 = (data: string) => { const handleChild2 = (data: string) => {
editorContent.value = data editorContent.value = data
} }
const starts =ref(1) const starts = ref(1)
const fileList = ref<[]>() const fileList = ref<[]>()
const editorContent = ref('') const editorContent = ref('')
async function sure() { async function sure() {
const {id, title, source, type ,isTop,content:conts} = formValue.value const { id, title, source, type, isTop, content: conts } = formValue.value
const cont = editorContent.value const cont = editorContent.value
const content = cont?escapeHTML(cont):conts const content = cont ? escapeHTML(cont) : conts
const noticeId = stores.article.noticeld const noticeId = stores.article.noticeld
const cates = cate.value const cates = cate.value
const status = starts.value const status = starts.value
console.log(content) console.log(content)
let userIdList: any[] =[] let userIdList: any[] = []
// let filLists // let filLists
// if(isTop==='Y'&&!fileList.value){ // if(isTop==='Y'&&!fileList.value){
// message.error("") // message.error("")
// return // return
// } // }
// else if(isTop==='Y'&&fileList.value){ // else if(isTop==='Y'&&fileList.value){
// filLists = fileList.value.map(item => item.response.fileName).join(','); // filLists = fileList.value.map(item => item.response.fileName).join(',');
// } // }
if(!dataList.value){ if (!dataList.value) {
message.success("请选择要提醒的对象") message.success('请选择要提醒的对象')
return return
} }
dataList.value.forEach((i: { userId: any })=>{ dataList.value.forEach((i: { userId: any }) => {
console.log(dataList.value) console.log(dataList.value)
userIdList.push(i.userId) userIdList.push(i.userId)
}) })
// console.log(formValue.value) // console.log(formValue.value)
if(userIdList.length<0) return if (userIdList.length < 0) return
const { msg, code } = await review({id,status,isTop, title, source, cate:cates,noticeId, type, content ,userIdList}) const { msg, code } = await review({
if (code === 200) { id,
showModalRef2.value = true status,
} isTop,
else { message.success(msg); } title,
source,
cate: cates,
noticeId,
type,
content,
userIdList
})
if (code === 200) {
showModalRef2.value = true
} else {
message.success(msg)
}
} }
const showModal = ref(false) const showModal = ref(false)
const showModalRef = ref(false) const showModalRef = ref(false)
const showModalRef2 = ref(false) const showModalRef2 = ref(false)
const bodyStyle = ref({ const bodyStyle = ref({
// 'background-color': '#236EED' // 'background-color': '#236EED'
}) })
function onNegativeClick() { function onNegativeClick() {
message.success('Cancel') message.success('Cancel')
showModalRef.value = false showModalRef.value = false
} }
function onPositiveClick() { function onPositiveClick() {
showModalRef.value = false showModalRef.value = false
sure() sure()
} }
function onPositiveClicks() { function onPositiveClicks() {
showModalRefs.value = false showModalRefs.value = false
sure() sure()
} }
const dataList = ref() const dataList = ref()
// //
const handleChild = (data: any) => { const handleChild = (data: any) => {
const { showModal: show, multipleSelection } = data const { showModal: show, multipleSelection } = data
showModal.value = unref(show) showModal.value = unref(show)
dataList.value = unref(multipleSelection) dataList.value = unref(multipleSelection)
} }
const handleClose = (tag: any) => { const handleClose = (tag: any) => {
dataList.value.splice(dataList.value.indexOf(tag), 1)
dataList.value.splice(dataList.value.indexOf(tag), 1) // console.log( dataList.value)
// console.log( dataList.value)
} }
const CloseThis = (data: boolean)=>{ const CloseThis = (data: boolean) => {
showModal.value = data showModal.value = data
} }
const ok =() =>{ const ok = () => {
showModalRef2.value = false showModalRef2.value = false
push('/Home/Process') push('/Home/Process')
} }
const submitSave = (page: any)=>{ const submitSave = (page: any) => {
console.log(page) console.log(page)
if(store.user.isReview === 1){ if (store.user.isReview === 1) {
if(page === 1){ if (page === 1) {
showModalRef.value = true
showModalRef.value = true } else {
}else{ showModalRefs.value = true
showModalRefs.value = true
}
starts.value = page
// console.log(page,showModalRef.value, showModalRefs.value)
} }
else{ starts.value = page
message.warning("您还未获得审核权限") // console.log(page,showModalRef.value, showModalRefs.value)
} } else {
message.warning('您还未获得审核权限')
}
} }
getData() getData()
const showModals =ref(false) const showModals = ref(false)
const header = {'token':store.user.token} const header = { 'token': store.user.token }
// console.log(store.user.token) // console.log(store.user.token)
const dialogImageUrl = ref('') const dialogImageUrl = ref('')
const dialogVisible = ref(false) const dialogVisible = ref(false)
const handleRemove: UploadProps['onRemove'] = (uploadFile: any, uploadFiles: any) => { const handleRemove: UploadProps['onRemove'] = (uploadFile: any, uploadFiles: any) => {
// console.log(dialogImageUrl,dialogVisible) // console.log(dialogImageUrl,dialogVisible)
} }
const handlePictureCardPreview: UploadProps['onPreview'] = (uploadFile: { url: string }) => { const handlePictureCardPreview: UploadProps['onPreview'] = (uploadFile: { url: string }) => {
dialogImageUrl.value = uploadFile.url! dialogImageUrl.value = uploadFile.url!
dialogVisible.value = true dialogVisible.value = true
// console.log(dialogImageUrl.value) // console.log(dialogImageUrl.value)
} }
const setUserList =ref() const setUserList = ref()
const thisClick=()=>{ const thisClick = () => {
showModal.value = true showModal.value = true
setUserList.value = dataList.value setUserList.value = dataList.value
stores.article.reviewSource = formValue.value.reviewSource stores.article.reviewSource = formValue.value.reviewSource
console.log(stores.article.reviewSource) console.log(stores.article.reviewSource)
} }
const showModalRefs = ref(false) const showModalRefs = ref(false)
</script> </script>
<template> <template>
<div> <div>
<HomeHead class="top"> <HomeHead class="top">
<template #content> <template #content>
<!-- <HomeHeadSearch /> --> <!-- <HomeHeadSearch /> -->
</template> </template>
</HomeHead> </HomeHead>
<div class="h-full relative flex flex-col"> <div class="h-full relative flex flex-col">
<div class="font-600 flex items-end mt30px"> <div class="font-600 flex items-end mt30px">
<div class="text-36px">情报新增待审批</div> <div class="text-36px">情报新增待审批</div>
<div class="text-18px ml40px mr25px">{{ day }}</div> <div class="text-18px ml40px mr25px">{{ day }}</div>
<div class="text-18px">{{ week }}</div> <div class="text-18px">{{ week }}</div>
</div> </div>
</div>
</div> </div>
</div>
<div class="q-wrapper flex-1 mt30px text-#142142 flex flex-col bg-#fff p30px "> <div class="q-wrapper flex-1 mt30px text-#142142 flex flex-col bg-#fff p30px">
<n-form ref="formRef" :label-width="900" :model="formValue" :rules="rules" size="medium" <n-form
require-mark-placement="left"> ref="formRef"
<n-form-item v-if="formValue.reviewSource===2" label="情报属性" path="type"> :label-width="900"
<n-radio-group v-model:value="formValue.type" name="radiogroup"> :model="formValue"
<n-space> :rules="rules"
<!-- <n-radio v-for="song in songs" :key="song.value" :value="song.value"> size="medium"
require-mark-placement="left"
>
<n-form-item v-if="formValue.reviewSource === 2" label="情报属性" path="type">
<n-radio-group v-model:value="formValue.type" name="radiogroup">
<n-space>
<!-- <n-radio v-for="song in songs" :key="song.value" :value="song.value">
{{ song.label }} {{ song.label }}
</n-radio> --> </n-radio> -->
<n-radio value="2">社内</n-radio> <n-radio value="2">社内</n-radio>
<n-radio value="1">社外</n-radio> <n-radio value="1">社外</n-radio>
</n-space> </n-space>
</n-radio-group> </n-radio-group>
</n-form-item> </n-form-item>
<n-form-item label="是否紧急" path="isTop"> <n-form-item label="是否紧急" path="isTop">
<n-radio-group v-model:value="formValue.isTop" name="radiogroup"> <n-radio-group v-model:value="formValue.isTop" name="radiogroup">
<n-space> <n-space>
<!-- <n-radio v-for="song in songs" :key="song.value" :value="song.value"> <!-- <n-radio v-for="song in songs" :key="song.value" :value="song.value">
{{ song.label }} {{ song.label }}
</n-radio> --> </n-radio> -->
<n-radio value="Y"></n-radio> <n-radio value="Y"></n-radio>
<n-radio value="N">不是</n-radio> <n-radio value="N">不是</n-radio>
</n-space> </n-space>
</n-radio-group> </n-radio-group>
</n-form-item> </n-form-item>
<!-- <n-form-item v-if="formValue.isTop==='Y'" label="上传图片" > <!-- <n-form-item v-if="formValue.isTop==='Y'" label="上传图片" >
<el-upload <el-upload
v-model:file-list="fileList" v-model:file-list="fileList"
:headers="header" :headers="header"
@ -289,179 +310,251 @@ const showModalRefs = ref(false)
</el-dialog> </el-dialog>
</n-form-item> --> </n-form-item> -->
<n-form-item v-if="formValue.reviewSource===2&&cate!=9" label="情报类型" path="cate"> <n-form-item v-if="formValue.reviewSource === 2 && cate != 9" label="情报类型" path="cate">
<div class="flex gap-20px cursor-pointer"> <div class="flex gap-20px cursor-pointer">
<div
<div v-if="formValue.type==='1'" :class="cate == 1 ? 'img yes' : 'img'" @click="change(1)"> v-if="formValue.type === '1'"
<img src="../images/icon-1.svg" alt="" class="ml15px mt8px"> :class="cate == 1 ? 'img yes' : 'img'"
<div class="text-center text-14px text-#fff">外部环境</div> @click="change(1)"
</div> >
<div v-if="formValue.type==='1'" :class="cate == 2 ? 'img yes' : 'img'" @click="change(2)"> <img src="../images/icon-1.svg" alt="" class="ml15px mt8px" />
<img src="../images/icon-2.svg" alt="" class="ml18px mt14px"> <div class="text-center text-14px text-#fff">外部环境</div>
<div class="text-center text-14px text-#fff">竞争对手</div> </div>
</div> <div
<div v-if="formValue.type==='1'" :class="cate == 3 ? 'img yes' : 'img'" @click="change(3)"> v-if="formValue.type === '1'"
<img src="../images/icon-3.svg" alt="" class="ml19px mt8px"> :class="cate == 2 ? 'img yes' : 'img'"
<div class="text-center text-14px text-#fff">供方动向</div> @click="change(2)"
</div> >
<img src="../images/icon-2.svg" alt="" class="ml18px mt14px" />
<div v-if="formValue.type==='2'" :class="cate == 4 ? 'img yes' : 'img'" @click="change(4)"> <div class="text-center text-14px text-#fff">竞争对手</div>
<img src="../images/icon-4.svg" alt="" class="ml17px mt10px"> </div>
<div class="text-center text-14px text-#fff">大金集团</div> <div
</div> v-if="formValue.type === '1'"
<div v-if="formValue.type==='2'" :class="cate == 5 ? 'img yes' : 'img'" @click="change(5)"> :class="cate == 3 ? 'img yes' : 'img'"
<img src="../images/icon-5.svg" alt="" class="ml17px mt9px"> @click="change(3)"
<div class="text-center text-14px text-#fff">中国据点</div> >
</div> <img src="../images/icon-3.svg" alt="" class="ml19px mt8px" />
<div v-if="formValue.type==='2'" :class="cate == 6 ? 'img yes' : 'img'" @click="change(6)"> <div class="text-center text-14px text-#fff">供方动向</div>
<img src="../images/icon-6.svg" alt="" class="ml15px mt8px"> </div>
<div class="text-center text-14px text-#fff">调达本部</div>
</div>
<div
v-if="formValue.type === '2'"
</div> :class="cate == 4 ? 'img yes' : 'img'"
</n-form-item> @click="change(4)"
<n-form-item v-if="formValue.reviewSource===3&&cate!=9" label="情报类型" path="cate"> >
<div class="flex gap-20px cursor-pointer"> <img src="../images/icon-4.svg" alt="" class="ml17px mt10px" />
<div class="text-center text-14px text-#fff">大金集团</div>
</div>
<div v-if="formValue.type==='1'" :class="cate == 7 ? 'img yes' : 'img'" @click="change(7)"> <div
<img src="../images/news2@2x.png" alt="" class="ml19px mt8px w46px"> v-if="formValue.type === '2'"
<div class="text-center text-14px text-#fff">News</div> :class="cate == 5 ? 'img yes' : 'img'"
</div> @click="change(5)"
<div v-if="formValue.type==='1'" :class="cate == 8 ? 'img yes' : 'img'" @click="change(8)"> >
<img src="../images/zytz@2x.png" alt="" class="ml10px mt8px w55px"> <img src="../images/icon-5.svg" alt="" class="ml17px mt9px" />
<div class="text-center text-14px text-#fff">重要通知</div> <div class="text-center text-14px text-#fff">中国据点</div>
</div> </div>
</div> <div
</n-form-item> v-if="formValue.type === '2'"
<n-form-item v-if="formValue.reviewSource===2" label="轮播图" path="title"> :class="cate == 6 ? 'img yes' : 'img'"
<img v-if="formValue.bannerImg[0]" :src="formValue.bannerImg[0]" class="max-w600px max-h300px"/> @click="change(6)"
</n-form-item> >
<n-form-item label="情报标题" path="title"> <img src="../images/icon-6.svg" alt="" class="ml15px mt8px" />
<n-input v-model:value="formValue.title" placeholder="" /> <div class="text-center text-14px text-#fff">调达本部</div>
</n-form-item> </div>
<!-- <n-form-item label="情报状态" path="tag" v-if="store.user.isPublish !==1"> </div>
</n-form-item>
<n-form-item v-if="formValue.reviewSource === 3 && cate != 9" label="情报类型" path="cate">
<div class="flex gap-20px cursor-pointer">
<div
v-if="formValue.type === '1'"
:class="cate == 7 ? 'img yes' : 'img'"
@click="change(7)"
>
<img src="../images/news2@2x.png" alt="" class="ml19px mt8px w46px" />
<div class="text-center text-14px text-#fff">News</div>
</div>
<div
v-if="formValue.type === '1'"
:class="cate == 8 ? 'img yes' : 'img'"
@click="change(8)"
>
<img src="../images/zytz@2x.png" alt="" class="ml10px mt8px w55px" />
<div class="text-center text-14px text-#fff">重要通知</div>
</div>
</div>
</n-form-item>
<n-form-item v-if="formValue.reviewSource === 2" label="轮播图" path="title">
<img
v-if="formValue.bannerImg[0]"
:src="formValue.bannerImg[0]"
class="max-w600px max-h300px"
/>
</n-form-item>
<n-form-item label="情报标题" path="title">
<n-input v-model:value="formValue.title" placeholder="" />
</n-form-item>
<!-- <n-form-item label="情报状态" path="tag" v-if="store.user.isPublish !==1">
<n-select v-model:value="formValue.tag" :options="options" /> <n-select v-model:value="formValue.tag" :options="options" />
</n-form-item> --> </n-form-item> -->
<n-form-item label="情报来源" path="source"> <n-form-item label="情报来源" path="source">
<n-input v-model:value="formValue.source" placeholder="" /> <n-input v-model:value="formValue.source" placeholder="" />
</n-form-item> </n-form-item>
<n-form-item label="情报内容" path="content"> <n-form-item label="情报内容" path="content">
<Editor :content="state.content" @getChildData="handleChild2"></Editor> <Editor :content="state.content" @getChildData="handleChild2"></Editor>
</n-form-item> </n-form-item>
<n-button @click="showModals = true"> 文本内容预览 </n-button> <n-button @click="showModals = true"> 文本内容预览 </n-button>
<br> <br />
<br> <br />
<br> <br />
<n-button @click="thisClick" v-if="cate!=9"> <n-button @click="thisClick" v-if="cate != 9"> </n-button>
情报公开范围 <div class="mt15px h150px overflow-y-auto" v-if="cate != 9">
</n-button> <el-tag
<div class="mt15px h150px overflow-y-auto" v-if="cate!=9"> v-for="i in dataList"
<el-tag v-for="i in dataList" :key="i" class="mx-1 my5px" closable :disable-transitions="false" :key="i"
@close="handleClose(i)" type="info" size="large"> class="mx-1 my5px"
{{ i.nickName }} closable
</el-tag> :disable-transitions="false"
</div> @close="handleClose(i)"
<div class=" text-end float-right block h50px pt10px"> type="info"
<n-form-item> size="large"
<n-button attr-type="button" style=" padding: 0 20px;" @click="submitSave(2)"> >
拒绝 {{ i.nickName }}
</n-button> </el-tag>
<n-button attr-type="button" @click="submitSave(1)" </div>
style="background-color: #3870E5; border-radius: 5px; color: #fff;margin-left: 10px; padding: 0 20px;"> <div class="text-end float-right block h50px pt10px">
发布 <n-form-item>
</n-button> <n-button attr-type="button" style="padding: 0 20px" @click="submitSave(2)">
</n-form-item> 拒绝
</div> </n-button>
<n-button
attr-type="button"
@click="submitSave(1)"
style="
background-color: #3870e5;
border-radius: 5px;
color: #fff;
margin-left: 10px;
padding: 0 20px;
"
>
发布
</n-button>
</n-form-item>
</div>
</n-form>
</div>
</n-form> <div>
</div> <n-modal v-model:show="showModal">
<!-- <n-card style="width:1100px; height: 800px;" title="调达中心" :bordered="false" size="huge" role="dialog"
<div>
<n-modal v-model:show="showModal">
<!-- <n-card style="width:1100px; height: 800px;" title="调达中心" :bordered="false" size="huge" role="dialog"
aria-modal="true"> --> aria-modal="true"> -->
<UserPage :userDataList="setUserList" @clickChild="handleChild" @CloseThis="CloseThis"></UserPage> <UserPage
<!-- </n-card> --> :userDataList="setUserList"
</n-modal> @clickChild="handleChild"
</div> @CloseThis="CloseThis"
<div> ></UserPage>
<n-modal v-model:show="showModalRef"> <!-- </n-card> -->
<n-card style="width: 500px;" title="提示" :bordered="false" size="huge" role="dialog" aria-modal="true"> </n-modal>
</div>
<div>
<n-modal v-model:show="showModalRef">
<n-card
style="width: 500px"
title="提示"
:bordered="false"
size="huge"
role="dialog"
aria-modal="true"
>
<div class="h200px bg#fff flex-col flex items-center justify-center">
<span class="mb60px text-18px">确认发布本情报</span>
<div class="leading-25px">
<span
class="inline-block w80px h25px text-#bfbfbf border border-solid text-center rounded-5px cursor-pointer"
@click="showModalRef = false"
>暂缓</span
>
<span
class="inline-block w80px h25px text-#fff bg-#236EED ml5px text-center rounded-5px cursor-pointer"
@click="onPositiveClick"
>确认发布</span
>
</div>
</div>
</n-card>
</n-modal>
</div>
<div>
<n-modal v-model:show="showModalRefs">
<n-card
style="width: 500px"
title="提示"
:bordered="false"
size="huge"
role="dialog"
aria-modal="true"
>
<div class="h200px bg#fff flex-col flex items-center justify-center">
<span class="mb60px text-18px">确认驳回本情报</span>
<div class="leading-25px">
<span
class="inline-block w80px h25px text-#bfbfbf border border-solid text-center rounded-5px cursor-pointer"
@click="showModalRefs = false"
>暂缓</span
>
<span
class="inline-block w80px h25px text-#fff bg-#236EED ml5px text-center rounded-5px cursor-pointer"
@click="onPositiveClicks"
>确认驳回</span
>
</div>
</div>
</n-card>
</n-modal>
</div>
<div>
<n-modal :mask-closable="false" v-model:show="showModalRef2">
<n-card
style="width: 500px"
title="提示"
:bordered="false"
size="huge"
role="dialog"
aria-modal="true"
>
<div class="h200px bg#fff flex-col flex items-center justify-center">
<img class="w60px h60px" src="../images/quedd.png" alt="" />
<span class="mt10px mb40px">{{ starts == 1 ? '已成功发布' : '已成功驳回' }}</span>
<span
class="w50px h30px text-#fff bg-#236EED p5px text-center rounded-5px cursor-pointer"
@click="ok"
>确认</span
>
</div>
</n-card>
</n-modal>
</div>
<div class="h200px bg#fff flex-col flex items-center justify-center"> <div>
<span class=" mb60px text-18px">确认发布本情报</span> <n-modal v-model:show="showModals">
<div class="leading-25px"> <div class="flex w80% p30px bg-#fff my40px rounded-30px">
<span <div class="overflow-y-auto h800px container" v-html="editorContent"></div>
class="inline-block w80px h25px text-#bfbfbf border border-solid text-center rounded-5px cursor-pointer" </div>
@click="showModalRef = false">暂缓</span> </n-modal>
<span </div>
class="inline-block w80px h25px text-#fff bg-#236EED ml5px text-center rounded-5px cursor-pointer"
@click="onPositiveClick">确认发布</span>
</div>
</div>
</n-card>
</n-modal>
</div>
<div>
<n-modal v-model:show="showModalRefs">
<n-card style="width: 500px;" title="提示" :bordered="false" size="huge" role="dialog" aria-modal="true">
<div class="h200px bg#fff flex-col flex items-center justify-center">
<span class=" mb60px text-18px">确认驳回本情报</span>
<div class="leading-25px">
<span
class="inline-block w80px h25px text-#bfbfbf border border-solid text-center rounded-5px cursor-pointer"
@click="showModalRefs = false">暂缓</span>
<span
class="inline-block w80px h25px text-#fff bg-#236EED ml5px text-center rounded-5px cursor-pointer"
@click="onPositiveClicks">确认驳回</span>
</div>
</div>
</n-card>
</n-modal>
</div>
<div>
<n-modal :mask-closable="false" v-model:show="showModalRef2">
<n-card style="width: 500px;" title="提示" :bordered="false" size="huge" role="dialog" aria-modal="true" >
<div class="h200px bg#fff flex-col flex items-center justify-center">
<img class="w60px h60px" src="../images/quedd.png" alt="">
<span class="mt10px mb40px">{{starts==1?'已成功发布':'已成功驳回'}}</span>
<span class="w50px h30px text-#fff bg-#236EED p5px text-center rounded-5px cursor-pointer"
@click="ok">确认</span>
</div>
</n-card>
</n-modal>
</div>
<div>
<n-modal v-model:show="showModals">
<div class=" flex w80% p30px bg-#fff my40px rounded-30px">
<div class=" overflow-y-auto h800px container" v-html="editorContent"></div>
</div>
</n-modal>
</div>
</template> </template>
<style lang="less"> <style lang="less">
:deep.container { :deep.container {
// column-count: 2; // column-count: 2;
column-gap: 34px; column-gap: 34px;
margin: 30px; margin: 30px;
line-height: 2; line-height: 2;
margin-top: 32px; margin-top: 32px;
// :deep(p>img){ // :deep(p>img){
// width: 100%; // width: 100%;
// } // }
// max-width: 1062px; // max-width: 1062px;
:deep(img) { :deep(img) {
// width: 100%; // width: 100%;
// max-width: 500px; // max-width: 500px;
@ -474,36 +567,35 @@ const showModalRefs = ref(false)
} }
/* 设置滚动条宽度 */ /* 设置滚动条宽度 */
::-webkit-scrollbar { ::-webkit-scrollbar {
width: 1px; width: 1px;
} }
.top { .top {
position: absolute; position: absolute;
right: 30px; right: 30px;
top: -92px; top: -92px;
} }
.add { .add {
border: 1px solid #FFFFFF; border: 1px solid #ffffff;
border-radius: 10px; border-radius: 10px;
} }
.defultStyle { .defultStyle {
display: table-cell; display: table-cell;
vertical-align: middle; vertical-align: middle;
text-align: center; text-align: center;
background-color: #C2C2C2; background-color: #c2c2c2;
} }
.top { .top {
position: absolute; position: absolute;
right: 30px; right: 30px;
top: -92px; top: -92px;
} }
.add { .add {
border: 1px solid #FFFFFF; border: 1px solid #ffffff;
border-radius: 10px; border-radius: 10px;
} }
@ -511,18 +603,17 @@ const showModalRefs = ref(false)
width: 80px; width: 80px;
height: 80px; height: 80px;
border-radius: 20px; border-radius: 20px;
background-color: #C2C2C2; background-color: #c2c2c2;
} }
.img.yes { .img.yes {
background-color: #63BFB2; background-color: #63bfb2;
} }
.q-wrapper { .q-wrapper {
border-radius: 18px; border-radius: 18px;
border: 1px solid #E7EBF5; border: 1px solid #e7ebf5;
box-shadow: inset 1px 2px 12px rgba(14, 86, 221, 0.32); box-shadow: inset 1px 2px 12px rgba(14, 86, 221, 0.32);
overflow-y: auto; overflow-y: auto;
height: 830px; height: 830px;
} }
</style> </style>