Compare commits

..

No commits in common. "master" and "zjl" have entirely different histories.
master ... zjl

9 changed files with 120 additions and 220 deletions

View File

@ -1,7 +1,7 @@
<template>
<div class="navbar" :style="showTitle ? 'background: rgba(8,17,50,0.25)' : ''">
<div v-if="showTitle" class="homeNavIcon" @click="goToRootPage">
<img src="../../assets/img/cnbm.png" alt="">
<img src="../../assets/img/cnbm.png" alt="" />
<span>
{{ 'title' | i18nFilter }}
</span>
@ -25,9 +25,9 @@
:icon-class="showTitle ? 'home' : 'homeb'"
style="height: calc(24px * var(--beilv)); width: calc(24px * var(--beilv)); vertical-align: calc(-7px * var(--beilv)); margin-right: 2px;"
/>
<!-- <span v-if="showhome">
<span v-if="showhome">
{{ 'navbar.homepage' | i18nFilter }}
</span> -->
</span>
</div>
<el-dropdown
:style="showTitle ? 'color: #fff' : '#000'"
@ -97,7 +97,7 @@
trigger="click"
>
<div class="avatar-wrapper">
<img :src="require('@/assets/img/head.png')" class="user-avatar">
<img :src="require('@/assets/img/head.png')" class="user-avatar" />
<div class="avatar-username" :title="username">{{ username }}</div>
<div class="avatar-roles" :title="roles.join(',')">{{ roles.length > 0 ? roles[0] : '' }}</div>
<!-- <i class="el-icon-caret-bottom" /> -->
@ -144,7 +144,7 @@
<el-tooltip class="item" effect="dark" placement="bottom-end">
<div slot="content">
{{ 'copyright.copyright' | i18nFilter }}{{ 'copyright.company' | i18nFilter }}
<br>
<br />
{{ 'copyright.version' | i18nFilter }}3.0
</div>
<svg-icon
@ -248,8 +248,7 @@ export default {
const password = Cookie.get('password')
if (username && password) {
window.location = `http://main.cnbmai.picaiba.com/#/?username=${username}&password=${password}`
// window.location = `http://192.168.1.103:9527/#/?username=${username}&password=${password}`
window.location = `http://192.168.1.103:9527/#/?username=${username}&password=${password}`
}
},
winBlur() {

View File

@ -6,7 +6,6 @@
import echarts from 'echarts'
import resize from '@/views/OperationalOverview/components/mixins/resize'
import { Random } from 'mockjs'
import moment from 'moment'
class ChartOption {
constructor() {
@ -51,18 +50,16 @@ class ChartOption {
formatter: params => {
return `
<div style="display: flex; flex-direction: column; gap: calc(4px * var(--beilv));">
<h2 style="font-size: calc(14px * var(--beilv)); margin: 0 0 4px; font-weight: normal; color: white;">${
params[0].axisValue
}</h2>
<h2 style="font-size: calc(14px * var(--beilv)); margin: 0 0 4px; font-weight: normal; color: white;">${params[0].axisValue}</h2>
<span style="display: flex; align-items: center; gap: 8px;"><span style="width: 10px; height: 10px; border-radius: 5px; background: ${
this.color[0]
}"></span><span>${params[0].seriesName}: ${params[0].value}V</span></span>
}"></span><span>${params[0].seriesName}: ${params[0].value}</span></span>
<span style="display: flex; align-items: center; gap: 8px;"><span style="width: 10px; height: 10px; border-radius: 5px; background: ${
this.color[1]
}"></span><span>${params[1].seriesName}: ${params[1].value}%</span></span>
}"></span><span>${params[1].seriesName}: ${params[1].value}</span></span>
<span style="display: flex; align-items: center; gap: 8px;"><span style="width: 10px; height: 10px; border-radius: 5px; background: ${
this.color[2]
}"></span><span>${params[2].seriesName}: ${params[2].value}°C</span></span>
}"></span><span>${params[2].seriesName}: ${params[2].value}</span></span>
</div>
`
}
@ -70,15 +67,7 @@ class ChartOption {
this.xAxis = {
type: 'category',
// boundaryGap: false,
data: Array(7)
.fill(1)
.map((_, idx) => {
const d = moment()
const day = idx ? d.subtract(idx, 'd') : d
return day.format('M-DD')
})
.reverse(),
data: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
axisTick: { show: false },
axisLabel: {
color: '#fff9',
@ -111,11 +100,10 @@ class ChartOption {
},
axisLabel: {
color: '#fff9',
fontSize: 10,
formatter: '{value}%'
fontSize: 10
},
splitLine: {
show: false,
show: true,
lineStyle: {
color: '#fff1',
type: 'dotted'
@ -145,7 +133,7 @@ class ChartOption {
splitLine: {
show: true,
lineStyle: {
color: '#fff3',
color: '#fff1',
type: 'dotted'
}
}
@ -161,13 +149,10 @@ class ChartOption {
width: 1
}
},
// min: 'dataMin',
min: 20,
max: 50,
type: 'value',
splitNumber: 4,
splitLine: {
show: false,
show: true,
lineStyle: {
color: '#fff1',
type: 'dotted'
@ -175,84 +160,41 @@ class ChartOption {
},
axisLabel: {
color: '#fff9',
fontSize: 10,
formatter: '{value}°C'
fontSize: 10
}
}
]
this.series = [
{
name: '电压',
type: 'line',
yAxisIndex: 1,
// smooth: true,
emphasis: {
focus: 'series'
},
data: Array(7)
.fill(1)
// .map(_ => Random.integer(30, 100)),
.map(_ => Random.integer(360, 390)),
symbol: 'circle',
symbolSize: 0.2,
showSymbol: false,
areaStyle: {
color: {
type: 'linear',
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{
offset: 0,
color: '#E0209466' // 0%
},
{
offset: 1,
color: 'transparent' // 100%
}
],
global: false // false
}
}
},
{
name: '电流',
name: 'ABC三相电压/v',
type: 'line',
yAxisIndex: 0,
// smooth: true,
emphasis: {
focus: 'series'
},
data: Array(7)
data: Array(12)
.fill(1)
.map(_ => Random.integer(76, 85)),
// .map(_ => Random.integer(30, 100)),
.map(_ => Random.integer(30, 100)),
symbol: 'circle',
symbolSize: 0.2,
showSymbol: false,
areaStyle: {
color: {
type: 'linear',
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{
offset: 0,
color: '#F0D63C66' // 0%
showSymbol: false
},
{
offset: 1,
color: 'transparent' // 100%
}
],
global: false // false
}
}
name: 'ABC三相电流/a',
type: 'line',
yAxisIndex: 1,
// smooth: true,
emphasis: {
focus: 'series'
},
data: Array(12)
.fill(1)
.map(_ => Random.integer(30, 100)),
symbol: 'circle',
symbolSize: 0.2,
showSymbol: false
},
{
name: '电缆温度',
@ -262,33 +204,12 @@ class ChartOption {
emphasis: {
focus: 'series'
},
data: Array(7)
data: Array(12)
.fill(1)
// .map(_ => Random.integer(20, 55)),
.map(_ => Random.integer(36, 45)),
.map(_ => Random.integer(30, 100)),
symbol: 'circle',
symbolSize: 0.2,
showSymbol: false,
areaStyle: {
color: {
type: 'linear',
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{
offset: 0,
color: '#1A99FF66' // 0%
},
{
offset: 1,
color: 'transparent' // 100%
}
],
global: false // false
}
}
showSymbol: false
}
]
}
@ -311,7 +232,7 @@ class ChartOption {
if (key === 'colorStops') newOption[key] = option[key]
else if (
typeof option[key] === 'number' /** 过滤不做变化的属性 */ &&
['splitNumber', 'x', 'x2', 'min', 'max', 'y', 'y2', 'yAxisIndex', 'xAxisIndex'].indexOf(key) === -1
['splitNumber', 'x', 'x2', 'y', 'y2', 'yAxisIndex', 'xAxisIndex'].indexOf(key) === -1
) {
newOption[key] = calcSize(option[key])
} else newOption[key] = this.optionFilter(option[key], calcSize)
@ -370,8 +291,8 @@ export default {
return num * beilv
},
setChartOption() {
const cOption = new ChartOption()
this.chart.setOption(cOption.optionFilter(cOption.option, this.calcSize))
let chartOption = new ChartOption()
this.chart.setOption(chartOption.optionFilter(chartOption.option, this.calcSize))
}
}
}

View File

@ -1,9 +1,9 @@
<template>
<div class="public-consume__inner">
<div style="min-height: calc(106px * var(--beilv)); flex: 1;">
<div>
<TechyBox class="water-consume">
<div class="header-part">
<img src="./assets/consume/s.png" width="32" height="32" alt="water">
<img src="./assets/consume/s.png" width="32" height="32" alt="water" />
<span></span>
</div>
<div class="content-part">
@ -35,10 +35,10 @@
</TechyBox>
</div>
<div style="min-height: calc(106px * var(--beilv)); flex: 1;">
<div>
<TechyBox class="gas-consume">
<div class="header-part ">
<img src="./assets/consume/gas.png" width="32" height="32" alt="qi">
<img src="./assets/consume/gas.png" width="32" height="32" alt="qi" />
<span></span>
</div>
<div class="content-part">
@ -46,31 +46,31 @@
<span class="name">&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span class="diy-process-bar bar-width-4 color-1" />
<span class="amount">
0.42MPa
23Pa
</span>
</div>
<div class="row">
<span class="name">CDA</span>
<span class="diy-process-bar bar-width-5 color-2" />
<span class="amount">
0.61MPa
39Pa
</span>
</div>
<div class="row">
<span class="name">天然气</span>
<span class="diy-process-bar bar-width-6 color-3" />
<span class="amount">
0.31MPa
239pa
</span>
</div>
</div>
</TechyBox>
</div>
<div style="min-height: calc(168px * var(--beilv)); flex: 1;">
<div style="min-height: calc(144px * var(--beilv)); flex: 1;">
<TechyBox class="dian-consume">
<div class="header-part">
<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>
</div>
<div style="height: 100%; flex: 1; overflow: hidden">
@ -79,29 +79,30 @@
</TechyBox>
</div>
<!-- <div style="min-height: calc(144px * var(--beilv)); flex: 1;">
<div style="min-height: calc(144px * var(--beilv)); flex: 1;">
<TechyBox class="elec-consume">
<div class="header-part">
<img src="./assets/consume/fad.png" width="32" height="32" alt="fadian" />
<span>发电</span>
</div>
<div style="height: 100%; flex: 1; overflow: hidden">
<!-- <FadianChart /> -->
<DianChart id="fa-dian" key="fa-dian" />
</div>
</TechyBox>
</div> -->
</div>
</div>
</template>
<script>
// import TechyBarChart from './TechyBarChart.vue'
// import TechyLineChart from './TechyLineChart.vue'
import TechyBarChart from './TechyBarChart.vue'
import TechyLineChart from './TechyLineChart.vue'
import TechyBox from './TechyBox.vue'
// import FadianChart from './FadianChart.vue'
import FadianChart from './FadianChart.vue'
import DianChart from './DianChart.vue'
export default {
name: 'LeftContentPublicConsume',
components: { TechyBox, DianChart },
components: { TechyBarChart, TechyBox, FadianChart, DianChart, TechyLineChart },
data() {
return {}
},
@ -152,23 +153,17 @@ export default {
.header-part > span {
color: #fffc;
font-size: calc(12px * var(--beilv));
line-height: calc(12px * var(--beilv));
white-space: nowrap;
}
.content-part {
display: flex;
flex-direction: column;
justify-content: center;
/* height: calc(48px * var(--beilv)); */
flex: 1 1;
gap: calc(10px * var(--beilv));
color: #fff9;
}
.content-part span.name {
font-size: calc(12px * var(--beilv));
line-height: calc(14px * var(--beilv));
color: #fff9;
height: calc(48px * var(--beilv));
flex: 1 1;
gap: calc(4px * var(--beilv));
}
.row {
@ -186,7 +181,6 @@ export default {
.row > .amount {
text-align: right;
width: 15%;
}
.diy-process-bar {
@ -217,13 +211,13 @@ export default {
width: 99%;
}
.bar-width-4::after {
width: 42%;
width: 20%;
}
.bar-width-5::after {
width: 61%;
width: 29%;
}
.bar-width-6::after {
width: 31%;
width: 79%;
}
.diy-process-bar.color-1::after {

View File

@ -6,7 +6,6 @@
import echarts from 'echarts'
import resize from '@/views/OperationalOverview/components/mixins/resize'
import { Random } from 'mockjs'
import moment from 'moment'
class ChartOption {
constructor() {
@ -75,18 +74,16 @@ class ChartOption {
}
}
let d = new Date()
this.xAxis = {
type: 'category',
// boundaryGap: false,
boundaryGap: false,
// data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
data: Array(7)
.fill(0)
.map((_, idx) => {
const d = moment()
const day = idx ? d.subtract(idx, 'd') : d
return day.format('M-DD')
})
.reverse(),
return d.getMonth() + 1 + '-' + (d.getDate() + idx)
}),
axisTick: {
show: false
},
@ -247,7 +244,7 @@ export default {
return num * beilv
},
setChartOption() {
const chartOption = new ChartOption()
let chartOption = new ChartOption()
this.chart.setOption(chartOption.optionFilter(chartOption.option, this.calcSize))
}
}

View File

@ -9,14 +9,13 @@
list: [32, 65, 65, 54, 37, 77]
}
]" /> -->
<div ref="realtimeLineChart" class="techy-chart" />
<div class="techy-chart" ref="realtimeLineChart"></div>
</template>
<script>
import echarts from 'echarts'
import resize from '@/views/OperationalOverview/components/mixins/resize'
import { Random } from 'mockjs'
import moment from 'moment'
class ChartOption {
constructor() {
@ -60,9 +59,7 @@ class ChartOption {
formatter: params => {
return `
<div style="display: flex; flex-direction: column; gap: calc(4px * var(--beilv));">
<h2 style="font-size: calc(14px * var(--beilv)); margin: 0 0 4px; font-weight: normal; color: white;">${
params[0].axisValue
}</h2>
<h2 style="font-size: calc(14px * var(--beilv)); margin: 0 0 4px; font-weight: normal; color: white;">${params[0].axisValue}</h2>
<span style="display: flex; align-items: center; gap: 8px;"><span style="width: 10px; height: 10px; border-radius: 5px; background: ${
this.color[0]
}"></span><span>${params[0].seriesName}: ${params[0].value}</span></span>
@ -80,16 +77,14 @@ class ChartOption {
}
}
let d = new Date()
this.xAxis = {
type: 'category',
data: Array(7)
.fill(1)
.map((_, idx) => {
const d = moment()
const day = idx ? d.subtract(idx, 'd') : d
return day.format('M-DD')
})
.reverse(),
return d.getMonth() + 1 + '-' + (d.getDate() + idx)
}),
axisTick: { show: false },
axisLabel: {
color: '#fff9',
@ -382,7 +377,7 @@ export default {
return num * beilv
},
setChartOption() {
const chartOption = new ChartOption()
let chartOption = new ChartOption()
this.chart.setOption(chartOption.optionFilter(chartOption.option, this.calcSize))
}
}

View File

@ -1,6 +1,6 @@
<template>
<header class="techy-header">
<img class="logo-img" src="./logo.png" alt="cnbm">
<img class="logo-img" src="./logo.png" alt="cnbm" />
<span class="techy-header__title">{{ headTitle }}</span>
<div class="date">{{ now.format('yyyy.MM.DD') }}</div>
@ -90,8 +90,7 @@ export default {
const password = Cookie.get('password')
if (username && password) {
window.location = `http://main.cnbmai.picaiba.com/#/?username=${username}&password=${password}`
// window.location = `http://192.168.1.103:9527/#/?username=${username}&password=${password}`
window.location = `http://192.168.1.103:9527/#/?username=${username}&password=${password}`
} else {
this.$router.push('/')
}

View File

@ -7,7 +7,7 @@
-->
<template>
<div class="visual-base-table-container">
<el-table v-loading="isLoading" class="techy-el-table" :data="renderData" border height="100%">
<el-table class="techy-el-table" v-loading="isLoading" :data="renderData" border height="100%">
<el-table-column
v-if="page && limit && showIndex"
prop="_pageIndex"
@ -29,7 +29,7 @@
:inject-data="{ ...scope.row, ...item }"
@emitData="emitData"
/>
<span v-else :title="scope.row[item.prop]">{{ scope.row[item.prop] | commonFilter(item.filter) }}</span>
<span v-else>{{ scope.row[item.prop] | commonFilter(item.filter) }}</span>
</template>
</el-table-column>
<slot name="content" />

View File

@ -170,7 +170,6 @@ export default {
},
handle3DClick() {
this.eqId = document.getElementById('V3DData').rel
// alert(this.eqId)
if (this.eqId) {
this.currentEquipment = eqList.find(item => item.id === this.eqId)
}
@ -319,14 +318,20 @@ export default {
.techy-body-part__middle {
position: absolute;
/* background: #ff3311; */
top: 0;
right: calc(-16px * var(--beilv));
transform: translateX(100%);
}
.techy-body-part__middle .techy-box {
position: absolute;
top: 0;
left: 0;
height: calc(128px * var(--beilv));
width: calc(188px * var(--beilv));
}
.techy-body-part__middle__inner {
/* height: 100%; */
height: 100%;
padding: calc(16px * var(--beilv));
display: flex;
flex-direction: column;
@ -341,17 +346,8 @@ export default {
line-height: 1.5;
color: #fff;
display: flex;
min-width: calc(168px * var(--beilv));
}
.techy-body-part__middle__inner p:not(:last-child) {
margin-bottom: calc(8px * var(--beilv));
}
/* .techy-body-part__middle__inner p > b {
width: calc(90px * var(--beilv));
} */
.techy-body-part__middle__inner p > span {
position: relative;
padding-left: calc(16px * var(--beilv));

View File

@ -1,23 +1,21 @@
export default [
{ id: 'C123-1', pl: 'A', name: 'A钢化', amount: 32, status: '生产中' },
{ id: 'C456-1', pl: 'B', name: 'B钢化', amount: 32, status: '生产中' },
{ id: 'C1-0', pl: 'A1', name: 'A1上片', amount: 32, status: '生产中' },
{ id: 'C1-1', pl: 'A1', name: 'A1磨边', amount: 32, status: '生产中' },
{ id: 'C1-2', pl: 'A1', name: 'A1磨边后清洗', amount: 32, status: '生产中' },
{ id: 'C1-2', pl: 'A1', name: 'A1磨边后清洗', amount: 32, status: '调试中' },
{ id: 'C1-3', pl: 'A1', name: 'A1打孔', amount: 32, status: '生产中' },
{ id: 'C1-4', pl: 'A1', name: 'A1打孔后清洗', amount: 32, status: '生产中' },
{ id: 'C1-5', pl: 'A1', name: 'A1丝印', amount: 32, status: '生产中' },
{ id: 'C1-6', pl: 'A1', name: 'A1固化', amount: 32, status: '生产中' },
{ id: 'C1-7', pl: 'A1', name: 'A1储片', amount: 32, status: '生产中' },
{ id: 'C1-8', pl: 'A1', name: 'A1钢化后清洗', amount: 32, status: '生产中' },
{ id: 'C1-9', pl: 'A1', name: 'A1下片', amount: 32, status: '生产中' },
{ id: 'C1-8', pl: 'A1', name: 'A钢化', amount: 32, status: '生产中' },
{ id: 'C1-9', pl: 'A1', name: 'A1钢化后清洗', amount: 32, status: '生产中' },
{ id: 'C1-10', pl: 'A1', name: 'A1下片', amount: 32, status: '生产中' },
{ id: 'C2-0', pl: 'A2', name: 'A2上片', amount: 32, status: '调试中' },
{ id: 'C2-1', pl: 'A2', name: 'A2磨边', amount: 32, status: '生产中' },
{ id: 'C2-2', pl: 'A2', name: 'A2磨边后清洗', amount: 32, status: '调试中' },
{ id: 'C2-3', pl: 'A2', name: 'A2打孔', amount: 32, status: '调试中' },
{ id: 'C2-4', pl: 'A2', name: 'A2打孔后清洗', amount: 32, status: '生产中' },
{ id: 'C2-4', pl: 'A2', name: 'A2打孔后清洗', amount: 32, status: '调试中' },
{ id: 'C2-5', pl: 'A2', name: 'A2丝印', amount: 32, status: '生产中' },
{ id: 'C2-6', pl: 'A2', name: 'A2固化', amount: 32, status: '生产中' },
{ id: 'C2-7', pl: 'A2', name: 'A2储片', amount: 32, status: '生产中' },
@ -28,8 +26,8 @@ export default [
{ id: 'C3-1', pl: 'A3', name: 'A3磨边', amount: 32, status: '生产中' },
{ id: 'C3-2', pl: 'A3', name: 'A3磨边后清洗', amount: 32, status: '生产中' },
{ id: 'C3-3', pl: 'A3', name: 'A3打孔', amount: 32, status: '生产中' },
{ id: 'C3-4', pl: 'A3', name: 'A3打孔后清洗', amount: 32, status: '故障' },
{ id: 'C3-5', pl: 'A3', name: 'A3丝印', amount: 32, status: '生产中' },
{ id: 'C3-4', pl: 'A3', name: 'A3打孔后清洗', amount: 32, status: '生产中' },
{ id: 'C3-5', pl: 'A3', name: 'A3丝印', amount: 32, status: '故障' },
{ id: 'C3-6', pl: 'A3', name: 'A3固化', amount: 32, status: '生产中' },
{ id: 'C3-7', pl: 'A3', name: 'A3储片', amount: 32, status: '生产中' },
{ id: 'C3-8', pl: 'A3', name: 'A3钢化后清洗', amount: 32, status: '生产中' },
@ -37,14 +35,15 @@ export default [
{ id: 'C4-0', pl: 'B1', name: 'B1上片', amount: 32, status: '故障' },
{ id: 'C4-1', pl: 'B1', name: 'B1磨边', amount: 32, status: '生产中' },
{ id: 'C4-2', pl: 'B1', name: 'B1磨边后清洗', amount: 32, status: '故障' },
{ id: 'C4-2', pl: 'B1', name: 'B1磨边后清洗', amount: 32, status: '生产中' },
{ id: 'C4-3', pl: 'B1', name: 'B1打孔', amount: 32, status: '故障' },
{ id: 'C4-4', pl: 'B1', name: 'B1打孔后清洗', amount: 32, status: '生产中' },
{ id: 'C4-4', pl: 'B1', name: 'B1打孔后清洗', amount: 32, status: '故障' },
{ id: 'C4-5', pl: 'B1', name: 'B1丝印', amount: 32, status: '生产中' },
{ id: 'C4-6', pl: 'B1', name: 'B1固化', amount: 32, status: '生产中' },
{ id: 'C4-7', pl: 'B1', name: 'B1储片', amount: 32, status: '生产中' },
{ id: 'C4-8', pl: 'B1', name: 'B1钢化后清洗', amount: 32, status: '生产中' },
{ id: 'C4-9', pl: 'B1', name: 'B下片', amount: 32, status: '生产中' },
{ id: 'C4-8', pl: 'B1', name: 'B钢化', amount: 32, status: '生产中' },
{ id: 'C4-9', pl: 'B1', name: 'B1钢化后清洗', amount: 32, status: '生产中' },
{ id: 'C4-10', pl: 'B1', name: 'B下片', amount: 32, status: '生产中' },
{ id: 'C5-0', pl: 'B2', name: 'B2上片', amount: 32, status: '生产中' },
{ id: 'C5-1', pl: 'B2', name: 'B2磨边', amount: 32, status: '生产中' },
@ -62,6 +61,6 @@ export default [
{ id: 'C6-3', pl: 'B3', name: 'B3打孔', amount: 32, status: '生产中' },
{ id: 'C6-4', pl: 'B3', name: 'B3打孔后清洗', amount: 32, status: '生产中' },
{ id: 'C6-5', pl: 'B3', name: 'B3丝印', amount: 32, status: '生产中' },
{ id: 'C6-6', pl: 'B3', name: 'B3固化', amount: 32, status: '故障' },
{ id: 'C6-7', pl: 'B3', name: 'B3储片', amount: 32, status: '故障' }
{ id: 'C6-6', pl: 'B3', name: 'B3固化', amount: 32, status: '生产中' },
{ id: 'C6-7', pl: 'B3', name: 'B3储片', amount: 32, status: '故障' },
]