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,4 +1,5 @@
<script setup lang="ts">
import { isNotOneWeekAgo } from '@/utils'
const props = defineProps({
date: String,
text: String,
@ -6,14 +7,19 @@ const props = defineProps({
labelText: String,
labelColor: String,
size: String,
isRead:Number
isRead: Number,
publishTime: String
})
</script>
<template>
<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
v-if="isNotOneWeekAgo(publishTime) && labelText !== '紧急'"
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> -->

View File

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

View File

@ -6,6 +6,7 @@ import Layout from './components/Layout.vue'
import DetailNews from './DetailNews.vue'
import { getArticleDetail, getArticlePage, getManagerDetail, report } from '@/api/daikin/base'
import { message } from '@/utils/message'
import { isNotOneWeekAgo } from '@/utils'
const { push } = useRouter()
const route = useRoute()
@ -161,7 +162,12 @@ const handlewaiScoll = () => {
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 === '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" />
<div class="ml5px leading-4.5 max-w300px overflow-ellipsis">
{{ i.title }}
@ -192,7 +198,12 @@ const handlewaiScoll = () => {
/> -->
<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" />
<div class="ml5px leading-4.5 max-w300px overflow-ellipsis">
{{ i.title }}

View File

@ -8,14 +8,20 @@ const props = defineProps({
tag: String,
tagColor: String,
source: String,
publishTime: String,
publishTime: String
})
</script>
<template>
<div class="news-wrapper">
<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>
<h2 class="sub-title">
<span v-if="source">{{ source }} </span>
@ -49,9 +55,10 @@ const props = defineProps({
// max-width: 500px;
border-radius: 6px;
margin-bottom: 24px;
max-width: 1060px;
}
:deep(p) {
text-indent: 2em;
// text-indent: 2em;
}
}
</style>

View File

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

View File

@ -8,6 +8,7 @@ import 'swiper/css/pagination'
import AppAlert from '@/components/AppAlert.vue'
import { pageType } from '@/stores/modules/pages'
import { message } from '@/utils/message'
import { isNotOneWeekAgo } from '@/utils'
const store = pageType()
import type { PropType } from 'vue'
@ -65,10 +66,7 @@ const toDetail2 = (n) => {
</script>
<template>
<section
v-if="swipImgs?.length"
class="w640px h280px mt18px relative min-h280px"
>
<section v-if="swipImgs?.length" class="w640px h280px mt18px relative min-h280px">
<Swiper
@slideChangeTransitionEnd="handleIndex"
@swiper="setSwiperRef"
@ -84,12 +82,7 @@ const toDetail2 = (n) => {
>
<template v-for="(item, index) in swipImgs" :key="index">
<SwiperSlide>
<img
:src="item.bannerImg"
alt=""
@click="toDetail2(item)"
class="w100%"
/>
<img :src="item.bannerImg" alt="" @click="toDetail2(item)" class="w100%" />
<div
class="absolute w-full bg-#062910/60 h52px left-0 bottom-0 z-9 text-#fff flex px18px items-center"
>
@ -118,11 +111,7 @@ const toDetail2 = (n) => {
</Swiper>
</section>
<section class="max-h-500px overflow-y-auto -webkit-scrollbar">
<div
class="flex mt19px items min-h-140px"
v-for="item in items"
:key="item"
>
<div class="flex mt19px items min-h-140px" v-for="item in items" :key="item">
<div
class="w100px h100px rd-20px flex-shrink flex flex-col justify-center items-center text-#fff"
:style="{ backgroundColor: item.color }"
@ -140,22 +129,14 @@ const toDetail2 = (n) => {
:title="item.list[0].source"
>{{ item.list[0].title }}</span
>
<span
class="flex-1 w0 truncate font-500"
v-if="item.list[0].isTop === 'N'"
></span>
<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 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">
@ -183,15 +164,10 @@ const toDetail2 = (n) => {
>{{ n.title }}</span
>
<span class="mt4.5px">
<img
v-if="n.tag === 'New'"
src="./images/NEW3.gif"
class="h20px"
/>
<!-- <img v-if="n.tag === 'New'" src="./images/NEW3.gif" class="h20px" /> -->
<img v-if="isNotOneWeekAgo(n.publishTime)" src="./images/NEW3.gif" class="h20px" />
</span>
<span class="shrink-0 ml18px text-#808696 mt4px">{{
n.publishTime
}}</span>
<span class="shrink-0 ml18px text-#808696 mt4px">{{ n.publishTime }}</span>
</div>
<!-- </div> -->
</div>
@ -200,12 +176,7 @@ const toDetail2 = (n) => {
<AppAlert class="flex cursor-pointer" cate="1">
<span class="flex-1 w0 truncate font-500"></span>
<div class="flex h40px lh-40px text-#fff text-18px">
<div
class="pr40px cursor-pointer more text-14px"
@click="toDest(item.key)"
>
更多
</div>
<div class="pr40px cursor-pointer more text-14px" @click="toDest(item.key)"></div>
</div>
</AppAlert>
</template>

View File

@ -6,14 +6,26 @@ import HomeHeadSearch from '@/views/home/components/HomeHeadSearch.vue'
import UserPage from './UserPages.vue'
import { useDate } from '@/views/home/hooks/useDate'
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 { useUserStore } from '@/stores/modules/user'
import { noticeld } from '@/stores/modules/noticeId'
import { Plus } from '@element-plus/icons-vue'
import type { UploadProps, UploadUserFile } from 'element-plus'
const stores = noticeld()
const store = useUserStore()
@ -26,7 +38,7 @@ async function getData() {
dataList.value = data.userList
formValue.value = Object.assign(data, {
type: data.type + '',
cate:data.cate+'',
cate: data.cate + ''
})
editorContent.value = data.content ? unescapeHTML(data.content) : ''
cate.value = data.cate
@ -37,7 +49,7 @@ const message = useMessage()
const { day, week } = useDate()
const { push } = useRouter()
const route = useRoute()
let cate = ref(1);
let cate = ref(1)
let formValue: any = ref({
type: 1,
status: 1,
@ -47,7 +59,7 @@ let formValue: any = ref({
source: '',
content: '',
isTop: 'N',
bannerImg:'',
bannerImg: ''
})
let rules = {
@ -91,13 +103,13 @@ function change(i: any) {
// console.log( formValue.cate)
}
function unescapeHTML(html: string) {
const doc = new DOMParser().parseFromString(html, 'text/html');
return doc.documentElement.textContent;
const doc = new DOMParser().parseFromString(html, 'text/html')
return doc.documentElement.textContent
}
function escapeHTML(html: string): string {
const tempElement = document.createElement('div');
tempElement.textContent = html;
return tempElement.innerHTML;
const tempElement = document.createElement('div')
tempElement.textContent = html
return tempElement.innerHTML
}
//
const handleChild2 = (data: string) => {
@ -126,9 +138,8 @@ async function sure() {
// }
if (!dataList.value) {
message.success("请选择要提醒的对象")
message.success('请选择要提醒的对象')
return
}
dataList.value.forEach((i: { userId: any }) => {
@ -137,15 +148,25 @@ async function sure() {
})
// console.log(formValue.value)
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({
id,
status,
isTop,
title,
source,
cate: cates,
noticeId,
type,
content,
userIdList
})
if (code === 200) {
showModalRef2.value = true
} else {
message.success(msg)
}
else { message.success(msg); }
}
const showModal = ref(false)
const showModalRef = ref(false)
const showModalRef2 = ref(false)
@ -159,12 +180,10 @@ function onNegativeClick() {
function onPositiveClick() {
showModalRef.value = false
sure()
}
function onPositiveClicks() {
showModalRefs.value = false
sure()
}
const dataList = ref()
//
@ -175,7 +194,6 @@ const handleChild = (data: any) => {
}
const handleClose = (tag: any) => {
dataList.value.splice(dataList.value.indexOf(tag), 1)
// console.log( dataList.value)
}
@ -191,18 +209,15 @@ const submitSave = (page: any)=>{
console.log(page)
if (store.user.isReview === 1) {
if (page === 1) {
showModalRef.value = true
} else {
showModalRefs.value = true
}
starts.value = page
// console.log(page,showModalRef.value, showModalRefs.value)
} else {
message.warning('您还未获得审核权限')
}
else{
message.warning("您还未获得审核权限")
}
}
getData()
const showModals = ref(false)
@ -247,8 +262,14 @@ const showModalRefs = ref(false)
</div>
<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"
require-mark-placement="left">
<n-form
ref="formRef"
:label-width="900"
:model="formValue"
:rules="rules"
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>
@ -291,53 +312,83 @@ const showModalRefs = ref(false)
<n-form-item v-if="formValue.reviewSource === 2 && cate != 9" label="情报类型" path="cate">
<div class="flex gap-20px cursor-pointer">
<div v-if="formValue.type==='1'" :class="cate == 1 ? 'img yes' : 'img'" @click="change(1)">
<img src="../images/icon-1.svg" alt="" class="ml15px mt8px">
<div
v-if="formValue.type === '1'"
:class="cate == 1 ? 'img yes' : 'img'"
@click="change(1)"
>
<img src="../images/icon-1.svg" alt="" class="ml15px mt8px" />
<div class="text-center text-14px text-#fff">外部环境</div>
</div>
<div v-if="formValue.type==='1'" :class="cate == 2 ? 'img yes' : 'img'" @click="change(2)">
<img src="../images/icon-2.svg" alt="" class="ml18px mt14px">
<div
v-if="formValue.type === '1'"
:class="cate == 2 ? 'img yes' : 'img'"
@click="change(2)"
>
<img src="../images/icon-2.svg" alt="" class="ml18px mt14px" />
<div class="text-center text-14px text-#fff">竞争对手</div>
</div>
<div v-if="formValue.type==='1'" :class="cate == 3 ? 'img yes' : 'img'" @click="change(3)">
<img src="../images/icon-3.svg" alt="" class="ml19px mt8px">
<div
v-if="formValue.type === '1'"
:class="cate == 3 ? 'img yes' : 'img'"
@click="change(3)"
>
<img src="../images/icon-3.svg" alt="" class="ml19px mt8px" />
<div class="text-center text-14px text-#fff">供方动向</div>
</div>
<div v-if="formValue.type==='2'" :class="cate == 4 ? 'img yes' : 'img'" @click="change(4)">
<img src="../images/icon-4.svg" alt="" class="ml17px mt10px">
<div
v-if="formValue.type === '2'"
:class="cate == 4 ? 'img yes' : 'img'"
@click="change(4)"
>
<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==='2'" :class="cate == 5 ? 'img yes' : 'img'" @click="change(5)">
<img src="../images/icon-5.svg" alt="" class="ml17px mt9px">
<div
v-if="formValue.type === '2'"
:class="cate == 5 ? 'img yes' : 'img'"
@click="change(5)"
>
<img src="../images/icon-5.svg" alt="" class="ml17px mt9px" />
<div class="text-center text-14px text-#fff">中国据点</div>
</div>
<div v-if="formValue.type==='2'" :class="cate == 6 ? 'img yes' : 'img'" @click="change(6)">
<img src="../images/icon-6.svg" alt="" class="ml15px mt8px">
<div
v-if="formValue.type === '2'"
:class="cate == 6 ? 'img yes' : 'img'"
@click="change(6)"
>
<img src="../images/icon-6.svg" alt="" class="ml15px mt8px" />
<div class="text-center text-14px text-#fff">调达本部</div>
</div>
</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
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
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"/>
<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="" />
@ -353,30 +404,44 @@ const showModalRefs = ref(false)
</n-form-item>
<n-button @click="showModals = true"> 文本内容预览 </n-button>
<br>
<br>
<br>
<n-button @click="thisClick" v-if="cate!=9">
情报公开范围
</n-button>
<br />
<br />
<br />
<n-button @click="thisClick" v-if="cate != 9"> </n-button>
<div class="mt15px h150px overflow-y-auto" v-if="cate != 9">
<el-tag v-for="i in dataList" :key="i" class="mx-1 my5px" closable :disable-transitions="false"
@close="handleClose(i)" type="info" size="large">
<el-tag
v-for="i in dataList"
:key="i"
class="mx-1 my5px"
closable
:disable-transitions="false"
@close="handleClose(i)"
type="info"
size="large"
>
{{ i.nickName }}
</el-tag>
</div>
<div class="text-end float-right block h50px pt10px">
<n-form-item>
<n-button attr-type="button" style=" padding: 0 20px;" @click="submitSave(2)">
<n-button attr-type="button" style="padding: 0 20px" @click="submitSave(2)">
拒绝
</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
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>
@ -384,68 +449,96 @@ const showModalRefs = ref(false)
<n-modal v-model:show="showModal">
<!-- <n-card style="width:1100px; height: 800px;" title="调达中心" :bordered="false" size="huge" role="dialog"
aria-modal="true"> -->
<UserPage :userDataList="setUserList" @clickChild="handleChild" @CloseThis="CloseThis"></UserPage>
<UserPage
:userDataList="setUserList"
@clickChild="handleChild"
@CloseThis="CloseThis"
></UserPage>
<!-- </n-card> -->
</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">
<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>
@click="showModalRef = false"
>暂缓</span
>
<span
class="inline-block w80px h25px text-#fff bg-#236EED ml5px text-center rounded-5px cursor-pointer"
@click="onPositiveClick">确认发布</span>
@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">
<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>
@click="showModalRefs = false"
>暂缓</span
>
<span
class="inline-block w80px h25px text-#fff bg-#236EED ml5px text-center rounded-5px cursor-pointer"
@click="onPositiveClicks">确认驳回</span>
@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" >
<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="">
<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>
<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>
@ -484,7 +577,7 @@ const showModalRefs = ref(false)
}
.add {
border: 1px solid #FFFFFF;
border: 1px solid #ffffff;
border-radius: 10px;
}
@ -492,10 +585,9 @@ const showModalRefs = ref(false)
display: table-cell;
vertical-align: middle;
text-align: center;
background-color: #C2C2C2;
background-color: #c2c2c2;
}
.top {
position: absolute;
right: 30px;
@ -503,7 +595,7 @@ const showModalRefs = ref(false)
}
.add {
border: 1px solid #FFFFFF;
border: 1px solid #ffffff;
border-radius: 10px;
}
@ -511,18 +603,17 @@ const showModalRefs = ref(false)
width: 80px;
height: 80px;
border-radius: 20px;
background-color: #C2C2C2;
background-color: #c2c2c2;
}
.img.yes {
background-color: #63BFB2;
background-color: #63bfb2;
}
.q-wrapper {
border-radius: 18px;
border: 1px solid #E7EBF5;
border: 1px solid #e7ebf5;
box-shadow: inset 1px 2px 12px rgba(14, 86, 221, 0.32);
overflow-y: auto;
height: 830px;
}
</style>