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.碳中和相关活动报告-- 显示其他的活动 后面排.

File diff suppressed because it is too large Load Diff

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
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 {
dataList.value.push(...rows)
}
maxMsgLingth = total / 4
// if (type === 0) {
// dataList.value = rows
// } else {
// }
dataList.value.push(...rows)
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"
/>
<span
class="truncate text-16px"
v-if="i.filePath && i.filePath.length > 0"
@click="toDetail(i)"
>{{ i.filePath[0].originalFileName }}
</span>
<n-popover trigger="hover" placement="top-start" >
<template #trigger>
<span
class="truncate text-16px"
@click="toDetail(i)"
> {{ 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,69 +3,238 @@ 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年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来' }] },
],
},
{
key: '1',
label: '活动成果',
children: [
{ label: 'Database推进', items: [{ content: 'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来' }] },
{ label: '市况', items: [{ content: 'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来' }] },
{ label: '汇率', items: [{ content: 'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来' }] },
{ label: 'BCP', items: [{ content: 'FY22年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来' }] },
],
},
{
key: '0',
label: '活动计划',
children: [
{
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年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来'
}
]
}
]
}
]
export const Content3 = [
{
key: '0',
title: 'xx活动概要',
label: '活动计划',
children: [
{ 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年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来' }] },
],
},
{
key: '2',
title: 'xx活动概要',
label: '活动计划',
children: [
{ 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年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来' }] },
],
},
{
key: '0',
title: 'xx活动概要',
label: '活动计划',
children: [
{
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年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来'
}
]
}
]
},
{
key: '2',
title: 'xx活动概要',
label: '活动计划',
children: [
{
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年度集团新年方针:领先时代的变化开创崭新的未来变化开 创崭新的未来'
}
]
}
]
}
]
const form = ref({
lable1: {
@ -177,154 +346,266 @@ const form = ref({
})
async function getCSR() {
const {data,data:{content:{form:ffff}}} = await getCSRDetail()
form.value = ffff
const {
data,
data: {
content: { form: ffff }
}
} = await getCSRDetail()
form.value = ffff
}
export function charData() {
const chartRef = ref()
const params = '15%'
const chartRef = ref()
const params = '15%'
const option = ref<EChartsOption>({
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
legend: {
data: ['DIS', 'DSZ'],
bottom: '0px'
// right:'50px'
},
grid: {
left: '3%',
right: '4%',
bottom: '10%',
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],
// ]
// },
const option = ref<EChartsOption>({
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
legend: {
data: ['DIS', 'DSZ'],
bottom:'0px',
// right:'50px'
},
grid: {
left: '3%',
right: '4%',
bottom: '10%',
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.lable4.name.split(",")
},
yAxis: {},
series: [
{
name: 'DIS',
type: 'bar',
barWidth: '30%',
data: form.value.lable4.year.split(","),
label:
{
show: false,
},
},
{
name: 'DSZ',
type: 'bar',
label:
{
show: false,
position: 'inside',
formatter: '{c}%'
},
barWidth: '30%',
data: form.value.lable4.date.split(","),
},
// { name: '预测/实绩用量', type: 'line' }
]
})
return { chartRef, option }
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
}
},
{
name: 'DSZ',
type: 'bar',
label: {
show: false,
position: 'inside',
formatter: '{c}%'
},
barWidth: '30%',
data: form.value.lable4.date.split(',')
}
// { name: '预测/实绩用量', type: 'line' }
]
})
return { chartRef, option }
}
export function charData2() {
const chartRef = ref()
const params = '15%'
const chartRef = ref()
const params = '15%'
// const option = ref<EChartsOption>({
// tooltip: {
// trigger: 'axis',
// axisPointer: {
// type: 'shadow'
// }
// },
// legend: {
// data: ['DIS', 'DSZ'],
// top: '0px',
// right: '50px'
// },
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],
// ]
// },
// 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' }
// ]
// })
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' }
]
})
return { chartRef, option }
const option = ref<EChartsOption>({
// title: {
// text: 'SMM牌号低碳铝价格&价差',
// left: 'center'
// },
grid: {
bottom: 80
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
animation: false,
label: {
backgroundColor: '#505765'
}
}
},
legend: {
data: ['低碳铝', '价差'],
right: 10
},
dataZoom: [
{
show: true,
startValue: '2022-06-01',
endValue: '2022-10-01'
},
{
type: 'inside'
// realtime: true,
// start: 65,
// end: 85
}
],
xAxis: [
{
type: 'category',
boundaryGap: false,
axisLine: { onZero: false },
// prettier-ignore
data: xAxisD
}
],
yAxis: [
{
name: '单位:元',
type: 'value'
},
{
name: '单位:元/吨',
// nameLocation: 'start',
alignTicks: true,
type: 'value'
// inverse: true
}
],
series: [
{
name: '低碳铝',
type: 'line',
smooth: true,
// areaStyle: {},
lineStyle: {
width: 3
// color: '#7030a0'
},
emphasis: {
focus: 'series'
},
// prettier-ignore
data: dataA
},
{
name: '价差',
type: 'line',
smooth: true,
yAxisIndex: 1,
markLine: {
symbol: '', // 设置为空字符串,去除箭头
silent: true,
lineStyle: {
color: '#7030a0',
type: 'solid',
width: 3
},
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>({
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,92 +648,97 @@ 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: {
// 自定义每个扇形的颜色
color: function (params) {
const colorList = ['#3EC22B', '#3EC22B', '#3EC22B', '#3EC22B']
return colorList[params.dataIndex]
}
// 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 = ['#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
},
label: {
formatter: ' {b|{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
}
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: {
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
// }
// }
},
data: [
{ value: 0.0, name: '铝' },
{ value: 0.0, name: '铁' },
@ -475,64 +765,64 @@ export function pieData1() {
}
]
})
return { chartRef, option }
return { chartRef, option }
}
// SMM牌号低碳铝价格&价差
export function pieData2() {
const chartRef = ref()
const option = ref<EChartsOption>({
// legend: {
// top: 'bottom'
// },
title: {
text: form.value.lable9.name,
// subtext: 'Fake Data',
left: 'center',
textStyle: { color: '#4075E1' }
},
series: [
{
name: 'Access From',
type: 'pie',
radius: ['40%', '70%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 10,
borderColor: '#fff',
borderWidth: 2
},
label: {
show: true,
formatter(param) {
// correct the percentage
return param.name + ' (' + param.percent * 2 + '%)';
}
},
emphasis: {
label: {
show: true,
fontSize: 20,
// fontWeight: 'bold'
}
},
labelLine: {
show: true
},
// data: [
// { value: 1048, name: 'Search Engine' },
// { value: 735, name: 'Direct' },
// { value: 580, name: 'Email' },
// { value: 484, name: 'Union Ads' },
// { value: 300, name: 'Video Ads' }
// ]
data: Object.values(form.value.lable9.data).filter(item => item.name !== '' || item.value !== '')
}
]
})
return { chartRef, option }
const chartRef = ref()
const option = ref<EChartsOption>({
// legend: {
// top: 'bottom'
// },
title: {
text: form.value.lable9.name,
// subtext: 'Fake Data',
left: 'center',
textStyle: { color: '#4075E1' }
},
series: [
{
name: 'Access From',
type: 'pie',
radius: ['40%', '70%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 10,
borderColor: '#fff',
borderWidth: 1
},
label: {
show: true,
formatter(param) {
// correct the percentage
return param.name + ' (' + param.percent * 2 + '%)'
}
},
emphasis: {
label: {
show: true,
fontSize: 20
// fontWeight: 'bold'
}
},
labelLine: {
show: true
},
// data: [
// { value: 1048, name: 'Search Engine' },
// { value: 735, name: 'Direct' },
// { value: 580, name: 'Email' },
// { value: 484, name: 'Union Ads' },
// { value: 300, name: 'Video Ads' }
// ]
data: Object.values(form.value.lable9.data).filter(
(item) => item.name !== '' || item.value !== ''
)
}
]
})
return { chartRef, option }
}
const gl = '10%'

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" />