main
王文龙 2023-11-28 19:53:33 +08:00
parent 58d02e6e03
commit 031b7e89d0
13 changed files with 1241 additions and 887 deletions

12
11.txt
View File

@ -1,3 +1,9 @@
1. 图片展示,没有权限
2. 权限设置,没有返回信息
3. 多张图片bug
1.excel 大文件的预览;
2.edge的大文件下载弹窗问题
3.碳中和查看更多的文件逻辑; --✔️
3.碳中和页面整体模块滚动;--
4.原材料用量饼图;
5.品质和碳中和 字体放大; --
6.外部情报 留言板 列表 已回复; ---
7.碳中和内容管理的 查看范围;
8.碳中和相关活动报告-- 显示其他的活动 后面排.

View File

@ -9,394 +9,397 @@ const NewsDetail = {
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
routes: [
{ path: "/:pathMatch(.*)", component: () => import("@/components/404") },
{ path: '/:pathMatch(.*)', component: () => import('@/components/404') },
// { path: '/', redirect: '/' },
{
path: "/",
name: "Entry",
component: () => import("@/views/layout/Entry.vue"),
path: '/',
name: 'Entry',
component: () => import('@/views/layout/Entry.vue')
},
{
path: "/modify",
name: "modify",
meta: { title: "修改密码" },
component: () => import("@/views/company/modify.vue"),
path: '/modify',
name: 'modify',
meta: { title: '修改密码' },
component: () => import('@/views/company/modify.vue')
},
{
path: "/modifys",
name: "modifys",
meta: { title: "修改密码" },
component: () => import("@/views/company/modifys.vue"),
path: '/modifys',
name: 'modifys',
meta: { title: '修改密码' },
component: () => import('@/views/company/modifys.vue')
},
{
path: "/login",
name: "Login",
component: () => import("@/views/layout/Login.vue"),
path: '/login',
name: 'Login',
component: () => import('@/views/layout/Login.vue')
},
{
path: "/externallogin",
name: "ExternalLogin",
component: () => import("@/views/layout/ExternalLogin.vue"),
path: '/externallogin',
name: 'ExternalLogin',
component: () => import('@/views/layout/ExternalLogin.vue')
},
// 外部首页
{
path: "/external",
path: '/external',
component: () => import("@/views/extermal/ExternalHome.vue"),
meta: { title: "首页" },
component: () => import('@/views/extermal/ExternalHome.vue'),
meta: { title: '首页' },
// redirect: { name: "entry" },
children: [
{
path: '',
name: 'external',
component: () => import("@/views/extermal/ExternalHome.vue"),
component: () => import('@/views/extermal/ExternalHome.vue')
},
{
path: '/external/info',
name: 'DetailInfo',
component: () => import("@/views/extermal/Article/Detail.vue"),
component: () => import('@/views/extermal/Article/Detail.vue')
}
],
]
},
{
path: '/external/info/:id',
name: 'DetailInfo',
component: () => import("@/views/extermal/Article/Detail.vue"),
component: () => import('@/views/extermal/Article/Detail.vue')
},
{
path: '/external/infoList',
name: 'DetailInfoList',
component: () => import("@/views/extermal/news/index.vue"),
component: () => import('@/views/extermal/news/index.vue')
},
{
path: '/external/infoa/:id/:type',
name: 'DetailInfoa',
component: () => import("@/views/extermal/Article/Detaila.vue"),
component: () => import('@/views/extermal/Article/Detaila.vue')
},
{
path: '/external/infos/:id',
name: 'DetailInfos',
component: () => import("@/views/extermal/Article/Details.vue"),
component: () => import('@/views/extermal/Article/Details.vue')
},
{
path: '/external/Board',
name: 'BoardlInfo',
component: () => import("@/views/extermal/Board/index.vue"),
component: () => import('@/views/extermal/Board/index.vue')
},
{
path: '/external/Process',
name: 'Process1',
component: () => import("@/views/extermal/Process/index.vue"),
component: () => import('@/views/extermal/Process/index.vue')
},
// 内部首页
{
path: "/Home",
component: () => import("@/views/index.vue"),
meta: { title: "首页" },
redirect: { name: "entry" },
path: '/Home',
component: () => import('@/views/index.vue'),
meta: { title: '首页' },
redirect: { name: 'entry' },
children: [
{
path: "",
name: "Home",
component: () => import("@/views/home/Home.vue")
path: '',
name: 'Home',
component: () => import('@/views/home/Home.vue')
},
{
path: '/Home/User',
name: 'User',
meta: { title: '调达本部18个月活动' },
component: () => import("@/views/home/user/index.vue")
component: () => import('@/views/home/user/index.vue')
},
{
path: '/Home/footprint',
name: 'footprint',
meta: { title: '足迹看板' },
component: () => import("@/views/home/footprint/index.vue")
component: () => import('@/views/home/footprint/index.vue')
},
{
path: '/Home/dataPlatform',
name: 'dataPlatform',
component: () => import("@/views/dataPlatform/index.vue")
component: () => import('@/views/dataPlatform/index.vue')
},
{
path: '/Home/News',
name: 'News',
meta: { title: 'News列表' },
component: () => import("@/views/home/news/index.vue")
component: () => import('@/views/home/news/index.vue')
},
// 搜索
{
path: 'Search',
meta: { title: "搜索列表" },
children: [{
meta: { title: '搜索列表' },
children: [
{
path: '',
name: 'Search',
component: () => import("@/views/home/search/index.vue")
component: () => import('@/views/home/search/index.vue')
},
{
path: '/Home/Search/:id',
name: 'SearchInfo',
meta: { title: "详情" },
component: () => import("@/views/home/intelligence/Detail.vue")
},
meta: { title: '详情' },
component: () => import('@/views/home/intelligence/Detail.vue')
}
]
},
// 外部情报
{
path: "intelligence",
meta: { title: "外部情报" },
path: 'intelligence',
meta: { title: '外部情报' },
children: [
{
path: "",
name: "Intelligence",
component: () => import("@/views/home/intelligence/Overview.vue"),
path: '',
name: 'Intelligence',
component: () => import('@/views/home/intelligence/Overview.vue')
},
{
path: "list",
name: "IntelligenceList",
component: () => import("@/views/home/intelligence/ListPage.vue"),
path: 'list',
name: 'IntelligenceList',
component: () => import('@/views/home/intelligence/ListPage.vue')
},
{
path: 'messageSelect',
meta:{title:'外部留言列表'},
meta: { title: '外部留言列表' },
children:[
children: [
{
path:'',
name: "messageSelect",
component: () => import('@/views/home/intelligence/components/messageSelect.vue'),
path: '',
name: 'messageSelect',
component: () =>
import(
'@/views/home/intelligence/components/messageSelect.vue'
)
},
{
path: 'InfosEdit',
name: "InfosEdit",
meta:{title:'详情编辑'},
component: () => import('@/views/home/intelligence/components/InfosEdit.vue')
},
name: 'InfosEdit',
meta: { title: '详情编辑' },
component: () =>
import('@/views/home/intelligence/components/InfosEdit.vue')
}
]
},
{
path: "outside",
meta: { title: "社外" },
path: 'outside',
meta: { title: '社外' },
children: [
{
path: "",
name: "IntelligenceOutside",
path: '',
name: 'IntelligenceOutside',
component: () =>
import("@/views/home/intelligence/ListPage.vue"),
import('@/views/home/intelligence/ListPage.vue')
},
{
path: "/intelligence/outside/:id",
meta: { title: "情报详情" },
name: "IntelligenceOutsideDetail",
path: '/intelligence/outside/:id',
meta: { title: '情报详情' },
name: 'IntelligenceOutsideDetail',
component: () =>
import("@/views/home/intelligence/Detail.vue"),
},
],
import('@/views/home/intelligence/Detail.vue')
}
]
},
{
path: "within",
meta: { title: "社内" },
path: 'within',
meta: { title: '社内' },
children: [
{
path: "",
name: "IntelligenceWithin",
path: '',
name: 'IntelligenceWithin',
component: () =>
import("@/views/home/intelligence/ListPage.vue"),
import('@/views/home/intelligence/ListPage.vue')
},
{
path: "/intelligence/within/:id",
meta: { title: "情报详情" },
name: "IntelligenceWithinDetail",
path: '/intelligence/within/:id',
meta: { title: '情报详情' },
name: 'IntelligenceWithinDetail',
component: () =>
import("@/views/home/intelligence/Detail.vue"),
},
],
},
],
import('@/views/home/intelligence/Detail.vue')
}
]
}
]
},
// BCP系统
{
path: "bcp",
meta: { title: "BCPSCM系统(智能供应链)数据联动+BI化呈现" },
children: [
{
path: "",
name: "BCP",
component: () =>
import("@/views/home/bcp/BCP.vue"),
},
{
path: "modifyBPC",
meta: { title: "BCP内容管理" },
name: "modifyBPC",
component: () =>
// import("@/views/home/bcp/modify.vue"),
import("@/views/home/bcp/modify_new.vue"),
},
{
path: "bpcDetail",
meta: { title: "BCP详情" },
name: "bcpDetail",
component: () =>
// import("@/views/home/bcp/modify.vue"),
import("@/views/home/bcp/detail.vue"),
},
],
},
// 市况
{
path: "market",
meta: { title: "市况、汇率" },
path: 'bcp',
meta: { title: 'BCPSCM系统(智能供应链)数据联动+BI化呈现' },
children: [
{
path: '',
name: "Market",
component: () => import("@/views/home/market/Market.vue"),
name: 'BCP',
component: () => import('@/views/home/bcp/BCP.vue')
},
{
path: 'modifyBPC',
meta: { title: 'BCP内容管理' },
name: 'modifyBPC',
component: () =>
// import("@/views/home/bcp/modify.vue"),
import('@/views/home/bcp/modify_new.vue')
},
{
path: 'bpcDetail',
meta: { title: 'BCP详情' },
name: 'bcpDetail',
component: () =>
// import("@/views/home/bcp/modify.vue"),
import('@/views/home/bcp/detail.vue')
}
]
},
// 市况
{
path: 'market',
meta: { title: '市况、汇率' },
children: [
{
path: '',
name: 'Market',
component: () => import('@/views/home/market/Market.vue')
},
{
path: 'MarketModify',
name: "MarketModify",
meta: { title: "市况、汇率管理" },
component: () => import("@/views/home/market/modify.vue"),
name: 'MarketModify',
meta: { title: '市况、汇率管理' },
component: () => import('@/views/home/market/modify.vue')
},
{
path: 'MarketModifys',
name: "MarketModifys",
meta: { title: "市况、汇率管理" },
component: () => import("@/views/home/market/modifys.vue"),
},
name: 'MarketModifys',
meta: { title: '市况、汇率管理' },
component: () => import('@/views/home/market/modifys.vue')
}
]
},
// 战略企画
{
path: "strategic",
meta: { title: "战略企划" },
name: "StrategicPlanning",
component: () => import("@/views/home/StrategicPlanning.vue"),
path: 'strategic',
meta: { title: '战略企划' },
name: 'StrategicPlanning',
component: () => import('@/views/home/StrategicPlanning.vue')
},
// 大金中国调达CSR
{
path: "csr",
meta: { title: "碳中和挑战" },
children: [{
path: "",
name: "CSR",
component: () => import("@/views/home/csr/CSR.vue"),
}, {
path: "modifyCsr2",
meta: { title: "内容管理" },
name: "modifyCsr2",
component: () => import("@/views/home/csr/modifyCSR2.vue"),
path: 'csr',
meta: { title: '碳中和挑战' },
children: [
{
path: '',
name: 'CSR',
component: () => import('@/views/home/csr/CSR.vue')
},
{
path: "modifyCsrList",
meta: { title: "列表内容" },
name: "modifyCsrList",
component: () => import("@/views/home/csr/index.vue"),
path: 'modifyCsr2',
meta: { title: '内容管理' },
name: 'modifyCsr2',
component: () => import('@/views/home/csr/modifyCSR2.vue')
},
{
path: 'modifyCsrCarbon',
meta: { title: '购入原材料脱碳素活动内容管理' },
name: 'modifyCsrCarbon',
component: () => import('@/views/home/csr/modifyCsrCarbon.vue')
},
{
path: 'modifyCsrList',
meta: { title: '列表内容' },
name: 'modifyCsrList',
component: () => import('@/views/home/csr/index.vue')
},
{
path: 'CSRList',
name: 'CSRList',
meta: { title: "足迹报告列表" },
component: () => import("@/views/home/csr/CSRlist.vue")
},
meta: { title: '足迹报告列表' },
component: () => import('@/views/home/csr/CSRlist.vue')
}
]
},
// 品质
{
path: "quality",
meta: { title: "品质" },
path: 'quality',
meta: { title: '品质' },
children: [
{
path: "",
name: "Quality",
component: () => import("@/views/home/quality/Quality.vue"),
path: '',
name: 'Quality',
component: () => import('@/views/home/quality/Quality.vue')
},
{
path: "/Home/quality/modify",
name: "QualityModify",
meta: { title: "品质内容管理" },
component: () => import("@/views/home/quality/modify.vue"),
},
path: '/Home/quality/modify',
name: 'QualityModify',
meta: { title: '品质内容管理' },
component: () => import('@/views/home/quality/modify.vue')
}
]
},
// 待审核情报
{
path: "Process",
meta: { title: "情报新增待审批" },
path: 'Process',
meta: { title: '情报新增待审批' },
children: [
{
path: '',
name: "Process",
component: () => import("@/views/home/intelligence/process/Process.vue"),
name: 'Process',
component: () =>
import('@/views/home/intelligence/process/Process.vue')
},
{
path: "/Home/Process/ProcessInfo/:id",
meta: { title: "情报审批详情" },
name: "",
component: () => import("@/views/home/intelligence/process/ProcessInfo.vue"),
path: '/Home/Process/ProcessInfo/:id',
meta: { title: '情报审批详情' },
name: '',
component: () =>
import('@/views/home/intelligence/process/ProcessInfo.vue')
},
{
path: '/Home/Process/Detail/:id/:flag',
name: '',
meta: { title: "情报审批详情" },
component: () => import("@/views/home/intelligence/Detail.vue")
meta: { title: '情报审批详情' },
component: () => import('@/views/home/intelligence/Detail.vue')
}
]
},
// C/D数据
{
path: "cd",
meta: { title: "C/D数据" },
name: "CD",
component: () => import("@/views/home/cd/CD.vue"),
path: 'cd',
meta: { title: 'C/D数据' },
name: 'CD',
component: () => import('@/views/home/cd/CD.vue')
},
// C/D数据
{
path: "developing",
meta: { title: "开发中" },
name: "Developing",
component: () => import("@/views/home/develop.vue"),
path: 'developing',
meta: { title: '开发中' },
name: 'Developing',
component: () => import('@/views/home/develop.vue')
},
// 差别化云空间
{
path: "diffspace",
meta: { title: "差别化研究" },
path: 'diffspace',
meta: { title: '差别化研究' },
children: [
{
path: "",
name: "Diffspace",
component: () => import("@/views/home/diffspace/Overview.vue"),
path: '',
name: 'Diffspace',
component: () => import('@/views/home/diffspace/Overview.vue')
},
{
path: "report",
meta: { title: "基础研究方向" },
name: "DiffspaceResearchReport",
path: 'report',
meta: { title: '基础研究方向' },
name: 'DiffspaceResearchReport',
component: () =>
import("@/views/home/diffspace/ResearchReport.vue"),
import('@/views/home/diffspace/ResearchReport.vue')
},
// {
// path: "modifys",
@ -406,27 +409,25 @@ const router = createRouter({
// },
{
path: "modifys",
name: "DiffspaceModify",
meta: { title: "差别化研究管理" },
component: () => import("@/views/home/diffspace/fack.vue"),
path: 'modifys',
name: 'DiffspaceModify',
meta: { title: '差别化研究管理' },
component: () => import('@/views/home/diffspace/fack.vue')
},
{
path: "modifyDiffspace",
name: "ModifyDiffspace",
meta: { title: "研究方向内容管理" },
component: () => import("@/views/home/diffspace/modifys.vue"),
path: 'modifyDiffspace',
name: 'ModifyDiffspace',
meta: { title: '研究方向内容管理' },
component: () => import('@/views/home/diffspace/modifys.vue')
},
{
path: "/Home/diffspace/diffspaceList/:id",
meta: { title: "差别化研究分类" },
path: '/Home/diffspace/diffspaceList/:id',
meta: { title: '差别化研究分类' },
children: [
{
path: '',
name: "DiffspaceTab",
component: () => import("@/views/home/diffspace/allList.vue"),
name: 'DiffspaceTab',
component: () => import('@/views/home/diffspace/allList.vue')
},
// {
// path:'',
@ -435,104 +436,105 @@ const router = createRouter({
// },
{
path: '/home/diffspace/DiffspaceTabModify',
name: "DiffspaceTabModify",
meta: { title: "差别化课题管理" },
component: () => import("@/views/home/diffspace/component/modify.vue"),
name: 'DiffspaceTabModify',
meta: { title: '差别化课题管理' },
component: () =>
import('@/views/home/diffspace/component/modify.vue')
}
]
}
]
},
],
},
// 集团方针
{
path: "group",
meta: { title: "集团部门方针" },
path: 'group',
meta: { title: '集团部门方针' },
children: [
{
path: "",
meta: { title: "集团方针" },
name: "Group",
component: () => import("@/views/company/index.vue"),
path: '',
meta: { title: '集团方针' },
name: 'Group',
component: () => import('@/views/company/index.vue')
},
{
path: "company",
meta: { title: "公司方针" },
name: "Company",
component: () => import("@/views/company/Company.vue"),
path: 'company',
meta: { title: '公司方针' },
name: 'Company',
component: () => import('@/views/company/Company.vue')
},
{
path: "headquarters",
meta: { title: "调达本部方针" },
name: "HeadQuarters",
component: () => import("@/views/company/HeadQuarters.vue"),
path: 'headquarters',
meta: { title: '调达本部方针' },
name: 'HeadQuarters',
component: () => import('@/views/company/HeadQuarters.vue')
}
]
},
// 紧急联络
{
path: 'phone',
meta: { title: "紧急联络" },
meta: { title: '紧急联络' },
children: [
{
path: "",
name: "phone",
component: () => import("@/views/home/phone/index.vue"),
path: '',
name: 'phone',
component: () => import('@/views/home/phone/index.vue')
},
{
path: "visit",
meta: { title: "拜访" },
name: "visit",
component: () => import("@/views/home/phone/visit.vue"),
path: 'visit',
meta: { title: '拜访' },
name: 'visit',
component: () => import('@/views/home/phone/visit.vue')
},
{
path: "inv",
meta: { title: "邀请" },
name: "inv",
component: () => import("@/views/home/phone/inv.vue"),
},
],
},
],
path: 'inv',
meta: { title: '邀请' },
name: 'inv',
component: () => import('@/views/home/phone/inv.vue')
}
]
}
]
},
// database
{
path: '/DataBase',
component: () => import("@/views/home/database/index.vue"),
children: [{
component: () => import('@/views/home/database/index.vue'),
children: [
{
path: '',
name: 'DataBase',
component: () => import("@/views/home/database/guize/index.vue")
component: () => import('@/views/home/database/guize/index.vue')
},
{
path: '/DataBase/Modify',
name: 'DataBaseModify',
component: () => import("@/views/home/database/modify.vue")
component: () => import('@/views/home/database/modify.vue')
}
]
},
{
path: "/bpcTreeDetail",
name: "bpcTreeDetail",
path: '/bpcTreeDetail',
name: 'bpcTreeDetail',
component: () =>
// import("@/views/home/bcp/modify.vue"),
import("@/views/home/bcp/bpcTreeDetail.vue"),
import('@/views/home/bcp/bpcTreeDetail.vue')
},
{
path: "/bpclist",
name: "bpclist",
path: '/bpclist',
name: 'bpclist',
component: () =>
// import("@/views/home/bcp/modify.vue"),
import("@/views/home/bcp/bpclist.vue"),
import('@/views/home/bcp/bpclist.vue')
},
{
path: "/contentList",
name: "contentList",
path: '/contentList',
name: 'contentList',
component: () =>
// import("@/views/home/bcp/modify.vue"),
import("@/views/home/bcp/contentList.vue"),
import('@/views/home/bcp/contentList.vue')
}
],
});
]
})
export default router;

