main
wwl 2024-05-21 10:10:16 +08:00
parent 405b215bf5
commit cdc9fff2d9
22 changed files with 3052 additions and 3273 deletions

View File

@ -23,8 +23,8 @@ onMounted(() => {
watchEffect(() => { watchEffect(() => {
// console.log( flgs.value,store.user.type, 'tech_service') // console.log( flgs.value,store.user.type, 'tech_service')
flgs.value = [1, 2, 3, 4].includes(store.user.type) flgs.value = [1, 2, 3, 4].includes(store.user.type)
userCode.value = ['admin', 'tech_service', 'footprint_dandang'].includes( userCode.value = ['admin', 'tech_service', 'footprint_dandang'].some((item) =>
store.user.roleCode store.user.roleCode?.includes(item)
) )
}) })
const options = [ const options = [
@ -108,9 +108,7 @@ const toFootPrint = () => {
<div class="inline-flex items-center relative"> <div class="inline-flex items-center relative">
<!-- 足迹 --> <!-- 足迹 -->
<!-- <div class="cursor-pointer w-40px h-40px z-200"> --> <!-- <div class="cursor-pointer w-40px h-40px z-200"> -->
<el-icon size="35" v-if="userCode" @click="toFootPrint" <el-icon size="35" v-if="userCode" @click="toFootPrint"><Platform /></el-icon>
><Platform
/></el-icon>
<!-- </div> --> <!-- </div> -->
<!-- 全屏小图标 --> <!-- 全屏小图标 -->
@ -139,12 +137,10 @@ const toFootPrint = () => {
class="bg-#fff/20 b-1px b-solid b-#fff rd-12px flex items-center h-52px px12px cursor-pointer" class="bg-#fff/20 b-1px b-solid b-#fff rd-12px flex items-center h-52px px12px cursor-pointer"
> >
<div size="small" @click="noticeShows"> <div size="small" @click="noticeShows">
<img <img src="../assets/images/tongzhi@2x.png" class="w20px mr5px mt--5px" />新着通知<span
src="../assets/images/tongzhi@2x.png" class="ml8px pl5px pr5px rounded-20px bg-#002FA7"
class="w20px mr5px mt--5px" >{{ store.user.reviewCount ?? 0 }}</span
/><span class="ml8px pl5px pr5px rounded-20px bg-#002FA7">{{ >
store.user.reviewCount ?? 0
}}</span>
</div> </div>
<!-- 跳转到碳中和页面的 --> <!-- 跳转到碳中和页面的 -->
<div class="notice" v-if="noticeShow"> <div class="notice" v-if="noticeShow">
@ -212,10 +208,7 @@ const toFootPrint = () => {
<!-- 当前登录用户信息 --> <!-- 当前登录用户信息 -->
<NDropdown show-arrow placement="bottom-end" size="huge" :options="options"> <NDropdown show-arrow placement="bottom-end" size="huge" :options="options">
<div class="cursor-pointer inline-flex items-center"> <div class="cursor-pointer inline-flex items-center">
<img <img src="@/assets/images/icon-user.svg" class="ml40px mr16px w60px h60px" />
src="@/assets/images/icon-user.svg"
class="ml40px mr16px w60px h60px"
/>
<!-- @click="toggle" --> <!-- @click="toggle" -->
<span>{{ store.user.nikeName ?? '游客' }}</span> <span>{{ store.user.nikeName ?? '游客' }}</span>
<img src="@/assets/images/icon-more.svg" class="ml30px w13px" /> <img src="@/assets/images/icon-more.svg" class="ml30px w13px" />

View File

@ -80,16 +80,16 @@ const router = createRouter({
name: 'DetailInfos', name: 'DetailInfos',
component: () => import('@/views/extermal/Article/Details.vue') component: () => import('@/views/extermal/Article/Details.vue')
}, },
{ // {
path: '/external/Board', // path: '/external/Board',
name: 'BoardlInfo', // name: 'BoardlInfo',
component: () => import('@/views/extermal/Board/index.vue') // component: () => import('@/views/extermal/Board/index.vue')
}, // },
{ // {
path: '/external/Process', // path: '/external/Process',
name: 'Process1', // name: 'Process1',
component: () => import('@/views/extermal/Process/index.vue') // component: () => import('@/views/extermal/Process/index.vue')
}, // },
// 内部首页 // 内部首页
{ {
@ -356,6 +356,16 @@ const router = createRouter({
name: 'Process', name: 'Process',
component: () => import('@/views/home/intelligence/process/Process.vue') component: () => import('@/views/home/intelligence/process/Process.vue')
}, },
{
path: '/external/Board',
name: 'BoardlInfo',
component: () => import('@/views/extermal/Board/index.vue')
},
{
path: '/external/Process',
name: 'Process1',
component: () => import('@/views/extermal/Process/index.vue')
},
{ {
path: '/Home/Process/ProcessInfo/:id', path: '/Home/Process/ProcessInfo/:id',
meta: { title: '情报审批详情' }, meta: { title: '情报审批详情' },

View File

@ -19,7 +19,7 @@ export const useUserStore = defineStore('user', () => {
token: '', token: '',
appLoginCount: 0, appLoginCount: 0,
appLoginToDayCount: 0, appLoginToDayCount: 0,
isUpPwd:0, isUpPwd: 0
}) })
async function getUser() { async function getUser() {
@ -31,13 +31,13 @@ export const useUserStore = defineStore('user', () => {
user.value = Object.assign(data, { user.value = Object.assign(data, {
token: token.value token: token.value
}) })
if(a.includes(data.roleCode)){ if (a.some((item) => data.roleCode?.includes(item))) {
user.value.isReview = 1 user.value.isReview = 1
} }
if(b.includes(data.roleCode)){ if (b.some((item) => data.roleCode?.includes(item))) {
user.value.isPublish = 1 user.value.isPublish = 1
} }
// console.log( user.value) // console.log('----40----', user.value)
} catch (error) { } catch (error) {
LogOut() LogOut()
} }
@ -61,7 +61,7 @@ export const useUserStore = defineStore('user', () => {
appLoginCount: 0, appLoginCount: 0,
isUpPwd: 0 isUpPwd: 0
} }
console.log(user.value) // console.log('------64-', user.value)
push({ name: 'Entry' }) push({ name: 'Entry' })
} }
return { user, getUser, LogOut } return { user, getUser, LogOut }

View File

@ -1,15 +1,19 @@
<template> <template>
<div class="page"> <HomeHead class="top"> </HomeHead>
<HomeHead class="top"> <div class="h-full relative flex flex-col">
<!-- <template #content> <div class="font-600 flex items-end mt30px">
<HomeHeadSearch /> <div class="text-36px">
</template> --> {{ not.article.cate == 7 ? '外部新增-News' : '外部新增-重要通知' }}
</HomeHead> </div>
<div class="back" @click="push({ name: 'external' })">返回首页</div> <div class="text-18px ml40px mr25px">{{ day }}</div>
<div class="bg-#fff p30px rounded-5px mt40px overflow-y-auto max-h980px"> <div class="text-18px">{{ week }}</div>
<n-form :label-width="900" size="medium" :model="formValue"> </div>
<div
class="q-wrapper flex-1 rounded-5px overflow-y-auto mt30px text-#142142 flex flex-col bg-#fff p30px"
>
<n-form :label-width="800" size="medium" :model="formValue">
<n-form-item label="标题" path="title"> <n-form-item label="标题" path="title">
<n-input v-model:value="formValue.title" placeholder="" /> <n-input class="w90%" v-model:value="formValue.title" placeholder="" />
</n-form-item> </n-form-item>
<n-form-item v-if="formValue.cate == 8" label="是否置顶" path="isTop"> <n-form-item v-if="formValue.cate == 8" label="是否置顶" path="isTop">
<n-radio-group v-model:value="formValue.isTop" name="radiogroup"> <n-radio-group v-model:value="formValue.isTop" name="radiogroup">
@ -35,9 +39,7 @@
<n-form-item label="内容" path="title"> <n-form-item label="内容" path="title">
<Editor @getChildData="handleChild" class="bg-#fff" /> <Editor @getChildData="handleChild" class="bg-#fff" />
</n-form-item> </n-form-item>
<n-button @click="thisClick" v-if="formValue.cate == 8"> <n-button @click="thisClick" v-if="formValue.cate == 8"> </n-button>
情报公开范围
</n-button>
<div class="mt15px h150px overflow-y-auto" v-if="formValue.cate == 8"> <div class="mt15px h150px overflow-y-auto" v-if="formValue.cate == 8">
<el-tag <el-tag
v-for="i in dataList" v-for="i in dataList"
@ -55,16 +57,11 @@
<n-form-item> <n-form-item>
<n-button @click="showModal1 = true"> 文本内容预览</n-button> <n-button @click="showModal1 = true"> 文本内容预览</n-button>
</n-form-item> </n-form-item>
<el-button type="primary" class="mt20px" @click="saveThis" <el-button type="primary" class="mt20px w-100px" @click="saveThis"></el-button>
>提交</el-button
>
</div> </div>
<n-modal v-model:show="showModal1"> <n-modal v-model:show="showModal1">
<div class="flex w80% p30px bg-#fff my40px rounded-30px"> <div class="flex w80% p30px bg-#fff my40px rounded-30px">
<div <div class="overflow-y-auto h800px container" v-html="editorContent"></div>
class="overflow-y-auto h800px container"
v-html="editorContent"
></div>
</div> </div>
</n-modal> </n-modal>
<div> <div>
@ -82,8 +79,8 @@
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import Editor from "@/views/home/intelligence/components/TinyECE.vue"; import Editor from '@/views/home/intelligence/components/TinyECE.vue'
import UserPage from "../../home/intelligence/process/UserPages.vue"; import UserPage from '../../home/intelligence/process/UserPages.vue'
import { import {
NModal, NModal,
NCard, NCard,
@ -96,68 +93,67 @@ import {
NSpace, NSpace,
NRadioGroup, NRadioGroup,
useMessage, useMessage,
treeDark, treeDark
} from "naive-ui"; } from 'naive-ui'
import HomeHead from "@/views/home/components/HomeHead.vue"; import HomeHead from '@/views/home/components/HomeHead.vue'
import { noticeld } from "@/stores/modules/noticeId"; import { noticeld } from '@/stores/modules/noticeId'
import { saveArticle,trendsAdd } from "@/api/daikin/base"; import { saveArticle, trendsAdd } from '@/api/daikin/base'
const editorContent = ref(); import { useDate } from '@/views/home/hooks/useDate'
const { push } = useRouter(); const editorContent = ref()
const message = useMessage(); const { push } = useRouter()
const not = noticeld(); const message = useMessage()
const { day, week } = useDate()
const not = noticeld()
// const CloseThis = ()=>{ // const CloseThis = ()=>{
// mask.value = false // mask.value = false
// } // }
let formValue: any = ref({ let formValue: any = ref({
type: "1", type: '1',
cate: not.article.cate, cate: not.article.cate,
title: "", title: '',
tag: "", tag: '',
source: "", source: '',
content: "", content: '',
reviewSource: "3", reviewSource: '3',
isTop: "N", isTop: 'N',
treeSource: "3", treeSource: '3'
}); })
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 handleClose = (tag: any) => { const handleClose = (tag: any) => {
dataList.value.splice(dataList.value.indexOf(tag), 1); dataList.value.splice(dataList.value.indexOf(tag), 1)
}; }
// //
async function save() { async function save() {
let userIdList: any[] = []; let userIdList: any[] = []
const cont = editorContent.value; const cont = editorContent.value
const content = escapeHTML(cont); const content = escapeHTML(cont)
const { title, reviewSource, tag, treeSource, source, type, isTop } = const { title, reviewSource, tag, treeSource, source, type, isTop } = formValue.value
formValue.value; const cate = not.article.cate
const cate = not.article.cate;
// console.log(formValue.value, content,cate) // console.log(formValue.value, content,cate)
if (dataList.value) { if (dataList.value) {
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
if (not.article.cate === '9') { if (not.article.cate === '9') {
const { msg, code } = await trendsAdd({title,content}); const { msg, code } = await trendsAdd({ title, content })
if (code === 200) { if (code === 200) {
message.success("新增成功"); message.success('新增成功')
} else { } else {
message.success(msg); message.success(msg)
} }
} else {
}
else{
const { msg, code } = await saveArticle({ const { msg, code } = await saveArticle({
title, title,
tag: "", tag: '',
isTop, isTop,
treeSource, treeSource,
reviewSource, reviewSource,
@ -165,50 +161,49 @@ async function save() {
cate, cate,
type, type,
content, content,
userIdList, userIdList
}); })
if (code === 200) { if (code === 200) {
message.success("新增成功"); message.success('新增成功')
} else { } else {
message.success(msg); message.success(msg)
} }
} }
push({ name: "external" }); push({ name: 'external' })
} }
// //
const handleChild = (data: string) => { const handleChild = (data: string) => {
editorContent.value = data; editorContent.value = data
// console.log(data) // console.log(data)
}; }
// //
const saveThis = (e: { preventDefault: () => void }) => { const saveThis = (e: { preventDefault: () => void }) => {
e.preventDefault(); e.preventDefault()
save(); save()
}; }
const stores = noticeld(); const stores = noticeld()
const showModal = ref(false); const showModal = ref(false)
const showModal1 = ref(false); const showModal1 = ref(false)
const setUserList = ref(); const setUserList = ref()
const dataList = ref(); const dataList = 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
}; }
const CloseThis = (data: boolean) => { const CloseThis = (data: boolean) => {
showModal.value = data; showModal.value = data
}; }
const handleChild1 = (data: any) => { const handleChild1 = (data: any) => {
const { showModal: show, multipleSelection } = data; const { showModal: show, multipleSelection } = data
console.log(show); console.log(show)
showModal.value = unref(show); showModal.value = unref(show)
dataList.value = unref(multipleSelection); dataList.value = unref(multipleSelection)
}; }
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
::-webkit-scrollbar { ::-webkit-scrollbar {
width: 1px; width: 1px;
@ -225,16 +220,28 @@ const handleChild1 = (data: any) => {
justify-content: center; justify-content: center;
} }
.top { .top {
position: absolute;
right: 30px; right: 30px;
top: 0px; top: -92px;
}
::-webkit-scrollbar {
width: 1px;
}
.q-wrapper {
border-radius: 18px;
border: 1px solid #e7ebf5;
box-shadow: inset 1px 2px 12px rgba(14, 86, 221, 0.32);
overflow: auto;
} }
.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;
@ -264,7 +271,7 @@ const handleChild1 = (data: any) => {
} }
} }
.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;

View File

@ -40,7 +40,9 @@ const userCode = ref(false)
const shormA = ref(false) const shormA = ref(false)
const shormB = ref(false) const shormB = ref(false)
watchEffect(() => { watchEffect(() => {
userCode.value = ['admin', 'waibuyemianguanliyuan', 'tech_service'].includes(store.user.roleCode) userCode.value = ['admin', 'waibuyemianguanliyuan', 'tech_service'].some((item) =>
store.user.roleCode?.includes(item)
)
console.log(isUpPwds.value, userCode.value) console.log(isUpPwds.value, userCode.value)
isUpPwds.value = store.user.isUpPwd === 2 ? true : false isUpPwds.value = store.user.isUpPwd === 2 ? true : false
console.log(isUpPwds.value, 'xiaolu0000222') console.log(isUpPwds.value, 'xiaolu0000222')
@ -599,14 +601,14 @@ const demandWithdraws = async (obj) => {
<div class="cards w34% h800px page-wrapper"> <div class="cards w34% h800px page-wrapper">
<div class="cards_title">News</div> <div class="cards_title">News</div>
<el-button <el-button
v-if="userCode" v-if="false && userCode"
type="primary" type="primary"
class="absolute right-164px top-15px" class="absolute right-164px top-15px"
@click="push('/external/Process')" @click="push('/external/Process')"
>流程列表</el-button >流程列表</el-button
> >
<el-button <el-button
v-if="userCode" v-if="false && userCode"
type="primary" type="primary"
class="absolute right-80px top-15px" class="absolute right-80px top-15px"
@click="toDetail2(7)" @click="toDetail2(7)"
@ -660,13 +662,17 @@ const demandWithdraws = async (obj) => {
<div class="text-26px text-#142142 font-extrabold mb-10px pl20px">重要通知</div> <div class="text-26px text-#142142 font-extrabold mb-10px pl20px">重要通知</div>
<div class="flex"> <div class="flex">
<el-button <el-button
v-if="userCode" v-if="false && userCode"
type="primary" type="primary"
class="mt0px mr0px" class="mt0px mr0px"
@click="push({ path: '/external/Process', query: { cate: '8' } })" @click="push({ path: '/external/Process', query: { cate: '8' } })"
>流程列表</el-button >流程列表</el-button
> >
<el-button v-if="userCode" type="primary" class="mt0px mr10px" @click="toDetail2(8)" <el-button
v-if="false && userCode"
type="primary"
class="mt0px mr10px"
@click="toDetail2(8)"
>+ 新增</el-button >+ 新增</el-button
> >
<span <span

View File

@ -1,15 +1,15 @@
<script setup lang="ts"> <script setup lang="ts">
import { getImg } from "./images"; import { getImg } from './images'
import { import {
getNoticeList, getNoticeList,
deleteWithdraw, deleteWithdraw,
getManagerList, getManagerList,
getExternalManagerDetail, // news/- getExternalManagerDetail, // news/-
externalWithdraw, // news/- externalWithdraw, // news/-
getExternalManagerList, // news/- getExternalManagerList // news/-
} from "@/api/daikin/base"; } from '@/api/daikin/base'
import Editor from "@/views/home/intelligence/components/TinyECE.vue"; import Editor from '@/views/home/intelligence/components/TinyECE.vue'
import UserPage from "../../home/intelligence/process/UserPages.vue"; import UserPage from '../../home/intelligence/process/UserPages.vue'
import { import {
NModal, NModal,
NCard, NCard,
@ -24,137 +24,137 @@ import {
useMessage, useMessage,
treeDark, treeDark,
NTag NTag
} from "naive-ui"; } from 'naive-ui'
import { useUserStore } from "@/stores/modules/user"; import { useUserStore } from '@/stores/modules/user'
import HomeHead from "@/views/home/components/HomeHead.vue"; import HomeHead from '@/views/home/components/HomeHead.vue'
import { noticeld } from "@/stores/modules/noticeId"; import { noticeld } from '@/stores/modules/noticeId'
import { saveArticle } from "@/api/daikin/base"; import { saveArticle } from '@/api/daikin/base'
const editorContent = ref(); import { useDate } from '@/views/home/hooks/useDate'
const { push } = useRouter(); const editorContent = ref()
const message = useMessage(); const { push } = useRouter()
const not = noticeld(); const message = useMessage()
const not = noticeld()
const route = useRoute() const route = useRoute()
const activeNames = ref("2"); const activeNames = ref('2')
const Status = reactive({ const Status = reactive({
reviewStatus: 1, reviewStatus: 1,
reviewSource: 2, reviewSource: 2
}); })
const cate = ref('7') const cate = ref('7')
const activeName = ref("0"); const activeName = ref('0')
const tabIndex = ref("0"); const tabIndex = ref('0')
const tabs = ref([ const tabs = ref([
{ {
name: "审核中", name: '审核中',
icon: getImg("shhz2@2x.png"), icon: getImg('shhz2@2x.png'),
icons: getImg("shhz1@2x.png"), icons: getImg('shhz1@2x.png'),
id: 0, id: 0
}, },
{ {
name: "已审核", name: '已审核',
icon: getImg("wanc2@2x.png"), icon: getImg('wanc2@2x.png'),
icons: getImg("wanc1@2x.png"), icons: getImg('wanc1@2x.png'),
id: 1, id: 1
}, },
{ {
name: "驳回/撤回", name: '驳回/撤回',
icon: getImg("boh2@2x.png"), icon: getImg('boh2@2x.png'),
icons: getImg("boh1@2x.png"), icons: getImg('boh1@2x.png'),
id: 2, id: 2
}, }
]); ])
const listData = ref<any>([]); const listData = ref<any>([])
const store2 = useUserStore(); const store2 = useUserStore()
// //
const handleClick = (tab: TabsPaneContext, event: Event) => { const handleClick = (tab: TabsPaneContext, event: Event) => {
tabIndex.value = tab.index; tabIndex.value = tab.index
switch (tab.index) { switch (tab.index) {
case "0": case '0':
getPageList("1"); getPageList('1')
break; break
case "1": case '1':
// //
getPageList("3"); getPageList('3')
break; break
case "2": case '2':
// //
getPageList("4"); getPageList('4')
break; break
default: default:
getPageList("1"); getPageList('1')
break; break
}
} }
};
async function getPageList(reviewStatus: string) { async function getPageList(reviewStatus: string) {
const { pageNum, pageSize } = pageInfo; const { pageNum, pageSize } = pageInfo
const resp = await getExternalManagerList({ const resp = await getExternalManagerList({
pageNum, pageNum,
pageSize, pageSize,
reviewStatus, reviewStatus,
cate: cate.value, cate: cate.value
}); })
// listData.value = []; // listData.value = [];
listData.value = resp?.rows || []; listData.value = resp?.rows || []
} }
// //
const clickCancel = (data: any) => { const clickCancel = (data: any) => {
const { id, noticeId, reviewStatus } = data; const { id, noticeId, reviewStatus } = data
externalWithdraw(id).then((res) => { externalWithdraw(id).then((res) => {
console.log(res, "删除结果"); console.log(res, '删除结果')
getPageList("1"); getPageList('1')
}); })
}; }
let formValue: any = ref({ let formValue: any = ref({
type: "1", type: '1',
cate: not.article.cate, cate: not.article.cate,
title: "", title: '',
tag: "", tag: '',
source: "", source: '',
content: "", content: '',
reviewSource: "3", reviewSource: '3',
isTop: "N", isTop: 'N',
treeSource: "1", treeSource: '1'
}); })
const pageInfo = reactive({ const pageInfo = reactive({
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
type: "1", type: '1',
cate: "7", cate: '7',
total: 10, total: 10
}); })
onMounted(async () => { onMounted(async () => {
cate.value = route.query.cate cate.value = route.query.cate
getPageList("1"); getPageList('1')
}); })
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 handleClose = (tag: any) => { const handleClose = (tag: any) => {
dataList.value.splice(dataList.value.indexOf(tag), 1); dataList.value.splice(dataList.value.indexOf(tag), 1)
}; }
// //
async function save() { async function save() {
let userIdList: any[] = []; let userIdList: any[] = []
const cont = editorContent.value; const cont = editorContent.value
const content = escapeHTML(cont); const content = escapeHTML(cont)
const { title, reviewSource, tag, treeSource, source, type, isTop } = const { title, reviewSource, tag, treeSource, source, type, isTop } = formValue.value
formValue.value; const cate = not.article.cate
const cate = not.article.cate;
// console.log(formValue.value, content,cate) // console.log(formValue.value, content,cate)
if (dataList.value) { if (dataList.value) {
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 saveArticle({ const { msg, code } = await saveArticle({
title, title,
tag: "", tag: '',
isTop, isTop,
treeSource, treeSource,
reviewSource, reviewSource,
@ -162,54 +162,57 @@ async function save() {
cate, cate,
type, type,
content, content,
userIdList, userIdList
}); })
if (code === 200) { if (code === 200) {
message.success("新增成功"); message.success('新增成功')
} else { } else {
message.success(msg); message.success(msg)
} }
push({ name: "external" }); push({ name: 'external' })
} }
// //
const handleChild = (data: string) => { const handleChild = (data: string) => {
editorContent.value = data; editorContent.value = data
// console.log(data) // console.log(data)
}; }
// //
const saveThis = (e: { preventDefault: () => void }) => { const saveThis = (e: { preventDefault: () => void }) => {
e.preventDefault(); e.preventDefault()
save(); save()
}; }
const stores = noticeld(); const { day, week } = useDate()
const showModal = ref(false); const stores = noticeld()
const setUserList = ref(); const showModal = ref(false)
const dataList = ref(); const setUserList = ref()
const dataList = 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
}; }
const CloseThis = (data: boolean) => { const CloseThis = (data: boolean) => {
showModal.value = data; showModal.value = data
}; }
const handleChild1 = (data: any) => { const handleChild1 = (data: any) => {
const { showModal: show, multipleSelection } = data; const { showModal: show, multipleSelection } = data
console.log("🚀 ~ file: index.vue:197 ~ data:", data) console.log('🚀 ~ file: index.vue:197 ~ data:', data)
// showModal.value = unref(show); // showModal.value = unref(show);
// dataList.value = unref(multipleSelection); // dataList.value = unref(multipleSelection);
}; }
</script> </script>
<template> <template>
<div class="page"> <HomeHead class="top"> </HomeHead>
<HomeHead class="top"> <div class="h-full relative flex flex-col">
<!-- <template #content> <div class="font-600 flex items-end mt30px">
<HomeHeadSearch /> <div class="text-36px">{{ cate == 7 ? '外部审批流程-News' : '外部审批流程-重要通知' }}</div>
</template> --> <div class="text-18px ml40px mr25px">{{ day }}</div>
</HomeHead> <div class="text-18px">{{ week }}</div>
<div class="back" @click="push({ name: 'external' })">返回首页</div> </div>
<div class="bg-#fff p30px rounded-5px mt40px overflow-y-scroll h900px"> <div
class="q-wrapper flex-1 rounded-5px mt30px overflow-y-scroll h900px text-#142142 flex flex-col bg-#fff p30px"
>
<el-tabs v-model="activeName" @tab-click="handleClick"> <el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane v-for="item in tabs" :key="item"> <el-tab-pane v-for="item in tabs" :key="item">
<template #label> <template #label>
@ -263,28 +266,20 @@ const handleChild1 = (data: any) => {
<el-dropdown-menu> <el-dropdown-menu>
<el-dropdown-item v-if="i.firstReviewName"> <el-dropdown-item v-if="i.firstReviewName">
<div class="ml20px text-#808696 !text-12px flex"> <div class="ml20px text-#808696 !text-12px flex">
<span class="min-w120px" <span class="min-w120px">初审人{{ i.firstReviewName }}</span>
>初审人{{ i.firstReviewName }}</span
>
<span class="ml20px">初审时间{{ i.firstReviewTime }}</span> <span class="ml20px">初审时间{{ i.firstReviewTime }}</span>
</div> </div>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item v-if="i.ultimateReviewName"> <el-dropdown-item v-if="i.ultimateReviewName">
<div class="ml20px text-#808696 !text-12px flex"> <div class="ml20px text-#808696 !text-12px flex">
<span class="min-w120px" <span class="min-w120px">终审人{{ i.ultimateReviewName }}</span>
>终审人{{ i.ultimateReviewName }}</span <span class="ml20px">终审时间{{ i.ultimateReviewTime }}</span>
>
<span class="ml20px"
>终审时间{{ i.ultimateReviewTime }}</span
>
</div> </div>
</el-dropdown-item> </el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</template> </template>
</el-dropdown> </el-dropdown>
<span class="shrink-0 ml38px text-#808696 w220px">{{ <span class="shrink-0 ml38px text-#808696 w220px">{{ i.createTime }}</span>
i.createTime
}}</span>
<span <span
v-if="store2.user.isReview > 0 && i.publishName" v-if="store2.user.isReview > 0 && i.publishName"
class="ml20px text-#808696 text-16px flex-1" class="ml20px text-#808696 text-16px flex-1"
@ -314,16 +309,28 @@ const handleChild1 = (data: any) => {
justify-content: center; justify-content: center;
} }
.top { .top {
position: absolute;
right: 30px; right: 30px;
top: 0px; top: -92px;
}
::-webkit-scrollbar {
width: 1px;
}
.q-wrapper {
border-radius: 18px;
border: 1px solid #e7ebf5;
box-shadow: inset 1px 2px 12px rgba(14, 86, 221, 0.32);
overflow: auto;
} }
.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;
@ -353,7 +360,7 @@ const handleChild1 = (data: any) => {
} }
} }
.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;

View File

@ -11,7 +11,9 @@ const store = useUserStore()
const isUpPwds = ref(false) const isUpPwds = ref(false)
const userCode = ref(false) const userCode = ref(false)
watchEffect(() => { watchEffect(() => {
userCode.value = ['admin', 'cd_dandang', 'tech_service'].includes(store.user.roleCode) userCode.value = ['admin', 'cd_dandang', 'tech_service'].some((item) =>
store.user.roleCode?.includes(item)
)
isUpPwds.value = store.user.isUpPwd === 2 ? true : false isUpPwds.value = store.user.isUpPwd === 2 ? true : false
}) })
const activeCard5NavKey = ref('DIS') const activeCard5NavKey = ref('DIS')

View File

@ -13,7 +13,9 @@ import { Swiper, SwiperSlide } from 'swiper/vue'
import { Autoplay, Navigation, Pagination, A11y } from 'swiper' import { Autoplay, Navigation, Pagination, A11y } from 'swiper'
const modules = [Autoplay, Pagination, Navigation, A11y] const modules = [Autoplay, Pagination, Navigation, A11y]
const store = useUserStore() const store = useUserStore()
const userCode = ['admin', 'bcp_dandnag', 'tech_service'].includes(store.user.roleCode) const userCode = ['admin', 'bcp_dandnag', 'tech_service'].some((item) =>
store.user.roleCode?.includes(item)
)
// import { da } from 'element-plus/es/locale/index.js' // import { da } from 'element-plus/es/locale/index.js'
const { day, week } = useDate() const { day, week } = useDate()

View File

@ -7,69 +7,66 @@
</li> </li>
<div id="earth" class="earth"></div> <div id="earth" class="earth"></div>
</ul> </ul>
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
const numCards = ref(9)
const numCards = ref(9); const mouseX = ref(0)
const mouseX = ref(0); const mouseY = ref(0)
const mouseY = ref(0); const isDragging = ref(false)
const isDragging = ref(false);
const handleMouseMove = (event) => { const handleMouseMove = (event) => {
const rect = event.currentTarget.getBoundingClientRect(); const rect = event.currentTarget?.getBoundingClientRect()
mouseX.value = event.clientX - rect.left; mouseX.value = event.clientX - rect.left
mouseY.value = event.clientY - rect.top; mouseY.value = event.clientY - rect.top
}; }
const updateRotation = () => { const updateRotation = () => {
const cardRefs = ref([]); const cardRefs = ref([])
const earth = ref(null); const earth = ref(null)
onMounted(() => { onMounted(() => {
cardRefs.value = document.querySelectorAll('#ul1 li'); cardRefs.value = document.querySelectorAll('#ul1 li')
earth.value = document.getElementById('earth'); earth.value = document.getElementById('earth')
setInterval(() => { setInterval(() => {
cardRefs.value.forEach((card, index) => { cardRefs.value.forEach((card, index) => {
const d = (360 / numCards.value) * index + mouseX.value / 10; const d = (360 / numCards.value) * index + mouseX.value / 10
card.style.transform = `rotateY(${d}deg) translateZ(350px)`; card.style.transform = `rotateY(${d}deg) translateZ(350px)`
if (Math.abs(d) < 30) { if (Math.abs(d) < 30) {
card.style.zIndex = 2; card.style.zIndex = 2
if (earth.value) { if (earth.value) {
earth.value.style.transform = 'translateZ(-400px)'; earth.value.style.transform = 'translateZ(-400px)'
} }
} else { } else {
card.style.zIndex = -1; card.style.zIndex = -1
if (earth.value) { if (earth.value) {
earth.value.style.transform = 'translateZ(400px)'; earth.value.style.transform = 'translateZ(400px)'
} }
} }
}); })
}, 30); }, 30)
}); })
}; }
const autoRotate = () => { const autoRotate = () => {
const interval = setInterval(() => { const interval = setInterval(() => {
if (!isDragging.value) { if (!isDragging.value) {
// //
rotationY.value += 1; rotationY.value += 1
} }
}, 30); }, 30)
onMounted(() => { onMounted(() => {
clearInterval(interval); clearInterval(interval)
}); })
}; }
updateRotation(); updateRotation()
autoRotate(); autoRotate()
</script> </script>
<style lang="less"> <style lang="less">
* { * {
margin: 0; margin: 0;
@ -112,7 +109,6 @@ body {
/* font-size: 30px; */ /* font-size: 30px; */
p { p {
font-size: 15px; font-size: 15px;
} }
} }
@ -137,4 +133,3 @@ body {
transition: transform 0.5s ease; transition: transform 0.5s ease;
} }
</style> </style>

View File

@ -3,11 +3,12 @@
<ul id="ul1"> <ul id="ul1">
<li class="ation-li" v-for="(item, index) in props.dataE" :key="index" ref="cards"> <li class="ation-li" v-for="(item, index) in props.dataE" :key="index" ref="cards">
<div class="pt10px pb10px text-15px title">{{ item.title }}</div> <div class="pt10px pb10px text-15px title">{{ item.title }}</div>
<div class="text-12px leading-15px sub-title" @click="downloadHandle(item)">{{item.content}}</div> <div class="text-12px leading-15px sub-title" @click="downloadHandle(item)">
{{ item.content }}
</div>
</li> </li>
<div id="earth" class="earth"></div> <div id="earth" class="earth"></div>
</ul> </ul>
</div> </div>
</template> </template>
@ -19,86 +20,80 @@ const downloadHandle = (item) => {
emit('downloadHandle', item, 5) emit('downloadHandle', item, 5)
} }
const props = defineProps({
const props = defineProps({// //
dataE: { dataE: {
type: Array, // type: Array, //
default:[],// default: [] //
} }
}) })
const numCards = ref(10)
const mouseX = ref(0)
const numCards = ref(10); const mouseY = ref(0)
const mouseX = ref(0); const isDragging = ref(false)
const mouseY = ref(0);
const isDragging = ref(false);
const handleMouseMove = (event) => { const handleMouseMove = (event) => {
const rect = event.currentTarget.getBoundingClientRect(); const rect = event.currentTarget?.getBoundingClientRect()
mouseX.value = event.clientX - rect.left; mouseX.value = event.clientX - rect.left
mouseY.value = event.clientY - rect.top; mouseY.value = event.clientY - rect.top
}; }
watch( watch(
() => props.dataE, () => props.dataE,
(newValue, oldValue) => { (newValue, oldValue) => {
nextTick(() => { nextTick(() => {
updateRotation(); updateRotation()
// autoRotate(); // autoRotate();
}) })
} }
) )
const updateRotation = () => { const updateRotation = () => {
const cardRefs = ref([]); const cardRefs = ref([])
const earth = ref(null); const earth = ref(null)
cardRefs.value = document.querySelectorAll('#ul1 li'); cardRefs.value = document.querySelectorAll('#ul1 li')
earth.value = document.getElementById('earth'); earth.value = document.getElementById('earth')
console.log(cardRefs, 1111) console.log(cardRefs, 1111)
setInterval(() => { setInterval(() => {
numCards.value = cardRefs.value.length; numCards.value = cardRefs.value.length
cardRefs.value.forEach((card, index) => { cardRefs.value.forEach((card, index) => {
const d = (360 / numCards.value) * index + mouseX.value / 10; const d = (360 / numCards.value) * index + mouseX.value / 10
let radian = d * Math.PI / 180; let radian = (d * Math.PI) / 180
let opacity = (Math.cos(radian) + 1) / 2; let opacity = (Math.cos(radian) + 1) / 2
card.style.transform = `rotateY(${d}deg) translateZ(280px) rotateY(${-d}deg)`; card.style.transform = `rotateY(${d}deg) translateZ(280px) rotateY(${-d}deg)`
card.style.opacity = opacity * opacity; card.style.opacity = opacity * opacity
if (Math.abs(d) < 30) { if (Math.abs(d) < 30) {
card.style.zIndex = 2; card.style.zIndex = 2
if (earth.value) { if (earth.value) {
earth.value.style.transform = 'translateZ(-400px)'; earth.value.style.transform = 'translateZ(-400px)'
} }
} else { } else {
card.style.zIndex = -1; card.style.zIndex = -1
if (earth.value) { if (earth.value) {
earth.value.style.transform = 'translateZ(400px)'; earth.value.style.transform = 'translateZ(400px)'
} }
} }
}); })
}, 30); }, 30)
}; }
const autoRotate = () => { const autoRotate = () => {
const interval = setInterval(() => { const interval = setInterval(() => {
if (!isDragging.value) { if (!isDragging.value) {
// //
mouseY.value += 1; mouseY.value += 1
} }
}, 30); }, 30)
onMounted(() => { onMounted(() => {
clearInterval(interval); clearInterval(interval)
}); })
}; }
</script> </script>
<style lang="less"> <style lang="less">
* { * {
margin: 0; margin: 0;
@ -135,7 +130,7 @@ body {
border-radius: 10px; border-radius: 10px;
overflow: hidden; overflow: hidden;
// background: rgba(14, 116, 238, 0.8); // background: rgba(14, 116, 238, 0.8);
background-image: url("./images/biaoq.png"); background-image: url('./images/biaoq.png');
color: rgb(255, 255, 255); color: rgb(255, 255, 255);
line-height: 10px; line-height: 10px;
text-align: center; text-align: center;
@ -143,7 +138,6 @@ body {
/* font-size: 30px; */ /* font-size: 30px; */
p { p {
font-size: 15px; font-size: 15px;
} }
} }
@ -176,7 +170,7 @@ body {
color: white; color: white;
} }
.sub-title { .sub-title {
color: #00E4FF; color: #00e4ff;
text-align: start; text-align: start;
} }
} }

View File

@ -15,7 +15,9 @@ const store = useUserStore()
const { push } = useRouter() const { push } = useRouter()
const route = useRoute() const route = useRoute()
const userCode = ['admin', 'csr_dandang', 'tech_service'].includes(store.user.roleCode) const userCode = ['admin', 'csr_dandang', 'tech_service'].some((item) =>
store.user.roleCode?.includes(item)
)
const Navs = [ const Navs = [
{ name: '集团*部门方针' }, { name: '集团*部门方针' },
{ name: '年度活动日程表' }, { name: '年度活动日程表' },

View File

@ -10,7 +10,9 @@ import ModifyB from './modifyB.vue'
import { message } from '@/utils/message'; import { message } from '@/utils/message';
import { useUserStore } from '@/stores/modules/user' import { useUserStore } from '@/stores/modules/user'
const store = useUserStore() const store = useUserStore()
const userCode = ['admin','csr_dandang','tech_service'].includes(store.user.roleCode) const userCode = ['admin','csr_dandang','tech_service'].some((item) =>
store.user.roleCode?.includes(item)
)
const { chartRef, option } = charData() const { chartRef, option } = charData()
const { chartRef: chartRefP1, option: optionP1 } = pieData1() const { chartRef: chartRefP1, option: optionP1 } = pieData1()

View File

@ -16,8 +16,8 @@ const store = useUserStore()
const { push } = useRouter() const { push } = useRouter()
const message = useMessage() const message = useMessage()
const userCode = ['admin', 'csr_dandang', 'tech_service'].includes( const userCode = ['admin', 'csr_dandang', 'tech_service'].some((item) =>
store.user.roleCode store.user.roleCode?.includes(item)
) )
const swipeRef = ref<any>(null) const swipeRef = ref<any>(null)
const dataList = ref([]) const dataList = ref([])
@ -85,9 +85,7 @@ const openUrl = async (url) => {
return return
} }
srcType.value = getLastSubstring(url) srcType.value = getLastSubstring(url)
if ( if (['doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'pdf'].includes(srcType.value)) {
['doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'pdf'].includes(srcType.value)
) {
// src.value = filePath // src.value = filePath
// pdfShow.value = true // pdfShow.value = true
url = 'https://view.xdocin.com/view?src=' + url url = 'https://view.xdocin.com/view?src=' + url
@ -96,19 +94,10 @@ const openUrl = async (url) => {
window.open( window.open(
url, url,
'', '',
'width=' + 'width=' + screenWidth + ',height=' + screenHeight + ',top=' + 0 + ',left=' + 0
screenWidth +
',height=' +
screenHeight +
',top=' +
0 +
',left=' +
0
) )
} else { } else {
message.error( message.error("文件格式不是 'doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx','pdf'")
"文件格式不是 'doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx','pdf'"
)
} }
} }
function getLastSubstring(str: string): string { function getLastSubstring(str: string): string {
@ -126,9 +115,7 @@ const toDetail = (obj) => {
message.info('没有访问权限') message.info('没有访问权限')
return return
} else { } else {
obj.filePath?.[0]?.url obj.filePath?.[0]?.url ? openUrl(obj.filePath[0].url) : message.info('没有可预览文件!')
? openUrl(obj.filePath[0].url)
: message.info('没有可预览文件!')
} }
} }
async function down(data: { async function down(data: {
@ -185,8 +172,7 @@ const handleVisitsScoll = () => {
// if(pageNum >= 1) return // if(pageNum >= 1) return
const container = msgScoll.value const container = msgScoll.value
if (container) { if (container) {
const isAtBottom = const isAtBottom = container.scrollHeight - container.scrollTop === container.clientHeight
container.scrollHeight - container.scrollTop === container.clientHeight
if (isAtBottom) { if (isAtBottom) {
if (pageNum < maxMsgLingth) { if (pageNum < maxMsgLingth) {
++pageNum ++pageNum
@ -218,9 +204,7 @@ const scroll = ({ scrollTop }: any) => {
> >
PLUS活动相关 PLUS活动相关
</div> </div>
<el-button v-if="userCode" type="primary" class="button" @click="shomks" <el-button v-if="userCode" type="primary" class="button" @click="shomks"></el-button>
>管理</el-button
>
<div class="text-#142142 text-20px font-extrabold flex p20px"> <div class="text-#142142 text-20px font-extrabold flex p20px">
<!-- <div class=""></div> --> <!-- <div class=""></div> -->
<div class="w-70% text-24px font-bold p20px pb-0px"> <div class="w-70% text-24px font-bold p20px pb-0px">
@ -233,10 +217,7 @@ const scroll = ({ scrollTop }: any) => {
@click="push({ name: 'modifyCsrList' })" @click="push({ name: 'modifyCsrList' })"
class="w-145px px15px text-#fff !rd-22px !bg-gradient-to-r !from-#34a6d9/90 !to-#23d1c6/70 p10px" class="w-145px px15px text-#fff !rd-22px !bg-gradient-to-r !from-#34a6d9/90 !to-#23d1c6/70 p10px"
> >
查看更多<img 查看更多<img src="../../../assets/images/ckgduo@2x.png" class="w25px ml-10px mt--5px" />
src="../../../assets/images/ckgduo@2x.png"
class="w25px ml-10px mt--5px"
/>
</div> </div>
</div> </div>
</div> </div>
@ -342,16 +323,10 @@ const scroll = ({ scrollTop }: any) => {
> >
<div class="max-w500px text-16px flex flex-col"> <div class="max-w500px text-16px flex flex-col">
<div class="flex items-center max-w-[84%]"> <div class="flex items-center max-w-[84%]">
<img <img src="../../../assets/images/lvbiao@2x.png" class="mr-5px" />
src="../../../assets/images/lvbiao@2x.png"
class="mr-5px"
/>
<n-popover trigger="hover" placement="top-start"> <n-popover trigger="hover" placement="top-start">
<template #trigger> <template #trigger>
<span <span class="truncate text-18px !min-w-[auto]" @click="toDetail(i)">
class="truncate text-18px !min-w-[auto]"
@click="toDetail(i)"
>
{{ i.filePath[0]?.originalFileName }} {{ i.filePath[0]?.originalFileName }}
</span> </span>
</template> </template>
@ -365,11 +340,7 @@ const scroll = ({ scrollTop }: any) => {
title="查看更多" title="查看更多"
@click="toDetail(i)" @click="toDetail(i)"
class="absolute cursor-pointer right--14px top-0px w60px pt-3px flex items-center ml-auto text-right" class="absolute cursor-pointer right--14px top-0px w60px pt-3px flex items-center ml-auto text-right"
style=" style="color: #4d7ee8; text-align: center; font-size: 16px"
color: #4d7ee8;
text-align: center;
font-size: 16px;
"
> >
更多<el-icon> 更多<el-icon>
<DArrowRight class="" /> <DArrowRight class="" />
@ -421,12 +392,7 @@ const scroll = ({ scrollTop }: any) => {
</el-icon> </el-icon>
</div> --> </div> -->
<span <span
style=" style="border: #417bef 1px solid; color: #417bef; border-radius: 5px; height: 30px"
border: #417bef 1px solid;
color: #417bef;
border-radius: 5px;
height: 30px;
"
class="absolute right-25px top-16px w80px h50px flex justify-center items-center cursor-pointer" class="absolute right-25px top-16px w80px h50px flex justify-center items-center cursor-pointer"
@click="push({ name: 'CSRList' })" @click="push({ name: 'CSRList' })"
>更多<el-icon> <DArrowRight class="" /> </el-icon >更多<el-icon> <DArrowRight class="" /> </el-icon
@ -436,13 +402,7 @@ const scroll = ({ scrollTop }: any) => {
ref="msgScoll" ref="msgScoll"
class="px20px h280px cent_box overflow-y-scroll" class="px20px h280px cent_box overflow-y-scroll"
> --> > -->
<el-scrollbar <el-scrollbar class="px20px" ref="" height="280px" always @scroll="scroll">
class="px20px"
ref=""
height="280px"
always
@scroll="scroll"
>
<!-- <div class="text-#808696 bg-#F4F8FF py10px rd-5px mt10px" v-for="(i, key) in dataList" :key="i"> --> <!-- <div class="text-#808696 bg-#F4F8FF py10px rd-5px mt10px" v-for="(i, key) in dataList" :key="i"> -->
<div <div
class="text-#808696 bg-#F4F8FF py10px rd-5px mt10px" class="text-#808696 bg-#F4F8FF py10px rd-5px mt10px"
@ -450,10 +410,9 @@ const scroll = ({ scrollTop }: any) => {
:key="i" :key="i"
> >
<div class="truncate2 flex items-center" @click="toDetail(i)"> <div class="truncate2 flex items-center" @click="toDetail(i)">
<span <span class="text-#fff bg-#407DF1 px5px text-18px rounded-20px mr-5px inlineFlex">{{
class="text-#fff bg-#407DF1 px5px text-18px rounded-20px mr-5px inlineFlex" ++key
>{{ ++key }}</span }}</span>
>
<span class="text-18px mr-2">{{ i.title }}</span> <span class="text-18px mr-2">{{ i.title }}</span>
<img <img
v-if="isNotOneWeekAgo(i.createTime)" v-if="isNotOneWeekAgo(i.createTime)"
@ -462,9 +421,7 @@ const scroll = ({ scrollTop }: any) => {
alt="" alt=""
/> />
</div> </div>
<span class="absolute right-10px top-24px text-18px">{{ <span class="absolute right-10px top-24px text-18px">{{ i.createTime }}</span>
i.createTime
}}</span>
</div> </div>
</el-scrollbar> </el-scrollbar>
<!-- </div> --> <!-- </div> -->

View File

@ -30,8 +30,8 @@ const listData = ref<any>([])
const message = useMessage() const message = useMessage()
const activeName = ref(1) const activeName = ref(1)
const flg = ref(false) const flg = ref(false)
const userCode = ['admin', 'database_dandang', 'tech_service'].includes( const userCode = ['admin', 'database_dandang', 'tech_service'].some((item) =>
store2.user.roleCode store2.user.roleCode?.includes(item)
) )
const isDbReview = computed(() => !!user?.isDbReview) const isDbReview = computed(() => !!user?.isDbReview)
const isDbUpload = computed(() => !!user?.isDbUpload) const isDbUpload = computed(() => !!user?.isDbUpload)
@ -60,9 +60,7 @@ const handleDialogConfirm = async () => {
} }
const handleCommand = (command: number, row: any) => { const handleCommand = (command: number, row: any) => {
selCommand.value = command selCommand.value = command
dialogText.value = `确认${command === 2 ? '通过' : '驳回'}标题为 ${ dialogText.value = `确认${command === 2 ? '通过' : '驳回'}标题为 ${row.title} 的文件发布吗?`
row.title
} 的文件发布吗?`
dialogVisible.value = true dialogVisible.value = true
selItemId.value = row.id selItemId.value = row.id
} }
@ -203,19 +201,10 @@ const openUrl = async (it: any) => {
window.open( window.open(
filePath, filePath,
'', '',
'width=' + 'width=' + screenWidth + ',height=' + screenHeight + ',top=' + 0 + ',left=' + 0
screenWidth +
',height=' +
screenHeight +
',top=' +
0 +
',left=' +
0
) )
} else { } else {
message.error( message.error("文件格式不是 'doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx','pdf'")
"文件格式不是 'doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx','pdf'"
)
} }
} }
function getLastSubstring(str: string): string { function getLastSubstring(str: string): string {
@ -433,25 +422,13 @@ function getParentIds(id: number, list: any[] = tableData.value): any {
hasChildren: 'hasChildren' hasChildren: 'hasChildren'
}" }"
> >
<el-table-column <el-table-column prop="cateName" label="所属分类" show-overflow-tooltip>
prop="cateName"
label="所属分类"
show-overflow-tooltip
>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="title" label="标题名称" show-overflow-tooltip />
prop="title"
label="标题名称"
show-overflow-tooltip
/>
<el-table-column prop="deptName" label="上传科室" /> <el-table-column prop="deptName" label="上传科室" />
<el-table-column prop="parentDeptName" label="上传部门" /> <el-table-column prop="parentDeptName" label="上传部门" />
<el-table-column prop="createTime" label="上传日期" /> <el-table-column prop="createTime" label="上传日期" />
<el-table-column <el-table-column label="文件列表" prop="filePath" show-overflow-tooltip />
label="文件列表"
prop="filePath"
show-overflow-tooltip
/>
<!-- <el-table-column label="排序" prop="sort" show-overflow-tooltip/> --> <!-- <el-table-column label="排序" prop="sort" show-overflow-tooltip/> -->
<el-table-column label="查看范围" prop="userIdList"> <el-table-column label="查看范围" prop="userIdList">
<template #default="scope"> <template #default="scope">
@ -467,9 +444,7 @@ function getParentIds(id: number, list: any[] = tableData.value): any {
<div class="descStyle max-w-60vw !h-46px"> <div class="descStyle max-w-60vw !h-46px">
<p <p
v-for="(it, e) in scope.row.userList" v-for="(it, e) in scope.row.userList"
:class=" :class="scope.row.userList.length < 2 ? '!leading-46px' : ''"
scope.row.userList.length < 2 ? '!leading-46px' : ''
"
> >
{{ it.nickName }} {{ it.nickName }}
<span v-if="e == 1 && scope.row.userList.length > 2" <span v-if="e == 1 && scope.row.userList.length > 2"
@ -493,21 +468,11 @@ function getParentIds(id: number, list: any[] = tableData.value): any {
v-if="(row.fileCommon?.fileSize || 0) > 25 * 1024 * 1024" v-if="(row.fileCommon?.fileSize || 0) > 25 * 1024 * 1024"
> >
<template #trigger> <template #trigger>
<el-button style="color: #000" @click="downloads(row)" <el-button style="color: #000" @click="downloads(row)"></el-button>
>查看</el-button
>
</template> </template>
<span <span>该文件超过25MB无法进行预览请点击 查看 进行下载</span>
>该文件超过25MB无法进行预览请点击 查看
进行下载</span
>
</n-popover> </n-popover>
<el-button <el-button v-else style="color: #000" @click="downloads(row)"></el-button>
v-else
style="color: #000"
@click="downloads(row)"
>查看</el-button
>
</div> </div>
<el-dropdown <el-dropdown
v-if="activeName === 1 && isDbReview" v-if="activeName === 1 && isDbReview"
@ -524,13 +489,8 @@ function getParentIds(id: number, list: any[] = tableData.value): any {
</el-button> </el-button>
<template #dropdown> <template #dropdown>
<el-dropdown-menu> <el-dropdown-menu>
<el-dropdown-item :command="2" :icon="Check" <el-dropdown-item :command="2" :icon="Check">同意</el-dropdown-item>
>同意</el-dropdown-item <el-dropdown-item :command="3" :icon="Close" type="danger"
>
<el-dropdown-item
:command="3"
:icon="Close"
type="danger"
>驳回</el-dropdown-item >驳回</el-dropdown-item
> >
</el-dropdown-menu> </el-dropdown-menu>
@ -544,17 +504,10 @@ function getParentIds(id: number, list: any[] = tableData.value): any {
> >
编辑</el-button 编辑</el-button
> >
<template <template v-if="(activeName === 1 || activeName === 3) && isDbUpload">
v-if="(activeName === 1 || activeName === 3) && isDbUpload" <el-popconfirm title="确认撤回该文件?" @confirm="handleWithdraw(row)">
>
<el-popconfirm
title="确认撤回该文件?"
@confirm="handleWithdraw(row)"
>
<template #reference> <template #reference>
<el-button class="ml-16px" type="danger"> <el-button class="ml-16px" type="danger"> 撤回</el-button>
撤回</el-button
>
</template> </template>
</el-popconfirm> </el-popconfirm>
</template> </template>
@ -606,30 +559,20 @@ function getParentIds(id: number, list: any[] = tableData.value): any {
<el-dropdown-menu> <el-dropdown-menu>
<el-dropdown-item v-if="i.firstReviewName"> <el-dropdown-item v-if="i.firstReviewName">
<div class="ml20px text-#808696 !text-12px flex"> <div class="ml20px text-#808696 !text-12px flex">
<span class="min-w120px" <span class="min-w120px">初审人{{ i.firstReviewName }}</span>
>初审人{{ i.firstReviewName }}</span <span class="ml20px">初审时间{{ i.firstReviewTime }}</span>
>
<span class="ml20px"
>初审时间{{ i.firstReviewTime }}</span
>
</div> </div>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item v-if="i.ultimateReviewName"> <el-dropdown-item v-if="i.ultimateReviewName">
<div class="ml20px text-#808696 !text-12px flex"> <div class="ml20px text-#808696 !text-12px flex">
<span class="min-w120px" <span class="min-w120px">终审人{{ i.ultimateReviewName }}</span>
>终审人{{ i.ultimateReviewName }}</span <span class="ml20px">终审时间{{ i.ultimateReviewTime }}</span>
>
<span class="ml20px"
>终审时间{{ i.ultimateReviewTime }}</span
>
</div> </div>
</el-dropdown-item> </el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</template> </template>
</el-dropdown> </el-dropdown>
<span class="shrink-0 ml38px text-#808696 w220px">{{ <span class="shrink-0 ml38px text-#808696 w220px">{{ i.createTime }}</span>
i.createTime
}}</span>
<span <span
v-if="store2.user.isReview > 0 && i.publishName" v-if="store2.user.isReview > 0 && i.publishName"
class="ml20px text-#808696 text-16px flex-1" class="ml20px text-#808696 text-16px flex-1"
@ -642,11 +585,7 @@ function getParentIds(id: number, list: any[] = tableData.value): any {
</div> </div>
</div> </div>
<n-modal v-model:show="showModal"> <n-modal v-model:show="showModal">
<UserList <UserList :userDataList="setUserList" @clickChild="handleChild" @CloseThis="CloseThiss" />
:userDataList="setUserList"
@clickChild="handleChild"
@CloseThis="CloseThiss"
/>
</n-modal> </n-modal>
<NModal v-model:show="shomk" :z-index="99999"> <NModal v-model:show="shomk" :z-index="99999">
<div class="bg-#FFF p30px"> <div class="bg-#FFF p30px">
@ -695,34 +634,19 @@ function getParentIds(id: number, list: any[] = tableData.value): any {
</el-form-item> </el-form-item>
<br /> <br />
<div class="text-center"> <div class="text-center">
<el-button type="primary" @click="handleEditClick" class="mb-20px"> <el-button type="primary" @click="handleEditClick" class="mb-20px"> 确认</el-button>
确认</el-button
>
</div> </div>
</el-form> </el-form>
</div> </div>
</NModal> </NModal>
<el-dialog <el-dialog v-model="dialogVisible" title="提示" width="30%" top="40vh" center>
v-model="dialogVisible"
title="提示"
width="30%"
top="40vh"
center
>
<span class="text-18px"> <span class="text-18px">
{{ dialogText }} {{ dialogText }}
</span> </span>
<template #footer> <template #footer>
<span class="dialog-footer"> <span class="dialog-footer">
<el-button size="large" @click="dialogVisible = false" <el-button size="large" @click="dialogVisible = false">取消</el-button>
>取消</el-button <el-button class="!ml-50px" size="large" type="primary" @click="handleDialogConfirm">
>
<el-button
class="!ml-50px"
size="large"
type="primary"
@click="handleDialogConfirm"
>
确认 确认
</el-button> </el-button>
</span> </span>

View File

@ -19,7 +19,7 @@ import { isNotOneWeekAgo } from '@/utils'
const store: any = useUserStore() const store: any = useUserStore()
const message = useMessage() const message = useMessage()
const userCode = ['admin', 'database_dandang'].includes(store.user.roleCode) const userCode = ['admin', 'database_dandang'].some((item) => store.user.roleCode?.includes(item))
const isDbReview = store.user?.isDbReview === 1 const isDbReview = store.user?.isDbReview === 1
const isDbUpload = store.user?.isDbUpload === 1 const isDbUpload = store.user?.isDbUpload === 1
const user: any = store.user const user: any = store.user
@ -132,9 +132,7 @@ const openUrl = async (it) => {
return return
} }
srcType.value = getLastSubstring(filePath) srcType.value = getLastSubstring(filePath)
if ( if (['doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'pdf'].includes(srcType.value)) {
['doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'pdf'].includes(srcType.value)
) {
// src.value = filePath // src.value = filePath
// pdfShow.value = true // pdfShow.value = true
filePath = 'https://view.xdocin.com/view?src=' + filePath filePath = 'https://view.xdocin.com/view?src=' + filePath
@ -143,19 +141,10 @@ const openUrl = async (it) => {
window.open( window.open(
filePath, filePath,
'', '',
'width=' + 'width=' + screenWidth + ',height=' + screenHeight + ',top=' + 0 + ',left=' + 0
screenWidth +
',height=' +
screenHeight +
',top=' +
0 +
',left=' +
0
) )
} else { } else {
message.error( message.error("文件格式不是 'doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx','pdf'")
"文件格式不是 'doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx','pdf'"
)
} }
} }
function getLastSubstring(str: string): string { function getLastSubstring(str: string): string {
@ -233,17 +222,9 @@ async function getAuth() {
</div> --> </div> -->
<div class="bg-#fff rd-15px px30px pt30px w-full h930px"> <div class="bg-#fff rd-15px px30px pt30px w-full h930px">
<div <div class="rd-15px w-full h870px" style="box-shadow: 1px 2px 26px -3px #cdcccc">
class="rd-15px w-full h870px" <div class="h80px rd-t-15px bg-#4877FB leading-80px text-#fff text-20px">
style="box-shadow: 1px 2px 26px -3px #cdcccc" <img src="@/assets/images/Shape7@2x.png" class="w50px ml-30px mr10px mt--20px" />
>
<div
class="h80px rd-t-15px bg-#4877FB leading-80px text-#fff text-20px"
>
<img
src="@/assets/images/Shape7@2x.png"
class="w50px ml-30px mr10px mt--20px"
/>
{{ title }} {{ title }}
<div class="float-right top-0 right-30px"> <div class="float-right top-0 right-30px">
<el-button <el-button
@ -277,28 +258,16 @@ async function getAuth() {
> >
<tr class="text-20px leading-50px"> <tr class="text-20px leading-50px">
<th width="20%"> <th width="20%">
<img <img src="@/assets/images/baiot@2x.png" class="w35px mt--7px mr-5px" />标题
src="@/assets/images/baiot@2x.png"
class="w35px mt--7px mr-5px"
/>
</th> </th>
<th width="20%"> <th width="20%">
<img <img src="@/assets/images/scbmm@2x.png" class="w35px mt--7px mr-5px" />上传科室
src="@/assets/images/scbmm@2x.png"
class="w35px mt--7px mr-5px"
/>
</th> </th>
<th width="20%"> <th width="20%">
<img <img src="@/assets/images/scbmm@2x.png" class="w35px mt--7px mr-5px" />上传部门
src="@/assets/images/scbmm@2x.png"
class="w35px mt--7px mr-5px"
/>
</th> </th>
<th width="20%"> <th width="20%">
<img <img src="@/assets/images/riqii@2x.png" class="w35px mt--7px mr-5px" />上传日期
src="@/assets/images/riqii@2x.png"
class="w35px mt--7px mr-5px"
/>
</th> </th>
<th width="20% text-center">操作</th> <th width="20% text-center">操作</th>
</tr> </tr>
@ -327,24 +296,14 @@ async function getAuth() {
<n-popover <n-popover
trigger="hover" trigger="hover"
placement="top-start" placement="top-start"
v-if=" v-if="arr.includes(it.id) || (it.fileCommon?.fileSize || 0) > 25 * 1024 * 1024"
arr.includes(it.id) ||
(it.fileCommon?.fileSize || 0) > 25 * 1024 * 1024
"
> >
<template #trigger> <template #trigger>
<el-button style="color: #000" @click="downloads(it)" <el-button style="color: #000" @click="downloads(it)"></el-button>
>查看</el-button
>
</template> </template>
<span <span>该文件超过25MB无法进行预览请点击 查看 进行下载</span>
>该文件超过25MB无法进行预览请点击 查看
进行下载</span
>
</n-popover> </n-popover>
<el-button v-else style="color: #000" @click="downloads(it)" <el-button v-else style="color: #000" @click="downloads(it)"></el-button>
>查看</el-button
>
</td> </td>
</tr> </tr>
</tbody> </tbody>
@ -365,11 +324,7 @@ async function getAuth() {
</div> </div>
<n-modal v-model:show="pdfShow"> <n-modal v-model:show="pdfShow">
<div class="w100% h100%"> <div class="w100% h100%">
<el-icon <el-icon color="#fff" size="26px" @click="pdfShow = false" class="absolute left-92% bg-#F43"
color="#fff"
size="26px"
@click="pdfShow = false"
class="absolute left-92% bg-#F43"
><Close ><Close
/></el-icon> /></el-icon>
<Amtion :data="src" :datas="srcType" /> <Amtion :data="src" :datas="srcType" />

View File

@ -23,12 +23,7 @@
</div> </div>
<el-tab-pane v-if="userCode" label="分类管理" name="first"> <el-tab-pane v-if="userCode" label="分类管理" name="first">
<div class="h-52px"> <div class="h-52px">
<el-button <el-button v-if="userCode" type="primary" @click="editClickA('add')" class="mb-20px">
v-if="userCode"
type="primary"
@click="editClickA('add')"
class="mb-20px"
>
新增 新增
</el-button> </el-button>
</div> </div>
@ -56,36 +51,20 @@
<!-- <el-table-column prop="sort" label="排序" align="center"/> --> <!-- <el-table-column prop="sort" label="排序" align="center"/> -->
<el-table-column prop="address" label="操作" align="center"> <el-table-column prop="address" label="操作" align="center">
<template #default="scope"> <template #default="scope">
<el-button <el-button type="primary" @click="editClickA('edit', scope.row)" class="my-10px">
type="primary"
@click="editClickA('edit', scope.row)"
class="my-10px"
>
编辑</el-button 编辑</el-button
> >
<el-button <el-button
type="success" type="success"
v-if=" v-if="scope.row.level === 1 || scope.row.level === 2 || scope.row.level === 3"
scope.row.level === 1 ||
scope.row.level === 2 ||
scope.row.level === 3
"
@click="editClickA('add', scope.row)" @click="editClickA('add', scope.row)"
class="my-10px" class="my-10px"
> >
新增{{ 新增{{
scope.row.level === 1 scope.row.level === 1 ? '二' : scope.row.level === 2 ? '三' : '四'
? '二'
: scope.row.level === 2
? '三'
: '四'
}}</el-button }}</el-button
> >
<el-button <el-button type="danger" @click="deleteClickA(scope.row)" class="my-10px">
type="danger"
@click="deleteClickA(scope.row)"
class="my-10px"
>
删除</el-button 删除</el-button
> >
</template> </template>
@ -103,12 +82,7 @@
> >
新增</el-button 新增</el-button
> >
<el-button <el-button v-if="userCode" type="primary" @click="getAll" class="mb-20px">
v-if="userCode"
type="primary"
@click="getAll"
class="mb-20px"
>
查看所有</el-button 查看所有</el-button
> >
<template v-if="false"> <template v-if="false">
@ -155,26 +129,14 @@
hasChildren: 'hasChildren' hasChildren: 'hasChildren'
}" }"
> >
<el-table-column <el-table-column prop="cateName" label="所属分类" show-overflow-tooltip>
prop="cateName"
label="所属分类"
show-overflow-tooltip
>
<!-- <template #default="scope"> <!-- <template #default="scope">
<span v-if="scope.row.cateId==="></span> <span v-if="scope.row.cateId==="></span>
</template> --> </template> -->
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="title" label="标题名称" show-overflow-tooltip />
prop="title"
label="标题名称"
show-overflow-tooltip
/>
<!-- <el-table-column prop="deptName" label="排序" /> --> <!-- <el-table-column prop="deptName" label="排序" /> -->
<el-table-column <el-table-column label="文件列表" prop="filePath" show-overflow-tooltip />
label="文件列表"
prop="filePath"
show-overflow-tooltip
/>
<!-- <el-table-column label="排序" prop="sort" show-overflow-tooltip/> --> <!-- <el-table-column label="排序" prop="sort" show-overflow-tooltip/> -->
<el-table-column label="查看范围" prop="userIdList"> <el-table-column label="查看范围" prop="userIdList">
<template #default="scope"> <template #default="scope">
@ -183,19 +145,12 @@
<!-- <span class="descStyle" v-if="scope.row.userList" v-for="it in scope.row.userList"> &nbsp;&nbsp; {{it.nickName}}</span> --> <!-- <span class="descStyle" v-if="scope.row.userList" v-for="it in scope.row.userList"> &nbsp;&nbsp; {{it.nickName}}</span> -->
<!-- <span>{{ scope.row.userList }}</span> --> <!-- <span>{{ scope.row.userList }}</span> -->
<p v-if="scope.row.userList.length"> <p v-if="scope.row.userList.length">
<el-tooltip <el-tooltip :content="handTooltip(scope.row.userList)" placement="top">
:content="handTooltip(scope.row.userList)"
placement="top"
>
<div class="!h-50px descStyle"> <div class="!h-50px descStyle">
<div class="descStyle max-w-60vw !h-46px"> <div class="descStyle max-w-60vw !h-46px">
<p <p
v-for="(it, e) in scope.row.userList" v-for="(it, e) in scope.row.userList"
:class=" :class="scope.row.userList.length < 2 ? '!leading-46px' : 'xx'"
scope.row.userList.length < 2
? '!leading-46px'
: 'xx'
"
> >
{{ it.nickName || undefined }} {{ it.nickName || undefined }}
<span v-if="e == 1 && scope.row.userList.length > 2" <span v-if="e == 1 && scope.row.userList.length > 2"
@ -209,11 +164,7 @@
<span v-else></span> <span v-else></span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="address" label="操作" show-overflow-tooltip>
prop="address"
label="操作"
show-overflow-tooltip
>
<template #default="scope"> <template #default="scope">
<div v-if="userCode || hasUpload || hasReview"> <div v-if="userCode || hasUpload || hasReview">
<el-button <el-button
@ -223,19 +174,12 @@
> >
编辑</el-button 编辑</el-button
> >
<el-button <el-button type="danger" @click="deleteClickB(scope.row)" class="w45px my-10px">
type="danger"
@click="deleteClickB(scope.row)"
class="w45px my-10px"
>
删除</el-button 删除</el-button
> >
<div <div
style="float: right; margin: 10px 0" style="float: right; margin: 10px 0"
v-if=" v-if="scope.$index !== 0 && scope.$index !== infoData.length - 1"
scope.$index !== 0 &&
scope.$index !== infoData.length - 1
"
> >
<el-button <el-button
style="color: #000; width: 45px; height: 33px" style="color: #000; width: 45px; height: 33px"
@ -256,9 +200,7 @@
</el-table> </el-table>
</div> </div>
<div <div class="float-right absolute bottom-0px right-30px z-2000 bg-#fff">
class="float-right absolute bottom-0px right-30px z-2000 bg-#fff"
>
<el-pagination <el-pagination
v-model:current-page="pageInfo.currentPage" v-model:current-page="pageInfo.currentPage"
v-model:page-size="pageInfo.pageSize" v-model:page-size="pageInfo.pageSize"
@ -271,11 +213,7 @@
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="权限管理" name="three" v-if="userCode"> <el-tab-pane label="权限管理" name="three" v-if="userCode">
<div class="h-52px"> <div class="h-52px">
<el-button <el-button type="primary" @click="handleAuthClick('add')" class="mb-20px">
type="primary"
@click="handleAuthClick('add')"
class="mb-20px"
>
新增审批关系</el-button 新增审批关系</el-button
> >
</div> </div>
@ -298,27 +236,12 @@
}" }"
:cell-style="{ 'text-align': 'center', 'overflow-y': 'auto' }" :cell-style="{ 'text-align': 'center', 'overflow-y': 'auto' }"
> >
<el-table-column <el-table-column prop="cateName" label="所属分类" show-overflow-tooltip>
prop="cateName"
label="所属分类"
show-overflow-tooltip
>
</el-table-column> </el-table-column>
<el-table-column <el-table-column label="上传人员" prop="userIdList" show-overflow-tooltip>
label="上传人员"
prop="userIdList"
show-overflow-tooltip
>
<template #default="scope"> <template #default="scope">
<p <p v-if="scope.row.uploadList.length" class="truncate text-ellipsis">
v-if="scope.row.uploadList.length" {{ scope.row.uploadList.map((item: any) => item.nickName).join('、') }}
class="truncate text-ellipsis"
>
{{
scope.row.uploadList
.map((item: any) => item.nickName)
.join('、')
}}
<el-tooltip <el-tooltip
v-if="false" v-if="false"
:content="handTooltip(scope.row.uploadList)" :content="handTooltip(scope.row.uploadList)"
@ -329,15 +252,10 @@
<p <p
v-for="(it, e) in scope.row.uploadList" v-for="(it, e) in scope.row.uploadList"
:key="e" :key="e"
:class=" :class="scope.row.uploadList.length < 2 ? '!leading-46px' : 'xx'"
scope.row.uploadList.length < 2
? '!leading-46px'
: 'xx'
"
> >
{{ it.nickName || undefined }} {{ it.nickName || undefined }}
<span <span v-if="e == 1 && scope.row.uploadList.length > 2"
v-if="e == 1 && scope.row.uploadList.length > 2"
>...{{ scope.row.uploadList.length }}</span >...{{ scope.row.uploadList.length }}</span
> >
</p> </p>
@ -348,21 +266,10 @@
<span v-else></span> <span v-else></span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column label="审批人员" prop="userIdList" show-overflow-tooltip>
label="审批人员"
prop="userIdList"
show-overflow-tooltip
>
<template #default="scope"> <template #default="scope">
<p <p v-if="scope.row.reviewList.length" class="truncate text-ellipsis">
v-if="scope.row.reviewList.length" {{ scope.row.reviewList.map((item: any) => item.nickName).join('、') }}
class="truncate text-ellipsis"
>
{{
scope.row.reviewList
.map((item: any) => item.nickName)
.join('、')
}}
<el-tooltip <el-tooltip
v-if="false" v-if="false"
:content="handTooltip(scope.row.reviewList)" :content="handTooltip(scope.row.reviewList)"
@ -373,15 +280,10 @@
<p <p
v-for="(it, e) in scope.row.reviewList" v-for="(it, e) in scope.row.reviewList"
:key="e" :key="e"
:class=" :class="scope.row.reviewList.length < 2 ? '!leading-46px' : 'xx'"
scope.row.reviewList.length < 2
? '!leading-46px'
: 'xx'
"
> >
{{ it.nickName || undefined }} {{ it.nickName || undefined }}
<span <span v-if="e == 1 && scope.row.reviewList.length > 2"
v-if="e == 1 && scope.row.reviewList.length > 2"
>...{{ scope.row.reviewList.length }}</span >...{{ scope.row.reviewList.length }}</span
> >
</p> </p>
@ -392,12 +294,7 @@
<span v-else></span> <span v-else></span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="address" label="操作" show-overflow-tooltip width="180px">
prop="address"
label="操作"
show-overflow-tooltip
width="180px"
>
<template #default="scope"> <template #default="scope">
<div> <div>
<el-button <el-button
@ -412,13 +309,7 @@
@confirm="handleAuthClick('del', scope.row)" @confirm="handleAuthClick('del', scope.row)"
> >
<template #reference> <template #reference>
<el-button <el-button type="danger" @click="" class="w45px my-10px"> 删除</el-button>
type="danger"
@click=""
class="w45px my-10px"
>
删除</el-button
>
</template> </template>
</el-popconfirm> </el-popconfirm>
</div> </div>
@ -427,9 +318,7 @@
</el-table> </el-table>
</div> </div>
<div <div class="float-right absolute bottom-0px right-30px z-2000 bg-#fff">
class="float-right absolute bottom-0px right-30px z-2000 bg-#fff"
>
<el-pagination <el-pagination
v-model:current-page="pageInfo.currentPage" v-model:current-page="pageInfo.currentPage"
v-model:page-size="pageInfo.pageSize" v-model:page-size="pageInfo.pageSize"
@ -454,9 +343,7 @@
</el-form-item> </el-form-item>
<br /> <br />
<div class="text-center"> <div class="text-center">
<el-button type="primary" @click="addClickA(editA)" class="mb-20px"> <el-button type="primary" @click="addClickA(editA)" class="mb-20px"> 确认</el-button>
确认</el-button
>
</div> </div>
</el-form> </el-form>
</div> </div>
@ -507,9 +394,7 @@
</el-form-item> </el-form-item>
<br /> <br />
<div class="text-center"> <div class="text-center">
<el-button type="primary" @click="addClickB(editB)" class="mb-20px"> <el-button type="primary" @click="addClickB(editB)" class="mb-20px"> 确认</el-button>
确认</el-button
>
</div> </div>
</el-form> </el-form>
</div> </div>
@ -548,19 +433,13 @@
<br /> <br />
<br /> <br />
<div class="text-center"> <div class="text-center">
<el-button type="primary" @click="handleSetAuth" class="mb-20px"> <el-button type="primary" @click="handleSetAuth" class="mb-20px"> 确认</el-button>
确认</el-button
>
</div> </div>
</el-form> </el-form>
</div> </div>
</NModal> </NModal>
<n-modal v-model:show="showModal" :z-index="99999"> <n-modal v-model:show="showModal" :z-index="99999">
<UserList <UserList :userDataList="setUserList" @clickChild="handleChild" @CloseThis="CloseThiss" />
:userDataList="setUserList"
@clickChild="handleChild"
@CloseThis="CloseThiss"
/>
</n-modal> </n-modal>
</div> </div>
</template> </template>
@ -592,7 +471,7 @@ const database = databaseld()
const store: any = useUserStore() const store: any = useUserStore()
const message = useMessage() const message = useMessage()
const userCode = computed(() => const userCode = computed(() =>
['admin', 'database_dandang', 'tech_service'].includes(store.user.roleCode) ['admin', 'database_dandang', 'tech_service'].some((item) => store.user.roleCode?.includes(item))
) )
// 'tech_service' // 'tech_service'
const isDbReview = store.user?.isDbReview === 1 const isDbReview = store.user?.isDbReview === 1
@ -878,10 +757,7 @@ const handleChange = (e: string | any[]) => {
} }
// console.log(e,editB.value.cateId,99999) // console.log(e,editB.value.cateId,99999)
} }
const handOnExceed: UploadProps['onExceed'] = ( const handOnExceed: UploadProps['onExceed'] = (uploadFile: any, uploadFiles: any) => {
uploadFile: any,
uploadFiles: any
) => {
message.warning('最多只能上传一个文件!') message.warning('最多只能上传一个文件!')
} }
@ -895,12 +771,7 @@ const flg = ref()
const setUserList = ref() const setUserList = ref()
const dbAuthType = ref() const dbAuthType = ref()
const selSetAuthKey = ref('') const selSetAuthKey = ref('')
async function getUser(row: { async function getUser(row: { id?: any; userList?: any; type?: number; key?: string }) {
id?: any
userList?: any
type?: number
key?: string
}) {
showModal.value = !showModal.value showModal.value = !showModal.value
flg.value = row flg.value = row
if (showAuthModal.value) { if (showAuthModal.value) {

View File

@ -19,7 +19,9 @@ import { isNotOneWeekAgo } from '@/utils'
const store = useUserStore() const store = useUserStore()
const myStore = useMyStore() const myStore = useMyStore()
const userCode = ['admin', 'theme_dandang', 'tech_service'].includes(store.user.roleCode) const userCode = ['admin', 'theme_dandang', 'tech_service'].some((item) =>
store.user.roleCode?.includes(item)
)
const message = useMessage() const message = useMessage()
const showDropdown1 = ref(false) const showDropdown1 = ref(false)

View File

@ -2,23 +2,30 @@
import HomeHead from '@/views/home/components/HomeHead.vue' import HomeHead from '@/views/home/components/HomeHead.vue'
// import HomeHeadSearch from '@/views/home/components/HomeHeadSearch.vue' // import HomeHeadSearch from '@/views/home/components/HomeHeadSearch.vue'
import { NModal, useMessage } from 'naive-ui' import { NModal, useMessage } from 'naive-ui'
import { getCateList, editCateItem,getCateItemList,deleteCateItem ,getLabActList} from '@/api/daikin/base' import {
getCateList,
editCateItem,
getCateItemList,
deleteCateItem,
getLabActList
} from '@/api/daikin/base'
import { useUserStore } from '@/stores/modules/user' import { useUserStore } from '@/stores/modules/user'
import { useDate } from '@/views/home/hooks/useDate' import { useDate } from '@/views/home/hooks/useDate'
import { useMyStore } from '@/stores/modules/mystor' import { useMyStore } from '@/stores/modules/mystor'
const myStore = useMyStore(); const myStore = useMyStore()
const message = useMessage() const message = useMessage()
const store = useUserStore() const store = useUserStore()
const header = { 'token': store.user.token } const header = { 'token': store.user.token }
const userCode = ['admin', 'theme_dandang', 'tech_service'].includes(store.user.roleCode) const userCode = ['admin', 'theme_dandang', 'tech_service'].some((item) =>
store.user.roleCode?.includes(item)
)
const { day, week } = useDate() const { day, week } = useDate()
const route = useRoute() const route = useRoute()
const { push } = useRouter() const { push } = useRouter()
const dataA = ref([]) const dataA = ref([])
const shomkA = ref(false) const shomkA = ref(false)
const actMidIsSelects = ref() const actMidIsSelects = ref()
@ -28,7 +35,7 @@ const cateIds = ref()
const starId = ref() const starId = ref()
const state = reactive<any>({ const state = reactive<any>({
pageNum: 1, pageNum: 1,
cateId:route.params.id!==':id'?route.params.id:starId.value, cateId: route.params.id !== ':id' ? route.params.id : starId.value
}) })
onMounted(async () => { onMounted(async () => {
@ -41,13 +48,11 @@ onMounted(async () => {
tabsList.value = dataBot tabsList.value = dataBot
if (dataBot.length > 0) { if (dataBot.length > 0) {
starId.value = dataBot[0].id starId.value = dataBot[0].id
} }
console.log(starId.value) console.log(starId.value)
cateIds.value = route.params.id cateIds.value = route.params.id
activeName.value = route.params.id !== ':id' ? route.params.id : starId.value + '' activeName.value = route.params.id !== ':id' ? route.params.id : starId.value + ''
}) })
async function getItemList() { async function getItemList() {
const { rows } = await getCateItemList(state) const { rows } = await getCateItemList(state)
@ -55,11 +60,12 @@ async function getItemList() {
} }
const ss = computed(() => [state.pageNum, state.cateId]) const ss = computed(() => [state.pageNum, state.cateId])
watch(() => unref(ss), watch(
() => unref(ss),
async (v) => { async (v) => {
getItemList() getItemList()
}, },
{ immediate: true, deep: true }, { immediate: true, deep: true }
) )
const handleClick = (tab: TabsPaneContext, event: Event) => { const handleClick = (tab: TabsPaneContext, event: Event) => {
@ -76,7 +82,15 @@ const editA = ref({
fileList: [] fileList: []
}) })
async function onSubmit(row: { id: number; url: any; title: string; time: string; dowhat: string; files: never[]; fileList: never[] }) { async function onSubmit(row: {
id: number
url: any
title: string
time: string
dowhat: string
files: never[]
fileList: never[]
}) {
console.log(row) console.log(row)
const { id, title, fileList } = row const { id, title, fileList } = row
@ -84,81 +98,76 @@ async function onSubmit(row: { id: number; url: any; title: string; time: string
let filePath let filePath
console.log(cateId) console.log(cateId)
if (fileList && fileList.length > 0) { if (fileList && fileList.length > 0) {
filePath = fileList.map(file => { filePath = fileList
.map((file) => {
if (file.response) { if (file.response) {
return file.response.url return file.response.url
} } else {
else{
return file.url return file.url
} }
}).join(',') })
.join(',')
} }
console.log({ id, title, cateId, filePath }) console.log({ id, title, cateId, filePath })
if (cateId && cateId == 'undefined') { if (cateId && cateId == 'undefined') {
message.error("请先添加类别!") message.error('请先添加类别!')
return return
} }
const { code, msg } = await editCateItem({ id, title, cateId, filePath }) const { code, msg } = await editCateItem({ id, title, cateId, filePath })
if (code === 200) { message.success("添加成功!") } if (code === 200) {
else { message.error(msg) } message.success('添加成功!')
} else {
message.error(msg)
}
window.location.reload(); window.location.reload()
shomkA.value = false shomkA.value = false
} }
const handleEdit = (row: any) => { const handleEdit = (row: any) => {
console.log(row) console.log(row)
row.fileList = row.filePathList.map(item=>Object.assign(item,{ row.fileList = row.filePathList.map((item) =>
Object.assign(item, {
name: item.originalFileName name: item.originalFileName
})) })
)
shomkA.value = true shomkA.value = true
if (!row) return if (!row) return
editA.value = row editA.value = row
} }
async function handleDelete(obj) { async function handleDelete(obj) {
const { id } = obj const { id } = obj
const { code, msg } = await deleteCateItem({ id }) const { code, msg } = await deleteCateItem({ id })
if (code === 200) { message.success("删除成功!") } if (code === 200) {
else { message.error(msg) } message.success('删除成功!')
window.location.reload(); } else {
message.error(msg)
}
window.location.reload()
} }
async function downloadFile(data) { async function downloadFile(data) {
// console.log(data) // console.log(data)
if (actMidIsSelects.value === 2) { if (actMidIsSelects.value === 2) {
message.info("没有访问权限") message.info('没有访问权限')
return return
} }
const url = data.it.url const url = data.it.url
try { try {
const response = await fetch(url); const response = await fetch(url)
const blob = await response.blob(); const blob = await response.blob()
const downloadUrl = URL.createObjectURL(blob); const downloadUrl = URL.createObjectURL(blob)
const link = document.createElement('a'); const link = document.createElement('a')
link.href = downloadUrl; link.href = downloadUrl
link.download = data.it.originalFileName; // link.download = data.it.originalFileName //
link.click(); link.click()
URL.revokeObjectURL(downloadUrl); URL.revokeObjectURL(downloadUrl)
} catch (error) { } catch (error) {
message.error('下载文件出错:', error); message.error('下载文件出错:', error)
} }
} }
</script> </script>
<template> <template>
<HomeHead class="top"> <HomeHead class="top">
@ -176,7 +185,12 @@ async function downloadFile(data) {
</div> </div>
<div class="q-wrapper flex-1 mt30px text-#142142 flex flex-col bg-#fff p30px rounded-20px"> <div class="q-wrapper flex-1 mt30px text-#142142 flex flex-col bg-#fff p30px rounded-20px">
<el-tabs v-model="activeName" @tab-click="handleClick"> <el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane v-for="(item,ind) in tabsList" :label="item.id" :name="item.id+''" :index="item.id"> <el-tab-pane
v-for="(item, ind) in tabsList"
:label="item.id"
:name="item.id + ''"
:index="item.id"
>
<template #label> <template #label>
<span class="custom-tabs-label"> <span class="custom-tabs-label">
<span class="text-20px">{{ item.cateName }}</span> <span class="text-20px">{{ item.cateName }}</span>
@ -188,15 +202,23 @@ async function downloadFile(data) {
<div> <div>
<div v-if="dataA" v-for="iet in dataA" class="py25px px10px text-18px"> <div v-if="dataA" v-for="iet in dataA" class="py25px px10px text-18px">
<span class="content">{{ iet.title }}</span> <span class="content">{{ iet.title }}</span>
<el-dropdown max-height="100px" @command="downloadFile" class="top--5px w50px block float-left"> <el-dropdown
max-height="100px"
@command="downloadFile"
class="top--5px w50px block float-left"
>
<el-icon size="25" color="#0054E4"> <el-icon size="25" color="#0054E4">
<CaretBottom /> <CaretBottom />
</el-icon> </el-icon>
<template #dropdown> <template #dropdown>
<el-dropdown-menu> <el-dropdown-menu>
<el-dropdown-item v-if="iet.filePathList" v-for="it in iet.filePathList" <el-dropdown-item
:command="{ it }">{{ it.originalFileName }}</el-dropdown-item> v-if="iet.filePathList"
v-for="it in iet.filePathList"
:command="{ it }"
>{{ it.originalFileName }}</el-dropdown-item
>
</el-dropdown-menu> </el-dropdown-menu>
</template> </template>
</el-dropdown> </el-dropdown>
@ -205,35 +227,32 @@ async function downloadFile(data) {
<el-button size="small" @click="handleEdit(iet)"></el-button> <el-button size="small" @click="handleEdit(iet)"></el-button>
<el-button size="small" type="danger" @click="handleDelete(iet)"></el-button> <el-button size="small" type="danger" @click="handleDelete(iet)"></el-button>
</div> --> </div> -->
</div> </div>
</div> </div>
</div> </div>
<!-- <el-button v-if="userCode" type="primary" class="" @click="shomkA = !shomkA"></el-button> --> <!-- <el-button v-if="userCode" type="primary" class="" @click="shomkA = !shomkA"></el-button> -->
</div> </div>
<n-modal v-model:show="shomkA"> <n-modal v-model:show="shomkA">
<div class="bg-#FFF p30px"> <div class="bg-#FFF p30px">
<el-form :model="editA" label-width="120px" :inline="true"> <el-form :model="editA" label-width="120px" :inline="true">
<br />
<br>
<el-form-item label="标题"> <el-form-item label="标题">
<el-input v-model="editA.title" /> <el-input v-model="editA.title" />
</el-form-item> </el-form-item>
<br> <br />
<el-form-item label="文件"> <el-form-item label="文件">
<el-upload v-model:file-list="editA.fileList" class="upload-demo" :headers="header" <el-upload
action="/test-api/common/upload"> v-model:file-list="editA.fileList"
class="upload-demo"
:headers="header"
action="/test-api/common/upload"
>
<el-button type="primary">选择文件</el-button> <el-button type="primary">选择文件</el-button>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
</el-form> </el-form>
<hr class="mb15px border-#f1f1f1"> <hr class="mb15px border-#f1f1f1" />
<el-form-item> <el-form-item>
<el-button type="primary" @click="onSubmit(editA)"></el-button> <el-button type="primary" @click="onSubmit(editA)"></el-button>
</el-form-item> </el-form-item>

View File

@ -4,6 +4,7 @@ import HomeHead from '@/views/home/components/HomeHead.vue'
import HomeHeadSearch from '@/views/home/components/HomeHeadSearch.vue' import HomeHeadSearch from '@/views/home/components/HomeHeadSearch.vue'
import Editor from './TinyECE.vue' import Editor from './TinyECE.vue'
import { useDate } from '@/views/home/hooks/useDate' import { useDate } from '@/views/home/hooks/useDate'
import { noticeld } from '@/stores/modules/noticeId'
import type { FormInst } from 'naive-ui' import type { FormInst } from 'naive-ui'
import { useMessage } from 'naive-ui' import { useMessage } from 'naive-ui'
import { ref } from 'vue' import { ref } from 'vue'
@ -25,6 +26,19 @@ import { useUserStore } from '@/stores/modules/user'
const store = useUserStore() const store = useUserStore()
const { day, week } = useDate() const { day, week } = useDate()
const { push } = useRouter() const { push } = useRouter()
const not = noticeld()
const toDetail2 = (id: any) => {
not.article.cate = id
console.log(not.article.cate)
// push(`${route.path.replace('/external','')}/info/${n.id}`)
push('/external/Board')
}
const userCode = ref(false)
userCode.value = ['admin', 'waibuyemianguanliyuan', 'tech_service'].some((item) =>
store.user.roleCode?.includes(item)
)
</script> </script>
<template> <template>
@ -38,9 +52,34 @@ const { push } = useRouter()
<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 flex-1">{{ week }}</div> <div class="text-18px flex-1">{{ week }}</div>
<el-dropdown>
<div class="text-#fff" style="margin-right: 8px" v-if="userCode">
<div class="add text-18px px13px py11px cursor-pointer">外部审批流程</div>
</div>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item @click="push({ path: '/external/Process' })">News</el-dropdown-item>
<el-dropdown-item @click="push({ path: '/external/Process', query: { cate: '8' } })"
>重要通知</el-dropdown-item
>
</el-dropdown-menu>
</template>
</el-dropdown>
<el-dropdown>
<div class="text-#fff" style="margin-right: 28px" v-if="userCode">
<div class="add text-18px px13px py11px cursor-pointer">外部新增 +</div>
</div>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item @click="toDetail2(7)">News</el-dropdown-item>
<el-dropdown-item @click="toDetail2(8)"></el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
<div <div
style="margin-right: 8px" style="margin-right: 8px"
v-if="store.user.isPublish === 1 || store.user.roleCode === 'zhuxi'" v-if="store.user.isPublish === 1 || store.user.roleCode?.includes('zhuxi')"
> >
<div <div
class="add text-18px px13px py11px cursor-pointer" class="add text-18px px13px py11px cursor-pointer"
@ -51,7 +90,7 @@ const { push } = useRouter()
</div> </div>
<div <div
style="margin-right: 8px" style="margin-right: 8px"
v-if="store.user.isPublish === 1 || store.user.roleCode === 'zhuxi'" v-if="store.user.isPublish === 1 || store.user.roleCode?.includes('zhuxi')"
> >
<div <div
class="add text-18px px13px py11px cursor-pointer" class="add text-18px px13px py11px cursor-pointer"

View File

@ -4,11 +4,7 @@ import { useUserStore } from '@/stores/modules/user'
import HomeHead from '@/views/home/components/HomeHead.vue' import HomeHead from '@/views/home/components/HomeHead.vue'
import HomeHeadSearch from '@/views/home/components/HomeHeadSearch.vue' import HomeHeadSearch from '@/views/home/components/HomeHeadSearch.vue'
import { useDate } from '@/views/home/hooks/useDate' import { useDate } from '@/views/home/hooks/useDate'
import { import { getNoticeList, deleteWithdraw, getManagerList } from '@/api/daikin/base'
getNoticeList,
deleteWithdraw,
getManagerList
} from '@/api/daikin/base'
import { noticeld } from '@/stores/modules/noticeId' import { noticeld } from '@/stores/modules/noticeId'
import { getImg } from '../images' import { getImg } from '../images'
import { NTag } from 'naive-ui' import { NTag } from 'naive-ui'
@ -83,7 +79,7 @@ const clickTo = (data: any) => {
store.article.noticeld = noticeId store.article.noticeld = noticeId
if ( if (
[1, 2].includes(reviewStatus) && [1, 2].includes(reviewStatus) &&
['review_person', 'zhuxi', 'tech_service'].includes(store2.user.roleCode) ['review_person', 'zhuxi', 'tech_service'].some((item) => store2.user.roleCode?.includes(item))
) { ) {
push(`/Home/Process/ProcessInfo/${id}`) push(`/Home/Process/ProcessInfo/${id}`)
} else { } else {
@ -208,9 +204,7 @@ let tabs = store2.user.isReview > 0 ? tabsList2.value : tabsList.value
<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 class="q-wrapper flex-1 mt30px text-#142142 flex flex-col bg-#fff p30px">
class="q-wrapper flex-1 mt30px text-#142142 flex flex-col bg-#fff p30px"
>
<div> <div>
<el-tabs type="card" v-model="activeNames" @tab-click="handleClicks"> <el-tabs type="card" v-model="activeNames" @tab-click="handleClicks">
<el-tab-pane name="2"> <el-tab-pane name="2">
@ -221,8 +215,8 @@ let tabs = store2.user.isReview > 0 ? tabsList2.value : tabsList.value
<el-tab-pane <el-tab-pane
name="3" name="3"
v-if=" v-if="
['review_person', 'zhuxi', 'tech_service'].includes( ['review_person', 'zhuxi', 'tech_service'].some((item) =>
store2.user.roleCode store2.user.roleCode?.includes(item)
) )
" "
> >
@ -348,28 +342,20 @@ let tabs = store2.user.isReview > 0 ? tabsList2.value : tabsList.value
<el-dropdown-menu> <el-dropdown-menu>
<el-dropdown-item v-if="i.firstReviewName"> <el-dropdown-item v-if="i.firstReviewName">
<div class="ml20px text-#808696 !text-12px flex"> <div class="ml20px text-#808696 !text-12px flex">
<span class="min-w120px" <span class="min-w120px">初审人{{ i.firstReviewName }}</span>
>初审人{{ i.firstReviewName }}</span
>
<span class="ml20px">初审时间{{ i.firstReviewTime }}</span> <span class="ml20px">初审时间{{ i.firstReviewTime }}</span>
</div> </div>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item v-if="i.ultimateReviewName"> <el-dropdown-item v-if="i.ultimateReviewName">
<div class="ml20px text-#808696 !text-12px flex"> <div class="ml20px text-#808696 !text-12px flex">
<span class="min-w120px" <span class="min-w120px">终审人{{ i.ultimateReviewName }}</span>
>终审人{{ i.ultimateReviewName }}</span <span class="ml20px">终审时间{{ i.ultimateReviewTime }}</span>
>
<span class="ml20px"
>终审时间{{ i.ultimateReviewTime }}</span
>
</div> </div>
</el-dropdown-item> </el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</template> </template>
</el-dropdown> </el-dropdown>
<span class="shrink-0 ml38px text-#808696 w220px">{{ <span class="shrink-0 ml38px text-#808696 w220px">{{ i.createTime }}</span>
i.createTime
}}</span>
<span <span
v-if="store2.user.isReview > 0 && i.publishName" v-if="store2.user.isReview > 0 && i.publishName"
class="ml20px text-#808696 text-16px flex-1" class="ml20px text-#808696 text-16px flex-1"
@ -377,7 +363,7 @@ let tabs = store2.user.isReview > 0 ? tabsList2.value : tabsList.value
> >
<span <span
v-if=" v-if="
['publish', 'tech_service'].includes(store2.user.roleCode) && ['publish', 'tech_service'].some((item) => store2.user.roleCode?.includes(item)) &&
Status.reviewStatus === 1 Status.reviewStatus === 1
" "
class="absolute right-10px top-18px" class="absolute right-10px top-18px"

View File

@ -17,8 +17,12 @@ import Amtion from '@/components/amtion.vue'
import {noticeld} from '@/stores/modules/noticeId' import {noticeld} from '@/stores/modules/noticeId'
const store = useUserStore() const store = useUserStore()
const stores = noticeld() const stores = noticeld()
const userCode = ['admin','shikuang_dandang','tech_service'].includes(store.user.roleCode) const userCode = ['admin','shikuang_dandang','tech_service'].some((item) =>
const userCodes = ['admin','huilv_dandang','tech_service'].includes(store.user.roleCode) store.user.roleCode?.includes(item)
)
const userCodes = ['admin','huilv_dandang','tech_service'].some((item) =>
store.user.roleCode?.includes(item)
)
const { day, week } = useDate() const { day, week } = useDate()
const { push } = useRouter() const { push } = useRouter()
const currentDate = new Date(); const currentDate = new Date();

View File

@ -11,7 +11,9 @@ import { topList, actList, highList, badartList, topStat } from '@/api/daikin/ba
import { isNotOneWeekAgo } from '@/utils' import { isNotOneWeekAgo } from '@/utils'
// import { it } from "element-plus/es/locale/index.js"; // import { it } from "element-plus/es/locale/index.js";
const store = useUserStore() const store = useUserStore()
const userCode = ['admin', 'quality_dangdan', 'tech_service'].includes(store.user.roleCode) const userCode = ['admin', 'quality_dangdan', 'tech_service'].some((item) =>
store.user.roleCode?.includes(item)
)
const message = useMessage() const message = useMessage()
// console.log(userCode); // console.log(userCode);
const dataA = ref([]) const dataA = ref([])