Compare commits

...

8 Commits

Author SHA1 Message Date
lb
4b70e4956c update 2022-11-08 14:42:30 +08:00
lb
9b91d86f40 update table 的距离问题 2022-11-08 14:40:04 +08:00
lb
567aa98452 update 公用工程消耗 2022-11-08 13:36:18 +08:00
lb
d4986ba2db update 滑动条 2022-11-08 09:19:40 +08:00
lb
49171d240c merge 2022-11-08 08:46:29 +08:00
8e4a169f3e Merge pull request 'zjl' (#2) from zjl into master
Reviewed-on: #2
2022-11-07 15:15:53 +08:00
5a0db19da7 merge master 2022-11-07 15:11:49 +08:00
8cfe73aaef init 2022-11-07 14:54:47 +08:00
20 changed files with 524 additions and 142 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 MiB

BIN
src/assets/video/3d.mkv Normal file

Binary file not shown.

View File

@ -13,7 +13,6 @@ Vue.use(Router)
/* Layout */ /* Layout */
import Layout from '@/layout' import Layout from '@/layout'
export const constantRoutes = [ export const constantRoutes = [
{ {
path: '/3d-overview', path: '/3d-overview',
@ -2298,7 +2297,6 @@ export const dynamicRoutes = [
// }, // },
] ]
}, },
{ {
path: '/basic', path: '/basic',
component: Layout, component: Layout,

View File

@ -0,0 +1,223 @@
<template>
<div :id="id" ref="techy-line-chart" class="techy-chart" />
</template>
<script>
import echarts from 'echarts'
import resize from '@/views/OperationalOverview/components/mixins/resize'
export default {
name: 'DianLineChart',
mixins: [resize],
/** Fn.1: 保证全屏切换时也刷新图表 应该在每个父组件为flex:1的echarts组件里都加上以确保能正确地伸缩 */
inject: ['resizeStatus'],
/** End Fn.1 */
props: {
id: {
type: String,
default: 'default-dian-id'
},
title: {
type: String,
default: 'default-title'
},
xData: {
type: Array,
default: () => []
},
seriesData: {
type: Array,
default: () => []
}
},
data() {
const colors = ['#5470C6', '#EE6666', '#339888']
// const computeInterval = numArr => Math.floor(numArr.reduce((p, c) => p + c, 0) / numArr.length / 10) * 10
let data = [
//
[90, 93, 95, 96, 95, 90, 89, 84, 60, 77, 93, 93.5],
//
[60, 72, 69, 77, 72, 70, 71, 69.5, 55, 60, 70.5, 71],
//
[45, 50, 55, 60, 65, 78, 63, 66, 54, 62, 72, 73]
]
let wendu = data[0]
let dianliu = data[1]
let dianya = data[2]
return {
chart: null,
option: {
color: colors,
legend: {
top: 4,
itemWidth: 8,
itemHeight: 8,
textStyle: {
color: '#fff9',
fontSize: 8
},
// data: ['ABC/v', 'ABC/a', '']
},
grid: {
top: 32,
left: 64,
bottom: 28
},
xAxis: [
{
type: 'category',
data: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
axisTick: { show: false },
axisLabel: {
color: '#fff9'
},
axisLine: {
lineStyle: {
color: '#fff3'
}
}
}
],
yAxis: [
{
name: '电流/A',
nameTextStyle: { align: 'right', fontSize: 8 },
type: 'value',
splitNumber: 4,
onZero: true,
position: 'left',
offset: 42,
axisTick: { show: false },
axisLine: {
show: true,
lineStyle: {
color: '#fff9',
width: 1
}
},
splitLine: {
show: false
// lineStyle: {
// color: '#fff3'
// }
}
},
{
name: '电压/V',
nameTextStyle: { align: 'right', fontSize: 8 },
type: 'value',
splitNumber: 4,
axisTick: { show: false },
onZero: true,
position: 'left',
offset: 0,
axisLine: {
show: true,
lineStyle: {
color: '#fff9',
width: 1
}
},
splitLine: {
show: false
// lineStyle: {
// color: '#fff3'
// }
}
},
{
name: '温度',
nameTextStyle: { align: 'left', color: '#fff9', fontSize: 8 },
axisTick: { show: false },
axisLine: {
show: false,
lineStyle: {
color: '#fff9',
width: 1
}
},
type: 'value',
splitNumber: 4,
splitLine: {
lineStyle: {
color: '#fff3'
}
}
}
],
series: [
{
name: 'ABC三相电压/v',
type: 'line',
yAxisIndex: 0,
// smooth: true,
emphasis: {
focus: 'series'
},
data: dianliu,
symbol: 'none'
},
{
name: 'ABC三相电流/a',
type: 'line',
yAxisIndex: 1,
// smooth: true,
emphasis: {
focus: 'series'
},
data: dianya,
symbol: 'none'
},
{
name: '电缆温度',
type: 'line',
yAxisIndex: 2,
// smooth: true,
emphasis: {
focus: 'series'
},
data: wendu,
symbol: 'none'
}
]
}
}
},
computed: {
shouldResize() {
return this.resizeStatus()
}
},
watch: {
shouldResize(val, oldVal) {
setTimeout(() => {
this.chart.resize()
}, 250)
}
},
mounted() {
this.$nextTick(() => {
if (!this.chart) this.chart = echarts.init(this.$refs['techy-line-chart'])
this.chart.setOption(this.option)
})
},
beforeDestroy() {
if (this.chart) this.chart.dispose()
this.chart = null
},
methods: {}
}
</script>
<style scoped>
.techy-chart {
height: 100%;
width: 100%;
}
.techy-chart >>> div {
width: 100% !important;
height: 100% !important;
}
</style>

View File

@ -15,7 +15,7 @@ export default {
props: { props: {
id: { id: {
type: String, type: String,
default: 'default-id' default: 'default-fadian-id'
}, },
title: { title: {
type: String, type: String,

View File

@ -2,7 +2,7 @@
<div class="left-content-equipment-check"> <div class="left-content-equipment-check">
<!-- <TechyFakeTable :table-props="tableProps" :table-data="tableData" /> <!-- <TechyFakeTable :table-props="tableProps" :table-data="tableData" />
<TechyFakeTable :table-props="tableProps2" :table-data="tableData2" /> --> <TechyFakeTable :table-props="tableProps2" :table-data="tableData2" /> -->
<div class="el-table-wrapper"> <div class="el-table-wrapper fix-table">
<!-- <TechyTable key="table-1" :showIndex="false" :table-config="tableProps" :table-data="tableData"></TechyTable> --> <!-- <TechyTable key="table-1" :showIndex="false" :table-config="tableProps" :table-data="tableData"></TechyTable> -->
<el-table <el-table
key="LeftContentEquipmentCheck1" key="LeftContentEquipmentCheck1"
@ -10,10 +10,10 @@
:data="tableData" :data="tableData"
:header-cell-style="{ background: 'rgba(79,114,136,0.29)' }" :header-cell-style="{ background: 'rgba(79,114,136,0.29)' }"
> >
<el-table-column label="设备名称" prop="eqName" /> <el-table-column label="设备名称" prop="eqName" align="center" />
<el-table-column label="所属产线" prop="pl" /> <el-table-column label="所属产线" prop="pl" align="center" />
<el-table-column label="提示等级" prop="warningLevel" /> <el-table-column label="提示等级" prop="warningLevel" align="center" />
<el-table-column label="提示等级" prop="checkContent" /> <el-table-column label="提示等级" prop="checkContent" align="center" />
</el-table> </el-table>
</div> </div>
<!-- <div class="el-table-wrapper"> <!-- <div class="el-table-wrapper">
@ -73,6 +73,12 @@ export default {
</script> </script>
<style scoped> <style scoped>
.fix-table >>> .el-table td .cell {
width: 60% !important;
margin: auto;
text-align: left;
}
.left-content-equipment-check { .left-content-equipment-check {
height: calc(100% - 32px); height: calc(100% - 32px);
display: flex; display: flex;
@ -104,7 +110,7 @@ export default {
color: #fff9; color: #fff9;
border: 0; border: 0;
height: 100%; height: 100%;
overflow-y: scroll; overflow-y: auto;
} }
.el-table-wrapper >>> .el-table th.is-leaf, .el-table-wrapper >>> .el-table th.is-leaf,

View File

@ -2,7 +2,7 @@
<div class="left-content-equipment-check"> <div class="left-content-equipment-check">
<!-- <TechyFakeTable :table-props="tableProps" :table-data="tableData" /> <!-- <TechyFakeTable :table-props="tableProps" :table-data="tableData" />
<TechyFakeTable :table-props="tableProps2" :table-data="tableData2" /> --> <TechyFakeTable :table-props="tableProps2" :table-data="tableData2" /> -->
<div class="el-table-wrapper"> <div class="el-table-wrapper fix-table">
<!-- <TechyTable key="table-1" :showIndex="false" :table-config="tableProps" :table-data="tableData"></TechyTable> --> <!-- <TechyTable key="table-1" :showIndex="false" :table-config="tableProps" :table-data="tableData"></TechyTable> -->
<el-table <el-table
key="LeftContentOrder1" key="LeftContentOrder1"
@ -10,10 +10,22 @@
:data="tableData" :data="tableData"
:header-cell-style="{ background: 'rgba(79,114,136,0.29)' }" :header-cell-style="{ background: 'rgba(79,114,136,0.29)' }"
> >
<el-table-column label="订单编号" prop="orderCode" :show-overflow-tooltip="true" :resizable="true" /> <el-table-column
<el-table-column label="客户名称" prop="clientName" :show-overflow-tooltip="true" :resizable="true" /> label="订单编号"
<el-table-column label="规格" prop="specs" :resizable="true" /> prop="orderCode"
<el-table-column label="完成度" prop="finished" :resizable="true"> :show-overflow-tooltip="true"
:resizable="true"
align="center"
/>
<el-table-column
label="客户名称"
prop="clientName"
:show-overflow-tooltip="true"
:resizable="true"
align="center"
/>
<el-table-column label="规格" prop="specs" :resizable="true" align="center" />
<el-table-column label="完成度" prop="finished" :resizable="true" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-progress <el-progress
class="lb-progress-bar" class="lb-progress-bar"
@ -79,6 +91,12 @@ export default {
</script> </script>
<style scoped> <style scoped>
.fix-table >>> .el-table td .cell {
width: 70% !important;
margin: auto;
text-align: left;
}
.left-content-equipment-check { .left-content-equipment-check {
display: flex; display: flex;
gap: calc(100vw / 1920 * 16); gap: calc(100vw / 1920 * 16);
@ -90,7 +108,7 @@ export default {
.left-content-equipment-check > div { .left-content-equipment-check > div {
overflow: hidden; overflow: hidden;
overflow-x: scroll; overflow-x: auto;
} }
.el-table-wrapper >>> * { .el-table-wrapper >>> * {
@ -144,11 +162,11 @@ export default {
} }
.lb-progress-bar { .lb-progress-bar {
left: 40px; left: 30px;
display: flex; display: flex;
} }
.lb-progress-bar >>> .el-progress__text { .lb-progress-bar >>> .el-progress__text {
color: #fff9; color: #fff9;
left: -70%; left: -75%;
} }
</style> </style>

View File

@ -98,7 +98,9 @@
<img src="./assets/consume/d.png" width="32" height="32" alt="dian"> <img src="./assets/consume/d.png" width="32" height="32" alt="dian">
<span></span> <span></span>
</div> </div>
<div class="content-part" /> <div class="content-part">
<DianChart />
</div>
</TechyBox> </TechyBox>
</div> </div>
@ -121,10 +123,10 @@ import TechyBarChart from './TechyBarChart.vue'
import TechyLineChart from './TechyLineChart.vue' import TechyLineChart from './TechyLineChart.vue'
import TechyBox from './TechyBox.vue' import TechyBox from './TechyBox.vue'
import FadianChart from './FadianChart.vue' import FadianChart from './FadianChart.vue'
import DianChart from './DianChart.vue'
export default { export default {
name: 'LeftContentPublicConsume', name: 'LeftContentPublicConsume',
components: { TechyBarChart, TechyBox, FadianChart, TechyLineChart }, components: { TechyBarChart, TechyBox, FadianChart, DianChart, TechyLineChart },
data() { data() {
return {} return {}
}, },

View File

@ -1,17 +1,17 @@
<template> <template>
<div class="right-content-alert"> <div class="right-content-alert">
<div class="el-table-wrapper"> <div class="el-table-wrapper fix-table">
<el-table <el-table
key="RightContentAlertTable" key="RightContentAlertTable"
border border
:data="tableData" :data="tableData"
:header-cell-style="{ background: 'rgba(79,114,136,0.29)' }" :header-cell-style="{ background: 'rgba(79,114,136,0.29)' }"
> >
<el-table-column label="设备名称" prop="eqName" :show-overflow-tooltip="true" :resizable="true" /> <el-table-column label="设备名称" prop="eqName" :show-overflow-tooltip="true" :resizable="true" align="center" />
<el-table-column label="所属产线" prop="plName" :show-overflow-tooltip="true" :resizable="true" /> <el-table-column label="所属产线" prop="plName" :show-overflow-tooltip="true" :resizable="true" align="center" />
<el-table-column label="故障等级" prop="level" :resizable="true" /> <el-table-column label="故障等级" prop="level" :resizable="true" align="center" />
<el-table-column label="故障内容" prop="content" :resizable="true" /> <el-table-column label="故障内容" prop="content" :resizable="true" align="center" />
<el-table-column label="累计时间(min)" prop="duration" :resizable="true" /> <el-table-column label="累计时间(min)" prop="duration" :resizable="true" align="center" :width="128" />
</el-table> </el-table>
</div> </div>
</div> </div>
@ -42,6 +42,12 @@ export default {
</script> </script>
<style scoped> <style scoped>
.fix-table >>> .el-table td .cell {
width: 80% !important;
margin: auto;
text-align: left;
}
.right-content-alert { .right-content-alert {
height: calc(100% - 32px); height: calc(100% - 32px);
display: flex; display: flex;
@ -73,7 +79,7 @@ export default {
color: #fff9; color: #fff9;
border: 0; border: 0;
height: 100%; height: 100%;
overflow-y: scroll; overflow-y: auto;
} }
.el-table-wrapper >>> .el-table th.is-leaf, .el-table-wrapper >>> .el-table th.is-leaf,

View File

@ -49,7 +49,7 @@ export default {
.right-content-quality-analysis { .right-content-quality-analysis {
height: calc(100% - 32px); height: calc(100% - 32px);
overflow: hidden; overflow: hidden;
overflow-y: scroll; /** 右边会有多的padding给滑道 */ overflow-y: auto; /** 右边会有多的padding给滑道 */
display: grid; display: grid;
grid-template-columns: 1fr 1fr; grid-template-columns: 1fr 1fr;
grid-auto-rows: min-content; grid-auto-rows: min-content;

View File

@ -52,7 +52,6 @@ const unfullScreenSvg = `<svg style="width: 100%; height: 100%" viewBox="0 0 32
</g> </g>
</g> </g>
</svg>` </svg>`
export default { export default {
name: 'TechyHeader', name: 'TechyHeader',
props: ['headTitle'], props: ['headTitle'],

View File

@ -1,9 +1,9 @@
<template> <template>
<div id="v3d-outter" ref="v3d-outter"> <div id="v3d-outter" ref="v3d-outter">
<!-- <V3DApp @3d-loaded="handle3DLoaded" /> --> <V3DApp @3d-loaded="handle3DLoaded" />
<!-- 正式内容: --> <!-- 正式内容: -->
<!-- <div v-if="showPage" id="v3d-main-content"> --> <div v-if="showPage" id="v3d-main-content">
<div v-if="true" id="v3d-main-content"> <!-- <div v-if="true" id="v3d-main-content"> -->
<techy-header :head-title="'合肥新能源数字工厂总览'" @toggle-full-screen="toggleFullScreen" /> <techy-header :head-title="'合肥新能源数字工厂总览'" @toggle-full-screen="toggleFullScreen" />
<section id="techy-body-part"> <section id="techy-body-part">
@ -19,7 +19,7 @@
<div class="techy-body-part__middle"> <div class="techy-body-part__middle">
<TechyBox> <TechyBox>
<div class="flex"> <div class="techy-body-part__middle__inner">
<p> <p>
<b>产线名称 :</b> <b>产线名称 :</b>
<span>A产线</span> <span>A产线</span>
@ -29,7 +29,7 @@
<span>清洗机</span> <span>清洗机</span>
</p> </p>
<p> <p>
<b>累计加工数量 :</b> <b>累计加工 :</b>
<span>20</span> <span>20</span>
</p> </p>
<p> <p>
@ -162,6 +162,28 @@ export default {
position: relative; position: relative;
} }
#v3d-outter *::-webkit-scrollbar {
width: 8px;
}
#v3d-outter *::-webkit-scrollbar-track {
background-color: #14243f;
/* background-color: white; */
border-radius: 0;
}
#v3d-outter *::-webkit-scrollbar-button {
width: 8px;
height: 8px;
background: #5bc4bf9f;
position: relative;
}
#v3d-outter *::-webkit-scrollbar-thumb {
border-radius: 8px;
background: #5bc4bf9f;
}
#v3d-main-content { #v3d-main-content {
width: 100%; width: 100%;
height: 100%; height: 100%;
@ -222,19 +244,21 @@ export default {
.techy-body-part__middle { .techy-body-part__middle {
position: absolute; position: absolute;
top: 12%; top: 9%;
left: 36%; left: 26%;
height: 96px; height: 136px;
width: 128px; width: 176px;
} }
.flex { .techy-body-part__middle__inner {
height: 100%;
padding: 12px; padding: 12px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: space-between;
} }
.flex p { .techy-body-part__middle__inner p {
margin: 0; margin: 0;
padding: 0; padding: 0;
font-size: 12px; font-size: 12px;
@ -242,15 +266,15 @@ export default {
color: #fff; color: #fff;
} }
.flex p > span { .techy-body-part__middle__inner p > span {
position: relative; position: relative;
padding-left: 6px; padding-left: 16px;
} }
.round-dot::before { .round-dot::before {
content: ''; content: '';
position: absolute; position: absolute;
top: 5px; top: 4px;
left: -3px; left: 2px;
width: 8px; width: 8px;
height: 8px; height: 8px;
background-color: rgb(82, 231, 82); background-color: rgb(82, 231, 82);

View File

@ -8,7 +8,7 @@
<div class="equipment-exception"> <div class="equipment-exception">
<!-- 设备报修/异常上报 --> <!-- 设备报修/异常上报 -->
<techy-container :title="'设备报修/异常上报'" :icon="equipmentExceptionSVG"> <techy-container :title="'设备报修/异常上报'" :icon="equipmentExceptionSVG">
<div class="table-wrapper"> <div class="table-wrapper fix-table-exception-report">
<techy-table <techy-table
:page="1" :page="1"
:limit="7" :limit="7"
@ -22,7 +22,7 @@
<div class="equipment-alarm"> <div class="equipment-alarm">
<!-- 设备异常报警 --> <!-- 设备异常报警 -->
<techy-container :title="'设备异常报警'" :icon="equipmentAlarmSVG"> <techy-container :title="'设备异常报警'" :icon="equipmentAlarmSVG">
<div class="table-wrapper"> <div class="table-wrapper fix-table-eq-exception">
<techy-table <techy-table
:page="1" :page="1"
:limit="7" :limit="7"
@ -325,6 +325,17 @@ export default {
</script> </script>
<style scoped> <style scoped>
.fix-table-eq-exception >>> .el-table td .cell {
width: 80% !important;
margin: auto;
text-align: left;
}
.fix-table-exception-report >>> .el-table td .cell {
width: 70% !important;
margin: auto;
text-align: left;
}
.visual-container { .visual-container {
width: 100%; width: 100%;
min-width: 1280px; min-width: 1280px;

View File

@ -33,12 +33,12 @@ const PriorityComponent = {
} }
export const equipmentExceptionProps = [ export const equipmentExceptionProps = [
{ label: '设备名称', prop: 'eqName' }, { label: '设备名称', prop: 'eqName', align: 'center' },
{ label: '所属产线', prop: 'pl' }, { label: '所属产线', prop: 'pl', align: 'center', width: 80 },
{ label: '报修/异常内容', prop: 'content' }, { label: '报修/异常内容', prop: 'content', align: 'center' },
{ label: '报修/发现人', prop: 'creator' }, { label: '报修/发现人', prop: 'creator', align: 'center', width: 100 },
{ label: '时间', prop: 'time' }, { label: '时间', prop: 'time', align: 'center' },
{ label: '优先级', prop: 'priority', align: 'center', subcomponent: PriorityComponent } { label: '优先级', prop: 'priority', align: 'center', subcomponent: PriorityComponent, width: 80 }
] ]
export const equipmentExceptionDatalist = [ export const equipmentExceptionDatalist = [
@ -80,11 +80,11 @@ const LifeRemainComponent = {
} }
export const equipmentAlarmProps = [ export const equipmentAlarmProps = [
{ label: '设备名称', prop: 'eqName' }, { label: '设备名称', prop: 'eqName', align: 'center' },
{ label: '设备编码', prop: 'eqCode' }, { label: '设备编码', prop: 'eqCode', align: 'center' },
{ label: '所属产线', prop: 'pl' }, { label: '所属产线', prop: 'pl', align: 'center' },
{ label: '报警级别', prop: 'priority', align: 'center', subcomponent: PriorityComponent }, { label: '报警级别', prop: 'priority', align: 'center', width: 80, subcomponent: PriorityComponent },
{ label: '报警内容', prop: 'content' } { label: '报警内容', prop: 'content', align: 'center' }
] ]
export const equipmentAlarmDatalist = [ export const equipmentAlarmDatalist = [
@ -122,13 +122,13 @@ export const equipmentAnalysisData = [
] ]
export const sparepartsProps = [ export const sparepartsProps = [
{ prop: 'name', label: '部件名称' }, { prop: 'name', label: '部件名称', align: 'center' },
{ prop: 'eq', label: '所属设备' }, { prop: 'eq', label: '所属设备', align: 'center' },
{ prop: 'pl', label: '所属产线' }, { prop: 'pl', label: '所属产线', align: 'center' },
{ prop: 'update_time', label: '更换时间' }, { prop: 'update_time', label: '更换时间', align: 'center' },
{ prop: 'remain', label: '剩余寿命', subcomponent: LifeRemainComponent }, { prop: 'remain', label: '剩余寿命', align: 'center', subcomponent: LifeRemainComponent },
{ prop: 'stock', label: '备件库存量' }, { prop: 'stock', label: '备件库存量', align: 'center' },
{ prop: 'location', label: '库位' } { prop: 'location', label: '库位', align: 'center' }
] ]
export const sparepartsDatalist = [ export const sparepartsDatalist = [

View File

@ -5,7 +5,7 @@
<div class="part-1"> <div class="part-1">
<div> <div>
<techy-container :title="'质量异常上报'" :icon="qualitySVG"> <techy-container :title="'质量异常上报'" :icon="qualitySVG">
<div> <div class="fix-table-exception-report">
<techy-table <techy-table
:page="1" :page="1"
:limit="10" :limit="10"
@ -17,7 +17,7 @@
</techy-container> </techy-container>
</div> </div>
<div> <div class="fix-table-exception-alert">
<techy-container :title="'质量异常报警'" :icon="qualityExceptionSVG"> <techy-container :title="'质量异常报警'" :icon="qualityExceptionSVG">
<techy-table <techy-table
:page="1" :page="1"
@ -337,6 +337,19 @@ export default {
</script> </script>
<style scoped> <style scoped>
.fix-table-exception-alert >>> .el-table td .cell {
width: 75% !important;
margin: auto;
text-align: left;
}
.fix-table-exception-report >>> .el-table td .cell {
width: 70% !important;
margin: auto;
text-align: left;
}
.visual-container { .visual-container {
width: 100%; width: 100%;
min-width: 1280px; min-width: 1280px;

View File

@ -101,7 +101,7 @@ export default {
colorStops: [ colorStops: [
{ {
offset: 0, offset: 0,
color: '#FB418C' // 0% color: '#FB418C66' // 0%
}, },
{ {
offset: 1, offset: 1,
@ -132,7 +132,7 @@ export default {
colorStops: [ colorStops: [
{ {
offset: 0, offset: 0,
color: '#DDB112' // 0% color: '#DDB11266' // 0%
}, },
{ {
offset: 1, offset: 1,
@ -163,7 +163,7 @@ export default {
colorStops: [ colorStops: [
{ {
offset: 0, offset: 0,
color: '#1A99FF' // 0% color: '#1A99FF66' // 0%
}, },
{ {
offset: 1, offset: 1,
@ -194,7 +194,7 @@ export default {
colorStops: [ colorStops: [
{ {
offset: 0, offset: 0,
color: '#A691FF' // 0% color: '#A691FF66' // 0%
}, },
{ {
offset: 1, offset: 1,
@ -229,7 +229,7 @@ export default {
colorStops: [ colorStops: [
{ {
offset: 0, offset: 0,
color: '#49FBD6' // 0% color: '#49FBD666' // 0%
}, },
{ {
offset: 1, offset: 1,

View File

@ -38,12 +38,12 @@ const PriorityComponent = {
console.log('is component?', PriorityComponent) console.log('is component?', PriorityComponent)
export const qualityTableProps = [ export const qualityTableProps = [
{ label: '工序名称', width: 80, prop: 'wsName' }, { label: '工序名称', width: 130, prop: 'wsName', align: 'center' },
{ label: '所属产线', width: 80, prop: 'pl' }, { label: '所属产线', width: 130, prop: 'pl', align: 'center' },
{ label: '异常内容', align: 'center', prop: 'content' }, { label: '异常内容', align: 'center', prop: 'content' },
{ label: '报告人', width: 80, prop: 'creator' }, { label: '报告人', width: 120, prop: 'creator', align: 'center' },
{ label: '时间', prop: 'time' }, { label: '时间', prop: 'time', align: 'center' },
{ label: '优先级', width: 80, prop: 'priority', align: 'center', subcomponent: PriorityComponent } { label: '优先级', width: 100, prop: 'priority', align: 'center', subcomponent: PriorityComponent }
] ]
export const qualityDatalist = [ export const qualityDatalist = [
@ -96,14 +96,14 @@ const StatusComponent = {
} }
export const qualityExceptionTableProps = [ export const qualityExceptionTableProps = [
{ label: '工序名称', prop: 'wsName' }, { label: '工序名称', prop: 'wsName', align: 'center', width: 120 },
{ label: '所属产线', prop: 'pl' }, { label: '所属产线', prop: 'pl', align: 'center', width: 120 },
{ label: '异常内容', prop: 'content' }, { label: '异常内容', prop: 'content', align: 'center' },
{ label: '发现人', prop: 'creator' }, { label: '发现人', prop: 'creator', align: 'center', width: 100 },
{ label: '时间', prop: 'time' }, { label: '时间', prop: 'time', align: 'center' },
{ label: '优先级', prop: 'priority', align: 'center', subcomponent: PriorityComponent }, { label: '优先级', prop: 'priority', align: 'center', subcomponent: PriorityComponent, width: 100 },
{ label: '处理人', prop: 'charger' }, { label: '处理人', prop: 'charger', align: 'center', width: 100 },
{ label: '完成情况', prop: 'status', align: 'center', subcomponent: StatusComponent } { label: '完成情况', prop: 'status', align: 'center', subcomponent: StatusComponent, width: 100 }
] ]
export const qualityExceptionDatalist = [ export const qualityExceptionDatalist = [

View File

@ -1,5 +1,5 @@
<template> <template>
<div id="container" ref="container" class="visual-container"> <div id="container" ref="container" class="visual-container material-cockpit">
<el-row <el-row
class="container-title" class="container-title"
:style="{ :style="{
@ -8,8 +8,10 @@
fontSize: beilv * 30 + 'px' fontSize: beilv * 30 + 'px'
}" }"
> >
<div :style="{ paddingLeft: 645 * beilv + 'px' }">
<img src="../../../assets/img/logo.png" style="width:1.1em;position:relative;top:.4em" alt=""> <img src="../../../assets/img/logo.png" style="width:1.1em;position:relative;top:.4em" alt="">
合肥新能源数字工厂物料管理驾驶舱 合肥新能源数字工厂物料管理驾驶舱
</div>
<el-button <el-button
type="text" type="text"
class="title-button" class="title-button"
@ -32,7 +34,7 @@
<el-row> <el-row>
<el-col :style="{ marginTop: 16 * beilv + 'px' }"> <el-col :style="{ marginTop: 16 * beilv + 'px' }">
<base-container :beilv="beilv" :height="470" :title="'在途原片'" :title-icon="'cockpit_2_2'"> <base-container :beilv="beilv" :height="470" :title="'在途原片'" :title-icon="'cockpit_2_2'">
<div class="box-padding"> <div class="box-padding specil-table1">
<base-table <base-table
:page="1" :page="1"
:limit="14" :limit="14"
@ -49,7 +51,7 @@
<el-row> <el-row>
<el-col :style="{ margin: 16 * beilv + 'px' + ' 0' }"> <el-col :style="{ margin: 16 * beilv + 'px' + ' 0' }">
<base-container :beilv="beilv" :height="470" :title="'在途辅料'" :title-icon="'cockpit_2_3'"> <base-container :beilv="beilv" :height="470" :title="'在途辅料'" :title-icon="'cockpit_2_3'">
<div class="box-padding"> <div class="box-padding specil-table1">
<base-table <base-table
:page="1" :page="1"
:limit="14" :limit="14"
@ -75,45 +77,55 @@ import bomList from './components/bomList.vue'
const originalFilm = [ const originalFilm = [
{ {
prop: 'time', prop: 'time',
label: '上线时间' label: '上线时间',
minWidth: 35
}, },
{ {
prop: 'productLine', prop: 'productLine',
label: '产线' label: '产线',
minWidth: 33
}, },
{ {
prop: 'spec', prop: 'spec',
label: '原片规格' label: '原片规格',
minWidth: 32.4
}, },
{ {
prop: 'batch', prop: 'batch',
label: '批次' label: '批次',
minWidth: 35
}, },
{ {
prop: 'num', prop: 'num',
label: '数量' label: '数量',
minWidth: 28
} }
] ]
const material = [ const material = [
{ {
prop: 'time', prop: 'time',
label: '上线时间' label: '上线时间',
minWidth: 35
}, },
{ {
prop: 'eqName', prop: 'eqName',
label: '设备名称' label: '设备名称',
minWidth: 33
}, },
{ {
prop: 'spec', prop: 'spec',
label: '辅料规格' label: '辅料规格',
minWidth: 32.4
}, },
{ {
prop: 'batch', prop: 'batch',
label: '批次' label: '批次',
minWidth: 35
}, },
{ {
prop: 'num', prop: 'num',
label: '数量' label: '数量',
minWidth: 28
} }
] ]
export default { export default {
@ -220,6 +232,7 @@ export default {
}) })
return false return false
} }
this.isFullScreen = !this.isFullScreen
screenfull.toggle(this.$refs.container) screenfull.toggle(this.$refs.container)
} }
} }
@ -236,7 +249,6 @@ export default {
background: url('../../../assets/img/cockpit/title.png') no-repeat; background: url('../../../assets/img/cockpit/title.png') no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
color: #fff; color: #fff;
text-align: center;
.title-button { .title-button {
color: #00fff0; color: #00fff0;
font-size: 20px; font-size: 20px;
@ -248,3 +260,17 @@ export default {
} }
} }
</style> </style>
<style lang="scss">
.material-cockpit {
.specil-table1 {
.el-table .cell {
padding-left: 40px;
padding-right: 40px;
}
.el-table--border th:first-child .cell,
.el-table--border td:first-child .cell {
padding-left: 40px;
}
}
}
</style>

View File

@ -1,5 +1,5 @@
<template> <template>
<div id="container" ref="container" class="visual-container"> <div id="container" ref="container" class="visual-container order-cockpit">
<el-row <el-row
class="container-title" class="container-title"
:style="{ :style="{
@ -8,16 +8,18 @@
fontSize: beilv * 30 + 'px' fontSize: beilv * 30 + 'px'
}" }"
> >
<div :style="{ paddingLeft: 645 * beilv + 'px' }">
<img src="../../../assets/img/logo.png" style="width:1.1em;position: relative;top:.4em" alt=""> <img src="../../../assets/img/logo.png" style="width:1.1em;position: relative;top:.4em" alt="">
合肥新能源数字工厂工单管理驾驶舱 合肥新能源数字工厂工单管理驾驶舱
</div>
<el-button <el-button
type="text" type="text"
class="title-button" class="title-button"
:style="{ right: 33 * beilv + 'px', top: 37 * beilv + 'px' }" :style="{ right: 33 * beilv + 'px', top: 37 * beilv + 'px' }"
@click="changeFullScreen" @click="changeFullScreen"
> >
<svg-icon v-if="isFullScreen" icon-class="unFullScreenView" /> <svg-icon v-if="isFullScreen" icon-class="unFullScreenView" :style="{fontSize: 33 * beilv + 'px'}" />
<svg-icon v-else icon-class="fullScreenView" /> <svg-icon v-else icon-class="fullScreenView" :style="{fontSize: 33 * beilv + 'px'}" />
</el-button> </el-button>
</el-row> </el-row>
<el-row class="container-main"> <el-row class="container-main">
@ -30,7 +32,7 @@
</el-col> </el-col>
<el-col :span="14"> <el-col :span="14">
<base-container :beilv="beilv" :height="412" :title="'订单池'" :title-icon="'cockpit_1_2'"> <base-container :beilv="beilv" :height="412" :title="'订单池'" :title-icon="'cockpit_1_2'">
<div class="box-padding"> <div class="box-padding specil-table1">
<base-table <base-table
:page="1" :page="1"
:limit="12" :limit="12"
@ -47,7 +49,7 @@
<el-row :style="{ padding: '0 ' + 9 * beilv + 'px' }"> <el-row :style="{ padding: '0 ' + 9 * beilv + 'px' }">
<el-col :style="{ margin: 16 * beilv + 'px' + ' 0' }" :span="24"> <el-col :style="{ margin: 16 * beilv + 'px' + ' 0' }" :span="24">
<base-container :beilv="beilv" :height="520" :title="'在途/完成订单监控'" :title-icon="'cockpit_1_3'"> <base-container :beilv="beilv" :height="520" :title="'在途/完成订单监控'" :title-icon="'cockpit_1_3'">
<div class="box-padding"> <div class="box-padding specil-table2">
<base-table <base-table
:page="1" :page="1"
:limit="16" :limit="16"
@ -73,71 +75,87 @@ import orderStatus from './components/orderStatus.vue'
const orderPool = [ const orderPool = [
{ {
prop: 'customerName', prop: 'customerName',
label: '客户名称' label: '客户名称',
minWidth: 35.2
}, },
{ {
prop: 'orderCode', prop: 'orderCode',
label: '订单编号' label: '订单编号',
minWidth: 32
}, },
{ {
prop: 'productName', prop: 'productName',
label: '产品名称' label: '产品名称',
minWidth: 32
}, },
{ {
prop: 'planNum', prop: 'planNum',
label: '计划加工量' label: '计划加工量',
minWidth: 23.6
}, },
{ {
prop: 'planDelivery', prop: 'planDelivery',
label: '计划交货期' label: '计划交货期',
minWidth: 28.8
}, },
{ {
prop: 'status', prop: 'status',
label: '订单状态', label: '订单状态',
subcomponent: orderStatus subcomponent: orderStatus,
minWidth: 19
} }
] ]
const orderMonitiring = [ const orderMonitiring = [
{ {
prop: 'customerName', prop: 'customerName',
label: '客户名称' label: '客户名称',
minWidth: 35.2
}, },
{ {
prop: 'orderCode', prop: 'orderCode',
label: '订单编号' label: '订单编号',
minWidth: 33.2
}, },
{ {
prop: 'status', prop: 'status',
label: '订单状态', label: '订单状态',
subcomponent: orderStatus subcomponent: orderStatus,
minWidth: 27
}, },
{ {
prop: 'completion', prop: 'completion',
label: '完成率' label: '完成率',
minWidth: 24.8
}, },
{ {
prop: 'yield', prop: 'yield',
label: '良品率' label: '良品率',
minWidth: 24.8
}, },
{ {
prop: 'shiftCosts', prop: 'shiftCosts',
label: '班组费用' label: '班组费用',
minWidth: 24.8
}, },
{ {
prop: 'energyCosts', prop: 'energyCosts',
label: '能耗费用' label: '能耗费用',
minWidth: 29.4
}, },
{ {
prop: 'equipmentCost', prop: 'equipmentCost',
label: '设备费用' label: '设备费用',
minWidth: 29.4
}, },
{ {
prop: 'materialCost', prop: 'materialCost',
label: '材料费用' label: '材料费用',
minWidth: 29.4
}, },
{ {
prop: 'totalCost', prop: 'totalCost',
label: '总费用' label: '总费用',
minWidth: 31.6
} }
] ]
export default { export default {
@ -217,11 +235,11 @@ export default {
obj.status = parseInt(Math.random() * 3 + 1) obj.status = parseInt(Math.random() * 3 + 1)
obj.completion = obj.status === 1 ? '0.00%' : (obj.status === 3 ? '100%' : parseInt(Math.random() * 100) + '%') obj.completion = obj.status === 1 ? '0.00%' : (obj.status === 3 ? '100%' : parseInt(Math.random() * 100) + '%')
obj.yield = parseInt(Math.random() * 50 + 50) + '%' obj.yield = parseInt(Math.random() * 50 + 50) + '%'
obj.shiftCosts = obj.status === 1 ? 0 : parseInt(Math.random() * 800 + 100) obj.shiftCosts = obj.status === 1 ? parseInt(0).toFixed(2) : parseInt(Math.random() * 800 + 100).toFixed(2)
obj.energyCosts = obj.status === 1 ? 0 : parseInt(Math.random() * 800 + 100) obj.energyCosts = obj.status === 1 ? parseInt(0).toFixed(2) : parseInt(Math.random() * 800 + 100).toFixed(2)
obj.equipmentCost = obj.status === 1 ? 0 : parseInt(Math.random() * 800 + 100) obj.equipmentCost = obj.status === 1 ? parseInt(0).toFixed(2) : parseInt(Math.random() * 800 + 100).toFixed(2)
obj.materialCost = obj.status === 1 ? 0 : parseInt(Math.random() * 800 + 100) obj.materialCost = obj.status === 1 ? parseInt(0).toFixed(2) : parseInt(Math.random() * 800 + 100).toFixed(2)
obj.totalCost = obj.shiftCosts + obj.energyCosts + obj.equipmentCost + obj.materialCost obj.totalCost = parseInt(obj.shiftCosts + obj.energyCosts + obj.equipmentCost + obj.materialCost).toFixed(2)
temp.push(obj) temp.push(obj)
} }
this.orderMonitiringList = temp this.orderMonitiringList = temp
@ -247,6 +265,7 @@ export default {
}) })
return false return false
} }
this.isFullScreen = !this.isFullScreen
screenfull.toggle(this.$refs.container) screenfull.toggle(this.$refs.container)
} }
} }
@ -263,7 +282,6 @@ export default {
background: url('../../../assets/img/cockpit/title.png') no-repeat; background: url('../../../assets/img/cockpit/title.png') no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
color: #fff; color: #fff;
text-align: center;
.title-button { .title-button {
color: #00fff0; color: #00fff0;
font-size: 20px; font-size: 20px;
@ -278,3 +296,26 @@ export default {
} }
} }
</style> </style>
<style lang="scss">
.order-cockpit {
.specil-table1 {
.el-table .cell {
padding-left: 25px;
padding-right: 25px;
}
.el-table--border th:first-child .cell,
.el-table--border td:first-child .cell {
padding-left: 25px;
}
}
.specil-table2 {
.el-table .cell {
padding-left: 50px;
}
.el-table--border th:first-child .cell,
.el-table--border td:first-child .cell {
padding-left: 50px;
}
}
}
</style>

View File

@ -1,5 +1,5 @@
<template> <template>
<div style="height: 14px"> <div :style="{ height: 15 * beilv + 'px' }">
<span v-if="this.injectData.status === 3"> <span v-if="this.injectData.status === 3">
<svg-icon icon-class="green_dot" style="font-size: 14px; position: relative; top: .08em" /> <svg-icon icon-class="green_dot" style="font-size: 14px; position: relative; top: .08em" />
已完成 已完成
@ -22,6 +22,21 @@ export default {
type: Object, type: Object,
default: () => ({}) default: () => ({})
} }
},
data() {
return {
beilv: 1
}
},
mounted() {
this.beilv = document.getElementById('container').offsetWidth / 1920
window.addEventListener('resize', () => {
if (this.isFullScreen) {
this.beilv = document.body.offsetWidth / 1920
} else {
this.beilv = document.getElementById('container').offsetWidth / 1920
}
})
} }
} }
</script> </script>