View File

@ -10,7 +10,13 @@ import CSRContent2 from './CSRContent2.vue'
import CSRContent22 from './CSRContent22.vue'
import CSRContent23 from './CSRContent23.vue'
import { Content2, Content3 } from './CSRData'
import { useUserStore } from '@/stores/modules/user'
const store = useUserStore()
const { push } = useRouter()
const userCode = ['admin', 'csr_dandang', 'tech_service'].includes(
store.user.roleCode
)
const Navs = [{ name: '集团*部门方针' }, { name: '年度活动日程表' }, { name: '其他链接' }, { name: '紧急联络' }, { name: 'CN/JP' }]
const Content = [
{ key: '1-1', component: () => <CSRContent /> },
@ -27,6 +33,11 @@ const activeContent = computed(() => {
console.log(curContent,1111)
return curContent?.component || null
})
const shomks = () => {
// push('csr/modifyCsr2')
push({ name: 'modifyCsrCarbon' })
}
</script>
<template>
@ -38,11 +49,14 @@ const activeContent = computed(() => {
<div class="h-full relative flex flex-col">
<div class="flex flex-end ml10px mt27px">
<div class="flex-1"></div>
<!-- <el-button class="absolute right-5 top-[-8px]" v-if="userCode && activeNav === '1-2'" type="primary" @click="shomks"
>管理</el-button
> -->
<!-- <div class="px16px py8px cursor-pointer text-20px" v-for="nav in Navs" :key="nav.name">{{ nav.name }}</div> -->
</div>
<div class="flex-1 mt30px text-#142142 flex gap-30px h-825px">
<AppBlock class="shrink-0 h-full w241px box !b-0">
<div class="overflow-y-auto h-full">
<div class="overflow-y-auto h-full ">
<CSRSide v-model:activeNav="activeNav" />
</div>
</AppBlock>

View File

@ -174,9 +174,9 @@ async function downloadFile(data) {
</script>
<template>
<AppBlock class="h-full flex-1 box">
<AppBlock class="h-full flex-1 box rounded-18px">
<div class="h-full relative">
<div class="h-full relative rounded-18px">
<el-button v-if="userCode" type="primary" class="button" @click="shomks"></el-button>
<!-- 123 -->
<div class="text-32px font-700 h85px flex items-center justify-center line">

View File

@ -6,6 +6,7 @@ import AppBlock from '@/components/AppBlock.vue'
import { NIcon, useMessage, NCarousel } from 'naive-ui'
import { ChevronBack, ChevronForward } from '@vicons/ionicons5'
import { ElCarousel, ElCarouselItem } from 'element-plus'
import { NPopover } from 'naive-ui'
import { getFootprintList } from '@/api/daikin/base'
@ -18,7 +19,7 @@ const userCode = ['admin', 'csr_dandang', 'tech_service'].includes(
store.user.roleCode
)
const swipeRef = ref<any>(null)
const dataList = ref()
const dataList = ref([])
const swipeActiveIndex = ref(0)
function handleIndex(x: any) {
swipeActiveIndex.value = x.realIndex
@ -29,7 +30,7 @@ const setSwiperRef = (swiper: any) => {
}
// 2
const swipeSubRef = ref<any>(null)
const dataList2 = ref()
const dataList2 = ref([])
const swipeActiveIndex2 = ref(0)
function handleIndex2(x: any) {
swipeActiveIndex2.value = x.realIndex
@ -45,6 +46,8 @@ const pageInfo = reactive({
})
const swiperList = ref()
onMounted(async () => {
dataList.value = []
msgScoll.value?.addEventListener('scroll', handleVisitsScoll)
// Solution
const { rows } = await getFootprintList({
pageNum: pageInfo.currentPage,
@ -61,8 +64,11 @@ onMounted(async () => {
// };
// });
// }
swiperList.value = rows
// if(rows.length>5 || rows.length < 3){
// }else{
// swiperList.value = [...rows,...rows]
// }
}
//
getZu(1)
@ -163,20 +169,19 @@ const getZu = async (pageNum) => {
moduleId: '2'
})
if (type === 0) {
dataList.value = rows
} else {
// if (type === 0) {
// dataList.value = rows
// } else {
// }
dataList.value.push(...rows)
}
maxMsgLingth = total / 4
maxMsgLingth = total / pageSize
console.log(dataList.value, type)
}
const msgScoll = ref<HTMLElement | null>(null)
onMounted(() => {
msgScoll.value?.addEventListener('scroll', handleVisitsScoll)
})
const handleVisitsScoll = () => {
// if(pageNum >= 1) return
const container = msgScoll.value
if (container) {
const isAtBottom =
@ -192,7 +197,7 @@ const handleVisitsScoll = () => {
</script>
<template>
<div class="w-full h-full box">
<div class="w-full h-full box rounded-18px overflow-hidden">
<!-- <AppBlock class="w-full ">
<img src="./images/goudongxi.png" class="w-full h-full" />
</AppBlock> -->
@ -229,7 +234,6 @@ const handleVisitsScoll = () => {
<div class="w1200px px68px relative">
<div
class="swipe-nav nav-prev"
@click="swipeRef && swipeRef.slidePrev()"
>
<NIcon size="40" color="#537deb">
<ChevronBack />
@ -237,25 +241,32 @@ const handleVisitsScoll = () => {
</div>
<div
class="swipe-nav nav-next"
@click="swipeRef && swipeRef.slideNext()"
>
<NIcon size="40" color="#537deb">
<ChevronForward />
</NIcon>
</div>
<!-- :slides-per-group="3" -->
<Swiper
ref="swipeRef"
@slideChangeTransitionEnd="handleIndex"
:autoplay="{delay: 3000, disableOnInteraction: false, pauseOnMouseEnter: true,stopOnLastSlide: false}"
@swiper="setSwiperRef"
class="h325px"
:slides-per-view="3"
:slides-per-group="1"
:loopAdditionalSlides="3"
:speed="500"
:space-between="8"
:modules="modules"
:scrollbar="{ draggable: false }"
:loop="false"
:loop="true"
:navigation="{
nextEl: '.nav-next',
prevEl: '.nav-prev',
}"
>
<SwiperSlide v-for="(i, index) in swiperList" :key="i">
<template v-for="(i, index) in swiperList" :key="i">
<SwiperSlide >
<div
class="w340px h300px overflow-hidden bg-#F6F8FF mt10px relative rd-25px"
style="box-shadow: 0px 7px 12px 0px #e7e7e7"
@ -302,7 +313,7 @@ const handleVisitsScoll = () => {
v-if="i.imgUrl"
v-for="ite in i.imgUrl"
:src="ite.url"
class="p10px w-full max-h-200px image-container"
class="p10px w-full max-h-200px image-container overflow-hidden"
/>
</n-carousel>
</div>
@ -318,15 +329,21 @@ const handleVisitsScoll = () => {
src="../../../assets/images/lvbiao@2x.png"
class="mr-5px"
/>
<n-popover trigger="hover" placement="top-start" >
<template #trigger>
<span
class="truncate text-16px"
v-if="i.filePath && i.filePath.length > 0"
@click="toDetail(i)"
>{{ i.filePath[0].originalFileName }}
> {{ i.filePath[0]?.originalFileName }}
</span>
</template>
<div class="text-18px leading-40px">
{{ i.filePath[0]?.originalFileName }}
</div>
</n-popover>
</div>
<div
v-if="i.filePath.length == 1"
v-if="i.filePath.length > 1"
title="查看更多"
@click="toDetail(i)"
class="cursor-pointer right--20px top-0px w60px pt-6px flex items-center ml-auto text-right"
@ -359,6 +376,7 @@ const handleVisitsScoll = () => {
</div>
</div>
</SwiperSlide>
</template>
</Swiper>
</div>
</AppBlock>

View File

@ -8,11 +8,18 @@ import {
liQuids
} from './CSRDatas'
import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
const { chartRef, option } = charData()
const { chartRef: chartRef1, option: option1 } = charData2()
const { chartRef: chartRefP1, option: optionP1 } = pieData1()
// const { chartRef, option } = charData()
// const { chartRef: chartRef1, option: option1 } = charData2()
// const { chartRef: chartRefP1, option: optionP1 } = pieData1()
import { NNumberAnimation } from "naive-ui";
import { ref, onMounted } from 'vue'
const option = ref({});
const option1 = ref({});
const optionP1 = ref<any>({});
const chartRef = ref(null);
const chartRef1 = ref(null);
const chartRefP1 = ref(null);
const locale = computed(() => zhCn)
const YearTime1 = ref('2020')
const YearTime2 = ref('2023')
@ -22,10 +29,22 @@ const cardsClick = (it) => {
console.log(flgs.value)
// dataInfo.treeSource = it
}
onMounted(() => {
const char = charData()
option.value = char.option.value
chartRef.value = char.chartRef.value
const char1 = charData2()
option1.value = char1.option.value
chartRef1.value = char1.chartRef.value
const charP1 = pieData1()
optionP1.value = charP1.option.value
chartRefP1.value = charP1.chartRef.value
})
</script>
<template>
<div class="flex w-full h-full">
<div class="flex w-full h-full rounded-18px">
<!-- <AppBlock class="w-full ">
<img src="./images/goudongxi3.png" class="w-full h-full" />
</AppBlock> -->
@ -91,14 +110,14 @@ const cardsClick = (it) => {
</el-config-provider>
</div>
</div>
<div class="w-full bg-#fff h-38.5%">
<div class="text-center text-#142142 text-22px py20px font-extrabold">
<div class="relative w-full bg-#fff h-38.5%">
<div class="absolute top-28px left-1/2 translate-[-50%] text-center text-#142142 text-22px py20px font-extrabold">
SMM牌号低碳铝价格&价差
</div>
<div class="w-full h-340px">
<div class="w-full h-340px pt-4">
<VChart ref="chartRef1" :option="option1" />
</div>
<div class="absolute top-16px left-2 flex items-center">
<div class="absolute top-12px left-2 flex items-center">
<el-config-provider :locale="locale">
<el-date-picker
v-model="YearTime1"

View File

@ -19,7 +19,7 @@ const isDateDisabled = (date) => {
</script>
<template>
<div class="flex w-full ">
<div class="flex w-full rounded-18px">
<!-- <AppBlock> -->
<!-- <img src="./images/goudongxi2.png" class="w-full h-full" /> -->
<div class="w-full bg-#f4f4f4 flex flex-wrap justify-between h-full rd-25px">
@ -119,9 +119,9 @@ const isDateDisabled = (date) => {
</div>
<div ref="msgScoll" class="px20px w-full h800px cent_box overflow-y-auto">
<div v-if="true" class="text-#808696 bg-#F4F8FF items-center flex py10px rd-5px mt10px" v-for="(i, key) in 9" :key="i">
<div v-if="true" class=" text-18px text-#808696 bg-#F4F8FF items-center flex py10px rd-5px mt10px" v-for="(i, key) in 9" :key="i">
<div class="truncate2" @click="toDetail(i,'App_E_Message')">
<span class="text-#fff bg-#407DF1 px5px text-16px rounded-20px mr-5px inlineFlex">{{ ++key }}</span>
<span class="text-#fff bg-#407DF1 px5px rounded-20px mr-5px inlineFlex">{{ ++key }}</span>
<span>{{'供应商名称' + i}} </span>
</div>
<div class="min-w150px max-w150px text-#000">3次未提交</div>

View File

@ -3,27 +3,84 @@ import * as echarts from 'echarts'
import 'echarts-liquidfill';
import {getCSRDetail} from '@/api/daikin/base'
import { create } from 'naive-ui';
import { xAxisD, dataA, dataB } from './testData'
export const Content2 = [
{
key: '0',
label: '活动计划',
children: [
{ label: '调达本部HP', items: [{ content: 'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来' }] },
{ label: 'CSR-碳中和', items: [{ content: 'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来' }] },
{ label: '中国地区连携强化 ', items: [{ content: 'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来' }] },
],
{
label: '调达本部HP',
items: [
{
content:
'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来'
}
]
},
{
label: 'CSR-碳中和',
items: [
{
content:
'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来'
}
]
},
{
label: '中国地区连携强化 ',
items: [
{
content:
'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来'
}
]
}
]
},
{
key: '1',
label: '活动成果',
children: [
{ label: 'Database推进', items: [{ content: 'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来' }] },
{ label: '市况', items: [{ content: 'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来' }] },
{ label: '汇率', items: [{ content: 'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来' }] },
{ label: 'BCP', items: [{ content: 'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来' }] },
],
{
label: 'Database推进',
items: [
{
content:
'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来'
}
]
},
{
label: '市况',
items: [
{
content:
'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来'
}
]
},
{
label: '汇率',
items: [
{
content:
'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来'
}
]
},
{
label: 'BCP',
items: [
{
content:
'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来'
}
]
}
]
}
]
export const Content3 = [
{
@ -31,41 +88,153 @@ export const Content3 = [
title: 'xx活动概要',
label: '活动计划',
children: [
{ label: '调达本部HP', items: [{ content: 'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来' }] },
{ label: 'CSR-碳中和', items: [{ content: 'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来' }] },
{ label: '工作模式变更 ', items: [{ content: 'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来' }] },
{ label: '差别化', items: [{ content: 'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来' }] },
],
{
label: '调达本部HP',
items: [
{
content:
'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来'
}
]
},
{
label: 'CSR-碳中和',
items: [
{
content:
'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来'
}
]
},
{
label: '工作模式变更 ',
items: [
{
content:
'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来'
}
]
},
{
label: '差别化',
items: [
{
content:
'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来'
}
]
}
]
},
{
key: '1',
label: '活动成果',
children: [
{ label: 'Database推进', items: [{ content: 'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来' }] },
{ label: '全球连携强化', items: [{ content: 'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来' }] },
{ label: '高品质高品位', items: [{ content: 'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来' }] },
],
{
label: 'Database推进',
items: [
{
content:
'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来'
}
]
},
{
label: '全球连携强化',
items: [
{
content:
'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来'
}
]
},
{
label: '高品质高品位',
items: [
{
content:
'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来'
}
]
}
]
},
{
key: '2',
title: 'xx活动概要',
label: '活动计划',
children: [
{ label: 'CSR-碳中和', items: [{ content: 'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来' }] },
{ label: '工作模式变更 ', items: [{ content: 'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来' }] },
{ label: '差别化', items: [{ content: 'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来' }] },
],
{
label: 'CSR-碳中和',
items: [
{
content:
'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来'
}
]
},
{
label: '工作模式变更 ',
items: [
{
content:
'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来'
}
]
},
{
label: '差别化',
items: [
{
content:
'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来'
}
]
}
]
},
{
key: '3',
label: '活动成果',
children: [
{ label: 'Database推进', items: [{ content: 'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来' }] },
{ label: '市况', items: [{ content: 'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来' }] },
{ label: '全球连携强化', items: [{ content: 'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来' }] },
{ label: '高品质高品位', items: [{ content: 'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来' }] },
],
{
label: 'Database推进',
items: [
{
content:
'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来'
}
]
},
{
label: '市况',
items: [
{
content:
'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来'
}
]
},
{
label: '全球连携强化',
items: [
{
content:
'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来'
}
]
},
{
label: '高品质高品位',
items: [
{
content:
'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来'
}
]
}
]
}
]
const form = ref({
lable1: {
@ -177,17 +346,19 @@ const form = ref({
})
async function getCSR() {
const {data,data:{content:{form:ffff}}} = await getCSRDetail()
const {
data,
data: {
content: { form: ffff }
}
} = await getCSRDetail()
form.value = ffff
}
export function charData() {
const chartRef = ref()
const params = '15%'
const option = ref<EChartsOption>({
tooltip: {
trigger: 'axis',
@ -197,7 +368,7 @@ export function charData() {
},
legend: {
data: ['DIS', 'DSZ'],
bottom:'0px',
bottom: '0px'
// right:'50px'
},
grid: {
@ -220,35 +391,29 @@ export function charData() {
// ]
// },
xAxis: { type: 'category',
data:form.value.lable4.name.split(",")
},
xAxis: { type: 'category', data: form.value.lable4.name.split(',') },
yAxis: {},
series: [
{
name: 'DIS',
type: 'bar',
barWidth: '30%',
data: form.value.lable4.year.split(","),
label:
{
show: false,
},
data: form.value.lable4.year.split(','),
label: {
show: false
}
},
{
name: 'DSZ',
type: 'bar',
label:
{
label: {
show: false,
position: 'inside',
formatter: '{c}%'
},
barWidth: '30%',
data: form.value.lable4.date.split(","),
},
data: form.value.lable4.date.split(',')
}
// { name: '预测/实绩用量', type: 'line' }
]
})
@ -256,75 +421,191 @@ export function charData() {
}
export function charData2() {
const chartRef = ref()
const params = '15%'
// const option = ref<EChartsOption>({
// tooltip: {
// trigger: 'axis',
// axisPointer: {
// type: 'shadow'
// }
// },
// legend: {
// data: ['DIS', 'DSZ'],
// top: '0px',
// right: '50px'
// },
// grid: {
// left: '3%',
// right: '4%',
// containLabel: true
// },
// title: [{ text: '单位:元/吨' }],
// // color:['#58D9FC','red','#fff'],
// // dataset: {
// // // 提供一份数据。
// // source: [
// // ['2020实绩', 220, 0, 220],
// // ['2021实绩', 182, 0, 182],
// // ['2022实绩', 191, 0, 191],
// // ['2023', 234, 43, 234],
// // ['2024', 290, 23, 290],
// // ['2025', 330, 65, 330],
// // ]
// // },
// xAxis: {
// type: 'category',
// data: form.value.lable14.name.split(','),
// axisLabel: {
// interval: 0, //隔几项显示一个标签
// rotate: '-90' //标签倾斜的角度,旋转的角度是-90到90度
// }
// },
// yAxis: {},
// series: [
// {
// name: 'DIS',
// type: 'line',
// data: form.value.lable14.year.split(',')
// },
// {
// name: 'DSZ',
// type: 'line',
// data: form.value.lable14.date.split(',')
// }
// // { name: '预测/实绩用量', type: 'line' }
// ]
// })
const option = ref<EChartsOption>({
// title: {
// text: 'SMM牌号低碳铝价格&价差',
// left: 'center'
// },
grid: {
bottom: 80
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
type: 'cross',
animation: false,
label: {
backgroundColor: '#505765'
}
}
},
legend: {
data: ['DIS', 'DSZ'],
top:'0px',
right:'50px'
data: ['低碳铝', '价差'],
right: 10
},
grid: {
left: '3%',
right: '4%',
containLabel: true
dataZoom: [
{
show: true,
startValue: '2022-06-01',
endValue: '2022-10-01'
},
title: [{ text: '单位:千吨' }],
// color:['#58D9FC','red','#fff'],
// dataset: {
// // 提供一份数据。
// source: [
// ['2020实绩', 220, 0, 220],
// ['2021实绩', 182, 0, 182],
// ['2022实绩', 191, 0, 191],
// ['2023', 234, 43, 234],
// ['2024', 290, 23, 290],
// ['2025', 330, 65, 330],
// ]
// },
xAxis: { type: 'category',
data:form.value.lable14.name.split(","),
axisLabel: {
interval: 0, //隔几项显示一个标签
rotate: "-90" //标签倾斜的角度,旋转的角度是-90到90度
{
type: 'inside'
// realtime: true,
// start: 65,
// end: 85
}
],
xAxis: [
{
type: 'category',
boundaryGap: false,
axisLine: { onZero: false },
// prettier-ignore
data: xAxisD
}
],
yAxis: [
{
name: '单位:元',
type: 'value'
},
yAxis: {},
{
name: '单位:元/吨',
// nameLocation: 'start',
alignTicks: true,
type: 'value'
// inverse: true
}
],
series: [
{
name: 'DIS',
name: '低碳铝',
type: 'line',
data: form.value.lable14.year.split(","),
smooth: true,
// areaStyle: {},
lineStyle: {
width: 3
// color: '#7030a0'
},
emphasis: {
focus: 'series'
},
// prettier-ignore
data: dataA
},
{
name: 'DSZ',
name: '价差',
type: 'line',
data: form.value.lable14.date.split(","),
smooth: true,
yAxisIndex: 1,
markLine: {
symbol: '', // 设置为空字符串,去除箭头
silent: true,
lineStyle: {
color: '#7030a0',
type: 'solid',
width: 3
},
// { name: '预测/实绩用量', type: 'line' }
data: [
{
yAxis: 700
}
]
},
lineStyle: {
width: 3
},
emphasis: {
focus: 'series'
},
// prettier-ignore
data: dataB
}
]
})
return { chartRef, option }
}
// 原材料用量及碳排放量占比图
export function pieData1() {
const chartRef = ref()
const option = ref<EChartsOption>({
legend: {
orient: 'vertical',
data: [
{
name: '原材料碳排放量(吨)',
itemStyle: { color: '#f8cbad', borderWidth: 0 }
},
{
name: '原材料使用量(吨)',
itemStyle: { color: '#acc1fb', borderWidth: 0 }
}
],
selectedMode: false,
left: 10,
top: 30
},
title: {
text: form.value.lable8.name,
// subtext: 'Fake Data',
@ -336,7 +617,7 @@ export function pieData1() {
},
grid: {
left: '20',
top: '30',
// top: '100',
right: '70',
bottom: '10',
containLabel: true
@ -348,13 +629,17 @@ export function pieData1() {
// },
series: [
{
name: '',
name: '原材料碳排放量(吨)',
type: 'pie',
selectedMode: 'single',
radius: [0, '50%'],
radius: [0, '60%'],
// silent: 'ture', //图形是否不响应和触发鼠标事件,默认为 false即响应和触发鼠标事件。
// avoidLabelOverlap: false,
// legendHoverLink: false,
label: {
position: 'inner',
fontSize: 14
fontSize: 14,
formatter: '{b}{c}'
},
labelLine: {
show: false
@ -363,91 +648,96 @@ export function pieData1() {
{
value: 159158,
name: '铝',
label: { color: '#fff', fontSize: '16px', fontWeight: 'bold' }
label: { color: '#000', fontSize: '16px', fontWeight: '' }
},
{
value: 165731,
name: '铁',
label: { color: '#fff', fontSize: '16px', fontWeight: 'bold' }
label: { color: '#000', fontSize: '16px', fontWeight: '' }
},
{
value: 78942,
name: '铜',
// selected: true,
label: { color: '#fff', fontSize: '16px', fontWeight: 'bold' }
label: { color: '#000', fontSize: '16px', fontWeight: '' }
},
{
value: 10000,
name: '树脂',
label: { color: '#fff', fontSize: '16px', fontWeight: 'bold' }
label: { color: '#000', fontSize: '16px', fontWeight: '' }
}
],
// 自定义颜色
itemStyle: {
emphasis: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
},
normal: {
// emphasis: {
// shadowBlur: 10,
// shadowOffsetX: 0,
// shadowColor: 'rgba(0, 0, 0, 0.5)'
// },
borderColor: 'rgba(0, 0, 0, 0.5)',
borderWidth: 1,
// 自定义每个扇形的颜色
color: function (params) {
const colorList = ['#3EC22B', '#3EC22B', '#3EC22B', '#3EC22B']
// const colorList = ['#3EC22B', '#3EC22B', '#3EC22B', '#3EC22B']
const colorList = ['#f8cbad', '#f8cbad', '#f8cbad', '#f8cbad']
return colorList[params.dataIndex]
}
}
},
hoverOffset: 0,
hoverAnimation: false,
emphasis: {
scale: false
}
// hoverAnimation: false,
},
{
name: '',
name: '原材料使用量(吨)',
type: 'pie',
radius: ['45%', '60%'],
radius: ['55%', '80%'],
avoidLabelOverlap: false,
itemStyle: {
// borderRadius: 10,
borderColor: '#fff',
borderWidth: 4
},
labelLine: {
length: 30
borderWidth: 1, //外环间隔~~~~~
borderColor: 'rgba(0, 0, 0, 0.5)',
// 自定义每个扇形的颜色
color: function (params) {
// const colorList = ['#3EC22B', '#3EC22B', '#3EC22B', '#3EC22B']
const colorList = ['#acc1fb', '#acc1fb', '#acc1fb', '#acc1fb']
return colorList[params.dataIndex]
}
},
// labelLine: {
// length: 30
// },
label: {
formatter: ' {b|{b}}{c}吨 ',
backgroundColor: '#F6F8FC',
borderColor: '#8C8D8E',
borderWidth: 1,
borderRadius: 4,
position: 'inner',
fontSize: 16,
formatter: '{b}{c}'
// backgroundColor: '#F6F8FC',
// borderColor: '#8C8D8E',
// borderWidth: 1,
// borderRadius: 4
rich: {
a: {
color: '#6E7079',
lineHeight: 22,
align: 'center'
},
hr: {
borderColor: '#8C8D8E',
width: '100%',
borderWidth: 1,
height: 0
},
b: {
color: '#4C5058',
fontSize: 14,
fontWeight: 'bold',
lineHeight: 33
},
per: {
color: '#fff',
backgroundColor: '#4C5058',
padding: [3, 4],
borderRadius: 4
}
}
// rich: {
// a: {
// color: '#6E7079',
// lineHeight: 22,
// align: 'center'
// },
// hr: {
// borderColor: '#8C8D8E',
// width: '100%',
// borderWidth: 1,
// height: 0
// },
// b: {
// color: '#4C5058',
// fontSize: 14,
// fontWeight: 'bold',
// lineHeight: 33
// },
// per: {
// color: '#fff',
// backgroundColor: '#4C5058',
// padding: [3, 4],
// borderRadius: 4
// }
// }
},
data: [
{ value: 0.0, name: '铝' },
@ -478,8 +768,7 @@ export function pieData1() {
return { chartRef, option }
}
// SMM牌号低碳铝价格&价差
export function pieData2() {
const chartRef = ref()
const option = ref<EChartsOption>({
@ -501,19 +790,19 @@ export function pieData2() {
itemStyle: {
borderRadius: 10,
borderColor: '#fff',
borderWidth: 2
borderWidth: 1
},
label: {
show: true,
formatter(param) {
// correct the percentage
return param.name + ' (' + param.percent * 2 + '%)';
return param.name + ' (' + param.percent * 2 + '%)'
}
},
emphasis: {
label: {
show: true,
fontSize: 20,
fontSize: 20
// fontWeight: 'bold'
}
},
@ -527,10 +816,11 @@ export function pieData2() {
// { value: 484, name: 'Union Ads' },
// { value: 300, name: 'Video Ads' }
// ]
data: Object.values(form.value.lable9.data).filter(item => item.name !== '' || item.value !== '')
data: Object.values(form.value.lable9.data).filter(
(item) => item.name !== '' || item.value !== ''
)
}
]
})
return { chartRef, option }
}

View File

@ -7,7 +7,9 @@
<div class="bg-#fff rd-15px px30px pt30px w-full ">
<el-tabs v-model="activeName" class="demo-tabs">
<div class="float-right px20px py10px z-200 bg-#c4c4c4" @click="goBacks"> <el-icon class="text-red"><ArrowLeftBold size="18"/></el-icon> </div>
<el-button class="float-right px20px py10px z-200 cursor-pointer felx items-center" type="info" @click="goBacks">
<el-icon class="text-red"><ArrowLeftBold size="18" /></el-icon>
</el-button>
<el-tab-pane label="banner管理" name="first">
<el-button type="primary" @click="editClickA('add')" class="mb-20px">
新增

View File

@ -17,7 +17,7 @@
}" :cell-style="{ 'overflow-y': 'auto' }"
:tree-props="{ children: 'childList', hasChildren: 'hasChildren'}">
<el-table-column prop="name" label="标题名称" align="left"/>
<el-table-column prop="sort" label="排序" align="center"/>
<!-- <el-table-column prop="sort" label="排序" align="center"/> -->
<el-table-column prop="address" label="操作" align="center">
<template #default="scope">
<el-button type="primary" @click="editClickA('edit', scope.row)" class="mb-20px">
@ -48,7 +48,7 @@
<el-table-column prop="title" label="标题名称" show-overflow-tooltip/>
<!-- <el-table-column prop="deptName" label="排序" /> -->
<el-table-column 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" :show-overflow-tooltip="true">
<template #default="scope">
<!-- <el-button type="primary" class="button" @click="getUser(scope.row)"></el-button> -->

View File

@ -147,7 +147,8 @@ const detilInfo=async (obj)=>{
<template #default="scope">
<!-- <el-button size="small" @click="handleEditA(scope.$index, scope.row)">编辑</el-button>
<el-button size="small" type="danger" @click="handleDeleteA(scope.$index, scope.row)">删除</el-button> -->
<el-button size="small" @click="toReply(scope.row)"></el-button>
<el-button size="small" v-if="!scope.row.chatVOList?.length" @click="toReply(scope.row)"></el-button>
<el-button size="small" type="success" v-if="scope.row.chatVOList?.length"></el-button>
</template>
</el-table-column>
</el-table>
@ -175,7 +176,8 @@ const detilInfo=async (obj)=>{
<template #default="scope">
<!-- <el-button size="small" @click="handleEditA(scope.$index, scope.row)">编辑</el-button>
<el-button size="small" type="danger" @click="handleDeleteA(scope.$index, scope.row)">删除</el-button> -->
<el-button size="small" @click="toReply(scope.row)"></el-button>
<el-button size="small" v-if="!scope.row.chatVOList?.length" @click="toReply(scope.row)"></el-button>
<el-button size="small" type="success" v-if="scope.row.chatVOList?.length"></el-button>
</template>
</el-table-column>
</el-table>
@ -202,7 +204,8 @@ const detilInfo=async (obj)=>{
<template #default="scope">
<!-- <el-button size="small" @click="handleEditA(scope.$index, scope.row)">编辑</el-button>
<el-button size="small" type="danger" @click="handleDeleteA(scope.$index, scope.row)">删除</el-button> -->
<el-button size="small" @click="toReply(scope.row)"></el-button>
<el-button size="small" v-if="!scope.row.chatVOList?.length" @click="toReply(scope.row)"></el-button>
<el-button size="small" type="success" v-if="scope.row.chatVOList?.length"></el-button>
</template>
</el-table-column>
</el-table>

View File

@ -222,8 +222,8 @@ function getLastSubstring(str: string): string {
<div class="q-wrapper mt30px text-#142142 flex flex-wrap justify-between">
<div class="caver relative">
<div class="box-title">不良情报</div>
<div class="absolute right-0 top-30px w165px text-14px text-#B2B7BE">
{{ dataD.length > 0 ? "更新时间:" + dataD[0].createTime : "" }}
<div class="absolute right-0 top-30px w195px text-16px text-#B2B7BE">
{{ dataD.length > 0 ? "更新时间:" + dataD[0]?.createTime : "" }}
</div>
<div class="mt23px overflow-y-auto">
<el-table
@ -239,16 +239,16 @@ function getLastSubstring(str: string): string {
'margin-top': '20px',
'font-size': '18px',
}"
:cell-style="{ 'text-align': 'center', height: '70px' }"
:cell-style="{ 'text-align': 'center', height: '70px', 'font-size': '18px' }"
>
<el-table-column prop="createTime" label="时间" width="110px" />
<el-table-column prop="createTime" label="时间" width="130px" />
<el-table-column prop="cate" label="类别" width="100px" />
<el-table-column prop="title" label="详情" />
<el-table-column prop="filePathList" label="情报追踪">
<template #default="{ row, $index }">
<span
v-if="row.filePathList.length > 0"
class="text-#5695FF underline text-10px"
class="text-#5695FF underline text-16px truncate"
@click="openUrl(row.filePathList[0].url)"
>{{ row.filePathList[0].originalFileName }}</span
>
@ -315,12 +315,12 @@ function getLastSubstring(str: string): string {
'margin-top': '20px',
'font-size': '18px',
}"
:cell-style="{ 'text-align': 'center', height: '70px' }"
:cell-style="{ 'text-align': 'center', height: '70px', 'font-size': '18px' }"
>
<el-table-column prop="monthStr" label="时间" width="70px" />
<el-table-column prop="indexId" label="供应商" width="" />
<el-table-column prop="partSum" label="数量" width="" />
<el-table-column prop="title" label="不良内容" width="">
<el-table-column prop="title" label="不良内容" width="96px">
<!-- <template #default="{ row, $index }">
<span
v-if="row.filePathList.length > 0"
@ -378,9 +378,9 @@ function getLastSubstring(str: string): string {
'margin-top': '20px',
'font-size': '18px',
}"
:cell-style="{ 'text-align': 'center', height: '70px' }"
:cell-style="{ 'text-align': 'center', height: '70px', 'font-size': '18px' }"
>
<el-table-column prop="createTime" label="时间" width="110px" />
<el-table-column prop="createTime" label="时间" width="132px" />
<el-table-column prop="title" label="详情" width="110px" />
<el-table-column prop="source" label="来源" width="110px" />
<el-table-column
@ -391,7 +391,7 @@ function getLastSubstring(str: string): string {
<template #default="{ row, $index }">
<span
v-if="row.filePathList.length > 0"
class="text-#5695FF underline text-10px maxWidth150"
class="text-#5695FF underline text-16px w-80px truncate"
@click="openUrl(row.filePathList[0].url)"
>{{ row.filePathList[0].originalFileName }}</span
>
@ -442,7 +442,7 @@ function getLastSubstring(str: string): string {
'margin-top': '20px',
'font-size': '18px',
}"
:cell-style="{ 'text-align': 'center', height: '70px' }"
:cell-style="{ 'text-align': 'center', height: '70px', 'font-size': '18px' }"
>
<el-table-column prop="createTime" label="时间" width="150px" />
<el-table-column prop="title" label="内容" width="150px" />
@ -455,7 +455,7 @@ function getLastSubstring(str: string): string {
<template #default="{ row, $index }">
<span
v-if="row.filePathList.length > 0"
class="text-#5695FF underline text-10px maxWidth150"
class="text-#5695FF underline text-16px w-80px truncate"
@click="openUrl(row.filePathList[0].url)"
>{{ row.filePathList[0].originalFileName }}</span
>

View File

@ -380,7 +380,7 @@ const cateValue = ref('新品')
<el-button type="primary" @click="handleEditB" class="my20px">不良情报新增</el-button>
<el-table :data="dataB" style="width: 95%"
:header-cell-style="{ background: '#2A7BF7', color: '#fff', height: '60px', textAlign: 'center', 'font-size': '24px' }"
:cell-style="{ 'text-align': 'center' }">
:cell-style="{ 'text-align': 'center', 'font-size': '16px' }">
<el-table-column label="时间" prop="createTime" />
<el-table-column label="类别" prop="cate" />
@ -413,7 +413,7 @@ const cateValue = ref('新品')
<el-button type="primary" @click="handleEditA" class="my20px">不良统计新增</el-button>
<el-table :data="dataA" style="width: 95%"
:header-cell-style="{ background: '#2A7BF7', color: '#fff', height: '60px', textAlign: 'center', 'font-size': '24px' }"
:cell-style="{ 'text-align': 'center' }">
:cell-style="{ 'text-align': 'center' , 'font-size': '16px'}">
<el-table-column label="时间" prop="monthDate" width="180px" />
<el-table-column label="供应商" prop="indexId" width="220px" />
<!-- <el-table-column label="计件数" prop="partSum" width="150px"/>
@ -451,7 +451,7 @@ const cateValue = ref('新品')
<el-button type="primary" @click="handleEditC" class="my20px">品质情报新增</el-button>
<el-table :data="dataC" style="width: 95%"
:header-cell-style="{ background: '#2A7BF7', color: '#fff', height: '60px', textAlign: 'center', 'font-size': '24px' }"
:cell-style="{ 'text-align': 'center' }">
:cell-style="{ 'text-align': 'center' , 'font-size': '16px'}">
<el-table-column label="时间" prop="createTime" />
<el-table-column label="详情" prop="title" />
<el-table-column label="来源" prop="source" />
@ -483,7 +483,7 @@ const cateValue = ref('新品')
<el-button type="primary" @click="handleEditD" class="my20px">活动进展新增</el-button>
<el-table :data="dataD" style="width: 95%"
:header-cell-style="{ background: '#2A7BF7', color: '#fff', height: '60px', textAlign: 'center', 'font-size': '24px' }"
:cell-style="{ 'text-align': 'center' }">
:cell-style="{ 'text-align': 'center' , 'font-size': '16px'}">
<el-table-column label="时间" prop="createTime" />