This commit is contained in:
‘937886381’
2024-05-07 10:03:55 +08:00
80 changed files with 13648 additions and 8947 deletions

View File

@@ -1,22 +1,24 @@
<!--
* @Author: zhp
* @Date: 2024-04-15 10:49:13
* @LastEditTime: 2024-04-17 16:15:42
* @LastEditTime: 2024-04-29 16:10:36
* @LastEditors: zhp
* @Description:
-->
<template>
<div style="display: flex; flex-direction: column; min-height: calc(100vh - 96px - 31px)">
<div class="app-container" style="padding: 16px 24px 0;height: auto; flex-grow: 1;">
<div class="app-container" style="padding: 16px 24px 0;height: 400px; flex-grow: 1;">
<search-bar :formConfigs="mainFormConfig" ref="searchBarForm" @headBtnClick="buttonClick" />
<el-row :gutter="24">
<el-col :span="12" v-for="item in dataList" :key="item.id">
<line-chart :id="item.id" class="yearChart" ref="lineChart" style="height: 40vh;width: 100%"></line-chart>
</el-col>
<!-- <el-col :span="12">
<line-chart :id=" 'second' " class="yearChart" ref="lineChart" style="height: 40vh;width: 100%"></line-chart>
</el-col> -->
</el-row>
<div class="content">
<!-- v-for 遍历父级div-->
<div class="main" :span="12" v-for="(item,index) in chartData" :key="index">
<line-chart :data="item" ref="lineChart" style="height: 600px;width: 100%" />
</div>
</div>
<!-- <el-row :gutter="24">
<el-col>
</el-col>
</el-row> -->
</div>
<div class="app-container" style="margin-top: 18px;flex-grow: 1; height: auto; padding: 16px;">
<search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" />
@@ -24,19 +26,12 @@
:table-data="tableData">
</base-table>
</div>
<!-- <inputTable :date="date" :data="tableData" :time="[startTimeStamp, endTimeStamp]" :sum="all"
:type="listQuery.reportType" @refreshDataList="getDataList" /> -->
<!-- <pagination
:limit.sync="listQuery.pageSize"
:page.sync="listQuery.pageNo"
:total="listQuery.total"
@pagination="getDataList" /> -->
</div>
</template>
<script>
// import { parseTime } from '../../core/mixins/code-filter';
// import { getGlassPage, exportGlasscExcel } from '@/api/report/glass';
import { getStockPage } from '@/api/wareHouse';
// import inputTable from './inputTable.vue';
import lineChart from './lineChart';
import moment from 'moment'
@@ -46,35 +41,12 @@ export default {
components: { lineChart },
data() {
return {
chartData:[],
listQuery: {
pageSize: 10,
pageNo: 1,
factoryId: null,
total: 0,
type: null,
// reportType: 2,
reportTime: []
factory:undefined,
},
dataList: [
{
id:'first',
},
{
id: 'second',
},
{
id: 'third',
},
{
id: 'fourth',
},
{
id: 'fifth',
},
{
id: 'sixth',
},
],
urlOptions: {
// getDataListURL: getGlassPage,
// exportURL: exportGlasscExcel
@@ -84,8 +56,37 @@ export default {
type: 'select',
label: '工厂名称',
placeholder: '请选择工厂名称',
param: 'factoryId',
selectOptions: [],
param: 'factory',
selectOptions: [
{
id: 0,
name: '瑞昌中建材光电材料有限公司'
},
{
id: 1,
name: '邯郸中建材光电材料有限公司'
},
{
id: 2,
name: '中建材株洲光电材料有限公司'
},
{
id: 3,
name: '佳木斯中建材光电材料有限公司'
},
{
id: 4,
name: '成都中建材光电材料有限公司'
},
{
id: 5,
name: '凯盛光伏材料有限公司'
},
{
id: 6,
name: '蚌埠兴科玻璃有限公司'
},
],
clearable:true,
},
// {
@@ -155,7 +156,8 @@ export default {
type:'button',
btnName: '导出',
name: 'export',
color: 'warning',
plain: true,
color: 'primary',
},
],
formConfig: [
@@ -189,23 +191,25 @@ export default {
// filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
// },
{
prop: 'userName',
prop: 'factory',
label: '工厂名称',
filter: (val) => ['瑞昌中建材光电材料有限公司', '邯郸中建材光电材料有限公司', '中建材株洲光电材料有限公司', '佳木斯中建材光电材料有限公司', '成都中建材光电材料有限公司', '凯盛光伏材料有限公司', '蚌埠兴科玻璃有限公司'][val]
},
{
prop: 'nickName',
prop: 'glassType',
label: '玻璃类型',
filter: (val) => ['玻璃芯片', '标准组件', 'BIPV'][val]
},
{
prop: 'product',
prop: 'productSpecification',
label: '产品规格',
},
{
prop: 'num',
prop: 'stockNumber',
label: '库存数量',
},
{
prop: 'yeild',
prop: 'specificationProportion',
label: '规格占比',
},
],
@@ -216,69 +220,27 @@ export default {
// reportTime: '',
startTimeStamp: '',
endTimeStamp: '',
tableData: [
{
userName: 'userName',
nickName: '用户名',
datas:'111111'
},
{
userName: 'userName',
nickName: '用户名',
datas: '111111'
},
{
userName: 'userName',
nickName: '用户名',
datas: '111111'
// subcomponent: row
}
],
tableData: [],
// proLineList: [],
// all: {}
};
},
mounted() {
this.getDict()
console.log(this.$refs.lineChart)
// this.getCurrentYearFirst()
// this.getDataList()
this.getDataList()
},
methods: {
buttonClick() {
},
// handleTime() {
// this.$forceUpdate()
// // this.$nextTick(() => [
// // ])
// },
// getCurrentYearFirst() {
// let date = new Date();
// date.setDate(1);
// date.setMonth(0);
// this.reportTime = date;
// this.startTimeStamp = this.timeFun(new Date(new Date().getFullYear(), 0, 1, 7, 0, 1).getTime()); //开始时间
// this.endTimeStamp = this.timeFun(new Date(new Date().getFullYear(), 11, 31, 7, 0, 0).getTime()); //结束时间
// this.listQuery.reportTime[0] = parseTime(new Date(new Date().getFullYear(), 0, 1, 7, 0, 1).getTime()) //+ ' 00:00:00' //new Date(this.startTimeStamp + ' 00:00:00').getTime() / 1000
// this.listQuery.reportTime[1] = parseTime(new Date(new Date().getFullYear(), 11, 31, 7, 0, 0).getTime()) //+ ' 23:59:59' //new Date(this.endTimeStamp + ' 23:59:59').getTime() / 100
// },
changeTime(val) {
if (val) {
// let timeStamp = val.getTime(); //标准时间转为时间戳,毫秒级别
// this.endTimeStamp = this.timeFun(new Date(val.getFullYear(), 11, 31, 7, 0, 0).getTime()); //开始时间
// this.startTimeStamp = this.timeFun(new Date(val.getFullYear(), 0, 1, 7, 0, 1).getTime()); //结束时间
// this.listQuery.reportTime[0] = parseTime(new Date(val.getFullYear(), 0, 1, 7, 0, 1).getTime()) //+ ' 00:00:00' //new Date(this.startTimeStamp + ' 00:00:00').getTime() / 1000
// this.listQuery.reportTime[1] = parseTime(new Date(val.getFullYear(), 11, 31, 7, 0, 0).getTime()) //+ ' 23:59:59' //new Date(this.endTimeStamp + ' 23:59:59').getTime() / 1000
} else {
this.listQuery.reportTime = []
}
},
async getDict() {
this.$refs.lineChart.initChart()
// 产线列表
// const res = await getCorePLList();
// this.proLineList = res.data;
},
// 获取数据列表
multipliedByHundred(str) {
@@ -304,6 +266,35 @@ export default {
},
async getDataList() {
getStockPage(this.listQuery).then((res) => {
this.tableData = res.data.list
let arr = res.data.list.map((ele) => {
return {
factory: ele.factory === 0 ? '瑞昌中建材光电材料有限公司' : ele.factory === 1 ? '邯郸中建材光电材料有限公司' : ele.factory === 2 ? '中建材株洲光电材料有限公司' : ele.factory === 3 ? '佳木斯中建材光电材料有限公司' : ele.factory === 4 ? '成都中建材光电材料有限公司' : ele.factory === 5 ? '凯盛光伏材料有限公司' : '蚌埠兴科玻璃有限公司',
name: ele.glassType === 0 ? '玻璃芯片' : ele.glassType === 1 ? '标准组件' : 'BIPV',
num: ele.stockNumber
}
})
this.checkSameData(arr)
this, this.$nextTick(() => [
this.$refs.lineChart.initChart()
])
})
},
checkSameData(data) {
let dataInfo = {}
data.forEach((item, index) => {
let { factory } = item;
if (!dataInfo[factory]) {
dataInfo[factory] = {
factory,
child: []
}
}
dataInfo[factory].child.push(item)
})
this.chartData = Object.values(dataInfo); // list 转换成功的数据
// console.log(this.chartData[0])
},
add0(m) {
return m < 10 ? '0' + m : m
@@ -311,21 +302,10 @@ export default {
format(shijianchuo) {
//shijianchuo是整数否则要parseInt转换
var time = moment(new Date(shijianchuo)).format('YYYY-MM-DD HH:mm:ss')
// console.log(time)
// var y = time.getFullYear();
// var m = time.getMonth() + 1;
// var d = time.getDate();
// var h = time.getHours();
// var mm = time.getMinutes();
// var s = time.getSeconds();
return time
},
changeTime(val) {
if (val) {
// console.log(val)
// console.log(val.setHours(7, 0, 0))
// console.log(val.setHours(7, 0, 0) + 24 * 60 * 60 * 1000)
// let time = this.format(val.setHours(7, 0, 0))
this.endTimeStamp = this.format(val.setHours(7, 0, 0)) //+ ' 00:00:00' //new Date(this.startTimeStamp + ' 00:00:00').getTime() / 1000
this.startTimeStamp = this.format(val.setHours(7, 0, 1) - 24 * 60 * 60 * 1000) //+ ' 23:59:59' //new Date(this.endTimeStamp + ' 23:59:59').getTime() / 1000
// console.log(this.listQuery.reportTime);
@@ -336,7 +316,6 @@ export default {
this.listQuery.reportTime = []
}
},
//时间戳转为yy-mm-dd hh:mm:ss
timeFun(unixtimestamp) {
var unixtimestamp = new Date(unixtimestamp);
@@ -346,11 +325,13 @@ export default {
return year + "-" + month.substring(month.length - 2, month.length) + "-" + date.substring(date.length - 2, date.length)
},
buttonClick(val) {
this.listQuery.reportTime = val.reportTime ? val.reportTime : undefined;
// this.listQuery.reportTime = val.reportTime ? val.reportTime : undefined;
console.log(val)
switch (val.btnName) {
case 'search':
this.listQuery.pageNo = 1;
this.listQuery.pageSize = 10;
this.listQuery.pageNo = 1
this.listQuery.pageSize = 10
this.listQuery.factory = val.factory ? val.factory : undefined
this.getDataList();
break;
case 'export':
@@ -421,4 +402,18 @@ export default {
height: calc(100vh - 134px);
overflow: auto;
}
.content {
display: flex;
/* grid-template-columns: 1fr 1fr 1fr; */
gap: 20px;
flex-wrap: wrap;
}
.main {
width: calc((100% - 46px)/2);
/* border: 1px solid #D0D0D0; */
height: 400px;
/* background-color: #FFFFFF; */
position: relative;
}
</style>

View File

@@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2022-01-21 14:43:06
* @LastEditors: zhp
* @LastEditTime: 2024-04-16 14:16:17
* @LastEditTime: 2024-04-29 16:00:13
* @Description:
-->
<template>
@@ -25,6 +25,10 @@ export default {
type: String,
default: 'OverviewLine'
},
data:{
type: Object,
default: () => {}
},
// className: {
// type: String,
// default: 'epChart'
@@ -39,7 +43,7 @@ export default {
},
height: {
type: String,
default: '35vh'
default: '400px'
},
legendPosition: {
type: String,
@@ -117,7 +121,7 @@ export default {
initChart() {
console.log(1111)
let num = 0
this.chartData && this.chartData.length > 0 && this.chartData.map(i => {
this.data.child && this.data.child.length > 0 && this.data.child.map(i => {
num += i.num
})
if (
@@ -154,7 +158,7 @@ export default {
textStyle: {
color: 'rgba(140, 140, 140, 1)'
},
data: this.chartData && this.chartData.length > 0 && this.chartData.map((item, index) => ({
data: this.data.child && this.data.child.length > 0 && this.data.child.map((item, index) => ({
name: item.name,
itemStyle: {
color: this.colors[index % 4]
@@ -162,7 +166,7 @@ export default {
}))
},
series: [{
name: 'ISRA缺陷检测',
name: this.data.factory,
type: 'pie',
// position:outerHeight,
center: ['50%', '40%'],
@@ -183,7 +187,7 @@ export default {
},
formatter: (params) => {
//调用自定义显示格式
return this.getEqualNewlineString(params.value + " | " + params.percent.toFixed(0) + "%" + "\n" + params.name, 10);
return this.getEqualNewlineString(params.value + " | " + params.percent.toFixed(0) + "%" + "\n\n" + params.name, 10);
},
textStyle: { // 提示文字的样式
// color: 'rgba(0, 0, 0, 0.65)',
@@ -196,7 +200,7 @@ export default {
length: 25,
length2: 100,
},
data: this.chartData && this.chartData.length > 0 && this.chartData.map((item, index) => ({
data: this.data.child && this.data.child.length > 0 && this.data.child.map((item, index) => ({
name: item.name,
value: item.num,
label: {